INHOUDSOPGAWE:

DIY temperatuursensor met een diode: 3 stappe
DIY temperatuursensor met een diode: 3 stappe

Video: DIY temperatuursensor met een diode: 3 stappe

Video: DIY temperatuursensor met een diode: 3 stappe
Video: 3 alternatieven die u kunt gebruiken in plaats van de temperatuursensor (NTC) 2024, November
Anonim
DIY temperatuursensor met een diode
DIY temperatuursensor met een diode
DIY temperatuursensor met een diode
DIY temperatuursensor met een diode

As een van die feite oor PN-aansluitings is dat hul spanningsval na vore verander volgens die verbygaande stroom en die aansluitingstemperatuur, ons gaan dit gebruik om 'n eenvoudige goedkoop temperatuursensor te maak.

Hierdie opstelling word algemeen gebruik in baie geïntegreerde kringe om die interne temperatuur en baie temperatuursensors te meet, as die beroemde LM35 wat op hierdie eienskap gebaseer is.

Die voorwaartse spanningsval van 'n diode (wat 'n enkele PN-aansluiting is) verander namate die hoeveelheid stroom wat daardeur beweeg, verander, ook as die temperatuur van die diode verander, sal die spanningsval verander (namate die temperatuur toeneem, sal die vorentoe daling neem af met 'n waarde van (1,0 milliVolts tot 2,0 milliVolts vir silikon diodes en 2,5 milliVolts vir germanium diodes).

Dus, deur 'n konstante stroom deur die diode te laat beweeg, moet die daling van die voorwaartse spanning nou slegs wissel volgens die temperatuur van die diode.

Voorrade

1 - 1n4007 diode #12 - 1 Kohm -weerstand #13 - Arduino -bord

Stap 1: Kringdiagram

Stroombaandiagram
Stroombaandiagram

Soos u in die skema kan sien, is dit baie eenvoudig. Deur die diode in serie te verbind met 'n stroombeperkende weerstand en 'n stabiele spanningsbron, kan ons 'n ru -konstante stroombron verkry, sodat die gemete spanning oor die diode slegs sal wissel as gevolg van die temperatuurverandering. te laag dat daar baie stroom deur die diode gaan en 'n merkbare selfverhitting in die diode maak, ook nie 'n baie hoë weerstand nie, sodat die stroom wat verbygaan nie genoeg is om 'n lineêre verhouding tussen die voorwaartse spanning en die temperatuur te handhaaf nie.

'n Ohmweerstand van 1 kilo met 'n 5V -toevoer behoort 'n diode van 4 milliAmpere tot gevolg te hê, wat 'n voldoende waarde vir hierdie doel is. I (diode) = VCC / (Rseries + Rdiode)

Stap 2: Kodering

Ons moet in gedagte hou dat daar in die kode 'n paar waardes is om die beter resultate te kry, soos:

1 - VCC_Voltage: aangesien die analogRead () -waarde afhang van die VCC van die ATmega -chip, moet ons dit by die vergelyking voeg nadat ons dit op die arduino -bord gemeet het.

2 - V_OLD_0_C: die voorwaartse spanningsval van die gebruikte diode teen 'n stroom van 4 mA en 'n temperatuur van 0 Celsius

3 - Temperatuur_koëffisiënt: die temperatuurgradiënt van u diode (beter om van die datablad af te haal) of u kan dit meet met behulp van hierdie vergelyking: Vneu - Vold = K (Tew - Told)

waar:

Nuut = nuut gemete drukspanning na verhitting van die diode

Vold = gemeten drukspanning by kamertemperatuur

Nuwe = die temperatuur waarna die diode verhit is

Vertel = die ou kamertemperatuur waarby Vold gemeet is

K = Temperature_Coefficient ('n negatiewe waarde wat wissel tussen -1.0 tot -2.5 milliVolt) Uiteindelik kan u die kode nou oplaai en u temperatuurresultate kry.

#define Sens_Pin A0 // PA0 vir STM32F103C8 -bord

dubbel V_OLD_0_C = 690,0; // 690 mV Voorspanning by 0 Celsius by 4 mA toetsstroom

dubbel V_NEW = 0; // Nuwe voorspanning by kamertemperatuur by 4 mA toetsstroom dubbel Temperatuur = 0,0; // Kamer berekende temperatuur dubbel Temperature_Coefficient = -1.6; //-1.6 mV verandering per graad Celsius (-2.5 vir germanium diodes), beter om uit die diode datablad dubbel VCC_Voltage = 5010.0 te kry; // Spanning teenwoordig by die 5V -spoor van die arduino in milliVolt (benodig vir beter akkuraatheid) (3300.0 vir stm32)

ongeldige opstelling () {

// sit u opstellingskode hier om een keer te hardloop: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

leemte -lus () {

// sit u hoofkode hier om herhaaldelik te hardloop: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024.0; // deel met 4,0 as u 'n 12 -bits ADC -temperatuur gebruik = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

Reeks.afdruk (temperatuur); Serial.println ("C");

vertraging (500);

}

Stap 3: Kry beter waardes

Kry beter waardes
Kry beter waardes
Kry beter waardes
Kry beter waardes

Ek dink dit is raadsaam om 'n betroubare temperatuurmeetapparaat by u te hê wanneer u hierdie projek doen.

u kan sien dat daar 'n merkbare fout is by die metings wat tot 3 of 4 grade Celsius kan kom, so waar kom die fout vandaan?

1 - u moet moontlik die veranderlikes wat in die vorige stap genoem is, aanpas

2 - die ADC -resolusie van die arduino is laer as wat ons nodig het om die klein spanningsverskil op te spoor

3 - die spanningsverwysing van die arduino (5V) is te hoog vir hierdie klein spanningsverandering oor die diode

As u hierdie opstelling as 'n temperatuursensor gaan gebruik, moet u egter weet dat dit goedkoop en handig is, maar dit is nie akkuraat nie, maar dit kan u 'n baie goeie idee gee van die temperatuur van u stelsel. PCB of gemonteer op motor wat loop, ens …

Hierdie instruksies is bedoel om die minste moontlike komponente te gebruik, maar as u die akkuraatste resultate van hierdie idee wil verkry, kan u 'n paar veranderinge aanbring:

1 - voeg 'n paar versterkings en filterfases by met op -ampère soos in hierdie skakel2 - gebruik 'n laer interne analoge verwysingsbeheerder as die STM32F103C8 -borde met 3.3 Volt analoog verwysingspanning (sien punt 4) 3 - gebruik die interne 1.1 V analoge verwysing in die arduino, maar wees bewus daarvan dat u nie meer as 1,1 Volt aan enige van die arduino analoog penne kan koppel nie.

u kan hierdie reël byvoeg in die opstelfunksie:

analogReference (INTERNE);

4 - Gebruik 'n mikrobeheerder met 'n hoër resolusie ADC as STM32F103C8 met 'n 12 -bits ADC -resolusie So in 'n neutedop kan hierdie op arduino gebaseerde opstelling 'n goeie oorsig gee van die temperatuur van u stelsel, maar nie so akkurate resultate nie (ongeveer 4,88 mV/lees)

die opstelling van STM32F103C8 sal u 'n redelik akkurate resultaat gee, aangesien dit 'n hoër 12-bis ADC en 'n laer analoog verwysingswaarde van 3.3V (ongeveer 0.8 mV/lesing) het

Wel, dit is dit !!: D

Aanbeveel: