- Vaaditut komponentit:
- Kuvaus:
- Piirikaavio ja selitys:
- Piirin ja piirilevyn suunnittelu EasyEDA: n avulla:
- PCB-näytteiden laskeminen ja tilaaminen verkossa:
- Ohjelmoinnin selitys:
Tässä projektissa aiomme tehdä PIC-pohjaisen auton akunvalvontajärjestelmän piirilevylle. Täällä olemme suunnitelleet piirilevyn käyttämällä EASYEDA-piirilevyn simulaattoria ja suunnittelijaa. Tätä auton akunvalvontapiiriä käytetään auton akun virran tarkkailemiseen kytkemällä se vain auton kojelaudan pistorasiaan. PCB on myös mahdollisuus käyttää sitä -jännitteenmittaus työkalua tai Voltmeter ilman USB-autolaturi. Olemme liittäneet tähän riviliittimen mittaamaan muiden virtalähteiden jännitteen, vain liittämällä siihen kaksi johtoa virtalähteestä.
Vaaditut komponentit:
- PIC-mikrokontrolleri PIC18F2520-1
- Valmistettu piirilevy -1
- USB-liitin -1
- 2-napainen liitinliitin (valinnainen) -1
- Yhteinen anodiseitsemän segmentin näyttö (4 in 1) -1
- BC557-transistori -4
- 1k vastus -6
- 2k vastus -1
- 100R vastus -8
- 1000uF kondensaattori -1
- 10uF kondensaattori -1
- 28-napainen IC-pohja -1
- naaraspuoliset burgstickit -1
- 7805 Jännitesäädin -1
- Auton USB-laturi -1
- LED -1
- Zener-diodi 5,1v -2
- USB-kaapeli (B-tyypin tai Arduino UNO -yhteensopiva) -1
- 20 MHz: n kristalli -1
- 33pF-kondensaattori -2
Kuvaus:
Yleensä ei ole tärkeää mitata auton akkutehoa joka kerta, mutta meidän on usein tiedettävä akun jännitteestä latauksen aikana, jotta voimme tarkistaa, latautuuko se. Tällä tavoin voimme suojata akkuvirheen viallisesta latausjärjestelmästä johtuen. 12v: n auton akun jännite latauksen aikana on noin 13,7v. Joten voimme tunnistaa, lataako akkumme hyvin vai ei, ja voimme tutkia akun vikaantumisen syitä. Tässä projektissa aiomme toteuttaa jännitemittarin auton akulle käyttämällä PIC-mikrokontrolleria. Auton tupakansytyttimellä tai auton USB-laturilla akun jännite viedään mikro-ohjaimen ADC-nastaan jännitteenjakajan piirin avulla. Sitten nelinumeroinen seitsemän segmentin näyttökäytetään osoittamaan akun jännitteen arvo. Tämä piiri voi mitata jännitteen jopa 15 volttiin.
Kun auton akku latautuu, akun napojen jännite tulee tosiasiallisesti laturista / tasasuuntaajasta, siksi järjestelmä lukee 13,7 volttia. Mutta kun akkua ei ladata tai auton moottori ei ole PÄÄLLÄ, akun navan jännite on todellinen akun jännite noin 12 V.
Samaa virtapiiriä voidaan käyttää myös muiden 15 V: n virtalähteiden jännitteen mittaamiseen. Tätä tarkoitusta varten olemme juottaneet piirilevyn riviliittimen (vihreä muovilohko), johon voit liittää kaksi johtoa virtalähteestä ja valvoa jännitettä. Tarkista video lopussa, missä olemme osoittaneet sen mittaamalla vaihtelevan virtalähteen, USB-virtapankin ja 12 voltin AC-DC-sovittimen jännitteen. Tarkista myös yksinkertainen akunvalvontapiiri ja 12 voltin akkulaturi.
Piirikaavio ja selitys:
Tässä akun jännitteenvalvontapiirissä olemme lukeneet auton akun jännitteen käyttämällä sisäänrakennettua PIC-mikrokontrollerin analogista nastaa ja täältä olemme valinneet mikro-ohjaimen nastan AN0 (28) jännitteenjakajan piirin kautta. Suojaukseen käytetään myös 5,1 V: n zener-diodia.
4 in 1 seitsemän segmentin näyttöä käytetään näyttämään auton akun jännitteen hetkellinen arvo, joka on kytketty mikro-ohjaimen PORTB- ja PORTC-liitäntöihin. 5 V: n jännitesäätäjää, nimittäin LM7805, käytetään virtamaan koko piiri, mukaan lukien seitsemän segmenttinäyttöä. 20 MHz: n kideoskillaattoria käytetään mikro-ohjaimen kellottamiseen. Piiri saa virtansa itse USB-autolaturista LM7805: n avulla. Olemme lisänneet piirilevyyn USB-portin, joten voimme liittää auton USB-laturin suoraan piiriin.
Auton USB-laturi tai tupakansytytin tarjoaa 5 V: n säännellyn virran auton 12 V: n pistorasiasta, mutta meidän on mitattava auton akun todellinen jännite, jotta olemme muuttaneet autolaturia. Sinun on avattava auton USB-laturi ja löydettävä sitten 5v (lähtö) ja 12v (tulo) -liittimet ja poistettava 5v-liitäntä hieromalla sitä hiekkapaperilla tai jollakin kovalla esineellä ja oikosuljettava USB-lähtöliitin suoraan 12v: iin. Avaa ensin 5v-liitäntä auton USB-laturin USB-portista ja liitä sitten 12v USB-porttiin, johon 5v oli kytketty. Kuten alla olevassa kuvassa on esitetty, olemme katkaisseet punaisen ympyröidyn yhteyden, se voi olla erilainen autolaturissasi.
ADC: n konfigurointia varten olemme valinneet analogisen nastan AN0, jonka sisäinen referenssijännite on 5v ja f / 32-kello ADC-muunnosta varten.
Auton akun jännitteen laskemiseksi ADC-arvosta olemme käyttäneet annettua kaavaa:
Jännite = (ADC-arvo / vastuskerroin) * referenssijännite Missä: ADC-arvo = Jännitteenjakajan lähtö (muunnettu digitaaliseksi mikrokontrollerilla) Vastuskerroin = 1023,0 / (R2 / R1 + R2) // 1023 on suurin ADC-arvo (10- Referenssijännite = 5 volttia // sisäinen 5v-referenssi valittu
Vastuskerroinlaskenta:
Tässä projektissa luemme auton akun jännitteen, joka on (yleensä) noin 12v-14v. Joten olemme tehneet tämän projektin olettaen, että max 15v tarkoittaa, että tämä järjestelmä voidaan lukea enintään 15v asti.
Joten piirissä olemme käyttäneet R1- ja R2-vastuksia jännitteenjakajaosassa ja arvot ovat:
R1 = 2K
R2 = 1K
Vastuskerroin = 1023,0 * (1000/2000 + 1000)
Vastuskerroin = 1023,0 * (1/3)
Vastuskerroin = 341,0 jopa 15 volttiin
Joten jännitteen laskemisen lopullinen kaava on seuraava, jota olemme käyttäneet tämän artikkelin lopussa annettuja koodeja:
Jännite = (ADC-arvo / 341,0) * 5,0
Piirin ja piirilevyn suunnittelu EasyEDA: n avulla:
Suunnittelemalla piiri auton akun jännitemittarille olemme käyttäneet EasyEDA: ta, joka on ilmainen online EDA -työkalu piirien ja piirilevyjen saumattomaan luomiseen. Aiemmin olemme tilanneet muutamia piirilevyjä EasyEDA: lta ja käytämme edelleen niiden palveluja, kun löysimme koko prosessin piirien piirtämisestä piirilevyjen tilaamiseen, mukavampaa ja tehokkaampaa verrattuna muihin piirilevyvalmistajiin. EasyEDA tarjoaa piirinpiirustuksen, simulaation, piirilevysuunnittelun ilmaiseksi ja tarjoaa myös laadukkaita, mutta edullisia, räätälöityjä piirilevyjä. Tarkista täältä täydellinen opetusohjelma Easy EDA: n käyttämisestä kaavioiden, piirilevyjen asettelujen, piirien simuloinnin jne.
EasyEDA paranee päivittäin; ne ovat lisänneet monia uusia ominaisuuksia ja parantaneet yleistä käyttökokemusta, mikä tekee EasyEDA: sta helpompaa ja käyttökelpoisempaa piirien suunnittelussa. He aikovat pian käynnistää sen Desktop-version, jonka voi ladata ja asentaa tietokoneellesi offline-käyttöä varten.
EasyEDA: ssa voit tehdä piirisi ja piirikorttisi julkiseksi, jotta muut käyttäjät voivat kopioida tai muokata niitä ja hyötyä sieltä. Olemme myös julkaisseet koko piirin ja piirilevyasettelun tälle auton akun jännitemittarille, tarkista alla oleva linkki:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Alla on tilannekuva EasyEDA: n piirilevyasettelun ylimmästä kerroksesta. Voit tarkastella mitä tahansa piirilevyn tasoa (ylä-, ala-, yläsilkki-, pullonsilkki jne.) Valitsemalla kerroksen Tasot-ikkunasta.
PCB-näytteiden laskeminen ja tilaaminen verkossa:
Suoritettuaan suunnittelu PCB, voit klikata kuvaketta Fabrication tuotos , joka vie sinut PCB järjestyksessä sivulle. Täällä voit katsella piirilevyäsi Gerber Viewer -sovelluksessa tai ladata Gerber-tiedostoja piirilevyllesi ja lähettää ne mille tahansa valmistajalle, on myös paljon helpompaa (ja halvempaa) tilata se suoraan EasyEDA: sta. Täällä voit valita tilattavien piirilevyjen määrän, kuinka monta kuparikerrosta tarvitset, piirilevyn paksuuden, kuparin painon ja jopa piirilevyn värin. Kun olet valinnut kaikki vaihtoehdot, napsauta "Tallenna ostoskoriin" ja suorita tilauksesi, niin saat piirilevyt muutama päivä myöhemmin.
Voit tilata tämän piirilevyn suoraan tai ladata Gerber-tiedoston tämän linkin avulla.
Muutaman päivän PCB: n tilaamisen jälkeen sain PCB-näytteet
Saatuani piirilevyt olen asentanut kaikki vaaditut komponentit piirilevyn päälle, ja lopuksi meillä on auton akunvalvontajärjestelmä valmiina, tarkista tämä piiri työskentelemällä lopussa olevassa videossa.
Ohjelmoinnin selitys:
Tämän projektin ohjelma on vähän vaikea aloittelijoille. Tämän koodin kirjoittamiseen tarvitaan joitain otsikkotiedostoja. Tässä käytämme koodaukseen MPLAB X IDE: tä ja XC-kääntäjää koodin rakentamiseen ja kääntämiseen. Koodi kirjoitetaan C-kielellä.
Tässä koodissa olemme lukeneet akun jännitteen analogisella tapilla ja tietojen ohjaamiseen tai lähettämiseen 4-numeroiseen seitsemän segmentin näyttöön, olemme käyttäneet PIC-mikrokontrollerissa ajastimen keskeytyspalvelinrutiinia. Kaikki jännitteen mittauslaskelmat tehdään pääohjelmarutiinissa.
Ensinnäkin, olemme sisällyttäneet koodiin otsikon ja konfiguroinut sitten PIC-mikrokontrollerin määritysbitillä.
#sisältää
Ja sitten ilmoitetut muuttujat ja määritetyt nastat seitsemälle segmentille näkyvät
allekirjoittamaton int-laskuri2; allekirjoittamaton merkkipaikka = 0; allekirjoittamaton merkki k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int luku1 = 0, numero2 = 0, luku3 = 0, numero4 = 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_led5 TRISAbittiä.TRISA………………
Nyt olemme luoneet ajastimen keskeytysrutiinin seitsemän segmentin näytön ajamiseksi:
void keskeytä low_priority LowIsr (void) {if (TMR0IF == 1) {laskuri2 ++; if (laskuri2> = 1) {if (sijainti == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Nyt tyhjässä main () -toiminnossa olemme alustaneet ajastimen ja keskeytyksen.
GIE = 1; // MAAILMANLAAJUINEN KÄYTTÖÖNOTTO KÄYTÖSSÄ PEIE = 1; // perifeerinen hajoava lippu T0CON = 0b000000000; // esijäähdyttimen arvo laittaa TMR0IE = 1; // keskeytä aktivoi TMR0IP = 0; // keskeytä prioriteetti TMR0 = 55536; // aloita laskuri tämän arvon jälkeen TMR0ON = 1;
Ja sitten , kun silmukka, luemme analoginen tulo analogisen tappi ja vaativat jonkin toiminnon laskelmat.
while (1) {adc_init (); for (i = 0; i <40; i ++) {Arvo = adc_value (); adcValue + = arvo; } adcValue = (kelluva) adcValue / 40,0; muuntaa (adcValue); viive (100); }
Annetaan adc_init () toimintoa käytetään alustetaan ADC
void adc_init () {ADCON0 = 0b00000011; // valitse adc-kanava ADCON1 = 0b00001110; // valitse analoginen ja digitaalinen i / p ADCON2 = 0b10001010; // ekvisaatioajan pitoajan aika ADON = 1; }
Annetaan adc_value toimintoa käytetään lukemaan syöttää analogisen tappi ja laske jännite.
float adc_value (void) {float adc_data = 0; kun (GO / DONE == 1); // korkeamman bittidatan muunnos adc-arvo adc_data = (ADRESL) + (ADRESH << 8); // Tallenna 10-bittinen lähtö adc_data = ((adc_data / 342.0) * 5.0); return adc_data; }
Annettua muunnostoimintoa käytetään jännitteen arvon muuntamiseen segmenttituetuiksi arvoiksi.
void-muunnos (float f) {int d = (f * 100); luku1 = d% 10; d = d / 10; luku2 = d% 10; d = d / 10; luku3 = d% 10; luku4 = d / 10; }
Tarkista tämän projektin täydellinen koodi alla esittelyvideolla.