Olá pessoal!! Estou precisando de uma ajuda em um projeto importante. Tenho necessidade em gravar informações lidos de alguns sensores em 02 SD Card diferentes no mesmo barramento SPI. Já tentei diversas maneiras em controlar o CS porém os Arquivos TXT são sempre gravados no mesmo cartão ou em nenhum deles.Alguém pode me ajudar? Agradeço desde já!!

Exibições: 359

Responder esta

Respostas a este tópico

Oi FMZ, bom dia.

Anexe um arquivo aqui com seu code, para que possamos entender o que pode estar errado.

Rui


#include <SPI.h>
#include <SD.h>

int chipSelect;

void setup() {

chipSelect = 3;

// 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("Initializing SD card...");

// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}

void loop() {
// make a string for assembling the data to log:
String dataString = "";

// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.

SD.begin(chipSelect);

File dataFile = SD.open("teste_sd.txt", FILE_WRITE);

// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
if (chipSelect == 3){chipSelect = 4;}
else{ chipSelect = 3;}
// print to the serial port too:
Serial.println(dataString);
Serial.println(chipSelect);
delay(500);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}
}

Olá Rui!! Este é um exemplo para que eu preciso. Coloquei dois LED´s para os Pinos 3 e 4, para visualizar se estão atuando o controle CS, porém não grava nos dois SD Cards apenas em 01, sendo Pino 3. Espero que tenha me entendido...rsrsrs.. Abçs

Quais módulos SD Card esta usando ? Quais SD Cards ? 

Todo SD Card usa 3,3 V com barramento SPI 3,3V . Alguns módulos tem circuitos de conversão dos níveis de tensão, outros não . 

Acho que deve ser assim - tem que fazer uma rotina para cada SD Card. Não misture as rotinas. 

Grave em um SD card e depois no outro. 

chipSelect1 = 3;

chipSelect2 = 4;

if (!SD.begin(chipSelect1 ))   ou     if (!SD.begin(chipSelect2)) 

SD.begin(chipSelect1);       ou    SD.begin(chipSelect2);

Tire isso : 

if (chipSelect == 3){chipSelect = 4;}
else{ chipSelect = 3;}

Poste o seu Sketch corrigido. 

Olá José Gustavo!! Como vai? Estou utilizando os SD Cards adquiridos neste link: http://produto.mercadolivre.com.br/MLB-697164934-modulo-leitor-cart...

Este modelo de SDCard tem entrada de 5Vcc e 3,3Vcc porém estou alimentando com 5Vcc.

Bom, fiz os testes que vc indicou e deu tudo Certo!!!!! Agora estão funcionando blzinha...!! 

Vou fechar o post dando como solucionado o esquema.

Obrigado!

Beleza ! Se quiser disponibilizar o código, sinta-se à vontade. 

Pode ser util para outros colegas.

Se for esse mesmo o esquema do módulo, seu SDcard pode ser danificado, pois não há um divisor de tensão ou um conversor de nível de tensão nos pinos de comunicação, logo não é recomendável conectar diretamente no Arduino, pois todos os GPIOS são 5V. Salvo a exceção, do Arduino de 3.3V.

Tá certo Flávio!!

Vou inserir um resistor em seria para não ter maiores problemas.

Vlw

Flávio, bom dia. 

Eu recentemente tinha sugerido o mesmo para outros colegas. 

Eu tinha enviado esse diagrama:

Mas revendo o diagrama desse módulo SD Card do Fernando (igual ao que eu possuo) , fiquei em dúvida se realmente precisa do divisor de tensão. O que acha ?

Então José Gustavo, os pinos de comunicação SPI, vão estar diretamente conectados no cartão SD.

Observe o pino MISO, quando estiver em nível baixo não será um problema, certo? Mas quando for nível alto, vai ser aplicado 5V diretamente no pino do cartão, não há nada capaz de baixar a tensão nesse ponto. É um caminho de baixa resistência entre os conectores JP1 (conector dos cabos) e J1 (conector do cartão SD). 

Os resistores (R1 R2 R3 R4) são apenas um pullup para manter um nivel lógico, caso o barramento SPI fique em tristate (não vejo outra utilidade).

Creio que esse módulo seja de um placa chinesa de desenvolvimento , apenas estão vendendo descaradamente esse módulo, sem se preocupar com questões técnicas.

É vero ! Sem os limitadores de tensão, os pinos excederão os limites !

http://www.mikrocontroller.net/attachment/21920/SDHC_SDM04G7B7_08G7...

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço