Escudo Arduino para cargar baterías de litio. Dispositivo económico basado en Arduino para ciegos (hardware abierto)

El equipo de Electro-Labs presentó en su blog un proyecto para Arduino que no sólo es interesante, sino también útil en la vida cotidiana. En este proyecto se desarrolló un escudo programable para Arduino que funciona como cargador de baterías de litio. El escudo incluye una pantalla LCD y una interfaz de botón que permite al usuario ajustar el voltaje de 2 V a 10 V y la corriente de 50 mA a 1,1 A. El dispositivo también ofrece la posibilidad de controlar el proceso de carga.

El escudo se basa en el chip LT1510 y está controlado por Arduino Uno. La pantalla utilizada es una LCD Nokia 5110 sencilla y asequible. Se conecta a través de una interfaz SPI y se alimenta con un voltaje de 3,3V. Dado que los pines de E/S del arduino funcionan a 5 V, se recomienda conectar el módulo LCD a través de resistencias conectadas en serie a las líneas de señal. Hay dos conectores disponibles para conectar baterías de Li-Ion. Cuatro botones de control están conectados a los pines A2-A5 del Arduino. El voltaje de la batería y la corriente de carga se controlan mediante los pines analógicos A0 y A1. Los detalles de la conversión de analógico a digital se explican en el código fuente del proyecto. Se utilizan dos LED SMD para indicar el funcionamiento del dispositivo.

El diagrama esquemático del proyecto fue desarrollado en SoloCapture a partir del paquete SoloPCBtools. El escudo puede funcionar sin control de microcontrolador. Cuando el Arduino no parpadea, el cargador tiene por defecto un voltaje de corte de 4,2 V y una corriente de carga máxima de 1,1 A. La PCB está diseñada en SoloPSB. El diseño de la placa de circuito impreso y el programa SoloPSB se pueden descargar desde electro-labs.com. Las dimensiones del escudo se seleccionan por su ubicación en el Arduino Uno. Los LED, la interfaz de botón, la pantalla LCD y los conectores de batería están ubicados en la parte superior para mayor comodidad. Todos los demás elementos están ubicados en el reverso del escudo.

La pantalla LCD está programada para mostrar cuatro páginas que permiten al usuario ingresar parámetros de carga y controlar el proceso de carga. En la primera página, el usuario puede configurar el voltaje de corte y la corriente de carga máxima, ir a la página de estado de la batería y comenzar a cargar. Los botones arriba y abajo se usan para moverse entre opciones, y los botones derecho e izquierdo se usan para cambiar parámetros y seleccionar opciones. La segunda página muestra el estado de la batería. En él puedes ver el voltaje actual de la batería. La tercera página muestra el voltaje y la corriente de carga. Usando el botón izquierdo o derecho en esta página, puede detener el proceso de carga y regresar a la página de configuración de parámetros. Cuando el voltaje de la batería alcanza el valor establecido, el cargador se detiene y muestra el mensaje "Carga completa". Para salir, presione la tecla izquierda.

Hace varios años me propuse la tarea de desarrollar un conjunto de dispositivos económicos que permitieran a las personas ciegas adaptarse mejor al mundo que nos rodea. Hasta la fecha, junto con un equipo de personas con ideas afines, he logrado implementar varios proyectos.

En este artículo quiero hablar sobre el accesorio ultrasónico para el bastón y el llavero ultrasónico: dispositivos completos que se ensamblan a partir de módulos asequibles y económicos.

Un bastón ultrasónico y un llavero ultrasónico son dispositivos para personas ciegas que avisan de obstáculos situados por encima del nivel en el que pueden ser detectados con un bastón normal. Estos obstáculos pueden ser coches altos, barreras y vallas altas. El accesorio ultrasónico se fija a un bastón normal y el llavero ultrasónico se cuelga del cuello o se lleva en la mano como una linterna.

El funcionamiento de los dispositivos se basa en la reflexión de ondas ultrasónicas de los obstáculos. Midiendo la diferencia de tiempo entre el momento en que se genera el pulso y el momento en que se recibe la señal del eco reflejado, se puede determinar la distancia al obstáculo.

Para desarrollar dispositivos, es necesario seleccionar un sensor para medir la distancia, un tablero de control y un dispositivo de señalización, seleccionar baterías, un método para cargarlas y carcasas adecuadas.

Sensor ultrasónico

Para medir la distancia a un obstáculo se probaron dos dispositivos:
  • Módulo ultrasónico compatible con Arduino HC-SR04
  • Sensores de aparcamiento para coches HO 3800
Ambos dispositivos funcionan según un principio similar. Las diferencias radican en el patrón direccional de los sensores, el alcance máximo de detección de obstáculos y el diseño.
Comparación de parámetros del sensor:

Durante las pruebas, resultó que los módulos HC-SR04 tienen una capacidad ligeramente peor para detectar obstáculos y operar en condiciones climáticas difíciles (frío).

Ambos sensores, a pesar de sus diferencias, se pueden utilizar en un accesorio de bastón ultrasónico como medio para medir la distancia a un obstáculo, por lo que el parámetro principal para nosotros a la hora de elegir un sensor fue el precio. Nos decidimos por el sensor HC-SR04 más económico.

Tabla de control

Se eligió la plataforma Arduino como tablero de control. En nuestro caso, las placas más aplicables son las versiones en miniatura: Arduino Mini, Arduino Nano o Arduino Pro Mini. En general, se puede utilizar cualquier otro controlador que proporcione capacidades similares.

Baterías

Para proporcionar energía al dispositivo, es recomendable utilizar celdas de batería de iones de litio (Li-ion) o hidruro metálico de níquel (Ni-Mh).

Cuando se opera en condiciones climáticas normales, tiene sentido utilizar baterías de iones de litio, que tienen las siguientes ventajas en comparación con las de Ni-Mh:

  • facilidad de implementación del circuito de carga
  • disponibilidad de módulos de carga listos para usar
  • mayor voltaje de salida
  • Variedad de dimensiones generales y contenedores.
A bajas temperaturas es preferible utilizar baterías de Ni-Mh.

El voltaje en la salida de una batería Ni-Mh (1,0 -1,4 V) no es suficiente para hacer funcionar el dispositivo. Para obtener una tensión de 5 V (necesaria para el funcionamiento tanto de Arduino como del sensor de aparcamiento), además de baterías, utilizaremos un convertidor boost DC-DC.

Para operar los convertidores DC-DC que hemos seleccionado, es necesario proporcionar un voltaje de entrada de 0,9-6,0 V. Para obtener el voltaje de salida requerido, se podría usar un elemento de Ni-Mh con un voltaje de 1,2 voltios. Sin embargo, a medida que disminuye el voltaje de entrada, la capacidad de carga del convertidor también disminuye, por lo que para un funcionamiento estable del dispositivo, es recomendable suministrar al menos 2 V a la entrada del convertidor (dos elementos Ni-Mh de 1,2 V cada uno o un elemento de iones de litio con una tensión de 3,7 V). Tenga en cuenta que existen convertidores DC-DC para los que una tensión de entrada de 1,2 V no es suficiente.

Cargando baterías

Para las baterías de iones de litio, existen muchos módulos económicos ya preparados con indicación de fin de carga.

En el caso de las baterías Ni-Mh todo es más complicado. Por el momento no hemos encontrado ninguna solución integrada ya preparada en el mercado. Para cargar baterías Ni-Mh, puedes utilizar cargadores externos especializados o crear tu propio circuito de carga.

Una forma de cargar una celda de Ni-Mh es conectar dos estabilizadores lineales LM317 (o similares) en serie con la batería: el primero en modo de limitación de corriente, el segundo en modo de limitación de voltaje.

El voltaje de entrada de dicho circuito es de 7,0 a 7,5 V. En ausencia de enfriamiento de los estabilizadores, no se recomienda exceder este voltaje. El voltaje de cada batería de Ni-Mh durante la carga debe ser de aproximadamente 1,45 V (voltaje de una celda de Ni-Mh completamente cargada). Para evitar el sobrecalentamiento y fallos de los microcircuitos, la corriente de carga de la batería no debe exceder los 100 mA y puede aumentarse a 200 mA cuando se utilizan radiadores adecuados.

La ventaja de este esquema de carga es que no es necesario controlar el estado de carga: cuando se alcanza el voltaje requerido en el elemento, la corriente caerá automáticamente a un mínimo seguro.

Alarma

Dependiendo de la elección del canal de advertencia (auditivo o táctil), se selecciona un actuador: un zumbador o un motor de vibración. Además, puedes combinar ambos métodos de notificación, dándole al usuario la posibilidad de alternar entre ellos.

Durante las pruebas de los prototipos, descubrimos que lo más conveniente es transmitir información sobre la proximidad de un obstáculo mediante vibración, porque en este caso el canal de audio, muy importante para una persona ciega, no está ocupado. Es por eso que todos nuestros productos diseñados y ensamblados utilizan vibración para advertir de obstáculos. La intensidad de la vibración es proporcional a la distancia al obstáculo.

Marco

Entre las carcasas producidas en serie no pudimos encontrar una carcasa cómoda para el accesorio del bastón ultrasónico. Para probar el dispositivo, utilizamos una carcasa de plástico ABS impresa en 3D. Para imprimir el caso en una impresora 3D, desarrollamos el siguiente modelo 3D:

Resultado de la prueba de prototipos.

Durante el proceso de desarrollo, se recopilaron más de 12 opciones de productos. Cada nuevo producto eliminó las deficiencias de los anteriores: durante el proceso de desarrollo redujimos las dimensiones y el peso del producto, seleccionamos un sensor ultrasónico que nos satisfizo tanto en precio como en características técnicas, abandonamos el uso de un canal de audio y optimizamos el funcionamiento. algoritmo de los dispositivos. Junto con los ciegos (Bortnikov P.V., Shalintsev V.A.), se llevaron a cabo pruebas de todos los productos ensamblados. Como resultado obtuvimos la muestra final.

A continuación se muestra un diagrama eléctrico esquemático del dispositivo desarrollado:

Cuando se desmonta, el llavero ultrasónico para el cuello se ve así:

Todos los componentes utilizados en el montaje, excepto la carcasa impresa en 3D para el accesorio del bastón, se compraron a través de AliExpress:

  1. Sensor ultrasónico HC-SR04.
  2. Tablero de control Adruino Pro Mini.
  3. Batería recargable 3,7 V 300 mAh.
  4. Convertidor de tensión 0,9V~5V a 5V 600 mA.
  5. Módulo de carga AC/DC 220V a 5 V 1 A.
  6. Cargador LA-520W.
  7. Alarma: motor de vibración para teléfono móvil 4x10mm DC 3V.
  8. Botón PB-22E60.
  9. Vivienda Gainta G1906 (para llavero).
  10. Transistor: bss138/bcr108 u optoacoplador CPC1230N.
La apariencia y los precios (incluida la entrega desde China) de los componentes utilizados para ensamblar el cabezal ultrasónico en el bastón se muestran en la figura:

De los componentes utilizados durante el montaje, la mayor contribución al coste del dispositivo proviene de la carcasa impresa en 3D.

La apariencia y los precios (incluida la entrega desde China) de los componentes utilizados para ensamblar el llavero ultrasónico se muestran en la figura:

En el futuro, será posible desarrollar un soporte para el cuerpo Gainta G1906 y utilizar un dispositivo con dicho cuerpo como accesorio para un bastón.

Una de las formas de reducir el costo de los dispositivos es ahorrar en costos laborales y en el costo de entrega de componentes de dispositivos a Rusia implementando la producción directamente en China.

Los dispositivos que hemos desarrollado tienen las siguientes características:

Después de realizar pruebas preliminares de los dispositivos, nos vimos obligados a limitar el alcance de detección de obstáculos a 1,5 metros para evitar disparos innecesarios al utilizar los dispositivos en un ambiente concurrido. Con un cambio continuo en el nivel de vibración, es más difícil determinar el acercamiento de un obstáculo, por lo que, según los resultados de las pruebas preliminares, nos decidimos por tres niveles de vibración.
Aspecto del accesorio ultrasónico en el bastón:

Aspecto del llavero del cuello:

Un modelo 3D del accesorio del bastón ultrasónico y el código fuente del firmware para Adruino están disponibles para descargar en



La inducción magnética es una tecnología que probablemente recuerdes de la clase de física de la escuela secundaria. Para transmitir energía de forma inalámbrica, necesita dos bobinas: una bobina transmisora ​​y una bobina receptora. La corriente alterna en la bobina transmisora ​​genera un campo magnético que induce una tensión en la bobina receptora. Este voltaje se puede utilizar para alimentar un dispositivo móvil o para cargar una batería.


Elementos no menos importantes serán los inductores, que puedes hacer con tus propias manos. Estas bobinas simples están enrolladas con alambres de cobre y se denominan bobinas con núcleo de aire. Crear un devanado de este tipo para nuestro propósito es muy sencillo. Busque un cilindro redondo con un diámetro de unos 5 centímetros y enrolle el cable alrededor de él para que cada vuelta no se superponga a otra vuelta, pero al mismo tiempo esté lo más cerca posible de la otra vuelta. Un cilindro redondo puede ser, por ejemplo, un tubo de PVC. Es posible que necesites usar cinta adhesiva o cinta adhesiva en 2 o 3 lugares para mantener estable la estructura.


Además del Arduino y los inductores, necesitaremos: un transistor NPN tipo 2N3055, un puente de diodos de 1A (conjunto de diodos, tienen cuatro terminales), un LED, una resistencia de 100 ohmios, dos condensadores de 47 nF, una batería de 9 V para alimenta el Arduino, y también preferiblemente dos placas para la creación de prototipos. El diagrama para conectar los componentes para crear un dispositivo de transmisión de datos inalámbrico se muestra en la siguiente figura.



El circuito se puede probar utilizando el sencillo código Arduino que aparece a continuación.


configuración vacía() ( pinMode(13,SALIDA); ) bucle vacío() ( digitalWrite(13,ALTO); retraso(0.5); digitalWrite(13,BAJO); retraso(0.5); )

Sin embargo, se puede fabricar un dispositivo de transferencia de energía inalámbrico simple sin un Arduino. Básicamente, sólo podemos utilizar un transistor 2N2222. Conecte su terminal base al primer extremo de la bobina y su colector al otro extremo de la bobina. El pin emisor está conectado a la batería. Como resultado, un diseño tan simple podría verse así:


Se puede usar un Arduino y su circuito de carga adicional para monitorear y controlar la carga de baterías NiMH, así:

Dispositivo completado

Las baterías recargables son una excelente manera de alimentar sus dispositivos electrónicos portátiles. Pueden ahorrarle mucho dinero si se cargan correctamente. Para que pueda aprovechar al máximo sus baterías, es necesario cargarlas correctamente. Esto significa que necesitas un buen cargador. Puedes gastar mucho dinero comprando un cargador ya preparado o divertirte fabricándolo tú mismo. En este artículo veremos cómo se puede crear un cargador controlado por Arduino.

En primer lugar, es importante tener en cuenta que no existe un método de carga universal que funcione para todas las baterías. Los diferentes tipos de baterías utilizan diferentes procesos químicos para funcionar. Como resultado, los distintos tipos de baterías deben cargarse de forma diferente. No podemos cubrir todos los tipos de baterías y métodos de carga en este artículo. Entonces, en aras de la simplicidad, nos centraremos en el tipo más común de batería AA, la batería de níquel metal hidruro (NiMH).

Accesorios

Lista de componentes de izquierda a derecha:

  • potente resistencia de 10 ohmios (mínimo 5 vatios);
  • resistencia 1 MOhm;
  • condensador 1 µF;
  • Transistor MOSFET IRF510;
  • sensor de temperatura TMP36;
  • fuente de alimentación de 5 voltios;

Cómo cargar pilas AA NiMH

Aumentar la velocidad de carga aumenta el riesgo de dañar la batería.

Hay muchas formas de cargar baterías de NiMH. El método que utilice depende principalmente de la rapidez con la que desee cargar la batería. La tasa de carga se mide en relación con la capacidad de la batería. Si tu batería tiene una capacidad de 2500 mAh y la cargas a 2500 mA, entonces la estás cargando a una velocidad de 1C. Si carga la misma batería a 250 mA, entonces la está cargando a una velocidad de C/10.

Al cargar rápidamente una batería (a velocidades superiores a C/10), es necesario controlar cuidadosamente el voltaje y la temperatura de la batería para asegurarse de no sobrecargarla. Esto puede dañar seriamente la batería. Sin embargo, cuando carga la batería lentamente (a una velocidad inferior a C/10), es mucho menos probable que la dañe si la sobrecarga accidentalmente. Por lo tanto, los métodos de carga lenta generalmente se consideran más seguros y le ayudarán a aumentar la duración de la batería. Por tanto, en nuestro cargador casero utilizaremos una tarifa de carga de C/10.

circuito de carga

Este cargador se basa en un circuito para controlar la fuente de alimentación mediante Arduino. El circuito se alimenta de una fuente de 5 voltios, como un adaptador de CA o una fuente de alimentación de computadora. La mayoría de los puertos USB no son adecuados para este proyecto debido a las limitaciones actuales. La fuente de 5V carga la batería a través de una potente resistencia de 10 ohmios y un potente transistor MOSFET. El transistor MOSFET establece la cantidad de corriente que fluye a través de la batería. La resistencia se agrega como una forma sencilla de controlar la corriente. El monitoreo de la cantidad de corriente se realiza conectando cada pin de resistencia a los pines de entrada analógica del Arduino y midiendo el voltaje en cada lado. El transistor MOSFET está controlado por el pin de salida Arduino PWM. Los pulsos de la señal de modulación de ancho de pulso se suavizan a un voltaje constante mediante un filtro que utiliza una resistencia de 1 MΩ y un capacitor de 1 μF. Este circuito permite al Arduino monitorear y controlar la corriente que fluye a través de la batería.


sensor de temperatura

El sensor de temperatura se utiliza para evitar la sobrecarga de la batería y garantizar la seguridad.

Como precaución adicional, se agregó un sensor de temperatura TMP36 al cargador para monitorear la temperatura de la batería. Este sensor produce un voltaje que varía linealmente con la temperatura. Por tanto, a diferencia de los termistores, no requiere calibración ni equilibrio. El sensor se instala en un orificio perforado en el cuerpo del soporte de la batería y se pega en el orificio para que presione contra la batería cuando se instala en el soporte. Los pines del sensor están conectados al bus de 5V, a la caja y al pin de entrada analógica del Arduino.

Portapilas AA antes y después de la instalación en la placa de pruebas

Código


El código para este proyecto es bastante simple. Las variables al comienzo del código fuente le permiten configurar el cargador ingresando valores para la capacidad de la batería y la resistencia exacta de la resistencia de potencia. También se han agregado variables de umbral seguro. El voltaje máximo permitido de la batería se establece en 1,6 voltios. La temperatura máxima de la batería se establece en 35 grados centígrados. El tiempo máximo de carga está fijado en 13 horas. Si se supera alguno de estos umbrales de seguridad, el cargador se apaga.

En el cuerpo del programa se puede ver que el sistema mide constantemente el voltaje en los terminales de una potente resistencia. Esto se utiliza para calcular el voltaje a través de la batería y la corriente que fluye a través de ella. La corriente se compara con el valor objetivo, que es C/10. Si la corriente calculada difiere del valor objetivo en más de 10 mA, el sistema ajusta automáticamente el valor de salida para corregirlo.

Arduino utiliza una interfaz serie para mostrar todos los datos actuales. Si desea monitorear el funcionamiento de su cargador, puede conectar el Arduino al puerto USB de la computadora, pero esto no es necesario ya que el Arduino se alimenta de la fuente de voltaje de 5 V del cargador.

Capacidad de la batería interna = 2500; // valor de capacidad de la batería en mAh de resistencia de flotación = 10,0; // resistencia medida de la poderosa resistencia int cutoffVoltage = 1600; // voltaje máximo de la batería (en mV) que no debe excederse float cutoffTemperatureC = 35; // temperatura máxima de la batería que no se debe exceder (en grados C) //float cutoffTemperatureF = 95; // temperatura máxima de la batería que no se debe exceder (en grados F) long cutoffTime = 46800000; // el tiempo máximo de carga es de 13 horas, que no debe excederse int outputPin = 9; // el cable de señal de salida está conectado al pin digital 9 int OutputValue = 150; // valor de la señal PWM de salida int analogPinOne = 0; // el primer sensor de voltaje está conectado al pin analógico 0 float valueProbeOne = 0; // variable para almacenar el valor en analogPinOne float voltageProbeOne = 0; // voltaje calculado en analogPinOne int analogPinTwo = 1; // el segundo sensor de voltaje está conectado al pin analógico 1 float valueProbeTwo = 0; // variable para almacenar el valor en analogPinTwo float voltageProbeTwo = 0; // voltaje calculado en analogPinTwo int analogPinThree = 2; // el tercer sensor de voltaje está conectado al pin analógico 2 float valueProbeThree = 0; // variable para almacenar el valor en analogPinThree float tmp36Voltage = 0; // voltaje calculado en analogPinThree float TemperatureC = 0; // temperatura calculada del sensor en grados C // temperatura de flotaciónF = 0; // temperatura calculada del sensor en grados F float voltageDifference = 0; // diferencia entre voltajes en analogPinOne y analogPinTwo float batteryVoltage = 0; // corriente flotante de voltaje de batería calculada = 0; // corriente calculada que fluye a través de la carga en (mA) float targetCurrent = BatteryCapacity / 10; // la corriente de salida objetivo (en mA) se establece en // C/10 o 1/10 de la capacidad de la batería float currentError = 0; // diferencia entre la corriente objetivo y real (en mA) void setup() ( Serial.begin(9600); // configura la interfaz serial pinMode(outputPin, OUTPUT); // configura el pin como salida ) void loop() ( analogWrite (outputPin, outputValue); // escribe el valor de salida en el pin de salida Serial.print("Output: "); // muestra los valores de salida para monitorear en la computadora Serial.println(outputValue); ); valor de entrada en la primera sonda voltajeProbeOne = (valueProbeOne*5000)/1023; // calcula el voltaje en la primera sonda en milivoltios Serial.print("Tensión de la sonda uno (mV): "); la primera sonda Serial.println(voltageProbeOne); valueProbeTwo = analogRead(analogPinTwo); // lee el valor de entrada en la segunda sonda tensionProbeTwo = (valueProbeTwo*5000)/1023 // calcula el voltaje en la segunda sonda en milivoltios Serial. print("Sonda de voltaje dos (mV): "); // muestra el voltaje en la segunda sonda Serial.println(voltageProbeTwo); voltaje de la batería = 5000 - voltajeProbeTwo; //calcular el voltaje de la batería Serial.print("Voltaje de la batería (mV): "); // muestra el voltaje de la batería Serial.println(batteryVoltage); corriente = (voltageProbeTwo - voltajeProbeOne) / resistencia; // calcula la corriente de carga Serial.print("Corriente objetivo (mA): "); // muestra el objetivo actual Serial.println(targetCurrent); Serial.print("Corriente de la batería (mA): "); // muestra la corriente actual Serial.println(current); currentError = targetCurrent - actual; // diferencia entre las corrientes objetivo y medida Serial.print("Error de corriente (mA): "); // muestra el error de configuración actual Serial.println(currentError); valueProbeThree = analogRead(analogPinThree); // lee el valor de entrada de la tercera sonda, tmp36Voltage = valueProbeThree * 5. 0; // convirtiéndolo a voltaje tmp36Voltage /= 1024.0; temperaturaC = (tmp36Voltaje - 0,5) * 100; // conversión basada en una dependencia de 10 mV por grado con un desplazamiento de 500 mV // ((voltaje - 500 mV) multiplicado por 100) Serial.print("Temperatura (grados C) "); // muestra la temperatura en grados Celsius Serial.println(temperatureC); /* temperaturaF = (temperaturaC * 9,0 / 5,0) + 32,0; //convierte a grados Fahrenheit Serial.print("Temperatura (grados F) "); Serial.println(temperaturaF); */ Serial.println(); // líneas vacías adicionales para facilitar la lectura de los datos al depurar Serial.println(); if(abs(currentError) > 10) // si el error de configuración actual es lo suficientemente grande, entonces ajuste el voltaje de salida (outputValue = OutputValue + currentError / 10; if(outputValue)< 1) // выходное значение никогда не может быть ниже 0 { outputValue = 0; } if(outputValue >254) // el valor de salida nunca puede ser superior a 255 (outputValue = 255; ) analogWrite(outputPin, outputValue); // escribe un nuevo valor de salida) if(temperatureC > cutoffTemperatureC) // detiene la carga si la temperatura de la batería excede el umbral seguro (outputValue = 0; Serial.print("Max Temperature Exceeded"); ) /* if(temperatureF > cutoffTemperatureF) // deje de cargar si la temperatura de la batería excede el umbral seguro (outputValue = 0; ) */ if(batteryVoltage > cutoffVoltage) // detenga la carga si el voltaje de la batería excede el umbral seguro (outputValue = 0; Serial.print("Voltaje máximo excedido" ); ) if(millis() > cutoffTime) // detiene la carga si el tiempo de carga ha excedido el umbral (outputValue = 0; Serial.print("Max Charge Time Exceeded"); ) delay(10000); // demora 10 segundos antes de la siguiente iteración del ciclo)

Puede encontrar una versión descargable del código fuente en el siguiente enlace.




Arriba