For my project i need a bunch of arduinos to log a few readings per second to an SD card. Absolute reliability is not that important since i have redundancy.
So i got these super cheap SD card modules from china:
Yeah, yeah, ive heard all about how these things dont properly convert the logic signals and can damage the cards... but ive also heard plenty of people getting them to work. I also got some super cheap 256 mb sd cards from china which i dont care that much about destroying.
I uploaded this logging sketch: http://profmason.com/?p=1956
and the card either corrupts or the file is created and nothing is actually saved to the file. HOWEVER, when i wire the arduino 3v3 directly to the sd module 3v3 (bypassing the onboard reg) it magically works. Upon measuring the voltages coming out of the SD module's onboard reg (powered by the 5v arduino reg), i read 3.1v. Is that low enough to cause the SD card to not work properly? And does the arduino have sufficient power to run an SD card off its 3v3 reg if nothing else external is using that rail?
Yep, 3.1V is kinda low.
The Arduino regulator is rated, I think, for 150mA, which may be on the low side for some SD cards.
Yep LP2985-33DBVR, only rated for 150mA. Definitely iffy for SD card use.
Adafruit uses a RT9193-33 on their datalogger shield, good for 300mA.
I used a 400mA regulator on my card, item #15
The operating voltage range for standard SD cards is 2.7-3.6 Volts.
The peak voltage on all lines is -0.3. to Vdd+0.3. V.
The problem with this module is that it allows 5V on the SCK, MOSI, and chip select lines.
Some cards work with higher Vdd when you put 5V on the signal line but draw lots of current. Others cards don't work and you may damage some cards.
Absolute reliability is not that important since i have redundancy.
I am glad you don't want reliability since you won't have it and you will need lots of current on the signal lines. Normally the signal line draw very little current.
Last night i logged around 5 million numbers in groups of 200 and didnt lose any data points. That means running the cheap module off the 3.3v arduino rail is good enough for me.
You may get occasional bad data. You may want to enable software CRC in SdFat so you detect bad writes.
The high Vdd on the SD card allows some cards to marginally decode the SPI signal. High Vdd shouldn't be required but since the SPI signal is not in the valid range for the SD card, it happens to work with some cards.
You will put a strain on the processor since it drives the SPI pins with 5V which causes the SD to draw the pin current limit. This is also why it works, the pins never reach 5 V since you draw so much current.
Here is what Atmel says about this use of I/O pins:
Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or other conditions beyond those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability.
Well good luck.
I get tons of mail about this module and bought several so I could see what happens when you use them.
Here is another curious thing that happens with some cards when you use the 3.3 V from the Arduino. After attempting to initialize the card, the 3.3V Arduino voltage goes to 4.1V on an Uno. I guess the 5V on the SD pins causes current to flow through the card and pull up the 3.3V.
So there are lots of problems with this module.
Have you tried these modules, it looks like they use transistors to translate the signals.
I have not tried that breakout but it looks promising. I have not seen a schematic.
A similar design just appeared on ebay.