Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« on: November 24, 2011, 05:26:04 pm » |
Bonsoir à tous, Je suis en train de devenir fou.  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! #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 
|
|
|
|
|
Logged
|
|
|
|
|
Bretagne
Offline
God Member
Karma: 8
Posts: 658
|
 |
« Reply #1 on: November 25, 2011, 01:29:01 am » |
carte protégée en écriture? 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #2 on: November 25, 2011, 07:03:10 am » |
carte protégée en écriture?  Ouais non j'y ai pensé mais c'est pas ça...  Par contre j'ai trouvé ce texte sur le site arduino : 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
Edison Member
Karma: 7
Posts: 1667
Do or DIY
|
 |
« Reply #3 on: November 25, 2011, 10:43:06 am » |
et en écrivant :
File theFile = SD.open("fichier.txt", FILE_WRITE);
??
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4351
Arduino Hacker
|
 |
« Reply #4 on: November 25, 2011, 01:03:00 pm » |
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
|
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #5 on: November 25, 2011, 04:23:46 pm » |
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 !  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
God Member
Karma: 8
Posts: 658
|
 |
« Reply #6 on: November 26, 2011, 03:32:35 am » |
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
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #7 on: November 26, 2011, 04:01:04 am » |
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)  Et pour faire une belle tension bien stable, il faut utiliser quoi, un condensateur ?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #8 on: November 27, 2011, 02:08:10 pm » |
Un petit coup de pouce ?  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 
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
God Member
Karma: 2
Posts: 905
|
 |
« Reply #9 on: November 27, 2011, 03:02:45 pm » |
Bonjour 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
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #10 on: November 27, 2011, 03:10:32 pm » |
Bonjour 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  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
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #11 on: November 27, 2011, 03:22:58 pm » |
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
God Member
Karma: 2
Posts: 905
|
 |
« Reply #12 on: November 27, 2011, 03:24:38 pm » |
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
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #13 on: November 27, 2011, 03:34:30 pm » |
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.3VDESCRIPTION •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
God Member
Karma: 2
Posts: 905
|
 |
« Reply #14 on: November 27, 2011, 03:41:51 pm » |
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
|
|
|
|
|
|