theborg Postat Decembrie 13, 2015 Autor Partajează Postat Decembrie 13, 2015 amandoua valori sunt identice, la o valoare de 1.12v am o presiune de 1.87 bar (desi manometrul analogic imi arata cam 1.55 dar aici ma gandesc ca nu este precis senzorul avand in vedere ca in gol imi scoate in loc de 0.50v are cam 0.55-0.57v) Link spre comentariu
djvas Postat Decembrie 13, 2015 Partajează Postat Decembrie 13, 2015 Asta nu ar trebui sa fie o problema. Calibrarea o faci din soft. Senzorul se comporta liniar ? Banuiesc ca manometrul analogic este de incredere. Link spre comentariu
MifTy Postat Decembrie 14, 2015 Partajează Postat Decembrie 14, 2015 Aw_Genetix, îmi explici şi mie de ce foloseşti tensiunea de alimentare a mcu pe post de referinţă de tensiune?eu asta înţeleg din codul tău: U = RawADC * (4.98 / 1023.0); // 5.0 poate fi 4.98 e tensiunea sursei uC Link spre comentariu
Vizitator Postat Decembrie 14, 2015 Partajează Postat Decembrie 14, 2015 (editat) pai care sa o foloseasca ? pe cea de 1V1 interna ? are undeva max 4.5, deci care referinta ar fi cea mai buna MifTy. daca ai tu o idee mai buna, poti sa spui din prima fara sa ma intrebi de ce. eu asa m-am gandit.. daca vrea ceva mai fidel poate sa-si faca o alta referinta, dar cred ca nu vrea. eu personal n-as face o sursa de referinta(ex.LM285BXZ) in cazul asta.. daca are acolo o sursa liniara, e suficienta..zic eu. oricum senzorul ala nu e abracadabra. daca vrea altfel trebuie sa declare acolo EXTERNAL in loc de DEFAULT, si pe pinul AREF sa aplice tensiunea de referinta dorita. Dar cum este acum, uC isi ia referinta de pe sursa. dar insist, daca ai alta idee poti spune, cu siguranta ai..si probabil una buna. Editat Decembrie 14, 2015 de Vizitator Link spre comentariu
MifTy Postat Decembrie 14, 2015 Partajează Postat Decembrie 14, 2015 ... io văzusem că, în general, în schemele de genul ăsta, unde sunt necesare referinţe de tensiune, se cam evită folosirea tensiunii de alimentare ca referinţă, iar dacă discutăm despre ceva alimentat de la baterie, şi avem ceva pretenţii, nici nu se ia în considerare soluţia. aş zice că până şi un tl431 ar fi mai stabil ca tensiunea de alimentare, nu-i absolută nevoie de referinţe cu precizie de jumătăţi de procent... dar dacă crezi că nu afectează precizia măsurării, ok... însă mai sus zicea că ar vrea să măsoare cu precizie de 0.05 bar, şi dacă nu se poate, măcar 0.1 bar Link spre comentariu
theborg Postat Decembrie 14, 2015 Autor Partajează Postat Decembrie 14, 2015 (editat) Avand in vedere si senzorul (procurat din China) nu cred si nu vreau sa am nu stiu ce pretentii in ceea ce priveste precizia. Pur si simplu in plaja de 1-2.5 bari sa-mi arate cat de cat apropiata valoarea de manometrul analogic care la randul lui este unul comun de pe piata. Ceea ce doresc, de fapt, este sa inlocuiesc manometrul analogic de la un cazan pe lemne cu acesta digital, avand in vedere ca si termometrul si termostatul analogic care comanda pompa de recirculare l-am inlocuit cu unul digital (aici am avut noroc ca l-am luat de-a gata). Ca si sursa de alimentare va fi un simplu alimentator de 9v, asta daca nu-mi sugerati altceva. Testele le fac cu senzorul montat in instalatia de apa curenta provenita de la un hidrofor (deci ghidajul la teste este manometrul hidroforului). Editat Decembrie 14, 2015 de theborg Link spre comentariu
Vizitator Postat Decembrie 14, 2015 Partajează Postat Decembrie 14, 2015 Nu stiu daca s-a mai spus in topic, parerea mea este ca poti face ce vrei tu prin simpla apasare a butonului "rel" de pe orice voltmetru care are functia asta. Cred ca ar merge si cu o pocnitoare ca asta care in intervalul 0-4 v iti arata 3 zecimale in coada, adica precizie pentru tine. Te complici prea tare cu modificari, cu microcontrolere si tot felul de chestii destepte. Succes! Link spre comentariu
Vizitator Postat Decembrie 14, 2015 Partajează Postat Decembrie 14, 2015 (editat) m-am razgandit, nu merge cum am zis eu, doar compensezi inceputul ca sa iti arate 0. daca mai amplifici putin semnalul primit de la traductor a.i. sa ai la final 1 volt/ unitatea de presiune in care masoara, apoi cu calibrare din rel si poate te apropii. Editat Decembrie 14, 2015 de Vizitator Link spre comentariu
Ticu Postat Decembrie 14, 2015 Partajează Postat Decembrie 14, 2015 (editat) Daca se renunta la microcontroler, ar merge si o schema de tipul atasat, fara amplificare. Cu un potentiometru se regleaza offset-ul de 0,5V si cu altul - capatul de scala de 1,2V. Editat Decembrie 14, 2015 de Ticu Link spre comentariu
Ticu Postat Decembrie 14, 2015 Partajează Postat Decembrie 14, 2015 Scuze, am avut o eroare; repet atasamentul. Link spre comentariu
Vizitator Postat Decembrie 14, 2015 Partajează Postat Decembrie 14, 2015 cu ce program ai facut schita asta ? Link spre comentariu
MifTy Postat Decembrie 15, 2015 Partajează Postat Decembrie 15, 2015 Avand in vedere si senzorul (procurat din China) nu cred si nu vreau sa am nu stiu ce pretentii in ceea ce priveste precizia. Pur si simplu in plaja de 1-2.5 bari sa-mi arate cat de cat apropiata valoarea de manometrul analogic care la randul lui este unul comun de pe piata. Ceea ce doresc, de fapt, este sa inlocuiesc manometrul analogic de la un cazan pe lemne cu acesta digital, avand in vedere ca si termometrul si termostatul analogic care comanda pompa de recirculare l-am inlocuit cu unul digital (aici am avut noroc ca l-am luat de-a gata). Ca si sursa de alimentare va fi un simplu alimentator de 9v, asta daca nu-mi sugerati altceva. Testele le fac cu senzorul montat in instalatia de apa curenta provenita de la un hidrofor (deci ghidajul la teste este manometrul hidroforului). dacă aveai o plajă mai largă de valori de măsurat, nu conta, dar tu ai de măsurat între 0 şi 5 volţi, fă calculul la eroarea afişabilă.dacă era vorba de 0-100 nu spuneam nimic: la 100 de volţi 0.5 volţi în plus sau minus nu contează, dar între 0 şi 5 volţi... Link spre comentariu
nico_2010 Postat Decembrie 17, 2015 Partajează Postat Decembrie 17, 2015 Incearca su cu acest program: #include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //library initialization//---Definitie variabileuint16_t Vadc = 0;float Ux=0.0;float Poff=0.5;float Px = 0.0;float Preal = 0.0;uint16_t Vcc = 5.000;const int pinADC = A1;// intrarea analogica este A1void setup() { // put your setup code here, to run once: lcd.begin(16, 2); lcd.setCursor (1, 0); lcd.print ("Your text"); //aici introduci textul dorit Vadc = analogRead (pinADC); if ((Vadc < 100) || (Vadc > 990)) { lcd.clear(); lcd.setCursor (1, 0); lcd.print ("Eroare senzor!"); while (1) { } }}void loop() { // put your main code here, to run repeatedly: Vadc= analogRead (pinADC); Ux=(Vadc * (Vcc/1024.0))+0.5; Px = (Ux-0.5)/3.333; //Preal = fmap(Ux,0.5,4.5,0.00,1.20); Preal=Px-0.15; //exprimat in bar si cu compensarea erorii lcd.setCursor (0, 0); lcd.print ("Presiune = "); lcd.setCursor (11, 0); lcd.print (Preal); }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;} Link spre comentariu
nico_2010 Postat Decembrie 18, 2015 Partajează Postat Decembrie 18, 2015 Pentru ca aseara nu am avut prea mult timp, postez acum noul software, cu mentiunea ca la depasirea valorilor limita min=0.5V, respectiv max.4.5V, pe ecranul LCD apare un mesaj de eroare care persista cat timp limitele (oricare dintre ele) sunt depasite. Nu am prevazut si posibilitatea de actionare a unui releu care sa intrerupa alimentarea boilerului. La punerea in functiune, programul verifica daca senzorul functioneaza, in caz contrar afiseaza un mesaj de eroare Afisarea se face in bari (1MPa = 10bar) Am atasat si schema de principiu. Este de dorit ca amplificatorul operational sa fie de tipul rail-to-rail atat pe intrare, cat si pe iesire, altfel alimentarea Ao trebuie sa fie mai mare (cum este in schema, de exemplu). #include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //library initialization//---Definitie variabileuint16_t Vadc = 0;float Ux = 0.0;float Px = 0.0;float Preal = 0.0;uint16_t Vcc = 5.000;const int pinADC = A1;// intrarea analogica este A1void error(void);void setup() { // put your setup code here, to run once: lcd.begin(16, 2); lcd.setCursor (1, 0); lcd.print ("Your text"); //aici introduci textul dorit Vadc = analogRead (pinADC); if ((Vadc < 100) || (Vadc > 990)) { lcd.clear(); lcd.setCursor (1, 0); lcd.print ("Eroare !"); while (1) { } }}void loop() { // put your main code here, to run repeatedly: Vadc = analogRead (pinADC); Ux = (Vadc * (Vcc / 1024.0)); if ((Ux > 0.49) && (Ux < 4.55)) { Px = (Ux - 0.5) / 3.333;//Panta dreptei ce descrie variatia valorilor senzorului // este Ux= 3.333*Px+0.5, in ipoteza ca foaia de catalog nu minte Preal = Px * 10.0; //exprimat in bar 1MPa = 10 bar lcd.setCursor (0, 0); lcd.print ("Presiune = "); lcd.setCursor (11, 0); lcd.print (Preal);// lcd.setCursor(0, 1); varianta de verificare a tensiunii masurate// lcd.print(Ux); } else { error(); }}void error() { while (1) { lcd.setCursor (0, 1); lcd.print ("Eroare senzor!"); Vadc = analogRead (pinADC); Ux = (Vadc * (Vcc / 1024.0)); if ((Ux > 0.49) && (Ux < 4.55)) { lcd.clear(); break; } }} Doc7.doc 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