Isi kandungan:

Lampu Suria yang boleh dicas semula berkuasa XOD: 9 Langkah (dengan Gambar)
Lampu Suria yang boleh dicas semula berkuasa XOD: 9 Langkah (dengan Gambar)

Video: Lampu Suria yang boleh dicas semula berkuasa XOD: 9 Langkah (dengan Gambar)

Video: Lampu Suria yang boleh dicas semula berkuasa XOD: 9 Langkah (dengan Gambar)
Video: Fly drone atas Gunung Jerai nampak orang tengah solat atas puncak. Adakah ia kebetulan atau..... ❗ 2024, November
Anonim
Lampu Suria boleh dicas semula berkuasa XOD
Lampu Suria boleh dicas semula berkuasa XOD

Terdapat lampu taman / jalan suria yang murah yang terdapat di kebanyakan kedai barang rumah dan perkakasan. Tetapi seperti kata pepatah lama, anda biasanya mendapat apa yang anda bayar. Litar pengecasan dan pencahayaan yang biasa mereka gunakan adalah sederhana dan murah, tetapi output cahaya yang anda dapati sangat mengagumkan (dan hampir tidak cukup bagi sesiapa yang menggunakan jalan kaki anda untuk melihat ke mana mereka pergi!)

Ini adalah percubaan saya untuk merancang modul pencahayaan luar grid yang merupakan peningkatan yang ketara, walaupun masih agak murah untuk dibuat. Dengan memberikannya beberapa "otak". XOD.io adalah IDE baru yang serasi dengan platform pengembangan tertanam Arduino, di mana anda boleh "menulis" kod secara grafik. Persekitaran mengubah lakaran grafik anda ke C ++ moden, yang sangat cekap dalam menghasilkan kod padat, dan menghasilkan sumber yang serasi sepenuhnya dengan stok Arduino IDE tanpa memerlukan pergantungan luaran lebih lanjut. Dengan cara itu, mikrokontroler kecil dan murah dengan sumber data dan penyimpanan data yang terhad dapat digunakan untuk menjalankan tugas yang kompleks.

Projek ini menunjukkan bagaimana dua mikrokontroler ATTiny85 yang serasi dengan Arduino dapat digunakan untuk menguruskan keperluan kuasa lampu. Pemproses pertama mengendalikan data persekitaran penginderaan dari perkakasan luaran, dan yang kedua berusaha mendapatkan tenaga paling banyak dari sinar matahari yang dapat dilakukannya pada siang hari, dan kemudian mengawal pencahayaan LED berkuasa tinggi ketika bateri simpanan habis pada waktu malam. Pemproses kedua menyelesaikan tugasnya melalui pelaksanaan kawalan "logik kabur" yang padat. Perisian untuk kedua-dua cip ini dikembangkan secara eksklusif dalam lingkungan XOD.

Langkah 1: Bahan yang Diperlukan

Arduino IDE, versi terbaru, dengan sambungan ATTinyCore dipasang dari pengurus "Boards"

Pengaturcara Sparkfun USBTinyISP ATTiny, 11801 atau halaman produk Sparkfun yang setara

Penukar voltan rendah boleh laras Pololu dengan input penutupan, U1V11A atau halaman produk Pololu yang setara

LED putih atau RGB berkuasa tinggi dengan heatsink, anod biasa, Adafruit 2524 atau halaman produk Adafruit yang setara

Microchip ATTiny85 dalam pakej DIP 8-pin, halaman produk 2 Mouser

Soket IC DIP 8 pin, 2

Kapasitor penyimpanan pukal, 16 v 220 uF

Kapasitor output, 6.3v 47uF

Perintang had semasa, 50 ohm 1/4 watt

Perintang penarik i2c, 4.7k, 2

Perintang pembahagi rasa voltan panel, 1/4 watt, 100k, 470k

Perintang deria semasa, toleransi 10 ohm 1⁄2 watt 1%

Kapasitor pintas, seramik 0.1uF, 2

2 3.7 v 100mAh bateri lithium-ion yang boleh dicas semula, PKCELL LP401 atau setaraf

Jack input palam tong untuk panel, 1

Terminal mini blok papan solder 3 "x3", dan wayar teras pepejal nipis untuk membuat sambungan

Bekalan osiloskop, multimeter, dan bangku hampir pasti diperlukan untuk ujian

Langkah 2: Persediaan Alam Sekitar

Persediaan Alam Sekitar
Persediaan Alam Sekitar

Persekitaran XOD tidak menyokong siri pemproses ATTiny di luar kotak, tetapi menggunakan beberapa perpustakaan pihak ketiga dari semesta Arduino, adalah mudah untuk menambahkan sokongan untuk siri AVR ini. Langkah pertama adalah memasang perpustakaan "ATTinyCore" dari menu lungsur turun "Alat → Papan → Pengurus Dewan" Arduino IDE. Pastikan tetapan seperti yang ditunjukkan dalam gambar yang disertakan betul - ingat bahawa anda harus menekan "Burn bootloader" untuk menukar voltan brownout dan sekering pengaturan kelajuan jam sebelum memuat naik kod apa pun!

Kod sumber untuk perpustakaan ini boleh didapati di:

Perpustakaan lain yang berguna untuk dimiliki dari repositori adalah "FixedPoints", yang merupakan implementasi waktu kompilasi matematik titik tetap untuk pemproses yang disokong Arduino. ATTiny mempunyai SRAM dan memori program yang terhad, dan banyak membantu dengan mengecilkan ukuran lakaran akhir untuk menggunakan bilangan bulat 2 bait untuk penyimpanan data umum, dan bukannya jenis titik terapung, yang memerlukan 4 bait pada AVR. Kelajuan pelaksanaan juga harus ditingkatkan kerana ATTiny tidak mempunyai unit pendaraban perkakasan, apalagi titik apungan perkakasan!

Kod sumber boleh didapati di:

Tutorial mengenai cara membuat, melancarkan, dan menyebarkan lakaran grafik XOD di: https://github.com/Pharap/FixedPointsArduino akan banyak membantu memahami bagaimana fail sumber yang disertakan dibuat.

Langkah 3: Gambaran Keseluruhan Reka Bentuk

Tinjauan Reka Bentuk
Tinjauan Reka Bentuk
Tinjauan Reka Bentuk
Tinjauan Reka Bentuk

Di papan dua prosesor ATTiny85 dihubungkan melalui antara muka i2c, dan digunakan bekerja bersama untuk mengatur penginderaan voltan panel suria, arus yang mengalir ke dalam bateri dari penukar penguat sementara panel diterangi, voltan bateri, dan bateri suhu.

Penukar dorongan adalah modul di luar rak berdasarkan Texas Instruments TPS6120 IC, yang dapat mengambil voltan input serendah 0,5 volt dan meningkatkannya ke mana saja dari 2 volt hingga 5 volt. Inti sensor terdiri daripada beberapa blok berfungsi. Jam induk mula berjalan sebaik sahaja kuasa diterapkan pada penukar rangsangan dari input panel solar. Ini memulakan lakaran, dan yang pertama adalah menentukan sama ada panel cukup terang untuk memberikan arus pengecasan ke bateri.

Voltan panel solar dilewatkan melalui dua penapis digital, dan jika berada di atas ambang tertentu, sistem menentukan bahawa panel itu diterangi dan memasukkan jam induk ke dalam monitor arus. Ini adalah saluran penukar analog ke digital cip, yang dikonfigurasi secara berbeza, yang merasakan voltan merintangi perintang toleransi 10 ohm 1% yang disambung secara bersiri antara output penukar rangsangan dan input bateri. Apabila panel tidak diterangi ATTiny ini akan menghantar isyarat ke ATTiny kedua yang memintanya untuk memantau daya LED dan bukannya mengecas kuasa, dan matikan penukar penguat dan mengasingkan input sehingga bateri tidak menghantar arus keluar keluar melalui panel.

Inti ATTiny kedua adalah di mana sistem pengawal LED dan pemantauan caj bateri dijalankan. Voltan panel, voltan bateri, dan data arus pengisian bateri dikirim ke inti ini untuk diproses melalui rangkaian logik kabur, yang berupaya menghasilkan isyarat PWM yang sesuai untuk diterapkan pada pin SHTDN, sehingga dapat mengawal jumlah arus yang dikirim ke bateri untuk mengecasnya semasa diterangi - bentuk asas penjejakan titik kuasa maksimum (MPPT.) Ia juga menerima isyarat dari teras sensor yang memberitahunya sama ada ia harus menyalakan atau mematikan LED, bergantung pada output hari inti sensor / flip flop malam.

Apabila LED aktif pada waktu malam ini ATTiny memantau data voltan bateri yang dihantar kepadanya dari rakannya, dan sensor suhu on-chip sendiri, untuk mendapatkan anggaran kasar mengenai berapa banyak daya yang didorong ke dalam LED (voltan bateri menurun dan suhu cip meningkat dengan arus dikeluarkan dari pinnya.) Jaringan logik kabur yang berkaitan dengan patch LED PWM cuba membuat keputusan mengenai berapa banyak daya bateri yang masih ada, dan menurunkan intensiti LED ketika bateri habis.

Langkah 4: Membuat Patch Tersuai Dari Perpustakaan Teras XOD

Membuat Patch Tersuai Dari Perpustakaan Teras XOD
Membuat Patch Tersuai Dari Perpustakaan Teras XOD
Membuat Patch Tersuai Dari Perpustakaan Teras XOD
Membuat Patch Tersuai Dari Perpustakaan Teras XOD

Beberapa node patch khusus digunakan untuk reka bentuk ini, beberapa di antaranya dapat dengan mudah dibina sepenuhnya dari simpul XOD yang disertakan, dan beberapa yang dilaksanakan di C ++.

Yang pertama dari dua node tampalan tersuai dalam gambar pelaksanaan penapis bergerak bergerak eksponensial. Ini adalah penapis digital low-overhead low-overhead yang digunakan secara bersiri dalam lakaran, sekali untuk menyaring voltan panel suria yang masuk untuk teras logik, dan sekali lagi untuk memberi makan pencetus yang menentukan pencahayaan ambien jangka panjang. Lihat entri Wikipedia mengenai pelicinan eksponensial.

Struktur simpul dalam gambar hanyalah gambaran grafik langsung fungsi pemindahan dalam artikel, dihubungkan bersama menggunakan pautan dari input yang sesuai ke output. Terdapat node penangguhan dari perpustakaan yang membolehkan gelung maklum balas dibuat (XOD akan memberi amaran kepada anda jika anda membuat gelung maklum balas tanpa memasukkan kelewatan gelung, seperti yang dijelaskan dalam model pelaksanaan XOD.) Dengan perincian itu, patch berfungsi dengan baik, itu mudah.

Node patch khusus kedua adalah variasi pada flip-flop stok yang disertakan dengan XOD, yang diberi makan dengan voltan panel yang ditapis. Ia tetap tinggi atau rendah bergantung pada sama ada isyarat input berada di atas atau di bawah ambang tertentu. Nod cast digunakan untuk menukar nilai output Boolean ke jenis data nadi untuk mencetuskan flip flop, ketika keadaan beralih dari rendah ke tinggi. Reka bentuk nod patch ini semestinya agak jelas dari tangkapan skrin.

Langkah 5: Membuat Patch Tersuai Menggunakan C ++

Membuat Patch Custom Menggunakan C ++
Membuat Patch Custom Menggunakan C ++

Untuk keperluan khas di mana fungsi simpul yang diperlukan terlalu rumit untuk menggambarkan grafik dengan mudah, atau yang bergantung pada perpustakaan Arduino yang bukan asli dari persekitaran Arduino stok, XOD memudahkan mereka yang mempunyai pengetahuan C / C ++ untuk menulis potongan saiz gigitan kod yang kemudiannya dapat disatukan ke dalam tambalan sama seperti nod pengguna atau stok lain yang dibuat oleh pengguna. Memilih "buat tambalan baru" dari menu fail membuat lembaran kosong untuk digunakan, dan node input dan output dapat diseret dari bahagian "node" perpustakaan inti. Kemudian simpul "not-implement-in-xod" dapat diseret ke dalam, dan apabila diklik, ia akan memunculkan editor teks di mana fungsi yang diperlukan dapat dilaksanakan dalam C ++. Cara menangani keadaan dalaman dan mengakses port input dan output dari kod C ++ dibahas di sini.

Sebagai contoh pelaksanaan tampalan khusus di C ++, dua tambalan khusus lagi untuk teras pemandu digunakan untuk mengeluarkan anggaran voltan bekalan dan suhu teras teras pemacu. Bersama dengan rangkaian kaburnya, ini memungkinkan anggaran kasar sisa daya bateri yang tersedia untuk menghidupkan LED ketika gelap.

Patch sensor suhu juga diberi makan dengan output sensor voltan bekalan untuk mendapatkan anggaran yang lebih baik - suhu teras penginderaan memungkinkan kita memperoleh perkiraan kasar berapa banyak daya yang dibakar dalam LED, dan digabungkan dengan bacaan voltan bekalan ketika kehabisan bateri anggaran lebih lanjut mengenai berapa banyak daya bateri yang tinggal. Tidak semestinya terlalu tepat; jika inti "tahu" bahawa LED menarik banyak arus tetapi voltan bateri cepat jatuh, mungkin selamat untuk mengatakan bahawa kuasa bateri tidak akan bertahan lebih lama, dan inilah masanya untuk mematikan lampu.

Langkah 6: Pembinaan

Pembinaan
Pembinaan
Pembinaan
Pembinaan
Pembinaan
Pembinaan

Saya membina projek di atas sekeping kecil papan prototaip dengan tembaga pad untuk bahagian lubang. Menggunakan soket untuk IC banyak membantu pengaturcaraan / pengubahsuaian / ujian; USBTiny ISP dari Sparkfun mempunyai soket yang serupa di papannya sehingga pengaturcaraan kedua-dua cip itu hanya terdiri daripada memasukkan pengaturcara ke port USB PC, memuat naik kod XOD yang diubah dari fail.ino Arduino yang disertakan dengan tetapan papan dan pengaturcara yang sesuai, dan kemudian perlahan-lahan mengeluarkan cip dari soket programmer dan memasukkannya ke soket protoboard.

Modul penukar boost berasaskan Pololu TPS6120 hadir pada papan riser yang disolder ke protoboard pada header pin, jadi mungkin untuk menjimatkan ruang dengan memasang beberapa komponen di bawahnya. Pada prototaip saya, saya meletakkan dua perintang penarik 4.7k di bawahnya. Ini diperlukan agar bas i2c antara cip dapat beroperasi dengan betul - komunikasi tidak akan berfungsi dengan betul tanpa mereka! Di sebelah kanan papan terdapat soket input untuk palam panel solar dan kapasitor simpanan input. Sebaiknya cuba menyambungkan soket dan penutup ini secara langsung bersama-sama melalui "larian" solder, bukan wayar penyambung, untuk mendapatkan rintangan serendah mungkin. Larian solder pepejal kemudian digunakan untuk menyambungkan terminal positif kapasitor penyimpanan secara langsung ke terminal voltan masukan modul penguat, dan pin ground modul peningkatan terus ke pin ground jack.

Di sebelah kanan dan kiri soket untuk kedua ATTinys adalah kapasitor despike / deglitching 0.1uF. Komponen-komponen ini juga penting untuk tidak ketinggalan, dan harus dihubungkan ke pin IC dan pin ground melalui sesingkat dan mengarahkan jalan mungkin. Perintang deria arus 10 ohm berada di sebelah kiri, ini disambungkan sejajar dengan output dari penukar rangsangan dan setiap sisi disambungkan ke pin input teras sensor - pin ini dipasang untuk berfungsi sebagai ADC pembeza untuk mengukur secara tidak langsung arus ke dalam bateri. Sambungan antara pin IC untuk bas i2c dan ke pin penutup penukar dorong, dan lain-lain boleh dibuat dengan menggunakan wayar cangkuk di bahagian bawah protoboard, wayar penyambung teras pepejal yang sangat nipis sangat sesuai untuk ini. Ia menjadikan perubahan lebih mudah dan juga kelihatan lebih kemas daripada menjalankan jumper di antara lubang di bahagian atas.

Modul LED yang saya gunakan adalah unit RGB tiga warna, rancangan saya adalah agar ketiga-tiga LED aktif untuk menghasilkan warna putih ketika bateri hampir penuh, dan perlahan-lahan memudar LED biru menjadi kuning kerana pengisian habis. Tetapi ciri ini masih belum dilaksanakan. LED putih tunggal dengan satu perintang pengehad arus akan berfungsi juga.

Langkah 7: Ujian, Bahagian 1

Ujian, Bahagian 1
Ujian, Bahagian 1

Setelah memprogram kedua-dua IC ATTiny dengan fail sketsa yang disertakan melalui pengaturcara USB dari persekitaran Arduino, ia membantu menguji bahawa kedua-dua teras pada prototaip berfungsi dengan baik sebelum cuba mengecas bateri dari panel surya. Sebaik-baiknya ini memerlukan bekalan kuasa asas, multimeter, dan bekalan kuasa bangku.

Perkara pertama yang perlu diperiksa adalah bahawa tidak ada litar pintas di mana-mana papan sebelum memasang IC, bateri, dan panel ke soket mereka untuk mengelakkan kemungkinan kerosakan! Cara termudah untuk melakukannya adalah dengan menggunakan bekalan kuasa bangku yang dapat membatasi arus keluarannya ke nilai yang selamat sekiranya berlaku. Saya menggunakan bekalan bangku saya yang ditetapkan pada had 3 volt dan 100 mA yang disambungkan ke terminal soket input panel solar ke petunjuk bekalan kuasa positif dan negatif. Dengan tidak ada yang lain selain komponen pasif yang dipasang, pada asasnya semestinya tidak ada undian semasa yang didaftarkan pada monitor bekalan kuasa semasa untuk dibicarakan. Sekiranya terdapat aliran arus yang ketara, atau bekalan masuk ke had semasa, ada yang tidak kena dan papan harus diperiksa untuk memastikan tidak ada sambungan atau kapasitor yang tidak betul dengan kekutuban terbalik.

Langkah seterusnya adalah memastikan penukar rangsangan berfungsi dengan betul. Terdapat skru-potensiometer di papan, dengan bekalan kuasa masih tersambung dan empat pin penukar disambungkan dengan tepat potensiometer harus dipusingkan dengan hujung pemutar skru kecil sehingga voltan di terminal output modul membaca sekitar 3,8 hingga 3,9 volt. Nilai DC ini tidak akan berubah semasa operasi, teras pemandu akan mengawal voltan keluaran rata-rata melalui denyutan pin penutup modul.

Langkah 8: Ujian, Bahagian 2

Ujian, Bahagian 2
Ujian, Bahagian 2
Ujian, Bahagian 2
Ujian, Bahagian 2

Perkara seterusnya yang perlu diperiksa adalah bahawa komunikasi i2c berfungsi dengan baik, dengan papan yang kehabisan kuasa bangku, teras teras sensor dapat dipasang. Pada osiloskop mesti ada isyarat berdenyut pada kedua pin 5 dan pin 7 cip fizikal, pemacu i2c pada cip ini cuba menghantar data kepada rakannya. Setelah mematikan inti pemacu dapat dipasang dan sambungan diperiksa dengan osiloskop sekali lagi, harus ada urutan denyut yang lebih besar yang dapat dilihat pada kedua-dua baris. Ini bermaksud bahawa kerepek berkomunikasi dengan betul.

Membantu bateri sedikit dicas untuk ujian penuh terakhir. Bekalan bangku simpanan juga dapat digunakan untuk mencapai ini, dengan had semasa ditetapkan sekitar 50 mA dan voltan tetap pada 3.8 volt, membiarkan bateri LiPo disambungkan secara langsung selama beberapa minit.

Langkah terakhir adalah menguji sistem penuh - dengan semua yang tersambung jika panel ditutup selama sepuluh atau 15 saat, cahaya harus dipacu melalui output PWM teras pemacu. Dengan panel di bawah sinar matahari yang terang, bateri harus dicas dari output penukar penguat. Rangkaian logik kabur dapat diperiksa secara tidak langsung untuk melihat apakah ia berfungsi dengan betul dengan melihat garis PWM yang menggerakkan pin penutupan penukar penguat; ketika pencahayaan meningkat dengan bateri dengan keadaan daya rendah, lebar nadi semakin meningkat, menunjukkan bahawa apabila semakin banyak tenaga yang tersedia dari cahaya matahari, teras pemandu memberi isyarat bahawa lebih banyak kuasa akan dihantar ke dalam bateri!

Langkah 9: Lampiran pada Logik Fuzzy

Lampiran pada Logik Fuzzy
Lampiran pada Logik Fuzzy

Logik kabur adalah teknik pembelajaran mesin yang dapat digunakan dalam pengendalian sistem perkakasan di mana terdapat ketidakpastian dalam banyak parameter sistem yang dikendalikan, membuat penyelesaian input untuk output output yang jelas untuk tujuan yang sukar ditulis secara matematik. Ini dicapai dengan menggunakan nilai-nilai logik yang berada di antara 0 (false) dan 1 (true), menyatakan ketidakpastian dalam nilai lebih seperti cara manusia ("kebanyakan benar" atau "tidak benar-benar benar") dan membiarkan kawasan kelabu antara pernyataan yang 100% benar dan 100% salah. Cara ini dicapai adalah dengan mengambil sampel pertama dari pemboleh ubah input di mana keputusan perlu didasarkan dan "fuzzifying" mereka.

Inti sistem logik kabur adalah "memori asosiasi kabur." Ini mengingatkan pada matriks, di mana dalam litar pengecasan bateri, set nilai 3x3 antara 0 dan 1 disimpan. Nilai-nilai dalam matriks dapat dihubungkan secara kasar dengan bagaimana manusia berfikir tentang apa faktor PWM yang mengawal pin SHTDN dari penukar rangsangan, bergantung pada bagaimana fungsi keanggotaan di atas memenuhi syarat satu set input. Sebagai contoh jika voltan input panel tinggi, tetapi arus yang ditarik ke dalam bateri rendah, ini mungkin bermaksud lebih banyak daya dapat ditarik dan tetapan PWM tidak optimum dan harus ditingkatkan. Sebaliknya, jika voltan panel rendah tetapi pengecas masih berusaha mendorong arus yang besar ke dalam daya bateri juga akan sia-sia, jadi lebih baik menurunkan isyarat PWM ke penukar rangsangan. Setelah isyarat input "kabur" menjadi satu set kabur, mereka dikalikan dengan nilai-nilai ini, mirip dengan cara vektor dikalikan dengan matriks, untuk menghasilkan satu set berubah yang mewakili seberapa besar sel "pengetahuan" yang terkandung matriks harus difaktorkan ke dalam fungsi gabungan akhir.

Menggunakan simpul "not-implement-in-xod" yang membolehkan nod XOD yang melaksanakan fungsi khusus terlalu rumit sehingga tidak wajar dibuat dari blok bangunan stok, dan sedikit C ++ gaya Arduino, memori bersekutu, fungsi pemberat, dan " fuzzifier "serupa dengan blok yang dijelaskan dalam rujukan ini: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940 mudah dibuat, dan jauh lebih mudah untuk dicuba.

Disyorkan: