Kazalo:

Temperaturni senzor DIY z eno diodo: 3 koraki
Temperaturni senzor DIY z eno diodo: 3 koraki

Video: Temperaturni senzor DIY z eno diodo: 3 koraki

Video: Temperaturni senzor DIY z eno diodo: 3 koraki
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Julij
Anonim
Temperaturni senzor DIY z uporabo ene diode
Temperaturni senzor DIY z uporabo ene diode
Temperaturni senzor DIY z uporabo ene diode
Temperaturni senzor DIY z uporabo ene diode

Eno od dejstev o PN-stičiščih je, da se njihov padec napetosti naprej spreminja glede na prehodni tok in tudi na temperaturo stičišča, to bomo uporabili za izdelavo preprostega poceni temperaturnega senzorja.

Ta nastavitev se običajno uporablja v številnih integriranih vezjih za merjenje njene notranje temperature in številnih temperaturnih senzorjev kot slavni LM35, ki temelji na tej lastnosti.

Preprosto padec napetosti naprej diode (ki je en sam PN-stik) se spreminja s spreminjanjem količine toka, ki teče skozi njo, prav tako pa se s spreminjanjem temperature diode padec napetosti spreminja (s povečanjem temperature se padec se zmanjša za vrednost (1,0 milivoltov na 2,0 milivoltov za silicijeve diode in 2,5 milivoltov za germanijeve diode).

Tako bi se s prehodom konstantnega toka skozi diodo sprednji padec napetosti moral spreminjati le glede na temperaturo diode. Zdaj moramo samo izmeriti napetost diode naprej, uporabiti nekaj preprostih enačb in voilà tukaj je vaš temperaturni senzor !!!

Zaloge

1 - 1n4007 dioda #12 - 1 Kohm upor #13 - plošča Arduino

1. korak: Shema vezja

Shema vezja
Shema vezja

Kot lahko vidite na shemi, je zelo preprosto. s serijsko povezavo diode s tokovno omejevalnim uporom in stabilnim virom napetosti lahko dobimo surov vir konstantnega toka, zato se bo izmerjena napetost na diodi spreminjala le zaradi temperaturne spremembe. Prepričajte se, da vrednost upora ni prenizko, da skozi diodo prehaja veliko toka in povzroči opazno samogrevanje diode, prav tako ni zelo visok upor, zato prehod toka ni dovolj za vzdrževanje linearnega razmerja med napetostjo naprej in temperaturo.

1 kilo ohmski upor z napajanjem 5 V bi moral povzročiti tok diode 4 miliAmpere, kar je za ta namen zadostna vrednost. I (dioda) = VCC / (Rseries + Rdiode)

2. korak: Kodiranje

Upoštevati moramo, da je treba v kodi spremeniti nekaj vrednosti, da dobimo boljše rezultate, kot so:

1 - VCC_Voltage: ker je vrednost analogRead () odvisna od VCC čipa ATmega, jo moramo dodati v enačbo po merjenju na arduino plošči.

2 - V_OLD_0_C: padec napetosti naprej uporabljene diode pri toku 4 mA in temperaturi 0 Celzija

3 - Temperatura_koeficient: temperaturni gradient vaše diode (bolje, da dobite iz podatkovnega lista) ali pa ga izmerite s to enačbo: Vnew - Vold = K (Tnew - Told)

kje:

Vnew = na novo izmerjena padna napetost po segrevanju diode

Vold = izmerjena padna napetost pri neki sobni temperaturi

Tnew = temperatura, pri kateri je bila dioda segreta

Told = stara sobna temperatura, pri kateri je bil Vold izmerjen

K = Temperaturni_koeficient (negativna vrednost se giblje med -1,0 do -2,5 miliVoltov) Končno lahko zdaj naložite kodo in dobite rezultate temperature.

#define Sens_Pin A0 // PA0 za ploščo STM32F103C8

dvojno V_OLD_0_C = 690,0; // 690 mV Napetost naprej pri 0 Celzija pri 4 mA preskusnem toku

dvojno V_NEW = 0; // Nova napetost naprej pri sobni temperaturi pri 4 mA preskusni tok dvojna temperatura = 0,0; // sobna izračunana temperatura dvojna Temperature_Coefficient = -1,6; //-1,6 mV sprememba na stopinjo Celzija (-2,5 za germanijeve diode), bolje dobiti iz podatkovnega lista diode dvojni VCC_Voltage = 5010,0; // Napetost, prisotna na 5V tirnici arduina v miliVoltih (potrebno za večjo natančnost) (3300.0 za stm32)

void setup () {

// tukaj vstavite nastavitveno kodo, ki jo želite zagnati enkrat: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

void loop () {

// vnesite svojo glavno kodo sem, da se večkrat zažene: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024.0; // delite s 4,0, če uporabljate 12 -bitno temperaturo ADC = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

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

zamuda (500);

}

Korak: Pridobite boljše vrednosti

Pridobivanje boljših vrednot
Pridobivanje boljših vrednot
Pridobivanje boljših vrednot
Pridobivanje boljših vrednot

Mislim, da je pri tem projektu priporočljivo imeti poleg sebe zaupanja vredno napravo za merjenje temperature.

vidite, da je pri odčitkih opazna napaka, ki lahko doseže 3 ali 4 stopinje Celzija, od kod prihaja ta napaka?

1 - morda boste morali spremeniti spremenljivke, omenjene v prejšnjem koraku

2 - ločljivost ADC -ja arduina je nižja od tiste, ki jo potrebujemo za zaznavanje majhne napetostne razlike

3 - referenčna napetost arduina (5V) je previsoka za to majhno spremembo napetosti na diodi

Torej, če boste to nastavitev uporabljali kot temperaturni senzor, se morate zavedati, da čeprav je poceni in priročen, ni natančen, vendar vam lahko zelo dobro predstavi temperaturo vašega sistema, bodisi da je na Tiskana vezja ali pritrjena na delujoči motor itd …

Ta pouk naj bi uporabil najmanjšo možno količino komponent, če pa želite iz te ideje dobiti najbolj natančne rezultate, lahko naredite nekaj sprememb:

1 - dodajte nekaj ojačitev in filtrirnih stopenj z uporabo op -ojačevalnikov, kot je na tej povezavi 2 - uporabite nižji notranji analogni referenčni krmilnik kot plošče STM32F103C8 s 3,3 V analogno referenčno napetostjo (glejte točko 4) 3 - uporabite interno 1,1 V analogno referenco v arduino, vendar se zavedajte, da na noben analogni zatič arduino ne morete priključiti več kot 1,1 volta.

to vrstico lahko dodate v nastavitveno funkcijo:

analogna referenca (NOTRANJA);

4 - Uporabite mikrokrmilnik, ki ima ADC višje ločljivosti kot STM32F103C8, ki ima 12 -bitno ločljivost ADC -ja Tako lahko na kratko ta nastavitev, ki temelji na arduinu, daje lep pregled nad temperaturo vašega sistema, vendar ne tako natančne rezultate (približno 4,88 mV/odčitek)

nastavitev STM32F103C8 bi vam dala precej natančen rezultat, saj ima višji 12-bitni ADC in nižjo analogno referenčno vrednost 3,3 V (približno 0,8 mV/branje)

No, to je to !!: D

Priporočena: