lunes, 21 de febrero de 2011

Arduino + tarjeta SD

De lo que se trata hoy es en conseguir leer y escribir en una tarjeta SD con arduino (mega168) con los minimos componentes posibles.

para conseguir los resultados se requieren los siguientes componentes:

1x Arduino 168 Duemilanove o superior
3x resistencias 3300ohm
3x resistencias 1800ohm

el esquema logico del asunto es como el siguiente ( obtenido de los foros de arduino.cc)

como se puede apreciar, la comunicacion con la tarjeta usa el protocolo SPI, usando los puertos hardware de la placa Arduino, pines 13,12,11,10 ( se pueden usar otros pines usando SPI por software, pero no se tratará de eso en este post)

el divisor de voltaje que aparece se implementa en los pines del bus SPI, es debido a que la tarjeta opera a 3.3 voltios y el Atmega, y sus puertos a 5 ( ojo a este detalle )

la idea era hacer una mini-shield que encaje encima de la placa para poder hacer las pruebas de una manera fiable, el esquema hardware seria como lo siguiente:


con el entretenido metodo del ataque quimico se consigue una PCB bastante resultona, algo como:


tambien he modificado un adaptador SD-MicroSD soldandole una tira de pines de tipo 2.54mm para poder pincharlo a un zocalo hembra estandard como se aprecia en la foto:


Una vez comprobado que tenemos el hardware listo, vamos a meternos en en tema, lo primero que tenemos que hacer es descargarnos la maravillosa libreria sdfat version 16bits http://code.google.com/p/fat16lib/ la version original no funciona bien con el arduino 168 por falta de recursos,

una vez descargada extraemos la carpeta "Fat16" al directorio "libraries" del arduino ( ojo al descomprimir ya que no crea el directorio principal sino extrae todo al actual)

cd arduino-0022/libraries
unzip ../../fat16lib20101009.zip Fat16/*

Luego abrimos el IDE de Arduino y entramos en "File - > Examples - > Fat16 -> fat16info" ( por ejemplo ).
seguidamente lo compilamos, subimos a la placa y nos conectamos al puerto serie ( 9600 baudios )


el codigo cargado espera a que se le envie un caracter para empezar, asi no perder detalle de lo que va haciendo sobre la SD:


y sucess!!! yejalll

Notas: en las shields comerciales se usan integrados (como el 74HC4050) que regulan el voltaje de 5 a 3.3 voltios de una manera mucho mas eficaz que con los divisores de voltaje y que ademas aumentan considerablemente la velocidad de lectura/escritura.

sábado, 12 de febrero de 2011

Control de consumo para led Luxeon

La idea es implementar un circuito regulador de corriente constante con el LM317 segun el siguiente esquema:



Tras la realizar la primera prueba de iluminacion del luxeon, con el integrado LM317, en el transcurso se aprecian una serie de cosas:

- es un poco costoso de soldar ya que el propio disipador de aluminio se come el calor del soldador, con un poco de flux, se soluciona el problema
- hay una caida de tension en el LM317 de 3 voltios, eso sumado a los 3,5 del luxeon, hace que se requieran 6,5 voltios de entrada minimo para conseguir los 620ma como se ve en la imagen.

este es el primer prototipo del invento, se requiere una resistencia de 2ohm y 2W para una corriente de 620ma, he puesto 2 en serie de 1ohm 2W que es lo que tenia en el cajon
 
 y aqui un video el asunto funcionando donde se aprecia como se mantiene la corriente estable a 620mah
TODO:
- controlar y medir la temperatura para adaptar un disipador de aluminio acorde, tanto en el led, como en el integrado

Referencias:
- http://www.reuk.co.uk/LM317-Current-Calculator.htm