I’ve been trying for some time to get SD shields to work on the Botboarduino. I think that I can now say with some certainty that there is a problem when using SD shields on a Botboarduino with the USB/Ext jumper set for EXT power. If I set that jumper to draw power from the USB cable, the SD shield reliably runs OK. However, setting that jumper to EXT to draw power from an external battery, the SD shield always fails to initialize OK. Only the jumper is moved. Nothing else is changed. The external battery is 9V, fully charged. This occurs for both an ITEAD STUDIO SD Shield and an seeed studio SD Card Shield V4 shield. It thus appears not to be a problem with the shields.
I have studied the Botboarduino Schematic, and can’t see from it why there should be a USB/EXT-jumper problem.
Is it the case that an SD shield cannot be used on a Botboarduino powered by an external battery?
Not sure what is going on with these two shields, don’t have either of them. A couple of things I would do:
Check the voltages on the boards in both cases. In particular check the voltage of the +5v pin on the 6 pin header. From what I see of the Seeedstudio schematic, I believe this is where it is getting it’s input voltage from.
I would use a different battery to try it with as maybe the shield requires a bit more current or the like than you can get from 9v battery.
FYI - I have tried using an Adafruit 1.8" tft shield with joystick as SD on a Botboarduino. I loaded the SD example program cardinfo on it and it worked fine on my Botboarduino, with USB power. Likewise it worked when I switched it to run on EXT using a 7.2v LifePo4 battery.
It’s encouraging that you were able to get an SD shield to work using a LiPo battery.
Are you referring to the 8-pin connector, the last 4 pins of which are marked VIN, GND, GND, 5v? At the 5v point I read 5.00v. At the point where the 9v battery connects to the Borboarduino I read 8.82v. The SD shield fails with those voltages. I tried several times with 2 SD cards.
I wonder if I could supply the power through the USB connector by wiring a USB cable to the battery. All the shield sees are the signals/voltages on the shield pins. They must somehow be different when I use the EXT connection than they are using the USB connection.
If you go to the wiki associated with the seeedstudio product: seeedstudio.com/wiki/SD_Card_shield_V4.0, there is a link to a pdf showing the schematic for this shield:http://www.seeedstudio.com/wiki/images/1/1f/SD_Card_Shiled_v4.0.pdf
And it implies that it is getting voltage from the +5v pin on the 6 pin header (bottom left header) assuming USB on left hand side.
So regardless of your input choice it should be passing +5v on this pin to the shield.
The +5 pin on that connector is directly connected up to the center pin of the 3 pin header that selects input from USB or External. In the case of USB, it connects to the USB through a fuseable link. If connected to EXT, that pin is connected directly up tp the output of the +5v voltage regulator… So should work the same in either case. Unless it can not source enough current for +5v for the shield…
I think I’ve made a breakthrough on this problem. I have found that my SD shields work OK if I plug a USB cable into the USB plug with the USB/EXT jumper set on USB. Therefore, I decided to try supplying external power to the shield through the USB connector. Success! I have been able to get the SD shield to work reliably if I supply the external power through the USB connector with the USB/EXT jumper set for USB. I butchered a USB cable, and fed 5v to the red/black power wires on that USB cable. I used only the red & black power wires on that cable. Plugging that cable into the Botboarduino USB plug makes the SD shield run OK with external power. For testing this I used the 5v output from an Arduino or the 5v output from another Botboarduino. For my robot I plan to use a DC/DC converter to get the 5v from a 3s LiPo.
I have had absolutely no success trying to use external power with the USB/EXT jumper set for EXT. I have concluded that there is some difference between the USB circuit and the EXT circuit that is preventing the SD shield from getting the signals it requires when the EXT connection is used.
I examined the schematic for the BotBoarduino in more detail and noticed that the 3.3V pin for the Arduino power header is powered by a regulator in the FTDI chip. Since the FTDI chip isn’t powered when using EXT power, the 3.3V pin is actually something like 2.8V (no load). This might be causing some of the problems for the SD shields.
I’ve found two work arounds for powering the FTDI chip with EXT power.
Connect all three pins of the USB/EXT header together. This should only be done if the USB cable is NOT connected.
Modify the BotBoarduino to connect the FTDI chip to the 5V logic power. This requires cutting a trace (red line) to disconnect the FTDI chip from the USB power, and then making a new connection (blue line) to connect the FTDI chip to the main 5V logic. This means that the FTDI chip will be always powered when the board is powered. It also means that if the power is interrupted, the virtual serial port on the computer will disappear, killing the connection in software (as opposed to the current behaviour that keeps it open).
I also played more with the RB-Ite-34 and noticed it does weird things with power. Even if the USB/EXT jumper is set to EXT, the board will still work when only USB is connected.
When the shield’s 5V/3.3V switch is in the 5V position, it seems to short the 5V and 3.3V pins of the Arduino power headers. I’m guessing their design makes the assumption that you should only use the 5V position if the Arduino board doesn’t include the 3.3V pin, such as early versions of the Arduino boards (ex: Arduino NG).
When the switch is in the 3.3V position, it seems the 3.3V supplied from the FTDI chip is going through the shields 3.3V regular (through the output and out from the input) to give 2.9V on the 5V pin of the Arduino power header. I guess this is enough to get the ATmega128 chip or LEDs to turn on…
I’ve contacted the manufacturer of the RB-Ite-34 to see if they can shed more light on the situation.
I’m not sure however why the Seeedstudio SD Card Shield V4 (RB-See-249) doesn’t work. As Kurt pointed out, it should be running off of the 5V pin and shouldn’t be affected by the 3.3V problem with the BotBoarduino…
I’ve been successful at getting SD shields to run with external power by supplying that power through the USB connector on the Botboarduino. I’ve attached a picture of my setup. I put an Arduino prototyping shield on top of the SD shield, and I put an L7805CV linear voltage regulator chip on that prototyping board. Power from a battery goes through an on-off switch to the inputs of that chip. I butchered a USB cable, and attached the red-black power leads from that cable to the output of the L7805CV chip. I plugged the USB cable into the USB connector on the Botboarduino. The USB/EXT jumper is set for USB power input. The SD shield then works OK with external power.
I’ve tried this with three types of SD shields, Adafruit, Seeed Studio and Itread Studio. The Adafruit and Seeed Studion shields work reliably this way, and the Itread Shield works, but not reliably.
This setup requires no modification of the Botboarduino and makes it easy to change SD shields.
I got a response from iTead Studio explaining the +5V/+3.3V switch. It is a power select switch and should be used in the 3.3V position unless your Arduino board does not have 5V. They are modifying the board so that the next batch is only 3.3V, since most/all recent boards have the 3.3V and using the 5V mode can damage them.