Paso 3: Software
Este dibujo es muy simple, sólo una serie de consecutivas instrucciones de IF para comparar voltaje Lea ADC3 con unos valores predefinidos. Si usted sigue de cerca el código, verás que los valores indicados en la presentación de la teoría de operación en el paso 1 son los mismos valores utilizados en las diferentes instrucciones de IF para decidir que debe encenderse el LED.
Para crear el efecto parpadeo en el LED cuando los voltajes son más altos que 13.1V, un contador se incrementa de uno en cada paso a través de la parte del código. Antes de que el código bucles volver a leer otra vez ADC3, ejecución es retrasadas 100 milisegundos. Si las instrucciones encienden LEDs cada vez que el contador de paso es inferior a 6 y vuelta LEDs cuando contador es entre 6 y 11. Una vez que el contador alcanza 11, el contador se restablece a cero para repetir el ciclo.
ADC3 entrada se utiliza para leer el voltaje analógico desde el divisor de tensión. Por cierto, ADC0 había sido la primera opción como entrada analógica de este proyecto, sin embargo, cuando el voltaje de la batería fue un poco menor que 8.7V que salen todos los tres LEDs. Esto no me parece bien como había utilizado un regulador de voltaje de baja deserción. Después de hacer algunas investigaciones más en la web he encontrado que en cualquier momento utiliza un pin como una entrada que podría funcionar también como hardware Reset, se pueden pasar estas cosas. Una vez ADC3 fue seleccionado como entrada analógica, voltaje de la batería puede bajar cerca de 6V y LED rojo sería en que significa que el software todavía estaría corriendo. Fue entonces que para evitar más problemas, sin usar los pines 1 y 5 fueron tirados a + 5V a través de resistencias de 10 K.
ATtiny 13 código:
Este bosquejo monitorea el voltaje de la batería y se enciende un LED basado en él.
Procesador: ATtiny 13.
Autor: rlarios
Fecha: 13.04.03
//
int rLED = 4; Pin del LED rojo
yLED int = 1; Pin de LED amarillo
gLED int = 2; Pin del LED verde
int val = 0; Esta variable tendrá el valor del voltaje de entrada
int dlyctr = 0; Este es el contador de retardo.
void setup() {}
pinMode (rLED, salida); Define salida del LED rojo
pinMode (yLED, salida); ídem amarillo LED
pinMode (gLED, salida); ídem el LED verde
}
void loop() {}
Val = analogRead(A3); Leer el voltaje a través de la entrada analógica 3
¿if(Val<452) {//Is el voltaje de la batería debajo de 9.6V?
digitalWrite (rLED, HIGH); Sí, esto es malo, enciende LED rojo
digitalWrite (yLED, LOW); Apague el LED amarillo
digitalWrite (gLED, LOW); Apague el LED verde
}
otra cosa
{
¿if(Val<594) {//Is el voltaje de la batería entre 9.6V y 12.4V?
digitalWrite (rLED, LOW); Se trata de un bajo voltaje, apague el LED rojo
digitalWrite (yLED, HIGH); Encender LED compra como una advertencia.
digitalWrite (gLED, LOW); Apague el LED verde
}
otra cosa
{
¿if(Val<629) {//Is el voltaje de la batería entre 12.4V y 13.1V mientras que es inactivo?
digitalWrite (rLED, LOW); Sí, apague el LED rojo
digitalWrite (yLED, LOW); Apague el LED amarillo
digitalWrite (gLED, HIGH); Encienda el LED verde para indicar el voltaje de la batería completamente cargada.
}
otra cosa
{
dlyctr = dlyctr + 1; aumentar el contador de retardo. cada pasada aproximadamente 100ms
¿if(Val<751) {//Is voltaje de la batería arriba 13.1V y abajo 15.5V?
digitalWrite (rLED, LOW); Apaga LED rojo
digitalWrite (yLED, LOW); Apague el LED amarillo
if(dlyctr<6) {}
digitalWrite (gLED, HIGH); Verde de pulso LED encendido durante medio segundo
}
otra cosa
{
digitalWrite (gLED, LOW); Verde de pulso LED apagado durante medio segundo Mostrar la carga de la batería.
if(dlyctr>10) {}
dlyctr = 0; Contador de retardo
}
}
}
otro voltaje de //Battery está por encima de 15.5V. ¡ Peligro! Sobrecarga
{
digitalWrite (yLED, LOW); Apague el LED amarillo
digitalWrite (gLED, LOW); Apague el LED verde
if(dlyctr<6) {}
digitalWrite (rLED, HIGH); Enciende LED rojo durante medio segundo.
}
otra cosa
{
digitalWrite (rLED, LOW); Apague el LED rojo durante medio segundo.
if(dlyctr>10) {}
dlyctr = 0; Contador de retardo
}
}
}
Delay(100); Dejar 100 milisegundos programa para ayudar a pulso LED.
}
}
}
}