Pages: [1] 2 3   Go Down
Author Topic: Lector tarjeta SD no inicializa [SOLUCIONADO]  (Read 7682 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola, es la primera vez que pruebo a conectar un lector de tarjetas SD y no hay forma de hacerlo funcionar. La cuestión es que parece tan sencillo que no veo qué puedo intentar hacer para ver dónde tengo el gazapo.

El lector es este: http://www.ebay.es/itm/Perfect-SD-Card-Module-Slot-Socket-Reader-For-Arduino-ARM-MCU-Read-And-Write-/330658250543?pt=LH_DefaultDomain_0&hash=item4cfcc47f2f#ht_3344wt_1313

Lo conecto a una Arduino UNO. El módulo lo alimento con 5 V (he probado con la salida de Arduino y también con una fuente externa y mismo resultado).
Conecto Pin 12 a MISO directamente y los pines 10 (SS), 11 (MOSI) y 13 (SCK) mediante divisor resistivo (dos resistencias de 10k, el lector verá 2,5 V).
Abro desde Arduino 1.0 el ejemplo básico de CardInfo y el resultado siempre es el mismo, fallo de inicialización. Estoy usando una microSD de 2GB con el adaptador a SD.

Cualquier idea es bienvenida ya que las pocas pruebas que se me ocurrían ya las he agotado.
« Last Edit: June 06, 2012, 11:40:23 am by Cheyenne » Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Comprueba el pin de cs en el codigo a mi también me fallaba pues en la shield ya esta asignado

Ah y asegúrate de tener la tarjeta en fat16
Logged


Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

El pin CS en principio está bien ya que el lector no lleva shield, lo cableo yo y CS lo llevo al pin 10 de Arduino.
La tarjeta también he probado a formatearla en FAT16 (aunque ya estaba) y nada, lo mismo.
Logged


Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Conecto Pin 12 a MISO directamente y los pines 10 (SS), 11 (MOSI) y 13 (SCK) mediante divisor resistivo (dos resistencias de 10k, el lector verá 2,5 V).

El módulo que utilizas ¿No está alimentado ya a 3.3? ¿Para qué pones el divisor resistivo si pone que soporta entradas a 3.3 y 5 voltios?
Logged

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

El módulo tiene dos entradas de alimentación, una de 5 y otra de 3,3 V. Por lo que veo en el módulo la de 3,3 V es directa y la de 5 V pasa por un regulador para dar los 3,3 V. Yo lo estoy alimentando a 5 V porque así he probado con una fuente externa por si le suponía excesivo consumo a Arduino.

Sobre que admite entradas a 3,3 y 5 V creo que no es así. Creo que se refiere a la entrada de alimentación. Según he estado leyendo las tarjetas SD funcionan a 3,3 V y si le metes 5 te las cargas. Y este módulo que he comprado no tiene ningún adaptador de niveles (por internet he visto otros que sí lo tienen). En el esquemático de este módulo se ve que no tiene ningún adaptador de niveles.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lo del cs te lo comentaba porque yo caí. Tengo la shield de seedstudio v3 allí lo "fijan por hardware" y muchos sketch lo ponen en otro pin y yo pique !!

Lo único que se me ocurre es pasarte por sparkfun a ver si tiene esa placa con un ejemplo o explicación con codigo. O acosar al vendedor con amenazas serias... (es coña)
Logged


Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nada, sigo en las mismas. Sólo he podido ver una cosa que no veo lógica. Si alimento con 5 V el módulo no se calienta pero he visto que si alimento con 3,3 V la placa del módulo se pone bastante caliente. Empiezo a pensar que hay algo mal en el módulo, pero siendo tan sencillo se me hace extraño.
Logged


Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 958
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cheyenne, me da a mi que ese modulo lo han pensado en ponerlo directo al arduino, sin divisores...

Por si acaso, alimentalo a 5v, que emplee el regulador no a 3v3, de eso ya se encarga el regulador.

En ladyada hacen el divisor de tension con una resistencia de 4k7 en serie con el pin correspondiente y en paralelo con ese pin, una de 10k a masa.

Tu placa tiene la de 10k a positivo, eso es lo raro.

En este otro esquema mira los valores que ponen:


En tu caso, igual probaria yo a poner solo una resistencia en serie de 4k7 en las salidas del arduino.
Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Haré esa prueba Heke. Aunque la verdad es que cuanto más miro el esquema y el de otras configuraciones como la que me pones menos entiendo cómo puede funcionar este módulo.
Logged


Málaga, Spain
Offline Offline
Edison Member
*
Karma: 40
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Desde mi punto de vista, deberían haber usado un conversor de niveles para adaptar las tensiones de +5V a +3.3V. El caso es que las especificaciones de las tarjetas SD aceptan entradas a 3.3V. El esquema de la tarjeta es simple, en principio lo único que tiene es un pull-up en todas las entradas a +3.3V, esa parte la veo bien, y aunque la especificación no dice nada, muchos fabricantes lo recomiendan. Ponerle +5V en las entradas MOSI, MISO y CLK no creo que sea buena idea.

Yo, estoy usando un conversor de niveles, vamos un buffer mondo y lirondo, pero estoy teniendo algún problemilla con la corriente que se le suministra a la tarjeta. Veo los niveles bien, pero no consigo leer bien las tarjetas. Esto es para la evoulución de la vinciDuino.

Bajar la tensión a base de resistencias no os sabría decir, pero creo que para tarjetas rápidas puede ser un problema.
Logged

   

Offline Offline
Full Member
***
Karma: 0
Posts: 174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Perdón no quiero raptar el hilo fm te refieres a un buffer hex un 4050 por ejemplo? Como las "nuevas" sd shields?
Logged


Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Para tarjetas SD hay muchos esquemas que usan resistencias para adaptar los niveles.

Como curiosidad yo tengo unos adaptadores de niveles lógicos de Sparkfun y la adaptación de 5 a 3,3 V está hecha con divisor resistivo.

Pensando en todo esto he caído en la cuenta que el divisor resistivo que utilizo con resistencias de 10k (para minimizar consumos) es del mismo rango que la resistencia pull up del módulo. Como resultado cuando Arduino saca un estado LOW la entrada SD tendrá 1,1 V que seguro que no detectará como un LOW. Creo que tengo que probar con un rango de resistencias menores.
Logged


Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 958
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cheyenne y si no, mas facil:

Quitale  las  4 resistencias que van a positivo, las mandas a tomar viento y ponle externamente las que quieras.

Aunque sean smd las puedes incluso romper o con un soldador fino las quitas, te da igual estropearlas.

Y muerto el perro se acabo la rabia.

Ya puedes entonces emplear las combinaciones que quieras externas.

Mira el waveshield 1.o con resistencias, y ademas esta mas que probado:
http://www.ladyada.net/media/wavshield/waveshield10schem.png

Respecto a lo que te decia de:
Quote
me da a mi que ese modulo lo han pensado en ponerlo directo al arduino, sin divisores...

Claro, pero esta pensado para meterle el buffer antes, un 74hc125 o sea que sin buffer y no teniendo mas narices que alimentar a 3v3 la SD divisor de tension al canto y listo.
« Last Edit: June 03, 2012, 01:58:52 am by Heke » Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Cierto Heke, creo que no será difícil desoldar esas resistencias y así me pongo mis divisores sin más problema. Hoy no voy a disponer de tiempo, en cuanto tenga un rato uno de estos días lo probaré.
Logged


Málaga, Spain
Offline Offline
Edison Member
*
Karma: 40
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@miniduino - si, un 4050 o similar el que yo estoy utilizando tiene 3 estados (HI, LOW, HiZ), HiZ - alta impedancia.

@Cheyene - no digo que no funcionen, lo que digo es que hay tarjetas que posiblemente no funcionen. Para el circuito que estás montando, lo que tendrás que hacer es poner una resistencia en serie (haciendo los cálculos pertinentes) con el pull-up que tiene el conversor. Es decir, lo tienes que ver como un divisor de tensión poniendo las tensiones en las entradas de las resistencias en serie y calcular el valor de Rserie para tener los valores que verá la tarjeta como HI y LOW. Vhi suele ser 0.7*Vcc y Vlow menor que 0.3*Vin.
« Last Edit: June 03, 2012, 04:14:46 am by fm » Logged

   

Pages: [1] 2 3   Go Up
Jump to: