Lector tarjeta SD no inicializa [SOLUCIONADO]

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.

Cheyenne

No conectes 3v3 por tu cuenta, te lo decia antes y es que segun datasheet del fabricante del regulador LM1117-3.3 dice entre otras cosas:

When a output capacitor is connected to a regulator and the input is shorted to ground, the output capacitor will discharge into the output of the regulator.

Esto significa que si le metes 3.3v por tu cuenta a la salida del regulador, este absorbera dicha corriente por eso tienes consumo extra y lo que se calentara de la placa sera el regulador.

Mejor que emplees la alimentacion de 5v que para eso lleva el regulador integrado.

Como proteccion se emplean unos diodos para que no pase la corriente hacia atras y proteger el integrado, evitando que sea el circuito de salida del regulador el que se coma la carga:

No tengo ni idea del efecto que hara las resistencias de pullup que lleva esa placa con las que tu conectas, sigo aconsejandote que no te compliques, eliminalas y emplea las tuyas exteriormente, te quitaras historias.

Yo tenia la primera waveshield con resistencias como divisor de tension y funcionaba, ese divisor como el otro que te he puesto debe de funcionarte a ti igualmente.

EN algunos sitios coinciden que dependiendo de marcas, las SD pueden consumir unas mas que otras.

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

He reflexionado con esto que pones y pienso, es posible que la primera hilera sea para conectar o desconectar mediante un jumper los 3v3 dejando al aire el regulador ¿porque no metes polimetro y sacas el esquema de conexiones? es que no he encontrado foto donde se distinga el camino de las pistas y no tiene sentido dos hileras de pines.

Vale, he encontrado una imagen de tu placa, compañero, segun imagen la primera hilera no tiene conexion a ningun sitio a menos que este unida por la cara top del pcb y no se ditingue por el conector de doble hilera.

Te toca meter polimetro y confirmar conexiones...

fm: sí, los 5 V van a la entrada del regulador que lleva el módulo.

Heke: valiosa información la del regulador, no pensé que pudiera ser nada así ya que en las características indican: "Support 5V/3.3V input.". Al parecer no es así.

He comprobado el módulo sin nada conectado ni tarjeta y en principio está bien. Alimento con 5 V y tengo 3,3 V, el regulador está bien y no hay ninguna pista que alimente directamente que se encuentre en corto. Consumo sobre 1 mA. Así que veo que sólo puedo hacer la sugerencia de Heke, quitar las pull up.

Si, creo que la prueba de quitar los pull-ups va a ser la más apropiada. Ya nos contarás.

No Heke, el comentario que hice de las dos filas era por el despiste del calentamiento que ha resultado ser si alimentaba con los 3,3 V. Las dos filas tampoco sé por qué estarán pero lo tengo comprobado que sí están comunicadas las patillas dos a dos.

Y para más cosas raras decir que el módulo que has puesto coincide exacto con el mío en la disposición de componentes pero no coincide para nada el dibujo de las pistas de ninguna de las dos caras. Pongo una foto.

Cheyenne yo enviaria un mail al señor que vende esos engendros por ebay. Por lo que veo muchos te piden que si algo no funciona les preguntes lo que sea o sino le pones voto negativo. En teoria esa shield deberia funcionar como caja negra no ? pones +5 donde pone +5, gnd en gnd, etc...