- Componentes necessários:
- Descrição:
- Diagrama de circuito e explicação de trabalho:
- Projeto de circuito e PCB usando EasyEDA:
- Calculando e solicitando amostras de PCB online:
- Explicação de programação:
Neste projeto vamos fazer um sistema de monitoramento de bateria de carro baseado em PIC em PCB. Aqui nós projetamos um PCB usando o simulador e designer de PCB online EASYEDA. Este circuito de monitoramento de bateria de carro é usado para monitorar a energia da bateria de carro simplesmente conectando-a na tomada elétrica no painel de um carro. O PCB também tem a opção de usá-lo como ferramenta de medição de tensão ou voltímetro sem usar carregador USB para carro. Anexamos um bloco de terminais aqui para medir a tensão de outras fontes de alimentação, apenas conectando nele dois fios da fonte de alimentação.
Componentes necessários:
- Microcontrolador PIC PIC18F2520 -1
- Placa PCB Fabricada -1
- Conector USB -1
- Conector de terminal de 2 pinos (opcional) -1
- Display de ânodo comum de sete segmentos (4 em 1) -1
- BC557 Transistor -4
- 1k resistor -6
- 2k resistor -1
- Resistor 100R -8
- 1000uF capacitor -1
- 10uF capacitor -1
- Base de IC de 28 pinos -1
- burgsticks femininos -1
- 7805 Regulador de tensão -1
- Carregador USB para carro -1
- LED -1
- Diodo Zener 5.1v -2
- Cabo USB (tipo B ou compatível com Arduino UNO) -1
- 20 MHz Cristal -1
- Capacitor 33pF -2
Descrição:
Geralmente não é importante medir a carga da bateria do carro todas as vezes, mas muitas vezes precisamos saber sobre a tensão da bateria durante o carregamento, para verificar se está carregando ou não. Com isso, podemos proteger a falha da bateria devido ao sistema de carregamento com defeito. A voltagem de uma bateria de carro de 12v durante o carregamento é de cerca de 13,7v. Assim, podemos identificar se nossa bateria está carregando bem ou não e podemos investigar as causas da falha da bateria. Neste projeto vamos implementar um medidor de tensão para bateria de carro usando um microcontrolador PIC. O isqueiro do carro ou o carregador USB do carro são usados para obter a voltagem da bateria para o pino ADC do microcontrolador com a ajuda do circuito divisor de voltagem. Em seguida, um display de 4 dígitos e sete segmentosé usado para mostrar o valor da tensão da bateria. Este circuito pode medir a tensão de até 15v.
Quando a bateria de um carro está carregando, a tensão nos terminais da bateria está, na verdade, vindo do alternador / retificador, é por isso que o sistema lê 13,7 volts. Mas quando a bateria não está carregando ou o motor do carro não está LIGADO, a voltagem no terminal da bateria é a voltagem real da bateria em torno de 12v.
Também podemos usar o mesmo circuito para medir a tensão de outras fontes de energia até 15v. Para este propósito, soldamos o bloco de terminais (bloco de plástico de cor verde) no PCB, onde você pode conectar dois fios da fonte de alimentação e monitorar a tensão. Confira o vídeo no final, onde o demonstramos medindo a tensão de uma fonte de alimentação variável, um banco de alimentação USB e um adaptador AC-DC 12v. Verifique também o circuito simples do monitor de bateria e o circuito do carregador de bateria 12v.
Diagrama de circuito e explicação de trabalho:
Neste circuito de monitoramento da tensão da bateria, lemos a tensão da bateria do carro usando um pino analógico embutido do microcontrolador PIC e aqui selecionamos o pino AN0 (28) pino do microcontrolador através de um circuito divisor de tensão. Um diodo zener de 5.1v também é usado para proteção.
O display de 7 segmentos 4 em 1 é usado para exibir o valor instantâneo da voltagem da bateria do carro que está conectada no PORTB e PORTC do microcontrolador. Um regulador de tensão de 5 V denominado LM7805 é usado para alimentar todo o circuito, incluindo monitores de sete segmentos. Um oscilador de cristal de 20 MHz é usado para sincronizar o microcontrolador. O circuito é alimentado pelo próprio carregador USB para carro usando um LM7805. Adicionamos uma porta USB no PCB, para que possamos conectar o carregador USB do carro diretamente ao circuito.
O carregador USB ou o isqueiro do carro fornecem alimentação regulada de 5 V da tomada de 12 V do carro, mas precisamos medir a voltagem real da bateria do carro, portanto ajustamos o carregador do carro. Você precisa abrir o carregador USB do carro e encontrar os terminais 5v (saída) e 12v (entrada) e, em seguida, remover a conexão 5v esfregando-a com lixa ou alguma coisa dura e curto-circuitar o terminal de saída USB para 12v diretamente. Primeiro abra a conexão 5v da porta USB no carregador USB do carro e, em seguida, conecte 12v à porta USB onde o 5v foi conectado. Conforme mostrado na figura abaixo, cortamos a conexão com um círculo vermelho, ela pode ser diferente no carregador do seu carro.
Para configurar o ADC aqui, selecionamos o pino analógico AN0 com uma tensão de referência interna de 5v ef / 32 clock para a conversão do ADC.
Para calcular a tensão da bateria do carro a partir do valor ADC, usamos a fórmula dada:
Tensão = (valor ADC / fator de resistor) * Tensão de referência Onde: valor ADC = saída do divisor de tensão (convertido em digital pelo microcontrolador) Fator de resistor = 1023,0 / (R2 / R1 + R2) // 1023 é o valor ADC máximo (10- bit) Tensão de referência = 5 volts // referência 5v interna selecionada
Cálculo do fator de resistência:
Neste projeto, estamos lendo a tensão da bateria do carro que é (geralmente) em torno de 12v-14v. Então, fizemos este projeto assumindo no máximo 15v significa que este sistema pode ser lido no máximo até 15v.
Portanto, no circuito, usamos o resistor R1 e R2 na parte do divisor de tensão e os valores são:
R1 = 2K
R2 = 1K
Fator de resistor = 1023,0 * (1000/2000 + 1000)
Fator de resistor = 1023,0 * (1/3)
Fator do resistor = 341,0 para até 15 volts
Assim, a Fórmula Final para o cálculo da tensão será a seguinte, que utilizamos no Código, fornecida ao final deste Artigo:
Tensão = (valor ADC / 341,0) * 5,0
Projeto de circuito e PCB usando EasyEDA:
Para projetar um circuito para monitor de tensão de bateria de carro, usamos EasyEDA, uma ferramenta EDA online gratuita para a criação de circuitos e PCBs de uma maneira contínua. Anteriormente, encomendamos poucos PCBs da EasyEDA e ainda usando seus serviços, pois encontramos todo o processo, desde o desenho dos circuitos até o pedido dos PCBs, mais conveniente e eficiente em comparação com outros fabricantes de PCBs. EasyEDA oferece desenho de circuito, simulação, design de PCB gratuitamente e também oferece serviço de PCB personalizado de alta qualidade mas baixo preço. Confira aqui o tutorial completo sobre como usar o Easy EDA para fazer esquemas, layouts de PCB, simulação de circuitos etc.
EasyEDA está melhorando dia a dia; eles adicionaram muitos recursos novos e melhoraram a experiência geral do usuário, o que torna o EasyEDA mais fácil e utilizável para projetar circuitos. Em breve, eles vão lançar sua versão Desktop, que pode ser baixada e instalada em seu computador para uso offline.
No EasyEDA, você pode tornar seus circuitos e projetos de PCB públicos para que outros usuários possam copiá-los ou editá-los e tirar proveito disso. Também tornamos públicos todos os nossos circuitos e layouts de PCB para este monitor de tensão de bateria de carro, verifique o link abaixo:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcb relevantdb49a6c776
Abaixo está o instantâneo da camada superior do layout do PCB do EasyEDA, você pode visualizar qualquer camada (superior, inferior, superior, inferior, etc.) do PCB selecionando a camada da janela 'Camadas'.
Calculando e solicitando amostras de PCB online:
Depois de concluir o design do PCB, você pode clicar no ícone de saída de fabricação , que o levará para a página de pedido do PCB. Aqui você pode visualizar seu PCB no Gerber Viewer ou baixar arquivos Gerber do seu PCB e enviá-los a qualquer fabricante, também é muito mais fácil (e barato) encomendá-lo diretamente no EasyEDA. Aqui você pode selecionar o número de PCBs que deseja solicitar, quantas camadas de cobre você precisa, a espessura do PCB, o peso do cobre e até mesmo a cor do PCB. Depois de selecionar todas as opções, clique em “Salvar no carrinho” e conclua seu pedido. Em seguida, você receberá seus PCBs alguns dias depois.
Você pode solicitar diretamente este PCB ou baixar o arquivo Gerber usando este link.
Depois de alguns dias pedindo PCBs, recebi as amostras de PCBs
Depois de obter os PCBs, montei todos os componentes necessários sobre o PCB e, finalmente, temos o nosso Sistema de Monitoramento de Bateria de Carro pronto, verifique este circuito funcionando no Vídeo fornecido no final.
Explicação de programação:
O programa deste projeto é um pouco difícil para iniciantes. Para escrever este código, precisamos de alguns arquivos de cabeçalho. Aqui, estamos usando MPLAB X IDE para codificação e o compilador XC para construir e compilar o código. O código é escrito em linguagem C.
Neste código, lemos a tensão da bateria usando um pino analógico e para controlar ou enviar dados para um display de 7 segmentos de 4 dígitos, usamos a rotina de servidor de interrupção do temporizador no microcontrolador PIC. Todo o cálculo para medição de tensão é feito na rotina do programa principal.
Primeiro, incluímos no código um cabeçalho e, em seguida, configuramos o microcontrolador PIC usando bits de configuração.
#incluir
E então variáveis declaradas e pinos definidos para exibição de sete segmentos
unsigned int counter2; posição char unsigned = 0; caracteres sem sinal k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; dígito interno 1 = 0, dígito 2 = 0, dígito 3 = 0, dígito 4 = 0; #define TRIS_seg1 TRISCbits.TRISC0 #define TRIS_seg2 TRISCbits.TRISC1 #define TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISCbitsine TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISCbitsine.TRISA_TRISA4 TRIS_led1 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISCbits.TRISA_TRISA4 TRIS_led51 TRISCbits.TRISAled2 TRIS_led5 TRISAbits.TRISA………………
Agora, criamos uma rotina de interrupção do cronômetro para orientar a exibição de sete segmentos:
void interrupt low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; if (contador2> = 1) {if (posição == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Agora, na função void main () , inicializamos o timer e a interrupção.
GIE = 1; // GLOBLE INTRRUPT ENABLE PEIE = 1; // sinalizador de intrusão periférica T0CON = 0b000000000; // valor do prescaler put TMR0IE = 1; // ativação da interrupção TMR0IP = 0; // prioridade de interrupção TMR0 = 55536; // inicia o contador após este valor TMR0ON = 1;
E então, em enquanto loop, lemos entrada analógica no pino analógico e chamar alguma função para os cálculos.
enquanto (1) {adc_init (); para (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = Value; } adcValue = (float) adcValue / 40.0; convert (adcValue); atraso (100); }
A função adc_init () dada é usada para inicializar ADC
void adc_init () {ADCON0 = 0b00000011; // selecione o canal adc ADCON1 = 0b00001110; // seleciona i / p analógico e digital ADCON2 = 0b10001010; // tempo de equalização mantendo o limite de tempo ADON = 1; }
Dado adc_value função é usado para ler a entrada do pino analógico e calcular tensão.
float adc_value (void) {float adc_data = 0; enquanto (GO / DONE == 1); // valor de adc de início de conversão de dados de bit mais alto adc_data = (ADRESL) + (ADRESH << 8); // Armazena a saída de 10 bits adc_data = ((adc_data / 342.0) * 5.0); return adc_data; }
E a função de conversão dada é usada para converter o valor da tensão em valores suportados pelo segmento.
void convert (float f) {int d = (f * 100); dígito1 = d% 10; d = d / 10; dígito 2 = d% 10; d = d / 10; dígito 3 = d% 10; dígito 4 = d / 10; }
Verifique o código completo para este projeto abaixo com um vídeo de demonstração.