(09-08-2014, 05:10 PM)xavi escribió: (...)
En color blanco, para hacer pruebas. Los conecto al TIP141, y al valor 1 de pwm ( 1 de 255), ya hace bastante luz. Imagino que no es "problema" del Arduino o del código, si no que el led no puede arrancar con menos luz.
Antonio, si no estoy mal informando, el Arduino fue diseñadora para la ens eñanza, y los acuarofilos le damos un uso muy diferente, igual se le exige demasiado, no te parece?.
Saludos
Aun no he podido montar el circuito y probar tu código. Espero hacerlo el lunes.
Se trata de un efecto óptico debido a la persistencia de la retina descubierto por Peter Mark Roget y aplicado a la generación de imágenes animadas. El ojo continua viendo luz después de una décima de segundo antes de desaparecer por completo. Para el cine actualmente se usa 25 imagenes por segundo. La frecuencia PWM usada generalmente en Arduino es 980 Hz en los pines 5,6 3,11 o de 490 para otros pines, que se corresponden con períodos de aproximadamente 2 milisegundos o 1 milisegundo. Es decir, mucho más rápido que nuestra retina.
Es de suponer que para los cloroplastos de las plantas la cantidad de energía luminosa recibida será lo que cuente. Las plantas y los peces no van a tener la misma sensación de cantidad de luz usando PWM. Probablemente la retina de los peces, al igual que nosotros, van a rellenar en gran medida esos huecos de un milisegundo de oscuridad con la sensación de recibir luz.
El tiempo total que tarda en desaparecer por completo esa sensación depende de la intensidad de la luz. Todos sabemos lo que nos pasa si nos da el fogonazo de un flash en los ojos o si un coche nos deslumbra con los faros.
Yo para paliar en parte este efécto óptico del PWM con LEDs en Arduino, aplico una función exponencial a la hora de dimear, y eso hace mejorar un poco el efecto visual.
Hace que parezca que el dimeo más gradual para valores intermedios de dimeo. El problema es que a valores de dimeo muy bajos no hay solución, se sigue notando bastante porque el PWM es muy rápido y solo disponemos de 256 valores diferentes de dimeo. Hagamos lo que hagamos, las diferencias de dimeo a valores muy bajos se van a notar mucho.
La función exponencial es la siguiente.
Código:
// *******************************************************************************
// Un valor entre 0..255 será transformado en otro dentro del mismo rango, pero
// con un valor proporcional al cuadrado del valor pasado como argumento. Esto se
// hace así para minimizar el efecto óptico de la persistencia en la retina que
// hace que tiende a apreciarse la existencia de una luz superior a la cantidad de
// luz recibida cuando se usan Leds com PWM que no tienen la inercia propia de los
// filamentos incandescentes.
// *******************************************************************************
int Conv_Led_PWM_Exp2(int i){
float f;
f= ( (float) i * (float) i) / 253.0;
if (f>255.0)
return 255;
else
return (int) f;
}
A la hora de hacer AnalogWrite() le pasaríamos un valor alterado por esa función.
// analogWrite(_PinX[Led], ValOut);
analogWrite(_PinX[Led], Conv_Led_PWM_Exp2(ValOut) );
Usar la función lineal directa o la función exponencial, es algo podría hacerse depender un parámetro configurable, pero lo lógico es que esto sea algo que se elija una vez y no deseemos estar modificando.
Me interesaba dejarlo tal y como se usa normalmente en Arduino, para ver si surgía nuevamente este tema del cual ya habíamos hablado hace tiempo y que afecta a todos los usuarios del dimeo con Arduino.
Respecto al diseño de Arduino para la enseñanza
En mi opinión, el hecho de estar diseñado para la enseñanza solo significa que es mucho más robusto de lo estrictamente necesario. Hay pocas formas de cargarse un Arduino.
La potencia de Arduino puede ser algo limitada para algunas aplicaciones profesionales pero en este tema siempre es una cuestión de calidad precio y la relación de calidad precio de Arduino es fantástica. Es muy versatil.
Se da la paradoja de que ha salido el Arduino DUE mucho más potente en casi todos los sentidos que el Arduino Mega 2560 y curiosamente, es incluso más barato que el MEGA 2560.
El DUE con arquitectura de 32 bits es otro mundo. Presenta ciertas incompatibilidades con la línea anterior de 8 bit porque trabaja con voltajes de 3.3v en entradas y salidas, pero no hay color. Hay un gran salto cualitativo entre ambas gamas.