- Szükséges alkatrészek:
- Leírás:
- Áramkör és működési magyarázat:
- Áramkör és NYÁK tervezés az EasyEDA segítségével:
- PCB-minták kiszámítása és megrendelése online:
- Programozási magyarázat:
Ebben a projektben PIC alapú autó akkumulátor-figyelő rendszert fogunk készíteni a NYÁK-ra. Itt megterveztünk egy NYÁK-t az EASYEDA online NYÁK-szimulátor és tervező segítségével. Ezt az autóakkumulátort figyelő áramkört arra használják, hogy figyelemmel kísérje az autóakkumulátor töltöttségi szintjét, csak csatlakoztatva azt az autó műszerfalán található konnektorhoz. A NYÁK- nak lehetősége van feszültségmérő eszközként vagy feszültségmérőként használni USB autós töltő használata nélkül is. Ide kapcsoltunk egy sorkapcsot más áramforrások feszültségének mérésére, csak úgy, hogy két vezetéket csatlakoztattunk benne az áramforrásból.
Szükséges alkatrészek:
- PIC mikrokontroller PIC18F2520 -1
- Gyártott PCB kártya -1
- USB csatlakozó -1
- 2 tűs csatlakozó csatlakozó (opcionális) -1
- Közös anód hét szegmens kijelző (4 az 1-ben) -1
- BC557 tranzisztor -4
- 1k ellenállás -6
- 2k ellenállás -1
- 100R ellenállás -8
- 1000uF kondenzátor -1
- 10uF kondenzátor -1
- 28 tűs IC-alap -1
- női pálcika -1
- 7805 Feszültségszabályozó -1
- Autós USB töltő -1
- LED -1
- Zener dióda: 5,1v -2
- USB kábel (B-típusú vagy Arduino UNO-kompatibilis) -1
- 20MHz kristály -1
- 33pF kondenzátor -2
Leírás:
Általában nem fontos minden alkalommal mérni az autó akkumulátorának teljesítményét, de a töltés során gyakran tudnunk kell az akkumulátor feszültségéről, annak ellenőrzésére, hogy töltődik-e vagy sem. Ezzel megvédhetjük az akkumulátor meghibásodását a hibás töltőrendszer miatt. A 12 V-os autó akkumulátorának feszültsége töltés közben körülbelül 13,7 V. Így azonosíthatjuk, hogy az akkumulátorunk jól tölt-e vagy sem, és kivizsgálhatjuk az akkumulátor meghibásodásának okait. Ebben a projektben egy PIC mikrovezérlő használatával megvalósítunk egy feszültségmérőt az autó akkumulátorához. Autós szivargyújtót vagy autós USB töltőt használnak arra, hogy az akkumulátor feszültségét a feszültségosztó áramkör segítségével a mikrovezérlő ADC tűjéhez juttassák. Ezután egy négyjegyű, hét szegmenses kijelzőaz akkumulátor feszültségértékének megmutatására szolgál. Ez az áramkör képes mérni a feszültséget 15 V-ig.
Amikor egy autó akkumulátora töltődik, akkor az akkumulátor kivezetésein a feszültség valóban a generátorból / egyenirányítóból származik, ezért a rendszer 13,7 voltot olvas. De amikor az akkumulátor nem töltődik, vagy ha az autó motorja nincs bekapcsolt állapotban, akkor az akkumulátor kapcsa fölött a feszültség tényleges akkumulátorfeszültség 12v körül.
Ugyanazt az áramkört használhatjuk más 15v-ig terjedő áramforrások feszültségének mérésére is. Erre a célra forrasztottuk a sorkapcsot (zöld színű műanyag blokk) a NYÁK-ban, ahol két vezetéket csatlakoztathat az áramforrásból, és figyelemmel kísérheti a feszültséget. Ellenőrizze a végén található videót, ahol azt bemutattuk egy változó tápegység, egy USB tápegység és egy 12 V AC-DC adapter feszültségének mérésével. Ellenőrizze az egyszerű akkumulátorfigyelő áramkört és a 12 V-os akkumulátortöltő áramkört is.
Áramkör és működési magyarázat:
Ebben az akkumulátorfeszültség-figyelő áramkörben leolvashattuk az autó akkumulátorának feszültségét a PIC mikrovezérlő beépített analóg tűjével, és itt egy feszültségosztó áramkörön keresztül választottuk ki a mikrovezérlő AN0 (28) tűjét. A védelemhez 5,1 V-os zener diódát is használnak.
A 4 az 1-ben hét szegmenses kijelző az autó akkumulátor feszültségének pillanatnyi értékének megjelenítésére szolgál, amely a mikrovezérlő PORTB és PORTC pontjain van csatlakoztatva. 5 V-os feszültségszabályozót, nevezetesen az LM7805-öt használják az áramkör teljes ellátására, beleértve a hét szegmenses kijelzőt is. A mikrovezérlő órájának 20 MHz-es kristályoszcillátort használnak. Az áramkört maga az USB autós töltő táplálja, egy LM7805 használatával. USB-portot adtunk a NYÁK-ba, így közvetlenül csatlakoztathatjuk az autó USB-töltőjét az áramkörhöz.
Autós USB-töltő vagy szivargyújtó 5 V-os szabályozott tápellátást biztosít az autó 12 V-os konnektorából, de meg kell mérnünk az autó akkumulátorának tényleges feszültségét, így módosítottuk a Car töltőt. Meg kell nyitnia az autó USB-töltőjét, majd meg kell találnia az 5v (kimenet) és a 12v (bemenet) csatlakozókat, majd csiszolópapírral vagy valamilyen kemény dologgal meg kell dörzsölnie az 5v csatlakozást, és az USB kimeneti csatlakozót közvetlenül 12v-ra kell rövidíteni. Először nyissa meg az 5v-csatlakozást az autó USB-töltőjének USB-portjáról, majd csatlakoztassa a 12v-t az USB-porthoz, ahová az 5v-t csatlakoztatta. Amint az az alábbi ábrán látható, levágtuk a piros körözött csatlakozást, ez eltérhet az autós töltőn.
Az ADC konfigurálásához itt kiválasztottuk az analóg AN0 tűt, amelynek belső referenciafeszültsége 5v és f / 32 óra az ADC átalakításához.
Az autó akkumulátor-feszültségének kiszámításához az ADC-értékből a következő képletet használtuk:
Feszültség = (ADC-érték / ellenállási tényező) * referenciafeszültség Hol: ADC-érték = a feszültségosztó kimenete (a mikrovezérlő által digitalizáltvá alakítva) Ellenállási tényező = 1023,0 / (R2 / R1 + R2) // 1023 az ADC maximális értéke (10- bit) Referenciafeszültség = 5 volt // belső 5v referencia kiválasztva
Ellenállási tényező kiszámítása:
Ebben a projektben az autó akkumulátorának feszültségét olvashatjuk, amely (általában) 12v-14v körül van. Tehát ezt a projektet azzal a feltevéssel hajtottuk végre, hogy max 15v azt jelenti, hogy ez a rendszer max. 15v-ig olvasható.
Tehát az áramkörben R1 és R2 ellenállást használtunk a feszültségosztó részében, és ezek értéke:
R1 = 2K
R2 = 1K
Ellenállási tényező = 1023,0 * (1000/2000 + 1000)
Ellenállási tényező = 1023,0 * (1/3)
Ellenállási tényező = 341,0 15 voltig
Tehát a feszültség kiszámításának végső képlete a következő lesz, amelyet a cikk végén megadott kódex alapján használtunk:
Feszültség = (ADC-érték / 341,0) * 5,0
Áramkör és NYÁK tervezés az EasyEDA segítségével:
Az autó akkumulátor-feszültségmérő áramkörének megtervezéséhez az EasyEDA-t használtuk, amely egy ingyenes online EDA-eszköz az áramkörök és a NYÁK-ok zökkenőmentes létrehozásához. Korábban kevés nyomtatott áramköri lapot rendeltünk az EasyEDA-tól, és továbbra is igénybe vesszük szolgáltatásaikat, mivel az egész folyamatot megtaláltuk, az áramkörök rajzolásától a NYÁK-k megrendeléséig, kényelmesebbé és hatékonyabbá, mint más NYÁK-gyártók. Az EasyEDA ingyen kínál áramköri rajzokat, szimulációkat, NYÁK tervezéseket, és kiváló minőségű, de alacsony árú, személyre szabott NYÁK szolgáltatást is kínál. Ellenőrizze itt a teljes oktatóanyagot az Easy EDA használatáról sematikák, NYÁK-elrendezések, áramkörök szimulálásához stb.
Az EasyEDA napról napra javul; sok új funkcióval egészítették ki és javították az általános felhasználói élményt, ami megkönnyíti és használhatóvá teszi az EasyEDA-t áramkörök tervezéséhez. Hamarosan elindítják Desktop verzióját, amely offline használatra letölthető és telepíthető a számítógépre.
Az EasyEDA-ban nyilvánosságra hozhatja áramköri és NYÁK-terveit, hogy más felhasználók másolhassák vagy szerkeszthessék azokat, és kihasználhassák az előnyeiket. Az egész áramköri és NYÁK-elrendezésünket nyilvánosságra hoztuk ehhez az autó akkumulátor-feszültség-figyelőhöz is, ellenőrizze az alábbi linket:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Az alábbiakban bemutatjuk az EasyEDA PCB elrendezésének felső rétegének pillanatképét. Megtekintheti a NYÁK bármely rétegét (felső, alsó, Topsilk, alsó tej stb.), Ha kiválasztja a réteget a „Rétegek” ablakból.
PCB-minták kiszámítása és megrendelése online:
A NYÁK tervezésének befejezése után rákattinthat a Gyártás kimenet ikonjára, amely a NYÁK megrendelés oldalán található. Itt megtekintheti a nyomtatott áramköri lapot a Gerber Viewer alkalmazásban, vagy letöltheti a számítógép Gerber fájljait, és elküldheti őket bármelyik gyártónak. Sokkal könnyebb (és olcsóbb) megrendelni közvetlenül az EasyEDA-ban. Itt kiválaszthatja a megrendelni kívánt NYÁK-k számát, hány rézrétegre van szüksége, a NYÁK vastagságát, a réz súlyát és még a NYÁK színét is. Miután kiválasztotta az összes lehetőséget, kattintson a „Mentés a kosárba” gombra, és végezze el a megrendelést, majd néhány nappal később megkapja a NYÁK-kat.
Közvetlenül megrendelheti ezt a nyomtatott áramköri lapot, vagy letöltheti a Gerber fájlt ezen a linken keresztül.
Néhány napos PCB-k megrendelése után megkaptam a PCB-mintákat
Miután beszereztem a NYÁK-kat, az összes szükséges elemet felhelyeztem a NYÁK-ra, és végül elkészült az autó akkumulátor-figyelő rendszerünk. Ellenőrizze ezt az áramkört a végén megadott Video-ban.
Programozási magyarázat:
A projekt programja a kezdők számára kissé nehéz. A kód megírásához néhány fejlécfájlra van szükségünk. Itt az MPLAB X IDE-t használjuk a kódoláshoz, az XC fordítót pedig a kód felépítéséhez és fordításához. A kód C nyelven íródott.
Ebben a kódban leolvasta az akkumulátor feszültségét egy analóg tű segítségével, és az adatok vezérléséhez vagy 4 számjegyű hét szegmenses kijelzőhöz történő elküldéséhez időzítő megszakító szerver rutint használtunk a PIC mikrovezérlőben. A feszültségmérés összes számítását a fő programprogramban végezzük.
Először a kódba felvettünk egy fejlécet, majd a konfigurációs bitek segítségével konfiguráltuk a PIC mikrovezérlőt.
#include
Ezután kijelzett változók és hét szegmenshez definiált csapok jelennek meg
aláíratlan int számláló2; előjel nélküli char pozíció = 0; aláíratlan karakter 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_led5 TRISAbits.TRISA………………
Most létrehoztunk egy időzítő megszakítási rutint hét szegmenses kijelző vezetéséhez:
void megszakítás low_priority LowIsr (void) {if (TMR0IF == 1) {számláló2 ++; if (számláló2> = 1) {if (pozíció == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Most a void main () függvényben inicializáltuk az időzítőt és a megszakítást.
GIE = 1; // GLOBAL INTRRUPT ENABLE PEIE = 1; // perifériás behatolásjelző T0CON = 0b000000000; // előmérlegelő értéke TMR0IE = 1; // megszakítás engedélyezése TMR0IP = 0; // megszakítja a prioritást TMR0 = 55536; // számláló indítása ezen érték után TMR0ON = 1;
Ezután a while ciklusban analóg bemenetet olvasunk az analóg csapon, és hívunk valamilyen függvényt a számításokhoz.
míg (1) {adc_init (); for (i = 0; i <40; i ++) {Érték = adc_érték (); adcValue + = Érték; } adcValue = (float) adcValue / 40.0; konvertálás (adcValue); késés (100); }
Adott adc_init () függvényt használunk az ADC inicializálásához
void adc_init () {ADCON0 = 0b00000011; // ADC csatorna kiválasztása ADCON1 = 0b00001110; // válasszon analóg és digitális i / p ADCON2 = 0b10001010; // egyenlítési idő megtartási korlát ideje ADON = 1; }
A megadott adc_value függvény segítségével analóg csapról lehet beolvasni és kiszámítani a feszültséget.
float adc_value (void) {float adc_data = 0; míg (GO / DONE == 1); // magasabb bites adatok megkezdése konverzió adc érték adc_data = (ADRESL) + (ADRESH << 8); // 10 bites kimenet tárolása adc_data = ((adc_data / 342.0) * 5.0); return adc_data; }
Az adott konvertáló függvényt arra használják, hogy a feszültségértéket szegmens által támogatott értékekké konvertálja.
void konvertálás (float f) {int d = (f * 100); 1. számjegy = d% 10; d = d / 10; szám2 = d% 10; d = d / 10; szám3 = d% 10; számjegy 4 = d / 10; }
Ellenőrizze az alábbiakban a projekt teljes kódját egy bemutató videóval.