Sisällysluettelo:

DIY -lämpötila -anturi yhdellä diodilla: 3 vaihetta
DIY -lämpötila -anturi yhdellä diodilla: 3 vaihetta

Video: DIY -lämpötila -anturi yhdellä diodilla: 3 vaihetta

Video: DIY -lämpötila -anturi yhdellä diodilla: 3 vaihetta
Video: Tee 3-vaiheinen tasasuuntaaja yhdestä vaiheesta 2024, Heinäkuu
Anonim
DIY -lämpötila -anturi yhdellä diodilla
DIY -lämpötila -anturi yhdellä diodilla
DIY -lämpötila -anturi yhdellä diodilla
DIY -lämpötila -anturi yhdellä diodilla

Joten yksi PN-risteyksiä koskevista tosiasioista on, että niiden etujännitehäviö muuttuu kulkevan virran ja myös risteyslämpötilan mukaan, aiomme käyttää tätä yksinkertaisen halvan lämpötila-anturin valmistamiseen.

Tätä asetusta käytetään yleisesti monissa integroiduissa piireissä sisäisen lämpötilan ja monien lämpötila -antureiden mittaamiseen, kuten kuuluisa LM35, joka perustuu tähän ominaisuuteen.

Yksinkertaisesti diodin (joka on yksittäinen PN-risteys) eteenpäin suuntautuva jännitehäviö muuttuu sen läpi kulkevan virran määrän muuttuessa, myös diodin lämpötilan muuttuessa jännitehäviö muuttuu (Kun lämpötila nousee, eteenpäin pudotus pienenee arvolla (1,0 milliVoltti 2,0 milliVoltia piidiodien osalta ja 2,5 milliVoltti germaniumdiodien osalta).

Joten siirtämällä vakiovirta diodin läpi eteenpäin suuntautuvan jännitteen pudotuksen pitäisi nyt vain vaihdella diodin lämpötilan mukaan. Meidän tarvitsee vain nyt mitata diodin etujännite, soveltaa joitain yksinkertaisia yhtälöitä ja voilà tässä on lämpötila -anturi !!!

Tarvikkeet

1 - 1n4007 diodi #12 - 1 Kohm vastus #13 - Arduino -levy

Vaihe 1: Piirikaavio

Piirikaavio
Piirikaavio

Kuten kaaviosta näet, se on hyvin yksinkertainen. yhdistämällä diodi sarjaan virranrajoitusvastuksen ja vakaan jännitelähteen kanssa, voimme saada raakavakiovirtalähteen, joten mitattu jännite diodin poikki vaihtelee vain lämpötilan muutoksen vuoksi. liian alhainen, että paljon virtaa kulkee diodin läpi ja aiheuttaa huomattavan itselämpenemisen diodissa, ei myöskään kovin suuri vastus, joten virran kulku ei riitä pitämään lineaarista suhdetta eteenpäin jännitteen ja lämpötilan välillä.

1 kilon ohmin vastuksen, jossa on 5 V: n syöttö, pitäisi saada 4 milliampeerin diodivirta, joka on riittävä arvo tähän tarkoitukseen. I (diodi) = VCC / (Rseries + Rdiode)

Vaihe 2: Koodaus

Meidän on pidettävä mielessä, että koodissa on joitain arvoja, joita on parannettava saadaksesi parempia tuloksia, kuten:

1 - VCC_Voltage: koska analogRead () -arvo riippuu ATmega -sirun VCC: stä, meidän on lisättävä se yhtälöön sen jälkeen, kun se on mitattu arduino -kortilla.

2 - V_OLD_0_C: käytetyn diodin etujännitehäviö 4 mA: n virralla ja 0 celsiusasteen lämpötilassa

3 - Lämpötila_kerroin: diodisi lämpötilagradientti (parempi saada taulukosta) tai voit mitata sen käyttämällä tätä yhtälöä: Vnew - Vold = K (Tnew - Told)

missä:

Vnew = hiljattain mitattu pudotusjännite diodin lämmityksen jälkeen

Vold = mitattu pudotusjännite jossain huonelämpötilassa

Tnew = lämpötila, johon diodi kuumennettiin

Told = vanha huonelämpötila, jossa Vold mitattiin

K = Lämpötilakerroin (negatiivinen arvo vaihtelee välillä -1,0 --2,5 milliVolttia) Lopuksi voit nyt ladata koodin ja saada lämpötilan tulokset.

#define Sens_Pin A0 // PA0 STM32F103C8 -kortille

kaksinkertainen V_OLD_0_C = 690,0; // 690 mV Jännite eteenpäin 0 celsiusasteessa 4 mA: n testivirralla

kaksinkertainen V_NEW = 0; // Uusi lähtöjännite huoneenlämmössä 4 mA: n testivirralla kaksinkertainen Lämpötila = 0,0; // Huoneen laskettu lämpötila kaksinkertainen Lämpötila_kerroin = -1,6; //-1,6 mV muutos celsiusastetta kohden (-2,5 germaniumdiodille), parempi saada dioditiedot kaksinkertaiselta VCC_Voltage = 5010,0; // Jännite arduinon 5V -kiskossa millivoltteina (vaaditaan parempaa tarkkuutta varten) (3300,0 stm32: lle)

void setup () {

// laita asennuskoodi tähän, jotta se voidaan suorittaa kerran: pinMode (Sens_Pin, INPUT); Sarja.alku (9600); }

void loop () {

// laita pääkoodisi tänne toistettavaksi: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024,0; // jaa 4,0, jos käytät 12 -bittistä ADC -lämpötilaa = (((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Lämpötila =");

Sarjajälki (lämpötila); Serial.println ("C");

viive (500);

}

Vaihe 3: Paranna arvoja

Paremmat arvot
Paremmat arvot
Paremmat arvot
Paremmat arvot

Mielestäni on suositeltavaa, että luotettava lämpötilan mittauslaite on vieressä, kun teet tätä projektia.

näet, että lukemissa on havaittavissa oleva virhe, joka voi nousta 3 tai 4 celsiusasteeseen, joten mistä tämä virhe tulee?

1 - saatat joutua säätämään edellisessä vaiheessa mainittuja muuttujia

2 - arduinon ADC -resoluutio on pienempi kuin mitä tarvitsemme pienen jännite -eron havaitsemiseksi

3 - Arduino -jänniteohje (5V) on liian korkea tähän pieneen jännitteen muutokseen diodin poikki

Joten jos aiot käyttää tätä asetusta lämpötila -anturina, sinun tulee olla tietoinen siitä, että vaikka se on halpaa ja kätevää, se ei ole tarkka, mutta se voi antaa sinulle erittäin hyvän käsityksen järjestelmän lämpötilasta, joko Piirilevy tai asennettu käynnissä olevaan moottoriin jne …

Tämä ohje on tarkoitettu käyttämään mahdollisimman vähän komponentteja, mutta jos haluat saada tarkimmat tulokset tästä ideasta, voit tehdä joitain muutoksia:

1 - lisää joitakin vahvistuksia ja suodatusvaiheita käyttämällä op -vahvistimia kuten tässä linkissä2 - käytä alempaa sisäistä analogista referenssisäädintä STM32F103C8 -levyinä, joissa on 3,3 voltin analoginen vertailujännite (katso kohta 4) 3 - käytä sisäistä 1,1 V: n analogista ohjearvoa arduino, mutta muista, että et voi liittää enempää kuin 1,1 volttia mihinkään arduino -analogiseen nastaan.

voit lisätä tämän rivin asetustoimintoon:

analogReference (INTERNAL);

4 - Käytä mikro -ohjainta, jolla on korkeampi resoluutio ADC, kuten STM32F103C8, jolla on 12 -bittinen ADC -tarkkuus.

STM32F103C8-asetus antaisi sinulle melko tarkan tuloksen, koska sillä on suurempi 12-bittinen ADC ja pienempi 3,3 V: n analoginen viitearvo (noin 0,8 mV/lukema)

No siinäpä se !!: D

Suositeltava: