Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Fuente de alimentación de bolsillo programable con pantalla OLED

Componentes y suministros

Arduino UNO
× 1
Arduino Nano R3
× 1
XL 6009 DC DC Boost
× 1
Interruptor de botón SparkFun de 12 mm
× 1
Cristal de 16 MHz
× 1
Conector de bloque de terminales
× 1
Regulador lineal con salida ajustable
× 1
Regulador lineal (7805)
× 1
1N4007 - Diodo nominal de alta tensión y alta corriente
× 1
Cable USB-A a B
× 1
Potenciómetro de precisión multivuelta - 10k ohmios (25 vueltas)
× 1
OP07 Instrumentación OpAmp
× 1
Caja de conexión genérica
× 1
FR4 Proto Board
× 1
Cables de puente (genéricos)
× 1
Encabezado masculino 40 Posición 1 Fila (0.1 ")
× 1
Resistencia de 10k ohmios
× 1
Resistencia 22.1k ohm
× 1
Resistencia 1k ohm
× 1
Arduino Latching Relay 5v 2A
× 1
Potenciómetro digital SparkFun MCP 4131 10k
× 1
Arduino Copper Tape
× 1
Arduino LM358 Opamp
× 1
Arduino 1306 OLED
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Pistola de pegamento caliente (genérica)
Mini taladro motor

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

La idea

Como personas aficionadas, con frecuencia necesitamos alimentar nuestros prototipos, verificar el voltaje, la corriente, los límites de potencia de nuestros proyectos, probar un componente recién comprado. La necesidad de una fuente de alimentación variable siempre está presente en esta línea de trabajo. Pero, desafortunadamente, no todos tenemos fuentes de alimentación de laboratorio o de banco. También es caro si se compra, voluminoso si es necesario llevarlo. Estaba buscando una fuente de alimentación programable a un costo menor, con portabilidad y productividad para alimentar mis prototipos y probar componentes. Entonces, decidí hacer uno.

Tiene las siguientes características:

  • Programable
  • recargable
  • Portátil
  • Variable de paso
  • Medidor de voltaje / corriente / potencia
  • Relé protegido
  • Personalizable, compacto y atractivo
  • Interfaz de usuario OLED genial
  • Control de usuario con botones y navegación basada en menús
  • Firmware actualizable para obtener más funciones.

Y la fuente de alimentación más versátil para proyectos de electrónica de baja potencia.

¡Acción en vivo!

Vea este video que demuestra el funcionamiento del dispositivo:

Especificaciones del dispositivo

El dispositivo tiene la siguiente especificación:

  • Corriente de carga de CC de salida máxima:400 mA
  • Rango de voltaje:2.0 voltios - 12.0 voltios
  • Paso de voltaje:0,1 voltios aprox.
  • Máxima eficiencia:75%
  • Precisión de la medición de corriente:+/- 1 mA
  • Precisión de la medición de voltaje:+/- 0.02 voltios

Tenga en cuenta que este dispositivo es un prototipo rápido. Es posible generar 0-30, incluso suministro negativo y más corriente de salida mediante el uso de baterías de alta capacidad, componentes electrónicos adicionales y diseño mejorado.

Principio de funcionamiento

El diseño en sí es intensivo en hardware. Un montón de cosas sucediendo aquí. Un diagrama de bloques burdo del sistema es algo como esto:

La fuente de energía es la batería Li-Po de 3,7 V que es recargable por USB. Usando un módulo de refuerzo XL6009 DC-DC primero, hacemos 15.6 voltios del Li-Po. Para ejecutar la MCU también fabricamos un regulador de 5 voltios con el regulador 7805.

El clon Atmega328P de Arduino UNO está conectado con 2 interruptores de entrada de usuario basados ​​en interrupciones, una elegante pantalla de salida OLED. Puerto de carga de firmware Rx / Tx / DTR (boceto) a través de USB / Serie desde la PC. (módulo 1)

El corazón del proyecto es el Potenciómetro digital MCP4131 (Digipot) + LM 358 OpAmp Generador de voltaje escalonado. Este voltaje es el voltaje de control del regulador ajustable LM317. (módulo 2)

Digipot se controla desde Arduino a través de un comando similar a Pseudo-SPI. El LM317 está diseñado de tal manera que el Voltaje del pin de salida es siempre 1,25 voltios más alto que el Ajustar voltaje del pin siempre que el voltaje de la clavija de ENTRADA sea lo suficientemente alto (aquí 15,6 voltios). (módulo 3)

El voltaje de paso se alimenta al Pin de ajuste para crear una salida variable desde el Arduino según lo necesite el usuario.

El ADC mide todos los voltajes asociados con la supervisión y protección; El voltaje de la batería, el voltaje aumentado, el voltaje de detección de carga y el voltaje de salida se condicionan a través de la red divisora ​​de voltaje para alimentar el rango de ADC, que aquí es de 0-1,1 voltios. He usado la REFERENCIA INTERNA de Arduino que crea un voltaje de referencia de 1.1 voltios.

Para la detección de corriente, el retorno (tierra de carga) de la carga de salida se conecta en serie con una resistencia de detección de corriente de 1 ohmio a la tierra del sistema. Cuando la corriente fluye a través de las cargas externas, también hay una caída de voltaje en este sentido de resistencia. Este voltaje se amplifica a través del amplificador de operación de precisión OP07 y se alimenta a uno de los pines ADC.

Por último, para la carga de la batería, 5 voltios del USB se conectan en serie con un diodo 4007 y una resistencia limitadora de corriente de 5 ohmios a la batería Li-Po. Este es un método de carga ordinario, no el mejor para la carga de Li-Po.

Operación Summery: El potenciómetro digital MCP4131 crea voltajes escalonados con un rango de 0-5 voltios en un intervalo de aproximadamente 40 mV (el Digipot de 10K de 7 bits tiene 129 pasos 5V / 128 =0.40 mV), que luego se amplifica 2.5 veces por el LM358 que da 0-12.5 Voltios controlan el rango de voltaje con pasos de 0.1 voltios. Esta señal de voltaje de paso amplificado se envía al pin de ajuste del LM317. LM317 genera un voltaje de salida de V_Step + 1.25 Voltios que se suministra a las cargas externas. El retorno / tierra de la carga externa se conecta a la tierra interna a través de una resistencia de detección de corriente de 1 ohmio. Supongamos: x La corriente de mA fluye hacia una carga externa, creará x Caída de mV (ley de ohmios V =I * R) en la resistencia de detección de corriente de 1 ohmio. Esta pequeña señal de voltaje se alimenta a OpAmp OP07 de compensación baja (10uV) configurado con una ganancia de 2.5X, que generará 2.5 x Salida mV. El Arduino ADC está configurado con una referencia interna de 1,1 voltios para que se puedan detectar voltajes de 0 a 1100 mV en un paso de aproximadamente 1 mV (1100/1023). La salida de OP07 está conectada a Arduino ADC para detección de corriente. Es por eso que el límite de corriente es de 400 mA. Puede aumentarse / reducirse cambiando la ganancia de OP07. De manera similar, el rango de voltaje de salida se puede cambiar cambiando el voltaje de refuerzo y la ganancia de LM358. Otros voltajes se miden con voltajes de atenuación de la red de divisores de voltaje resistivo para ajustarse al rango de ADC. El relé de pestillo tiene 2 bobinas. Aplicando energía momentánea a cualquiera de las bobinas, los contactos del relé pueden conmutarse. Una vez que se cambia, permanece allí, por lo que la bobina se apaga inmediatamente.

Construyendo el proyecto

Primero, comenzamos con una caja de enchufe de interruptor único, y hacemos los cortes y alineamientos necesarios para colocar la batería, el puerto de carga USB, el interruptor de encendido, etc.

A continuación, el disipador de calor se fabrica con cinta de cobre y una moneda para el módulo de refuerzo DC-DC.

El módulo de refuerzo se coloca dentro de la caja de conexiones:

Usando las partes anteriores, se hacen los siguientes 3 módulos:

  • Módulo de control Arduino + I / O +
  • Paso de voltaje y módulo regulador ajustable
  • Módulo de detección de corriente

Finalmente, las conexiones de telaraña entre todas las placas están conectadas y soldadas.

Después de usar el pegamento termofusible como relleno, finalmente lo tenemos:

Desarrollo del firmware y procedimiento operativo

El firmware (Arduino Sketch) es ahora 1.0.2 Beta. No todas las funciones están disponibles en este momento. Pero las funciones más importantes, como el control de voltaje, el relé de conexión / desconexión y la visualización de información, están habilitadas. En el void setup () hay pocas funciones de inicialización para calentar los pines Arduino asociados a diferentes hardware externo.

ENTRADA :Hay 2 botones de entrada basados ​​en interrupciones para aumentar / disminuir el voltaje de salida, menú de acceso (no disponible en esta versión). INT0 e INT1 en Arduino Pin 2 y 3 están codificados para FALLING EDGE INTERRUPT. Verá 2 condensadores en paralelo con interruptores mecánicos para eliminar el rebote. El código está escrito para activar interrupciones cuando el usuario presiona estos interruptores para encender / apagar la salida a través del relé o aumentar / disminuir el voltaje (Beta).

SALIDA :El 1306 OLED muestra información de salida adquiriendo datos de ADC, temporizador interno (para el tiempo de actividad del dispositivo) y variables de marca para informar al usuario sobre el estado de habilitación / deshabilitación de la salida. Basado en la biblioteca U8G, el OLED imprime información en forma de texto y numérica. Tengo planes para usar una representación gráfica (tipo analógica).

5 pines digitales de SSD1306 (OLED de Waveshare) clk, din, cs, d / c, res están conectados a Arduino 10, 9, 11, 13, 12 pines y programados en consecuencia. En el bucle principal update_display () se llama a la función cada vez para actualizar la información en el OLED.

El temporizador interno 1 de Atmega328P está configurado para activarse periódicamente cada 1 segundo para realizar un seguimiento del tiempo.

CONTROL: El potenciómetro digital MCP 4131 es un controlador con increment_digipot () y decrement_digipot () funciones donde los datos se desplazan con la sincronización y el retraso adecuados utilizando los pines 6, 7, 8 como CS, Clk, pines de datos. Es como un SPI lento y suave. Como ya usé los pines SPI de hardware en otro lugar, esta era la única solución en ese momento.

Se utilizan dos pines digitales 4 y 5 para controlar el relé de enclavamiento. Se alimenta un pulso alto corto a los transistores de activación del relé para energizar las 2 bobinas y activar el relé. Ocurre tanto automáticamente (durante sobrecarga / cortocircuito) como manualmente por el usuario.

ADC: El calc_VI () La función en el bucle principal realiza analogRead para obtener información de voltaje y corriente promediada 20 veces y actualizar la variable para obtener nueva información que luego se imprime en la pantalla

El boceto está escrito en varias pestañas para organizar el código para diferentes funciones asociadas a diferentes operaciones. Hay ADC, Digipot, Display_Fn , Fichas de interrupción, relé y temporizador que organizan todas las funciones definidas por el usuario. También intentaré agregar más comentarios que expliquen todas las funciones, pero no debería resultarle difícil de entender porque esas funciones se basan en múltiples funciones de Arduino que realizan ciertas tareas.

Limitación

Hay algunas limitaciones importantes de este dispositivo:

  • El voltaje no puede bajar de 2.0 V
  • La salida de voltaje no es continua
  • La medición de corriente crea un cambio de tierra para alta corriente
  • La medición de ADC tiene bajas resoluciones
  • La eficiencia es la peor de su clase en cargas de alta corriente de bajo voltaje
  • Carga de Li-Po no estándar y ligeramente insegura

Referencias

Puede obtener más información sobre cada componente en estos tutoriales:

  • Potenciómetro giratorio
  • Tutorial de botones

Conclusión &

Esta fuente de alimentación programable me ayudará a realizar proyectos / prototipos de manera más eficiente. Medición de la potencia de corriente de voltaje sin usar multímetro.


Código

  • Fuente de alimentación portátil programable Arduino
  • Código Ver 1.0.1 Beta
  • Código Ver 1.0.2 Beta
  • Código versión 1.0.3
Fuente de alimentación portátil programable Arduino Arduino
Ver 1.0.1 con información de Pin out en los comentarios
 // Pin Reset, D0 y D1 para cargar Sketch // Pin D9, D10, D11, D12, D13 para controlar la pantalla OLED // Pin ADC A0 para detectar V_boost // Pin ADC A2 para detectar V_batt (LiPo) // Pin ADC A3 para detectar I_Output (carga) // Pin ADC A4 para detectar V_USB (carga) // Pin ADC A5 para detectar V_Output (carga) // Pin de conducción de 2 bobinas del relé de enclavamiento D4 y D5 # definen RC1 4 # definen RC2 5 // Interruptores de entrada de usuario conectados al pin D2 y D3 # definen SW1 2 # definen SW2 3 // Pin D6, D7, D8 para los pines de control digital de potenciómetros # definen CS_PIN 6 # definen CLK_PIN 7 #define DATA_PIN 8volátil uint8_t Switch1 =1; volátil uint8_t Switch2 =1; float V_Out =0.0; float I_Out =0.0; float V_Bat =0.0; float V_Bst =0.0; float V_Chg =0.0; uint32_t tiempo =0; #incluir "U8gliblude". h "// Pines de control de pantalla OLED // SSD1306 oled wavehare (clk, din, cs, d / c, res); // ESTO PARA WAVESHAREU8GLIB_SSD1306_128X64 u8g (10, 9,11, 13,12); configuración vacía (void) {// pantalla giratoria, si es necesario analogReference (INTERNAL); u8g.setRot180 (); button_init (); relay_init (); init_timer1 (); digipot_init (); } bucle vacío (vacío) {update_display (); calc_VI (); si (Switch1 ==0) {rc1_latch (); Switch1 =1; increment_digipot (); } si (Switch2 ==0) {rc2_latch (); Switch2 =1; decrement_digipot (); } retraso (100); } 
Código Ver 1.0.1 Beta C / C ++
 Sin vista previa (solo descarga). 
Código Ver 1.0.2 Beta C / C ++
Corrección de errores para alineaciones de texto / cuadro
Corrección de errores para viaje por sobrecarga

Algunos errores más se corregirán en la próxima versión
 Sin vista previa (solo descarga). 
Código versión 1.0.3 C / C ++
Corrección de errores del relé de salida deshabilitado durante el encendido
Se corrigió un error en el voltaje de salida establecido automáticamente 5.00 v después del encendido
 Sin vista previa (solo descarga). 

Esquemas

Dibujado en pizarra! https://circuits.io/circuits/4762970-arduino-based-programmable-power-supply

Proceso de manufactura

  1. Juego Arduino Pong - Pantalla OLED
  2. Controlar el aceptador de monedas con Arduino
  3. Centro de control de Arduino
  4. Arduino Temp. Monitor y reloj en tiempo real con pantalla 3.2
  5. ¡Arduino con Bluetooth para controlar un LED!
  6. Arduino Power
  7. Jugando con Nextion Display
  8. Voltímetro de bricolaje con Arduino y una pantalla Nokia 5110
  9. Plataforma de entrenamiento Arduino
  10. Cree la aplicación Fridgeye con una pantalla Nextion
  11. Medición de la radiación solar con Arduino