Ciao a tutti
Mi succede una cosa davvero strana;
Se alimento il modulo sd tramite breadboard, il modulo sembra non funzionare, tutto funziona perfettamene se alimento il modulo sd direttamente dai pin GND e 5v di arduino,
Ho provato a sostituire i cavi, a cambiare posizione sulla breadboard, ma senza risultato, ho effettuato la prova con 2 arduino uno ed un mega, e il comportamento è sempre il medesimo....
Il modulo SD ha lo sdoppiamento dei pin, anche se alimento lo slot SD direttamente da arduino e poi provo a portare l'alimentazione sulla breadboard (anche senza alcun altro collegamento presente su di essa) il Modulo smette di funzionare....
ho verificato che arrivi la 5v ed il gnd e tutto sembra a posto.... sto impazzendo
qualcuno sa darmi indicazioni a riguardo?
Se non fornisci uno schema di quello che hai fatto, credo che tu possa impazzire per il resto dei tuoi giorni ...
Possiamo tirar fuori tutte le teorie quantiche, ma senza fondamenti
Se alimento il modulo sd tramite breadboard, il modulo sembra non funzionare
Questa è una breadboard, ha delle batterie? generatori? qualcosa che possa alimentare circuiti?
questo è lo schema che ho seguito, come da Reference SPI. Ho provato ache una variabile, alimentando il 3.3v con il 3.3v di arduino.
In questo caso l'sd funziona perfettamente
La mia breadboard è identica a quella postata da te, è alimentata dalla 5v di arduino, se collego qualsiasi altro modulo all'alimentazione in questione, questi funzionano, ma il modulo sd sembra funzionare solo se è direttamente collegato all'arduino
Sono presenti sul modulo in foto dei partitori da 5v a 3.3v, alimentarla a 3.3 è inutile
La "cosa" della bredboard non è chiara ...
inoltre non mostri il software che usi per attivarla, vorrei vedere il pin CS che usi nel programma, il pin 53 è un CS slave, l'hai specificato nello sketch?
che significa "se alimento il modulo sd tramite breadboard"?
In allegato un rozzo schema che rappresenta quello che intendo quando dico che alimento la sd da breadboard.
Di seguito il codice utilizzato
/*
SD card test
This example shows how use the utility libraries on which the'
SD library is based in order to get info about your SD card.
Very useful for testing a card when you're not sure whether its working or not.
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
** CS - depends on your SD card shield or module.
Pin 4 used here for consistency with other Arduino examples
created 28 Mar 2011
by Limor Fried
modified 9 Apr 2012
by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#include <SD.h>
// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;
// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 53;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("\nInitializing SD card...");
// we'll use the initialization code from the utility libraries
// since we're just testing if the card is working!
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("* is a card inserted?");
Serial.println("* is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
return;
} else {
Serial.println("Wiring is correct and a card is present.");
}
// print the type of card
Serial.print("\nCard type: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown");
}
// Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
return;
}
// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();
volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we'll have a lot of clusters
volumesize *= 512; // SD card blocks are always 512 bytes
Serial.print("Volume size (bytes): ");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.println("\nFiles found on the card (name, date and size in bytes): ");
root.openRoot(volume);
// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}
void loop(void) {
}
Sembra strano, passando attraverso la board il +vcc e gnd sono interrotti?
No perchè hai detto che misurando il 5v e gnd sul modulo SD è presente.
Quindi va per un po' e poi smette di funzionare passando da breadboard?
o non va da subito?
leva questo
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Dichiara il pin CS 53 come output nel setup e impostalo a high
pinMode(53, OUTPUT);
digitalWrite (53, 1);
se usi la UNO imposta allo stesso modo il pin CS 4
Verifica che quella breadboard non abbia le linee +/- interrotte a metà o in più punti, non sarebbe la prima volta
Se alimento alla stessa maniera qualsiasi altro modulo, questo funziona.... Anche se collego il modulo SD direttamente sulla scheda ed alimento dalla stessa altri dispositivi, il malfunzionamento si ripresenta : talvolta non funziona da subito, talvolta funziona ad intermittenza...
Ieri sera ho provato ad inserire le righe che mi hai suggerito ed il comportamento non è cambiato, comincio a pensare che il modulo sia difettoso...
Nel pomeriggio proverò ad alimentarlo tramite alimentatore esterno, purtroppo il mio progetto prevede l'uso di diversi moduli.. Di un modulo SD che funziona solo se è collegato esclusivamente non me ne faccio un gran che...