En aquest article, analitzarem els diferents tipus de sensors de temperatura i com es poden utilitzar cas per cas. La temperatura és un paràmetre físic que es mesura en graus. És una part essencial de qualsevol procés de mesura. Les àrees que requereixen mesures de temperatura precises inclouen la medicina, la investigació biològica, l'electrònica, la investigació de materials i el rendiment tèrmic dels productes elèctrics. Un dispositiu que s’utilitza per mesurar la quantitat d’energia calorífica que ens permet detectar canvis físics de temperatura es coneix com a sensor de temperatura. Són digitals i analògics.
Principals tipus de sensors
En general, hi ha dos mètodes per obtenir dades:
1. Contacte... Els sensors de temperatura de contacte estan en contacte físic amb un objecte o substància. Es poden utilitzar per mesurar la temperatura de sòlids, líquids o gasos.
2. Sense contacte... Els sensors de temperatura sense contacte detecten la temperatura interceptant part de l’energia infraroja emesa per un objecte o substància i detectant-ne la intensitat. Només es poden utilitzar per mesurar la temperatura en sòlids i líquids. No poden mesurar la temperatura dels gasos a causa de la seva incoloritat (transparència).
Regles de selecció del sensor
El sensor de temperatura per a calefacció per terra radiant es selecciona tenint en compte característiques com la potència, el tipus de coberta superior, el mètode d’instal·lació i els equips amb funcionalitats addicionals.
Potència
El valor ha de complir els requisits i la càrrega del sòl càlid. En cas contrari, el sensor no funcionarà correctament. Quan la potència de l'element calefactor és superior a la del propi regulador, és necessari instal·lar addicionalment un arrencador magnètic entre ells, per evitar danys al dispositiu a causa de l'augment de la càrrega.
Conjunt de funcions
El sòl càlid està controlat per una unitat elèctrica que us permet ajustar el funcionament dels elements calefactors. Els controladors moderns tenen funcions com iniciar i desactivar el sistema, ajustar les condicions de temperatura, així com configurar la freqüència de connexió i desconnexió de l’element calefactor.
Facilitat d'ús
Si creieu que no entendreu la programació, no hauríeu de comprar un dispositiu complex. Fins i tot tenint en compte totes les seves funcionalitats. Per exemple, a les persones grans els resulta bastant problemàtic tractar amb dispositius programables. És millor que triïn l’opció mecànica.
Fàcil de connectar
La documentació que s’acompanya del termòstat sempre indica com connectar el sensor de calefacció per terra radiant. Els terminals es troben a la vora d’un lateral de la unitat de control. Un cop connectats els cables elèctrics segons l’esquema, caldrà comprovar el rendiment del sistema de calefacció. Per fer-ho, mesureu la resistència als terminals del sensor de temperatura i del cable elèctric de calefacció, o bé connecteu un sòl calent i augmenteu els valors de temperatura de zero a l’indicador recomanat per SNIP, és a dir, fins a 30 ° C.
Aspecte
Un sensor tèrmic no només ha de ser funcionalment comprensible, sinó que també ha de ser atractiu en el disseny. Els poms moderns presenten una gran varietat de colors i formes. Podeu triar una opció que estigui en harmonia amb l'interior de l'habitació.
Tipus de sensors de temperatura
Hi ha molts tipus diferents de sensors de temperatura.Des del simple control d'encesa / apagada d'un dispositiu termostàtic fins a sistemes complexos de control de subministrament d'aigua, amb la funció d'escalfar-la, utilitzats en els processos de cultiu de plantes. Els dos tipus principals de sensors, de contacte i sense contacte, se subdivideixen en sensors resistius, de tensió i electromecànics. Els tres sensors de temperatura més utilitzats són:
- Termistors
- Termoparells de resistència
- Termoparell
Aquests sensors de temperatura difereixen els uns dels altres pel que fa als paràmetres operatius.
Dispositiu
Es tracta d’un termoparell (placa o vareta) format per cables que es connecten als terminals de l’element sensible.
Depenent de la informació de temperatura, la resistència de la part sensible canvia, respectivament, el senyal elèctric subministrat al termòstat. Així, es determina el valor absolut de la temperatura del medi.
Normalment, l'exterior (sensor de temperatura extern per a calefacció per terra radiant) es troba sota el revestiment del terra d'acabat i mesura els seus indicadors de temperatura. Intern (incorporat), situat dins del regulador i determina el nivell de calefacció d'aire.
El disseny dels sensors de temperatura es selecciona en funció de les característiques del sistema:
Termistor
Un termistor és una resistència sensible que canvia la seva resistència física amb la temperatura. Normalment, els termistors estan fets d’un material semiconductor ceràmic com el cobalt, el manganès o l’òxid de níquel i estan recoberts de vidre. Són petits discos segells plans que reaccionen relativament ràpidament a qualsevol canvi de temperatura.
A causa de les propietats semiconductores del material, els termistors tenen un coeficient de temperatura negatiu (NTC), és a dir, la resistència disminueix amb l’augment de la temperatura. Tot i això, també hi ha termistors PTC la resistència dels quals augmenta amb l’augment de la temperatura.
Horari de termistor
Avantatges dels termistors
- Alta velocitat de resposta als canvis de temperatura, precisió.
- Baix cost.
- Major resistència entre 2.000 i 10.000 ohms.
- Sensibilitat molt superior (~ 200 ohm / ° C) dins d'un rang de temperatura limitat de fins a 300 ° C.
Dependències de temperatura de la resistència
La dependència de la resistència a la temperatura s’expressa mitjançant la següent equació:
On A, B, C - són constants (proporcionades pels termes de càlcul), R - resistència en ohms, T - temperatura en Kelvin. Podeu calcular fàcilment el canvi de temperatura a partir d’un canvi de resistència o viceversa.
Com s'utilitza un termistor?
Els termistors es classifiquen pel seu valor resistiu a temperatura ambient (25 ° C). Un termistor és un dispositiu resistiu passiu, de manera que requereix la producció de control de la tensió de sortida actual. Com a regla general, es connecten en sèrie amb estabilitzadors adequats formant un divisor de tensió de xarxa.
Exemple: Penseu en un termistor amb un valor de resistència de 2,2 K a 25 ° C i 50 ohms a 80 ° C. El termistor es connecta en sèrie amb una resistència d'1 kΩ mitjançant una font de 5 V.
Per tant, la seva tensió de sortida es pot calcular de la següent manera:
A 25 ° C, RNTC = 2200 ohms;
A 80 ° C, RNTC = 50 ohms;
Tot i això, és important tenir en compte que a temperatura ambient els valors de resistència estàndard són diferents per a diferents termistors, ja que són no lineals. Un termistor té un canvi de temperatura exponencial i, per tant, una constant beta, que s’utilitza per calcular la seva resistència per a una temperatura determinada. La tensió de sortida de la resistència i la temperatura estan relacionades linealment.
Característiques de la interfície de corrent de dos fils als sensors de temperatura LMT01
Fig. 4. Organització de la interfície actual amb LMT01
Com s’ha esmentat anteriorment, per transmetre el resultat de la mesura, el LMT01 genera una seqüència de bits en forma d’impulsos de recompte de corrent. Per a això, el sensor només requereix dos cables (Figura 4). Per convertir els impulsos de corrent en la forma familiar dels microcircuits digitals, en alguns casos podeu utilitzar una sola resistència (però no sempre, més sobre això a continuació).
Després de l’engegada, el LMT01 inicia un cicle de mesura que dura fins a 54 ms (Figura 5). Durant aquest temps, es forma un corrent de baix nivell de 28 ... 39 μA a la sortida del sensor. Tot seguit, es fa un cicle de transferència del resultat de la mesura en forma d’impulsos de corrent amb una amplitud de 112 ... 143 μA. El microcontrolador receptor ha de comptar aquests impulsos, per exemple mitjançant el comptador / temporitzador incorporat. Com que la freqüència del senyal és d’uns 82 ... 94 kHz, amb el nombre màxim d’impulsos (4095), la durada de la transmissió pot arribar als 50 ms.
Fig. 5. Esquemes de temps del funcionament del sensor LMT01
Pel nombre d’impulsos comptats (PC), es pot determinar el valor de la temperatura segons la fórmula 1:
, (1)
Així, a 0 ° C, el sensor generarà uns 800 impulsos.
Malauradament, no sempre és possible utilitzar una resistència externa a causa de la limitació de la caiguda mínima de tensió del sensor LMT01. Durant el cicle de mesura, la caiguda del sensor ha de ser com a mínim de 2,15 V. Durant el cicle de transferència de dades, la caiguda de tensió es pot reduir a 2 V. No és difícil fer alguns càlculs aproximats.
Penseu en un dispositiu amb una tensió d’alimentació Vdd = 3,3 V. Si prenem la caiguda mínima permesa a través del sensor igual a 2,15 V durant el cicle de mesura, s’observarà un senyal no superior a 1,15 V a la resistència. controladors, la unitat lògica és 0, 7 ∙ Vdd, que per al nostre cas serà de 2,31 V. Com a resultat, l’ús d’una resistència simple resulta impossible, ja que el microcontrolador simplement no "veurà" el senyal d'un unitat lògica. La sortida d’aquesta situació pot ser l’ús d’un microcontrolador amb un comparador incorporat o circuits de conversió de nivell.
Sensors de temperatura resistius
Els sensors de resistència a la temperatura (RTD) estan fets de metalls rars, com el platí, la resistència elèctrica dels quals varia amb la temperatura.
Els detectors de temperatura resistius tenen un coeficient de temperatura positiu i, a diferència dels termistors, proporcionen una precisió de mesura de temperatura elevada. Tot i això, tenen una sensibilitat deficient. Pt100 és el sensor més àmpliament disponible amb un valor de resistència estàndard de 100 ohms a 0 ° C. El principal desavantatge és l’elevat cost.
Els avantatges d’aquests sensors
- Àmplia gamma de temperatures de -200 a 650 ° C
- Proporcioneu una sortida de corrent elevada
- Més lineal en comparació amb termoparells i RTD
Components addicionals i circuit del sensor
A més dels dispositius de díodes principals, el circuit del sensor de temperatura inclou una sèrie d’elements addicionals. En primer lloc, és un condensador que protegeix el dispositiu d’influències alienes. El fet és que l’amplificador operacional és altament sensible als efectes de camps electromagnètics alterns. El condensador elimina aquesta dependència injectant retroalimentació negativa.
Amb la participació d’un transistor i un díode zener, es forma una tensió de referència estabilitzada. Aquí s’utilitzen resistències amb una classe de precisió superior amb un valor baix del coeficient de resistència de temperatura. D'aquesta manera, tot l'esquema guanya estabilitat addicional. En cas de possibles canvis significatius en les condicions de temperatura, es poden ometre les resistències de precisió. Només s’utilitzen per controlar el petit sobreescalfament.
Termoparell
Els sensors de temperatura de termoparell són els més utilitzats perquè són precisos, funcionen en un ampli rang de temperatura des de -200 ° C fins a 2000 ° C i són relativament econòmics. Un termoparell amb fil i endoll a la foto següent:
Funcionament del termoparell
Un termopar està format per dos metalls diferents soldats entre si per produir una diferència de potencial sobre la temperatura. A partir de la diferència de temperatura entre les dues unions, es genera una tensió que s’utilitza per mesurar la temperatura. La diferència de tensió entre les dues unions es denomina efecte Seebeck.
Si tots dos compostos tenen la mateixa temperatura, el potencial de diferència en diferents compostos és zero, és a dir, V1 = V2. No obstant això, si les unions estan a diferents temperatures, la tensió de sortida relativa a la diferència de temperatura entre les dues unions serà igual a la seva diferència V1 - V2.
Tipus de sensors de temperatura
Electrònic-mecànic
El tipus de regulador més senzill i econòmic. La seva part principal de treball és una placa metàl·lica especial que respon a un augment o disminució de la temperatura. El sistema s'encén i s'apaga canviant la curvatura de la placa durant la calefacció i la refrigeració. La configuració del valor de temperatura exacte en aquest regulador no funcionarà.
Electrònica
El dispositiu té un element especial que genera un senyal especial. La potència depèn directament dels valors de la temperatura ambient. En aquests dispositius, podeu establir lectures de temperatura de calefacció precises fins a una fracció de grau. El sistema està controlat per botons i una pantalla petita.
Programable
El més car dels termoelements. En ell, podeu establir certs valors, en arribar al qual el regulador activa o desactiva tot el sistema. Gràcies al dispositiu, es crea un microclima a l’habitació que s’adapta a una persona en concret. És possible configurar el termòstat de manera que el sistema estigui engegat en un moment concret. És a dir, els terres s’escalfen abans que el propietari arribi a casa i, alhora, no es consumeix electricitat quan el propietari no ho fa.
Molts models presenten dissenys brillants i elegants i pantalles LCD que proporcionen informació i faciliten la posada a punt.
Treballar amb biblioteques ja fetes
Per tant, per treballar amb sensors de temperatura DS18B20 a la xarxa, podeu trobar un gran nombre de biblioteques, però, en general, s’utilitzen dues de les més populars. És una biblioteca i una biblioteca. A més, la segona biblioteca és un complement més convenient sobre la primera i no es pot utilitzar sense ella. En altres paraules, abans de connectar la biblioteca DallasTemperature.h, també heu de connectar OneWire.h. És possible instal·lar determinades biblioteques a l’IDE Arduino.
Biblioteca OneWire.h
Considerem primer treballar amb la biblioteca OneWire.h. A continuació es mostra una llista de les seves funcions amb una breu descripció.
- Sensor de temperatura OneWire (uint8_t pinNumber)
Aquesta funció és un constructor de la classe OneWire i crea un objecte TemperatureSensor, és a dir, obre un canal de comunicació amb un sensor o un grup de sensors al pin pinNumber. En els nostres exemples (figures 3-5) aquest és el pin "D2" de l'Arduino Nano. Va ser a això que vam connectar el bus de dades DQ DS18B20.
Exemple:
Sensor de temperatura OneWire
(
D2
);
// Es connecta un sensor o un grup de sensors al pin D2
- uint8_t cerca (addrArray)
La funció cerca el dispositiu següent al bus 1-Wire i, quan es troba, introdueix el valor de l'adreça a la matriu addrArray, retornant true. Com que l'adreça única de cada sensor és de 64 bits, l'addrArray ha de tenir una mida de 8 bytes. Si la cerca falla, la funció torna falsa. Cal tenir en compte que quan es connecten diversos sensors de temperatura a un bus, cada trucada a la funció de cerca s’adreçarà al següent sensor, després al següent, etc., fins que s’enumerin tots els dispositius del bus. La peculiaritat d’aquesta funció és recordar les adreces ja processades. Per restablir la cua, heu de trucar a la funció reset_search (), que es descriurà a continuació.
Exemple:
byte addrArray
[
8
];
// Matriu per emmagatzemar una adreça de 64 bits // Si el dispositiu no està present al bus o s’enumeren tots els dispositius // mostra la informació corresponent al monitor del port
si(!
sensor de temperatura
.
cerca
(
addrArray
))
En sèrie
.
println
(
"No més adreces."
);
// En cas contrari, si el dispositiu següent va respondre a la sol·licitud de presència, // mostrarà la seva adreça de 64 bits al monitor del port
en cas contrari{per(
jo
=
0
;
jo
<
8
;
jo
++)
En sèrie
.
imprimir
(
addrArray
[
jo
],
HEX
);
}
- buitreset_search ()
Com s'ha esmentat anteriorment, aquesta funció restableix la cua de sondeig dels dispositius del bus 1-Wire fins al principi. Sempre s’ha d’utilitzar conjuntament amb la funció de cerca quan aquesta última retorni false. Per exemple, en el nostre cas amb 5 sensors al bus, trucant 5 vegades a la funció de cerca, podem obtenir 5 adreces. Per sisena vegada, la funció de cerca ens tornarà falsa i ho farà cada propera enquesta fins que la cua s'esborri. Heu de prestar-hi atenció per evitar situacions incomprensibles.
Exemple:
byte addrArray
[
8
];
// Matriu per emmagatzemar una adreça de 64 bits // Si el dispositiu està absent al bus o s’enumeren tots els dispositius // restableix la cua de sondeig per repetir el cicle de cerca
si(!
sensor de temperatura
.
cerca
(
addrArray
))
sensor de temperatura
.
reset_search
();
- uint8_treset ()
La funció de restabliment de 1 fil inicia el procés de comunicació. Es diu cada vegada que volem comunicar-nos amb el sensor de temperatura. Els valors de retorn poden ser certs o falsos. Obtindrem el valor real si almenys un sensor del bus respon al reset amb un impuls de presència. En cas contrari, ens fem falsos;
Exemple:
si(!
sensor de temperatura
.
restableix
())
En sèrie
.
println
(
"No hi ha sensors al bus"
);en cas contrari
En sèrie
.
println
(
"S'ha detectat un sensor"
);
- buitseleccioneu (addrArray)
La funció us permet seleccionar un dispositiu específic amb el qual volem treballar en aquest moment. L'elecció es fa especificant explícitament l'adreça de 64 bits introduïda a la matriu addrArray. L'adreça es pot establir explícitament escrivint-la a la matriu o utilitzant la funció prèviament llegida per la cerca. Cal tenir en compte que s’ha de cridar a la funció de restabliment abans de trucar a la funció de selecció. Amb el següent restabliment, la connexió amb el sensor seleccionat es trenca fins a la següent trucada a seleccionar.
Exemple:
byte addrArray
[
8
];
// Matriu per emmagatzemar una adreça de 64 bits // Si el dispositiu està absent al bus o s’enumeren tots els dispositius // envieu la informació corresponent al monitor del port
si(!
sensor de temperatura
.
cerca
(
addrArray
))
En sèrie
.
println
(
"No més adreces."
);
// En cas contrari, si el dispositiu següent va respondre a la sol·licitud de presència, // seleccioneu-lo per al treball posterior
en cas contrari{
sensor de temperatura
.
reset ()
;
// No us oblideu d’emetre l’ordre reset del sensor de temperatura
.
seleccioneu (addrArray)
;
// Especifiqueu una matriu amb l'adreça de lectura
}
- buitOmet ()
La funció només és rellevant quan es treballa amb un sensor al bus i simplement s’omet la selecció del dispositiu. En altres paraules, no podeu utilitzar la funció de cerca i, per tant, accedir ràpidament amb el vostre únic sensor.
Exemple:
sensor de temperatura.
restableix
();
// Restableix el pneumàtic del sensor de temperatura
.
Omet
();
// Seleccioneu l'únic sensor per continuar treballant amb ell
- buitescriure (uint8_tbyte, uint8_t powerType = 0)
La funció envia un byte de dades al dispositiu seleccionat al bus. L’argument powerType indica el tipus de font d’alimentació dels sensors (0 - els sensors s’alimenten directament des d’una font externa; 1 - s’utilitza una connexió alimentada per paràsits). El segon paràmetre es pot ometre si s’utilitza alimentació externa, ja que per defecte és 0.
Exemple:
sensor de temperatura
.
restableix
();
// Restableix el pneumàtic del sensor de temperatura
.
Omet
();
// Seleccioneu l’únic sensor per continuar treballant-lo // Envieu una ordre per convertir la temperatura, // mitjançant una connexió amb energia paràsita des del bus de dades del sensor
.
escriure
(
0x44
,
1
);
- uint8_tllegir ()
Aquesta funció llegeix un byte de dades enviades pel dispositiu esclau (sensor) al bus 1-Wire.
Exemple:
// Llegiu 9 bytes de dades del bus 1-Wire i poseu el resultat en una matriu de bytes de matriu
[
9
];per(
uint8_t i
=
0
;
jo
<
9
;
jo
++){
matriu
[
jo
]=
sensor de temperatura
.
llegir
();}
- estàtic uint8_t crc8 (const uint8_t * addr, uint8_t len);
La funció està dissenyada per calcular la suma de comprovació. Dissenyat per comprovar la correcta comunicació amb el sensor de temperatura. Aquí addr és un punter a la matriu de dades i len és el nombre de bytes.
Exemple:
byte addrArray
[
8
];
// Matriu per emmagatzemar una adreça de 64 bits // Si el dispositiu està absent al bus o s’enumeren tots els dispositius // envieu la informació corresponent al monitor del port
si(!
sensor de temperatura
.
cerca
(
addrArray
))
En sèrie
.
println
(
"No més adreces."
);
// En cas contrari, si el dispositiu següent va respondre a la sol·licitud de presència, // comproveu la suma de comprovació de la seva adreça
en cas contrari{
// Si la suma de comprovació no coincideix, mostreu un missatge d'error
si(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
En sèrie
.
println
(
"El CRC no és vàlid!"
);}}
Hem examinat cada funció de la biblioteca OneWire.h per separat i per tal de fixar el material, a continuació donaré un esbós per llegir la temperatura d’un grup de sensors de temperatura DS18B20, que es connectaran al pin D2 mitjançant un circuit de potència paràsit. L’esbós contindrà comentaris detallats sobre tots els punts necessaris.
#include // Connectem la biblioteca per treballar amb sensors tèrmics DS18B20OneWire ds
(
2
);
// Un sensor o grup de sensors està connectat al pin D2 de l’Arduino // PRESET FUNCTION void setup
(
buit
){
En sèrie
.
començar
(
9600
);
// Inicialització del treball amb Serial-port} // MAIN CYCLE void loop
(
buit
){
byte i
;
// Variable auxiliar per a bucles presents en bytes
=
0
;
// Variable per determinar la preparació del sensor per a bytes de comunicació tipus_s
;
// Variable per definir el tipus de sensor tèrmic al bus de dades de bytes
[
12
];
// Matriu per emmagatzemar la informació rebuda de l'addr de bytes del sensor
[
8
];
// Matriu per emmagatzemar l'adreça de 64 bits del sensor flotant celsius
,
fahrenheit
;
// Variables per al càlcul de la temperatura // Si no es troben dispositius del bus o s’enumeren tots els dispositius del bus // mostreu la informació corresponent al monitor del port, restabliu la cua // i torneu a fer una cerca, esperant 250 ms
si(!
ds
.
cerca
(
addr
)){
En sèrie
.
println
(
"No més adreces."
);
En sèrie
.
println
();
ds
.
reset_search
();
retard
(
250
);tornar;}
// Si es troba el següent dispositiu al bus, mostreu la seva adreça única // al monitor de port en format hexadecimal
.
imprimir
(
"ROM ="
);per(
jo
=
0
;
jo
<
8
;
jo
++){
En sèrie
.
escriure
(
‘ ‘
);
En sèrie
.
imprimir
(
addr
[
jo
],
HEX
);}
// Comproveu la suma de comprovació de l'adreça del dispositiu trobat // i, si no coincideix, mostreu la informació corresponent
si(
OneWire
::
crc8
(
addr
,
7
)!=
addr
[
7
]){
En sèrie
.
println
(
"El CRC no és vàlid!"
);tornar;}
En sèrie
.
println
();
// Comproveu el byte zero de l'adreça, que conté informació // sobre un tipus específic de sensor de temperatura. Depenent del valor del zero // byte, mostrem la sèrie del xip al monitor del port. Si el byte zero conté un valor // desconegut, mostrarem un missatge sobre la família desconeguda del sensor de temperatura.
interruptor(
addr
[
0
]){Caixa
0x10
:
En sèrie
.
println
(
"Xip = DS18S20"
);
tipus_s
=
1
;trencar;Caixa
0x28
:
En sèrie
.
println
(
"Xip = DS18B20"
);
tipus_s
=
0
;trencar;Caixa
0x22
:
En sèrie
.
println
(
"Xip = DS1822"
);
tipus_s
=
0
;trencar;per defecte:
En sèrie
.
println
(
"El dispositiu no és un dispositiu familiar DS18x20."
);tornar;}
ds
.
restableix
();
// Restableix el bus per inicialitzar l'intercanvi de dades ds
.
seleccionar
(
addr
);
// Seleccioneu el sensor amb l'adreça actual per treballar-hi // Envieu l'ordre per convertir la temperatura (segons la documentació 0x44) // No us oblideu del segon paràmetre "1", ja que estem transmetent dades a través del / / línia amb font d'alimentació paràsita. ds
.
escriure
(
0x44
,
1
);
// El sensor inicia la conversió, que segons la documentació requereix màx. 750 ms // Per estar al punt segur, organitzarem una pausa de ё segon de retard
(
1000
);
// Torneu a restablir el bus per llegir la informació del sensor // deseu la resposta de la funció reset () a la variable actual per continuar treballant amb ell present
=
ds
.
restableix
();
ds
.
seleccionar
(
addr
);
// Torneu a seleccionar el sensor per la seva adreça, ja que hi havia un pols de reinici // L’ordre 0xBE, segons la documentació tècnica, permet llegir la memòria interna // del sensor de temperatura (Scratchpad), que consta de 9 bytes. ds
.
escriure
(
0xBE
);
// Llegiu i visualitzeu 9 bytes de la memòria interna del sensor de temperatura sèrie al monitor del port
.
imprimir
(
"Dades ="
);
En sèrie
.
imprimir
(
present
,
HEX
);
En sèrie
.
imprimir
(
» «
);per(
jo
=
0
;
jo
<
9
;
jo
++){
dades
[
jo
]=
ds
.
llegir
();
En sèrie
.
imprimir
(
dades
[
jo
],
HEX
);
En sèrie
.
imprimir
(
» «
);}
// Comproveu i sortiu al port per supervisar la suma de comprovació de les dades rebudes en sèrie
.
imprimir
(
"CRC ="
);
En sèrie
.
imprimir
(
OneWire
::
crc8
(
dades
,
8
),
HEX
);
En sèrie
.
println
();
// Inicieu el procés de conversió de les dades rebudes a la temperatura real, // que s’emmagatzema en 0 i 1 bytes de memòria de lectura. Per fer-ho, combinem aquests dos // bytes en un número de 16 bits int16_t en brut
=(
dades
[
1
]<<
8
)|
dades
[
0
];
// Abans de la conversió, no haureu de definir la família a la qual pertany // aquest sensor (abans vam desar el resultat a la variable type_s). // Segons la família, la temperatura es calcularà de manera diferent, // ja que el DS18B20 i el DS1822 retornen un valor de 12 bits, mentre que el DS18S20 retorna un valor de 9 bits
si(
tipus_s
){
// Si el sensor pertany a la família en brut DS18S20
=
crua
<<
3
;
// la resolució per defecte és de 9 bits
si(
dades
[
7
]==
0x10
){
crua
=(
crua
&
0xFFF0
)+
12
—
dades
[
6
];}}en cas contrari{
// Determineu a quina precisió de mesura es configura aquest sensor byte cfg
=(
dades
[
4
]&
0x60
);
// A resolucions més baixes, podeu posar a zero els bits menys significatius, // ja que no es defineixen abans
si(
cfg
==
0x00
)
crua
=
crua
&~
7
;
// 9 bits (la conversió dura 93,75 ms)
en cas contrarisi(
cfg
==
0x20
)
crua
=
crua
&~
3
;
// 10 bits (la conversió dura 187,5 ms)
en cas contrarisi(
cfg
==
0x40
)
crua
=
crua
&~
1
;
// 11 bits (la conversió dura 375 ms) // La precisió per defecte és de 12 bits (la conversió dura 750 ms)
}
// Calculeu i envieu els valors de temperatura al monitor de ports centígrads
=(
flotar
)
crua
/
16.0
;
fahrenheit
=
centígrads
*
1.8
+
32.0
;
En sèrie
.
imprimir
(
"Temperatura ="
);
En sèrie
.
imprimir
(
centígrads
);
En sèrie
.
imprimir
(
"Celsius"
);
En sèrie
.
imprimir
(
fahrenheit
);
En sèrie
.
println
(
"Fahrenheit"
);}
Si tot es fa correctament, a la finestra del monitor del port hauríem de veure el següent (Figura 6):
Figura 6: el resultat de treballar amb la biblioteca OneWire.h
Biblioteca DallasTemperature.h
Aquesta biblioteca es basa en l'anterior i simplifica una mica el procés de programació a causa de funcions més comprensibles. Després de la instal·lació, tindreu accés a 14 exemples de codi ben documentat per a totes les ocasions. En el marc d’aquest article, es considerarà un exemple de funcionament amb un sensor.
El resultat del programa es mostra a la figura 7
Figura №7: el resultat de llegir la temperatura mitjançant la biblioteca DallasTemperature.h
// Connectem les biblioteques necessàries # include #include // Connectem el bus de dades al pin # 2 d'Arduino # define ONE_WIRE_BUS 2 // Creeu una instància de la classe per al nostre bus i un enllaç al OneWire oneWire
(
ONE_WIRE_BUS
);
Sensors de temperatura Dallas
(&
oneWire
);
// PRESET FUNCTION noid setup
(
buit
){
En sèrie
.
començar
(
9600
);
// Inicialitzeu els sensors del port sèrie
.
començar
();
// Inicialitzar el bus
}
// CICLE PRINCIPAL
(
buit
){
En sèrie
.
imprimir
(
"Lectura de la temperatura ..."
);
// Envieu l'ordre per llegir els sensors
.
requestTemperatures
();
En sèrie
.
println
(
"Llegir"
);
En sèrie
.
imprimir
(
"Temperatura del sensor 1:"
);
// Mostra el valor de temperatura Sèrie
.
imprimir
(
sensors
.
getTempCByIndex
(
0
));}
Sensor de temperatura KY-001 amb interfície de 1 fil
Aquest sensor s’utilitza per mesurar amb precisió la temperatura. La comunicació amb el sensor es realitza mitjançant la interfície 1-Wire [1-2], que us permet connectar diversos dispositius similars a la placa Arduino mitjançant un pin de microcontrolador [3-4]. El mòdul es basa en el microcircuit ds18b20 [5].
Mida del mòdul 24 x 15 x 10 mm, pes 1,3 g. S'utilitza un connector de tres pins per a la connexió. Contacte central - font d'alimentació + 5V, contacte "-" - comú, contacte "S" - informatiu.
La placa té un LED vermell que s’il·lumina quan s’intercanvia informació.
Consum actual de 0,6 mA durant l'intercanvi d'informació i 20 μA en mode d'espera.
La connexió d’aquest tipus de sensors a Arduino està ben descrita en moltes fonts [6-8]. En aquest cas, es manifesten de nou els principals avantatges de l’Arduino: versatilitat i presència d’una gran quantitat d’informació de referència. Per treballar amb el sensor, necessitareu la biblioteca OneWire [9]. Un cop carregat el programa des de [8] (hi ha un error a la primera versió del programa: no hi ha cap connexió de biblioteca #include a la capçalera del codi), es pot observar la informació següent al monitor del port sèrie.
L'autor també va provar el codi de [7], tot va funcionar immediatament, al monitor del port sèrie podeu llegir informació sobre el tipus de sensor connectat i les dades de temperatura reals.
En general, un sensor molt útil que permet conèixer la interfície 1-Wire a la pràctica. El sensor proporciona les dades de temperatura correctes immediatament, l’usuari no necessita calibrar-les.