- Požadované komponenty:
- Popis:
- Schéma zapojení a pracovní vysvětlení:
- Návrh obvodů a desek plošných spojů pomocí EasyEDA:
- Výpočet a objednání vzorků PCB online:
- Vysvětlení programování:
V tomto projektu budeme vyrábět PIC monitorovací systém pro automobilové baterie na PCB. Zde jsme navrhli desku plošných spojů pomocí online simulátoru a návrháře desek EASYEDA. Tento monitorovací obvod automobilové baterie se používá ke sledování výkonu automobilové baterie pouhým zapojením do elektrické zásuvky na palubní desce automobilu. PCB má také možnost, aby jej použít jako měření napětí nástroj nebo voltmetr bez použití USB nabíječka do auta. Připojili jsme sem svorkovnici pro měření napětí jiných zdrojů energie pouhým připojením dvou vodičů v ní ze zdroje energie.
Požadované komponenty:
- Mikrokontrolér PIC PIC18F2520 -1
- Vyrobená deska plošných spojů -1
- USB konektor -1
- 2kolíkový konektor terminálu (volitelný) -1
- Společný anodový sedmisegmentový displej (4 v 1) -1
- Tranzistor BC557 -4
- 1k rezistor -6
- 2k rezistor -1
- 100R rezistor -8
- 1000uF kondenzátor -1
- 10uF kondenzátor -1
- 28kolíková IC základna -1
- ženské paličky -1
- 7805 Regulátor napětí -1
- USB nabíječka do auta -1
- LED -1
- Zenerova dioda 5,1 V -2
- Kabel USB (kompatibilní s typem B nebo Arduino UNO) -1
- 20MHz krystal -1
- Kondenzátor 33pF -2
Popis:
Obecně není důležité měřit energii autobaterie pokaždé, ale často potřebujeme vědět o napětí baterie během nabíjení, abychom zkontrolovali, zda se nabíjí nebo ne. Tímto způsobem můžeme chránit selhání baterie v důsledku vadného systému nabíjení. Napětí 12v autobaterie během nabíjení je přibližně 13,7v. Můžeme tedy určit, zda se naše baterie dobíjí dobře nebo ne, a můžeme prozkoumat příčiny poruchy baterie. V tomto projektu budeme implementovat měřič napětí pro autobaterii pomocí mikrokontroléru PIC. Zapalovač cigaret do auta nebo USB nabíječka do auta se používá k přivedení napětí baterie na kolík ADC mikrokontroléru pomocí Voltage Divider Circuit. Poté čtyřmístný sedmisegmentový displejse používá k zobrazení hodnoty napětí baterie. Tento obvod může měřit napětí až do 15V.
Když se autobaterie nabíjí, pak napětí na svorkách baterie ve skutečnosti pochází z alternátoru / usměrňovače, proto systém čte 13,7 voltů. Pokud se však baterie nenabíjí nebo motor automobilu není zapnutý, pak napětí na svorce baterie je skutečné napětí baterie kolem 12v.
Stejný obvod můžeme použít i pro měření napětí jiných zdrojů energie do 15V. Za tímto účelem jsme připájeli svorkovnici (plastový blok zelené barvy) na desku plošných spojů, kde můžete připojit dva vodiče ze zdroje napájení a sledovat napětí. Podívejte se na video na konci, kde jsme to demonstrovali měřením napětí variabilního napájecího zdroje, USB powerbanky a 12v AC-DC adaptéru. Zkontrolujte také obvod Simple Battery Monitor Circuit a obvod 12V nabíječky baterií.
Schéma zapojení a pracovní vysvětlení:
V tomto obvodu monitorování napětí baterie jsme odečetli napětí automobilové baterie pomocí vestavěného analogového kolíku mikrokontroléru PIC a zde jsme vybrali kolík AN0 (28) mikrokontroléru přes obvod děliče napětí. Zenerova dioda 5,1 V se také používá k ochraně.
Sedmisegmentový displej 4 v 1 se používá pro zobrazení okamžité hodnoty napětí baterie automobilu, která je připojena na PORTB a PORTC mikrokontroléru. 5V regulátor napětí, jmenovitě LM7805, se používá k napájení celého obvodu včetně sedmi segmentových displejů. K taktování mikrokontroléru se používá krystalový oscilátor 20 MHz. Circuit je napájen samotnou USB nabíječkou do auta pomocí LM7805. Přidali jsme USB port na PCB, abychom mohli přímo připojit USB nabíječku do auta k obvodu.
USB nabíječka do auta nebo zapalovač cigaret poskytuje regulované napájení 5 V z 12 V zásuvky automobilu, ale musíme změřit skutečné napětí autobaterie, takže jsme vylepšili nabíječku do auta. Musíte otevřít USB nabíječku do auta a poté najít svorky 5v (výstup) a 12v (vstup) a poté připojení 5v odstranit otřením pískovým papírem nebo nějakou tvrdou věcí a zkratovat výstupní svorku USB přímo na 12V. Nejprve otevřete 5V připojení z USB portu v USB nabíječce do auta a poté připojte 12V k USB portu, kde bylo připojeno 5V. Jak je znázorněno na následujícím obrázku, přerušili jsme červený kroužek, který se může u vaší nabíječky do auta lišit.
Pro konfiguraci ADC jsme zde vybrali analogový pin AN0 s interním referenčním napětím 5v a hodiny f / 32 pro převod ADC.
Pro výpočet napětí autobaterie z hodnoty ADC jsme použili daný vzorec:
Napětí = (hodnota ADC / faktor odporu) * reference Voltage Kde: Hodnota ADC = výstup děliče napětí (převedený na digitální mikrokontrolérem) Faktor odporu = 1023,0 / (R2 / R1 + R2) // 1023 je maximální hodnota ADC (10- bit) Referenční napětí = 5 voltů // vybrána interní reference 5v
Výpočet faktoru odporu:
V tomto projektu čteme napětí automobilové baterie, které je (obecně) kolem 12v-14v. Takže jsme tento projekt provedli za předpokladu, že max. 15 V znamená, že tento systém lze číst max. Až 15 V.
Takže v obvodu jsme použili odpor R1 a R2 v části děliče napětí a hodnoty jsou:
R1 = 2 tis
R2 = 1K
Faktor odporu = 1023,0 * (1000/2000 + 1000)
Faktor odporu = 1023,0 * (1/3)
Faktor odporu = 341,0 pro až 15 voltů
Konečný vzorec pro výpočet napětí bude tedy následující, kterým jsme použili Kodex uvedený na konci tohoto článku:
Napětí = (hodnota ADC / 341,0) * 5,0
Návrh obvodů a desek plošných spojů pomocí EasyEDA:
K návrhu obvodu pro sledování napětí baterie automobilu jsme použili EasyEDA, což je bezplatný online nástroj EDA pro bezproblémové vytváření obvodů a desek plošných spojů. Dříve jsme si objednali několik desek plošných spojů od společnosti EasyEDA a stále využíváme jejich služeb, protože jsme našli celý proces, od kreslení obvodů až po objednání desek plošných spojů, pohodlnější a efektivnější ve srovnání s jinými výrobci desek plošných spojů. EasyEDA nabízí kreslení obvodů, simulace, návrh desek plošných spojů zdarma a také nabízí vysoce kvalitní, ale nízkou cenu přizpůsobené služby PCB. Zde si přečtěte kompletní návod, jak používat Easy EDA k vytváření schémat, rozložení desek plošných spojů, simulace obvodů atd.
EasyEDA se každým dnem zlepšuje; přidali mnoho nových funkcí a vylepšili celkový uživatelský komfort, což usnadňuje a umožňuje EasyEDA návrh obvodů. Brzy se chystají spustit jeho verzi pro stolní počítače, kterou lze stáhnout a nainstalovat do počítače pro offline použití.
V EasyEDA můžete své návrhy obvodů a desek plošných spojů zveřejnit, aby je mohli ostatní uživatelé kopírovat nebo upravovat a využívat je. Zveřejnili jsme také celé naše uspořádání obvodů a desek plošných spojů pro tento monitor napětí baterie automobilu, zkontrolujte níže uvedený odkaz:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Níže je snímek horní vrstvy rozložení PCB od EasyEDA, můžete zobrazit libovolnou vrstvu (horní, dolní, horní, spodní, spodní atd.) Desky plošných spojů výběrem vrstvy z okna „Vrstvy“.
Výpočet a objednání vzorků PCB online:
Po dokončení návrhu desky plošných spojů můžete kliknout na ikonu Fabrication output , která vás přenese na stránku objednávky desky plošných spojů. Zde si můžete prohlédnout svoji PCB v Gerber Vieweru nebo stáhnout soubory Gerber z vaší PCB a poslat je libovolnému výrobci, je také mnohem jednodušší (a levnější) objednat si ji přímo v EasyEDA. Zde můžete vybrat počet desek plošných spojů, které chcete objednat, kolik měděných vrstev potřebujete, tloušťku desky plošných spojů, hmotnost mědi a dokonce i barvu desky plošných spojů. Poté, co vyberete všechny možnosti, klikněte na „Uložit do košíku“ a dokončete objednávku. O několik dní později získáte PCB.
Tuto desku plošných spojů si můžete přímo objednat nebo stáhnout soubor Gerber pomocí tohoto odkazu.
Po několika dnech objednání desek plošných spojů jsem dostal vzorky desek plošných spojů
Po získání desek plošných spojů jsem namontoval všechny požadované komponenty přes desku plošných spojů a konečně máme připravený náš monitorovací systém automobilové baterie, zkontrolujte tento obvod při práci ve videu uvedeném na konci.
Vysvětlení programování:
Program tohoto projektu je pro začátečníky málo náročný. K napsání tohoto kódu potřebujeme několik hlavičkových souborů. Zde používáme MPLAB X IDE pro kódování a kompilátor XC k sestavení a kompilaci kódu. Kód je napsán v jazyce C.
V tomto kódu jsme načetli napětí baterie pomocí analogového kolíku a pro ovládání nebo odesílání dat na čtyřmístný sedmisegmentový displej jsme použili rutinu Timer Interrupt Server v mikrokontroléru PIC. Veškerý výpočet pro měření napětí se provádí v hlavní programové rutině.
Nejprve jsme do kódu zahrnuli záhlaví a poté nakonfigurovali mikrokontrolér PIC pomocí konfiguračních bitů.
#zahrnout
Poté se zobrazí deklarované proměnné a definované piny pro sedm segmentů
unsigned int counter2; unsigned char pozice = 0; nepodepsaný 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……………..
Nyní jsme vytvořili rutinu přerušení časovače pro řízení sedmisegmentového displeje:
void interrupt low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; if (counter2> = 1) {if (position == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Nyní ve funkci void main () jsme inicializovali časovač a přerušení.
GIE = 1; // GLOBLE INTRRUPT ENABLE PEIE = 1; // příznak periferního narušení T0CON = 0b000000000; // přednastavená hodnota put TMR0IE = 1; // přerušení povoleno TMR0IP = 0; // priorita přerušení TMR0 = 55536; // počitadlo po této hodnotě TMR0ON = 1;
A pak ve smyčce while načteme analogový vstup na analogovém pinu a zavoláme nějakou funkci pro výpočty.
while (1) {adc_init (); for (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = hodnota; } adcValue = (float) adcValue / 40.0; převést (adcValue); zpoždění (100); }
Vzhledem k tomu, adc_init () funkce se používá pro inicializaci ADC
void adc_init () {ADCON0 = 0b00000011; // výběr adc kanálu ADCON1 = 0b00001110; // výběr analogového a digitálního i / p ADCON2 = 0b10001010; // doba ekvalizace časová prodleva ADON = 1; }
Vzhledem k tomu, adc_value funkce se používá ke čtení vstupu z analogového čepu a vypočítat napětí.
float adc_value (void) {float adc_data = 0; while (GO / DONE == 1); // vyšší bitová data začnou konverzi adc hodnota adc_data = (ADRESL) + (ADRESH << 8); // Uložení 10bitového výstupu adc_data = ((adc_data / 342.0) * 5,0); vrátit adc_data; }
A daná funkce převodu se používá k převodu hodnoty napětí na hodnoty podporované segmentem.
void convert (float f) {int d = (f * 100); číslice 1 = d% 10; d = d / 10; číslice 2 = d% 10; d = d / 10; číslice 3 = d% 10; digit4 = d / 10; }
Níže zkontrolujte kompletní kód tohoto projektu s ukázkovým videem.