- Materiais requisitados
- Diagrama de Circuito de Carga Eletrônica Arduino DC
- Projeto PCB e arquivo Gerber
- Solicitando seu PCB de AllPCB
- Código Arduino para carga DC ajustável
- Testando nossa carga DC ajustável
Se você já trabalhou com baterias, circuitos SMPS ou outros circuitos de fonte de alimentação, muitas vezes teria ocorrido que você teria que testar sua fonte de alimentação carregando-a para verificar seu desempenho sob diferentes condições de carregamento. Um dispositivo comumente usado para realizar este tipo de teste é chamado de Carga CC de Corrente Constante, que nos permite ajustar a corrente de saída de sua fonte de alimentação e então mantê-la constante até que seja ajustada novamente. Neste tutorial, aprenderemos como construir nossa própria carga eletrônica ajustável usando Arduino, que pode receber uma tensão de entrada máxima de 24 V e drenar corrente de até 5A. Para este projeto, usamos placas de PCB que são fabricadas pela AllPCB, um provedor de serviços de fabricação e montagem de PCB profissional com base na China.
Em nosso tutorial anterior de fonte de corrente controlada por tensão, explicamos como usar um amplificador operacional com um MOSFET e fazer uso de um circuito de fonte de corrente controlada por tensão. Mas neste tutorial, vamos aplicar esse circuito e fazer uma fonte de corrente controlada digitalmente. Obviamente, uma fonte de corrente controlada digitalmente requer um circuito digital e, para atender ao propósito, um Arduino NANO é usado. O Arduino NANO fornecerá os controles necessários para a carga CC.
O circuito consiste em três partes. A primeira parte é a seção Arduino Nano, a segunda parte é o conversor digital para analógico e a terceira parte é um circuito analógico puro onde um amplificador operacional duplo em um único pacote é usado para controlar a seção de carga. Este projeto é inspirado em um post sobre o Arduino, porém, o circuito foi alterado para menos complexidade com recursos básicos para que todos possam construí-lo.
Nossa carga eletrônica é projetada para ter as seguintes seções de entrada e saída.
- Duas chaves de entrada para aumentar e diminuir a carga.
- Um LCD que exibirá a carga definida, a carga real e a tensão de carga.
- A corrente de carga máxima é limitada a 5A.
- A tensão de entrada máxima é de 24 V para a carga.
Materiais requisitados
Os componentes necessários para construir uma carga eletrônica DC estão listados abaixo.
- Arduino nano
- LCD de 16x2 caracteres
- Soquete de dois barris
- Mosfet irf540n
- Mcp4921
- Lm358
- Resistor shunt de 5 watts.1 ohms
- 1k
- 10k - 6pcs
- Dissipador de calor
- .1uF 50v
- 2k - 2pcs
Diagrama de Circuito de Carga Eletrônica Arduino DC
No esquema abaixo, o amplificador operacional tem duas seções. Um é controlar o MOSFET e o outro é amplificar a corrente detectada. Você também pode conferir o vídeo no final desta página que explica o funcionamento completo do circuito. A primeira seção contém R12, R13 e MOSFET. R12 é usado para reduzir o efeito de carregamento na seção de feedback e R13 é usado como o resistor de porta Mosfet.
Dois resistores adicionais R8 e R9 são usados para detectar a tensão de alimentação da fonte de alimentação que será estressada por esta carga fictícia. De acordo com a regra do divisor de tensão, esses dois resistores suportam no máximo 24V. Mais de 24 V produzirá uma voltagem que não será adequada para os pinos do Arduino. Portanto, tome cuidado para não conectar uma fonte de alimentação com tensão de saída superior a 24V.
O resistor R7 é o resistor de carga real aqui. É um resistor de 5 Watts e 0,1 Ohm. De acordo com a lei de potência, ele suportará no máximo 7A (P = I 2 R), mas para o lado seguro, é mais sensato limitar a corrente de carga máxima de 5A. Portanto, no momento, a carga máxima de 24 V e 5 A pode ser definida por esta carga fictícia.
Outra seção do amplificador é configurada como um amplificador de ganho. Ele fornecerá ganho de 6x. Durante o fluxo de corrente, uma queda de tensão aparecerá. Por exemplo, quando 5A de corrente está fluindo através do resistor, a queda de tensão será de 0,5 V no resistor shunt de 0,1 Ohms (V = I x R) de acordo com a lei de ohms. O amplificador não inversor irá amplificá-lo para x6, portanto, 3 V será a saída da segunda parte do amplificador. Essa saída será detectada pelo pino de entrada analógica do Arduino nano e a corrente será calculada.
A primeira parte do amplificador é configurada como um circuito seguidor de tensão que controlará o MOSFET de acordo com a tensão de entrada e obterá a tensão de feedback desejada devido à corrente de carga que flui através do resistor shunt.
MCP4921 é o conversor digital para analógico. O DAC usa o protocolo de comunicação SPI para obter os dados digitais de qualquer unidade de microcontrolador e fornecer saída de tensão analógica dependendo dela. Esta tensão é a entrada do amplificador operacional. Também aprendemos anteriormente como usar este MCP4921 DAC com PIC.
Do outro lado, existe um Arduino Nano que fornecerá os dados digitais ao DAC via protocolo SPI e controlará a carga, exibindo também os dados no display de 16x2 caracteres. Duas coisas adicionais são usadas, isto é, o botão de diminuir e aumentar. Em vez de se conectar a um pino digital, ele é conectado aos pinos analógicos. Portanto, pode-se alterá-lo para outro tipo de chave, como controle deslizante ou codificador analógico. Além disso, ao modificar o código, pode-se fornecer dados analógicos brutos para controlar a carga. Isso também evita o problema de debounce do switch.
Por fim, ao aumentar a carga, o Arduino nano fornecerá os dados de carga para o DAC em formato digital, o DAC fornecerá dados analógicos para o amplificador operacional e o amplificador operacional controlará o MOSFET de acordo com a tensão de entrada do amplificador operacional. Finalmente, dependendo do fluxo de corrente de carga através do resistor shunt, uma queda de tensão aparecerá, que será posteriormente amplificada pelo segundo canal do LM358 e obtida pelo Arduino nano. Isso será exibido no visor de caracteres. O mesmo acontecerá quando o usuário pressionar o botão diminuir.
Projeto PCB e arquivo Gerber
Uma vez que este circuito tem um caminho de alta corrente, é uma escolha mais sábia usar táticas de projeto de PCB adequadas para remover casos de falha indesejados. Portanto, um PCB é projetado para esta carga CC. Eu usei o Eagle PCB Design Software para projetar meu PCB. Você pode escolher qualquer software PCB Cad. O PCB final projetado no software CAD é mostrado na imagem abaixo,
Um fator importante a ser observado durante o projeto deste PCB é o uso de um plano de potência espesso para o fluxo de corrente adequado em todo o circuito. Há também VIAS de costura de aterramento (vias aleatórias no plano de aterramento) que são usadas para o fluxo de aterramento adequado nas camadas superior e inferior.
Você também pode baixar o arquivo Gerber deste PCB no link abaixo e usá-lo para fabricação.
- Baixar arquivo Gerber de carga DC eletrônico ajustável
Solicitando seu PCB de AllPCB
Quando estiver pronto com seu arquivo Gerber, você pode usá-lo para fabricar seu PCB. Falar nisso traz o patrocinador deste artigo ALLPCB, que são conhecidos por seus PCBs de alta qualidade e remessa ultrarrápida. Além da fabricação de PCB, AllPCB também forneceFornecimento de componentes e montagem de PCB.
Para obter seu pedido de PCB deles, visite allpcb.com e inscrição. Em seguida, na página inicial, insira as dimensões do seu PCB e a quantidade necessária conforme mostrado abaixo. Em seguida, clique em Citar agora.
Agora você pode alterar os outros parâmetros de seu PCB como o número de camadas, cor da máscara, espessura, etc. No lado direito, você pode escolher seu país e a opção de envio preferida. Isso mostrará o prazo de entrega e o valor total a ser pago. Eu escolhi a DHL e meu valor total é $ 26, mas se você for um cliente pela primeira vez, os preços cairão no checkout. Em seguida, clique em Adicionar ao carrinho e depois em check out now.
Agora, você pode clicar em fazer upload de seu arquivo Gerber clicando em “Upload Gerber” e depois clicar em comprar.
Na próxima página, você pode inserir seu endereço de entrega e verificar o preço final a pagar pelo seu PCB. Você pode então revisar seu pedido e clicar em enviar para fazer o pagamento.
Assim que seu pedido for confirmado, você pode sentar e retransmitir para que seu PCB chegue à sua porta. Recebi meu pedido depois de alguns dias e a embalagem estava limpa, conforme mostrado abaixo.
A qualidade do PCB estava boa como sempre, como você pode ver nas fotos abaixo. O lado superior e o lado inferior da placa são mostrados abaixo.
Depois de obter sua placa, você pode prosseguir com a montagem de todos os componentes. Minha placa acabada é parecida com a mostrada abaixo.
Em seguida, você pode carregar o código e ligar o módulo para verificar como está funcionando. O código completo para este projeto é fornecido na parte inferior desta página. A explicação do código é a seguinte.
Código Arduino para carga DC ajustável
O código é muito simples. No início, incluímos arquivos de cabeçalho SPI e LCD, bem como definimos a tensão lógica máxima, pinos de seleção de chip, etc.
#incluir
Esta seção consiste em declarações necessárias relacionadas ao fluxo do programa de inteiros e variáveis. Além disso, definimos os pinos de periféricos associados com Arduino Nano.
const int escravoSelectPin = 10; // Chip select pin int number = 0; aumento interno = A2; // Aumenta o pino int diminui = A3; // diminui o pino int current_sense = A0; // pino de detecção de corrente int voltage_sense = A1; // pino de detecção de tensão int state1 = 0; estado int2 = 0; int Set = 0; flutuador volt = 0; float load_current = 0,0; float load_voltage = 0,0; corrente flutuante = 0,0; tensão flutuante = 0,0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // pinos de LCD
Isso é usado para a configuração de LCD e SPI. Além disso, as direções dos pinos são definidas aqui.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (aumentar, INPUT); pinMode (diminuir, INPUT); pinMode (current_sense, INPUT); pinMode (voltage_sense, INPUT); // inicializa o SPI: SPI.begin (); // configura o número de colunas e linhas do LCD : lcd.begin (16, 2); // Imprime uma mensagem no LCD. lcd.print ("Carga digital"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); atraso (2000); }
É usado para converter o valor DAC.
void convert_DAC (unsigned int value) { / * Step Size = 2 ^ n, portanto, 12bit 2 ^ 12 = 4096 Para 5V de referência, a step será 5/4095 = 0.0012210012210012V ou 1mV (aprox) * / unsigned int container; unsigned int MSB; unsigned int LSB; / * Etapa: 1, armazenou os dados de 12 bits no contêiner Suponha que os dados sejam 4095, em binário 1111 1111 1111 * / contêiner = valor; / * Etapa: 2 Criando Dummy de 8 bits. Assim, ao dividir 256, os 4 bits superiores são capturados em LSB LSB = 0000 1111 * / LSB = container / 256; / * Etapa: 3 Envio da configuração com punção dos dados de 4 bits. LSB = 0011 0000 OU 0000 1111. O resultado é 0011 1111 * / LSB = (0x30) - LSB; / * Etapa: 4 O contêiner ainda tem o valor de 21 bits. Extraindo os 8 bits inferiores. 1111 1111 AND 1111 1111 1111. O resultado é 1111 1111 que é MSB * / MSB = 0xFF & container; / * Etapa: 4 Enviando os dados de 16 bits dividindo-os em dois bytes. * / digitalWrite (slaveSelectPin, LOW); atraso (100); SPI.transfer (LSB); SPI.transfer (MSB); atraso (100); // leva o pino SS alto para desmarcar o chip: digitalWrite (slaveSelectPin, HIGH); }
Esta seção é usada para operações relacionadas à detecção de corrente.
float read_current (void) { load_current = 0; para (int a = 0; a <média; a ++) { load_current = load_current + analogRead (current_sense); } load_current = load_current / average; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; return load_current; }
Isso é usado para ler a tensão de carga.
float read_voltage (void) { load_voltage = 0; for (int a = 0; a <média; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = load_voltage / média; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; return load_voltage; }
Este é o loop real. Aqui, as etapas da chave são medidas e os dados são enviados ao DAC. Depois de transmitir os dados, o fluxo de corrente real e a tensão de carga estão sendo medidos. Ambos os valores também são finalmente impressos no LCD.
loop vazio () { estado1 = analogRead (aumentar); if (estado1> 500) { atraso (50); estado1 = analogRead (aumento); if (estado1> 500) { volt = volt + 0,02; } } estado2 = analogRead (diminuir); if (estado2> 500) { atraso (50); estado2 = leitura analógica (diminuir); if (state2> 500) { if (volt == 0) { volt = 0; } else { volt = volt-0,02; } } } número = volt / 0,0012210012210012; convert_DAC (número); tensão = read_voltage (); current = read_current (); lcd.setCursor (0, 0); lcd.print ("Definir valor"); lcd.print ("="); Definir = (volt / 2) * 10000; lcd.print (Set); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (atual); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (voltagem); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // delay (1000); //lcd.clear (); }
Testando nossa carga DC ajustável
O circuito de carga digital é soldado e ligado usando uma fonte de alimentação de 12V. Usei minha bateria de lítio de 7,4 V no lado da fonte de alimentação e conectei um alicate amperímetro para verificar como está funcionando. Como você pode ver, quando a corrente definida é 300mA, o circuito consome 300mA da bateria, que também é medido pelo alicate amperímetro como 310mA.
O funcionamento completo do circuito pode ser encontrado no vídeo no link abaixo. Espero que você tenha entendido o projeto e gostado de construir algo útil. Se você tiver alguma dúvida, deixe-a na seção de comentários ou use os Fóruns.