- Kinakailangan ang Mga Bahagi:
- Paglalarawan:
- Circuit Diagram at Paggawa ng Paliwanag:
- Circuit at Disenyo ng PCB gamit ang EasyEDA:
- Pagkalkula at Pag-order ng Mga Sampol ng PCB sa online:
- Paliwanag sa Programming:
Sa proyektong ito gagawa kami ng isang PIC na nakabatay sa Car Battery Monitoring system sa PCB. Dito namin dinisenyo ang isang PCB gamit ang EASYEDA online PCB simulator at taga-disenyo. Ang Car Battery Monitoring Circuit na ito ay ginagamit upang subaybayan ang lakas ng Car Battery sa pamamagitan lamang ng pag-plug nito sa outlet ng kuryente sa dashboard ng isang kotse. Ang PCB ay mayroon ding pagpipiliang gamitin ito bilang tool ng Pagsukat ng Boltahe o Voltmeter nang hindi gumagamit ng charger ng kotse sa USB. Nag-attach kami ng isang bloke ng terminal dito upang masukat ang boltahe ng iba pang mga mapagkukunan ng kuryente, sa pamamagitan lamang ng pagkonekta ng dalawang mga wire dito mula sa pinagmulan ng kuryente.
Kinakailangan ang Mga Bahagi:
- PIC Microcontroller PIC18F2520 -1
- Fabricated PCB Board -1
- Konektor ng USB -1
- 2 pin Terminal Connector (opsyonal) -1
- Karaniwang pagpapakita ng anode pitong segment (4 sa 1) -1
- BC557 Transistor -4
- 1k risistor -6
- 2k risistor -1
- 100R risistor -8
- 1000uF capacitor -1
- 10uF capacitor -1
- 28 pin IC base -1
- mga babaeng burgstick -1
- 7805 Boltahe regulator -1
- Car USB charger -1
- LED -1
- Zener diode5.1v -2
- USB cable (B-type o Arduino UNO na katugma) -1
- 20MHz Crystal -1
- 33pF capacitor -2
Paglalarawan:
Sa pangkalahatan ay hindi mahalaga na sukatin ang lakas ng baterya ng kotse sa bawat oras, ngunit madalas naming kailangang malaman ang tungkol sa boltahe ng baterya habang nagcha-charge, upang suriin kung ang singilin o hindi. Sa pamamagitan nito, mapoprotektahan namin ang pagkabigo ng baterya dahil sa maling sistema ng pagsingil. Ang boltahe ng isang baterya ng 12v kotse habang nagcha-charge ay tungkol sa 13.7v. Kaya maaari naming makilala kung ang aming baterya ay nagcha-charge nang maayos o hindi at maaari naming siyasatin ang mga sanhi ng pagkabigo ng baterya. Sa proyektong ito, magpapatupad kami ng isang Voltage Meter para sa Car Battery sa pamamagitan ng paggamit ng isang PIC microcontroller. Ang Car Cigarette Lighter o Car USB charger ay ginagamit para sa pagkuha ng boltahe ng baterya sa ADC pin ng microcontroller sa tulong ng Voltage Divider Circuit. Pagkatapos ng isang 4 digit na pitong segment na pagpapakitaay ginagamit upang ipakita ang halaga ng boltahe ng baterya. Maaaring sukatin ng circuit na ito ang boltahe hanggang sa 15v.
Kapag ang isang baterya ng kotse ay nagcha-charge, pagkatapos ang boltahe sa mga terminal ng baterya ay talagang nagmula sa alternator / rectifier, kaya't binabasa ng system ang 13.7 volts. Ngunit kapag ang baterya ay hindi naniningil o ang makina ng kotse ay hindi NAKA-ON, kung gayon ang boltahe sa kabila ng terminal ng baterya ay aktwal na boltahe ng baterya sa paligid ng 12v.
Maaari din naming gamitin ang parehong circuit para sa pagsukat ng boltahe ng iba pang mga mapagkukunan ng kuryente hanggang sa 15v. Para sa hangaring ito ay na-solder namin ang Terminal Block (berdeng kulay plastic block) sa PCB kung saan maaari mong ikonekta ang dalawang mga wire mula sa pinagmulan ng kuryente at masusubaybayan ang boltahe. Suriin ang Video sa dulo, kung saan natin ito ipinakita sa pamamagitan ng pagsukat ng boltahe ng isang Variable power Supply, isang USB power bank at isang 12v AC-DC adapter. Suriin din ang Simple Battery Monitor Circuit at 12v Battery Charger Circuit.
Circuit Diagram at Paggawa ng Paliwanag:
Sa Circuit Monitoring Circuit ng Baterya na ito, nabasa namin ang boltahe ng baterya ng kotse sa pamamagitan ng paggamit ng isang nakapaloob na analog pin ng PIC microcontroller at dito napili namin ang pin na AN0 (28) na pin ng microcontroller sa pamamagitan ng isang circuit ng divider ng boltahe. Ang isang zener diode na 5.1v ay ginagamit din para sa proteksyon.
Ang 4 sa 1 pitong segment na display ay ginagamit para sa pagpapakita ng instant na halaga ng boltahe ng baterya ng kotse na nakakonekta sa PORTB at PORTC ng microcontroller. Ang isang 5v boltahe regulator lalo na ang LM7805 ay ginagamit upang paandarin ang buong circuit kabilang ang Pitong Segment na Ipinapakita. Ang isang 20 MHz crystal oscillator ay ginagamit upang mai-orasan ang microcontroller. Ang circuit ay pinalakas ng USB car charger mismo sa pamamagitan ng paggamit ng isang LM7805. Nagdagdag kami ng isang USB port sa PCB, kaya maaari naming direktang ikonekta ang car USB charger sa circuit.
Ang Car USB charger o Cigarette lighter ay nagbibigay ng 5v na kinokontrol na supply mula sa 12v power outlet ng kotse, ngunit kailangan naming sukatin ang aktwal na boltahe ng Car baterya kaya't na-tweak namin ang car charger. Kailangan mong buksan ang car USB charger at pagkatapos ay hanapin ang mga terminal ng 5v (output) at 12v (input) at pagkatapos ay alisin ang 5v na koneksyon sa pamamagitan ng paghuhugas nito ng papel na buhangin o sa ilang matigas na bagay at maiikling direkta ang USB output terminal sa 12v nang direkta. Una buksan ang koneksyon ng 5v mula sa USB port sa car USB charger at pagkatapos ay ikonekta ang 12v sa USB port kung saan nakakonekta ang 5v. Tulad ng ipinakita sa figure sa ibaba, pinutol namin ang pulang bilugan na koneksyon, maaaring magkakaiba ito sa iyong charger ng kotse.
Upang mai-configure ang ADC dito napili namin ang analog pin AN0 na may panloob na boltahe ng sanggunian na 5v at f / 32 na orasan para sa pag-convert ng ADC.
Upang makalkula ang boltahe ng baterya ng kotse mula sa halagang ADC na ginamit naming ibinigay na formula:
Boltahe = (halaga ng ADC / factor ng risistor) * sanggunian Boltahe Kung saan: Halaga ng ADC = output ng Boltahe divider (na-convert sa digital ng microcontroller) Resistor factor = 1023.0 / (R2 / R1 + R2) // 1023 ay max na halaga ng ADC (10- bit) Reference Voltage = 5 volts // internal na 5v na sanggunian na napili
Pagkalkula ng Kadahilanan ng Resistor:
Sa proyektong ito binabasa namin ang boltahe ng baterya ng kotse na (sa pangkalahatan) sa paligid ng 12v-14v. Kaya't nagawa namin ang proyektong ito na ipinapalagay na max 15v nangangahulugan na ang sistemang ito ay maaaring mabasa nang hanggang 15v.
Kaya sa circuit ginamit namin ang R1 at R2 risistor sa bahagi ng boltahe na divider at ang mga halaga ay:
R1 = 2K
R2 = 1K
Resistor factor = 1023.0 * (1000/2000 + 1000)
Resistor factor = 1023.0 * (1/3)
Resistor factor = 341.0 hanggang sa 15 volts
Kaya't ang Pangwakas na Pormula para sa pagkalkula ng boltahe ay magiging sumusunod, na ginamit namin ang Code, na ibinigay sa pagtatapos ng Artikulo na ito:
Boltahe = (halaga ng ADC / 341.0) * 5.0
Circuit at Disenyo ng PCB gamit ang EasyEDA:
Upang mag-disenyo ng isang Circuit para sa Car Battery Voltage Monitor, ginamit namin ang EasyEDA na isang libreng online na tool ng EDA para sa paglikha ng mga circuit at PCB sa isang maayos na pamamaraan. Nag-order kami dati ng ilang mga PCB mula sa EasyEDA at ginagamit pa rin ang kanilang mga serbisyo habang nakita namin ang buong proseso, mula sa pagguhit ng mga circuit hanggang sa pag-order ng mga PCB, na mas maginhawa at mahusay sa paghahambing ng iba pang mga PCB na taga-gawa. Nag-aalok ang EasyEDA ng pagguhit ng circuit, simulation, disenyo ng PCB nang libre at nag-aalok din ng mataas na kalidad ngunit mababang presyo na Pasadyang serbisyo sa PCB. Suriin dito ang kumpletong tutorial sa Paano gamitin ang Madaling EDA para sa paggawa ng mga iskematika, layout ng PCB, Paggaya ng mga Circuits atbp
Ang EasyEDA ay nagpapabuti araw-araw; nagdagdag sila ng maraming mga bagong tampok at pinahusay ang pangkalahatang karanasan ng gumagamit, na ginagawang mas madali at magagamit ang EasyEDA para sa pagdidisenyo ng mga circuit. Malapit na nilang ilunsad ang bersyon ng Desktop na ito, na maaaring ma-download at mai-install sa iyong computer para sa offline na paggamit.
Sa EasyEDA, maaari mong isapubliko ang iyong mga disenyo ng circuit at PCB upang ang ibang mga gumagamit ay maaaring kopyahin o mai-edit ang mga ito at maaaring makinabang mula doon, ginawa rin naming pampubliko ang aming buong layout ng Circuit at PCB para sa Car Battery Voltage Monitor na ito, suriin ang link sa ibaba:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Nasa ibaba ang Snapshot ng Nangungunang layer ng layout ng PCB mula sa EasyEDA, maaari mong tingnan ang anumang Layer (Tuktok, Ibaba, Topsilk, bottomsilk atbp) ng PCB sa pamamagitan ng pagpili ng layer na bumubuo sa Window na 'Mga Layers'.
Pagkalkula at Pag-order ng Mga Sampol ng PCB sa online:
Matapos makumpleto ang disenyo ng PCB, maaari mong i-click ang icon ng Fabrication output , na magdadala sa iyo sa pahina ng order ng PCB. Dito maaari mong tingnan ang iyong PCB sa Gerber Viewer o i-download ang mga Gerber file ng iyong PCB at ipadala ang mga ito sa anumang tagagawa, mas madali din (at mas mura) upang direktang mag-order nito sa EasyEDA. Dito maaari mong piliin ang bilang ng mga PCB na nais mong mag-order, kung gaano karaming mga layer ng tanso ang kailangan mo, ang kapal ng PCB, bigat ng tanso, at maging ang kulay ng PCB. Matapos mong mapili ang lahat ng mga pagpipilian, i-click ang "I-save sa Cart" at kumpletuhin ang order mo, makukuha mo ang iyong mga PCB makalipas ang ilang araw.
Maaari mong direktang mag-order sa PCB na ito o i-download ang Gerber file gamit ang link na ito.
Matapos ang ilang araw ng pag-order ng PCB nakuha ko ang mga sample ng PCB
Matapos makuha ang mga PCB na-mount ko ang lahat ng kinakailangang mga sangkap sa PCB, at sa wakas ay handa na ang aming Car Battery Monitoring System, suriin ang circuit na ito sa pagtatrabaho sa Video na ibinigay sa dulo.
Paliwanag sa Programming:
Ang programa ng proyektong ito ay medyo mahirap para sa mga nagsisimula. Upang isulat ang code na ito kailangan namin ng ilang mga header file. Narito ginagamit namin ang MPLAB X IDE para sa coding at XC compiler upang mabuo at maipon ang code. Ang code ay nakasulat sa wikang C.
Sa code na ito, nabasa namin ang boltahe ng baterya gamit ang isang analog pin at para sa pagkontrol o pagpapadala ng data sa 4-digit na pitong segment na display, ginamit namin ang Timer Interrupt Server Routine sa PIC microcontroller. Ang lahat ng pagkalkula para sa pagsukat ng boltahe ay tapos na sa pangunahing gawain ng programa.
Una, sa code ay nagsama kami ng isang header at pagkatapos ay na-configure ang PIC microcontroller gamit ang mga config Bits.
# isama
At pagkatapos ay idineklara ang mga variable at tinukoy na mga pin para sa pitong mga segment na ipinapakita
unsigned int counter2; unsigned na posisyon ng char = 0; unsigned char k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; #define TRIS_seg1 TRISCbits.TRISC0 #define TRIS_seg2 TRISCbits.TRISC1 #define TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISAbits.TRISA2 #define TRIS_led2 TRISAbits.TRISA5 #define TRIS_led3 TRISAbits.TRISA0 #define TRIS_led4 TRISAbits.TRISA1 #define TRIS_led5 TRISAbits.TRISA………………
Nilikha namin ngayon ang isang timer na nakakagambala sa gawain para sa pagmamaneho ng pitong segment na pagpapakita:
walang bisa makagambala low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; kung (counter2> = 1) {kung (posisyon == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Ngayon sa walang bisa na pangunahing () pag- andar, naisimulan namin ang timer at makagambala.
GIE = 1; // GLOBLE INTRRUPT ENABLE PEIE = 1; // peripheral intrupt flag T0CON = 0b000000000; // prescaler halaga ilagay TMR0IE = 1; // makagambala paganahin ang TMR0IP = 0; // maputol ang prayoridad TMR0 = 55536; // start counter pagkatapos ng halagang ito TMR0ON = 1;
At pagkatapos ay habang loop, binabasa namin ang input ng analog sa analog pin at tumawag sa ilang pagpapaandar para sa mga kalkulasyon.
habang (1) {adc_init (); para sa (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = Halaga; } adcValue = (float) adcValue / 40.0; i-convert (adcValue); pagkaantala (100); }
Naibigay na pagpapaandar ng adc_init () ay ginagamit para sa pagsisimula ng ADC
void adc_init () {ADCON0 = 0b00000011; // select adc channel ADCON1 = 0b00001110; // select analog and digital i / p ADCON2 = 0b10001010; // eqisation time holding cap time ADON = 1; }
Dahil sa pagpapaandar ng adc_value ay ginagamit upang mabasa ang input mula sa analog pin at kalkulahin ang boltahe.
float adc_value (void) {float adc_data = 0; habang (PUMUNTA / TAPOS == 1); // mas mataas na data bit simulan ang halaga ng adc ng conversion adc_data = (ADRESL) + (ADRESH << 8); // Store 10-bit output adc_data = ((adc_data / 342.0) * 5.0); ibalik ang adc_data; }
At ibinigay na pag - andar ng pag- convert ay ginagamit upang i-convert ang halaga ng boltahe sa mga sinusuportahang halaga ng segment.
walang bisa ang pag-convert (float f) {int d = (f * 100); digit1 = d% 10; d = d / 10; digit2 = d% 10; d = d / 10; digit3 = d% 10; digit4 = d / 10; }
Suriin ang Kumpletong code para sa proyektong ito sa ibaba gamit ang isang demonstration na Video.