Satura rādītājs:

DIY temperatūras sensors, izmantojot vienu diodi: 3 soļi
DIY temperatūras sensors, izmantojot vienu diodi: 3 soļi

Video: DIY temperatūras sensors, izmantojot vienu diodi: 3 soļi

Video: DIY temperatūras sensors, izmantojot vienu diodi: 3 soļi
Video: 3 в 1 ZigBee датчик температуры, влажности и освещения с LCD дисплеем 2024, Novembris
Anonim
DIY temperatūras sensors, izmantojot vienu diodi
DIY temperatūras sensors, izmantojot vienu diodi
DIY temperatūras sensors, izmantojot vienu diodi
DIY temperatūras sensors, izmantojot vienu diodi

Tā kā viens no faktiem par PN krustojumiem ir tāds, ka to sprieguma kritums uz priekšu mainās atkarībā no plūstošās strāvas un arī savienojuma temperatūras, mēs to izmantosim, lai izveidotu vienkāršu lētu temperatūras sensoru.

Šo iestatījumu parasti izmanto daudzās integrētajās shēmās, lai izmērītu tā iekšējo temperatūru un daudzus temperatūras sensorus kā slaveno LM35, kura pamatā ir šis īpašums.

Vienkārši mainās diodes (kas ir viens PN krustojums) sprieguma kritums uz priekšu, mainoties caur to plūstošās strāvas daudzumam, kā arī mainoties diodes temperatūrai, mainīsies sprieguma kritums (Palielinoties temperatūrai, kritums samazinās par vērtību (1,0 milivolti līdz 2,0 milivoltiem silīcija diodēm un 2,5 milivolti germānija diodēm).

Tātad, izlaižot nemainīgu strāvu caur diodi, sprieguma kritumam uz priekšu tagad vajadzētu mainīties tikai atkarībā no diodes temperatūras. Mums vienkārši tagad jāmēra diodes priekšējais spriegums, jāpiemēro daži vienkārši vienādojumi, un šeit ir jūsu temperatūras sensors !!!

Piegādes

1 - 1n4007 diode #12 - 1 Kohm rezistors #13 - Arduino plate

1. darbība: shēmas shēma

Ķēdes diagramma
Ķēdes diagramma

Kā redzat shēmā, tas ir ļoti vienkārši. sērijveidā savienojot diodi ar strāvas ierobežošanas rezistoru un stabilu sprieguma avotu, mēs varam iegūt neapstrādātu nemainīgas strāvas avotu, tāpēc izmērītais spriegums visā diode mainīsies tikai temperatūras izmaiņu dēļ. Pārliecinieties, vai rezistora vērtība nav pārāk zems, ka daudz strāvas iziet cauri diodei un rada ievērojamu pašsildīšanos diodē, kā arī nav ļoti augsts rezistors, tāpēc strāvas pāreja nav pietiekama, lai saglabātu lineāru attiecību starp priekšējo spriegumu un temperatūru.

1 kilo omu rezistoram ar 5 V barošanu vajadzētu radīt 4 miliamperu diode strāvu, kas ir pietiekama vērtība šim nolūkam. I (diode) = VCC / (Rseries + Rdiode)

2. darbība: kodēšana

Mums jāpatur prātā, ka, lai iegūtu labākus rezultātus, kodā ir jāpielāgo dažas vērtības, piemēram:

1 - VCC_Voltage: tā kā analogRead () vērtība ir atkarīga no ATmega mikroshēmas VCC, tad mums tas jāpievieno vienādojumam pēc tā mērīšanas uz arduino plates.

2 - V_OLD_0_C: izmantotā diodes sprieguma kritums uz priekšu pie 4 mA strāvas un 0 Celsija temperatūras

3 - Temperatūras koeficients: jūsu diodes temperatūras gradients (labāk iegūt no datu lapas) vai arī varat izmērīt, izmantojot šo vienādojumu: Vnew - Vold = K (Tnew - Told)

kur:

Vnew = nesen izmērītais kritiena spriegums pēc diodes sildīšanas

Vold = izmērīts kritiena spriegums kādā istabas temperatūrā

Tnew = temperatūra, kurā tika uzkarsēts diode

Teica = vecā istabas temperatūra, kurā tika mērīts Volds

K = Temperatūras koeficients (negatīva vērtība svārstās no -1,0 līdz -2,5 milivoltiem) Beidzot jūs varat augšupielādēt kodu un iegūt temperatūras rezultātus.

#define Sens_Pin A0 // PA0 priekš STM32F103C8 plates

dubultā V_OLD_0_C = 690,0; // 690 mV Spriegums uz priekšu pie 0 Celsija pie 4 mA testa strāvas

dubultā V_NEW = 0; // Jauns priekšējais spriegums istabas temperatūrā pie 4 mA testa strāva dubultā Temperatūra = 0,0; // Istabas aprēķinātā temperatūra dubultā Temperature_Coefficient = -1,6; //-1,6 mV izmaiņas uz Celsija grādu (-2,5 germānija diodēm), labāk iegūt no diodes datu lapas dubultā VCC_Voltage = 5010,0; // Spriegums arduino 5V sliedē milivoltos (nepieciešams labākai precizitātei) (3300.0 stm32)

void setup () {

// ielieciet šeit savu iestatīšanas kodu, lai palaistu vienu reizi: pinMode (Sens_Pin, INPUT); Sērijas sākums (9600); }

void loop () {

// ievietojiet savu galveno kodu šeit, lai palaistu atkārtoti: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024,0; // daliet ar 4,0, ja izmantojat 12 bitu ADC temperatūru = (((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

Sērijas nospiedums (temperatūra); Serial.println ("C");

kavēšanās (500);

}

3. solis: labāku vērtību iegūšana

Labāku vērtību iegūšana
Labāku vērtību iegūšana
Labāku vērtību iegūšana
Labāku vērtību iegūšana

Es domāju, ka, veicot šo projektu, ir ieteicams, lai blakus būtu uzticama temperatūras mērīšanas ierīce.

jūs varat redzēt, ka rādījumos ir pamanāma kļūda, kas var sasniegt 3 vai 4 grādus pēc Celsija, tad no kurienes šī kļūda rodas?

1 - iespējams, būs jāpielāgo mainīgie, kas minēti iepriekšējā solī

2 - arduino ADC izšķirtspēja ir zemāka par to, kas mums nepieciešams, lai noteiktu nelielu sprieguma starpību

3 - arduino (5V) sprieguma atsauce ir pārāk augsta, lai mazās sprieguma izmaiņas visā diodē

Tātad, ja jūs izmantosit šo iestatījumu kā temperatūras sensoru, jums jāapzinās, ka, lai gan tas ir lēts un ērts, tas nav precīzs, taču tas var dot jums ļoti labu priekšstatu par jūsu sistēmas temperatūru PCB vai uzstādīts pie motora utt.…

Šī pamācība ir paredzēta, lai izmantotu pēc iespējas mazāk komponentu. Bet, ja vēlaties iegūt visprecīzākos šīs idejas rezultātus, varat veikt dažas izmaiņas:

1 - pievienojiet dažus pastiprinājumus un filtrēšanas posmus, izmantojot op -amp, kā šajā saitē2 - izmantojiet zemāku iekšējo analogo atskaites kontrolieri kā STM32F103C8 plates ar 3,3 voltu analogo atskaites spriegumu (sk. 4. punktu) 3 - izmantojiet iekšējo 1,1 V analogo atsauci arduino, taču ņemiet vērā, ka nevienam arduino analogajam tapam nevar pievienot vairāk par 1,1 voltu.

iestatīšanas funkcijā varat pievienot šo rindu:

analogReference (INTERNAL);

4 - Izmantojiet mikrokontrolleru ar augstāku ADC izšķirtspēju kā STM32F103C8 ar 12 bitu ADC izšķirtspēju. Tātad, īsumā, šī arduino balstītā iestatīšana var sniegt jauku pārskatu par jūsu sistēmas temperatūru, bet ne tik precīzus rezultātus (aptuveni 4,88 mV/nolasījums)

STM32F103C8 iestatīšana dotu jums diezgan precīzu rezultātu, jo tai ir augstāks 12 bitu ADC un zemāka 3,3 V analogā atsauces vērtība (aptuveni 0,8 mV/nolasījums)

Nu tas tā !!: D

Ieteicams: