Sari la conținut
ELFORUM - Forumul electronistilor

Citire temperatura cu "sensor de temperatura"


Vizitator

Postări Recomandate

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
  • Răspunsuri 22
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • UDAR

    4

  • ventzel

    4

  • godFather89

    3

  • XAN77

    2

Top autori în acest subiect

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

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

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 de Vizitator
Link spre comentariu
/*  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 de Vizitator
Link spre comentariu

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 de ventzel
Link spre comentariu

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 de Vizitator
Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări