- Components necessaris:
- Descripció:
- Diagrama del circuit i explicació de treball:
- Disseny de circuits i PCB amb EasyEDA:
- Càlcul i ordenació de mostres de PCB en línia:
- Explicació de la programació:
En aquest projecte farem un sistema de monitorització de bateries de cotxes basat en PIC a PCB. Aquí hem dissenyat un PCB mitjançant el simulador i dissenyador de PCB en línia EASYEDA. Aquest circuit de monitorització de la bateria del cotxe s’utilitza per controlar la potència de la bateria del cotxe simplement connectant-la a la presa de corrent del tauler de control d’un cotxe. El PCB també té l’opció d’utilitzar-lo com a eina de mesura de voltatge o voltímetre sense utilitzar carregador de cotxe USB. Aquí hem adjuntat un bloc de terminals per mesurar el voltatge d'altres fonts d'energia, només connectant-hi dos cables des de la font d'alimentació.
Components necessaris:
- Microcontrolador PIC PIC18F2520 -1
- Tauler de PCB fabricat -1
- Connector USB -1
- Connector de terminal de 2 pins (opcional) -1
- Visualització del segment ànode comú de set segments (4 en 1) -1
- BC557 Transistor -4
- 1k resistència -6
- 2k resistència -1
- Resistència 100R -8
- Condensador 1000uF -1
- Condensador 10uF -1
- Base IC de 28 pins -1
- burgsticks femenins -1
- 7805 Regulador de tensió -1
- Carregador USB per a cotxe -1
- LED -1
- Diodo Zener 5,1v -2
- Cable USB (compatible amb el tipus B o Arduino UNO) -1
- Cristall de 20 MHz -1
- Condensador de 33pF -2
Descripció:
En general, no és important mesurar la potència de la bateria del cotxe cada cop, però sovint hem de conèixer la tensió de la bateria durant la càrrega, per comprovar si es carrega o no. D'aquesta manera, podem protegir les falles de la bateria a causa d'un sistema de càrrega defectuós. La tensió d’una bateria de 12v durant la càrrega és d’uns 13,7v. Per tant, podem identificar si la bateria es carrega bé o no i podem investigar les causes de la fallada de la bateria. En aquest projecte, implementarem un mesurador de tensió per a la bateria del cotxe mitjançant un microcontrolador PIC. L’encenedor de cotxes o el carregador USB del cotxe s’utilitzen per aconseguir la tensió de la bateria al pin ADC del microcontrolador amb l’ajuda del circuit divisor de tensió. A continuació, una pantalla de 4 dígits de set segmentss’utilitza per mostrar el valor de tensió de la bateria. Aquest circuit pot mesurar la tensió de fins a 15v.
Quan la bateria d’un cotxe es carrega, el voltatge a través dels terminals de la bateria prové realment de l’alternador / rectificador, per això el sistema llegeix 13,7 volts. Però quan la bateria no s’està carregant o el motor del cotxe no està engegat, el voltatge a través del terminal de la bateria és el voltatge real de la bateria al voltant dels 12v.

També podem utilitzar el mateix circuit per mesurar la tensió d’altres fonts d’energia de fins a 15v. Amb aquest propòsit hem soldat el bloc de terminals (bloc de plàstic de color verd) a PCB on podeu connectar dos cables de la font d'alimentació i controlar el voltatge. Consulteu el vídeo al final, on ho hem demostrat mesurant el voltatge d’una font d’alimentació variable, un banc d’alimentació USB i un adaptador de 12V AC-DC. Comproveu també el circuit del monitor de bateria simple i el circuit del carregador de bateria de 12 v.
Diagrama del circuit i explicació de treball:
En aquest circuit de monitoratge de la tensió de la bateria, hem llegit la tensió de la bateria del cotxe mitjançant un pin analògic incorporat del microcontrolador PIC i aquí hem seleccionat el pin AN0 (28) del microcontrolador mitjançant un circuit divisor de tensió. També es fa servir un díode zener de 5.1v per protegir-se.

La pantalla 4 en 1 de 7 segments s'utilitza per mostrar el valor instantani de la tensió de la bateria del cotxe connectada a PORTB i PORTC del microcontrolador. Un regulador de voltatge de 5 V, és a dir, LM7805, s’utilitza per alimentar tot el circuit, incloses les pantalles de set segments. Un rellotge del microcontrolador s’utilitza amb un oscil·lador de cristall de 20 MHz. El circuit s’alimenta mitjançant el mateix carregador USB per a cotxe mitjançant un LM7805. Hem afegit un port USB al PCB, de manera que podem connectar directament el carregador USB del cotxe al circuit.

El carregador USB del cotxe o l’encenedor proporciona un subministrament regulat de 5v des de la presa de corrent de 12v del cotxe, però hem de mesurar el voltatge real de la bateria del cotxe, de manera que hem modificat el carregador del cotxe. Heu d’obrir el carregador USB del cotxe i, a continuació, trobar els terminals de 5v (sortida) i 12v (entrada) i, a continuació, eliminar la connexió de 5v fregant-la amb paper de sorra o amb alguna cosa dura i reduïu el terminal de sortida USB a 12v directament. Primer obriu la connexió 5v des del port USB del carregador USB del cotxe i, a continuació, connecteu 12v al port USB on estava connectat 5v. Tal com es mostra a la figura següent, hem tallat la connexió en cercle vermell, ja que pot variar en funció del carregador del vostre cotxe.



Per configurar ADC aquí hem seleccionat el pin analògic AN0 amb una tensió de referència interna de 5v i rellotge f / 32 per a la conversió ADC.
Per calcular la tensió de la bateria del cotxe a partir del valor ADC hem utilitzat la fórmula donada:
Voltatge = (valor ADC / factor de resistència) * referència Voltatge On: valor ADC = sortida del divisor de voltatge (convertit en digital mitjançant microcontrolador) Factor de resistència = 1023,0 / (R2 / R1 + R2) // 1023 és el valor ADC màxim (10- bit) Voltatge de referència = 5 volts // seleccionada referència interna de 5v
Càlcul del factor de resistència:
En aquest projecte estem llegint un voltatge de la bateria del cotxe que (generalment) ronda els 12v-14v. Per tant, hem fet aquest projecte suposant que el màxim de 15v significa que aquest sistema es pot llegir fins a 15v.
Així doncs, al circuit hem utilitzat la resistència R1 i R2 a la part divisòria de tensió i els valors són:
R1 = 2K
R2 = 1K

Factor de resistència = 1023,0 * (1000/2000 + 1000)
Factor de resistència = 1023,0 * (1/3)
Factor de resistència = 341,0 fins a 15 volts
Per tant, la fórmula final per al càlcul de la tensió serà la següent, que hem utilitzat el codi, que es dóna al final d’aquest article:
Voltatge = (valor ADC / 341,0) * 5,0
Disseny de circuits i PCB amb EasyEDA:
Per dissenyar un circuit per al monitor de tensió de la bateria del cotxe, hem utilitzat EasyEDA, una eina EDA gratuïta en línia per crear circuits i PCB de manera perfecta. Anteriorment hem demanat pocs PCB a EasyEDA i seguim fent servir els seus serveis ja que trobem tot el procés, des de dibuixar els circuits fins a demanar els PCB, més còmodes i eficients en comparació amb altres fabricants de PCB. EasyEDA ofereix dibuix de circuits, simulació, disseny de PCB de forma gratuïta i també ofereix un servei de PCB personalitzat d’alta qualitat però de baix preu. Consulteu aquí el tutorial complet sobre Com utilitzar Easy EDA per fer esquemes, dissenys de PCB, simulació de circuits, etc.
EasyEDA millora dia a dia; han afegit moltes funcions noves i han millorat l’experiència general de l’usuari, cosa que fa que EasyEDA sigui més fàcil i útil per al disseny de circuits. Aviat llançaran la seva versió d’escriptori, que es pot descarregar i instal·lar a l’ordinador per a ús fora de línia.
En EasyEDA, pot fer que el seu circuit i PCB dissenys tan públic que altres usuaris puguin copiar o editar ells i poden prendre avantatge d'allà, també hem fet la nostra pública tota Circuit i dissenys de PCB per a aquest monitor de voltatge de la bateria de cotxe, comprovar el següent enllaç:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
A continuació es mostra la instantània de la capa superior del disseny de PCB des d’EasyEDA, podeu veure qualsevol capa (superior, inferior, de llana superior, de seda inferior, etc.) del PCB seleccionant la capa de la finestra “Capes”.

Càlcul i ordenació de mostres de PCB en línia:
Després de completar el disseny de PCB, podeu fer clic a la icona de sortida de fabricació , que us portarà a la pàgina de comandes de PCB. Aquí podeu veure el vostre PCB a Gerber Viewer o descarregar fitxers Gerber del vostre PCB i enviar-los a qualsevol fabricant, també és molt més fàcil (i més barat) demanar-lo directament a EasyEDA. Aquí podeu seleccionar el nombre de PCB que voleu demanar, quantes capes de coure necessiteu, el gruix del PCB, el pes del coure i fins i tot el color del PCB. Un cop hàgiu seleccionat totes les opcions, feu clic a "Desa a la cistella" i completeu la comanda i, al cap de pocs dies, obtindreu els vostres PCB.

Podeu demanar directament aquest PCB o descarregar el fitxer Gerber mitjançant aquest enllaç.
Després d'uns dies de demanar PCB, vaig obtenir les mostres de PCB



Després d’aconseguir els PCB, he muntat tots els components necessaris sobre el PCB i, finalment, tenim el nostre sistema de control de la bateria del cotxe a punt, comproveu aquest circuit si funciona al vídeo que apareix al final.

Explicació de la programació:
El programa d’aquest projecte és poc difícil per als principiants. Per escriure aquest codi necessitem alguns fitxers de capçalera. Aquí estem utilitzant MPLAB X IDE per a la codificació i el compilador XC per construir i compilar el codi. El codi està escrit en llenguatge C.
En aquest codi, hem llegit el voltatge de la bateria mitjançant un pin analògic i, per controlar o enviar dades a una pantalla de quatre segments de quatre dígits, hem utilitzat la rutina del servidor d’interrupció del temporitzador al microcontrolador PIC. Tots els càlculs per mesurar la tensió es fan a la rutina principal del programa.
Primer, al codi hem inclòs una capçalera i després hem configurat el microcontrolador PIC mitjançant la configuració de bits.
#incloure
I després es mostren variables declarades i pins definits per a set segments
sense signar int counter2; posició de caràcter sense signar = 0; unsigned char k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; # definir TRIS_seg1 TRISCbits.TRISC0 # definir TRIS_seg2 TRISCbits.TRISC1 # definir TRIS_seg3 TRISCbits.TRISC2 # definir TRIS_seg4 TRISCbits.TRISC3 # definir TRIS_led1 TRISAbits.TRISA2 # definir TRIS_led TRIS_led5 TRISAbits.TRISA………………
Ara hem creat una rutina d’interrupcions de temporitzador per a la visualització de set segments:
void interrupt low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; if (comptador2> = 1) {if (posició == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Ara, en la funció void main () , hem inicialitzat el temporitzador i la interrupció.
GIE = 1; // GLOBLE INTRRUPT ENABLE PEIE = 1; // indicador d'introducció perifèrica T0CON = 0b000000000; // valor prescaler posat TMR0IE = 1; // interrupt interrupt enable TMR0IP = 0; // prioritat d’interrupció TMR0 = 55536; // iniciar el comptador després d'aquest valor TMR0ON = 1;
I després, en temps de bucle, llegim entrada analògica al pin analògic i cridem alguna funció per als càlculs.
while (1) {adc_init (); per a (i = 0; i <40; i ++) {Valor = adc_value (); adcValue + = Valor; } adcValue = (flotant) adcValue / 40,0; convertir (adcValue); retard (100); }
La funció adc_init () s'utilitza per inicialitzar ADC
void adc_init () {ADCON0 = 0b00000011; // seleccioneu canal ADCON ADCON1 = 0b00001110; // seleccionar i / p analògic i digital ADCON2 = 0b10001010; // temps d’equització que manté el temps màxim ADON = 1; }
La funció adc_value donada s'utilitza per llegir l'entrada del pin analògic i calcular el voltatge.
float adc_value (void) {float adc_data = 0; mentre que (ANAR / FER == 1); // dades de bits més elevades comencen la conversió valor adc adc_data = (ADRESL) + (ADRESH << 8); // Emmagatzema la sortida de 10 bits adc_data = ((adc_data / 342.0) * 5.0); tornar adc_data; }
I la funció de conversió determinada s’utilitza per convertir el valor de la tensió en valors compatibles amb el segment.
void convert (float f) {int d = (f * 100); dígit1 = d% 10; d = d / 10; dígit2 = d% 10; d = d / 10; dígit3 = d% 10; dígit4 = d / 10; }
Consulteu el codi complet d'aquest projecte a continuació amb un vídeo de demostració.
