Përmbajtje:

Sensori i temperaturës DIY duke përdorur një diodë: 3 hapa
Sensori i temperaturës DIY duke përdorur një diodë: 3 hapa

Video: Sensori i temperaturës DIY duke përdorur një diodë: 3 hapa

Video: Sensori i temperaturës DIY duke përdorur një diodë: 3 hapa
Video: How to use W1209 Temperature relay controller and program the thermostat 2024, Nëntor
Anonim
Sensori i temperaturës DIY duke përdorur një diodë
Sensori i temperaturës DIY duke përdorur një diodë
Sensori i temperaturës DIY duke përdorur një diodë
Sensori i temperaturës DIY duke përdorur një diodë

Pra, si një nga faktet në lidhje me kryqëzimet PN është se rënia e tensionit të tyre përpara ndryshon sipas rrymës kaluese dhe gjithashtu në temperaturën e kryqëzimit, ne do ta përdorim këtë për të bërë një sensor të thjeshtë të lirë të temperaturës.

Ky konfigurim përdoret zakonisht në shumë Qarqe të Integruara për të matur temperaturën e tij të brendshme dhe shumë sensorë të temperaturës si LM35 i famshëm i cili bazohet në këtë pronë.

Thjesht rënia e tensionit përpara të një diodë (e cila është një kryqëzim i vetëm PN) ndryshon ndërsa sasia e rrymës që kalon nëpër të ndryshon, gjithashtu me ndryshimin e temperaturës së diodës rënia e tensionit do të ndryshojë (Ndërsa rritet temperatura, përpara rënia zvogëlohet me një vlerë prej (1.0 milliVolt në 2.0 milliVolts për diodat e silikonit dhe 2.5 milliVolt për diodat e germaniumit).

Pra, duke kaluar një rrymë konstante përmes diodës, rënia e tensionit përpara tani duhet të ndryshojë vetëm sipas temperaturës së diodës. Na duhet vetëm tani për të matur tensionin e përparmë të diodës, aplikoni disa ekuacione të thjeshta dhe voilà këtu është sensori juaj i temperaturës !!!

Furnizimet

1 - 1n4007 diodë #12 - 1 Rezistencë Kohm #13 - bordi Arduino

Hapi 1: Diagrami i Qarkut

Diagrami i qarkut
Diagrami i qarkut

Siç mund ta shihni në skemë, është shumë e thjeshtë. duke lidhur diodën në seri me një rezistencë kufizuese të rrymës dhe një burim të qëndrueshëm të tensionit, ne mund të marrim një burim të papërpunuar të rrymës konstante, kështu që tensioni i matur në diodë do të ndryshojë vetëm për shkak të ndryshimit të temperaturës. Sigurohuni që vlera e rezistencës të mos jetë shumë e ulët aq shumë rrymë kalon nëpër diodë dhe bën një vetë -ngrohje të dukshme në diodë, gjithashtu jo një rezistencë shumë të lartë kështu që kalimi i rrymës nuk është i mjaftueshëm për të mbajtur një lidhje lineare midis tensionit të përparmë dhe temperaturës.

një rezistencë 1 kilogram Ohm me një furnizim 5V duhet të rezultojë në një rrymë diodë 4 milimetër e cila është një vlerë e mjaftueshme për këtë qëllim. I (diodë) = VCC / (Seri + Rdiode)

Hapi 2: Kodimi

Duhet të kemi parasysh se ka disa vlera për të ndryshuar në kod për të marrë rezultate më të mira si:

1 - VCC_Voltage: pasi vlera analogRead () varet nga VCC e çipit ATmega atëherë duhet ta shtojmë në ekuacion pasi ta matim në tabelën arduino.

2 - V_OLD_0_C: rënia e tensionit përpara të diodës së përdorur në rrymën prej 4 mA dhe temperaturën 0 Celsius

3 - Koeficienti i temperaturës: gradienti i temperaturës së diodës suaj (më mirë të merrni nga fleta e të dhënave) ose mund ta matni duke përdorur këtë ekuacion: Vnew - Vold = K (Tnew - Treguar)

ku:

Vnew = tensioni i rënies i matur rishtas pas ngrohjes së diodës

Vold = tensioni i matur i rënies në temperaturën e dhomës

Tnew = temperatura ku u ndez dioda

Tha = temperatura e vjetër e dhomës në të cilën u mat Vold

K = Koeficienti i temperaturës (një vlerë negative që varion nga -1.0 në -2.5 milliVolts) Së fundi tani mund të ngarkoni kodin dhe të merrni rezultatet tuaja të temperaturës.

#define Sens_Pin A0 // PA0 për tabelën STM32F103C8

dyfish V_OLD_0_C = 690.0; // 690 mV Tensioni përpara në 0 Celsius në rrymën e provës 4 mA

dyfish V_NEW = 0; // Tension i ri përpara në temperaturën e dhomës në 4 mA rrymë prove e dyfishtë Temperatura = 0.0; // Temperatura e dhomës e llogaritur dyfish Temperatura_Koeficienti = -1.6; //-1.6 ndryshim mV për gradë Celsius (-2.5 për diodat e germaniumit), më mirë për të marrë nga fleta e të dhënave të diodës VCC_Voltage e dyfishtë = 5010.0; // Tensioni i pranishëm në hekurudhën 5V të arduino në milliVolts (kërkohet për saktësi më të mirë) (3300.0 për stm32)

void setup () {

// vendosni kodin tuaj të konfigurimit këtu, për të ekzekutuar një herë: pinMode (Sens_Pin, INPUT); Serial.filloj (9600); }

lak void () {

// vendosni kodin tuaj kryesor këtu, për ta ekzekutuar në mënyrë të përsëritur: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024.0; // ndani me 4.0 nëse jeni duke përdorur një temperaturë ADC 12 bit = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

Serial.print (Temperatura); Serial.println ("C");

vonesë (500);

}

Hapi 3: Marrja e vlerave më të mira

Marrja e vlerave më të mira
Marrja e vlerave më të mira
Marrja e vlerave më të mira
Marrja e vlerave më të mira

Unë mendoj se është e këshillueshme që të keni një pajisje të besueshme për matjen e temperaturës pranë jush kur bëni këtë projekt.

ju mund të shihni se ka një gabim të dukshëm në leximet që mund të arrijë në 3 ose 4 gradë Celsius kështu që nga vjen ky gabim?

1 - mund t'ju duhet të ndryshoni ndryshoret e përmendura në hapin e mëparshëm

2 - Rezolucioni ADC i arduino është më i ulët se ajo që na nevojitet për të zbuluar ndryshimin e vogël të tensionit

3 - referenca e tensionit të arduino (5V) është shumë e lartë për këtë ndryshim të vogël të tensionit në diodë

Pra, nëse do ta përdorni këtë konfigurim si një sensor të temperaturës, duhet të jeni të vetëdijshëm se edhe pse është i lirë dhe i dobishëm, nuk është i saktë, por mund t’ju japë një ide shumë të mirë në lidhje me temperaturën e sistemit tuaj ose është në një PCB ose e montuar në motorin në punë etj…

Ky udhëzues ka për qëllim të përdorë sasinë më të vogël të përbërësve të mundshëm, por nëse doni të merrni rezultatet më të sakta nga kjo ide, mund të bëni disa ndryshime:

1 - shtoni disa amplifikime dhe faza filtrimi duke përdorur op -amps si në këtë lidhje2 - përdorni një kontrollues më të ulët të referencës së brendshme analoge si bordet STM32F103C8 me tension referimi analog 3.3 Volt (shih pikën 4) 3 - përdorni referencën e brendshme analoge 1.1 V në arduino por ki parasysh se nuk mund të lidhësh më shumë se 1.1 Volt me asnjë nga kunjat analoge të arduino.

mund ta shtoni këtë rresht në funksionin e konfigurimit:

analogReference (INTERNAL);

4 - Përdorni një mikrokontrollues që ka ADC me rezolucion më të lartë si STM32F103C8 i cili ka një rezolucion 12 bit ADC Pra, me pak fjalë, ky konfigurim i bazuar në arduino mund të japë një përmbledhje të bukur të temperaturës së sistemit tuaj, por rezultate jo aq të sakta (afërsisht 4.88 mV/Lexim)

konfigurimi STM32F103C8 do t'ju japë një rezultat mjaft të saktë pasi ka një ADC më të lartë 12-bit dhe një vlerë referimi analoge më të ulët 3.3V (afërsisht 0.8 mV/Lexim)

Epo, kjo është ajo !!: D

Recommended: