Lector tarjeta SD no inicializa [SOLUCIONADO]

Cheyenne:
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?

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.

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)

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.

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.

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.

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.

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

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.

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:


Respecto a lo que te decia de:

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.

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é.

@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.7Vcc y Vlow menor que 0.3Vin.

@fm - si te entiendo bien no habría problema para calcular el divisor y en LOW la tensión sea inferior a 0,3*Vin. Pero para el estado HIGH el divisor será entre los 3,3 V a los que está la resistencia pull up y los 5 V a los que estará la resistencia en serie por la salida de Arduino; esto hará que la tensión que tendrá la tarjeta sea siempre superior a los 3,3 V independientemente del valor de la resistencia que ponga. Y la tarjeta SD no admite tensiones superiores a 3,3 V, o al menos yo no sé si admite tensiones algo superiores ni cuánto.

Correcto.

Si te fijas en el post anterior y el circuito del PDF de lady Ada, es lo que va a suceder, con la salvedad que en ese circuito usa pulldowns y para la lógica negativa utiliza en el CS usa un pullup con un zener de 3.6V para fijar la tensión.

Creo que 10K es un valor muy alto sobre todo si quieres tener una pequeña corriente para obtener la tensión zener. La otra alternativa es usar el divisor que ha publicado Heke y quitar los pullups de 10K.
También puedes usar 3 transistores configurados como seguidor de colector y a 3,3V. No se...
Ya nos contaras.

Creo que probaré con los valores del divisor de Heke pero sin quitar las pull up ya que he calculado que en LOW habrá 0,35 V, creo que será suficiente para ser detectado como LOW.

He hecho la prueba con las resistencias que tenía a mano que son de 1k2 y 1k8 y nada, mismo resultado. Sin embargo empiezo a pensar que hay algo mal en el módulo, algún corto entre pistas o debido a alguna soldadura desbordada. Tengo que verificarlo con más tiempo pero me ha dado la impresión de que si conecto el módulo con la primera fila de pines simplemente no va. Y si lo conecto con la segunda fila además de no ir la placa se calienta mucho, la zona es en donde el regulador de tensión. Tengo que verificar bien esto probando en una fila y en otra alimentando a través de 3,3 V y 5 V y comprobar resultados.

Puedes medir la corriente que te esta consumiendo la placa? Te dará una muy buena idea de si hay cortos...

Mala cosa... Pruebo al módulo sin nada conectado y cuando entro por 3,3 V el consumo es de unos 400 mA y si entro con 5 V el consumo es de más o menos 1 mA.

Lo que es cierto es que las sd consumen mucho, de forma relativa claro. Esos consumos no son desorbitados. Aun así, mira a ver por la red los consumos que pueden tener.

Me desdigo, después de ver algún que otro datasheet the varios fabricantes los picos de consumo que tienen, aunque varian entre fabricante y fabricante, oscilan estre 40 u 80 mA. Con lo que un consumo de 400mA es mucho.

Una cosa, la mochila esa, tiene un regulador, supongo que los 5V le estarán llegando al regulador verdad?

Otro sospechoso habitual pueden ser los condensadores y un PCB defectuoso. Lo que me rechina es por qué a 5V la cosa parece funcionar. Algo no me cuadra nada.