- Potrebne komponente:
- Opis:
- Shema vezja in delovna razlaga:
- Oblikovanje vezij in tiskanih vezij s pomočjo EasyEDA:
- Izračun in naročanje vzorcev PCB na spletu:
- Pojasnilo programiranja:
V tem projektu bomo na PCB izdelali sistem za spremljanje avtomobilskih baterij, ki temelji na PIC. Tu smo zasnovali PCB s pomočjo spletnega simulatorja in oblikovalca PCB EASYEDA. To vezje za nadzor avtomobilske baterije se uporablja za nadzor moči avtomobilskega akumulatorja, tako da ga preprosto priključite v električno vtičnico na armaturni plošči avtomobila. PCB ima tudi možnost, da ga uporabite kot Voltage merjenje orodja ali voltmeter brez uporabe polnilnik USB avto. Tukaj smo pritrdili priključni blok za merjenje napetosti drugih virov energije, samo tako, da vanj priključimo dve žici.
Potrebne komponente:
- Mikrokrmilnik PIC PIC18F2520 -1
- Izdelana plošča PCB -1
- Priključek USB -1
- 2-polni priključek priključka (neobvezno) -1
- Sedemsegmentni prikaz navadne anode (4 v 1) -1
- BC557 Tranzistor -4
- 1k upor -6
- 2k upor -1
- 100R upor -8
- 1000uF kondenzator -1
- 10uF kondenzator -1
- 28-polna IC osnova -1
- ženske kmečke -1
- 7805 Napetostni regulator -1
- Avtomobilski polnilnik USB -1
- LED -1
- Zenerjeva dioda 5.1 v -2
- Kabel USB (združljiv z B-tipom ali Arduino UNO) -1
- 20MHz kristal -1
- 33pF kondenzator -2
Opis:
Na splošno ni pomembno, da vsakič izmerite moč avtomobilske baterije, vendar moramo pogosto vedeti o napetosti akumulatorja med polnjenjem, da preverimo, ali se polni. S tem lahko zaščitimo okvaro baterije zaradi okvarjenega polnilnega sistema. Napetost 12v avtomobilske baterije med polnjenjem je približno 13,7v. Tako lahko ugotovimo, ali se naša baterija dobro polni ali ne, in lahko preiščemo vzroke za odpoved baterije. V tem projektu bomo uporabili merilnik napetosti za avtomobilsko baterijo z uporabo mikrokrmilnika PIC. Vžigalnik za avtomobile ali avtomobilski polnilnik USB se uporablja za napotitev napetosti akumulatorja na zatič ADC mikrokrmilnika s pomočjo vezja napetostnega delilnika. Nato štirimestni sedemsegmentni zaslonse uporablja za prikaz napetosti baterije. To vezje lahko meri napetost do 15v.
Ko se akumulator polni, napetost na sponkah akumulatorja dejansko prihaja iz alternatorja / usmernika, zato sistem odčita 13,7 voltov. Ko pa se akumulator ne polni ali motor avtomobila ni vklopljen, je napetost na priključku akumulatorja dejanska napetost akumulatorja okoli 12v.
Isto vezje lahko uporabimo tudi za merjenje napetosti drugih virov energije do 15v. V ta namen smo na PCB prilepili priključni blok (plastični blok zelene barve), kamor lahko priključite dve žici iz vira napajanja in lahko nadzirate napetost. Na koncu si oglejte video, kjer smo ga prikazali z merjenjem napetosti spremenljivega napajalnika, napajalnika USB in 12v AC-DC adapterja. Preverite tudi enostaven nadzorni tokokrog baterije in vezje polnilnika akumulatorjev 12v.
Shema vezja in delovna razlaga:
V tem vezju za spremljanje napetosti akumulatorja smo z vgrajenim analognim zatičem mikrokrmilnika PIC prebrali napetost avtomobilskega akumulatorja in tukaj izbrali pin AN0 (28) zatiča mikrokrmilnika skozi vezje delilnika napetosti. Za zaščito se uporablja tudi zenerjeva dioda 5.1v.
Sedemsegmentni zaslon 4 v 1 se uporablja za prikaz trenutne vrednosti napetosti avtomobilskega akumulatorja, ki je priključena na PORTB in PORTC mikrokrmilnika. 5v napetostni regulator, in sicer LM7805, se uporablja za napajanje celotnega vezja, vključno s sedmimi segmentnimi zasloni. Za urjenje mikrokrmilnika se uporablja 20 MHz kristalni oscilator. Vezje napaja sam avtomobilski polnilnik USB z uporabo LM7805. V tiskano vezje smo dodali vrata USB, tako da lahko na vezje neposredno priključimo avtomobilski polnilnik USB.
Avtomobilski polnilnik USB ali vžigalnik zagotavlja 5v regulirano napajanje iz 12v električne vtičnice avtomobila, vendar moramo izmeriti dejansko napetost avtomobilske baterije, zato smo avto polnilnik prilagodili. Odpreti morate avtomobilski polnilnik USB, nato najti 5v (izhodni) in 12v (vhodni) terminal in nato odstraniti 5v povezavo, tako da ga podrgnete z brusnim papirjem ali s kakšno trdo stvarjo in neposredno izhodni priključek USB skrajšate na 12v. Najprej odprite 5v povezavo iz vrat USB v avtomobilskem polnilniku USB in nato 12v priključite na vrata USB, kamor je bil priključen 5v. Kot je prikazano na spodnji sliki, smo prekinili rdeče obkroženo povezavo, saj se lahko pri vašem avtomobilskem polnilniku razlikuje.
Za nastavitev ADC smo tukaj izbrali analogni pin AN0 z notranjo referenčno napetostjo 5v in uro f / 32 za pretvorbo ADC.
Za izračun napetosti avtomobilskega akumulatorja iz vrednosti ADC smo uporabili naslednjo formulo:
Napetost = (vrednost ADC / faktor upora) * referenčna napetost Kjer: vrednost ADC = izhod napetostnega delilnika (pretvorjen v digitalni z mikrokrmilnikom) Faktor upora = 1023,0 / (R2 / R1 + R2) // 1023 je največja vrednost ADC (10- bit) Referenčna napetost = 5 voltov // izbrana notranja referenca 5v
Izračun faktorja upora:
V tem projektu beremo napetost akumulatorja v avtomobilu, ki je (na splošno) okoli 12v-14v. Torej smo izvedli ta projekt ob predpostavki, da največ 15v pomeni, da je ta sistem mogoče brati največ do 15v.
Torej v vezju smo uporabili upor R1 in R2 v delu delilnika napetosti in vrednosti so:
R1 = 2K
R2 = 1K
Faktor upora = 1023,0 * (1000/2000 + 1000)
Faktor upora = 1023,0 * (1/3)
Faktor upora = 341,0 za do 15 voltov
Končna formula za izračun napetosti bo torej naslednja, pri čemer smo uporabili Kodeks, podan na koncu tega članka:
Napetost = (vrednost ADC / 341,0) * 5,0
Oblikovanje vezij in tiskanih vezij s pomočjo EasyEDA:
Za zasnovo vezja za nadzor napetosti avtomobilskih akumulatorjev smo uporabili EasyEDA, ki je brezplačno spletno orodje EDA za nemoteno ustvarjanje vezij in PCB-jev. Pred tem smo pri EasyEDA naročili nekaj PCB-jev in še vedno uporabljamo njihove storitve, saj smo ugotovili, da je celoten postopek, od risanja vezij do naročanja PCB-jev, bolj primeren in učinkovit v primerjavi z drugimi proizvajalci PCB. EasyEDA ponuja brezplačno risanje vezij, simulacije in oblikovanje tiskanih vezij, poleg tega pa nudi tudi visoko kakovostno, a nizko ceno prilagojeno storitev PCB Tukaj si oglejte celotno vadnico o tem, kako uporabljati Easy EDA za izdelavo shem, postavitev PCB, simulacijo vezij itd
EasyEDA se izboljšuje iz dneva v dan; dodali so številne nove funkcije in izboljšali splošno uporabniško izkušnjo, zaradi česar je EasyEDA enostavnejša in uporabnejša za načrtovanje vezij. Kmalu bodo lansirali svojo namizno različico, ki jo lahko naložite in namestite v računalnik za uporabo brez povezave.
V EasyEDA lahko svoje načrte vezij in tiskanih vezij objavite tako, da jih lahko drugi uporabniki kopirajo ali urejajo in od tega izkoristijo. Za ta monitor napetosti avtomobilskih baterij smo objavili tudi celotno postavitev vezij in tiskanih vezij , preverite spodnjo povezavo:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Spodaj je Snapshot of Top layer of PCB layout from EasyEDA, lahko si ogledate katero koli plast (Top, Bottom, Topsilk, bottomomskil itd.) PCB-ja tako, da v oknu 'Layers' izberete plast.
Izračun in naročanje vzorcev PCB na spletu:
Po končanem oblikovanju PCB-ja lahko kliknete ikono Fabrication output , ki vas popelje na stran za naročilo PCB-ja. Tu si lahko ogledate tiskano vezje v pregledovalniku Gerber Viewer ali prenesete Gerberjeve datoteke s tiskanega vezja in jih pošljete kateremu koli proizvajalcu, prav tako je veliko lažje (in cenejše), da ga naročite neposredno v EasyEDA. Tu lahko izberete število PCB-jev, ki jih želite naročiti, koliko bakrenih plasti potrebujete, debelino PCB-ja, težo bakra in celo barvo PCB-ja. Ko izberete vse možnosti, kliknite »Shrani v košarico« in dokončajte naročilo, nato boste nekaj dni kasneje dobili svoje PCB-je.
To PCB lahko neposredno naročite ali prenesete datoteko Gerber s pomočjo te povezave.
Po nekaj dneh naročanja PCB sem dobil vzorce PCB
Ko sem dobil PCB-je, sem na PCB namestil vse zahtevane komponente in končno imamo pripravljen sistem za nadzor avtomobilskih baterij, preverite to vezje pri delu v videoposnetku na koncu.
Pojasnilo programiranja:
Program tega projekta je za začetnike malo težaven. Za pisanje te kode potrebujemo nekaj datotek z glavo. Tu uporabljamo MPLAB X IDE za kodiranje in XC prevajalnik za izdelavo in prevajanje kode. Koda je napisana v jeziku C.
V tej kodi smo odčitali napetost akumulatorja z analognim zatičem, za nadzor ali pošiljanje podatkov na 4-mestni sedemsegmentni zaslon pa smo uporabili Timer Interrupt Server Rutine v mikrokrmilniku PIC. Vsi izračuni za merjenje napetosti se opravijo v glavni programski rutini.
Najprej smo v kodo vključili glavo in nato s pomočjo nastavitvenih bitov konfigurirali mikrokrmilnik PIC.
#include
Nato se prikažejo deklarirane spremenljivke in definirani zatiči za sedem segmentov
nepodpisan int števec2; nepodpisan položaj znaka = 0; nepodpisani znak k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int številka1 = 0, številka2 = 0, številka3 = 0, številka4 = 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………………
Zdaj smo ustvarili rutino prekinitev s časovnikom za vožnjo sedemsegmentnega zaslona:
nična prekinitev low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; if (counter2> = 1) {if (position == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Zdaj v funkciji void main () smo inicializirali časovnik in prekinitev.
GIE = 1; // GLOBLE INTRRUPT ONABLE PEIE = 1; // periferna zastavica prekinitve T0CON = 0b000000000; // vrednost predkalirnika dal TMR0IE = 1; // prekinitev omogoči TMR0IP = 0; // prednost prekinitve TMR0 = 55536; // števec začne po tej vrednosti TMR0ON = 1;
In nato v zanki while preberemo analogni vhod na analognem zatiču in pokličemo neko funkcijo za izračune.
medtem ko (1) {adc_init (); for (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = vrednost; } adcValue = (float) adcValue / 40,0; pretvori (adcValue); zamuda (100); }
Dana funkcija adc_init () se uporablja za inicializacijo ADC
neveljavno adc_init () {ADCON0 = 0b00000011; // izberemo adc kanal ADCON1 = 0b00001110; // izberemo analogni in digitalni i / p ADCON2 = 0b10001010; // čas izenačevanja čas zadrževanja ADON = 1; }
Dana funkcija adc_value se uporablja za branje vhoda z analognega zatiča in izračun napetosti.
float adc_value (void) {float adc_data = 0; medtem ko (GO / DONE == 1); // višji bit podatkov začne pretvorbo vrednost adc_data = (ADRESL) + (ADRESH << 8); // Shrani 10-bitni izhod adc_data = ((adc_data / 342.0) * 5.0); vrni adc_data; }
In dana funkcija pretvorbe se uporablja za pretvorbo vrednosti napetosti v segmentirane podprte vrednosti.
pretvorba praznin (float f) {int d = (f * 100); številka1 = d% 10; d = d / 10; številka2 = d% 10; d = d / 10; številka3 = d% 10; številka4 = d / 10; }
Spodaj z demonstracijskim videom preverite celotno kodo tega projekta.