Hola a todos.
Hoy me ha surgido una duda en el último proyecto que estoy realizando. Os pongo en situación.
El circuito es una protección para un generador de corriente continua, este entrega una tensión máxima de 110 voltios y lo regulo mediante un reostato. Es un sistema bastante arcaico, pero lo estoy modernizando. La cosa está en que trabaja dentro de un determinado rango de tensión, existiendo un mínimo y un máximo, fuera del cual la máquina se ha de parar.
El sistema se compone de: divisor de tensión en la salida del generador, para convertir los 110VDC en 5VDC; potenciometro para definir la tensión mínima, potenciometro para máxima y potenciometro de tiempo. Las salidas son a relé, tanto para la máxima como para la mínima. Fuente de alimentación de 5VDC incorporada, alimentando el conjunto a 12V (los relés son de 12V). Y atmega328p como corazón del sistema.
He fabricado la placa PCB, montado los componentes y estoy comprobando el funcionamiento y de momento se está comportando bien.
El potenciometro de tiempo determina cuanto tiempo ha de esperar antes de activar o no los relés de salida.
He usado la simple aritmetica:
time=analogRead(A5); // me devolverá un valor entre 0 y 1023 según la posición del potenciometro.
time = 10*time; // si espero 1023 milisegundos (1 segundo), es poco tiempo, así que multiplico
// por 10 y obtendré 10 segundos.
Para el retardo tengo una funcion de retardo al encendido que funciona perfectamente, si la condición de inicio es cierta (tension leida compara con el mínimo o el máximo) empieza a contar y cuando pase el tiempo indicado devuelve 1.
Mi duda está en que al programar el arduino y al hacer la prueba, si muevo un poco el potenciometro (que tengo que calibrar) se dispara el tiempo mas allá de esos 10 segundos. He usado la función de retardo en mas de una ocasión que se basa en millis() mas de una vez, la diferencia con está vez es que no he puesto el bootloader en el micro ya que no uso comunicación ni nada por el estilo con el exterior.
No estoy seguro de si hay que quemar los FUSES, si tengo que quemar el bootloader siempre o que deberia hacer ya que supongo que será en alguno de estos dos sitios donde se inicializa el timer, los preescaler, etc que hacen que las funciones siempre funcionen. ¿Qué me podeís contar al respecto?
Obviamente me direis que mire el datasheet, aunque puestos ya de paso, pediria que me recomendarais algún libro en español para poder entender los micros de atmel y, por si no fuera poco, que sea legal su descarga.