- Nepieciešamās sastāvdaļas:
- Apraksts:
- Shēmas shēma un darba skaidrojums:
- Ķēdes un PCB dizains, izmantojot EasyEDA:
- PCB paraugu aprēķināšana un pasūtīšana tiešsaistē:
- Programmēšanas skaidrojums:
Šajā projektā mēs uz PCB izveidosim PIC balstītu automašīnas akumulatoru uzraudzības sistēmu. Šeit mēs esam izstrādājuši PCB, izmantojot EASYEDA tiešsaistes PCB simulatoru un dizaineru. Šo automašīnas akumulatora uzraudzības shēmu izmanto, lai uzraudzītu automašīnas akumulatora enerģiju, vienkārši pievienojot to automašīnas paneļa kontaktligzdai. PCB ir arī iespēja izmantot to kā sprieguma mērīšanas rīku vai voltmetrs, neizmantojot USB automašīnas lādētāju. Mēs šeit esam pievienojuši spaiļu bloku, lai izmērītu citu enerģijas avotu spriegumu, vienkārši savienojot tajā divus vadus no strāvas avota.
Nepieciešamās sastāvdaļas:
- PIC mikrokontrolleris PIC18F2520 -1
- Izgatavota PCB plāksne -1
- USB savienotājs -1
- 2 kontaktu termināla savienotājs (pēc izvēles) -1
- Parastā septiņu segmentu anoda displejs (4 pret 1) -1
- BC557 tranzistors -4
- 1k rezistors -6
- 2k rezistors -1
- 100R rezistors -8
- 1000uF kondensators -1
- 10uF kondensators -1
- 28 kontaktu IC pamatne -1
- sieviešu burgsticki -1
- 7805 Sprieguma regulators -1
- Automašīnas USB lādētājs -1
- LED -1
- Zenera diode5,1v -2
- USB kabelis (saderīgs ar B tipa vai Arduino UNO) -1
- 20MHz kristāls -1
- 33pF kondensators -2
Apraksts:
Parasti nav svarīgi katru reizi mērīt automašīnas akumulatora enerģiju, taču mums bieži ir jāzina par akumulatora spriegumu uzlādes laikā, lai pārbaudītu, vai tā tiek uzlādēta. Tādējādi mēs varam aizsargāt akumulatora kļūmi nepareizas uzlādes sistēmas dēļ. 12v automašīnas akumulatora spriegums uzlādes laikā ir aptuveni 13,7v. Tāpēc mēs varam noteikt, vai mūsu akumulators tiek uzlādēts labi vai nē, un varam izpētīt akumulatora atteices cēloņus. Šajā projektā mēs plānojam ieviest sprieguma mērītāju automašīnas akumulatoram, izmantojot PIC mikrokontrolleru. Automašīnas cigarešu šķiltavas vai automašīnas USB lādētāju izmanto, lai akumulatora spriegumu novirzītu uz mikrokontrollera ADC kontaktu ar sprieguma dalītāja ķēdes palīdzību. Tad četrciparu septiņu segmentu displejstiek izmantots, lai parādītu akumulatora sprieguma vērtību. Šī shēma var izmērīt spriegumu līdz 15v.
Kad automašīnas akumulators tiek uzlādēts, spriegums pāri akumulatora spailēm faktiski nāk no ģeneratora / taisngrieža, tāpēc sistēma nolasa 13,7 voltus. Bet, ja akumulators netiek uzlādēts vai automašīnas motors nav ieslēgts, spriegums pāri akumulatora spailei ir faktiskais akumulatora spriegums ap 12v.
To pašu ķēdi mēs varam izmantot arī citu strāvas avotu sprieguma mērīšanai līdz 15v. Šim nolūkam mēs esam pielodējuši spaiļu bloku (zaļas krāsas plastmasas bloku) PCB, kur jūs varat savienot divus vadus no strāvas avota un kontrolēt spriegumu. Pārbaudiet videoklipu beigās, kur mēs to demonstrējām, mērot mainīgā barošanas avota, USB barošanas bankas un 12 V maiņstrāvas-līdzstrāvas adaptera spriegumu. Pārbaudiet arī vienkāršo akumulatora monitora shēmu un 12v akumulatora lādētāja shēmu.
Shēmas shēma un darba skaidrojums:
Šajā akumulatora sprieguma uzraudzības ķēdē mēs esam nolasījuši automašīnas akumulatora spriegumu, izmantojot iebūvētu PIC mikrokontrollera analogo tapu, un šeit mēs esam izvēlējušies mikrokontrollera tapu AN0 (28) caur sprieguma dalītāja ķēdi. Aizsardzībai tiek izmantots arī zenera diode ar 5,1 V.
4 in 1 septiņu segmentu displejs tiek izmantots, lai parādītu automašīnas akumulatora sprieguma momentāno vērtību, kas savienota ar mikrokontrollera PORTB un PORTC. 5v sprieguma regulators, proti, LM7805, tiek izmantots, lai darbinātu visu ķēdi, ieskaitot septiņu segmentu displejus. Lai kontrolētu mikrokontrolleru, tiek izmantots 20 MHz kristāla oscilators. Kontūru darbina pats USB automašīnas lādētājs, izmantojot LM7805. Mēs esam pievienojuši USB portu PCB, lai mēs varētu tieši savienot automašīnas USB lādētāju ar ķēdi.
Automašīnas USB lādētājs vai cigarešu šķiltava nodrošina 5 V regulētu padevi no automašīnas 12 V kontaktligzdas, taču mums ir jāmēra faktiskais automašīnas akumulatora spriegums, tāpēc mēs esam pielāgojuši automašīnas lādētāju. Jums jāatver automašīnas USB lādētājs un pēc tam jāatrod 5v (izeja) un 12v (ieeja) spailes un pēc tam jānoņem 5v savienojums, berzējot to ar smilšpapīru vai kādu cietu lietu, un USB izejas spaili jāsaīsina tieši līdz 12v. Vispirms atveriet 5v savienojumu no automašīnas USB lādētāja USB porta un pēc tam pievienojiet 12v USB portam, kurā tika pievienots 5v. Kā parādīts zemāk redzamajā attēlā, mēs esam izgriezuši sarkano apļveida savienojumu, tas var atšķirties jūsu automašīnas lādētājā.
Lai šeit konfigurētu ADC, ADC pārveidošanai esam izvēlējušies analogo tapu AN0 ar iekšējo atsauces spriegumu 5v un f / 32 pulksteni.
Lai aprēķinātu automašīnas akumulatora spriegumu no ADC vērtības, mēs izmantojām šādu formulu:
Spriegums = (ADC vērtība / rezistora koeficients) * atsauces spriegums Kur: ADC vērtība = Sprieguma dalītāja izeja (pārveidota par digitālu ar mikrokontrolleru) Rezistora koeficients = 1023.0 / (R2 / R1 + R2) // 1023 ir maksimālā ADC vērtība (10- bits) Atskaites spriegums = 5 volti // izvēlēta iekšējā 5v atsauce
Rezistora faktora aprēķins:
Šajā projektā mēs lasām automašīnas akumulatora spriegumu, kas ir (parasti) ap 12v-14v. Tāpēc mēs esam paveikuši šo projektu, pieņemot, ka maks. 15v nozīmē, ka šo sistēmu var nolasīt maksimāli līdz 15v.
Tātad ķēdē mēs esam izmantojuši R1 un R2 rezistoru sprieguma dalītāja daļā, un vērtības ir:
R1 = 2K
R2 = 1K
Rezistora koeficients = 1023,0 * (1000/2000 + 1000)
Rezistora koeficients = 1023,0 * (1/3)
Rezistora koeficients = 341,0 līdz 15 voltiem
Tātad sprieguma aprēķināšanas galīgā formula būs šāda, kuru mēs esam izmantojuši šī panta beigās sniegtajā kodeksā:
Spriegums = (ADC vērtība / 341,0) * 5,0
Ķēdes un PCB dizains, izmantojot EasyEDA:
Lai izveidotu automobiļa akumulatora sprieguma monitora shēmu, mēs izmantojām EasyEDA, kas ir bezmaksas tiešsaistes EDA rīks ķēžu un PCB vienmērīgai veidošanai. Iepriekš mēs pasūtījām dažus PCB no EasyEDA un joprojām izmantojam viņu pakalpojumus, jo mēs atradām visu procesu, sākot no shēmu zīmēšanas līdz PCB pasūtīšanai, ērtāku un efektīvāku salīdzinājumā ar citiem PCB izgatavotājiem. EasyEDA bez maksas piedāvā shēmas zīmēšanu, simulāciju, PCB dizainu, kā arī piedāvā augstas kvalitātes, bet par zemu cenu pielāgotu PCB pakalpojumu. Pārbaudiet šeit visu apmācību par to, kā izmantot Easy EDA, lai izveidotu shēmas, PCB izkārtojumus, imitētu ķēdes utt.
EasyEDA katru dienu uzlabojas; tie ir pievienojuši daudzas jaunas funkcijas un uzlabojuši vispārējo lietotāja pieredzi, kas padara EasyEDA vieglāku un izmantojamu ķēžu projektēšanai. Viņi drīz gatavojas palaist savu darbvirsmas versiju, kuru var lejupielādēt un instalēt datorā bezsaistes lietošanai.
In EasyEDA, varat veikt jūsu ķēdes un PCB dizaina sabiedrības, lai citi lietotāji varētu kopēt vai rediģēt to, un var gūt labumu no tur, mēs esam kļuvuši mūsu visu Circuit un PCB izkārtojumus sabiedrību par šo auto Battery Voltage Monitor, pārbaudiet zemāk saiti:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Zemāk ir redzams EasyEDA PCB izkārtojuma augšējā slāņa momentuzņēmums. Jūs varat apskatīt jebkuru PCB slāni (augšējo, apakšējo, augšējo pienu, pudeļu pienu utt.), Atlasot slāni no loga “Slāņi”.
PCB paraugu aprēķināšana un pasūtīšana tiešsaistē:
Pabeidzot PCB dizainu, varat noklikšķināt uz Fabrication output ikonas, kas jūs aizvedīs uz PCB pasūtījuma lapu. Šeit jūs varat apskatīt savu PCB Gerber Viewer vai lejupielādēt Gerber failus no jūsu PCB un nosūtīt tos jebkuram ražotājam, tāpat ir daudz vieglāk (un lētāk) pasūtīt to tieši EasyEDA. Šeit jūs varat izvēlēties PCB skaitu, kuru vēlaties pasūtīt, cik vara slāņu jums vajag, PCB biezumu, vara svaru un pat PCB krāsu. Kad esat atlasījis visas opcijas, noklikšķiniet uz “Saglabāt grozā” un pabeidziet pasūtījumu, pēc dažām dienām jūs saņemsiet savus PCB.
Jūs varat tieši pasūtīt šo PCB vai lejupielādēt Gerber failu, izmantojot šo saiti.
Pēc dažām PCB pasūtīšanas dienām es saņēmu PCB paraugus
Pēc PCB iegūšanas esmu uzstādījis visus nepieciešamos komponentus virs PCB, un, visbeidzot, mūsu auto akumulatoru uzraudzības sistēma ir gatava, pārbaudiet šo shēmu, strādājot beigās Video.
Programmēšanas skaidrojums:
Šī projekta programma iesācējiem ir nedaudz grūta. Lai rakstītu šo kodu, mums ir nepieciešami daži galvenes faili. Šeit mēs izmantojam MPLAB X IDE kodēšanai un XC kompilatoru, lai izveidotu un apkopotu kodu. Kods ir rakstīts C valodā.
Šajā kodā mēs esam nolasījuši akumulatora spriegumu, izmantojot analogo tapu, un, lai kontrolētu vai nosūtītu datus uz četrciparu septiņu segmentu displeju, PIC mikrokontrollerī esam izmantojuši taimera pārtraukuma servera kārtību. Viss sprieguma mērīšanas aprēķins tiek veikts galvenajā programmas rutīnā.
Pirmkārt, kodā mēs esam iekļāvuši galveni un pēc tam konfigurējuši PIC mikrokontrolleru, izmantojot konfigurācijas bitus.
# iekļaut
Pēc tam tiek parādīti deklarētie mainīgie un definētie tapas septiņiem segmentiem
neparakstīts int skaitītājs2; neparakstīta char pozīcija = 0; neparakstīta rakstzīme k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int cipars1 = 0, cipars2 = 0, cipars3 = 0, cipars4 = 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.TRis2 #define TRIS_led5 TRISAbits.TRISA………………
Tagad mēs esam izveidojuši taimera pārtraukuma režīmu septiņu segmentu displeja vadīšanai:
anulēt pārtraukt low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; ja (skaitītājs2> = 1) {ja (pozīcija == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Tagad funkcijai void main () ir inicializēts taimeris un pārtraukums.
GIE = 1; // GLOBL INTRRUPT ENABLE PEIE = 1; // perifērijas ielauzies karogs T0CON = 0b000000000; // preskalera vērtība likt TMR0IE = 1; // pārtraukt iespējot TMR0IP = 0; // pārtraukt prioritāti TMR0 = 55536; // sākt skaitītāju pēc šīs vērtības TMR0ON = 1;
Un tad, kamēr cikls, mēs nolasām analogo ieeju analogajā tapā un aprēķiniem izsaucam kādu funkciju.
kamēr (1) {adc_init (); par (i = 0; i <40; i ++) {Vērtība = adc_value (); adcValue + = vērtība; } adcValue = (float) adcValue / 40,0; konvertēt (adcValue); kavēšanās (100); }
Ņemot adc_init () funkcija tiek izmantota inicializēšana ADC
void adc_init () {ADCON0 = 0b00000011; // atlasiet ADC kanālu ADCON1 = 0b00001110; // izvēlieties analogo un digitālo i / p ADCON2 = 0b10001010; // ekvalizācijas laika turēšanas vāciņa laiks ADON = 1; }
Dotā adc_value funkcija tiek izmantota, lai nolasītu ieeju no analogās tapas un aprēķinātu spriegumu.
float adc_value (void) {float adc_data = 0; kamēr (GO / DONE == 1); // augstāku bitu datu sākums reklāmguvums ADC vērtība adc_data = (ADRESL) + (ADRESH << 8); // Saglabāt 10 bitu izvadi adc_data = ((adc_data / 342.0) * 5.0); atgriezt adc_data; }
Dotā konvertēšanas funkcija tiek izmantota, lai sprieguma vērtību pārveidotu par segmenta atbalstītajām vērtībām.
void konvertēt (pludiņš f) {int d = (f * 100); cipars1 = d% 10; d = d / 10; cipars2 = d% 10; d = d / 10; cipars3 = d% 10; cipars4 = d / 10; }
Tālāk pārbaudiet pilnu šī projekta kodu ar demonstrācijas video.