Turinys:

„Pasidaryk pats“temperatūros jutiklis naudojant vieną diodą: 3 žingsniai
„Pasidaryk pats“temperatūros jutiklis naudojant vieną diodą: 3 žingsniai

Video: „Pasidaryk pats“temperatūros jutiklis naudojant vieną diodą: 3 žingsniai

Video: „Pasidaryk pats“temperatūros jutiklis naudojant vieną diodą: 3 žingsniai
Video: Arduino pamoka Nr. 7: Išmatuokime temperatūrą – Jutiklis TMP35 2024, Liepa
Anonim
„Pasidaryk pats“temperatūros jutiklis naudojant vieną diodą
„Pasidaryk pats“temperatūros jutiklis naudojant vieną diodą
„Pasidaryk pats“temperatūros jutiklis naudojant vieną diodą
„Pasidaryk pats“temperatūros jutiklis naudojant vieną diodą

Taigi, kaip vienas iš faktų apie PN jungtis yra tai, kad jų priekinės įtampos kritimas kinta priklausomai nuo praeinančios srovės ir sankryžos temperatūros, tai panaudosime paprastam pigiam temperatūros jutikliui sukurti.

Ši sąranka dažniausiai naudojama daugelyje integruotų grandinių, kad būtų galima išmatuoti jos vidinę temperatūrą ir daugelį temperatūros jutiklių, kaip žinomą LM35, pagrįstą šia savybe.

Tiesiog diodo (kuris yra viena PN jungtis) priekinės įtampos kritimas keičiasi keičiantis per jį einančios srovės kiekiui, taip pat kintant diodo temperatūrai, kinta ir įtampos kritimas (didėjant temperatūrai, sumažėjimas sumažėja reikšme (1,0 milivolto iki 2,0 milivolto silicio diodams ir 2,5 milivolto germanio diodams).

Taigi, praleidžiant pastovią srovę per diodą, priekinės įtampos kritimas dabar turėtų skirtis tik atsižvelgiant į diodo temperatūrą. Mums tiesiog reikia dabar išmatuoti diodo priekinę įtampą, taikyti keletą paprastų lygčių ir voilà čia yra jūsų temperatūros jutiklis !!!

Prekės

1 - 1n4007 diodas #12 - 1 Kohm rezistorius #13 - „Arduino“plokštė

1 žingsnis: grandinės schema

Grandinės schema
Grandinės schema

Kaip matote schemoje, tai labai paprasta. nuosekliai jungdami diodą su srovės ribojimo rezistoriumi ir stabiliu įtampos šaltiniu, galime gauti neapdorotą pastovios srovės šaltinį, todėl išmatuota įtampa per diodą skirsis tik dėl temperatūros pokyčių. Įsitikinkite, kad rezistoriaus vertė nėra per maža tiek srovės praeina per diodą ir pastebimai savaime įkaista diodas, taip pat nėra labai didelis rezistorius, todėl praeinančios srovės nepakanka, kad būtų išlaikytas tiesinis ryšys tarp priekinės įtampos ir temperatūros.

1 kg omo rezistorius su 5 V maitinimo šaltiniu turėtų sukelti 4 miliamperų diodo srovę, kuri yra pakankama šiam tikslui. I (diodas) = VCC / (Rseries + Rdiode)

2 žingsnis: kodavimas

Turime nepamiršti, kad norint gauti geresnių rezultatų, reikia keisti kai kurias kodo vertes, pvz.:

1 - VCC_Voltage: kadangi analogRead () reikšmė priklauso nuo ATmega mikroschemos VCC, turime ją pridėti prie lygties, išmatavę arduino plokštėje.

2 - V_OLD_0_C: naudojamo diodo priekinės įtampos kritimas esant 4 mA srovei ir 0 Celsijaus temperatūrai

3 - Temperatūros koeficientas: jūsų diodo temperatūros gradientas (geriau gauti iš duomenų lapo) arba galite jį išmatuoti naudodami šią lygtį: Vnew - Vold = K (Tnew - Told)

kur:

Vnew = naujai išmatuota kritimo įtampa įkaitinus diodą

Vold = išmatuota kritimo įtampa tam tikroje kambario temperatūroje

Tnew = temperatūra, iki kurios buvo įkaitintas diodas

Pasakyta = sena kambario temperatūra, pagal kurią buvo matuojamas Voldas

K = Temperatūros koeficientas (neigiama reikšmė svyruoja nuo -1,0 iki -2,5 milivoltų) Galiausiai dabar galite įkelti kodą ir gauti savo temperatūros rezultatus.

#define Sens_Pin A0 // PA0, skirtas STM32F103C8 plokštei

dvigubas V_OLD_0_C = 690,0; // 690 mV Į priekinę įtampą esant 0 Celsijaus esant 4 mA bandymo srovei

dvigubas V_NEW = 0; // Nauja priekinė įtampa kambario temperatūroje esant 4 mA bandymo srovei dviguba Temperatūra = 0,0; // Kambario apskaičiuota temperatūra dviguba Temperature_Coefficient = -1,6; //-1,6 mV pokytis Celsijaus laipsnyje (-2,5 germanio diodams), geriau gauti iš diodo duomenų lapo dvigubo VCC_Voltage = 5010,0; // Įtampa, esanti arduino 5 V bėgyje, milivoltais (reikalinga geresniam tikslumui) (3300,0 stm32)

void setup () {

// įdėkite čia savo sąrankos kodą, kad paleistumėte vieną kartą: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

void loop () {

// įdėkite čia savo pagrindinį kodą, kad jis būtų paleistas pakartotinai: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024,0; // padalinkite iš 4,0, jei naudojate 12 bitų ADC temperatūrą = (((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

Serijinis atspaudas (temperatūra); Serial.println ("C");

vėlavimas (500);

}

3 žingsnis: gerinkite vertybes

Geresnės vertybės
Geresnės vertybės
Geresnės vertybės
Geresnės vertybės

Manau, kad atliekant šį projektą patartina šalia turėti patikimą temperatūros matavimo prietaisą.

matote, kad rodmenyse yra pastebima klaida, kuri gali pakilti iki 3 ar 4 laipsnių Celsijaus, taigi iš kur ši klaida?

1 - gali tekti koreguoti ankstesniame žingsnyje minėtus kintamuosius

2 - arduino ADC skiriamoji geba yra mažesnė, nei mums reikia mažam įtampos skirtumui aptikti

3 - arduino įtampos atskaitos taškas (5 V) yra per didelis šiam mažam įtampos kitimui per diodą

Taigi, jei ketinate naudoti šią sąranką kaip temperatūros jutiklį, turėtumėte žinoti, kad nors ji yra pigi ir patogi, ji nėra tiksli, tačiau ji gali suteikti jums labai gerą supratimą apie jūsų sistemos temperatūrą. PCB arba pritvirtintas prie veikiančio variklio ir tt …

Ši instrukcija skirta naudoti mažiausią įmanomą komponentų kiekį. Bet jei norite gauti kuo tikslesnius šios idėjos rezultatus, galite atlikti keletą pakeitimų:

1 - pridėkite kai kuriuos stiprinimus ir filtravimo etapus, naudodami op -amp, kaip šioje nuorodoje2 - naudokite žemesnį vidinį analoginį kontrolinį valdiklį kaip STM32F103C8 plokštes su 3,3 voltų analogine etalonine įtampa (žr. 4 punktą) 3 - naudokite vidinę 1,1 V analoginę nuorodą arduino, tačiau atminkite, kad prie bet kurio arduino analoginio kaiščio negalite prijungti daugiau kaip 1,1 volto.

sąrankos funkcijoje galite pridėti šią eilutę:

analogReference (INTERNAL);

4 - Naudokite mikrovaldiklį, turintį didesnę skiriamąją gebą ADC kaip STM32F103C8, kuris turi 12 bitų ADC skiriamąją gebą. Taigi, trumpai tariant, ši „arduino“sąranka gali suteikti puikią jūsų sistemos temperatūros apžvalgą, bet ne tokius tikslius rezultatus (maždaug 4,88 mV/nuskaitymas)

STM32F103C8 sąranka duos jums gana tikslų rezultatą, nes ji turi didesnį 12 bitų ADC ir mažesnę 3,3 V analoginę atskaitos vertę (maždaug 0,8 mV/nuskaitymas)

Na, tiek to !!: D

Rekomenduojamas: