- Materiales necesarios
- Diagrama de circuito de carga electrónica Arduino DC
- Diseño de PCB y archivo Gerber
- Solicitar su PCB a AllPCB
- Código Arduino para carga CC ajustable
- Prueba de nuestra carga de CC ajustable
Si alguna vez ha trabajado con baterías, circuitos SMPS u otros circuitos de suministro de energía, a menudo habría ocurrido que tenía que probar su fuente de energía cargándola para verificar cómo funciona bajo diferentes condiciones de carga. Un dispositivo que se usa comúnmente para realizar este tipo de prueba se llama Carga CC de Corriente Constante, que nos permite ajustar la corriente de salida de su fuente de energía y luego la mantiene constante hasta que se ajusta nuevamente. En este tutorial, aprenderemos cómo construir nuestra propia carga electrónica ajustable usando Arduino, que puede tomar un voltaje de entrada máximo de 24 V y drenar corriente tan alta como 5 A. Para este proyecto, hemos utilizado placas de PCB que son fabricadas por AllPCB, un proveedor de servicios de montaje y fabricación de PCB profesional con sede en China.
En nuestro tutorial anterior de fuente de corriente controlada por voltaje, hemos explicado cómo usar un amplificador operacional con un MOSFET y hacer uso de un circuito de fuente de corriente controlado por voltaje. Pero en este tutorial, aplicaremos ese circuito y crearemos una fuente de corriente controlada digitalmente. Obviamente, una fuente de corriente controlada digitalmente requiere un circuito digital y para cumplir este propósito, se utiliza un Arduino NANO. El Arduino NANO proporcionará los controles necesarios para la carga de CC.
El circuito consta de tres partes. La primera parte es la sección Arduino Nano, la segunda parte es el convertidor de digital a analógico y la tercera parte es un circuito analógico puro donde se utiliza un amplificador operacional dual en un solo paquete que controlará la sección de carga. Este proyecto está inspirado en una publicación sobre Arduino, sin embargo, el circuito se cambia por menos complejidad con características básicas para que todos puedan construirlo.
Nuestra carga electrónica está diseñada para tener las siguientes secciones de entrada y salida.
- Dos interruptores de entrada para aumentar y disminuir la carga.
- Una pantalla LCD que mostrará la carga establecida, la carga real y el voltaje de carga.
- La corriente de carga máxima está limitada a 5A.
- El voltaje de entrada máximo es de 24 V para la carga.
Materiales necesarios
Los componentes necesarios para construir una carga electrónica de CC se enumeran a continuación.
- Arduino nano
- LCD de 16x2 caracteres
- Toma de dos barriles
- Mosfet irf540n
- Mcp4921
- Lm358
- Resistencia de derivación de 5 vatios.1 ohmios
- 1k
- 10k - 6 piezas
- Disipador de calor
- .1uF 50v
- 2k - 2 piezas
Diagrama de circuito de carga electrónica Arduino DC
En el siguiente esquema, el amplificador operacional tiene dos secciones. Uno es controlar el MOSFET y el otro es amplificar la corriente detectada. También puede ver el video en la parte inferior de esta página que explica el funcionamiento completo del circuito. La primera sección tiene R12, R13 y MOSFET. R12 se usa para reducir el efecto de carga en la sección de retroalimentación y R13 se usa como resistencia de puerta Mosfet.
Se utilizan dos resistencias adicionales, R8 y R9, para detectar el voltaje de suministro de la fuente de alimentación que será estresado por esta carga ficticia. Según la regla del divisor de voltaje, estas dos resistencias admiten un máximo de 24 V. Más de 24 V producirán un voltaje que no será adecuado para los pines Arduino. Por lo tanto, tenga cuidado de no conectar una fuente de alimentación que tenga un voltaje de salida superior a 24 V.
La resistencia R7 es la resistencia de carga real aquí. Es una resistencia de 5 Watt,.1 Ohm. Según la ley de potencia, admitirá un máximo de 7A (P = I 2 R), pero para el lado seguro, es más prudente limitar la corriente de carga máxima de 5A. Por lo tanto, en la actualidad, esta carga ficticia puede establecer una carga máxima de 24 V y 5 A.
Otra sección del amplificador está configurada como amplificador de ganancia. Proporcionará una ganancia de 6x. Durante el flujo de corriente, aparecerá una caída de voltaje. Por ejemplo, cuando 5A de corriente fluyen a través del resistor, la caída de voltaje será de.5V a través del resistor de derivación de.1 ohmios (V = I x R) de acuerdo con la ley de ohmios. El amplificador no inversor lo amplificará a x6, por lo tanto, 3V será la salida de la segunda parte del amplificador. Esta salida será detectada por el pin de entrada analógica nano Arduino y se calculará la corriente.
La primera parte del amplificador está configurada como un circuito seguidor de voltaje que controlará el MOSFET según el voltaje de entrada y obtendrá el voltaje de retroalimentación deseado debido a la corriente de carga que fluye a través de la resistencia de derivación.
MCP4921 es el convertidor de digital a analógico. El DAC utiliza el protocolo de comunicación SPI para obtener los datos digitales de cualquier unidad de microcontrolador y proporcionar una salida de voltaje analógica dependiendo de ella. Este voltaje es la entrada del amplificador operacional. Anteriormente también aprendimos cómo usar este DAC MCP4921 con PIC.
Por otro lado, hay un Arduino Nano que proporcionará los datos digitales al DAC a través del protocolo SPI y controlará la carga, mostrando también los datos en la pantalla de 16x2 caracteres. Se utilizan dos cosas adicionales, que es el botón de aumento y disminución. En lugar de conectarse a un pin digital, se conecta a los pines analógicos. Por lo tanto, se puede cambiar a otro tipo de interruptores como deslizador o codificador analógico. Además, modificando el código, se pueden proporcionar datos analógicos sin procesar para controlar la carga. Esto también evita el problema de supresión de rebotes del conmutador.
Finalmente, al aumentar la carga, el Arduino nano proporcionará los datos de carga al DAC en formato digital, el DAC proporcionará datos analógicos al amplificador operacional y el amplificador operacional controlará el MOSFET según el voltaje de entrada del amplificador operacional.. Finalmente, dependiendo del flujo de corriente de carga a través de la resistencia de derivación, aparecerá una caída de voltaje que será amplificada aún más por el segundo canal del LM358 y pasará por el Arduino nano. Esto se mostrará en la pantalla de caracteres. Lo mismo ocurrirá cuando el usuario presione el botón de disminución.
Diseño de PCB y archivo Gerber
Dado que este circuito tiene una ruta de alta corriente, es una opción más inteligente utilizar las tácticas de diseño de PCB adecuadas para eliminar los casos de fallas no deseadas. Por lo tanto, una PCB está diseñada para esta carga de CC. He utilizado el software de diseño de PCB Eagle para diseñar mi PCB. Puede elegir cualquier software Cad para PCB. El PCB diseñado final en el software CAD se muestra en la siguiente imagen,
Un factor importante a tener en cuenta durante el diseño de esta PCB es utilizar un plano de potencia grueso para un flujo de corriente adecuado en todo el circuito. También hay VIAS de costura en el suelo (vías aleatorias en el plano del suelo) que se utilizan para un flujo de suelo adecuado en las capas superior e inferior.
También puede descargar el archivo Gerber de este PCB desde el enlace a continuación y usarlo para la fabricación.
- Descargar archivo Gerber de carga CC electrónica ajustable
Solicitar su PCB a AllPCB
Una vez que esté listo con su archivo Gerber, puede usarlo para fabricar su PCB. Hablando de eso, aparece el patrocinador de este artículo, ALLPCB, que son conocidos por sus PCB de alta calidad y envío ultrarrápido. Aparte de la fabricación de PCB, AllPCB también ofreceMontaje de PCB y suministro de componentes.
Para obtener su pedido de PCB de ellos, visite allpcb.com y regístrese. Luego, en la página de inicio, ingrese las dimensiones de su PCB y la cantidad requerida como se muestra a continuación. Luego haga clic en Cotizar ahora.
Ahora puede cambiar los otros parámetros de su PCB como el número de capas, el color de la máscara, el grosor, etc. En el lado derecho, puede elegir su país y la opción de envío preferida. Esto le mostrará el tiempo de espera y el monto total a pagar. Elegí DHL y mi monto total es de $ 26, pero si es un cliente nuevo, los precios bajarán en la caja. Luego haga clic en Agregar al carrito y luego haga clic en pagar ahora.
Ahora, puede hacer clic en cargar su archivo Gerber haciendo clic en "Cargar Gerber" y luego hacer clic en comprar.
En la página siguiente, puede ingresar su dirección de envío y verificar el precio final que debe pagar por su PCB. Luego puede revisar su pedido y luego hacer clic en enviar para realizar el pago.
Una vez que se confirme su pedido, puede sentarse y transmitir para que su PCB llegue a su puerta. Recibí mi pedido después de unos días y luego el empaque fue ordenado como se muestra a continuación.
La calidad de la PCB fue buena como siempre, como puede ver por sí mismo en las imágenes a continuación. El lado superior y el lado inferior del tablero se muestran a continuación.
Una vez que obtenga su placa, puede proceder a ensamblar todos los componentes. Mi tablero terminado se parece a esto que se muestra a continuación.
A continuación, puede cargar el código y encender el módulo para verificar cómo está funcionando. El código completo de este proyecto se encuentra al final de esta página. La explicación del código es la siguiente.
Código Arduino para carga CC ajustable
El código es bastante simple. Al principio, incluimos archivos de encabezado SPI y LCD, así como establecemos el voltaje lógico máximo, los pines de selección de chip, etc.
#incluir
Esta sección consta de declaraciones requeridas relacionadas con el flujo del programa de enteros y variables. Además, configuramos los pines de periféricos asociados con Arduino Nano.
const int slaveSelectPin = 10; // Chip seleccionar pin int número = 0; int aumento = A2; // Aumentar pin int decrementar = A3; // disminuir pin int current_sense = A0; // pin de detección de corriente int voltage_sense = A1; // pin de detección de voltaje int state1 = 0; int state2 = 0; int Set = 0; voltio flotante = 0; float load_current = 0.0; Float load_voltage = 0.0; corriente de flotación = 0.0; voltaje de flotación = 0.0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // Pines LCD
Se utiliza para la configuración de LCD y SPI. Además, las direcciones de los pines se establecen aquí.
configuración vacía () { pinMode (slaveSelectPin, OUTPUT); pinMode (aumento, ENTRADA); pinMode (disminución, ENTRADA); pinMode (sentido_actual, ENTRADA); pinMode (voltage_sense, ENTRADA); // inicializar SPI: SPI.begin (); // configura el número de columnas y filas de la pantalla LCD: lcd.begin (16, 2); // Imprime un mensaje en la pantalla LCD. lcd.print ("Carga digital"); lcd.setCursor (0, 1); lcd.print ("Resumen de circuitos"); retraso (2000); }
Se utiliza para convertir el valor DAC.
void convert_DAC (unsigned int value) { / * Step Size = 2 ^ n, Por lo tanto, 12bit 2 ^ 12 = 4096 Para una referencia de 5V, el paso será 5/4095 = 0.0012210012210012V o 1mV (aprox) * / unsigned int container; MSB int sin firmar; unsigned int LSB; / * Paso: 1, almacenó los datos de 12 bits en el contenedor Supongamos que los datos son 4095, en binario 1111 1111 1111 * / contenedor = valor; / * Paso: 2 Creando Dummy de 8 bits. Entonces, al dividir 256, los 4 bits superiores se capturan en LSB LSB = 0000 1111 * / LSB = contenedor / 256; / * Paso: 3 Envío de la configuración perforando los datos de 4 bits. LSB = 0011 0000 O 0000 1111. El resultado es 0011 1111 * / LSB = (0x30) - LSB; / * Paso: 4 El contenedor todavía tiene el valor de 21 bits. Extrayendo los 8 bits inferiores. 1111 1111 AND 1111 1111 1111. El resultado es 1111 1111 que es MSB * / MSB = 0xFF & container; / * Paso: 4 Enviar los datos de 16 bits dividiéndolos en dos bytes. * / digitalWrite (slaveSelectPin, LOW); retraso (100); Transferencia SPI (LSB); SPI.transfer (MSB); retraso (100); // tome el pin SS alto para deseleccionar el chip: digitalWrite (slaveSelectPin, HIGH); }
Esta sección se utiliza para operaciones relacionadas con la detección de corriente.
float read_current (void) { load_current = 0; para (int a = 0; a <promedio; 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; }
Se utiliza para leer la tensión de carga.
flotar read_voltage (void) { load_voltage = 0; para (int a = 0; a <promedio; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = load_voltage / average; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; return load_voltage; }
Este es el bucle real. Aquí, se miden los pasos del interruptor y los datos se envían al DAC. Después de transmitir los datos, se mide el flujo de corriente real y el voltaje de carga. Ambos valores también se imprimen finalmente en la pantalla LCD.
bucle vacío () { estado1 = analogRead (aumentar); si (estado1> 500) { retraso (50); state1 = analogRead (aumentar); si (estado1> 500) { voltio = voltio + 0.02; } } state2 = analogRead (disminuir); si (estado2> 500) { retraso (50); state2 = analogRead (disminuir); if (estado2> 500) { if (voltio == 0) { voltio = 0; } else { voltio = voltio-0.02; } } } número = voltio / 0,0012210012210012; convert_DAC (número); voltaje = read_voltage (); actual = read_current (); lcd.setCursor (0, 0); lcd.print ("Establecer valor"); lcd.print ("="); Establecer = (voltios / 2) * 10000; lcd.print (conjunto); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (actual); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (voltaje); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // retraso (1000); //lcd.clear (); }
Prueba de nuestra carga de CC ajustable
El circuito de carga digital se suelda y se enciende con una fuente de alimentación de 12V. Utilicé mi batería de litio de 7,4 V en el lado de la fuente de alimentación y conecté una pinza amperimétrica para comprobar cómo funciona. Como puede ver, cuando la corriente establecida es de 300 mA, el circuito extrae 300 mA de la batería, que también se mide con la pinza amperimétrica como 310 mA.
El funcionamiento completo del circuito se puede encontrar en el video vinculado a continuación. Espero que haya entendido el proyecto y haya disfrutado construyendo algo útil. Si tiene alguna pregunta déjela en la sección de comentarios o use los foros.