Pages: [1] 2   Go Down
Author Topic: Ecriture sur carte SD  (Read 1555 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir à tous,

Je suis en train de devenir fou. smiley-mad

J'ai branché tout comme il faut(je crois) mon lecteur de carte SD.

J'arrive à faire :
- Lecture du contenu d'un fichier
- Création d'un fichier

Autrement dit, tout. Ou presque, car je n'arrive pas à écrire à l'intérieur d'un fichier et impossible de comprendre pourquoi même avec un code hyper simple!

Code:
#include <SD.h>

void setup() {     
 
Serial.begin(9600);
SD.begin(4);

File theFile;
theFile = SD.open("fichier.txt", FILE_WRITE); // ouverture de fichier.txt en écriture

if (theFile) {
    Serial.print("Ecriture de données sur la premiere ligne");
    theFile.println(", fin de la ligne et passage a la ligne suivante");
 // Fermeture du fichier:
    theFile.close();
    Serial.println("C'est écrit !");
  } else {
    // impossible d'ouvrir/créer le fichier:
    Serial.println("Erreur d'ouverture de fichier.txt");
}
 
}

void loop() {
 
}

Donc ce code, va me créer le fichier sur la carte mais lorsque je retire la carte et que je la mets dans le PC, ben le fichier est vide.

Les codes pour lire à l'intérieur d'un fichier, eux, fonctionnent.

Une idée ? Merci smiley-grin
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

carte protégée en écriture? smiley-lol
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

carte protégée en écriture? smiley-lol

Ouais non j'y ai pensé mais c'est pas ça...  smiley-mr-green

Par contre j'ai trouvé ce texte sur le site arduino :

Quote
When you use file.write(), it doesn't write to the card until you flush() or close(). Whenever you open a file, be sure to close it to save your data.

Mais pourtant je fais bien le close(). J'ai essayé avec flush() aussi et tout et tout.

Franchement je comprends pas (vu que toutes les autres opérations fonctionnent, création fichier et lecture). J'ai vu qu'il existait une autre librairie pour les cartes SD que celle officielle, j'essayerai.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3642
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

et en écrivant :

File theFile = SD.open("fichier.txt", FILE_WRITE);

??
Logged


France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

A tu tenté l'exemple datalogger de la librairie SD ?
La librairie SD n'est rien d'autre qu'une surcouche à "sdfatlib", librairie qui ne bug quasiment jamais (excepté sur les ATMega168 ...) et qui marche avec toute les cartes du commerce de taille supérieur à 128 (ou 256 je sais plus) Mo.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Roh j'ai trouvé, c'était con, vraiment.

C'est à cause de la résistance que j'ai placé sur l'alimentation du module SD.

Je l'ai remplacé par une résistance beaucoup moins puissante et l'écriture fonctionne ! smiley

La résistance précédente devait être trop forte et ne permettait pas l'écriture sur la carte, bien qu'elle permettait la lecture et la création de fichiers !

Comment connaitre la meilleure valeur de résistance que je dois placer pour alimenter mon module SD Card ?

Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De tête, comme ça : il y a du 3.3V dispo sur l'arduino, non? alors pourquoi ne pas l'utiliser? Le coup de la résistance, c'est vraiment très moyen, car en numérique, on aime bien des belles tensions bien stables...
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De tête, comme ça : il y a du 3.3V dispo sur l'arduino, non? alors pourquoi ne pas l'utiliser? Le coup de la résistance, c'est vraiment très moyen, car en numérique, on aime bien des belles tensions bien stables...

Effectivement il y a du 3.3V, mais je ne sais pas si ça serai suffisant (pas pensé à tester) smiley-sad

Et pour faire une belle tension bien stable, il faut utiliser quoi, un condensateur ?
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Un petit coup de pouce ? smiley

Comment connaitre la valeur de la résistance que je dois placer entre mon module carte SD et l'Arduino ?

Que dois-je utiliser pour stabiliser la tension ? Un condensateur ? Si oui de quel type (electrolytic ?) et de quelle valeurs ?

Merci pour votre aide smiley
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Quote
C'est à cause de la résistance que j'ai placé sur l'alimentation du module SD.
Je l'ai remplacé par une résistance beaucoup moins puissante et l'écriture fonctionne ! smiley
Si tu utilises une résistance pour chuter la tenssion d'alimentation de la carte SD à partir du +5V c'est "mission impossible". Le courant absorbé par la carte SD varie énormément (repos, lecture, écriture) et par conséquent il est rigoureusement impossible de rester aux alentours de 3,3V dans toutes les situations
-la résistance qui convenait en lecture était, tu l'as vu,  trop forte pour l'écriture (tension trop faible)
-la résistance qui parait convenir en écriture donne imanquablement une tension d'alim trop forte au repos et en lecture -> rIsque de destruction de la carte
-les courants dans chaque mode fluctuent pas mal, la tension elle aussi avec une résistance chutrice de tension.

Un régulateur de tension 3,3V est  indispensable pour un fonctionnement sûr.
Ton module SD n'en possède pas un ?

« Last Edit: November 27, 2011, 03:10:48 pm by al1fch » Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Quote
C'est à cause de la résistance que j'ai placé sur l'alimentation du module SD.
Je l'ai remplacé par une résistance beaucoup moins puissante et l'écriture fonctionne ! smiley
Si tu utilises une résistance pour chuter la tenssion d'alimentation de la carte SD à partir du +5V c'est "mission impossible". Le courant absorbé par la carte SD varie énormément (repos, lecture, écriture) et par conséquent il est rigoureusement impossible de rester aux alentours de 3,3V dans toutes les situations
-la résistance qui convenait en lecture était, tu l'as vu,  trop forte pour l'écriture (tension trop faible)
-la résistance qui parait convenir en écriture donne imanquablement une tension d'alim trop forte au repos et en lecture -> rIsque de destruction de la carte
-les courants dans chaque mode fluctuent pas mal, la tension elle aussi avec une résistance chutrice de tension, sur ce point un condensateur peut aider (100 nF par exemple)

Un régulateur de tension 3,3V est  indispensable pour un fonctionnement sûr

Merci pour ces explications étapes par étapes. Il me faut donc placer un LM7xxx ou un truc du genre ? Quelles valeurs pour le LM ? Merci smiley

Quote
Ton module SD n'en possède pas un ?

Comment savoir ?? Je vais y jeter un coup d'oeil, en même temps je trouve pas la documentation technique sur internet...
« Last Edit: November 27, 2011, 03:13:32 pm by arduimat » Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cependant il y a une prise 3.3V directement sur le module SD (comme sur l'Arduino). Mais du coup si je l'utilise, j'ai besoin de plus rien entre les deux ?
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dans la série des LM7800 (7812, 7805...) on ne trouve pas de 3,3V en pratique
Par contre dans la série LM1117 il y un régulateur très répandu en 3,3V qui peut fournir jusqu'à 800mA
C'est le LM1117T-3.3

Régulateur 3,3V présent sur l'Arduino : il faut vérifier combien de mA restent disponibles , je ne m'en rapelle plus. Une carte SD en écriture ça peut demander plus de 100mA en écriture avec des breves pointes au delà
« Last Edit: November 27, 2011, 03:28:11 pm by al1fch » Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dans la série des LM7800 (7812, 7805...) on ne trouve pas de 3,3V en pratique
Par contre dans la série LM1117 il y un régulateur très répandu en 3,3V qui peut fournir jusqu'à 800mA
C'est le LM1117T-3.3

Régulateur 3,3V présent sur l'Arduino : il faut vérifier combien de mA restent disponibles , je ne m'en rapelle plus. Une carte SD en écriture ça peut demander plus de 100mA en écriture avec des breves pointes au delà


J'en ai trouvé sur eBay.

LM1117T Low Dropout Voltage Regulator 3.3V

Quote
DESCRIPTION
 
•3.3V Output
•Current Limiting and Thermal Protection
•Output Current 800mA
•Line Regulation 0.2% (Max)
•Load Regulation 0.4% (Max)
•Temperature Range 0°C to 125°C

DESCRIPTION

The LM1117 is a series of low dropout voltage regulators with a dropout of 1.2V at 800mA of load current. It has the same pin-out as National Semiconductor’s industry standard LM317.

The LM1117 offers current limiting and thermal shutdown. Its circuit includes a zener trimmed bandgap reference to assure output voltage accuracy to within ±1%.

The LM1117 series is available TO-220 packages. A minimum of 10μF tantalum capacitor is required at the output to improve the transient response and stability.

C'est bien ça ?
« Last Edit: November 27, 2011, 03:40:57 pm by arduimat » Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui c'est ça , la lettre T précise que ce régulateur est en boitiet TO220, comme les LM7800

Je viens de vérifier le schéma de la carte UNo rev 2 : le régulateur 3,3V est un LP2985-33 qui peut fournir 150mA. C'est limite mais ça peut passer pour des cartes SD peux gourmandes, sans doute pas pour des cartes SDHC. Tu ne risques rien à faire l'essai, ces régulateurs sont protégés en cas de courant excessif ou de surchauffe.

IL faut bien sûr ramener à 3,3V les signaux entrants dans la carte (MOSI....) Pour ça plusieurs solutions existent, il en a été question dans des fils assez récents. Il n'est pas prudent pour la carte de lui envoyer des signaux 5V. Certaines supportent (un certain temps) mais ce n'est pas la règle !!
« Last Edit: November 27, 2011, 03:50:24 pm by al1fch » Logged

Pages: [1] 2   Go Up
Jump to: