bonjour,
devant donner un tit coup de main à mon fiston pour son bac si je me suis lancé dans l'arduino et ses galères^^
cela avait bien commencer et rien ne fonctionne donc je tourne un peu en rond...
le matériel et branchements:
Arduino UNO R3 Atmega 328P CH340G
http://www.ebay.fr/itm/Uno-R3-specia...item3f59e30be5
capteur de tension: 0-25V
http://www.ebay.fr/itm/271662316634?...%3AMEBIDX%3AIT
vcc: non branché / gnd: gnd / signal: A0
testé ok avec un programme prenant R1= 30000; R2= 7500; Vpow = 4.7
capteur de courant 30A:
http://www.ebay.fr/itm/272298103181?...%3AMEBIDX%3AIT
VOut: 0.66mV/A
vcc: 5V / gnd: gnd / out: A1
carte micro SD:
http://www.ebay.fr/itm/ultra-small-m...item3f59512076
3v3: 3v3 / gnd: gnd /cs: 10 / mosi: 11 / miso: 12 / clk: 13 /
carte 2go formaté fat 32 et testé ok avec CardInfo et ReadWrite
écran lcd 2x 16 caractères:
http://hfo.pl/pdf/Y/yms162-04.pdf
pins 14->1_15_16 merci les chinois... câblé (2, 3, 4, 5, 10, 11 ) testé ok avec HelloWorld
le but est donc de mesurer la tension et le courant puis de calculer les w/h et d'afficher sur le lcd ces valeurs plus l'incrémentation des watts produits.
sur la carte sd idem mais vu que le test doit durer une journée, une moyenne toutes le par ex 5mn serait parfait.
je suis donc certain de tous mes branchements et du matériel. reste la bibliothèque arduino qui fera p'être rigoler les spécialistes^^ mais bon là je fais mes armes donc...
Voilà! difficile d'être plus précis. autrement le problème est simple... rien ne marche^^Code:#include <SPI.h> #include <SD.h> #include <LiquidCrystal.h> #include <Wire.h> //declaration entre sortie// int capteur_tension=A0; int capteur_courant=A1; //variable// float valeur_tension=10; float valeur_courant; float puissance_watt; float puissance_wattheure; File fichierSD; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { SD.begin(10); lcd.begin(16,2); //init de l'ecran 2*16 Serial.begin(9600); } float acquisition_valeur_tension() { float tension; tension=analogRead(capteur_tension); tension = (tension * (5.0 / 1024.0));//tension d enntre en V float vPow = 4.7; float r1 = 30000; float r2 = 7500; float v = (analogRead(0) * vPow) / 1024.0; float v2 = v / (r2 / (r1 + r2)); float (vPow / (r2 / (r1 + r2))); Serial.print(v2); return tension; } float acquisition_valeur_courant() { float courant=0; courant=analogRead(capteur_courant); courant = (courant * (5.0 / 1024.0));//tension d enntre en V courant=courant*1.515;//fonction transfert d'apres le constructeur 185mv/A donc 1A/0.185v=5.405 return courant; } float traitement_donnee_watt(float tension,float courant) { float puissance=0; puissance=tension*courant; return puissance; } float traitement_donnee_watt_heure(float puissance) { float watt_heure=0; watt_heure=puissance*3600; return watt_heure; } void affichage_lcd(float tension,float courant,float watt,float wattheure) { lcd.setCursor(0, 0); lcd.print(tension); lcd.print("V "); lcd.print(courant); lcd.print("A"); lcd.setCursor(0, 1); lcd.print(watt); lcd.print("W "); if(wattheure>1000) { lcd.print(wattheure/1000); lcd.println("kWh"); } else { lcd.print(wattheure); lcd.println("Wh"); } Serial.print(tension); Serial.print("V "); Serial.print(courant); Serial.print("A"); Serial.print(watt); Serial.print("W "); if(wattheure>1000) { Serial.print(wattheure/1000); Serial.println("kWh"); } else { Serial.print(wattheure); Serial.println("Wh"); } } void sauvgarde_sd(float tension,float courant,float watt,float wattheure) { fichierSD=SD.open("sauvgarde.txt", FILE_WRITE); fichierSD.print("tension(V)="); fichierSD.print(tension); fichierSD.print(" courant(A)="); fichierSD.print(courant); fichierSD.print(" puissance(watt)="); fichierSD.print(watt); fichierSD.print(" puissance(wattheure)="); fichierSD.println(wattheure); fichierSD.close(); } void loop() { valeur_tension=acquisition_valeur_tension(); valeur_courant=acquisition_valeur_courant(); puissance_watt=traitement_donnee_watt(valeur_tension,valeur_courant); puissance_wattheure=traitement_donnee_watt_heure(puissance_watt); affichage_lcd(valeur_tension,valeur_courant,puissance_watt,puissance_wattheure); sauvgarde_sd(valeur_tension,valeur_courant,puissance_watt,puissance_wattheure); }
le voltmètre affiche par ex 4v avec une charge de 13.62v
l'ampèremètre à l'air de fonctionner mais je ne pourrai le valider qu'avec une charge étalon que j'aurai ces jours-ci.
rien sur la sd
ffffffffffffffff sur le lcd. des D majuscules quand au départ j'avais mis SD.begin(4);je ne vois pas le rapport mais bon...
le moniteur série affiche bien 4 valeurs
alors docteur c'est grave?
-----