Tartalomjegyzék:

DIY hőmérséklet érzékelő egy dióda használatával: 3 lépés
DIY hőmérséklet érzékelő egy dióda használatával: 3 lépés

Videó: DIY hőmérséklet érzékelő egy dióda használatával: 3 lépés

Videó: DIY hőmérséklet érzékelő egy dióda használatával: 3 lépés
Videó: Lakáselosztó doboz / Kismegszakító doboz/szekrény 3 fázis 2024, November
Anonim
DIY hőmérséklet érzékelő egy dióda használatával
DIY hőmérséklet érzékelő egy dióda használatával
DIY hőmérséklet érzékelő egy dióda használatával
DIY hőmérséklet érzékelő egy dióda használatával

Tehát mivel a PN-csomópontok egyik ténye az, hogy előremenő feszültségcsökkenésük az átmenő áramnak és a csomópont hőmérsékletének megfelelően is változik, ezt egy egyszerű, olcsó hőmérséklet-érzékelő készítésére fogjuk használni.

Ezt a beállítást gyakran használják sok integrált áramkörben a belső hőmérséklet és számos hőmérséklet -érzékelő mérésére, mint a híres LM35, amely ezen a tulajdonságon alapul.

Egyszerűen a dióda előremenő feszültségcsökkenése (amely egyetlen PN-csomópont) változik az áthaladó áram mennyiségének változásával, valamint a dióda hőmérsékletének változásával a feszültségesés is változik (A hőmérséklet növekedésével az előremenő a csepp érték (1,0 milliVolt - 2,0 milliVolt szilícium diódák esetén és 2,5 milliVolt germánium diódák esetén) csökken.

Tehát, ha állandó áramot vezetünk át a diódán, az előremenő feszültségcsökkenésnek csak a dióda hőmérsékletétől függően kell változnia. Most csak meg kell mérnünk a dióda előremenő feszültségét, alkalmazzunk néhány egyszerű egyenletet, és itt van a hőmérséklet -érzékelő !!!

Kellékek

1 - 1n4007 dióda #12 - 1 Kohm ellenállás #13 - Arduino kártya

1. lépés: Áramköri diagram

Kördiagramm
Kördiagramm

Amint a vázlatban látható, nagyon egyszerű. ha a diódát sorba kapcsoljuk egy áramkorlátozó ellenállással és egy stabil feszültségforrással, nyers állandó áramforrást kaphatunk, így a diódán mért feszültség csak a hőmérsékletváltozás miatt változik. Győződjön meg arról, hogy az ellenállás értéke nem túl alacsony, hogy mennyi áram halad át a diódán, és észrevehetően önmelegszik a diódában, és nem túl nagy ellenállás, így az áram áthaladása nem elegendő a lineáris kapcsolat fenntartásához az előremenő feszültség és a hőmérséklet között.

egy 1 kilométeres ohmos ellenállás 5 V -os tápellátással 4 milliAmpere diódaáramot eredményez, ami elegendő erre a célra. I (dióda) = VCC / (Rseries + Rdiode)

2. lépés: Kódolás

Szem előtt kell tartanunk, hogy a jobb eredmények elérése érdekében néhány értéket módosítani kell a kódon:

1 - VCC_Voltage: mivel az analogRead () értéke az ATmega chip VCC -jétől függ, akkor hozzá kell adnunk az egyenlethez, miután megmértük az arduino táblán.

2 - V_OLD_0_C: a használt dióda előremenő feszültségesése 4 mA áramnál és 0 Celsius hőmérsékletnél

3 - Hőmérséklet_Coefficient: a dióda hőmérsékleti gradiense (jobb, ha az adatlapról szerezzük be), vagy ezt az egyenletet használva mérheti: Vnew - Vold = K (Tnew - Told)

ahol:

Vnew = újonnan mért cseppfeszültség a dióda melegítése után

Vold = mért cseppfeszültség bizonyos szobahőmérsékleten

Tnew = az a hőmérséklet, amelyre a diódát felmelegítették

Told = a régi szobahőmérséklet, amelyen Voldot mérték

K = Hőmérséklet -együttható (negatív érték -1,0 és -2,5 milliVolt között változik) Végül most feltöltheti a kódot, és megtekintheti a hőmérsékleti eredményeket.

#define Sens_Pin A0 // PA0 az STM32F103C8 kártyához

kettős V_OLD_0_C = 690,0; // 690 mV Előremenő feszültség 0 Celsius -foknál 4 mA tesztáramnál

kettős V_NEW = 0; // Új előremenő feszültség szobahőmérsékleten 4 mA tesztáramon dupla Hőmérséklet = 0,0; // A szoba számított hőmérséklete dupla Hőmérséklet_Coefficient = -1,6; //-1,6 mV változás Celsius-fokonként (-2,5 germánium diódák esetén), jobb, ha a dióda adatlapjáról kapjuk dupla VCC_Voltage = 5010,0; // Az arduino 5V -os sínén lévő feszültség milliVoltban (a jobb pontosság érdekében szükséges) (3300,0 az stm32 esetén)

void setup () {

// tegye ide a beállítási kódot, hogy egyszer fusson: pinMode (Sens_Pin, INPUT); Sorozat.kezdet (9600); }

void loop () {

// tegye ide a fő kódot az ismételt futtatáshoz: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024,0; // ossza meg 4,0 -vel, ha 12 bites ADC hőmérsékletet használ (= ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

Soros.nyomtatás (hőmérséklet); Serial.println ("C");

késleltetés (500);

}

3. lépés: Az értékek javítása

Egyre jobb értékek
Egyre jobb értékek
Egyre jobb értékek
Egyre jobb értékek

Azt hiszem, tanácsos, ha egy megbízható hőmérsékletmérő készülék van melletted, amikor ezt a projektet végzed.

láthatja, hogy észrevehető hiba van a leolvasásokban, amely elérheti a 3 vagy 4 Celsius fokot, így honnan származik ez a hiba?

1 - lehet, hogy módosítania kell az előző lépésben említett változókat

2 - az arduino ADC felbontása alacsonyabb, mint amire szükségünk van a kis feszültségkülönbség észleléséhez

3 - az arduino feszültségreferenciája (5V) túl magas ahhoz a kis feszültségváltozáshoz a diódán

Tehát ha ezt a beállítást hőmérséklet -érzékelőként fogja használni, tudnia kell, hogy bár olcsó és praktikus, nem pontos, de nagyon jó képet adhat a rendszer hőmérsékletéről, akár NYÁK vagy futó motorra szerelve stb.

Ez az utasítás a lehető legkevesebb komponenst használja, de ha a lehető legpontosabb eredményeket szeretné elérni ezzel az ötlettel, akkor néhány változtatást megtehet:

1 - adjon hozzá néhány erősítést és szűrési fokozatot op -erősítők használatával, mint ebben a linkben2 - használjon alacsonyabb belső analóg referencia -vezérlőt, mint az STM32F103C8 kártyákat 3,3 V -os analóg referenciafeszültséggel (lásd a 4. pontot) 3 - használja a belső 1,1 V -os analóg referenciát a arduino, de ne feledje, hogy az arduino analóg érintkezők egyikéhez sem csatlakoztathat 1,1 voltnál nagyobb feszültséget.

ezt a sort hozzáadhatja a beállítási funkcióhoz:

analogReference (INTERNAL);

4 - Használjon STM32F103C8 néven nagyobb felbontású ADC -vel rendelkező mikrokontrollert, amely 12 bites ADC felbontással rendelkezik. Dióhéjban ez az arduino -alapú beállítás jó áttekintést adhat a rendszer hőmérsékletéről, de nem olyan pontos eredményeket (kb. 4,88 mV/leolvasás)

Az STM32F103C8 beállítás meglehetősen pontos eredményt ad, mivel magasabb 12 bites ADC-vel és alacsonyabb 3,3 V analóg referenciaértékkel rendelkezik (kb. 0,8 mV/leolvasás)

Hát ennyi !!: D

Ajánlott: