Perangkat penyimpanan otomatis untuk baterai mobil di PIC. Pengisi daya mikrokontroler universal Pengisi daya ATmega8

Yang dirakit untuk pengujian dalam kasus dari drive cd. Ternyata perangkat melakukan pekerjaan yang sangat baik dengan fungsinya, mengisi dan mengeluarkan hampir semua baterai, sambil menghitung kapasitasnya. Dengan siklus pengisian dan pengosongan bergantian, baterai dapat dipulihkan. Dalam kompetisi ide baru-baru ini, disarankan untuk membuat versi yang lebih manusiawi.

Pengisi daya universal baru ini ditenagai melalui USB dari pengisi daya smartphone atau tablet. Hal ini juga dapat diaktifkan dari port USB komputer. Papan memiliki micro-usb yang terpasang, tetapi opsi lain apa pun dapat dipasang. Ada juga jack untuk steker DC standar; ketika daya disuplai melaluinya dengan tegangan lebih dari 5 volt, jumper dilepas di papan dan bagian logika mulai diberi daya melalui stabilizer LDO. Saat diberi daya dari 5 volt, jumper harus dipasang (itu hanya membuat arus pendek input dan output dari stabilizer +5 volt).

Perangkat ditempatkan pada papan 10 * 12 cm. Indikator LCD 16 * 2 dengan i2c-converter dipasang pada tiang pemasangan. Papan memiliki terminal sekrup untuk menghubungkan baterai yang dapat diisi ulang dan beban untuk pelepasan, yang dapat berupa bola lampu atau resistor semen 5W yang kuat dengan resistansi, misalnya, 4,7 ohm. Resistansi resistor ini dihitung dengan rumus R = U/I, dimana U adalah tegangan baterai dan I adalah arus pelepasan awal yang diinginkan. Jika pengosongan tidak direncanakan, maka beban dapat dibiarkan tidak tersambung. Manajemen dilakukan dengan menggunakan tiga tombol. Informasi ditampilkan di layar, selain itu, pager kecil tanpa generator built-in dan LED digunakan. Semakin terang LED menyala, semakin lebar lebar pulsa dalam mode pengisian daya.

Sirkuit pengisi daya sama seperti pada versi uji asli dengan sedikit perubahan. Transistor efek medan harus dengan level logika, Anda dapat menemukannya di papan komputer. Transistor driver bidang saluran-p harus arus, misalnya - SS8050 dan SS8550. Induktor konverter harus mampu menahan arus yang sesuai.


klik untuk memperbesar
Mode operasi pengisi daya universal yang cerdas:

  • Menu utama. itu memilih parameter pengisian, pemakaian, kalibrasi voltmeter
  • mengenakan biaya. parameter pengisian saat ini dan yang ditetapkan ditampilkan di layar, dimungkinkan untuk mengubah parameter secara langsung selama proses pengisian. ada batasan tegangan dan arus dengan nilai yang ditentukan menggunakan PWM. muatan selesai ketika tegangan yang ditentukan tercapai dan arus muatan berkurang di bawah yang ditentukan.
  • memulangkan. kontrol mirip dengan biaya. debit berakhir ketika tegangan atau arus turun di bawah yang ditentukan.
Dalam prosesnya, miliampere-jam dihitung, mereka juga ditampilkan di akhir. Berdasarkan nilai yang dihitung, Anda dapat menentukan tingkat kehilangan kapasitas baterai, mis. betapa usangnya itu. Jika baterai dengan kapasitas 1A / jam mengambil 500mA / jam atau mengambil 1A / jam, dan memberikan 500mA / jam, maka sumber dayanya telah habis secara signifikan.

Kalibrasi pengukuran arus selama pengisian dan pengosongan dilakukan dengan menggunakan resistor pemangkasan sesuai dengan indikasi ammeter teladan. Kalibrasi voltmeter dilakukan dengan cara yang sama. Konektor ISP disediakan di papan untuk mem-flash mikrokontroler.

Versi perangkat ini cukup cocok untuk digunakan, tetapi banyak yang dapat ditingkatkan. Papan dapat dibuat lebih kompak dengan menempatkan dudukan baterai langsung di atasnya. Mungkin akan ada versi lain dari perangkat, jika ada minat di dalamnya. Anda dapat mengungkapkan minat ini dengan meletakkan suka di jejaring sosial mana pun dengan mengklik tombol di bawah artikel. Semakin banyak minat, semakin banyak insentif untuk mengerjakan proyek ini, informasi akan ditambahkan.

Dengan keinginan, tambahan, dan klarifikasi - Anda dipersilakan di komentar.

PCB: Segera hadir
firmware: segera

Opsi "Rakyat" untuk pengisian daya yang hampir universal di Aliexpress: Lii-100.

Sedikit modifikasi dari pengisi daya universal, yang memungkinkan Anda untuk mengatur arus pelepasan. Awalnya, itu hanya ditentukan oleh resistansi resistor beban. Dengan modifikasi ini, arus dapat disesuaikan dalam nilai ini, yaitu. arus maksimum ditentukan oleh resistor beban, tetapi yang lebih rendah dapat diatur.

Penyempurnaan dapat dilakukan dengan pemasangan di permukaan atau di papan kecil. Seiring dengan itu, beberapa sinyal berubah. Jadi, sinyal pengisian PWM (frekuensi sekitar 66 kHz) sekarang diambil dari OC1A, pelepasan PWM - dari OC1B, suara - dari OC2. Untuk melakukan ini, di papan, Anda harus membuang dua resistor (menuju OC1A dan OC2) dan memutuskan PB0 yang tidak digunakan. Perubahan dalam diagram ditunjukkan dengan warna kuning.

Penguat operasional dapat diterapkan dengan cara yang sama seperti untuk mengukur arus di bagian utama rangkaian. Kami tidak menemukan MCP6002, TLC2272 diinstal sebagai gantinya. Penyesuaian arus pelepasan bekerja sama seperti pada IMAX asli. Dalam hal ini, tidak hanya resistor beban yang akan memanas, tetapi juga pengontrol medan Q1.

Karena untuk seluruh waktu penggunaan perangkat, kami menyalakannya secara eksklusif dari USB, firmware dioptimalkan untuk tegangan output tidak lebih dari 5 volt, untuk hampir semua baterai "bulat" ini sudah cukup: Anda dapat mengisi dan mengeluarkan satu kaleng lithium atau dua baterai nikel yang dihubungkan secara seri, arus maksimum - 2 ampere.

Pengukur frekuensi pada AT90S2313

Penghitung frekuensi virtual adalah "set" program PC dan alat pengukur sederhana, yang terhubung ke port COM komputer.Instrumen virtual memungkinkan Anda untuk mengukur frekuensi, periode, interval waktu, dan menghitung pulsa.

Detail:http://home.skif.net/~yukol/FMrus.htm

Saya sarankan merakit desain sederhana yang tidak memerlukan konfigurasi dan yang terpenting berhasil! Mikrokontroler diprogramprogrammer PonyProg - programmer yang sangat baik, sederhana, berbagai mikrokontroler yang dapat diprogram,bekerja di bawah Windows, antarmuka Rusia.


Majalah radio N1 2002 Untuk baterai Ni-Cd. Memungkinkan Anda untuk mengisi 4 baterai.



Penghitung frekuensi pada Gambar 16F84A

Spesifikasi pengukur frekuensi:

Frekuensi terukur maksimum ............... 30 MHz;

Resolusi maksimum dari frekuensi yang diukur .. .10 Hz.

Sensitivitas masukan .................. 250 mV;

Tegangan suplai ......................... 8 ... 12 V:

Konsumsi arus ............................ 35 mA


Detail, firmware:http://cadcamlab.ru


Stasiun solder di Atmega 8


Pergantian besi solder dan pengering rambut dilakukan oleh sakelar PC. Pengering rambut dikendalikan oleh thyristor, karena Pengering rambut 110v bukan katoda dioda R1 ke V. 6.


Detail, firmware: http://radiokot.ru/forum


Pengukur kapasitansi digital tanpa menyolder dari sirkuit

Deskripsi diberikan di majalah "Radio" No. 6 2009. Struktur dirakit pada AT90S2313, tanpa perubahan pada firmware yang digunakan Tiny2313. Di Pon'ka saya memasang kotak centang untuk SUT1, CKSEL1, CKSEL0, sisanya kosong. Saya tidak menginstal MAX631, itu mahal bagi kami, saya memutuskan untuk menyalakannya dari catu daya melalui stabilizer 7805, R29, R32, R33 meletakkannya di catu daya plus. Selain pengukur kapasitansi, probe dipasang dalam kasing untuk menguji transistor tanpa penyolderan dan generator sinyal RF LF.



Pengukur semikonduktor berdasarkan ATmega8

Perangkat dapat:

Tentukan kabel semikonduktor;
- menentukan jenis dan strukturnya;
- mengukur parameter statis.
Mengukur dioda, transistor bipolar, transistor efek medan JFET dan MOS, resistor, kapasitor.


Meteran dibuat dalam kasus yang sama dengan meteran FCL, indikator dialihkan antar instrumen dengan sakelar PC.

Pengukur frekuensi, kapasitansi dan induktansi meter - FCL-meter

Perangkat yang dijelaskan di bawah ini memungkinkan untuk mengukur frekuensi getaran listrik, serta kapasitansi dan induktansi komponen elektronik dengan akurasi tinggi, dalam rentang yang luas. Desainnya memiliki dimensi, berat, dan konsumsi energi yang minimal.

Spesifikasi:

Tegangan suplai, V: 6 ... 15

Arus konsumsi, mA: 14 ... 17

Batas pengukuran:

F1, MHz 0,01 ... 65 **

F2, MHz 10 ... 950

Dari 0,01 pF ... 0,5 F

L 0,001 H ... 5 H


Diagram kepala jarak jauh


Keterangan lebih lanjut: http://ru3ga.qrz.ru/PRIB/fcl.shtml


Miniatur voltmeter berbasis mikrokontroler ATmega8L


Di sini kami mempertimbangkan desain voltmeter hanya pada satu mikrokontroler ATmega8L dan indikator dari termometer medis elektronik. Kisaran tegangan DC terukur adalah ± 50 V. Sebagai fungsi tambahan, mode pemeriksaan suara diterapkan untuk memeriksa integritas kabel, lampu pijar. Perangkat secara otomatis masuk ke mode siaga saat tidak ada pengukuran. Mikrokontroler ditenagai oleh dua sel alkaline mini (baterai untuk jam tangan), saya mengatur 1 sel ke 3v. Tidak perlu sering mengganti baterai: konsumsi arus dalam mode aktif hanya 330 A, dalam mode siaga - kurang dari 300 nA. Karena desain dan kemampuannya yang mini, perangkat ini berguna dan praktis. Papan tidak masuk ke dalam kotak termometer, dan saya membuatnya dari flammaster. Dia membuat papannya sendiri, resistor R5-R7 dipasang secara vetikal di bus. VADZZ membantu membuat firmware dari sumbernya berkat dia. Pin indikator dari kiri ke kanan, pin di bagian bawah dan menghadap Anda.

Skema (untuk diagram ukuran penuh, simpan gambar ke komputer Anda).

Untuk lebih jelasnya lihat: http://www.rlocman.ru/shem/schematics.html?di=63917

Memori dengan fungsi pengukuran kapasitansi

Saya ingin mengukur kapasitas baterai, meteran impor cukup mahal, saya menemukan sirkuit yang menarik dan merakitnya. Ini berfungsi dengan baik, mengisi daya, mengukur, tetapi dengan presisi apa saya tidak bisa mengatakannya - tidak ada standar. Saya mengukur akumulator dari perusahaan yang cukup baik 2700 ma / jam - saya bermaksud 2000. Baterai untuk mainan 700 ma / jam -350; jauh lebih menguntungkan daripada baterai.


Perangkat ini dirancang untuk mengisi baterai NiMH dan mengontrol kapasitasnya. Beralih antara mode pengisian / pengosongan dilakukan dengan tombol SA1. Mode operasi ditunjukkan oleh LED dan titik desimal dari dua digit pertama dari tampilan tujuh segmen.
Segera setelah menyalakan daya, perangkat masuk ke mode pengisian daya. Indikator menunjukkan waktu pengisian. Setelah berakhirnya periode waktu yang diprogram, pengisian daya akan berhenti. Akhir muatan (dan debitnya sama) dibuktikan dengan titik nyala dari debit keempat. Arus pengisian didefinisikan sebagai C / 10 di mana C adalah kapasitas baterai, diatur oleh pemangkas R14.
Prinsip pengoperasian meteran didasarkan pada penghitungan waktu di mana tegangan baterai akan turun menjadi 1,1 V. Arus pelepasan harus sama dengan 450 ma, diatur ke R16. Untuk mengukur kapasitas, Anda perlu memasukkan baterai ke dalam kompartemen pengosongan dan memulai proses dengan menekan tombol! Perangkat hanya dapat mengeluarkan satu baterai.

Keterangan lebih lanjut:http://cxem.net

Kompor Radio Ham Universal

Kompor untuk menyolder bagian SMD memiliki 4 mode yang dapat diprogram.

Diagram blok kontrol (untuk diagram format lengkap, simpan gambar ke komputer Anda).


Catu daya dan kontrol pemanas


Saya merakit struktur ini untuk mengontrol stasiun solder IR. Mungkin suatu hari nanti saya akan mengelola kompor. Terjadi masalah saat menghidupkan genset, memasang kapasitor 22 pF dari pin 7, 8 ke ground, dan mulai menstarter secara normal. Semua mode berfungsi normal, memuat 250 W dengan pemanas keramik.

Keterangan lebih lanjut: http://radiokot.ru/lab/hardwork/11/

Sementara tidak ada kompor, saya membuat pemanas bawah ini, untuk papan kecil:

Pemanas 250 W, diameter 12 cm, dikirim dari Inggris, dibeli di EBAY.


Stasiun solder digital berdasarkan PIC16F88x / PIC16F87x (a)

Stasiun solder dengan dua besi solder dan pengering rambut yang beroperasi secara bersamaan. Anda dapat menggunakan MCU yang berbeda (PIC16F886 / PIC16F887, PIC16F876 / PIC16F877, PIC16F876a / PIC16F877a). Layarnya dari Nokia 1100 (1110). Kecepatan turbin pengering rambut dikontrol secara elektronik, dan sakelar buluh yang terpasang pada pengering rambut juga terlibat. Dalam versi penulis, catu daya berdenyut digunakan, saya menggunakan catu daya transformator. Saya semua menyukai stasiun ini, tetapi dengan besi solder saya: 60W, 24V, dengan pemanas keramik, kenaikan besar dan fluktuasi suhu. Pada saat yang sama, setrika solder dengan daya lebih rendah, dengan pemanas nikrom, memiliki lebih sedikit fluktuasi. Pada saat yang sama, besi solder saya, dengan stasiun solder yang dijelaskan di atas dari Mikhi-Pskov, dengan firmware dari Volu, mempertahankan suhu dengan akurasi hingga derajat tertentu. Oleh karena itu, diperlukan algoritma pemeliharaan suhu dan pemanasan yang baik. Sebagai percobaan, saya membuat pengatur PWM pada timer, memasok tegangan kontrol dari output penguat termokopel, terputus, dihidupkan dari mikrokontroler, Fluktuasi suhu langsung turun hingga beberapa derajat, ini menegaskan bahwa algoritma kontrol yang benar adalah diperlukan. PWM eksternal tentu saja pornografi di hadapan mikrokontroler, tetapi firmware yang bagus belum ditulis. Saya memesan besi solder lain jika tidak ada stabilisasi yang baik dengannya, saya akan melanjutkan eksperimen saya dengan kontrol PWM eksternal, atau mungkin firmware yang bagus akan muncul. Stasiun dirakit pada 4 papan, terhubung satu sama lain pada konektor.

Diagram bagian digital perangkat ditunjukkan pada gambar, untuk kejelasan, dua MC ditampilkan: IC1 - PIC16F887, IC1 (*) - PIC16F876. MCU lain terhubung dengan cara yang sama, ke port yang sesuai.

Untuk mengubah kontras, Anda perlu menemukan 67 byte, nilainya adalah "0x80", untuk permulaan Anda dapat meletakkan "0x90". Nilai harus dari "0x80" hingga "0x9F".

Mengenai tampilan 1110i (teks yang ditampilkan dicerminkan), jika bukan China, tetapi yang asli, buka EEPROM, cari 75 byte, ubah dari A0 ke A1.

Di Internet ada sejumlah besar sirkuit pengisi daya (pengisi daya) untuk aki mobil. Dari yang paling sederhana hingga yang paling kompleks. Dalam kasus kami, kami akan berbicara tentang memori yang dibuat pada mikrokontroler Atmega8 (MK). Penggunaan MK, berbeda dengan rangkaian pada transistor, memungkinkan Anda untuk mengimplementasikan fungsionalitas yang sangat kaya untuk memori. Misalnya, di pengisi daya ini, saya memutuskan untuk menerapkan fungsi-fungsi berikut.

1. Mudah dioperasikan. Satu encoder sudah cukup. Berputar searah jarum jam - pengisian daya dihidupkan. Memutar searah jarum jam atau berlawanan arah jarum jam memilih arus pengisian. Encoder memutuskan untuk memilih dengan ketukan. Dengan mengkliknya, Anda dapat masuk ke menu dengan pengaturan untuk fungsi tambahan.

2. Arus pengisian akan mencapai 5A. Meskipun saya memiliki baterai 85A / jam di mobil saya, 5A sudah cukup untuk saya mengisi daya, hanya perlu sedikit lebih lama untuk mengisi daya. Namun, jika perlu, dimungkinkan untuk meningkatkan arus pengisian ke 10A tanpa perubahan global dan mem-flash ulang MK.

3. Dimungkinkan untuk mengubah arus pengisian dalam langkah-langkah hingga 0,1A. Arus minimum dapat dipilih hingga 0,1A. Ini berarti Anda juga dapat mengisi baterai kecil. Apalagi jika encoder diputar sedikit lebih cepat, langkah menaikkan / menurunkan arus pengisian akan bekerja dalam 0,5 A.

4. Baterai akan terisi hingga 14,4 volt.

5. Pada layar akan menampilkan informasi tentang arus pengisian dan tegangan pada baterai, indikator pengisian baterai juga akan bekerja, seperti pada ponsel. Tampaknya bagi saya bahwa ini akan lebih visual.

6. Harus ada perlindungan terhadap korsleting terminal pengisi daya. Misalnya, jika Anda menghubungkan terminal bersama-sama dan pada saat yang sama menyalakan pengisi daya, maka tentu saja ini tidak akan membahayakannya. Dan secara umum, sampai baterai terhubung, tidak akan ada tegangan di terminal. Juga, jika baterai terhubung secara tidak sengaja dengan polaritas yang salah, tidak mungkin untuk menyalakan muatannya. Semua perlindungan ini akan diimplementasikan dalam perangkat lunak dan perangkat keras.

7. Pengisian baterai harus sepenuhnya otomatis. Ini sangat mungkin, karena MK akan digunakan. Otomatisasi proses pengisian harus mengecualikan keterlibatan manusia. Ini berarti saya menghubungkan baterai, memilih arus pengisian dan hanya itu. Pengisi daya harus melakukan sisanya. Yaitu, menjaga arus pengisian yang dipilih selama proses pengisian. Jika baterai rusak dan pengisian tidak memungkinkan lagi, baterai harus diputuskan secara otomatis, jika tidak, itu hanya akan mendidih tanpa henti, dan kami tidak membutuhkannya.

8. Fungsi "penyimpanan baterai di musim dingin" tampaknya nyaman. Apa pun yang dikatakan orang, tentu saja setiap baterai di alam memiliki self-discharge internalnya sendiri. Ini berarti bahwa jika Anda membiarkan baterai tanpa pengawasan selama jangka waktu tertentu, maka karena arus pelepasan sendiri, baterai akan habis, yang pada akhirnya akan menyebabkan sulfasi pelat. Dan untuk baterai, ini adalah kematian. Apalagi waktu self-discharge dan sulfasi tidak begitu lama. Terkadang beberapa bulan sudah cukup. Untuk mencegah hal ini terjadi, fungsi akan diimplementasikan"penyimpanan baterai di musim dingin". Cara kerjanya sederhana, kita hubungkan charger ke aki, dan aki tidak perlu dicopot dari mobil. Selanjutnya, pengisi daya akan melihat tegangan pada baterai setiap setengah jam. Jika tegangan turun di bawah normal, pengisian otomatis akan menyala, setelah akhir siklus pengisian, pengisi daya akan kembali beralih ke mode kontrol tegangan baterai. Selain itu, ambang respons diatur oleh pengguna sendiri di menu dan kekuatan saat ini juga dapat dipilih di menu. Secara pribadi, saya menetapkan ambang 12,5 volt untuk diri saya sendiri dan arus pengisian 0,5A. Pengisian dengan arus rendah lebih efektif daripada arus tinggi.

9. Mungkin fungsi "lanjutkan pengisian daya setelah pemadaman listrik" akan berguna. Meskipun kebetulan seperti itu dapat terjadi sekali setiap 150 tahun, namun fungsi ini ada. Pengisi daya selalu "mengingat" bahwa proses pengisian daya menyala dan jika listrik dimatikan / dihidupkan, pengisian daya akan terus berlanjut. Bagaimanapun, semua fungsi dapat dinonaktifkan atau diaktifkan dengan pilihan di menu. Jika Anda mematikan semua fungsi, maka pengisi daya hanya akan menjadi "pengisi daya biasa" yang akan mengisi daya dan mematikan baterai.

10. Dan terakhir, timer program akan bekerja di memori. Timer akan terus berdetak maju 0.1.2 dan seterusnya. Jika baterai sedang diisi, dan ini akan terlihat bagaimana tegangan di atasnya secara bertahap naik menjadi 14,4 volt. Jadi, begitu voltase pada baterai sedikit naik, timer akan segera reset ke 0 dan terus menghitung lagi 0 ... 1.2 ... Tetapi jika baterai rusak atau tua, atau kerapatan elektrolit tidak cukup benar, maka pada ambang tertentu, biaya lebih lanjut tidak mungkin. Dan ambang batas ini bisa di bawah 14,4 volt. Bagaimana menjadi? Dalam hal ini, timer akan berhenti mengatur ulang. Dan setelah mencapai titik tertentu, dia hanya akan mematikan pengisian daya dengan pesan di layar. Tidak ada gunanya merebus baterai lebih jauh. Timer dapat dimatikan di menu atau dihidupkan dengan mengatur rentang waktu dari 30 menit hingga 3 jam. Layar akan menunjukkan bagaimana penghitung waktu akan berdetak dan mengatur ulang dari waktu ke waktu jika muatan bocor dalam mode normal.

Sekarang mari kita beralih ke pembahasan rangkaian charger.

Sumber Daya listrik.
Dalam hal ini, kami akan menggunakan catu daya switching (UPS). Tegangan keluaran dari 16 hingga 20 volt. Karena arus pengisian akan mencapai 5A, arus keluaran UPS harus dengan margin di suatu tempat hingga 6A. Saya menggunakan IPBBERARTI BAIKRS-75-15 yang memiliki tegangan keluaran 15 volt, tetapi ada pemangkas di unit yang dapat digunakan untuk menaikkan tegangan menjadi 16,5 volt. Keunggulan UPS adalah ringan, kompak dan memiliki perlindungan built-in terhadap arus tinggi, korsleting, dll. Oleh karena itu, Anda tidak perlu khawatir lagi. Prinsipnya cocok untuk IPI lainnya. Setidaknya dari laptop. Jika UPS Anda memiliki arus kurang dari 5A, Anda juga dapat menggunakannya, Anda hanya perlu memastikan bahwa Anda tidak mengatur arus pengisian lebih dari yang dapat diberikan UPS. Unit catu daya transformator tidak cocok dalam kasus kami. Pengisi daya pada transformator adalah topik terpisah dan artikel terpisah. Jadi rangkaian daya akan terlihat seperti ini.

Kapasitor 1000uF, pada prinsipnya, tidak dapat dipasang, karena sudah dipasang di catu daya switching pada output, tetapi jika Anda memasangnya, itu tidak akan lebih buruk. Kapasitor C2 lebih bagus kalau ada elektrolit, tapi saya pasang keramik smd. Stabilizer 7805 diperlukan untuk memberi daya pada MK, layar LCD, dan strapping lainnya.

Sekarang mari kita sambungkan baterai dan transistor efek medan.



Seperti yang Anda lihat, semuanya sederhana. Transistor akan mengatur arus yang melalui baterai. Relay K1 akan mengambil peran perlindungan, itu akan menyala hanya ketika baterai terhubung dan terhubung dengan benar. Resistor semen R18 bertindak sebagai shunt. Pada arus 5A, akan memiliki tegangan 0,5 volt. Kami akan meningkatkan tegangan ini dan memasoknya ke MK ADC, sehingga MK akan mengetahui arus apa yang ada di rangkaian pengisian dan nilai ini dapat ditampilkan. Sekarang saatnya menghubungkan MK ke sirkuit.

Seperti yang Anda lihat, skemanya menjadi sedikit lebih rumit. Tetapi tidak banyak. Kami menghubungkan relai ke terminal PB0, relai apa pun untuk 12V, yang kontaknya harus tahan terhadap arus 5A. Sebuah resistor redaman sekitar 200 ohm harus dihubungkan secara seri dengan relai, karena relai akan diberi daya dari tegangan 16-20 volt. Dioda pelindung harus dipasang secara paralel dengan koil relai (apa saja, putLL4148), tanpa dioda, transistor VT4 dapat menerobos. VT4 dapat berupa jenis npn apa pun, menggunakan MMBT4401LT1.

Encoder terhubung ke pin PD7, PC1, PC0. Digunakan yang ini atau yang ini. Pada output yang terhubung dengan encoder, perlu untuk menghubungkan kapasitor 0,1 uF dan resistor pull-up 10k. Ini akan mengurangi kontak.

Tampilan digunakan pada dua baris 16 karakter. Layar juga memiliki font Rusia bawaan. Jika Anda menghubungkan layar tanpa karakter Rusia, layar akan retak. Karena Atmega8 MK tidak memiliki banyak kaki, layar dihubungkan melalui bus 4-bit. Pin tampilan DB3-DB0 tidak digunakan.

Dioda Schottky BAT54S, dua kapasitor 0,1uF dan resistor 100 Ohm terhubung ke pin MK PB2. Mengapa ini dibutuhkan? Faktanya rangkaian tersebut menggunakan op-amp LM358 yang bukan “rail to rail”. Dalam op-amp seperti itu tanpa tegangan suplai negatif pada terminal daya negatif, output op-amp tidak akan pernah memiliki 0 volt. Oleh karena itu, rangkaian elemen yang terhubung ke pin PB2 ini menghasilkan tegangan negatif sekitar -4V untuk memberi daya pada op-amp. Agar rantai pada pin PB2 bekerja dan menghasilkan -4V, sinyal PWM dengan duty cycle 50% harus diterapkan padanya. Dengan demikian, pada pin PB2 selalu terdapat PWM dengan frekuensi 62,5 kHz.

PWM selalu ada di pin PB3, tetapi siklus tugas sinyal dalam hal ini dari 0 hingga 100% sudah diatur oleh putaran encoder. Resistor R18 dan kapasitor C11 merupakan rangkaian terintegrasi yang menghaluskan PWM menjadi tegangan konstan. Resistor R19 dan trimmer R20 adalah pembagi tegangan. Bagaimana cara mengatur R20? Kami menghubungkan multimeter ke pin PB3 dan memutar encoder hingga perangkat menunjukkan 2,5 Volt. Selanjutnya kita putar resistor pemangkas R20 sehingga terdapat tegangan 0,25 volt pada keluaran non-inverting op-amp. Ini menyelesaikan pengaturan R20.

Bagaimana cara kerja regulasi dan kontrol transistor? Misalkan output non-pembalik dari op-amp (+) adalah 0,5 volt. Salah satu sifat dari sebuah op-amp adalah bahwa ia berusaha untuk menyamakan perbedaan potensial antara dua inputnya. Dia melakukan ini menggunakan outputnya, menaikkan atau menurunkan tegangan di atasnya. Jadi pada pin (+) adalah 0,5 volt, dan pada pin (-) adalah 0 volt. Apa berikutnya? Op-amp akan segera mulai meningkatkan tegangan pada output, yang terhubung ke gerbang transistor IRF540. Transistor mulai terbuka. Arus mulai mengalir melalui baterai, transistor dan shunt. Arus saat ini menyebabkan penurunan tegangan pada shunt R18. Op-amp akan menyalakan transistor sampai ada tegangan 0,5 volt melintasi shunt. Tegangan dari shunt diberikan melalui R13 ke terminal (-). Begitu ada 0,5 volt pada pin (-) (sama seperti pada pin (+)), op-amp akan berhenti menyalakan transistor. Dalam hal ini, arus pengisian akan menjadi 5A.

Jika encoder mengurangi tegangan pada terminal (+) menjadi 0,25 volt, op-amp akan menurunkan tegangan pada gerbang transistor menjadi nilai yang pada terminal (-) juga menjadi 0,25 volt, nilai ini sesuai dengan arus muatan 2.5A. Ternyata pengaturan arus pengisian dilakukan di perangkat keras menggunakan op-amp. Dan ini sangat bagus, karena op-amp tidak akan pernah membeku dan kecepatan penggarukannya seketika. Rangkaian kontrol ini merupakan sumber arus linier konvensional. Kenyamanan rangkaian ini adalah sederhana, tetapi kerugiannya adalah seluruh perbedaan tegangan antara catu daya switching dan tegangan pada baterai dilepaskan dalam bentuk panas pada transistor.

Misalnya, UPS mengeluarkan 20 volt, tegangan pada baterai pada awal pengisiannya adalah 12 volt, dan arus pengisian adalah 5A. Berapa banyak daya yang dialokasikan pada transistor? (20-12) * 5 = 40 W. 40W banyak!!! Anda membutuhkan heatsink yang besar dan lima kipas. Sangat baik untuk apa-apa. Meskipun transistor IRF540 akan menahan 150 watt, tidak ada gunanya memanaskan pengisi daya dengan transistor. Bagaimana cara mengurangi pembentukan panas? Anda dapat menurunkan tegangan UPS, misalnya, menjadi 16 volt. Kemudian (16-12) * 5 = 20 W dua kali lebih sedikit sudah lebih baik. Tapi pemanasan bisa dilakukan bahkan kurang dari 5 watt atau kurang. Bagaimana?

Di IPB sejenis sepertiBERARTI BAIKRS-75-15 selalu ada resistor pemangkasan yang dapat mengatur tegangan output dalam 10%. Ini berarti dari 13,5 hingga 16,5, dalam kasus saya ternyata dari 13 hingga 17 volt. Anda dapat menyolder trimmer dari ISB, dan sebagai gantinya menyolder output MK, sehingga kita dapat menggunakan MK untuk mengatur tegangan pada output ISB, ini akan mengurangi pembangkitan panas pada transistor seminimal mungkin. Misalnya, jika baterai memiliki 12 volt, kami menurunkan tegangan menjadi 13 volt dan kami mendapatkan (13-12) * 5 = 5 W panas pada transistor, lebih baik dari 40. Jadi kami meningkatkan rangkaian


Hubungkan optocoupler PC123 atau yang serupa dengan pin PB1. Pada pin PB1, sinyal pwm juga selalu bertugas, yang diintegrasikan oleh rantai R22 dan C13. Kami menyolder resistor pemangkas di UPS dan menyolder resistor 1,2 kOhm yang biasa sebagai gantinya. Sekarang MK dapat mengontrol tegangan pada output UPS melalui optocoupler. Ketika optocoupler dimatikan, tegangan pada output UPS minimum, ketika dihidupkan, resistor R23 di-shunt ke ground, tegangan naik. Menutup/membuka optocoupler dengan lancar menggunakan sinyal PWM pada pin PB1, mengatur tegangan pada output UPS dengan lancar.

Untuk mengetahui kapan dan berapa banyak untuk mengatur tegangan pada output UPS, Anda perlu mengetahui berapa volt secara umum pada transistor daya. Selanjutnya kita perlu menurunkan tegangan pada keluaran UPS sehingga perbedaan antara tegangan pada baterai dan tegangan pada keluaran UPS serendah mungkin. Untuk melakukan ini, kami mengukur tegangan pada saluran pembuangan transistor dengan output PC2 menggunakan MK ADC. Ini dilakukan dengan menggunakan pembagi untuk R9 dan R10. Sekarang, mengetahui parameter yang diperlukan, program di MC sendiri akan mengontrol siklus tugas PWM di pin PB1.

Sekarang sangat sedikit yang tersisa. Ini untuk mengukur arus di sirkuit pengisian dan menampilkannya di layar. Dan tetap mengukur tegangan pada baterai dan juga menampilkannya di layar.

Tegangan baterai diukur dengan cara diferensial. Kami menghapus nilai dari pin PC5. Resistor R5 dan R6 harus tepat 3 kOhm, dan resistor R2 dan R4 masing-masing harus 1 kOhm, lebih disukai akurasi minimal 1%, jadi saya tidak memiliki R4 sebagai pemangkas. Intinya adalah bahwa dengan peringkat resistor seperti itu, rasio tegangan pada input op-amp dan pada outputnya adalah 3: 1. Ketika tegangan berubah dari 0 menjadi 15 volt pada baterai, tegangan pada output op-amp akan berubah dari 0 menjadi 5 volt. Untuk mengatur rantai ini, Anda perlu menghubungkan 14,4 volt alih-alih baterai, misalnya, dari catu daya laboratorium. Kemudian kita putar trimmer R4 agar tampilan LCD juga 14,4 volt. Menyiapkan rangkaian pengukuran tegangan sekarang selesai.

Arus diukur melalui penurunan tegangan melintasi shunt, yang dimainkan oleh resistor semen konvensional. Arus kami adalah dari 0 hingga 5A. Tegangan melintasi shunt bervariasi dari 0 hingga 0,5 volt, masing-masing. Nilai resistor R16 dan R17 dipilih sehingga tegangan pada output op-amp adalah dari 0 hingga 5 volt. Kami mengatur tampilan arus muatan sesuai dengan rantai berikut. Kami menghubungkan baterai dan membuat arus 2,5 A. Secara paralel dengan baterai, kami menghubungkan bola lampu 12 volt. Kami mencabut baterai, dan meninggalkan bola lampu. Kami memastikan bahwa arusnya adalah 2,5 ampere. Jika tegangan pada shunt adalah 0,25 volt, maka arusnya adalah 2,5A. jika tidak, putar encoder hingga shunt menjadi 0,25 volt. Sekarang kita putar trimmer R17 sehingga tampilan menunjukkan arus 2.5A. Menyiapkan tampilan saat ini sekarang selesai.

Apa yang bisa disederhanakan? Misalnya, jika tidak ada keinginan untuk mengacaukan pembagi tegangan di UPS, maka semua yang disolder ke kaki MK PB1 dapat dibuang dari rangkaian. Tetapi segala sesuatu yang lain harus ada di tempatnya. Namun dalam hal ini, seluruh perbedaan tegangan antara baterai dan pada keluaran UPS akan mendarat dalam bentuk panas pada transistor daya. Dalam hal ini, kami tidak menyesal mengambil lebih banyak radiator.

Jika Anda membutuhkan arus pengisian hingga 10A, sejajar dengan shunt, kami menyolder shunt yang sama dengan nilai 0,1 Ohm. Kami mengambil relai dengan kontak yang menahan hingga 10A dan secara paralel dengan transistor IRF540 kami menyolder yang lain dari yang sama. Kami memasang transistor ke radiator yang besar dan kuat dan melanjutkan, melakukan tes. Satu-satunya hal adalah bahwa nilai arus pada layar harus dikalikan dengan 2. Jika layar menunjukkan 5A, sebenarnya sudah menjadi 10A. Secara pribadi, saya belum melakukan ini sendiri, tetapi secara teori seharusnya berhasil.

Pada akhirnya, diagram yang dihasilkan akan terlihat seperti ini:


Saya tidak melihat apa pun yang saya setujui, jadi unduh skemanya dari sini .

Beberapa fragmen firmware.

#sertakan "define.h" #sertakan "init_mcu.h" #sertakan "lcd.h" #sertakan "teks.h" #sertakan "bits_macros.h" #sertakan "fun.h" #sertakan "encoder.h" # sertakan "servise.h" #include "main.h" #include #termasuk #termasuk #termasuk #sertakan #sertakan #termasuk #define RELAY PB0 uint8_t lcd_time, lcd_track, lcd_count, enc_interval, enc_speed, off_charge; uint8_t U_bat_tim, I_bat_tim = 255, stok_reg, energy_flag, count; uint16_t I_reg, enc_block, bat_count, bat_save, bat_off; EEMEM uint8_t energy_off; struct flag (_Bool lcd_clr_txt0:1; _Bool lcd_clr_txt1:1; _Bool count_timer0: 1; // untuk handler interupsi _Bool start_charging: 1; // matikan relay jika listrik mati saat bat sedang charging _Bool ocr1a_block: 1;) bendera; ISR (TIMER0_OVF_vect) // Timer 0 interupsi overflow setiap 1ms. (TCNT0 = 0x6; flags.count_timer0 = 1;) void reg_I (uint16_t reg_val) // mengurangi arus pengisian ketika 14,4 volt tercapai (if (I_reg> reg_val) (I_reg = 0; off_charge = 1; if (OCR2! = 0) (OCR2--; enc_data = OCR2;))) void charg_off (void) (if (BitIsSet (PORTB, RELAY)) (eeprom_update_byte (& energy_off, 0);) ClearBit (PORTB, RELAY); ClearBit (TCCR2, COM21); // menonaktifkan output pwm perangkat keras pada pin PB3 OCR1A = 0; // menurunkan catu daya generator pulsa menjadi 12,5 volts.off_charge = 0; flags.start_charging = 0; flags.ocr1a_block = 0; enc_data = 0; I_bat_tim = 255; count = 0; OCR2 = 0;) int main (void) (#if 1 // inisialisasi MCU_init_ports (); MCU_init_adc (); MCU_init_an_comp (); MCU_init_timer0 (); MCU_init_timer1 (); MCU_init_timer ; LCD_init_flash , 0); LCD_string_of_flashXY (teks_2,3,1); _delay_ms (1500); LCD_string_of_flashXY (teks_3,3,0); LCD_string_of_flashXY (teks_4,2,1); _delay_ms (1500); LCD_clear (); if (BitIsClear (PIND , PUSH)) (servise();) // masuk ke menu layanan jika (eeprom_read_byte (& energy_off) && u_batt ()> 20) (enc_data = eeprom_read_byte (& i_pusk); ) else (eeprom_update_byte (& energy_off, 0);) MCU_init_wdt(); sei(); #endif while (1) (wdt_reset(); uint8_t u_bat = u_batt(); uint8_t i_bat = i_batt(); #if 1 / * tentukan apakah baterai terhubung * / if (u_bat> 30) // 30 * 0,0585 = 1,7 volt pada baterai, terhubung (jika (flags.lcd_clr_txt0 == 0) (flags.lcd_clr_txt0 = 1; LCD_clear ();) if (lcd_time> 200) (lcd_time = 0; LCD_string_of_flashXY (text_7,0,0); LCD_string_of_flash, XY (teks 7,0); LCD_string_of_flashXY (teks_11,13,0); buffer char; uint16_t U = (u_bat * 59) / 100; utoa ((uint8_t) U, buffer, 10); // menampilkan tegangan if (( uint8_t ) U> = 100) (LCD_dataXY (penyangga, 2,0); LCD_data (penyangga); LCD_data ("."); LCD_data (penyangga); LCD_string_of_flashXY (teks_10,6,0);) else if ((uint8_t) U > = 10 && (uint8_t) U<=99) { LCD_dataXY(buffer,2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } else { LCD_dataXY("0",2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } uint16_t I=(i_bat*20)/100; utoa((uint8_t)I, buffer, 10);//выводим ток на дисплей c шунта if ((uint8_t)I>9) (LCD_dataXY (penyangga, 10,0); LCD_data ("."); LCD_data (penyangga);) lain (LCD_dataXY ("0", 10,0); LCD_data ("."); LCD_data (penyangga); ))) else // tidak terhubung (LCD_string_of_flashXY (text_5,0,0); LCD_string_of_flashXY (text_6,0,1); flags.lcd_clr_txt0 = 0; eeprom_update_byte (& energy_off, 0);;) #endif #if 1 / * proses timer0 interrupt flag * / if (flags.count_timer0 == 1) (flags.count_timer0 = 0; lcd_time ++; enc_interval ++; I_reg ++; lcd_track ++; if (enc_speed! = 100) // menentukan encoder kecepatan putaran (enc_speed ++;) if (enc_block > = 1) (enc_block ++; if (enc_block> = 500) (enc_block = 0;)) if (BitIsSet (PORTB, RELAY)) (bat_count ++;) else (bat_count = 0; bat_off = 0; bat_save ++;) stok_reg ++; if (flags.start_charging && count! = 255) (count ++;)) #endif #if 1 / * Menerima data dari encoder * / if (enc_interval> = 5) (enc_interval = 0; OCR2 = encoder(); // membaca nilai encoder. #if 0 // sementara untuk buffer test char; utoa (OCR2, bu menawarkan, 10); if (OCR2> = 100) (LCD_dataXY (buffer, 0,1); LCD_data (buffer); LCD_data (buffer);) else if (OCR2> = 10 && OCR2<=99) { LCD_dataXY("0",0,1); LCD_data(buffer); LCD_data(buffer); } else { LCD_dataXY("0",0,1); LCD_data("0"); LCD_data(buffer); } #endif if (OCR2==0)//отключаем все. { charg_off(); } else//начали заряд { if (flags.ocr1a_block==0) { flags.ocr1a_block=1; OCR1A=255;//подняли питание импульсника до 17 вольт. } SetBit(TCCR2,COM21); SetBit(PORTB,RELAY); } } #endif #if 1 /*уменьшение тока заряда при достижении 14.4вольта*/ if (u_bat==246 && OCR2>0) (reg_I (3000); // sekali setiap 3 detik) else if (u_bat == 255 && OCR2> 0) (reg_I (100); // sekali setiap 100 md) else if (u_bat> 246 && OCR2> 0 ) (reg_I (500); // setiap 500 md sekali) #endif #if 1 / * Matikan pengisian daya saat arus pengisian mencapai 0,1A * / if (off_charge == 1 && enc_block == 0) (if (i_bat<=5)//5*0.02=0.1 А ток в батарее. { charg_off(); flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_13,0,1);//"БАТАРЕЯ ЗАРЯЖЕНА" } } //отключение реле если при заряде бат откл. электричество. if (OCR2>0 && i_bat> 4) // 4 * 0,02 = 0,08A (flags.start_charging = 1;) if (flags.start_charging == 1 && i_bat<2 && count==255)//2*0.02=0.04 А ток в батарее. { ClearBit(PORTB,RELAY); } #endif #if 1 /*Бегущий индикатор на дисплее*/ if (OCR2>0) (jika (flags.lcd_clr_txt1 == 1) (flags.lcd_clr_txt1 = 0; LCD_string_of_flashXY (teks_8,0,1);) if (lcd_track> = 200) (lcd_track = 0; lcd_count ++; sakelar (lcd_count) ( case 0 : LCD_data_of_flashXY (text_15,8,1); break; case 1: LCD_data_of_flashXY (text_16,8,1); break; case 2: LCD_data_of_flashXY (teks_17,8,1); break; case 3: LCD_data_of_flashXY (teks_18,8 ,1 ); break; kasus 4: LCD_data_of_flashXY (teks_19,8,1); istirahat; kasus 5: LCD_data_of_flashXY (teks_20,8,1); istirahat; kasus 6: LCD_data_of_flashXY (teks_21,8,1); break; kasus 7 : LCD_data_of_flashXY (teks_22,8,1); break; case 8: #if 1 if (off_charge == 1) (lcd_count = 5; break;) if (u_bat<232)// 13.57V/0.0585=230 на АЦП. { lcd_count=255; LCD_string_of_flashXY(text_12,8,1); } else if (u_bat<=234) { lcd_count=0; } else if (u_bat<=236) { lcd_count=1; } else if (u_bat<=238) { lcd_count=2; } else if (u_bat<=240) { lcd_count=3; } else if (u_bat<=242) { lcd_count=4; } else if (u_bat<=244) { lcd_count=5; } else { lcd_count=5; } break; #endif default:lcd_count=5; break; } } } else { lcd_count=255; if (flags.lcd_clr_txt1==0) { flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_8,0,1); } } #endif #if 1 /*Аварийный таймер отключения*/ if (bat_count>= 60000 && eeprom_read_byte (& timer_time)) // msec 60000 (bat_count = 0; bat_off ++; #if 1 // untuk debugging LCD_string_of_flashXY (text_37,0,1); char buffer; utoa (bat_off, buffer, 10); if (bat_off > = 100) (LCD_dataXY (buffer, 2,1); LCD_data (buffer); LCD_data (buffer); LCD_string_of_flashXY (text_38,5,1);) else if (bat_off> = 10 && bat_off<=99) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_string_of_flashXY(text_38,4,1); } else { LCD_dataXY(buffer,2,1); LCD_data(" "); LCD_string_of_flashXY(text_38,4,1); LCD_dataXY(" ",7,1); } #endif } if (u_bat>U_bat_tim && off_charge == 0) // reset timer alarm tegangan (bat_off = 0; U_bat_tim = u_bat;) if (i_bat = eeprom_read_word (& tim_dlitl)) // 180 menit secara default (charg_off(); LCD_string_of_flashXY (text_14,0,1); bat_off = 0; flags.lcd_clr_txt1 = 1;) #endif #if 1 / * Pengaturan tegangan pada output dari catu daya * / if (stok_reg> = 100) (stok_reg = 0; uint8_t u_stok = u_stokk (); if (u_stok> 62) // 0,0195 * 51 * 2 = 2 volt di wastafel (jika (OCR1A! = 0) (OCR1A--;)) else if (u_stok<60) { if (OCR1A!=255) { OCR1A++; } } #if 0//временно для теста char buff; utoa(u_stok, buff, 10); if (u_stok>= 100) (LCD_dataXY (buff, 3,1); LCD_data (buff); LCD_data (buff);) else if (u_stok> = 10 && u_stok<=99) { LCD_dataXY("0",3,1); LCD_data(buff); LCD_data(buff); } else { LCD_dataXY("0",3,1); LCD_data("0"); LCD_data(buff); } #endif } #endif #if 1 /*Режим хранения батареи*/ if (bat_save>= 60000 && eeprom_read_byte (& save_on)! = 0) (bat_save = 0; if (u_bat<=eeprom_read_byte(&u_start))//12.5V / 0.0585=213,6 на АЦП { enc_data=eeprom_read_byte(&i_pusk); } } #endif #if 1 /*Режим отключения питания*/ if (enc_data && eeprom_read_byte(&power_off) && energy_flag==0) { energy_flag=1; eeprom_update_byte(&energy_off,1); } #endif } } #if 1 //тексты на дисплей const uint8_t PROGMEM text_1="Зарядное"; const uint8_t PROGMEM text_2="устройcтво"; const uint8_t PROGMEM text_3="SIRIUS 5А "; const uint8_t PROGMEM text_4="Для АКБ 12В"; const uint8_t PROGMEM text_5="Подключи батарею"; const uint8_t PROGMEM text_6="УЧТИ полярность."; const uint8_t PROGMEM text_7="U="; const uint8_t PROGMEM text_8=" "; const uint8_t PROGMEM text_9=" I="; const uint8_t PROGMEM text_10="В "; const uint8_t PROGMEM text_11="А "; const uint8_t PROGMEM text_12=" "; const uint8_t PROGMEM text_13="БАТАРЕЯ ЗАРЯЖЕНА"; const uint8_t PROGMEM text_14="ЗАРЯД ОТКЛЮЧЕН! "; // const uint8_t PROGMEM text_15={0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 1 const uint8_t PROGMEM text_16={0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 12 const uint8_t PROGMEM text_17={0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0}; // 123 const uint8_t PROGMEM text_18={0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0}; // 1234 const uint8_t PROGMEM text_19={0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0}; // 12345 const uint8_t PROGMEM text_20={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0}; // 123456 const uint8_t PROGMEM text_21={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0}; // 1234567 const uint8_t PROGMEM text_22={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0}; // 12345678 const uint8_t PROGMEM text_23 ="Режим сохр. "; const uint8_t PROGMEM text_24 ="ВКЛ "; const uint8_t PROGMEM text_25 ="ВЫКЛ"; const uint8_t PROGMEM text_26 ="U запуска <"; const uint8_t PROGMEM text_27 =" СЕРВИСНОЕ МЕНЮ "; const uint8_t PROGMEM text_28 =" ВЫХОД ИЗ МЕНЮ "; const uint8_t PROGMEM text_29 ="I запуска "; const uint8_t PROGMEM text_30 ="Режим отключения"; const uint8_t PROGMEM text_31 ="питания "; const uint8_t PROGMEM text_32 ="Аварийный Таймер"; const uint8_t PROGMEM text_33 =" ВКЛ "; const uint8_t PROGMEM text_34 =" ВЫКЛ "; const uint8_t PROGMEM text_35 ="задержка "; const uint8_t PROGMEM text_36 =" мин"; const uint8_t PROGMEM text_37 ="T="; const uint8_t PROGMEM text_38 ="min"; #endif

Kami mengajukan pertanyaan di sini [dilindungi email] com
Jika seseorang membutuhkan mikrokontroler yang di-flash, maka dapat dipesan dari sini... Kami secara alami mengumpulkan segala sesuatu yang lain dan melakukannya sendiri.

Sekarang ada beberapa video dan foto. Ini adalah bagaimana prototipe pertama terlihat.

Beginilah tampilan papan pertama.

Selanjutnya, pembayaran yang lebih beradab dilakukan.

Kemudian tubuh ditemukan.

Kemudian semua ini dikumpulkan.

Pada akhirnya, inilah yang terjadi.

Anda dapat mengunduh diagram pengisi daya.
Anda dapat memesan mikrokontroler yang di-flash.
Informasi tambahan., Papan sirkuit tercetak.
Pertanyaan dan keinginan [dilindungi email]

Perangkat ini ditujukan untuk mengukur kapasitas baterai Li-ion dan Ni-Mh, serta untuk pengisian baterai Li-ion dengan pilihan arus pengisian awal.

Kontrol

Kami menghubungkan perangkat ke catu daya stabil 5V dan arus 1A (misalnya, dari ponsel). Indikator selama 2 detik menampilkan hasil pengukuran sebelumnya dari kapasitas "xxxxmA/s" dan pada baris kedua nilai register OCR1A "S.xxx". Kami memasukkan baterai. Jika Anda perlu mengisi baterai, tekan sebentar tombol CHARGE, jika Anda perlu mengukur kapasitas, tekan sebentar tombol TEST. Jika Anda perlu mengubah arus pengisian (nilai register OCR1A), maka untuk waktu yang lama (2 detik) tekan tombol CHARGE. Kami masuk ke jendela penyesuaian register. Lepaskan tombolnya. Dengan menekan sebentar tombol CHARGE, kami mengubah nilai (50-75-100-125-150-175-200-225) dari register dalam lingkaran, baris pertama menunjukkan arus pengisian baterai kosong pada nilai yang dipilih (asalkan Anda memiliki 0 resistor di sirkuit), 22 Ohm). Tekan sebentar tombol TEST, nilai register OCR1A disimpan dalam memori non-volatile.
Jika Anda telah melakukan berbagai manipulasi dengan perangkat dan Anda perlu mengatur ulang jam, kapasitas terukur, kemudian tekan tombol TEST untuk waktu yang lama (nilai register OCR1A tidak diatur ulang). Segera setelah pengisian daya selesai, lampu latar layar mati, untuk menyalakan lampu latar, tekan sebentar tombol TEST atau CHARGE.

Logika perangkat adalah sebagai berikut:

Saat daya diterapkan, indikator menampilkan hasil pengukuran kapasitas baterai sebelumnya dan nilai register OCR1A yang disimpan dalam memori non-volatil. Setelah 2 detik, perangkat beralih ke mode penentuan jenis baterai dengan tegangan di terminal.

Jika tegangan lebih dari 2V, maka ini adalah baterai Li-ion dan tegangan pelepasan penuh akan menjadi 2.9V, jika tidak, itu adalah baterai Ni-MH dan tegangan pelepasan penuh akan menjadi 1V. Hanya setelah menghubungkan baterai, tombol kontrol tersedia. Kemudian perangkat menunggu tombol Test atau Charge untuk ditekan. Layar menunjukkan "_STOP". Saat Anda menekan tombol Uji sebentar, beban terhubung melalui MOSFET.

Besarnya arus pelepasan ditentukan oleh tegangan pada resistor 5,1 Ohm dan, setiap menit, dijumlahkan dengan nilai sebelumnya. Perangkat ini menggunakan kuarsa 32768Hz untuk mengoperasikan jam.

Layar menunjukkan nilai kapasitas baterai saat ini "xxxxmA / s" dan debit torus "A.xxx", serta waktu "xx: xx: xx" sejak tombol ditekan. Ikon animasi baterai lemah juga ditampilkan. Di akhir pengujian baterai Ni-MH, muncul tulisan "_STOP", hasil pengukuran ditampilkan pada layar "xxxxmA / s" dan disimpan.

Jika baterai Li-ion, maka hasil pengukuran juga ditampilkan pada tampilan "xxxxmA / s" dan diingat, tetapi mode pengisian langsung dihidupkan. Tampilan menunjukkan isi register OCR1A "S.xxx". Ikon pengisian baterai animasi juga ditampilkan.

Arus muatan dikendalikan oleh PWM dan dibatasi oleh resistor 0,22 Ohm. Pada perangkat keras, arus pengisian dapat dikurangi dengan meningkatkan resistansi dari 0,22 Ohm menjadi 0,5-1 Ohm. Pada awal pengisian, arus meningkat secara bertahap ke nilai register OCR1A atau sampai tegangan pada terminal baterai mencapai 4.22V (jika baterai diisi).

Nilai arus pengisian tergantung pada nilai register OCR1A - semakin besar nilainya, semakin besar arus pengisian. Ketika tegangan pada terminal baterai adalah 4.22V, nilai register OCR1A berkurang. Proses pengisian ulang berlanjut hingga nilai register OCR1A sama dengan 33, yang sesuai dengan arus sekitar 40 mA. Ini mengakhiri tagihan. Lampu latar layar mati.

Kustomisasi

1. Hubungkan catu daya.
2. Hubungkan baterai.
3. Kami menghubungkan voltmeter ke baterai.
4. Dengan tombol sementara + dan - (PB4 dan PB5) kami mencapai kebetulan pembacaan voltmeter pada tampilan dan pada voltmeter referensi.
5. Tekan tombol TEST untuk waktu yang lama (2 detik), menghafal berlangsung.
6. Kami melepas baterai.
7. Kami menghubungkan voltmeter ke resistor 5,1 Ohm (sesuai dengan diagram di dekat transistor 09N03LA).
8. Hubungkan unit catu daya yang diatur ke terminal baterai, setel ke unit catu daya 4V.
9. Tekan sebentar tombol TEST.
10. Kami mengukur tegangan pada resistor 5,1 Ohm - U.
11. Hitung arus debit I = U/5.1
12. Menggunakan tombol sementara + dan - (PB4 dan PB5), atur arus keluar yang dihitung I pada indikator "A.xxx".
13. Tekan tombol TEST untuk waktu yang lama (2 detik), menghafal berlangsung.

Perangkat ini ditenagai dari sumber yang stabil dengan tegangan 5 volt dan arus 1A. Kuarsa pada 32768Hz dirancang untuk pengaturan waktu yang akurat. ATmega8 di-clock oleh osilator internal 8 MHz, dan proteksi EEPROM harus diatur dengan bit konfigurasi yang sesuai. Saat menulis program kontrol, artikel tutorial dari situs ini digunakan.

Nilai arus dari tegangan dan koefisien arus (Ukof. Ikof) dapat dilihat jika Anda menghubungkan layar 16x4 (16x4 lebih disukai untuk debugging) pada baris ketiga. Atau di Ponyprog jika Anda membuka file firmware EEPROM (baca dari pengontrol EEPROM).
1 byte - OCR1A, 2 byte - I_kof, 3 byte - U_kof, 4 dan 5 byte adalah hasil pengukuran kapasitas sebelumnya.

Video perangkat:

Terkadang Anda berjalan melewati mobil yang diparkir, dan dari sudut mata Anda, Anda melihat bahwa seseorang, dilihat dari cahaya redup lampu, lupa mematikan lampu untuk waktu yang lama. Seseorang sendiri mendapatkannya. Ada baiknya ketika ada indikator biasa tidak mematikan lampu, dan ketika tidak ada hal seperti itu akan membantu: Hal yang tak terlupakan bisa mencicit ketika lampu tidak dimatikan dan tahu cara menyodok gigi mundur.

Rangkaian indikator level bahan bakar digital memiliki tingkat pengulangan yang tinggi, bahkan jika pengalaman dengan mikrokontroler dapat diabaikan, sehingga memahami seluk-beluk proses perakitan dan penyetelan tidak menimbulkan masalah. Pemrogram Gromov adalah pemrogram paling sederhana yang diperlukan untuk memprogram mikrokontroler avr. Pemrogram Goromov sangat cocok untuk pemrograman sirkuit dalam dan sirkuit standar. Di bawah ini adalah diagram kontrol pengukur bahan bakar.

Menyala dan mematikan LED dalam mode apa pun (pintu terbuka dan lampu menyala). Juga mati otomatis setelah lima menit. Dan konsumsi arus siaga minimum.

Opsi 1 - Minus pergantian. (menggunakan transistor saluran-N) 1) "minus switching", yaitu, opsi di mana satu kabel suplai lampu dihubungkan ke + 12V baterai (catu daya), dan kabel kedua mengalirkan arus melalui lampu, sehingga menyalakannya. Dalam varian ini minus akan diberikan. Untuk sirkuit seperti itu, perlu menggunakan transistor efek medan saluran-N sebagai sakelar keluaran.

Modem itu sendiri kecil, murah, berfungsi tanpa masalah, jelas dan cepat, dan secara umum tidak ada keluhan. Satu-satunya negatif bagi saya adalah kebutuhan untuk menyalakan dan mematikannya dengan tombol. Jika Anda tidak mematikannya, modem ditenagai oleh baterai internal, yang akhirnya mati dan modem harus dihidupkan kembali.

Prinsip operasinya sederhana: dengan memutar kenop, volume diatur, ketika ditekan, suara dimatikan dan dihidupkan. Anda perlu menulis di Windows atau Android

Awalnya, di Lifan Smily (dan tidak hanya), mode wiper belakang adalah satu-satunya, dan itu disebut "selalu berayun." Rezim seperti itu terutama dirasakan secara negatif pada awal musim hujan, ketika tetesan terkumpul di jendela belakang, tetapi dalam jumlah yang tidak mencukupi untuk satu bagian wiper. Jadi, Anda harus mendengarkan derit karet di kaca, atau menggambarkan robot dan menghidupkan / mematikan wiper secara berkala.

Saya sedikit memodifikasi sirkuit relai tunda waktu untuk menyalakan pencahayaan interior untuk mobil Ford (sirkuit ini dikembangkan untuk mobil yang sangat spesifik, sebagai pengganti relai standar Ford 85GG-13C718-AA, tetapi berhasil dipasang di "klasik" domestik).

Ini bukan pertama kalinya kerajinan semacam itu lolos. Tapi untuk beberapa alasan orang berpegang teguh pada firmware. Meskipun sebagian besar didasarkan pada proyek elmchan "Pemutar Audio SD Sederhana dengan IC 8-pin". File sumber tidak dibuka dengan alasan bahwa proyek harus diperbaiki, bahwa kualitas saya lebih baik ... dan seterusnya. Singkatnya, mereka mengambil proyek open source, merakitnya, dan menyebarkannya sebagai milik mereka.

Jadi. Mikrokontroler Attiny 13 adalah jantung dari perangkat ini. Saya menderita untuk waktu yang lama dengan firmware-nya, saya tidak dapat mem-flash-nya dengan cara apa pun. Baik 5 kabel melalui LPT, maupun progromator Gromov. Komputer tidak melihat pengontrol dan hanya itu.

Berkaitan dengan inovasi peraturan lalu lintas, masyarakat mulai memikirkan penerapan lampu daytime running. Salah satu cara yang mungkin adalah menyalakan lampu sorot untuk sebagian daya, inilah artikel ini.

Perangkat ini akan memungkinkan lampu rendah menyala secara otomatis saat Anda mulai mengemudi dan menyesuaikan tegangan pada lampu, lampu jauh, tergantung pada kecepatan Anda mengemudi. Ini juga akan membuat mengemudi lebih aman dan memperpanjang umur lampu.