lunes, 30 de junio de 2008

LED programable


Inspirado por diversos Throwies LED, LED que parpadea y similares instructables que yo quería hacer mi versión de un LED controlado por un microcontrolador.
La idea es hacer que el LED parpadea secuencia reprogramables. Esta reprogramación se puede hacer con luz y sombra, por ejemplo, usted puede utilizar su linterna.
Este es mi primer instructable, todas las observaciones o correcciones son bienvenidas. Actualización: aquí es un vídeo de una reprogramación. Lo siento por la calidad.


paso 1 Cómo funciona


Un LED se utiliza como salida. Como entrada he utilizado una LDR, una resistencia dependiente de luz. Este LDR cambia su resistencia, ya que recibe más o menos luz. La resistencia se utiliza como entrada analógica para los microprocesadores ADC (convertidor analógico digital).
El controlador tiene dos modos de funcionamiento, uno para grabar una secuencia, el otro para reproducir la secuencia registrada.
Una vez que el controlador de anuncios dos cambios de brillo dentro de la mitad de un segundo, (oscuro, brillante, oscura o al revés), cambia a modo de grabación. En recodring modo la entrada de la LDR se mide varias veces por segundo y se almacena en el chip. Si la memoria está agotado, el controlador cambia de nuevo a modo de reproducción y empieza a tocar la secuencia registrada.
Como la memoria de este pequeño controlador es muy limitado, 64 bytes (sí, bytes!), El controlador es capaz de grabar 400 bits. Ese es el espacio suficiente para 10 segundos, con 40 muestras por segundo.
paso 2 Materiales y Herramientas
Materiales
-- 2 x resistencia de 1K -- 1 x LDR (Light Dependent Resistor), por ejemplo, M9960
-- 1 x Low-LED actual, 1.7v, 2ma
-- 1 x Atmel ATtiny13v, 1KB flash RAM, 64 Bytes de memoria RAM, 64 Bytes EEPROM, 0-4MHz@1.8-5.5V
-- 1 x CR2032, 3V, 220mAh
Herramientas
-- Soldadura de hierro
-- Alambre de soldadura
-- Placa
-- AVR programador
-- Fuente de alimentación 5V
-- Multímetro Software
-- Eclipse
-- Plugin CDT -- WinAVR
Costas general debe ser inferior a 5 dólares, sin las herramientas. He utilizado la ATtiny13v porque esta versión del controlador de esta familia es capaz de ejecutar a 1.8v. Que hace posible ejecutar el circuito con una pequeña batería. Para tener que correr durante mucho tiempo, he decidido utilizar un LED de bajo actual que llega a pleno brillo ya a 2ma.

paso 3 Esquemas

Algunos comentarios sobre el esquema. El restablecimiento de entrada no está conectado. No se trata de las mejores prácticas. Mejor sería utilizar una resistencia de 10K como tire hacia arriba. Pero funciona bien para mí y sin que ahorra un resistor.
Para evitar que el circuito sea lo más sencillo posible, he utilizado el oscilador interno. Esto significa que guardar un cristal y dos pequeños condensadores. El oscilador interno permite ejecutar el controlador a 1.2MHz que es más que suficiente velocidad para nuestro propósito.

Si decide utilizar otra fuente de alimentación de 5V o utilizar otro LEDs usted tiene que calcular la resistencia R1. La fórmula es: R = (V Fuente de alimentación - LED V) / 0.002A = 1650 Ohm (Fuente de alimentación = 5V, LED V = 1.7v). El uso de dos bajos actuales LEDs en lugar de uno, la fórmula es así: R = (V Fuente de alimentación - 2 * LED V) / 0.002A = 800 Ohm. Tenga en cuenta que usted tiene que ajustar el cálculo si elige otro tipo de LED.
El valor de la resistencia R2 depende de los utilizados LDR. 1KOhm trabaja para mí. Si lo desea, puede usar un potenciómetro para encontrar el mejor valor. El cicuit debería ser capaz de detectar ligeros cambios en la luz del día normal. Para ahorrar energía, PB3 sólo es ajustado a alto, si la medición se realiza.
Actualización: el esquema es engañosa. A continuación se muestra una versión correcta





paso 4 Reunir a bordo de un prototipo

Si te gusta poner a prueba su circuito, una placa es muy práctico. Usted puede reunir todas las partes sin necesidad de soldar nada.



paso 5 Programa del circuito
El controlador puede programarse en diferentes idiomas. La mayoría son utilizados Assembler, Basic y C. he utilizado C, ya que coincide con mis necesidades el mejor. I fue utilizado para C hace diez años y fue capaz de revivir algunos de los conocimientos (bueno, sólo algunos ...).
Para escribir su programa, recomiendo Eclipse con el plugin CDT. Consigue aquí eclipse http://www.eclipse.org/ y el plugin aquí http://www.eclipse.org/cdt/.
Para la compilación de lenguaje C para microcontroladores AVR se necesita un compilador cruzado. Lucky ya que estamos, existe un puerto famoso de la CCG. Se llama WinAVR y puede encontrarse aquí http://winavr.sourceforge.net/.
Un muy buen tutorial sobre cómo programar los controladores AVR con WinAVR http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial está aquí. Lo sentimos, pero en su alemán pero puede encontrar miles de páginas de tutorial sobre ese tema en tu idioma, si usted busca para ellos.
Después de haber compilado su fuente, usted tiene que transferir el archivo hexadecimal al controlador. Eso puede hacerse mediante la conexión de tu PC para utilizar el circuito proveedor de acceso a Internet (sistema de programador) o utilizando los programadores. Yo utilicé un programador dedicado, ya que el circuito un poco más fácil de ahorrar algunos cables y un enchufe. El inconveniente es que tienes que cambiar el controlador entre el circuito y el programador cada vez que quiera actualizar su software. Mi programador http://www.myavr.de/ proviene de la utilización y USB para conectar a mi bloc de notas. Hay muchos otros en todo y puede incluso construir tu mismo.
Para la transferencia en sí he utilizado un programa denominado avrdude que forma parte de la distribución WinAVR. Un ejemplo de línea de comandos puede verse como esto:
avrdude -F -p t13 -c avr910 -P com4 -U flash:w:flickled.hex:i
Se adjunta usted puede obtener el código fuente y el compilado de archivo hexadecimal.


main .c y flickled .hex aqui


http://uploads.bizhat.com/file/100235

paso 6 Soldador
si su circuito funciona en la placa se puede soldar.
Esto puede hacerse en un PCB (impreso cicuit bordo), a bordo de un prototipo, o incluso sin una junta. Decidí hacerlo sin que el circuito constará sólo de unos pocos componentes.
Si no está familiarizado con la soldadura, recomiendo que usted busca para un tutorial de soldadura en primer lugar.
Mi habilidad con el soldador son un poco oxidado pero creo que usted consigue la idea.

No hay comentarios: