Anemometer do-it-yourself (untuk anak-anak dari kelompok persiapan). Anemometer buatan sendiri

Ada tugas untuk merakit anemometer untuk satu proyek sehingga memungkinkan untuk mengambil data di komputer melalui antarmuka USB. Artikel ini akan lebih fokus pada anemometer itu sendiri daripada pada sistem pemrosesan data darinya:

1. Komponen

Jadi, untuk pembuatan produk, komponen berikut diperlukan:
Mouse bola Mitsumi — 1 pc.
Bola pingpong — 2 buah.
Sepotong plexiglass dengan ukuran yang tepat
Kawat tembaga dengan penampang 2,5 mm2 - 3 cm
Pulpen isi ulang — 1 pc.
Permen Chupa Chups - 1 pc.
Klip kabel — 1 buah.
Tong kuningan berongga 1 pc.

2. Membuat baling-baling

3 buah kawat tembaga panjang masing-masing 1 cm pada sudut 120 derajat disolder ke tong kuningan. Di lubang laras, saya menyolder dudukan dari pemain Cina dengan utas di ujungnya.

Saya memotong tabung dari permen menjadi 3 bagian dengan panjang sekitar 2 cm.

Saya memotong 2 bola menjadi dua dan, menggunakan sekrup kecil dari pemutar yang sama dan lem polystyrene (dengan lem), menempelkan bagian bola ke tabung lolipop.

Saya meletakkan tabung dengan bagian bola pada potongan kawat yang disolder, dan memperbaiki semuanya dengan lem.

3. Pembuatan bagian utama

Elemen bantalan anemometer adalah batang logam dari pulpen. Di bagian bawah batang (tempat gabus dimasukkan), saya memasukkan disk dari mouse (encoder). Pada desain mouse itu sendiri, bagian bawah encoder bersandar pada badan mouse, membentuk point bearing, terdapat gemuk, sehingga encoder mudah diputar. Tetapi perlu untuk memperbaiki bagian atas batang, untuk ini saya mengambil sepotong plastik yang cocok dengan lubang persis diameter batang (potongan seperti itu dipotong dari sistem ekstensi kereta CD-ROMa). Tetap menyelesaikan masalah agar batang encoder tidak jatuh dari bantalan titik, jadi saya menyolder beberapa tetes solder pada batang langsung di depan elemen penahan. Dengan demikian, batang berputar bebas di struktur penahan, tetapi tidak jatuh dari bantalan.

Alasan mengapa rangkaian encoder dipilih adalah sebagai berikut: semua artikel tentang anemometer buatan sendiri di Internet menjelaskan pembuatannya berdasarkan motor DC dari pemutar, CD-ROM, atau produk lainnya. Masalah dengan perangkat tersebut adalah, pertama, kalibrasi dan akurasi rendah pada kecepatan angin rendah, dan kedua, karakteristik non-linier kecepatan angin sehubungan dengan tegangan output, yaitu. untuk mentransfer informasi ke komputer, ada masalah tertentu, Anda perlu menghitung hukum perubahan tegangan atau arus dari kecepatan angin. Saat menggunakan encoder, tidak ada masalah seperti itu, karena ketergantungannya linier. Akurasinya paling tinggi, karena encoder memberikan sekitar 50 pulsa per putaran sumbu anemometer, tetapi rangkaian konverter agak lebih rumit, di mana ada mikrokontroler yang menghitung jumlah pulsa per detik di salah satu port dan output nilai ini ke port USB.

4. Pengujian dan kalibrasi

Sebuah anemometer laboratorium digunakan untuk kalibrasi.

Stasiun cuaca bermerek atau buatan rumah tangga biasa mengukur dua suhu-kelembaban (di dalam ruangan dan di luar), tekanan atmosfer, dan juga memiliki jam dengan kalender. Namun, stasiun cuaca nyata memiliki lebih banyak - sensor radiasi matahari, pengukur hujan dan semua itu, secara umum, hanya diperlukan untuk tujuan profesional, dengan satu pengecualian. Pengukur angin (kecepatan, dan, yang paling penting, arah) adalah tambahan yang sangat berguna untuk rumah pedesaan. Selain itu, sensor angin bermerek cukup mahal bahkan di Ali Baba, dan masuk akal untuk melihat solusi buatan sendiri.

Saya harus segera mengatakan bahwa jika saya tahu sebelumnya berapa banyak pekerjaan manual dan uang yang dihabiskan untuk eksperimen yang akan dihasilkan oleh ide saya, mungkin saya tidak akan memulainya. Tetapi rasa ingin tahu lebih besar daripada itu, dan para pembaca artikel ini memiliki kesempatan untuk menghindari jebakan-jebakan yang harus saya lewati.

Untuk pengukuran kecepatan angin(anemometri) ada ratusan cara, yang utama adalah:

kawat panas,
- mekanis - dengan baling-baling (lebih tepatnya, baling-baling) atau baling-baling horizontal cangkir (anemometer cangkir klasik).Mengukur kecepatan dalam kasus ini setara dengan mengukur kecepatan sumbu di mana baling-baling atau baling-baling dipasang.
- serta ultrasonik, yang menggabungkan pengukuran kecepatan dan arah.
Untuk pengukuran arah lebih sedikit cara:
- ultrasonik yang disebutkan;
- baling-baling cuaca mekanis dengan penghapusan sudut rotasi secara elektronik. Ada juga banyak cara berbeda untuk mengukur sudut rotasi: optik, resistif, magnetik, induktif, mekanis. Omong-omong, Anda cukup memasang kompas elektronik pada poros baling-baling cuaca - itu hanya cara yang andal dan sederhana (untuk pengulangan "lutut") untuk mengirimkan bacaan dari sumbu yang berputar secara kacau masih harus dicari. Oleh karena itu, kami selanjutnya memilih metode optik tradisional.

Saat mengulangi salah satu metode ini sendiri, Anda harus mengingat persyaratan untuk konsumsi energi minimal dan paparan sinar matahari dan hujan sepanjang waktu (atau mungkin sepanjang tahun?). Sensor angin tidak dapat ditempatkan di bawah atap di tempat teduh - sebaliknya, itu harus sejauh mungkin dari semua faktor yang mengganggu dan "terbuka untuk semua angin". Lokasi yang ideal adalah punggungan atap rumah atau, paling buruk, gudang atau gazebo, jauh dari bangunan dan pohon lain. Persyaratan tersebut menyiratkan catu daya otonom dan, jelas, saluran transmisi data nirkabel. Persyaratan ini disebabkan oleh beberapa "lonceng dan peluit" dari desain, yang dijelaskan di bawah ini.

Tentang konsumsi daya minimum

Omong-omong, berapa konsumsi daya minimum? Berdasarkan baterai AA rumah tangga biasa, konsumsi rata-rata rangkaian idealnya tidak lebih dari 1-2 mA. Hitung sendiri: kapasitas sel alkaline AA yang layak adalah sekitar 2,5-3 Ah, yaitu, sirkuit dengan konsumsi yang ditunjukkan akan bekerja darinya selama sekitar 1500-2500 jam, atau 2-3 bulan. Pada prinsipnya, ini juga tidak banyak, tetapi relatif dapat diterima - Anda tidak dapat berbuat lebih sedikit: baterai rusak, atau Anda harus menggunakan baterai yang perlu diisi lebih sering daripada mengganti baterai. Untuk alasan ini, ketika menyusun sirkuit seperti itu, kami berkewajiban untuk menangkap remah apa pun: mode hemat daya wajib, sirkuit yang dipikirkan dengan cermat dan urutan tindakan dalam program. Selanjutnya kita akan melihat bahwa dalam desain akhir, saya masih belum memenuhi persyaratan yang diperlukan dan harus menggunakan daya baterai.


Sebuah cerita informatif tentang bagaimana saya mencoba mereproduksi metode yang paling modern dan canggih - ultrasound, dan gagal, saya akan menceritakannya di lain waktu. Semua metode lain melibatkan pengukuran kecepatan dan arah yang terpisah, jadi kami harus memblokir dua sensor. Setelah mempelajari anemometer kawat panas secara teoritis, saya menyadari bahwa kami tidak akan dapat membeli elemen sensitif yang sudah jadi dari tingkat amatir (mereka tersedia di pasar Barat!), Tetapi untuk menciptakannya sendiri - untuk terlibat dalam R&D berikutnya dengan pemborosan waktu dan uang yang sesuai. Oleh karena itu, setelah beberapa pemikiran, saya memutuskan untuk membuat desain terpadu untuk kedua sensor: anemometer cangkir dengan pengukuran optik kecepatan rotasi dan baling-baling cuaca dengan pembacaan elektronik sudut rotasi berdasarkan disk encoder (encoder).

desain sensor

Keuntungan dari sensor mekanis adalah tidak ada R&D yang diperlukan di sana, prinsipnya sederhana dan jelas, dan kualitas hasilnya hanya bergantung pada keakuratan desain yang dipikirkan dengan cermat.

Jadi sepertinya secara teoritis, dalam prakteknya menghasilkan banyak pekerjaan mekanik, beberapa di antaranya harus dipesan di samping, karena kurangnya mesin bubut dan penggilingan di tangan. Saya harus segera mengatakan bahwa saya tidak pernah menyesali bahwa sejak awal saya mengandalkan pendekatan modal, dan tidak memagari konstruksi dari bahan improvisasi.

Untuk baling-baling cuaca dan anemometer, bagian-bagian berikut diperlukan, yang harus dipesan dari turner dan miller (jumlah dan bahan ditunjukkan untuk kedua sensor sekaligus):

Gandar, kami perhatikan, harus dihidupkan dengan mesin bubut: hampir tidak mungkin untuk membuat poros dengan ujung tepat di tengah pada lutut. Dan penempatan ujung tepat di sepanjang sumbu rotasi di sini adalah faktor penentu keberhasilan. Selain itu, sumbu harus benar-benar lurus, tidak boleh ada penyimpangan.

Sensor arah angin mekanis - baling-baling cuaca elektronik

Basis baling-baling cuaca (serta sensor kecepatan di bawah) adalah braket berbentuk U yang terbuat dari duralumin D-16, ditunjukkan pada gambar di kiri atas. Sepotong PTFE ditekan ke ceruk bawah, di mana ceruk bertahap dibuat berturut-turut dengan bor 2 dan 3 mm. Sebuah sumbu dimasukkan ke dalam ceruk ini dengan ujung yang tajam (untuk baling-baling cuaca - terbuat dari kuningan). Dari atas, ia bebas melewati lubang 8 mm. Di atas lubang ini, sepotong persegi panjang dari fluoroplastik yang sama setebal 4 mm dipasang pada braket dengan sekrup M2 sehingga menutupi lubang. Sebuah lubang dibuat di PTFE tepat di sepanjang diameter sumbu 6 mm (terletak tepat di sepanjang sumbu umum lubang - lihat gambar perakitan di bawah). Fluoroplastik di bagian atas dan bawah di sini berperan sebagai bantalan biasa.


Sumbu pada titik gesekan terhadap fotoplastik dapat dipoles, dan area gesekan dapat dikurangi dengan menenggelamkan lubang di fluoroplastik. ( Lihat topik ini di bawah UPD dari 09/13/18 dan 06/05/19). Untuk baling-baling cuaca, ini tidak memainkan peran khusus - beberapa "perlambatan" bahkan berguna untuknya, dan untuk anemometer Anda harus mencoba meminimalkan gesekan dan kelembaman.

Sekarang tentang penghapusan sudut rotasi. Encoder Gray 16 posisi klasik dalam kasus kami terlihat seperti ini:

Ukuran disk dipilih berdasarkan kondisi isolasi optik yang andal dari pasangan emitor-penerima satu sama lain. Dengan konfigurasi ini, celah lebar 5 mm juga berjarak 5 mm, dan pasangan optik berjarak tepat 10 mm. Dimensi braket tempat baling-baling cuaca dipasang dihitung dengan tepat berdasarkan diameter piringan 120 mm. Semua ini, tentu saja, dapat dikurangi (terutama jika Anda memilih LED dan fotodetektor dengan diameter sekecil mungkin), tetapi kerumitan pembuatan enkoder diperhitungkan: ternyata pabrik tidak melakukan pekerjaan yang begitu rumit, oleh karena itu harus dipotong secara manual dengan file jarum. Dan di sini semakin besar ukurannya, semakin andal hasilnya dan semakin sedikit kerumitan.

Gambar rakitan di atas menunjukkan bagaimana cakram dipasang ke poros. Disk yang dipusatkan dengan hati-hati dipasang dengan sekrup M2 ke selongsong caprolon. Busing ditempatkan pada sumbu sehingga celah di bagian atas minimal (1-2 mm) - sehingga sumbu berputar bebas pada posisi normal, dan ketika dibalik, ujungnya tidak jatuh dari soket di dasar. Blok fotodetektor dan emitor terpasang ke braket di bagian atas dan bawah disk, lebih khusus tentang desainnya di bawah ini.

Seluruh struktur ditempatkan dalam wadah plastik (ABS atau polikarbonat) 150x150x90 mm. Dirakit (tanpa penutup dan baling-baling cuaca), sensor arah terlihat seperti ini:

Perhatikan bahwa arah utara yang dipilih ditandai dengan panah dan harus dipatuhi saat memasang kembali sensor.

Baling-baling cuaca yang sebenarnya melekat pada bagian atas sumbu. Itu dibuat atas dasar poros kuningan yang sama, di potongan di sisi tumpul di mana betis lembaran kuningan disolder. Pada ujung yang tajam, utas M6 dipotong dengan panjang tertentu, dan gips penyeimbang berat bulat dari timah dipasang di atasnya dengan bantuan mur:

Beban dirancang sedemikian rupa sehingga pusat gravitasi jatuh tepat pada titik pemasangan (dengan memindahkannya di sepanjang ulir, Anda dapat mencapai keseimbangan sempurna). Baling-baling cuaca diikat ke sumbu menggunakan sekrup M3 stainless, yang melewati lubang di sumbu baling-baling cuaca dan disekrup ke dalam potongan ulir pada sumbu rotasi (sekrup pemasangan terlihat pada foto di atas). Untuk orientasi yang tepat, bagian atas sumbu rotasi memiliki lekukan setengah lingkaran di mana sumbu baling-baling cuaca terletak.

Sensor kecepatan angin - anemometer cangkir do-it-yourself

Seperti yang sudah Anda pahami, dasar untuk sensor kecepatan untuk tujuan penyatuan dipilih sama dengan baling-baling cuaca. Tetapi persyaratan desain di sini agak berbeda: untuk mengurangi ambang awal, anemometer harus seringan mungkin. Oleh karena itu, khususnya, sumbu untuk itu terbuat dari duralumin, piringan berlubang (untuk mengukur kecepatan rotasi) dikurangi diameternya:

Sementara encoder Gray empat-bit membutuhkan empat optocoupler, sensor kecepatan hanya membutuhkan satu. 16 lubang dibor di sepanjang keliling disk pada jarak yang sama, jadi satu putaran disk per detik setara dengan 16 hertz frekuensi yang berasal dari optocoupler (lebih banyak lubang dimungkinkan, lebih sedikit yang mungkin - satu-satunya pertanyaan adalah skala perhitungan ulang dan penghematan energi untuk emitor).

Sensor buatan sendiri masih akan menjadi sangat kasar (ambang awal setidaknya setengah meter meter per detik), tetapi hanya dapat dikurangi jika desainnya diubah secara radikal: misalnya, letakkan baling-baling alih-alih meja putar cangkir. Di meja putar cangkir, perbedaan gaya hambatan aliran yang menentukan torsi relatif kecil - itu dicapai semata-mata karena bentuk permukaan yang berbeda yang memenuhi aliran udara yang datang (oleh karena itu, bentuk cangkir harus ramping seperti mungkin - idealnya, ini adalah setengah telur atau bola). Baling-baling memiliki torsi yang lebih besar, bobotnya dapat dibuat lebih ringan, dan, akhirnya, fabrikasinya sendiri lebih sederhana. Tetapi baling-baling harus dipasang searah dengan aliran udara - misalnya dengan meletakkannya di ujung baling-baling cuaca yang sama.

Pertanyaan pertanyaan sekaligus: bagaimana cara mengirimkan bacaan dari sensor yang berputar secara acak di sekitar sumbu vertikal? Saya tidak dapat menyelesaikannya, dan dilihat dari fakta bahwa desain piala profesional masih tersebar luas, itu tidak berarti diselesaikan dengan setengah tendangan (kami tidak memperhitungkan anemometer genggam - mereka diorientasikan secara manual sesuai dengan udara mengalir).

Versi saya dari anemometer cangkir didasarkan pada cakram laser. Tampilan atas dan bawah ditunjukkan pada foto:



Gelas terbuat dari bagian bawah botol air bayi "Agusha". Bagian bawah dipotong dengan hati-hati, dan ketiganya - pada jarak yang sama, sehingga mereka memiliki bobot yang sama, dihangatkan secara lokal di tengah (dalam hal apa pun jangan memanaskan semuanya - itu akan melengkung secara permanen!) Dan sisi belakang pegangan kayu dari file ditekuk ke luar untuk membuatnya lebih ramping. Anda akan mengulangi - persediaan pada botol yang lebih besar, dari lima atau enam buah Anda mungkin akan dapat membuat tiga cangkir yang kurang lebih identik. Dalam cangkir yang diproduksi, slot dibuat di samping dan mereka dipasang di sepanjang perimeter disk pada 120 ° relatif satu sama lain menggunakan sealant perekat tahan air. Disk dipusatkan secara ketat relatif terhadap sumbu (saya melakukan ini dengan bantuan mesin cuci logam tertutup) dan dipasang pada selongsong kaprolon dengan sekrup M2.

Desain umum dan pemasangan sensor

Kedua sensor, sebagaimana telah disebutkan, ditempatkan dalam wadah plastik 150x150x90 mm. Pilihan bahan kasing harus didekati dengan cermat: ABS atau polikarbonat memiliki ketahanan cuaca yang cukup, tetapi polistiren, kaca plexiglass, dan terlebih lagi polietilen, pasti tidak akan berfungsi di sini (dan juga akan sulit untuk mengecatnya untuk melindunginya dari sinar matahari ). Jika tidak mungkin untuk membeli kotak bermerek, lebih baik untuk menyolder kasing dari fiberglass foil sendiri, dan kemudian mengecatnya untuk melindunginya dari korosi dan memberikan penampilan yang estetis.

Lubang 8-10 mm dibuat di tutupnya tepat pada titik di mana sumbu keluar, di mana kerucut plastik direkatkan dengan sealant perekat yang sama, dipotong dari cerat dari kaleng semprot dengan sealant bangunan atau lem:

Untuk memusatkan kerucut di sepanjang sumbu, kencangkan sepotong kayu dari bagian bawah tutupnya dengan penjepit, tandai bagian tengah yang tepat di atasnya dan masuk sedikit lebih dalam dengan bor sekop 12 mm, buat lubang melingkar di sekitar lubang. Kerucut harus masuk tepat di sana, setelah itu bisa dilapisi dengan lem. Anda juga dapat memperbaikinya dalam posisi vertikal selama pemadatan dengan sekrup M6 dengan mur.

Sensor kecepatan itu sendiri menutupi poros dengan kerucut ini seperti payung, mencegah air masuk ke rumah. Untuk baling-baling cuaca, ada baiknya juga menempatkan selongsong di atas kerucut, yang akan menutup celah antara sumbu dan kerucut dari aliran air langsung (lihat foto tampilan umum sensor di bawah).

Kabel dari optocoupler terhubung ke konektor D-SUB yang terpisah (lihat foto sensor arah di atas). Bagian kawin dengan kabel dimasukkan melalui lubang persegi panjang di dasar kasing. Lubang kemudian ditutup dengan penutup dengan slot untuk kabel, yang menjaga konektor agar tidak jatuh. Braket dural disekrup ke dasar kasing untuk dipasang di tempatnya. Konfigurasi mereka tergantung pada lokasi sensor.

Saat dirakit, kedua sensor terlihat seperti ini:

Di sini mereka ditampilkan sudah terpasang di tempatnya - di punggungan gazebo. Harap dicatat bahwa ceruk untuk sekrup yang memasang penutup dilindungi dari air oleh sumbat karet basah. Sensor dipasang secara horizontal sesuai dengan levelnya, untuk itu perlu menggunakan lapisan dari potongan linoleum.

Bagian elektronik

Stasiun cuaca secara keseluruhan terdiri dari dua modul: unit jarak jauh (yang melayani kedua sensor angin, dan juga mengambil pembacaan dari sensor suhu-kelembaban eksternal), dan modul utama dengan tampilan. Unit jarak jauh dilengkapi dengan pemancar nirkabel untuk mengirim data yang terpasang di dalamnya (antena menonjol dari samping). Modul utama menerima data dari unit jarak jauh (penerima ditempatkan pada kabel di unit terpisah untuk kemudahan orientasi), dan juga mengambil pembacaan dari sensor suhu-kelembaban internal dan menampilkan semua ini di layar. Komponen terpisah dari unit utama adalah jam dengan kalender, yang, untuk kenyamanan pengaturan stasiun umum, dilayani oleh pengontrol Arduino Mini yang terpisah dan memiliki tampilannya sendiri.

Modul jarak jauh dan rangkaian pengukuran sensor angin

LED IR AL-107B dipilih sebagai pemancar foto. LED vintage ini, tentu saja, bukan yang terbaik di kelasnya, tetapi memiliki bodi mini dengan diameter 2,4 mm dan mampu mengalirkan arus hingga 600 mA per pulsa. Omong-omong, selama pengujian, ternyata sampel LED ini sekitar tahun 1980 rilis (dalam kotak merah) memiliki efisiensi kira-kira dua kali lipat (dinyatakan dalam kisaran pengoperasian fotodetektor yang andal) daripada spesimen modern yang dibeli di Chip -Dalam (mereka memiliki tubuh hijau kekuningan transparan). Tidak mungkin kristal lebih baik pada tahun 1980 daripada sekarang, meskipun apa yang tidak bercanda? Mungkin, bagaimanapun, masalahnya ada di sudut hamburan yang berbeda di kedua desain.

Arus searah sekitar 20 mA dilewatkan melalui LED di sensor kecepatan (resistor 150 Ohm ketika ditenagai oleh 5 volt), dan di sensor arah - arus berdenyut (berliku-liku dengan siklus kerja 2) sekitar 65 mA ( sama 150 Ohm ketika ditenagai oleh 12 volt). Arus rata-rata melalui satu LED dari sensor arah adalah sekitar 33 mA, total melalui empat saluran - sekitar 130 mA.

Sebagai fotodetektor, fototransistor L-32P3C dalam kemasan dengan diameter 3 mm dipilih. Sinyal diambil dari kolektor yang dimuat dengan resistor 1,5 atau 2 kOhm dari suplai 5 V. Parameter ini dipilih sehingga pada jarak ~ 20 mm antara pemancar foto dan penerima, sinyal logika ukuran penuh pada 5 level -volt tanpa amplifikasi tambahan akan segera tiba di input pengontrol. Arus yang digambarkan di sini mungkin tampak tidak proporsional bagi Anda, berdasarkan kebutuhan daya minimum yang disebutkan di atas, tetapi seperti yang akan Anda lihat, arus tersebut muncul di setiap siklus pengukuran selama maksimum beberapa milidetik sehingga total konsumsi tetap kecil.

Dasar untuk memasang penerima dan pemancar adalah bagian dari saluran kabel (terlihat pada foto sensor di atas), dipotong sehingga membentuk "telinga" di dasar untuk pemasangan pada braket. Untuk setiap potongan ini, pelat plastik direkatkan ke tutup pengunci dari dalam, sama lebarnya dengan lebar saluran. LED dan fototransistor dipasang pada jarak yang diperlukan di lubang yang dibor di pelat ini sehingga ujungnya ada di dalam saluran, dan hanya tonjolan di ujung kasing yang menonjol di luar. Kesimpulan disolder sesuai dengan diagram (lihat di bawah), kesimpulan eksternal dibuat dengan potongan kabel multi-warna yang fleksibel. Resistor untuk emitor sensor arah juga ditempatkan di dalam saluran, satu kesimpulan umum diambil darinya. Setelah pematrian, penutup terpasang ke tempatnya, semua slot disegel dengan plastisin dan juga dengan pita perekat, yang juga menutup lubang dari sisi yang berlawanan dengan timah, dan seluruh struktur diisi dengan epoksi. Kesimpulan eksternal, seperti yang Anda lihat di foto sensor, dikeluarkan ke blok terminal yang dipasang di bagian belakang braket.

diagram sirkuit unit pemrosesan sensor angin terlihat seperti ini:

Tentang dari mana datangnya daya 12-14 volt, lihat di bawah. Selain komponen yang ditunjukkan dalam diagram, unit jarak jauh berisi sensor suhu-kelembaban, yang tidak ditunjukkan dalam diagram. Pembagi tegangan yang terhubung ke terminal A0 pengontrol dirancang untuk mengontrol tegangan catu daya untuk tujuan penggantian tepat waktu. LED yang terhubung ke pin 13 tradisional (pin 19 dari kasing DIP) sangat terang, untuk cahaya normal dan tidak menyilaukan, sebagian kecil dari arus miliampere sudah cukup, yang dipastikan dengan nilai 33 yang luar biasa tinggi. kΩ resistor.

Sirkuit menggunakan pengontrol Atmega328 telanjang dalam paket DIP, diprogram melalui Uno dan diinstal pada soket. Pengontrol seperti itu dengan bootloader Arduino yang sudah ditulis dijual, misalnya, dalam Chip-Dip (atau Anda dapat menulis bootloader sendiri). Sangat mudah untuk memprogram pengontrol seperti itu di lingkungan yang akrab, tetapi, tanpa komponen di papan, itu, pertama, lebih ekonomis, dan kedua, membutuhkan lebih sedikit ruang. Mode hemat energi lengkap dapat diperoleh dengan menyingkirkan bootloader juga (dan umumnya menulis semua kode dalam assembler :), tetapi di sini ini tidak terlalu relevan, dan pemrograman tidak perlu rumit.

Dalam diagram, persegi panjang abu-abu melingkari komponen yang terkait secara terpisah dengan saluran kecepatan dan arah. Pertimbangkan operasi skema secara keseluruhan.

Pengoperasian pengontrol secara keseluruhan dikendalikan oleh pengatur waktu pengawas WDT yang diaktifkan dalam mode panggilan interupsi. WDT membangunkan pengontrol dari mode tidur pada interval yang ditentukan. Jika pengatur waktu diatur ulang dalam panggilan interupsi, tidak ada restart dari awal, semua variabel global tetap pada nilainya. Ini memungkinkan Anda untuk mengumpulkan data dari bangun ke bangun dan pada titik tertentu memprosesnya - misalnya, rata-rata.

Di awal program, deklarasi perpustakaan dan variabel global berikut dibuat (agar tidak mengacaukan teks contoh yang sudah ekstensif, semua yang terkait dengan sensor suhu-kelembaban dirilis di sini):

#termasuk #termasuk #termasuk . . . . . #define ledPin 13 //pin LED (PB5 pin 19 ATmega) #define IR_Pin 10 //IRLU transistor control (PB2 pin 16 Atmega) #define in_3p 9 //Receiver input bit 3 #define in_2p 8 //Receiver input bit 2 # define in_1p 7 //input penerima bit 1 #define in_0p 6 //input penerima bit 0 #define IR_PINF 5 //(PD5,11) output untuk frekuensi LED IR #define IN_PINF 4 //(PD4,6) input deteksi frekuensi volatil unsigned long ttime = 0; // Masa aktivasi sensor float ff; //nilai frekuensi sensor kecepatan untuk rata-rata pesan char; //pesan terkirim byte count=0;//counter int batt; // untuk rata-rata byte baterai wDir; // susunan arah angin byte wind_Gray=0; //byte kode arah angin
Prosedur berikut digunakan untuk memulai mode tidur dan WDT (bangun setiap 4 detik):

// menempatkan sistem ke mode tidur void system_sleep() ( ADCSRA &= ~(1<< ADEN); //экв. cbi(ADCSRA,ADEN); выключим АЦП set_sleep_mode(SLEEP_MODE_PWR_DOWN); // режим сна sleep_mode(); // система засыпает sleep_disable(); // система продолжает работу после переполнения watchdog ADCSRA |= (1 << ADEN); /экв. sbi(ADCSRA,ADEN); включаем АЦП } //**************************************************************** // ii: 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms // 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec void setup_watchdog(int ii) { byte bb; if (ii >9) ii=9; bb=ii & 7; jika (ii > 7) bb|= (1<<5); //в bb - код периода bb|= (1<Sensor kecepatan mengeluarkan frekuensi gangguan saluran optik, urutan besarnya adalah satuan-puluhan hertz. Lebih ekonomis dan lebih cepat untuk mengukur nilai seperti itu setelah suatu periode (ini adalah subjek publikasi penulis "Evaluasi metode untuk mengukur frekuensi rendah pada Arduino"). Di sini, metode dipilih melalui fungsi pulseInLong() yang dimodifikasi, yang tidak mengikat pengukuran ke keluaran pengontrol tertentu (teks fungsi periodInLong() dapat ditemukan dalam publikasi yang ditunjukkan).

Dalam fungsi setup(), arah pin dideklarasikan, pustaka pemancar 433 MHz dan pengatur waktu pengawas diinisialisasi (baris untuk IN_PINF, pada prinsipnya, berlebihan, dan disisipkan untuk memori):

Void setup() ( pinMode(IR_PINF, OUTPUT); //ke output pinMode(IN_PINF, INPUT); //deteksi frekuensi keluaran ke input pinMode(13, OUTPUT); //LED vw_setup(1200); // Kecepatan koneksi VirtualWire vw_set_tx_pin(2); //D2, PD2(4) Pin transfer VirtualWire // Serial.begin(9600); // Port serial untuk memantau saat men-debug setup_watchdog(8); //WDT periode 4 c wdt_reset(); )
Terakhir, di loop utama program, pertama-tama kita membaca tegangan setiap kali kita bangun (setiap 4 detik) dan menghitung frekuensi sensor kecepatan angin:

Void loop() ( wdt_reset(); // reset timer digitalWrite(ledPin, HIGH); // nyalakan LED untuk mengontrol batt=analogRead(0); // membaca dan menyimpan kode baterai saat ini /*=== frekuensi === = */ digitalWrite(IR_PINF, HIGH); //nyalakan LED IR dari sensor kecepatan float f=0; //variabel untuk frekuensi ttime=periodInLong(IN_PINF, LOW, 250000); //tunggu 0.25 detik // Serial.println(ttime); //untuk kontrol selama debugging if (ttime!=0) (//jika tidak ada frekuensi f = 1000000/float(ttime);) //menghitung frekuensi sinyal dalam Hz digitalWrite(IR_PINF, LOW); / /mematikan LED IR ff=f; //menyimpan nilai yang dihitung dalam array. . . . .
Waktu pembakaran LED IR (memakan, saya ingatkan Anda, 20 mA) di sini, seperti yang Anda lihat, akan maksimum tanpa adanya rotasi disk sensor dan sekitar 0,25 detik dalam kondisi ini. Frekuensi terukur minimum dengan demikian adalah 4 Hz (seperempat putaran cakram per detik dengan 16 lubang). Ternyata saat mengkalibrasi sensor (lihat di bawah), ini sesuai dengan kecepatan angin sekitar 0,2 m/s. Kami menekankan bahwa ini adalah nilai minimum kecepatan angin yang dapat diukur, tetapi bukan resolusi dan bukan ambang awal (yang akan menjadi jauh lebih tinggi). Di hadapan frekuensi (yaitu, ketika sensor berputar), waktu pengukuran (dan, karenanya, waktu pembakaran LED, yaitu konsumsi arus) akan berkurang secara proporsional, dan resolusi akan meningkat.

Diikuti dengan prosedur yang dilakukan setiap kebangkitan keempat (yaitu, setiap 16 detik). Dari akumulasi empat nilai, kami mengirimkan nilai frekuensi sensor kecepatan bukan rata-rata, tetapi maksimum - seperti yang ditunjukkan oleh pengalaman, ini adalah nilai yang lebih informatif. Untuk kenyamanan dan keseragaman, masing-masing besaran, apa pun jenisnya, diubah menjadi bilangan bulat positif dengan ukuran 4 tempat desimal sebelum transmisi. Variabel count melacak jumlah bangun:

//setiap 16 detik kita rata-rata baterai dan menentukan nilai //frekuensi maksimum dari 4 nilai: if (count==3)( f=0; //nilai frekuensi for (byte i=0; i<4; i++) if (fBerikutnya adalah definisi kode Gray arah. Di sini, untuk mengurangi konsumsi, alih-alih terus-menerus pada LED IR, frekuensi 5 kHz diterapkan ke keempat saluran secara bersamaan melalui transistor efek medan utama menggunakan fungsi nada (). Deteksi keberadaan frekuensi pada masing-masing digit (pin in_0p - in_3p) dilakukan dengan metode yang mirip dengan anti-pantulan saat membaca indikasi tombol yang ditekan. Pertama, dalam loop, kami menunggu untuk melihat apakah outputnya tinggi, dan kemudian kami memeriksanya setelah 100 s. 100 s adalah setengah periode frekuensi 5 kHz, yaitu, jika ada frekuensi setidaknya dari kedua kalinya, kami akan kembali ke tingkat tinggi (untuk berjaga-jaga, kami ulangi empat kali) dan ini berarti bahwa itu pasti ada. Kami mengulangi prosedur ini untuk masing-masing dari empat bit kode:

/* ===== Wind Grey ==== */ //arah: tone(IR_Pin,5000);//frekuensi 5 kHz ke transistor boolean yes = false; byte i=0; while(!yes)( //digit 3 i++; boolean state1 = (digitalRead(in_3p)&HIGH); delayMicroseconds(100); // delay 100 mikrodetik yes=(state1 & !digitalRead(in_3p)); if (i> 4 ) break; //coba empat kali) if (ya) wDir=1; lain wDir=0; ya = salah; saya=0; while(!yes)( //digit 2 i++; boolean state1 = (digitalRead(in_2p)&HIGH); delayMicroseconds(100); // delay 100 mikrodetik yes=(state1 & !digitalRead(in_2p)); if (i> 4 ) break; //coba empat kali) if (ya) wDir=1; lain wDir=0; ya = salah; saya=0; while(!yes)( //bit 1 i++; boolean state1 = (digitalRead(in_1p)&HIGH); delayMicroseconds(100); // delay 100 mikrodetik yes=(state1 & !digitalRead(in_1p)); if (i> 4 ) break; //coba empat kali) if (ya) wDir=1; lain wDir=0; ya = salah; saya=0; while(!yes)( //bit 0 i++; boolean state1 = (digitalRead(in_0p)&HIGH); delayMicroseconds(100); // delay 100 mikrodetik yes=(state1 & !digitalRead(in_0p)); if (i> 4 ) break; //coba empat kali) if (ya) wDir=1; lain wDir=0; tidakNada(IR_Pin); //matikan frekuensi // kumpulkan menjadi satu byte dalam kode Gray: wind_Gray=wDir+wDir*2+wDir*4+wDir*8; // terjemahan langsung ke biner. kode int wind_G=wind_Gray*10+1000; // tambahkan hingga 4 des. pembuangan. . . . .
Durasi maksimum satu prosedur adalah tanpa adanya frekuensi pada penerima dan sama dengan 4 × 100 = 400 mikrodetik. Waktu pembakaran maksimum LED 4 arah adalah ketika tidak ada penerima yang menyala, yaitu, 4 × 400 = 1,6 milidetik. Omong-omong, algoritme akan bekerja dengan cara yang sama jika, alih-alih frekuensi yang periodenya kelipatan 100 s, Anda cukup menerapkan level tinggi yang konstan ke LED. Di hadapan liku-liku alih-alih tingkat yang konstan, kami hanya menghemat makanan hingga setengahnya. Kita dapat menghemat lebih banyak lagi jika kita menjalankan setiap LED IR melalui jalur terpisah (masing-masing, melalui output pengontrol terpisah dengan transistor kuncinya sendiri), tetapi ini memperumit rangkaian, pengkabelan dan kontrol, dan arus 130 mA selama 2 ms setiap 16 detik - ini, Anda tahu, sedikit.

Akhirnya, transmisi data nirkabel. Metode paling sederhana, termurah, dan paling andal dipilih untuk mengirimkan data dari lokasi sensor ke tampilan stasiun cuaca: pasangan pemancar/penerima pada frekuensi 433 MHz. Saya setuju bahwa metode ini bukan yang paling nyaman (karena fakta bahwa perangkat dirancang untuk mentransfer urutan bit, dan bukan seluruh byte, Anda harus unggul dalam mengonversi data antara format yang diperlukan), dan saya yakin banyak yang ingin untuk berdebat dengan saya dalam hal keandalannya. Jawaban untuk keberatan terakhir sederhana: "Anda tidak tahu cara memasaknya!".

Rahasianya adalah bahwa biasanya tetap berada di belakang layar dari berbagai deskripsi pertukaran data melalui saluran 433 MHz: karena perangkat ini murni analog, daya receiver harus dibersihkan dengan baik dari riak asing. Dalam situasi apa pun penerima tidak boleh ditenagai oleh regulator 5V internal Arduino! Memasang regulator penerima daya rendah yang terpisah (LM2931, LM2950, ​​atau serupa) tepat di sebelah outputnya, dengan sirkuit penyaringan input dan output yang tepat, secara dramatis meningkatkan jangkauan dan keandalan transmisi.

Dalam hal ini, pemancar bekerja langsung dari tegangan baterai 12 V, penerima dan pemancar dilengkapi dengan antena standar buatan sendiri dalam bentuk seutas kawat sepanjang 17 cm (Saya ingatkan Anda bahwa hanya satu inti kabel cocok untuk antena, dan antena perlu ditempatkan di ruang yang paralel satu sama lain.) Paket informasi sepanjang 24 byte (dengan mempertimbangkan kelembaban dan suhu) tanpa masalah ditransmisikan dengan percaya diri pada kecepatan 1200 bps secara diagonal melalui sebidang taman seluas 15 hektar (sekitar 40-50 meter), dan kemudian melalui tiga dinding kayu ke dalam ruangan ( di mana, misalnya, sinyal seluler diterima dengan susah payah dan tidak di mana-mana). Kondisi yang praktis tidak dapat dicapai untuk metode standar 2,4 GHz (seperti Bluetooth, Zig-Bee, dan bahkan Wi-Fi amatir), terlepas dari kenyataan bahwa konsumsi pemancar di sini adalah 8 mA yang menyedihkan dan hanya pada saat transmisi sebenarnya, sisa waktu pemancar mengkonsumsi uang nyata. Pemancar ditempatkan secara struktural di dalam unit jarak jauh, antena menjulur secara horizontal dari samping.

Kami menggabungkan semua data menjadi satu paket (di stasiun nyata, suhu dan kelembaban akan ditambahkan ke dalamnya), terdiri dari bagian 4-byte yang seragam dan didahului oleh tanda tangan "DAT", mengirimkannya ke pemancar dan menyelesaikan semua siklus:

/*======Pemancar=====*/ String strMsg="DAT"; //tanda tangan - data strMsg+=volt; //pasang baterai 4-digit strMsg+=wind_G; //lampirkan angin 4 bit strMsg+=fi; //lampirkan frekuensi 4 bit strMsg.toCharArray(msg,16); //menerjemahkan string menjadi array // Serial.println(msg); //untuk mengontrol vw_send((uint8_t *)msg, strlen(msg)); // kirim pesan vw_wait_tx(); // tunggu transfer selesai - harus! penundaan (50); //+ untuk jaga-jaga, delay count=0; //reset penghitung )//end count==3 else count++; digitalWrite(ledPin, RENDAH); //kita matikan sinyal LED system_sleep(); //sistem - untuk tidur) //akhiri loop
Ukuran paket dapat dikurangi jika persyaratan untuk mewakili masing-masing dari berbagai jenis nilai dalam bentuk kode 4-byte yang seragam ditinggalkan (misalnya, untuk kode Gray, tentu saja, satu byte sudah cukup). Tetapi demi universalisasi, saya membiarkan semuanya apa adanya.

Catu daya dan fitur desain unit jarak jauh. Konsumsi unit jarak jauh dihitung sebagai berikut:

20 mA (emitor) + ~20 mA (pengontrol dengan sirkuit tambahan) selama kira-kira 0,25 detik setiap empat detik - rata-rata 40/16 = 2,5 mA;
- 130 mA (radiator) + ~20 mA (pengontrol dengan sirkuit bantu) selama sekitar 2 ms setiap 16 detik - rata-rata 150/16/50 0,2 mA;

Dengan menggunakan perhitungan ini, konsumsi pengontrol saat membaca data dari sensor suhu-kelembaban dan selama pengoperasian pemancar, kami dengan berani membawa konsumsi rata-rata ke 4 mA (dengan puncak sekitar 150 mA, ingatlah!). Baterai (yang, omong-omong, akan membutuhkan sebanyak 8 buah untuk memberi daya pada pemancar dengan tegangan maksimum!) harus terlalu sering diganti, jadi muncul ide untuk memberi daya pada unit jarak jauh dari baterai 12 volt untuk obeng - Saya hanya punya dua tambahan. Kapasitasnya bahkan lebih kecil dari jumlah baterai AA yang sesuai - hanya 1,3 A jam, tetapi tidak ada yang mengganggu untuk mengubahnya kapan saja, menjaga baterai kedua tetap siap. Dengan indikasi konsumsi 4 mA, kapasitas 1300 mA jam cukup untuk sekitar dua minggu, yang tidak terlalu merepotkan.

Perhatikan bahwa tegangan baterai yang baru diisi dapat mencapai 14 volt. Dalam hal ini, penstabil input 12 volt dipasang - untuk mencegah tegangan berlebih pada suplai pemancar dan tidak membebani penstabil lima volt utama.

Unit jarak jauh dalam wadah plastik yang sesuai ditempatkan di bawah atap, kabel daya dari baterai dan koneksi ke sensor angin terhubung ke konektornya. Kesulitan utama adalah bahwa sirkuit ternyata sangat sensitif terhadap kelembaban udara: dalam cuaca hujan, setelah beberapa jam, pemancar mulai gagal, pengukuran frekuensi menunjukkan kekacauan total, dan pengukuran tegangan baterai menunjukkan "cuaca di Mars" .

Oleh karena itu, setelah men-debug algoritme dan memeriksa semua koneksi, kasing harus disegel dengan hati-hati. Semua konektor di pintu masuk kasing dilapisi dengan sealant, hal yang sama berlaku untuk semua kepala sekrup yang mencuat, keluaran antena dan kabel daya. Sambungan tubuh dilapisi dengan plastisin (dengan mempertimbangkan bahwa mereka harus dipisahkan), dan juga direkatkan di atasnya dengan pita pipa ledeng. Sebaiknya perkuat juga konektor bekas di bagian dalam dengan epoksi: misalnya, modul jarak jauh DB-15 yang ditunjukkan pada diagram tidak kedap udara dengan sendirinya, dan udara lembab perlahan akan merembes di antara bingkai logam dan alas plastik.

Tetapi semua tindakan ini sendiri hanya akan memberikan efek jangka pendek - bahkan jika tidak ada penyedotan udara dingin dan lembab, maka udara kering dari ruangan dengan mudah berubah menjadi lembab ketika suhu di luar kasing turun (ingat fenomena yang disebut "titik embun").

Untuk menghindari hal ini, perlu untuk meninggalkan kartrid atau tas dengan pengering - silika gel di dalam kasing (tas dengan itu kadang-kadang dimasukkan ke dalam kotak dengan sepatu atau dalam beberapa paket dengan perangkat elektronik). Jika silika gel tidak diketahui asalnya dan telah disimpan dalam waktu lama, maka harus dikalsinasi dalam oven listrik pada suhu 140-150 derajat selama beberapa jam sebelum digunakan. Jika kasing disegel dengan benar, maka pengering harus diganti tidak lebih sering daripada di awal setiap musim panas.

Modul utama

Dalam modul utama, semua nilai diterima, diterjemahkan, jika perlu, dikonversi sesuai dengan persamaan kalibrasi dan ditampilkan.

Penerima dikeluarkan dari badan modul utama stasiun dan ditempatkan di kotak kecil dengan telinga untuk diikat. Antena dibawa keluar melalui lubang di penutup, semua lubang di kasing ditutup dengan karet mentah. Kontak penerima diarahkan ke konektor RS-4 domestik yang sangat andal, dari sisi penerima dihubungkan melalui segmen kabel AV berpelindung ganda:

Sinyal diambil dari salah satu inti kabel, dan daya disuplai melalui yang lain dalam bentuk 9 volt "mentah" dari adaptor daya modul. Jenis stabilizer LM-2950-5.0, bersama dengan kapasitor filter, dipasang di dalam kotak bersama dengan penerima di papan terpisah.

Eksperimen dilakukan untuk menambah panjang kabel (untuk berjaga-jaga - bagaimana jika itu tidak berhasil menembus dinding?), Di mana ternyata tidak ada yang berubah dalam panjang hingga 6 meter.

Hanya ada empat layar OLED: dua layar kuning menyajikan data cuaca, dua jam hijau, dan kalender. Penempatan mereka ditunjukkan di foto:

Harap dicatat bahwa di setiap grup salah satu tampilan adalah teks, yang kedua adalah grafik, dengan font yang dibuat secara artifisial dalam bentuk gambar mesin terbang. Di sini kita tidak akan membahas masalah keluaran informasi untuk ditampilkan di masa depan, agar tidak mengembang teks artikel yang sudah ekstensif dan contoh: karena adanya gambar mesin terbang yang harus ditampilkan secara individual (seringkali hanya dengan daftar pilihan menggunakan pernyataan kasus), program keluaran bisa sangat rumit. Untuk informasi tentang cara menangani tampilan ini, lihat posting penulis "Mode Grafik dan Teks Tampilan Winstar", yang menyertakan contoh tampilan untuk mengeluarkan data angin.

Diagram skematik. Untuk kemudahan pengaturan, jam dan tampilannya disajikan oleh pengontrol Arduino Mini yang terpisah dan kami tidak akan menganalisisnya lebih lanjut di sini. Skema untuk menghubungkan komponen ke Arduino Nano, yang mengontrol penerimaan dan keluaran data cuaca, adalah sebagai berikut:

Di sini, berbeda dengan modul jarak jauh, koneksi sensor cuaca ditampilkan - barometer dan sensor suhu-kelembaban internal. Anda harus memperhatikan kabel daya - layar ditenagai oleh stabilizer 5 V tipe LM1085 yang terpisah. Itu juga wajar untuk menyalakan tampilan jam darinya, namun, dalam hal ini, pengontrol jam juga harus diberi daya dari tegangan yang sama, dan melalui output 5 V, dan bukan Vin (untuk Mini Pro, yang terakhir disebut MENTAH). Jika Anda menyalakan pengontrol arloji dengan cara yang sama seperti Nano - dengan 9 volt melalui output RAW, maka regulator internalnya akan bertentangan dengan 5 volt eksternal, dan dalam pertarungan ini, tentu saja, yang terkuat akan menang, yaitu LM1085 , dan Mini akan tetap sepenuhnya tanpa daya. Juga, untuk menghindari segala macam masalah, sebelum memprogram Nano dan terutama Mini (yaitu, sebelum menghubungkan kabel USB), adaptor eksternal harus diputuskan.

Pada stabilizer LM1085, ketika keempat layar terhubung, sekitar satu watt daya akan dilepaskan, sehingga harus dipasang pada radiator kecil sekitar 5-10 cm2 dari sudut aluminium atau tembaga.

Penerimaan dan pemrosesan data. Di sini saya mereproduksi dan mengomentari hanya fragmen program yang terkait dengan data angin, tentang sensor lain beberapa kata kemudian.

Untuk menerima pesan pada saluran 433 MHz, kami menggunakan metode standar yang dijelaskan dalam banyak sumber. Kami menghubungkan perpustakaan dan mendeklarasikan variabel:

#termasuk . . . . . intvolt; //tegangan baterai di seluruh kode kondisi float batt; //nilai nyata - byte tegangan baterai wDir; //arah dalam kode abu-abu uint16_t t_time = 0; // interval waktu penerimaan char str; //string untuk data uint8_t buf; //variabel untuk pesan yang diterima uint8_t buflen = VW_MAX_MESSAGE_LEN; // panjang maksimal pesan yang diterima. . . . .
Ada satu keanehan dengan ukuran buflen buffer: tidak cukup untuk menyatakan nilainya (VW_MAX_MESSAGE_LEN) sekali di awal program. Karena variabel ini muncul dengan referensi dalam fungsi terima (lihat di bawah), ukuran pesan default harus diperbarui setiap siklus. Jika tidak, karena penerimaan pesan yang rusak, nilai buflen akan dipersingkat setiap kali, sampai Anda mulai mendapatkan data yang tidak masuk akal. Dalam contoh, kedua variabel ini biasanya dideklarasikan secara lokal di loop() loop, sehingga ukuran buffer diperbarui secara otomatis, tetapi di sini kita hanya akan mengulangi penetapan nilai yang diinginkan di awal setiap loop.

Dalam prosedur pengaturan, kami membuat pengaturan berikut:

Void setup() ( delay (500); //untuk mematikan tampilan pinMode(16,INPUT_PULLUP); //pin untuk tombol vw_setup(1200); //kecepatan koneksi VirtuWire vw_set_rx_pin(17); //A3 pin penerima VirtualWire. . . . .
Sebelum menerima sesuatu, interval waktu t_time yang telah berlalu sejak penerimaan terakhir diperiksa. Jika melebihi batas yang wajar (misalnya, 48 detik - tiga kali waktu pengulangan pesan dari unit eksternal), maka ini dianggap sebagai hilangnya sensor dan entah bagaimana ditunjukkan pada layar:

Void loop() ( vw_rx_start(); // Siap menerima buflen = VW_MAX_MESSAGE_LEN; // ukuran buffer setiap kali baru jika ((int(millis()) - t_time) > 48000) // jika t_time belum diperbarui lebih lama dari 48 detik (<отображаем прочерк на дисплее>)//end sensor not found if (vw_have_message()) ( //menunggu penerimaan if (vw_get_message(buf, &buflen)) // Jika data diterima ( vw_rx_stop(); //berhenti menerima beberapa saat t_time = milis( ); / /update t_time untuk (byte i=0;i<3;i++) // Получить первые три байта str[i]= buf[i]; str="\0"; if((str=="D")&&(str=="A")&&(str=="T")) { //сигнатура принята //принимаем данные: for (byte i=3;i<7;i++) // извлечь четыре байта аккумулятора str= buf[i]; // упаковать их в строку volt=atoi(str); //преобразовать в целое число volt=(volt/10)-100; //удаляем добавки до 4-х байт batt=float(volt)/55.5; //преобразуем в реальный вид напряжения в вольтах //и пока храним в глобальной переменной for (byte i=7;i<11;i++) // извлечь четыре байта направления str= buf[i]; // упаковать их в строку int w_Dir=atoi(str); //преобразовать в целое число w_Dir=(w_Dir-1000)/10; //возвращаем к исходному виду wDir=lowByte(w_Dir); //младший байт - код Грея <выводим направление на дисплей через оператор case> . . . . .
Koefisien 55,5 - konversi nilai kode ADC menjadi tegangan nyata, nilainya tergantung pada tegangan referensi dan nilai resistor pembagi.

Omong-omong, kode Gray memiliki satu fitur: urutan bit tidak penting di dalamnya, kode mempertahankan semua propertinya untuk permutasi apa pun. Dan karena, saat decoding, kami masih mempertimbangkan setiap kasus secara terpisah di sini, bit dapat dipertimbangkan dalam urutan apa pun dan bahkan bingung saat terhubung. Ini masalah lain jika mereka ingin merampingkan masalah ini - misalnya, membuat array nilai arah ("s", "ss", "sz", "ssz", "z", dll.), dan sebagai gantinya pertimbangan individu masing-masing varian ekstrak sebutan dengan nomor dalam array ini. Kemudian seseorang harus mengubah kode Gray menjadi biner terurut, dan urutan bit akan memainkan peran penting.

Dan akhirnya, kami mengekstrak nilai kecepatan dan menutup semua pernyataan:

Untuk(byte i=19;i<23;i++) // Получить четыре байта частоты str= buf[i]; // упаковать их в строку int wFrq=atoi(str); //преобразовать в целое число wFrq = (wFrq-1000)/10; //удаляем добавки до 4-х байт wFrq=10+0.5*wFrq;//скорость в целом виде с десятыми <отображаем ее на дисплее поразрядно>)//end if str=DAT )//end vw_get_message ) //end vw_have_message(); . . . . .
Di sini 10+0.5*wFrq adalah persamaan kalibrasi. 10 dm/s (yaitu 1,0 meter per detik) adalah ambang awal, dan 0,5 adalah faktor konversi frekuensi ke kecepatan (dalam dm/s). Dengan nilai frekuensi input nol, persamaan ini memberikan 10 dm / s, oleh karena itu, perhatian khusus harus diberikan untuk menampilkan bukan 1 m / s, tetapi nilai nol. Anda dapat mengkalibrasi sensor kecepatan menggunakan salah satu anemometer genggam termurah dan kipas desktop. Jangan mencoba menentukan ambang awal secara eksperimental - akan jauh lebih akurat jika Anda menandai dua atau tiga titik garis lurus kalibrasi kecepatan V dari frekuensi F: V = Vp + K × F pada kecepatan aliran yang berbeda, lalu ambang awal akan ditentukan secara otomatis sebagai nilai Vp (ordinat titik potong garis ini dengan sumbu kecepatan).

Ada satu hal lagi yang harus dilakukan sebelum menutup loop utama. Kami memiliki tegangan baterai, tetapi Anda tidak perlu menampilkannya setiap saat - cukup gunakan ruang. Untuk ini, tombol Kn1 diperlukan - dengan mengkliknya, kami sementara (sampai pembaruan data berikutnya) mengganti garis suhu-kelembaban eksternal dengan nilai tegangan:

If (digitalRead(16)==LOW)( //tombol ditekan<выводим напряжение на дисплей, затирая значение температуры-влажности>)//akhiri penundaan tombol(500); )//akhiri putaran
Saya memiliki tombol, seperti dapat dilihat dari diagram, dengan kontak changeover, tetapi tidak ada yang mencegah saya memasang yang biasa dengan yang penutup, menghubungkannya ke daya melalui resistor. Anda juga dapat menambahkan kedipan simbol pada layar jika tegangan baterai turun di bawah, misalnya, 10 volt, sebagai tanda bahwa sudah waktunya untuk mengubahnya.

Kesimpulannya, tentang sensor cuaca. SHT-75 digunakan sebagai sensor luar ruangan - satu-satunya sensor amatir yang saya temukan yang tidak memerlukan kalibrasi dan menunjukkan nilai nyata suhu dan kelembaban langsung di luar kotak (karenanya harganya mahal).

Perpustakaan untuk menghubungkannya dapat ditemukan.

SHT-75 dirancang dengan cara yang agak bodoh: substrat logam papan menghantarkan panas dengan sangat baik, sehingga harus dikeluarkan sepenuhnya dari kasing. Jika tidak, kehadiran hanya satu pengontrol ATmega328 dengan regulator catu daya dalam wadah tertutup sudah cukup untuk memanaskan sensor beberapa derajat melalui substrat papan bahkan jika kepalanya dipindahkan ke luar. Sirkuit saya dengan sensor angin, dengan arus 20-130 mA (bahkan jika arusnya dapat diabaikan dalam milidetik) memanaskan SHT-75 derajat sebanyak lima derajat, jadi dikeluarkan dan dipasang secara terpisah pada pelat plastik yang mencuat dari kasing ke samping .

Data dari SHT-75 diambil oleh pengontrol yang sama dengan data dari sensor angin dan dikirim dari modul jarak jauh dalam satu paket melalui saluran nirkabel 433 MHz. Mereka juga dikonversi ke string 4-byte untuk pratransmisi.

Untuk mengukur suhu dan kelembaban di dalam ruangan, DHT-22 dangkal dipilih - karena jangkauannya kecil dibandingkan dengan jalan, tidak ada bedanya sensor mana yang digunakan (kecuali, tentu saja, DHT-11, yang seharusnya tidak digunakan sama sekali dalam keadaan apa pun, untuk tujuan yang dimaksudkan, itu tidak dapat dioperasikan). Suhu DHT-22 dikoreksi menurut pengukuran dengan termometer air raksa (mereka benar-benar bertepatan dengan SHT-75!), dan kelembabannya sedikit disesuaikan dengan perbandingan dengan SHT-75. Koreksi dimasukkan tepat sebelum indikasi pada tampilan.

Omong-omong, DHT-22 juga perlu dikeluarkan dari kasing dengan tampilan - jika tidak, pasti akan memanas dan berbohong. Saya memperbaikinya pada dudukan plastik di bagian bawah kasing, pada jarak sepuluh milimeter darinya. Omong-omong, keadaan ini, seperti yang saya duga, adalah salah satu alasan (terlepas dari kurangnya kalibrasi individu) bahwa semua stasiun cuaca rumah tangga bermerek RST dan Oregon tanpa malu-malu terletak pada pembacaan mereka, memiliki penyebaran bahkan dengan diri mereka sendiri (sensor internal dengan satu eksternal) dari dua atau tiga derajat dan kelembaban hingga sepuluh persen.

Barometer tidak menimbulkan masalah, karena hampir semua yang tersedia secara komersial dibuat atas dasar yang sama - chip mikroelektromekanis (MEMS) BMP180 atau modifikasinya. Pengalaman pribadi saya dengan varian berbasis LPS331AP yang kurang umum adalah negatif: perpustakaan untuk itu lebih sulit ditemukan, dan yang terpenting, konflik ditemukan dengan perangkat lain di bus I2C. Pembacaan barometer mungkin harus disesuaikan di lokasi pemasangan - setiap ketinggian 10-12 meter di atas permukaan laut mengurangi tekanan sebesar 1 mm Hg. Seni. Oleh karena itu, nilai tertentu harus dikurangi dari pembacaan (atau ditambahkan) sehingga nilai tekanan sesuai dengan pembacaan stasiun cuaca resmi di daerah tersebut.

Saya tidak memberikan semua program stasiun cuaca secara penuh - mereka agak rumit, dan Anda masih tidak akan dapat mengulangi desain satu lawan satu. Jika ada, ketuk PM.

UPD tanggal 30/06/17. Tenaga surya terpasang. Paket dari sini:
panel surya
pengontrol
baterai
Semua bersama-sama + pengiriman di Moskow dalam waktu 2,5 tahun. Bekerja dengan sempurna.
Metode menarik untuk menghitung daya baterai surya dan baterai, yang ditawarkan oleh konsultan dari situs ini. Contoh perhitungan konsumsi daya 3 W (saya punya jauh lebih sedikit), saya kutip:
“3W kali 24 jam dan dibagi 6 = 12Ah adalah kapasitas baterai minimum
3W dikalikan dengan 24 jam dan dibagi dengan 3 jam = 24W adalah daya minimum baterai surya.
Tidak ada komentar.
Dalam kasus saya, kapasitas pembangkit listrik tenaga surya yang dihasilkan sepuluh kali lebih tinggi dari yang dibutuhkan dalam kondisi cuaca terburuk. Oleh karena itu, di pengontrol sensor, Anda tidak dapat terlalu peduli tentang penghematan energi, dan menerapkan frekuensi pembacaan dan rata-rata yang diperlukan.

UPD tanggal 13/09/18. Selama hampir dua musim beroperasi, kekuatan dan kelemahan stasiun terungkap. Yang lemah adalah, pertama-tama, bahwa siklus pembaruan pembacaan 16 detik (dari empat rangkaian pengukuran), seperti aslinya, terlalu lama. Pemasangan baterai surya dengan baterai penyangga memungkinkan untuk tidak memikirkan penghematan energi dan bermain-main dengan waktu siklus. Akibatnya, siklus diatur ke 8 detik (empat pengukuran dalam dua detik).
Dari peningkatan mekanis, bantalan dorong yang kokoh diperkenalkan di bawah ujung sensor kecepatan (ya, saya diperingatkan tentang kebutuhannya saat itu, tetapi saya tidak tahu bagaimana membuatnya saat itu). Setelah beberapa waktu, sumbu sensor benar-benar memotong dukungan fluoroplastik dan ambang awal meningkat tajam (omong-omong, ini tidak mempengaruhi sensitivitas baling-baling cuaca sama sekali). Oleh karena itu, penyangga diganti dengan bantalan dorong stainless steel, di mana lubang kecil dibuat dengan bor tipis. Saya punya firasat bahwa nanti saya harus menemukan sesuatu yang lain dengan ujungnya, yang, seperti seluruh sumbu, terbuat dari duralumin. Tetapi saya menundanya sampai saat sensor masih harus diperbaiki: cakram laser, yang diambil sebagai dasar desain, menjadi keruh karena matahari dalam dua musim dan mulai retak.

UPD tanggal 06/05/19.
Tentang perubahan sensor (baling-baling cuaca dibiarkan sama). Sensor kecepatan harus diulang karena porosnya yang aus dan karena piringan laser yang sudah tidak dapat digunakan. Desain dasarnya tetap sama, tetapi cakram laser baru dicat dengan cat emas. Solusi untuk ujung sumbu ditemukan dalam bentuk berikut. Pada sumbu duralumin, ceruk dibor tepat di tengah, dan potongan 3 mm dari bagian atas keran Cina dimasukkan di sana pada lem kedua. Bagian atas keran adalah kerucut yang dipusatkan dengan baik dengan sudut sekitar 70-80 derajat, itu juga dipoles dengan amplas nol dan kemudian dengan pasta GOI. Sebagai dasar, saya menggunakan kepala sekrup M3 stainless dengan slot gergaji, di mana lekukan kecil ditandai di tengah dengan bor biasa D = 2 mm. Sekrup ini disekrup langsung ke ceruk di PTFE, digergaji oleh poros sebelum memastikan pemusatan.
Ujung sumbu dilumasi dengan minyak grafit untuk melindungi dari korosi (karena sifat tahan karat dari keran tidak saya ketahui). Setelah beberapa penggilingan, ambang batas awal menurun sedemikian rupa sehingga menjadi tidak mungkin untuk mengukurnya dengan anemometer berpemilik, di mana ambang batasnya sekitar 0,3-0,5 cm / s. Menurut data tidak langsung (dengan membuat garis lurus dari dua titik), ambang 0,3 m/s diterima secara sukarela, meskipun mungkin agak kurang.

Perubahan utama dalam algoritme kalkulasi juga terkait dengan sensor angin, dan menurut saya berguna untuk memasukkan ini ke dalam .


Angin berkisar dari angin sepoi-sepoi hingga badai tiba-tiba dan kencang yang membawa kehancuran dan kematian. Angin terkuat adalah badai. Angin badai ini terbentuk di atas lautan di daerah tropis ketika massa udara yang sangat besar tersedot ke daerah bertekanan rendah. Awan badai sering mengelilingi pusat (atau mata) badai dengan kecepatan lebih cepat daripada kereta api.

Anda mungkin tidak pernah mengalami angin topan, tetapi di mana pun Anda tinggal, Anda mungkin pernah mengalami hari yang tenang dan berangin. Buatlah anemometer, alat paling sederhana untuk mengukur kecepatan angin, dan catat kekuatan angin di daerah Anda pada hari yang berangin.

Anda akan perlu:

Pin kayu tebal
batang kayu tipis
tali dan plumb
secangkir yogurt
pita perekat (tahan air)
pines
karton berwarna
tabung tembaga
lem
gunting

1. Ambil pin kayu tebal dan masukkan dengan kuat ke dalam tabung tembaga. Ini akan menjadi dudukan anemometer.

2. Minta bantuan orang dewasa untuk mengebor lubang melalui rak. Diameter lubang harus sesuai dengan ketebalan salah satu batang tipis. Buat celah di salah satu ujung batang tipis ini. Masukkan ke dalam rak dan kencangkan seperti yang ditunjukkan pada gambar.

3. Potong panah dan fletching dari karton dan kencangkan ke ujung batang tipis.

4. Potong seperempat lingkaran dari karton berwarna dan tempelkan ke panah dengan lakban.

5. Ambil segelas besar yogurt. Rekatkan ke salah satu ujung batang kayu tipis kedua.

6. Minta bantuan orang dewasa untuk mengebor lubang kecil di ujung batang kedua yang lain, lalu sematkan atau paku ke bagian atas tiang. Pastikan batang bebas berputar.

7. Pilih tempat yang cocok untuk observasi outdoor. Masukkan tabung tembaga ke tanah, lalu masukkan tiang ke dalamnya. Perbaiki rak pada posisi yang diinginkan menggunakan paku payung. Pasang rak dengan ketat secara vertikal, gantung garis tegak lurus ke panah (Anda dapat menggunakan mur sebagai garis tegak lurus). Garis tegak lurus harus digantung sejajar dengan rak.

Angin memutar jarum anemometer sehingga menunjuk ke arah dari mana angin bertiup.
Cangkir dan batang yogurt akan naik bersamanya. Semakin kuat angin, semakin tinggi batang penunjuk naik.

Skala Beaufort

Ini adalah skala untuk mengukur kecepatan angin, yang didasarkan pada pengamatan alam. Skala ini ditemukan oleh laksamana Inggris Sir Francis Beaufort hampir 200 tahun yang lalu.

Kecepatan angin pada peta cuaca ditunjukkan dengan jumlah tanda hubung pada ikon kekuatan angin.

Kecepatan angin Karakteristik verbal Tanda-tanda perkiraan kecepatan angin
MS km/jam skor
Beaufort
0,0-1,5 0,0-1,8 0 Tenang Asap mengepul secara vertikal atau hampir vertikal, daun-daun tidak bergerak
0,6-1,7 1,9-5,1 1 Angin yang tenang Arah angin ditentukan oleh asap
1,8-3,3 5,2-11,7 2 Angin sepoi-sepoi Pergerakan angin terasa di wajah, dedaunan berdesir
3,4-5,2 11,8-18,7 3 angin lemah Daun dan cabang tipis pohon terus bergoyang, angin mengibarkan bendera cahaya, laut ditutupi dengan gelombang cahaya terus menerus.
5,3-7,4 18,8-26,6 4 angin sedang Angin menimbulkan debu, menggerakkan cabang-cabang tipis pohon, pada gelombang terpisah kadang-kadang tampak putih, "domba" dengan cepat menghilang
7,5-9,8 26,7-35,3 5 Angin segar Cabang-cabang pohon yang tebal bergoyang; "domba" terlihat di setiap gelombang
9,9-12,4 35,4-44,0 6 Angin kencang Dahan pohon yang tebal bergoyang, kabel telegraf berdengung, "domba" di ombak lebih panjang (5-10 detik)
12,5-15,2 44,1-54,7 7 angin kencang Puncak-puncak pohon bergoyang, cabang-cabang besar menekuk, tidak nyaman melawan angin. Gelombang berbusa di laut
15,3-18,2 54,8-66,0 8 Angin yang sangat kencang Angin mematahkan dahan tipis dan dahan pohon kering, sehingga sulit untuk bergerak
18,3-21,5 66,1-77,5 9 Badai Angin merobohkan cerobong asap dan genteng. Sangat sulit untuk melawan angin.
21,6-25,1 77,6-90,2 10 Badai besar Kerusakan parah, pohon tumbang
25,2-29,0 90,3-104,4 11 badai kekerasan Kehancuran besar: merobohkan tiang telegraf, gerobak
Lebih dari 29.0 Lebih dari 104,4 12 Badai Menghancurkan rumah, menyebabkan kehancuran besar

anemometer baru saya. Anemometernya ternyata tidak kecil, generatornya cakram, diameter ulirnya 0,5 m. Anemometernya tipe horizontal dengan baling-baling berbilah enam. Artikel ini berisi deskripsi terperinci dengan foto dan video

Artikel baru tentang topik + foto dan video - Anemometer android + mikrofon

Akhirnya sampai ke anemometer. Setelah membuat tiga kincir angin, saya masih belum tahu persis angin apa dan berapa banyak yang diberikan kincir angin saya. Sekarang hanya ada satu generator angin yang beroperasi, saya yang paling sukses, meskipun semuanya dirakit "berlutut". Saya kira-kira membayangkan kekuatan angin dan dapat membedakan antara angin 5 m / s dan 10 m / s, tetapi saya masih ingin mengetahui kecepatan angin lebih akurat untuk menentukan kekuatan generator angin.

Selama beberapa hari, dari waktu ke waktu, saya berpikir untuk membuat anemometer dari sesuatu, tetapi sejauh ini tidak ada yang masuk akal yang muncul dari sampah yang tersedia di rumah. Saya menemukan dua motor kecil dari pemutar DVD, tetapi mereka sangat kecil dan sulit untuk membuat bilah untuk poros tipis.

Sebuah kipas mobil menarik perhatian saya, mereka biasanya dipasang di truk. Itulah yang saya menyiksanya. Membongkar dan melepas motor. Saya mematahkan bilah dari baling-baling dan hanya alasnya yang tersisa - bagian tengah, yang diletakkan di poros. Kemudian saya memikirkan bilah apa yang harus dipasang padanya, saya mencoba bagian bawah botol plastik dan kaleng, tetapi saya tidak menyukai semua ini.

Kemudian saya menemukan potongan pipa PVC dengan diameter 5 cm dan panjang 50 cm, saya membuat 4 bilah dari itu, hanya memotong pipa memanjang menjadi dua bagian, dan bagian masing-masing menjadi dua bagian, ternyata 4 pisau. Di pangkalan, yang tersisa dari sekrup asli, saya mengebor 4 lubang untuk memasang bilah, dan juga membuat 4 lubang di bilah. Dia memutar semuanya menjadi baut dan mendapatkan baling-baling empat bilah - savonius (vertikal "serius" pertama).

Nah, kemudian saya menemukan kabel dengan panjang yang dibutuhkan, disambung kabel antena 5 meter dan yang biasa 8 meter. Saya segera menghubungkan kabel untuk mengukur parameter dengan mempertimbangkan panjang kabel, karena data mungkin berbeda jika pengukuran dilakukan pada kabel meter, atau pada 13 m.

Kemudian saya menemukan sepotong tabung logam dengan panjang sekitar 80-90 cm, ditekuk dengan huruf Z dan melilitkan motor. Tabung ini akan menempelkan anemometer ke tiang. Tidak ada yang rumit, Anda dapat menggunakan bahan apa pun yang ada.

Nah, kemudian, saat saya merakit anemometer sepenuhnya, saya memasangnya di sepeda motor saya untuk mengkalibrasinya. Di bawah foto Anda dapat melihat bagaimana hal itu dilakukan, semuanya primitif dan sederhana. Di cermin primata dengan pita listrik, meteran sabun, secara umum, entah bagaimana memperbaiki semuanya untuk membebaskan tangan saya untuk mengendalikan sepeda motor.

Hari musim gugur ini sangat sukses karena hampir tidak ada angin, yang, omong-omong, berfungsi sebagai perakitan cepat anemometer, hari seperti itu tidak boleh hilang. Saya tidak ingin mengemudi di aspal, karena dengan alat yang tidak dapat dipahami di depan sepeda motor, saya akan menarik perhatian pada diri saya sendiri, jadi saya memutuskan untuk naik melalui ladang di sepanjang hutan tanaman.

Saya berkendara bolak-balik dan ke arah yang berbeda dan mencatat pembacaan multimeter di telepon dengan kecepatan yang berbeda. Anemometer dimulai dengan kecepatan 7 km / jam, dan saya secara bertahap meluncur bolak-balik dengan kecepatan yang berbeda mulai dari 10 km / jam dan maksimum 40 km / jam, bisa saja lebih, tetapi jalan tanah sangat tidak rata dan Anda tidak dapat mempercepat banyak.

>

Setelah pokatushek data tersebut ditarik. Multimeter menunjukkan pada 10km/s = 0,06V, pada 20km/jam=0,12V, pada 30km/jam=0,20V, pada 40km/jam=0,30V.

Kemudian, dengan menggunakan kalkulator, saya menghitung pembacaan untuk kecepatan angin menengah.

Volt - kecepatan angin m / s.

Data di atas 11 m/s dihitung dengan menggambar di selembar kertas grafik pertumbuhan tegangan tergantung pada kecepatan angin, yang terus berlanjut hingga 15 m/s. Pada hari yang sama, atau lebih tepatnya di malam hari, saya memasang anemometer di tiang ke generator angin. Dia menurunkan kincir angin dan mengikat anemometer di bawah. Saya sementara menarik pipa ke kawat dan membungkusnya tambahan dengan pita listrik, ternyata kuat. Nah, kemudian saya mengangkat semuanya ke tempatnya dan sekarang ada anemometer di tiang di sebelah generator angin, yang dimulai pada 3 m / s dan secara teratur menunjukkan kecepatan angin.

>

>

Di bawah dalam foto adalah turbin angin yang sudah dinaikkan dengan anemometer tetap. Saya tidak mengambil gambar lebih detail, karena tidak ada yang rumit di sana, dan tidak ada yang perlu diulang. Anemometer dapat dirakit dari apa saja, dari hampir semua motor. Tentu saja, lebih nyaman untuk mengkalibrasi dengan mobil. Ada dan nyaman, dan lebih nyaman, dan speedometer lebih akurat. Tapi saya memutuskan untuk naik sepeda motor, dan sepertinya juga berhasil, saya harap jika speedometernya bohong, maka tidak banyak.

>

Itu saja untuk saat ini, ini adalah versi pertama dari anemometer ini, dan saya rasa bukan yang terakhir. Sementara itu, saya akan menunggu angin dan mencari tahu apa yang diberikan generator angin saya. Nah, saya akan melengkapi artikel ini dengan data-data tersebut. Mungkin ada yang perlu diperbaiki...

Tambahan

Ada angin dan saya menguji anemometer. Pengamatan pertama terhadap kekuatan angin dan pembacaan ammeter generator dengan jelas menunjukkan betapa tidak stabilnya angin. Di bawah sini, karena tiangnya tidak tinggi, itu terutama terdiri dari hembusan pendek, yang durasinya tidak melebihi dua atau tiga detik, dan dalam beberapa detik angin dapat sangat bervariasi.

Sekrup anemometer yang dibongkar bereaksi tajam terhadap setiap hembusan dan perubahan kecepatan angin. Dan sekrup yang dimuat dari generator angin ini masih terlambat dalam reaksi, dan karena itu, data tidak sinkron dalam pembacaan. Hari ini anginnya 3-7 m / s, anemometer benar-benar menangkap beberapa hembusan hingga 10 m / s, tetapi mereka bertahan kurang dari satu detik dan generator angin tidak bisa menanggapinya.

Setelah beberapa waktu pengamatan, beberapa nilai rata-rata kekuatan arus dari generator angin ditarik pada angin tertentu. Sekrup mulai dari 3,5-4 m / s, mengisi daya 0,5A pada 4m/s, 1A pada 5m/s, 2.5A pada 6m/s, 4A pada 7m/s, 5A pada 8m/s. Data ini dirata-rata, karena ammeter adalah stot analog, dan saya bisa salah hingga 0,5A dalam pembacaan arus dari generator angin.

Seharusnya sesuatu seperti ini

Langkah-langkah pembuatan untuk sensor itu sendiri:

Kasing melakukan ini: Saya mengambil sepotong pipa persegi dan memotong jendela di dalamnya sehingga saya dapat memasang isian melaluinya (omong-omong, saya memotong jendela dengan suhu, tetapi saya benar-benar ingin melakukannya bahwa saya bangun dan pergi untuk melihat). Kemudian saya mengelas pelat bagian dalam (pegangan bantalan internal), lalu mengelas bagian bawah (pemegang bantalan bawah). Ketika saya memutuskan untuk membuat bagian atas, saya memutuskan untuk membuat atap bernada - untuk ini saya memotong empat segitiga dan dengan hati-hati meraihnya, dan kemudian merebusnya sepenuhnya dan membuat pelindung runcing. Kemudian dia menjepitnya di catok dan dengan bor 0,5 mm lebih kecil dari diameter bantalan mengebor lubang vertikal di penutup bawah dan di tengah, keduanya untuk bantalan. Sehingga bantalan baja dengan peregangan disesuaikan dengan sapuan. Bantalan cocok seperti seharusnya. Kemudian dia memasukkan paku 100-ku yang sedikit dipoles ke dalamnya, sambil meletakkan mesin cuci plastik dengan 4 slot di tengah jendela. Saya memotong seutas benang di bagian bawah paku dan memasang baling-baling ke atasnya.

Saya membuat baling-baling sebagai berikut: Saya mengelas tiga paku ke mur dengan elektroda dengan deuce, lalu memotongnya dan memotong benang di ujungnya yang saya kencangkan menjadi dua bagian dari bola.

Sebuah pemegang batang heksagonal stainless steel dilas ke tubuh. Kasingnya sendiri dicat dengan enamel putih dua kali, sehingga pasti tidak akan berkarat.

Saya memutuskan untuk tidak menciptakan sepeda, tetapi untuk melakukannya seperti di mouse komputer, ada mesin cuci plastik dengan empat slot pada sumbu rotasi, ketika baling-baling berputar, itu berputar dan mesin cuci berkedip di atas sensor, yang terpasang ke penutup depan dan ketika penutup disekrup, itu seperti sekali sehingga mesin cuci berlubang berputar dan fluks cahaya dari LED ke fototransistor masuk dan keluar. Itu saja ... di sini Anda memiliki impuls, dan mereka dapat dihitung dan memiliki jumlah putaran per detik.

Leddiodno - sensor phototransistor ditarik keluar dari printer, ada seperti dalam jumlah besar.

Pertama dibuat dari bola tenis

Saya harus sedikit memodifikasi perangkat. Pada baling-baling dari bola tenis, ia memulai dengan angin 5m / s. bola dibeli di toko mainan anak-anak dengan diameter 55 mm. Mulai dari 2m/s dan mengukur hingga 22m/s, saya sudah cukup.

Setelah sensor siap. Kami harus membuat elektronik.

Opsi pertama adalah teknologi LUT buatan sendiri + masker hijau dari China, mengering di bawah sinar ultraviolet.

55 di foto adalah putaran per detik. Itu perlu entah bagaimana menerjemahkan ke dalam m / s. Saya berpikir untuk waktu yang lama bagaimana, saya bahkan mendapat dua anemometer, tua dari USSR dan Cina seharga $ 50, tetapi ada masalah dengan verifikasi, karena angin kencang dan tidak bertiup dengan stabil.

Oleh karena itu, saya membuat ini: pada hari libur, Ayah dan saya menemukan 2 km jalan datar di luar kota tanpa mobil, tanpa angin dan menanam pohon di kedua sisi (Ayah sedang mengemudi dan saya duduk di tengah jalan di luar jendela) dan mari kita berkendara bolak-balik. Pertama, saya mengatur isyarat USSR dan anemometer Cina, saya memastikan keduanya menunjukkan hal yang sama dan benar, karena jika Anda membagi kecepatan pada speedometer mobil dengan 3,6, maka Anda mendapatkan angka yang ditunjukkan oleh anemometer dalam m / s. Ayah mengemudi dengan kecepatan yang sama dan instrumen menunjukkan angin yang sama. Ini adalah bagaimana saya menguji perangkat saya. Ayah menambahkan +5 km per jam setiap kali, dan saya menuliskan indikator baru (rpm). Pengukuran dilakukan sebanyak tiga kali. Saat kami berkendara di atas 80 km/jam (22 m/s), anemometer saya tidak bisa lagi berputar dan angka itu membeku, karena ukurannya tidak lebih dari 22 m/s....

Omong-omong, orang Cina muncul hingga 28m / s. Isyarat Uni Soviet hingga 20m/s. Ketika saya menginstalnya di tempat dengan program yang dimodifikasi, saya sekali lagi memeriksa dengan bahasa Cina semuanya datang bersama-sama.

Sekarang sedang dimodifikasi untuk Arduino.

Rencananya adalah untuk memasang ini ke dalam sistem rumah pintar sehingga Anda dapat masuk dan mengatur beban di rumah dari ponsel cerdas Anda, perhatikan suhu di dalam rumah (ini relevan bagi saya, hanya saja kadang-kadang gas dimatikan dalam musim dingin dan bagus untuk melihat berapa suhu) akan ada sensor gas, dan ditambah akan ada tampilan kecepatan angin di dekat rumah.

Video kerja

Hasil kerja untuk musim dingin

s-st --- jam untuk musim dingin
0 m/s --- 511.0
1 m/s --- 475.0
2 m/s --- 386,5
3 m/s --- 321.2
4 m/s --- 219.0
5 m/s --- 131,5
6 m/s --- 63,3
7 m/s --- 32,5
8 m/s --- 15,4
9 m/s --- 9.1
10 m/s --- 5.0
11 m/s --- 3,5
12 m/s --- 2.2
13 m/s --- 1,3
14 m/s --- 0,8
15 m/s --- 0,5
16 m/s --- 0,5
17 m/s --- 0.2
18 m/s --- 0,0
19 m/s --- 0,1


Menurut hasil selama dua musim dingin, saya melihat angin saya tidak kencang dan kincir angin tidak efektif, jadi saya membuat yang kecil dengan bilah 50cm. daya puncak 150 watt. Saya baru saja memastikan bahwa setidaknya satu bola lampu ekonomis bersinar ketika cahaya menghilang.

Sekarang sedikit tentang Arduino.

Saya menemukan diagram mouse di Internet, itu dengan jelas menggambarkan cara kerja sistem saya.

Berdasarkan diagram mouse, saya membuat skema berikut.

Impuls datang dari phototransistor ke Arduino, dan merasakannya sebagai penekanan tombol.

Algoritme programnya adalah sebagai berikut: Kami mempertimbangkan berapa banyak penekanan tombol yang terjadi dalam satu detik, jadi kami memiliki frekuensi rotasi. Untuk mengubah frekuensi ini menjadi m/s. kembali ketika saya melakukannya di Atmel saya membuat algoritma untuk menghitung frekuensi dalam m / s. Itu tampak seperti ini:

ob_per_sec=0; // Variabel di mana frekuensi putaran per detik turun.

int kecepatan_angin=0; // Nilai akan muncul di sini setelah frekuensi diubah menjadi m/s.

int kecepatan_angin_maks=0; // Nilai maksimum pembacaan angin m/s ada di sini.

int kecepatan_angin_2=0; // Jumlah detik sejak program dimulai dengan kecepatan angin 2 m/s.

int kecepatan_angin_3=0; // Jumlah detik sejak program dimulai dengan kecepatan angin 3 m/s.

int kecepatan_angin_4=0; // Jumlah detik sejak program dimulai dengan kecepatan angin 4 m/s.

int kecepatan_angin_5=0; // Jumlah detik sejak program dimulai dengan kecepatan angin 5 m/s.

…………………………………………………………..

int kecepatan_angin_22=0; // Jumlah detik sejak program dimulai dengan kecepatan angin 22 m/s.

if (ob_per_sec >0 && ob_per_sec<4) { speed_wind=2; speed_wind_2++;}

if (ob_per_sec >4 && ob_per_sec<7) { speed_wind=3; speed_wind_3++; }

if (ob_per_sec >7 && ob_per_sec<11) { speed_wind=4; speed_wind_4++; }

if (ob_per_sec >11 && ob_per_sec<15) { speed_wind=5; speed_wind_5++; }

if (ob_per_sec >15 && ob_per_sec<18) { speed_wind=6; speed_wind_6++; }

if (ob_per_sec >18 && ob_per_sec<23) { speed_wind=7; speed_wind_7++; }

if (ob_per_sec >23 && ob_per_sec<27) { speed_wind=8; speed_wind_8++; }

if (ob_per_sec >27 && ob_per_sec<30) { speed_wind=9; speed_wind_9++; }

…………………………………………………………..

if (ob_per_sec >60 && ob_per_sec<67) { speed_wind=22; speed_wind_22++; }

if (speed_wind> speed_wind_max)( speed_wind_max = speed_wind ;)// periksa dan timpa jika nilai maksimum lebih besar dari yang ditulis sebelumnya.

Dan tampilkan nilainya.

Jika perlu, Anda kemudian dapat melihat berapa menit angin bertiup pada kecepatan tertentu, untuk ini Anda perlu menampilkan variabel (dengan indeks kecepatan yang diperlukan) speed_wind_№ (tetapi bagi dengan 60 untuk mendapatkan menit.).

Saya melakukan ini di program saya: ketika tombol tertentu ditekan, semua variabel ditampilkan secara bergantian, dari speed_wind_1 ke speed_wind_22.

Memuat...Memuat...