Vizitator Postat Decembrie 11, 2015 Partajează Postat Decembrie 11, 2015 (editat) MifTy. nu a zis nimeni ca fara un controler suplimentar. Dar sunt LCD1602 care vin cu controlerul ala onBoard, si mai sunt si separat, pe care le lipesti tu acolo. Asa cum ziceam "daca folosesti un 1602 cu i2c", deci cred ca am fost clar, ca are controlerul i2c pe el. Pretul acestuia e neglijabil, cel putin ptr mine. ~10Roni apropo de fite inutile. asa ni s-a parut multa vreme si telefoanele mobile. o fita inutila si poate chiar asta si sunt. doar ca...ne-am cam obisnuit cu ele Editat Decembrie 11, 2015 de Vizitator Link spre comentariu
theborg Postat Decembrie 11, 2015 Autor Partajează Postat Decembrie 11, 2015 ... Pe partea de programare, eu ca farmacist de profesie ma limitez doar la a "fura" coduri facute de altii si a le aplica, eventual a face mici modificari prin ele.... Sunt in ceata... am intrat prin programare, prin controlere, prin i2c si pe mine m-ati pierdut... In fine, am folosit codul de mai jos al voltmetrului gasit pe net la care am modificat in loc de value=value*0.978; eu am trecut value=(1.2 * value - 0.6) / 4; si imi arat acum valoarea de 0.02. Maine dimi conectez senzorul la presiune si in comparatie cu un manometru analogic voi compara rezultatele. #include<LiquidCrystal.h>int vin=A0;float value;LiquidCrystal lcd(12,11,5,4,3,2); //library initializationvoid setup(){ pinMode(vin,INPUT); lcd.begin(16,2); lcd.setCursor(1,0); lcd.print("LCD VOLTMETER");}void loop(){value=analogRead(vin);value=value/200;value=(1.2 * value - 0.6) / 4;lcd.setCursor(3,1);lcd.print(value);lcd.print(" volts");delay(300);} Link spre comentariu
MifTy Postat Decembrie 11, 2015 Partajează Postat Decembrie 11, 2015 MifTy. nu a zis nimeni ca fara un controler suplimentar. Dar sunt LCD1602 care vin cu controlerul ala onBoard, si mai sunt si separat, pe care le lipesti tu acolo. Asa cum ziceam "daca folosesti un 1602 cu i2c", deci cred ca am fost clar, ca are controlerul i2c pe el. Pretul acestuia e neglijabil, cel putin ptr mine. ~10Roni apropo de fite inutile. asa ni s-a parut multa vreme si telefoanele mobile. o fita inutila si poate chiar asta si sunt. doar ca...ne-am cam obisnuit cu ele asta nu ştiam.am văzut eu "I2C LCD display for Arduino", dar îmi părea un LCD "normal" plantat pe o plăcuţă cu un controller care pe de-o parte primea comenzile I2C, pe de alta le decoda şi comanda pinii LCD-ului în mod normal...nu ştiam că există afişaje LCD cu controller I2C integrat...cât priveşte "fiţa Arduino", ne contrazicem pe topicul lui dedicat, bine? @theborg, dacă vrei să înveţi să programezi un mcu atmel, oricare, mai bine învaţă să programezi în asm sau C, la alegere, altfel codul tău o să fie totdeauna dependent de un Arduino şi de Arduino IDE! Link spre comentariu
Vizitator Postat Decembrie 11, 2015 Partajează Postat Decembrie 11, 2015 (editat) pai ce e asta aici "value=value/200;" ? ce ai scris acolo probabil are legatura cu schema fizica, cu vreun divizor rezistiv, sau de genul..dar nu poti calcula ...asa.. eventual value = (value * 0.0048875855327468L); dar value e float si...analogRead returneaza int.. ma rog.. pinii trebuie sa-i declari fie cu const int vin = A0; fie cu #DEFINE cât priveşte "fiţa Arduino", ne contrazicem pe topicul lui dedicat, bine? nu ma contrazic..dar bine. @theborg, dacă vrei să înveţi să programezi un mcu atmel, oricare, mai bine învaţă să programezi în asm sau C, la alegere, altfel codul tău o să fie totdeauna dependent de un Arduino şi de Arduino IDE! sa mai contrazic si aici ? nu... dar poti sa mai cauti informatie...poti sa scri orice AVR vrei tu cu ArduinoIDE. Dar bineinteles ca nu cu ArduinoIDE asa cum vine de la mama lui. Mai trebuiesc putine ajustari, dar nu cine stie ce. In general Mape pentru pini, si fuses. Editat Decembrie 11, 2015 de Vizitator Link spre comentariu
theborg Postat Decembrie 12, 2015 Autor Partajează Postat Decembrie 12, 2015 (editat) pai ce e asta aici "value=value/200;" ? ce ai scris acolo probabil are legatura cu schema fizica, cu vreun divizor rezistiv, sau de genul..dar nu poti calcula ...asa.. eventual value = (value * 0.0048875855327468L); dar value e float si...analogRead returneaza int.. ... Schema este de aici Editat Decembrie 12, 2015 de theborg Link spre comentariu
djvas Postat Decembrie 13, 2015 Partajează Postat Decembrie 13, 2015 Ca si schema electronica, nu e cine stie ce: alimentez senzorul la 5v iar iesirea o trimit direct in Arduino UNO care trebuie sa-mi afiseze presiunea in plaja interesata de mine intre 0 si 3 bar de preferat cu 2 zecimale dar nu cu precizie de 0,01 ci o precizie de 0,05 fiind arhisuficienta. Nu vreau sa te dezamagesc dar nu vei putea obtine nici macar 0.05% precizie in configuratia clasica de arduino cu referinta de 5V. Link spre comentariu
UDAR Postat Decembrie 13, 2015 Partajează Postat Decembrie 13, 2015 Eu am înțeles 0.05MPa pe scara de 3.00MPa adică 1,67% ! Dacă e vorba de 0,05% .... evident că nu se pot obține . Link spre comentariu
theborg Postat Decembrie 13, 2015 Autor Partajează Postat Decembrie 13, 2015 De fapt eu doresc 0.05 bari pe scara de 3.00 bari. Daca nu se poate ma multumesc si cu o rezolutie de 0.1 bari. Link spre comentariu
UDAR Postat Decembrie 13, 2015 Partajează Postat Decembrie 13, 2015 Mă rog, OK. Dar ca precizie relativă e același lucru. Link spre comentariu
theborg Postat Decembrie 13, 2015 Autor Partajează Postat Decembrie 13, 2015 Am inlocuit in cod value=value/200 cu value * 0.0048875855327468L valoarea value=(1.2 * value - 0.6) / 4 am inmultit-o cu 10 ca sa-mi afiseze in bari nu in MPa. La 0 bari imi apare indicata valoarea de 0.45-0.48 in loc de 0.00 si la o presiune de cca 2.25 imi apare 2.75-2.78. Cum scap de acest decalaj de aprox 0.5? Link spre comentariu
Vizitator Postat Decembrie 13, 2015 Partajează Postat Decembrie 13, 2015 (editat) folosește codul postat de mine la #29, si in prima faza verifica ca ceea ce citește Arduino ca tensiune e real. apoi mai continui. Editat Decembrie 13, 2015 de Vizitator Link spre comentariu
theborg Postat Decembrie 13, 2015 Autor Partajează Postat Decembrie 13, 2015 Imi apare eroare la compilare, si cum nu ma pricep la programare ca sa rectific... C:UsersBorgAppDataLocalTempbuild8149516683302858902.tmp/core.a(main.cpp.o): In function `main':C:Program Files (x86)Arduinohardwarearduinoavrcoresarduino/main.cpp:40: undefined reference to `setup'C:Program Files (x86)Arduinohardwarearduinoavrcoresarduino/main.cpp:43: undefined reference to `loop'collect2.exe: error: ld returned 1 exit statusError compiling. Link spre comentariu
Vizitator Postat Decembrie 13, 2015 Partajează Postat Decembrie 13, 2015 (editat) pai ...eu nu ti-am dat cod complet, sunt doar doua functii.. trebuia sa le pui in proiectul tau. ok, iti fac cod complet, desi nu era mare branza. const int senzorPin = A0;int RawADC = 0;float P,U = 0.0;void setup(){ analogReference(DEFAULT); // poti sapa putin dupa chestia asta. //pinMode(senzorPin,INPUT); // nu este necesar sa declari intrarile analog. Serial.begin(9600); Serial.println(F("Initializare sistem"));}void loop(){ citescSenzor(); delay(100);}void citescSenzor(){/* Prima data calibrezi bine de tot tensiunea citita pe A0 sa corespunda cu 0,5V..4.5V in soft.*/ RawADC = analogRead(senzorPin); U = RawADC * (4.98 / 1023.0); // 5.0 poate fi 4.98 e tensiunea sursei uCSerial.print(F("RawADC")); Serial.println(RawADC); Serial.print(F("tTensiune:")); Serial.println(U);/*Apoi convertesti*/P = (1.2 * U - 0.6) / 4;/* Si afisezi in consola, deocamdata */Serial.print(F("Presiune:")); Serial.println(P); /* Poti incerca si varianta cu fmap()*/ P = fmap(U,0.5,4.5,0.0,1.2); Serial.print(F("Presiune2:")); Serial.println(P); Serial.println("");}/* fmap e o functie putin modificata */ float fmap(double x, double in_min, double in_max, double out_min, double out_max){ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;} Lasa deocamdata LCD-ul. Foloseste consola pe 9600 Editat Decembrie 13, 2015 de Vizitator Link spre comentariu
theborg Postat Decembrie 13, 2015 Autor Partajează Postat Decembrie 13, 2015 Da, se pare ca acum este ok. Indica valoarea corecta conform curbei senzorului. Acum ramane de inclus si LCD-ul. Link spre comentariu
Vizitator Postat Decembrie 13, 2015 Partajează Postat Decembrie 13, 2015 pai...conform testelor, una din variantele "Presiune", "Presiune2" ar trebui sa arate eronat fata de masuratoarea ta. care varianta arata mai aproape de masuratoarea ta ? doar una trebuie integrata in aplicatie. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum