- Komponen yang Diperlukan:
- Penerangan:
- Diagram Litar dan Penjelasan Kerja:
- Reka bentuk litar dan PCB menggunakan EasyEDA:
- Mengira dan Memesan Sampel PCB dalam talian:
- Penjelasan Pengaturcaraan:
Dalam projek ini kita akan membuat sistem Pemantauan Bateri Kereta berasaskan PIC pada PCB. Di sini kami telah merancang PCB menggunakan simulator dan pereka PCB dalam talian EASYEDA. Ini Bateri Kereta Pemantauan Circuit digunakan untuk memantau kuasa bateri kereta dengan hanya memasang ke dalam salur keluar kuasa pada papan pemuka kereta. The PCB juga mempunyai pilihan untuk menggunakannya sebagai Voltan Pengukuran alat atau voltmeter tanpa menggunakan pengecas kereta USB. Kami telah memasang blok terminal di sini untuk mengukur voltan sumber kuasa yang lain, hanya dengan menyambungkan dua wayar di dalamnya dari sumber kuasa.
Komponen yang Diperlukan:
- PIC Microcontroller PIC18F2520 -1
- Papan PCB Fabrikasi -1
- Penyambung USB -1
- Penyambung Terminal 2 pin (pilihan) -1
- Paparan anode tujuh segmen biasa (4 dalam 1) -1
- Transistor BC557 -4
- Perintang 1k -6
- Perintang 2k -1
- Perintang 100R -8
- Kapasitor 1000uF -1
- Kapasitor 10uF -1
- Pangkalan IC 28 pin -1
- pecah perempuan -1
- 7805 Pengatur voltan -1
- Pengecas USB kereta -1
- LED -1
- Zener diod5.1v -2
- Kabel USB (jenis B atau serasi Arduino UNO) -1
- 20MHz Kristal -1
- Kapasitor 33pF -2
Penerangan:
Umumnya tidak penting untuk mengukur kuasa bateri kereta setiap masa, tetapi kita sering perlu mengetahui mengenai voltan bateri semasa mengecas, untuk memeriksa sama ada pengecasannya atau tidak. Dengan ini, kita dapat melindungi kegagalan bateri kerana sistem pengecasan yang salah. Voltan bateri kereta 12v semasa mengecas adalah sekitar 13.7v. Oleh itu, kita dapat mengenal pasti sama ada bateri kita diisi dengan baik atau tidak dan boleh menyiasat punca kegagalan bateri. Dalam projek ini, kami akan melaksanakan Voltage Meter untuk Car Battery dengan menggunakan mikrokontroler PIC. Car Cigarette Lighter atau Car USB charger digunakan untuk mendapatkan voltan bateri ke pin ADC mikrokontroler dengan bantuan Voltage Divider Circuit. Kemudian paparan 4 segmen tujuh digitdigunakan untuk menunjukkan nilai voltan bateri. Litar ini dapat mengukur voltan hingga 15v.
Apabila bateri kereta sedang diisi, maka voltan di terminal bateri sebenarnya berasal dari alternator / penerus, sebab itulah sistem membaca 13.7 volt. Tetapi apabila bateri tidak diisi atau enjin kereta tidak ON, maka voltan merentasi terminal bateri adalah voltan bateri sebenar sekitar 12v.
Kita juga boleh menggunakan litar yang sama untuk mengukur voltan sumber kuasa lain sehingga 15v. Untuk tujuan ini kami telah menyolder Terminal Block (blok plastik warna hijau) di PCB di mana anda boleh menyambungkan dua wayar dari sumber kuasa dan dapat memantau voltan. Lihat Video di hujungnya, di mana kita telah menunjukkannya dengan mengukur voltan Bekalan kuasa yang berubah-ubah, bank kuasa USB dan penyesuai AC-DC 12v. Periksa juga Litar Monitor Bateri Mudah dan Litar Pengecas Bateri 12v.
Diagram Litar dan Penjelasan Kerja:
Dalam Litar Pemantauan Voltan Bateri ini, kami telah membaca voltan bateri kereta dengan menggunakan pin analog mikrokontroler PIC dan di sini kami telah memilih pin AN0 (28) pin mikrokontroler melalui rangkaian pembahagi voltan. Diod zener 5.1v juga digunakan untuk perlindungan.
Paparan 4 dalam 1 tujuh segmen digunakan untuk memaparkan nilai sesaat voltan bateri kereta yang disambungkan pada PORTB dan PORTC mikrokontroler. Pengatur voltan 5v iaitu LM7805 digunakan untuk menghidupkan keseluruhan litar termasuk Paparan Tujuh Segmen. Pengayun kristal 20 MHz digunakan untuk mengawal mikrokontroler. Litar dikuasakan oleh pengecas kereta USB itu sendiri dengan menggunakan LM7805. Kami telah menambahkan port USB di PCB, sehingga kami dapat menghubungkan pengecas USB kereta secara langsung ke litar.
Pengecas USB kereta atau Pemantik Rokok menyediakan bekalan yang dikawal selia 5v dari soket kuasa 12v kereta, tetapi kita perlu mengukur voltan sebenar bateri Kereta sehingga kita telah mengubah pengecas Kereta. Anda perlu membuka pengecas USB kereta dan kemudian mencari terminal 5v (output) dan 12v (input) dan kemudian lepaskan sambungan 5v dengan menggosoknya dengan kertas pasir atau dengan sesuatu yang sukar dan pendekkan terminal output USB ke 12v secara langsung. Pertama buka sambungan 5v dari port USB di pengecas USB kereta dan kemudian sambungkan 12v ke port USB di mana 5v disambungkan. Seperti yang ditunjukkan dalam gambar di bawah, kami telah memotong sambungan bulatan merah, mungkin pengecas kereta anda berbeza.
Untuk mengkonfigurasi ADC di sini kami telah memilih pin analog AN0 dengan voltan rujukan dalaman jam 5v dan f / 32 untuk penukaran ADC.
Untuk mengira voltan bateri kereta dari nilai ADC, kami telah menggunakan formula yang diberikan:
Voltan = (nilai ADC / faktor perintang) * voltan rujukan Di mana: Nilai ADC = output pembahagi voltan (ditukar menjadi digital oleh mikrokontroler) Faktor perintang = 1023.0 / (R2 / R1 + R2) // 1023 adalah nilai ADC maksimum (10- bit) Voltan Rujukan = 5 volt // rujukan 5v dalaman dipilih
Pengiraan Faktor Perintang:
Dalam projek ini kita membaca voltan bateri kereta yang (umumnya) sekitar 12v-14v. Oleh itu, kami telah melaksanakan projek ini dengan anggapan maksimum 15v bermaksud sistem ini dapat dibaca maksimum hingga 15v.
Oleh itu, di litar kami telah menggunakan perintang R1 dan R2 di bahagian pembahagi voltan dan nilai adalah:
R1 = 2K
R2 = 1K
Faktor perintang = 1023.0 * (1000/2000 + 1000)
Faktor perintang = 1023.0 * (1/3)
Faktor perintang = 341.0 hingga 15 volt
Jadi Formula Akhir untuk pengiraan voltan adalah seperti berikut, yang telah kami gunakan Kod, yang diberikan pada akhir Artikel ini:
Voltan = (nilai ADC / 341.0) * 5.0
Reka bentuk litar dan PCB menggunakan EasyEDA:
Untuk merancang Monitor Voltan Bateri Litar untuk Kereta, kami telah menggunakan EasyEDA yang merupakan alat EDA dalam talian percuma untuk membuat litar dan PCB dengan lancar. Kami sebelumnya telah memesan beberapa PCB dari EasyEDA dan masih menggunakan perkhidmatannya kerana kami mendapati keseluruhan prosesnya, dari melukis litar hingga memesan PCB, lebih mudah dan cekap dibandingkan dengan pembuat PCB lain. EasyEDA menawarkan lukisan litar, simulasi, reka bentuk PCB secara percuma dan juga menawarkan perkhidmatan PCB disesuaikan berkualiti tinggi tetapi harga rendah. Lihat di sini tutorial lengkap mengenai Cara Menggunakan EDA Mudah untuk membuat Skema, susun atur PCB, Simulasi Litar dll.
EasyEDA bertambah baik dari hari ke hari; mereka telah menambahkan banyak ciri baru dan meningkatkan keseluruhan pengalaman pengguna, yang menjadikan EasyEDA lebih mudah dan berguna untuk merancang litar. Mereka akan segera melancarkan versi Desktopnya, yang boleh dimuat turun dan dipasang di komputer anda untuk penggunaan luar talian.
Di EasyEDA, anda boleh menjadikan reka bentuk litar dan PCB anda umum sehingga pengguna lain dapat menyalin atau mengeditnya dan dapat memanfaatkannya, kami juga telah menjadikan keseluruhan susunan Litar dan PCB kami untuk umum untuk Monitor Voltan Bateri Kereta ini , periksa pautan di bawah:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Di bawah ini adalah Snapshot lapisan Atas susun atur PCB dari EasyEDA, anda dapat melihat mana-mana Lapisan (Atas, Bawah, Topsilk, dasar bawah dll) dari PCB dengan memilih lapisan dari Tingkap 'Lapisan'.
Mengira dan Memesan Sampel PCB dalam talian:
Setelah melengkapkan reka bentuk PCB, anda dapat mengklik ikon keluaran Fabrikasi , yang akan membawa anda ke halaman pesanan PCB. Di sini anda dapat melihat PCB anda di Gerber Viewer atau memuat turun fail Gerber dari PCB anda dan menghantarnya ke mana-mana pengeluar, ia juga jauh lebih mudah (dan lebih murah) untuk memesannya secara langsung di EasyEDA. Di sini anda dapat memilih jumlah PCB yang anda ingin pesan, berapa banyak lapisan tembaga yang anda perlukan, ketebalan PCB, berat tembaga, dan juga warna PCB. Setelah anda memilih semua pilihan, klik "Simpan ke Troli" dan selesaikan pesanan anda, maka anda akan mendapatkan PCB anda beberapa hari kemudian.
Anda boleh memesan PCB ini secara langsung atau memuat turun fail Gerber menggunakan pautan ini.
Setelah beberapa hari memesan PCB, saya mendapat sampel PCB
Setelah mendapatkan PCB, saya telah memasang semua komponen yang diperlukan di atas PCB, dan akhirnya kami menyediakan Sistem Pemantauan Bateri Kereta kami, periksa litar ini dalam bekerja di Video yang diberikan pada akhir.
Penjelasan Pengaturcaraan:
Program projek ini agak sukar bagi pemula. Untuk menulis kod ini, kami memerlukan beberapa fail tajuk. Di sini kita menggunakan MPLAB X IDE untuk pengkodan dan penyusun XC untuk membina dan menyusun kod tersebut. Kod tersebut ditulis dalam bahasa C.
Dalam kod ini, kami telah membaca voltan bateri menggunakan pin analog dan untuk mengawal atau menghantar data ke paparan tujuh segmen 4 digit, kami telah menggunakan Timer Interrupt Server Routine dalam mikrokontroler PIC. Semua pengiraan untuk pengukuran voltan dilakukan dalam rutin program utama.
Pertama, dalam kod kami telah memasukkan header dan kemudian mengkonfigurasi mikrokontroler PIC menggunakan bit konfigurasi.
#sertakan
Dan kemudian dinyatakan pemboleh ubah dan pin yang ditentukan untuk paparan tujuh segmen
kaunter int2 yang tidak ditandatangani; kedudukan char yang tidak ditandatangani = 0; char tidak bertanda tangan k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; # menentukan TRIS_seg1 TRISCbits.TRISC0 # menentukan TRIS_seg2 TRISCbits.TRISC1 # menentukan TRIS_seg3 TRISCbits.TRISC2 # menentukan TRIS_seg4 TRISCbits.TRISC3 # menentukan TRIS_led1 TRISAbits.TRISA2 # menentukan TRIS_led2 TRISAbits.TRISA5 # menentukan TRIS_led3 TRISAbits.TRISA0 # menentukan TRIS_led4 TRISAbits.TRISA1 # menentukan TRIS_led5 TRISAbits.TRISA………………
Sekarang kami telah membuat rutin gangguan pemasa untuk mengemudi paparan tujuh segmen:
void mengganggu low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; if (counter2> = 1) {if (kedudukan == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Sekarang dalam fungsi utama () kosong , kami telah memulakan pemasa dan mengganggu.
GIE = 1; // INTRRUPT GLOBLE MENGAKTIFKAN PEIE = 1; // bendera intrupt perifer T0CON = 0b000000000; // nilai prescaler meletakkan TMR0IE = 1; // interrupt aktifkan TMR0IP = 0; // keutamaan gangguan TMR0 = 55536; // mulakan kaunter selepas nilai ini TMR0ON = 1;
Dan kemudian dalam loop sementara , kami membaca input analog pada pin analog dan memanggil beberapa fungsi untuk pengiraan.
sementara (1) {adc_init (); untuk (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = Nilai; } adcValue = (float) adcValue / 40.0; menukar (adcValue); kelewatan (100); }
Diberi fungsi adc_init () digunakan untuk menginisialisasi ADC
batal adc_init () {ADCON0 = 0b00000011; // pilih saluran adc ADCON1 = 0b00001110; // pilih i / p analog dan digital ADCON2 = 0b10001010; // eqisation time holding cap time ADON = 1; }
Diberi fungsi adc_value digunakan untuk membaca input dari pin analog dan mengira voltan.
float adc_value (tidak sah) {float adc_data = 0; sementara (GO / DONE == 1); // data bit yang lebih tinggi mula penukaran nilai adc adc_data = (ADRESL) + (ADRESH << 8); // Simpan output 10-bit adc_data = ((adc_data / 342.0) * 5.0); mengembalikan adc_data; }
Dan fungsi tukar yang diberikan digunakan untuk menukar nilai voltan ke segmen nilai yang disokong.
penukaran void (float f) {int d = (f * 100); digit1 = d% 10; d = d / 10; digit2 = d% 10; d = d / 10; digit3 = d% 10; digit4 = d / 10; }
Lihat kod Lengkap untuk projek ini di bawah dengan Video demonstrasi.