- Požadované komponenty:
- Popis:
- Schéma zapojenia a pracovné vysvetlenie:
- Dizajn obvodov a DPS pomocou EasyEDA:
- Výpočet a objednávanie vzoriek PCB online:
- Vysvetlenie programovania:
V tomto projekte vyrobíme PIC systém monitorovania batérií do auta na PCB. Tu sme navrhli DPS pomocou online simulátora a dizajnéra EASYEDA PCB. Tento monitorovací obvod automobilovej batérie sa používa na monitorovanie výkonu autobatérie jednoduchým pripojením do elektrickej zásuvky na prístrojovej doske automobilu. PCB má tiež možnosť, aby ho použiť ako meranie napätia nástroj alebo voltmeter bez použitia USB nabíjačka do auta. Pripojili sme sem svorkovnicu na meranie napätia iných zdrojov energie, len pripojením dvoch vodičov v nej od zdroja energie.
Požadované komponenty:
- Mikrokontrolér PIC PIC18F2520 -1
- Vyrobená doska plošných spojov -1
- USB konektor -1
- 2-pólový konektor (voliteľný) -1
- Spoločný anódový sedem segmentový displej (4 v 1) -1
- Tranzistor BC557 -4
- 1k rezistor -6
- 2k rezistor -1
- 100R odpor -8
- 1000uF kondenzátor -1
- 10uF kondenzátor -1
- 28 kolíková IC základňa -1
- samice meštianok -1
- 7805 Regulátor napätia -1
- USB nabíjačka do auta -1
- LED -1
- Zenerova dióda5,1v -2
- Kábel USB (kompatibilný s typom B alebo Arduino UNO) -1
- 20MHz kryštál -1
- Kondenzátor 33pF -2
Popis:
Všeobecne nie je dôležité merať výkon batérie automobilu zakaždým, ale často musíme vedieť o napätí batérie počas nabíjania, aby sme skontrolovali, či sa nabíja alebo nie. Týmto môžeme chrániť poruchu batérie v dôsledku chybného systému nabíjania. Napätie 12v autobatérie počas nabíjania je asi 13,7v. Takže môžeme zistiť, či sa naša batéria nabíja dobre alebo nie, a môžeme preskúmať príčiny poruchy batérie. V tomto projekte budeme implementovať merač napätia pre autobatériu pomocou mikrokontroléra PIC. Zapaľovač cigariet do auta alebo USB nabíjačka do auta sa používajú na napájanie z batérie na kolík ADC mikrokontroléra pomocou obvodu Voltage Divider Circuit. Potom štvormiestny sedemsegmentový displejsa používa na zobrazenie hodnoty napätia batérie. Tento obvod môže merať napätie až 15V.
Keď sa autobatéria nabíja, potom napätie na svorkách batérie skutočne pochádza z alternátora / usmerňovača, preto systém číta 13,7 voltov. Pokiaľ sa ale batéria nenabíja alebo ak nie je zapnutý motor vozidla, potom je napätie na svorke batérie skutočné napätie batérie okolo 12v.
Rovnaký obvod môžeme použiť aj na meranie napätia iných zdrojov energie do 15v. Za týmto účelom sme spájkovali svorkovnicu (plastový blok zelenej farby) na PCB, kde môžete pripojiť dva vodiče zo zdroja napájania a sledovať napätie. Na konci skontrolujte video, kde sme to demonštrovali meraním napätia variabilného zdroja napájania, napájacej banky USB a adaptéra 12V AC-DC. Skontrolujte tiež obvod monitora jednoduchej batérie a obvod nabíjačky batérie 12v.
Schéma zapojenia a pracovné vysvetlenie:
V tomto obvode na monitorovanie napätia batérie sme čítali napätie v autobatérii pomocou zabudovaného analógového kolíka mikrokontroléra PIC a tu sme vybrali kolík AN0 (28) mikrokontroléra cez obvod deliča napätia. Na ochranu sa používa aj zenerova dióda 5,1 V.
Sedemsegmentový displej 4 v 1 sa používa na zobrazenie okamžitej hodnoty napätia autobatérie, ktorá je pripojená na PORTB a PORTC mikrokontroléra. Na napájanie celého obvodu vrátane sedemsegmentových displejov sa používa 5V regulátor napätia, konkrétne LM7805. Na taktovanie mikrokontroléra sa používa 20 MHz kryštálový oscilátor. Obvod je napájaný samotnou USB nabíjačkou do auta pomocou LM7805. Pridali sme USB port do DPS, takže môžeme priamo zapojiť USB nabíjačku do auta do obvodu.
USB nabíjačka do auta alebo zapaľovač cigariet poskytuje regulované napájanie 5 V z 12 V zásuvky v automobile, ale musíme merať skutočné napätie autobatérie, aby sme vylepšili nabíjačku do auta. Musíte otvoriť USB nabíjačku do auta a potom nájsť 5v (výstup) a 12v (vstup) svorky a potom odpojiť 5v pripojenie tak, že ho pretriete brúsnym papierom alebo nejakou tvrdou vecou a skratujete výstupný USB konektor priamo na 12v. Najskôr otvorte 5v pripojenie z USB portu v USB nabíjačke v aute a potom pripojte 12v do USB portu, kde bolo pripojené 5v. Ako je znázornené na nasledujúcom obrázku, prerušili sme pripojenie s červeným krúžkom, ktoré sa môže líšiť v závislosti od nabíjačky do auta.
Pre konfiguráciu ADC sme tu vybrali analógový pin AN0 s vnútorným referenčným napätím 5v a f / 32 hodiny pre prevod ADC.
Na výpočet napätia autobatérie z hodnoty ADC sme použili daný vzorec:
Napätie = (hodnota ADC / faktor rezistora) * referenčné napätie Kde: Hodnota ADC = výstup deliča napätia (prevedený na digitálny mikrokontrolér) Rezistorový faktor = 1023,0 / (R2 / R1 + R2) // 1023 je maximálna hodnota ADC (10 bit) Referenčné napätie = 5 voltov // je vybraná interná referencia 5v
Výpočet faktora odporu:
V tomto projekte čítame napätie autobatérie, ktoré je (všeobecne) okolo 12v-14v. Tento projekt sme teda vykonali za predpokladu, že max. 15 V znamená, že tento systém je možné načítať maximálne do 15 V.
Takže v obvode sme použili odpor R1 a R2 v časti deliča napätia a hodnoty sú:
R1 = 2 tis
R2 = 1K
Faktor odporu = 1023,0 * (1000/2000 + 1000)
Faktor odporu = 1023,0 * (1/3)
Faktor odporu = 341,0 až do 15 voltov
Konečný vzorec na výpočet napätia bude teda nasledovný, ktorý sme použili v kódexe uvedenom na konci tohto článku:
Napätie = (hodnota ADC / 341,0) * 5,0
Dizajn obvodov a DPS pomocou EasyEDA:
Na návrh obvodu pre monitor napätia akumulátora v automobile sme použili EasyEDA, čo je bezplatný online nástroj EDA na bezproblémové vytváranie obvodov a dosiek plošných spojov. Predtým sme si objednali niekoľko desiek plošných spojov od spoločnosti EasyEDA a stále využívame ich služby, pretože sme zistili, že celý proces od nakreslenia obvodov po objednanie dosiek plošných spojov je v porovnaní s ostatnými výrobcami dosiek plošných spojov pohodlnejší a efektívnejší. EasyEDA ponúka bezplatné zapojenie, simuláciu, návrh DPS a tiež ponúka vysoko kvalitnú, ale nízku cenu prispôsobenej služby DPS. Tu si pozrite kompletný návod, ako používať Easy EDA na tvorbu schém, rozložení dosiek plošných spojov, simulácie obvodov atď.
EasyEDA sa zlepšuje každým dňom; pridali veľa nových funkcií a vylepšili celkovú užívateľskú skúsenosť, vďaka čomu je program EasyEDA ľahší a použiteľný na navrhovanie obvodov. Čoskoro uvedú na trh svoju verziu pre stolné počítače, ktorú si môžete stiahnuť a nainštalovať do svojho počítača na použitie v režime offline.
V aplikácii EasyEDA môžete zverejniť svoje návrhy obvodov a dosiek plošných spojov tak, aby ich ostatní používatelia mohli kopírovať alebo upravovať a využívať ich výhody. Pre tento monitor napätia batérie v automobile sme tiež zverejnili celé naše usporiadania obvodov a dosiek plošných spojov , skontrolujte nasledujúci odkaz:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Nižšie je uvedený obrázok vrchnej vrstvy rozloženia PCB z EasyEDA. Môžete si zobraziť ľubovoľnú vrstvu (vrchná, spodná, vrchná vrstva, spodná vrstva atď.) PCB výberom vrstvy z okna „Vrstvy“.
Výpočet a objednávanie vzoriek PCB online:
Po dokončení návrhu DPS môžete kliknúť na ikonu Výstup výroby , ktorá vás prevedie na stránku objednávky DPS. Tu si môžete pozrieť svoju DPS v prehliadači Gerber Viewer alebo si stiahnuť súbory Gerber z DPS a poslať ich ľubovoľnému výrobcovi. Objednávka priamo v EasyEDA je tiež oveľa ľahšia (a lacnejšia). Tu môžete zvoliť počet DPS, ktoré chcete objednať, koľko vrstiev medi potrebujete, hrúbku DPS, hmotnosť medi a dokonca aj farbu DPS. Po výbere všetkých možností kliknite na tlačidlo „Uložiť do košíka“ a dokončite objednávku. O niekoľko dní neskôr získate svoje PCB.
Túto DPS si môžete priamo objednať alebo stiahnuť súbor Gerber pomocou tohto odkazu.
Po niekoľkých dňoch objednania DPS som dostal vzorky DPS
Po získaní dosiek plošných spojov som namontoval všetky požadované komponenty na dosku plošných spojov a nakoniec máme pripravený systém monitorovania batérií do auta, skontrolujte tento obvod pri práci vo videu na konci.
Vysvetlenie programovania:
Program tohto projektu je pre začiatočníkov náročný. Na napísanie tohto kódu potrebujeme niekoľko hlavičkových súborov. Tu používame MPLAB X IDE na kódovanie a kompilátor XC na zostavenie a kompiláciu kódu. Kód je napísaný v jazyku C.
V tomto kóde sme načítali napätie batérie pomocou analógového kolíka a na riadenie alebo odosielanie údajov na štvormiestny sedemsegmentový displej sme použili rutinu časovača prerušenia servera v mikrokontroléri PIC. Celý výpočet merania napätia sa vykonáva v rutine hlavného programu.
Najskôr sme do kódu zahrnuli hlavičku a potom nakonfigurovali mikrokontrolér PIC pomocou konfiguračných bitov.
#include
Potom sa zobrazia deklarované premenné a definované piny pre sedem segmentov
unsigned int counter2; pozícia znaku bez znamienka = 0; nepodpísaný znak 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………………
Teraz sme vytvorili rutinu prerušenia časovača pre riadenie sedemsegmentového displeja:
void prerušenie low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; if (counter2> = 1) {if (position == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Teraz vo funkcii void main () sme inicializovali časovač a prerušenie.
GIE = 1; // GLOBLE INTRRUPT ENABLE PEIE = 1; // príznak narušenia periférie T0CON = 0b000000000; // prednastavovač hodnoty put TMR0IE = 1; // prerušenie povoliť TMR0IP = 0; // priorita prerušenia TMR0 = 55536; // spustiť počítadlo po tejto hodnote TMR0ON = 1;
A potom v while slučky, čítame analógového vstupu na analógový pin a volanie niektoré funkcie pre výpočty.
while (1) {adc_init (); pre (i = 0; i <40; i ++) {Hodnota = adc_value (); adcValue + = hodnota; } adcValue = (float) adcValue / 40.0; konvertovať (adcValue); oneskorenie (100); }
Daná funkcia adc_init () sa používa na inicializáciu ADC
void adc_init () {ADCON0 = 0b00000011; // vyberte adc kanál ADCON1 = 0b00001110; // výber analógového a digitálneho i / p ADCON2 = 0b10001010; // čas ekvalizácie čas udržania čiapky ADON = 1; }
Vzhľadom k tomu, adc_value funkcie sa používa na čítanie vstupu z analógového čapu a vypočítať napätie.
float adc_value (void) {float adc_data = 0; while (GO / DONE == 1); // vyššie bitové dáta spustia konverziu adc hodnota adc_data = (ADRESL) + (ADRESH << 8); // Uložiť 10-bitový výstup adc_data = ((adc_data / 342.0) * 5,0); návrat adc_data; }
A daná funkcia prevodu sa používa na prevod hodnoty napätia na hodnoty podporované segmentom.
void convert (float f) {int d = (f * 100); číslica 1 = d% 10; d = d / 10; číslica 2 = d% 10; d = d / 10; číslica 3 = d% 10; číslica 4 = d / 10; }
Skontrolujte demonštračným videom nižšie kompletný kód tohto projektu.