sábado, 22 de marzo de 2014

Cómo conectar en arduino un lector de tarjetas SD de LC Studio

Hola querido lector,

como aún no he podido ponerme a probar la conexión de dos Attiny 85 usando VirtualWire, aprovecho hoy para rescatar una pequeña guía que tengo hace tiempo en el tintero.
Concretamente, se trata de conectar una tarjeta SD a una placa Arduino usando un lector de bajo coste fabricado por LC Studio.
Este lector se puede conseguir desde poco más de 2$ USA (menos de 2 euros al cambio), por lo que resulta sumamente económico, aunque a costa de tener algunos detalles en cuenta:


  • Las tarjetas SD funcionan a 3.3V, sólo a 3.3V. Usar una tensión mayor puede romper la tarjeta.
  • Casi todas las placas Arduino funcionan a 5V, luego no pueden usarse directamente.
  • El lector de LC Studio tiene un pin para 5V y uno para 3.3V. El pin de 5V está conectado a un regulador de tensión que transforma la tensión de 5V a 3.3V pero sólo para la alimentación de la tarjeta, no para las señales.
  • El pin de 3.3V del lector sólo es de salida, no es de entrada.
Y bien, te estarás preguntando: ¿qué hago con las señales? El lector de tarjetas transforma 5V en 3.3V pero sólo para alimentar la tarjeta SD.
La solución es simple: usar un conversor de niveles.
Si buscas en internet, hay quien usa un divisor de tensión para transformar las señales de 5V en aproximadamente 3.3V, y digo aproximadamente, porque la propia toleracia de las resistencias ya impone un error importante (5%-10%), y porque la tensión de 5V que circula por el circuito es un valor ideal, nunca será 5V exactamente, depende de los componentes conectados.
Esto puede suponer que en un montaje donde sólo esté conectado el lector SD todo vaya bien, pero al conectar más componentes, deje de funcionar o lo haga aleatoriamente.
Por este motivo debe usarse un conversor de niveles: transforma una señal de un voltaje a otro.
En este caso, convierte una señal de 5V a 3.3V con total seguridad.
Concretamente, se trata de adaptar las siguientes señales:

  • SCK, MOSI, CS deben ir conectados del arduino al conversor de niveles, y del conversor al lector de tarjetas. Recuerda que la tensión de salida de estas señales debe ser 3.3V
  • La señal MISO puede ir conectada directamente al Arduino (esta señal va sólo del lector al Arduino).

Espero que te resulte útil e interesante esta entrada.
A mi me llevó varias horas y un dolor de cabeza de los buenos darme cuenta de estos detalles, tras bucear buscando información.
Si prefieres un montaje más simple y robusto, puedes comprar un lector de tarjetas sd con conversor de niveles integrado en la propia placa, como los que se venden en Bricogeek o Adafruit.
¡Hasta la próxima!