ventzel Postat Octombrie 9, 2014 Partajează Postat Octombrie 9, 2014 Termocupla genereaza o tensiune proportionala cu diferenta de temperatura dintre zona calda si zona rece care deobicei ii blocu echitermic. Pe langa amplificare ii neaparat necesar sa faci compensarea temperaturii citite cu temperatura blocului echitermic. Ceva documentatie care poate te ajuta: http://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en012021 http://ww1.microchip.com/downloads/en/appnotes/00844a.pdf Varianta cu MCP619 am incercat-o personal si ii suficient de stabila. Pe un pic cu ADC de 12bit aveam cu intrarea in scurt oscilatii intre 0..4 unitati. Este si soft in Excell cu care poti genera lookup table pentru polinomiala specifica termocuplei. Link spre comentariu
Vizitator Postat Octombrie 9, 2014 Partajează Postat Octombrie 9, 2014 m-am hotarat sa folosesc MAX6675ISA+ mi se pare un raport bun de pret, avand in vedere ca trebuie si OP si un NTC ... e o idee buna/rea... ? Link spre comentariu
UDAR Postat Octombrie 9, 2014 Partajează Postat Octombrie 9, 2014 Raportul de preț e 10 la 1 . Raportul de performanță ? Nu uita să iei în calcul și performanța ( precizia) termocuplului . Tu decizi , dar pentru forum va fi , fără îndoială , binevenit experimentul tău. Link spre comentariu
ventzel Postat Octombrie 9, 2014 Partajează Postat Octombrie 9, 2014 MAX6675 te scapa de toata partea de amplificare, compensare cu blocu echitermic, lookup table sau alta metoda de conversie din raw in temperatura. Imunitatea la zgomote ii chiar buna. Singuru dezavantaj care il vad ii ca poti face maxim 4-5 masuratori/secunda. Link spre comentariu
Vizitator Postat Octombrie 9, 2014 Partajează Postat Octombrie 9, 2014 (editat) eu citesc temperatura in aplicatie la 10secunde, deci ptr mine ar fi bine.. o sa comand uc sa vad ce iasa.. ptr mine partea proasta e ca pierd 3 pini..fata de 2. @UDAR , stiu ca ai dreptate, dar ai uitat sa calculezi cel mai important aspect. tehnicianu` , adica eu ..si nu pot spune ca sunt foarte expert, ma descurc si eu si cam atat. Editat Octombrie 9, 2014 de Vizitator Link spre comentariu
Vizitator Postat Octombrie 11, 2014 Partajează Postat Octombrie 11, 2014 (editat) /* Conectare senzor la Arduino +5V-----R1----A0----pt1000----GNDF 0.3 : -50 to +500 °CF 0.15 : -30 to +300 °CF 0.1 : 0 to +150 °C*/ const int ptSensor = A0;float R1 = 0.990; // 1Kohm | a se ajusta pentru calibrarefloat Voltaj = 4.98; // 5.0V | | a se ajusta pentru calibrareint raw = 0;double temperatura = 0.0;void setup(){ Serial.begin(9600); Serial.println("Senzor pt1000"); delay(1000);}void loop(){ raw = analogRead(A0); // raw = filtruUpx(raw); temperatura = GetPTSensor(raw, R1, Voltaj); Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println(" C"); delay(500);}float GetPTSensor(int senzorRaw, float R1, float Voltaj) { float A=3.9083E-3; float B=-5.775E-7; float T; float R; R = (R1 / ((Voltaj / ((Voltaj / 1023.0) * senzorRaw)) - 1)*1000); R=R/1000; // tip senzor: pt1000 //T = (0.0-A + sqrt((A*A) - 4.0 * B * (1.0 - R))) / 2.0 * B; T=0.0-A; T+=sqrt((A*A) - 4.0 * B * (1.0 - R)); T/=(2.0 * B); if(T>0&&T<200) { return T; } else { //T= (0.0-A - sqrt((A*A) - 4.0 * B * (1.0 - R))) / 2.0 * B; T=0.0-A; T-=sqrt((A*A) - 4.0 * B * (1.0 - R)); T/=(2.0 * B); return T; }} Editat Octombrie 11, 2014 de Vizitator Link spre comentariu
ventzel Postat Octombrie 12, 2014 Partajează Postat Octombrie 12, 2014 (editat) Io ma feresc de operatii in float pe microcontrollere care suporta hardware numa adunari, scaderi, shift si unele inmultire hardware pe 8bit. Ii preferabil sa lucrezi cu modele translatate pe byte sau int. Nu m-am uitat in program la coeficienti sau partea de formule daca is corecte, da daca luam un PT1000 cu rezistenta de 1000 ohmi la 0C si 2120 la 300C, cu rezistenta de polarizare de 990 ohmi, avem la intrarea in ADC un interval intre 2.51V...3.41V. Asta pentru ADC de 10bit cu vref+=5V ar inremna 513...697. Deci pentru un interval de 300C obtinem 184 valori distincte. La rezolutia asta nu cred ca mai are rost sa folosesti RTD si sa faci calcule exacte in float. Poti face direct liniarizare direct pe valorile scoase din ADC pe intervalu [513..697]=>[0...300C]. Ii preferabil chiar daca nu folosesti sursa de curent constant, rezistenta de polarizare aleasa sa limiteze curentu prin RTD la o valoare maxima de sub 1mA pentru tot intervalu de temperatura la care ii posibil sa lucreze. Alta idee care imi pare intreresanta de testat ar fi asta: http://ww1.microchip.com/downloads/en/AppNotes/00895a.pdf Editat Octombrie 12, 2014 de ventzel Link spre comentariu
Vizitator Postat Octombrie 12, 2014 Partajează Postat Octombrie 12, 2014 (editat) pai senzorii pt1000,ptr100 au si ei niste standarde oricat de neliniari ar fi. functia e bazata dupa datele din IEC 751 si JISC1604-1989 unde functia de neliniarizare ar fi: Rt = R0 * (1 + A* t + B*t2 + C*(t-100)* t3)=> A= 3.9083 E-3B = -5.775 E-7C = -4.183 E -12 (sub 0 °C) una peste alta..codul este inclus intr-o aplicatie ceva mai maricica, si ruleaza pe un attiny85(8Mhz) , deocamdata fara probleme. (~42ore). daca e sa se blocheze o sa anunt. Eu am avut probleme in general cu String daca se folosesc siruri prea lungi, din cauza memoriei. Dar cu float inca nu am avut probleme.. Editat Octombrie 12, 2014 de Vizitator 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