Terme: capteur de thermomètre à résistance à 4 fils

Dans cet article, nous discuterons des différents types de capteurs de température et de la manière dont ils peuvent être utilisés au cas par cas. La température est un paramètre physique mesuré en degrés. C'est une partie essentielle de tout processus de mesure. Les domaines nécessitant des mesures de température précises comprennent la médecine, la recherche biologique, l'électronique, la recherche sur les matériaux et les performances thermiques des produits électriques. Un appareil utilisé pour mesurer la quantité d'énergie thermique qui nous permet de détecter les changements physiques de température est appelé capteur de température. Ils sont numériques et analogiques.

Principaux types de capteurs

En général, il existe deux méthodes pour obtenir des données:

1. Contact... Les capteurs de température de contact sont en contact physique avec un objet ou une substance. Ils peuvent être utilisés pour mesurer la température de solides, de liquides ou de gaz.

2. Sans contact... Les capteurs de température sans contact détectent la température en interceptant une partie de l'énergie infrarouge émise par un objet ou une substance et en détectant son intensité. Ils ne peuvent être utilisés que pour mesurer la température dans les solides et les liquides. Ils sont incapables de mesurer la température des gaz en raison de leur incolore (transparence).

Règles de sélection des capteurs

Le capteur de température pour le chauffage par le sol est sélectionné en tenant compte de caractéristiques telles que la puissance, le type de revêtement supérieur, la méthode d'installation et l'équipement avec des fonctionnalités supplémentaires.

Pouvoir

La valeur doit certainement répondre aux exigences et à la charge du sol chaud. Sinon, le capteur ne fonctionnera pas correctement. Lorsque la puissance de l'élément chauffant est supérieure à celle du régulateur lui-même, il devient nécessaire d'installer en plus un démarreur magnétique entre eux - pour éviter d'endommager l'appareil en raison d'une charge accrue.

Jeu de fonctionnalités

Le plancher chaud est contrôlé par une unité électrique, ce qui vous permet d'ajuster le fonctionnement des éléments chauffants. Les contrôleurs modernes ont des fonctionnalités telles que le démarrage et la mise hors tension du système, le réglage des conditions de température, ainsi que le réglage de la fréquence de connexion et de déconnexion de l'élément chauffant.

Facilité d'utilisation

Si vous pensez que vous ne comprendrez pas la programmation, vous ne devez pas acheter un appareil complexe. Même en tenant compte de toutes ses fonctionnalités. Par exemple, les personnes âgées trouvent assez problématique de manipuler des appareils programmables. Ils feraient mieux de choisir l'option mécanique.

Facile à connecter

La documentation d'accompagnement du thermostat indique toujours comment connecter la sonde de chauffage par le sol. Les bornes sont situées sur le bord d'un côté de l'unité de contrôle. Après avoir connecté les fils électriques selon le schéma, il sera nécessaire de vérifier les performances du système de chauffage. Pour ce faire, mesurez la résistance aux bornes du capteur de température et du câble électrique chauffant, ou connectez un plancher chaud et augmentez les valeurs de température de zéro à l'indicateur recommandé par SNIP, soit jusqu'à 30 ° C.

Apparence

Un capteur thermique doit non seulement être compréhensible du point de vue fonctionnel, mais également de conception attrayante. Les boutons modernes sont disponibles dans une variété de couleurs et de formes. Vous pouvez choisir une option en harmonie avec l'intérieur de la pièce.

Types de capteurs de température

Il existe de nombreux types de capteurs de température.Du simple contrôle marche / arrêt d'un appareil thermostatique aux systèmes de contrôle complexes de l'approvisionnement en eau, avec la fonction de le chauffer, utilisés dans les processus de croissance des plantes. Les deux principaux types de capteurs, avec et sans contact, sont subdivisés en capteurs résistifs, de tension et électromécaniques. Les trois capteurs de température les plus couramment utilisés sont:

  • Thermistances
  • Thermocouples à résistance
  • Thermocouple

Ces capteurs de température diffèrent les uns des autres en termes de paramètres opérationnels.

Appareil

Il s'agit d'un thermocouple (plaque ou tige) composé de fils qui se connectent aux bornes de l'élément sensible.

En fonction des informations de température, la résistance de la partie sensible change, respectivement, le signal électrique fourni au thermostat change. Ainsi, la valeur absolue de la température du milieu est déterminée.

Schéma de raccordement du capteur de température

Externe (capteur de température externe pour chauffage par le sol), en règle générale, est situé sous le revêtement de sol de finition et mesure ses indicateurs de température. Interne (intégré), situé à l'intérieur du régulateur et détermine le niveau de chauffage de l'air.

La conception des capteurs de température est choisie en fonction des caractéristiques du système:

Thermistance

Une thermistance est une résistance sensible qui change sa résistance physique avec la température. Typiquement, les thermistances sont constituées d'un matériau semi-conducteur céramique tel que le cobalt, le manganèse ou l'oxyde de nickel et sont recouvertes de verre. Ce sont de petits disques plats scellés qui réagissent relativement rapidement à tout changement de température.

En raison des propriétés semi-conductrices du matériau, les thermistances ont un coefficient de température négatif (NTC), c'est-à-dire la résistance diminue avec l'augmentation de la température. Cependant, il existe également des thermistances PTC dont la résistance augmente avec l'augmentation de la température.

Calendrier de thermistance

Avantages des thermistances

  • Grande vitesse de réponse aux changements de température, précision.
  • À bas prix.
  • Résistance plus élevée de l'ordre de 2 000 à 10 000 ohms.
  • Sensibilité beaucoup plus élevée (~ 200 ohm / ° C) dans une plage de température limitée allant jusqu'à 300 ° C.

Dépendances de la résistance à la température

La dépendance de la résistance à la température est exprimée par l'équation suivante:

A, B, C - ce sont des constantes (fournies par les termes de calcul), R - résistance en Ohms, T - température en Kelvin. Vous pouvez facilement calculer le changement de température à partir d'un changement de résistance ou vice versa.

Comment utiliser une thermistance?

Les thermistances sont évaluées pour leur valeur résistive à température ambiante (25 ° C). Une thermistance est un dispositif résistif passif, elle nécessite donc la production de surveillance de la tension de sortie du courant. En règle générale, ils sont connectés en série avec des stabilisateurs appropriés formant un diviseur de tension secteur.

Exemple: Considérons une thermistance avec une valeur de résistance de 2,2K à 25 ° C et 50 ohms à 80 ° C. La thermistance est connectée en série avec une résistance de 1 kΩ via une alimentation de 5 V.

Par conséquent, sa tension de sortie peut être calculée comme suit:

À 25 ° C, RNTC = 2200 ohms;

À 80 ° C, RNTC = 50 ohms;

Cependant, il est important de noter qu'à température ambiante, les valeurs de résistance standard sont différentes pour différentes thermistances, car elles ne sont pas linéaires. Une thermistance a un changement de température exponentiel, et donc une constante bêta, qui est utilisée pour calculer sa résistance pour une température donnée. La tension et la température de sortie de la résistance sont liées de manière linéaire.

Caractéristiques de l'interface de courant à deux fils dans les capteurs de température LMT01

Figure. 4. Organisation de l'interface actuelle avec LMT01

Comme mentionné ci-dessus, pour transmettre le résultat de la mesure, le LMT01 génère une séquence de bits sous la forme d'impulsions de comptage de courant. Pour cela, le capteur ne nécessite que deux fils (Figure 4). Pour convertir les impulsions de courant sous la forme familière aux microcircuits numériques, dans certains cas, vous pouvez utiliser une seule résistance (mais pas toujours - plus à ce sujet ci-dessous).

Après la mise sous tension, le LMT01 démarre un cycle de mesure qui prend jusqu'à 54 ms (Figure 5). Pendant ce temps, un courant de faible niveau de 28 à 39 μA est formé à la sortie du capteur. Ceci est suivi d'un cycle de transfert du résultat de la mesure sous forme d'impulsions de courant d'une amplitude de 112 ... 143 μA. Le microcontrôleur récepteur doit compter ces impulsions, par exemple à l'aide du compteur / minuterie intégré. Puisque la fréquence des signaux est d'environ 82 ... 94 kHz, alors avec le nombre maximum d'impulsions (4095), la durée de transmission peut atteindre 50 ms.

Figure. 5. Diagrammes de synchronisation du fonctionnement du capteur LMT01

Par le nombre d'impulsions comptées (PC), la valeur de température peut être déterminée selon la formule 1:

, (1)

Ainsi, à 0 ° C, le capteur générera environ 800 impulsions.

Malheureusement, l'utilisation d'une seule résistance externe n'est pas toujours possible en raison de la limitation de la chute de tension minimale aux bornes du capteur LMT01. Pendant le cycle de mesure, la chute à travers le capteur doit être d'au moins 2,15 V. Pendant le cycle de transmission de données, la chute de tension peut être réduite à 2 V. Il n'est pas difficile de faire des calculs approximatifs.

Considérons un appareil avec une tension d'alimentation Vdd = 3,3 V. Si nous prenons la chute minimale autorisée à travers le capteur égale à 2,15 V pendant le cycle de mesure, alors un signal de pas plus de 1,15 V sera observé à travers la résistance. Pour la plupart des appareils numériques contrôleurs, l'unité logique est 0, 7 ∙ Vdd, ce qui pour notre cas sera de 2,31 V. En conséquence, l'utilisation d'une simple résistance s'avère impossible, car le microcontrôleur ne "verra" tout simplement pas le signal d'un unité logique. Le moyen de sortir de cette situation peut être l'utilisation d'un microcontrôleur avec un comparateur intégré ou des circuits de conversion de niveau.

Capteurs de température résistifs

Les capteurs de résistance à la température (RTD) sont constitués de métaux rares, comme le platine, dont la résistance électrique varie avec la température.

Les détecteurs de température résistifs ont un coefficient de température positif et, contrairement aux thermistances, fournissent une précision de mesure de température élevée. Cependant, ils ont une faible sensibilité. Le Pt100 est le capteur le plus largement disponible avec une valeur de résistance standard de 100 ohms à 0 ° C. Le principal inconvénient est le coût élevé.

Les avantages de tels capteurs

  • Large plage de température de -200 à 650 ° C
  • Fournit une sortie de courant de chute élevée
  • Plus linéaire que les thermocouples et les RTD

Composants supplémentaires et circuit de capteur

En plus des dispositifs à diodes principales, le circuit du capteur de température comprend un certain nombre d'éléments supplémentaires. Tout d'abord, c'est un condensateur qui protège l'appareil des influences étrangères. Le fait est que l'amplificateur opérationnel est très sensible aux effets des champs électromagnétiques alternatifs. Le condensateur supprime cette dépendance en injectant une rétroaction négative.

Circuit du capteur de température

Avec la participation d'un transistor et d'une diode Zener, une tension de référence stabilisée est formée. Ici, des résistances de classe de précision plus élevée sont utilisées avec une faible valeur du coefficient de température de résistance. Ainsi, l'ensemble du système gagne en stabilité supplémentaire. En cas de changements importants possibles des conditions de température, les résistances de précision peuvent être omises. Ils ne sont utilisés que pour contrôler les petites surchauffes.

Thermocouple

Les capteurs de température à thermocouple sont les plus couramment utilisés car ils sont précis, fonctionnent sur une large plage de températures de -200 ° C à 2000 ° C et sont relativement peu coûteux. Un thermocouple avec un fil et une fiche sur la photo ci-dessous:

Fonctionnement du thermocouple

Un thermocouple est composé de deux métaux dissemblables soudés ensemble pour produire une différence de potentiel sur la température. À partir de la différence de température entre les deux jonctions, une tension est générée qui est utilisée pour mesurer la température. La différence de tension entre les deux jonctions est appelée effet Seebeck.

Si les deux composés sont à la même température, le potentiel de différence entre différents composés est nul, c'est-à-dire V1 = V2. Cependant, si les jonctions sont à des températures différentes, la tension de sortie relative à la différence de température entre les deux jonctions sera égale à leur différence V1 - V2.

Types de capteurs de température

Électronique-mécanique

Le type de régulateur le plus simple et le moins coûteux. Sa principale pièce de travail est une plaque métallique spéciale qui répond à une augmentation ou une diminution de la température. Le système est activé et désactivé en modifiant la courbure de la plaque pendant le chauffage et le refroidissement. Le réglage de la valeur de température exacte sur un tel régulateur ne fonctionnera pas.

Électronique

L'appareil a un élément spécial qui génère un signal spécial. La puissance dépend directement des valeurs de la température ambiante. Sur ces appareils, vous pouvez définir des lectures précises de la température de chauffage jusqu'à une fraction de degré. Le système est contrôlé par des boutons et un petit écran.

Programmable

Le plus cher des thermoéléments. Sur celui-ci, vous pouvez définir certaines valeurs, une fois que le système entier est activé ou désactivé par le régulateur. Grâce à l'appareil, un microclimat est créé dans la pièce qui convient à une personne en particulier. Il est possible de configurer le thermostat pour que le système soit mis en marche à une heure précise. Autrement dit, les planchers sont chauffés avant l'arrivée du propriétaire à la maison et l'électricité n'est pas consommée lorsque le propriétaire ne l'est pas.

De nombreux modèles présentent des designs lumineux et élégants et des écrans LCD qui affichent des informations et facilitent les réglages fins.

Travailler avec des bibliothèques prêtes à l'emploi

Ainsi, pour travailler avec les capteurs de température DS18B20 sur le réseau, vous pouvez trouver un grand nombre de bibliothèques, mais en règle générale, deux des plus populaires sont utilisées. C'est une bibliothèque et une bibliothèque. De plus, la deuxième bibliothèque est un complément plus pratique que la première et ne peut pas être utilisée sans elle. En d'autres termes, avant de connecter la bibliothèque DallasTemperature.h, vous devez également connecter OneWire.h. Comment installer certaines bibliothèques dans l'IDE Arduino est possible.

Bibliothèque OneWire.h

Considérons d'abord l'utilisation de la bibliothèque OneWire.h. Vous trouverez ci-dessous une liste de ses fonctions avec une brève description.

  • Capteur de température OneWire (uint8_t pinNumber)

Cette fonction est un constructeur de la classe OneWire et crée un objet temperatureSensor, i.e. ouvre un canal de communication avec un capteur ou un groupe de capteurs sur la broche pinNumber. Dans nos exemples (figures 3 à 5), il s'agit de la broche «D2» de l'Arduino Nano. C'est à lui que nous avons connecté le bus de données DQ DS18B20.

Exemple:

Capteur de température OneWire
(
D2
);
// Un capteur ou un groupe de capteurs est connecté à la broche D2

  • uint8_t recherche (addrArray)

La fonction recherche le périphérique suivant sur le bus 1-Wire et, lorsqu'elle est trouvée, entre la valeur d'adresse dans le tableau addrArray, retournant true. Étant donné que l'adresse unique de chaque capteur est de 64 bits, le addrArray doit avoir une taille de 8 octets. Si la recherche échoue, la fonction renvoie false. Il est à noter que lorsque plusieurs capteurs de température sont connectés à un bus, chaque appel à la fonction de recherche sera adressé au capteur suivant, puis au suivant, etc., jusqu'à ce que tous les appareils sur le bus soient énumérés. La particularité de cette fonction est de se souvenir des adresses déjà traitées. Pour réinitialiser la file d'attente, vous devez appeler la fonction reset_search (), qui sera discutée ci-dessous.

Exemple:

byte addrArray
[
8
];
// Tableau pour stocker une adresse 64 bits // Si le périphérique n'est pas du tout présent sur le bus ou que tous les périphériques sont énumérés // afficher les informations correspondantes dans le moniteur de port
si(!
capteur de température
.
chercher
(
addrArray
))
En série
.
println
(
"Plus d'adresses."
);
// Sinon, si le périphérique suivant a répondu à la demande de présence, // affiche son adresse 64 bits dans le moniteur de port
autre{pour(
je
=
0
;
je
<
8
;
je
++)
En série
.
impression
(
addrArray
[
je
],
HEX
);
}

  • annulerRéinitialiser la recherche ()

Comme mentionné ci-dessus, cette fonction réinitialise la file d'attente d'interrogation des périphériques sur le bus 1-Wire au tout début. Il doit toujours être utilisé en conjonction avec la fonction de recherche lorsque celle-ci renvoie false. Par exemple, dans notre cas avec 5 capteurs sur le bus, en appelant la fonction de recherche 5 fois, nous pouvons obtenir 5 adresses. Pour la sixième fois, la fonction de recherche nous renverra false et le fera à chaque interrogation suivante jusqu'à ce que la file d'attente soit vidée. Vous devez y prêter attention afin d'éviter des situations incompréhensibles.

Exemple:

byte addrArray
[
8
];
// Tableau pour stocker une adresse 64 bits // Si le périphérique est absent du tout sur le bus ou si tous les périphériques sont énumérés // réinitialise la file d'attente d'interrogation pour répéter le cycle de recherche
si(!
capteur de température
.
chercher
(
addrArray
))
capteur de température
.
Réinitialiser la recherche
();

  • uint8_tréinitialiser ()

La fonction de réinitialisation 1-Wire lance le processus de communication. Il est appelé à chaque fois que nous voulons communiquer avec le capteur de température. Les valeurs de retour peuvent être vraies ou fausses. Nous obtiendrons la valeur vraie si au moins un capteur sur le bus répond à la réinitialisation avec une impulsion de présence. Sinon, nous obtenons faux;

Exemple:
si(!
capteur de température
.
réinitialiser
())
En série
.
println
(
"Pas de capteurs sur le bus"
);autre
En série
.
println
(
"Le capteur est détecté"
);

  • annulersélectionnez (addrArray)

La fonction vous permet de sélectionner un appareil spécifique avec lequel nous voulons travailler pour le moment. Le choix est fait en spécifiant explicitement l'adresse 64 bits entrée dans le tableau addrArray. L'adresse peut être définie explicitement en l'écrivant dans le tableau ou en utilisant la lecture précédemment lue par la fonction de recherche. Il convient de noter que la fonction de réinitialisation doit être appelée avant d'appeler la fonction de sélection. Lors de la prochaine réinitialisation, la connexion avec le capteur sélectionné est interrompue jusqu'au prochain appel à sélectionner.
Exemple:
byte addrArray
[
8
];
// Tableau pour stocker une adresse 64 bits // Si le périphérique est absent du tout sur le bus ou si tous les périphériques sont énumérés // envoie les informations correspondantes au moniteur de port
si(!
capteur de température
.
chercher
(
addrArray
))
En série
.
println
(
"Plus d'adresses."
);
// Sinon, si l'appareil suivant a répondu à la demande de présence, // sélectionnez-le pour un travail ultérieur
autre{
capteur de température
.
réinitialiser ()
;
// N'oubliez pas d'émettre la commande de réinitialisation temperatureSensor
.
sélectionnez (addrArray)
;
// Spécifiez un tableau avec l'adresse de lecture
}

  • annulersauter ()

La fonction n'est pertinente que lorsque vous travaillez avec un capteur sur le bus et ignore simplement la sélection de l'appareil. En d'autres termes, vous ne pouvez pas utiliser la fonction de recherche, et donc accéder rapidement avec votre seul capteur.

Exemple:
capteur de température.
réinitialiser
();
// Réinitialiser le pneu du capteur de température
.
sauter
();
// Sélectionnez le seul capteur pour continuer à travailler avec lui

  • annulerécrivez (uint8_toctet, uint8_t powerType = 0)

La fonction envoie un octet de données à l'appareil sélectionné sur le bus. L'argument powerType spécifie le type d'alimentation électrique des capteurs (0 - les capteurs sont alimentés directement à partir d'une source externe; 1 - une connexion alimentée parasite est utilisée). Le deuxième paramètre peut être omis si une alimentation externe est utilisée, car il est 0 par défaut.

Exemple:

capteur de température
.
réinitialiser
();
// Réinitialiser le pneu du capteur de température
.
sauter
();
// Sélectionnez un seul capteur pour un travail ultérieur avec celui-ci // Envoie une commande pour convertir la température, // en utilisant une connexion avec une puissance parasite du bus de données temperatureSensor
.
écrivez
(
0x44
,
1
);

  • uint8_tlire ()

Cette fonction lit un octet de données envoyées par le dispositif esclave (capteur) au bus 1-Wire.

Exemple:

// Lit 9 octets de données sur le bus 1-Wire et place le résultat dans un tableau d'octets
[
9
];pour(
uint8_t i
=
0
;
je
<
9
;
je
++){
déployer
[
je
]=
capteur de température
.
lire
();}

  • statique uint8_t crc8 (const uint8_t * addr, uint8_t len);

La fonction est conçue pour calculer la somme de contrôle. Conçu pour vérifier la bonne communication avec le capteur de température. Ici, l'argument addr est un pointeur vers le tableau de données et len ​​spécifie le nombre d'octets.

Exemple:

byte addrArray
[
8
];
// Tableau pour stocker une adresse 64 bits // Si le périphérique est absent du tout sur le bus ou si tous les périphériques sont énumérés // envoie les informations correspondantes au moniteur de port
si(!
capteur de température
.
chercher
(
addrArray
))
En série
.
println
(
"Plus d'adresses."
);
// Sinon, si l'appareil suivant a répondu à la demande de présence, // vérifier la somme de contrôle de son adresse
autre{
// Si la somme de contrôle ne correspond pas, affiche un message d'erreur
si(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
En série
.
println
(
"CRC n'est pas valide!"
);}}
Nous avons examiné chaque fonction de la bibliothèque OneWire.h séparément et afin de fixer le matériau, ci-dessous je vais donner un croquis pour lire la température d'un groupe de capteurs de température DS18B20, qui seront connectés à la broche D2 à l'aide d'un circuit d'alimentation parasite. Le croquis contiendra des commentaires détaillés sur tous les points nécessaires.

#include // Nous connectons la bibliothèque pour travailler avec les capteurs thermiques DS18B20OneWire ds
(
2
);
// Un capteur ou un groupe de capteurs est connecté à la broche D2 de l'Arduino // PRESET FUNCTION void setup
(
annuler
){
En série
.
commencer
(
9600
);
// Initialisation du travail avec Serial-port} // Boucle void MAIN CYCLE
(
annuler
){
octet i
;
// Variable auxiliaire pour les boucles de présence d'octets
=
0
;
// Variable pour déterminer l'état de préparation du capteur pour l'octet de communication type_s
;
// Variable de définition du type de capteur thermique sur le bus de données d'octets
[
12
];
// Tableau pour stocker les informations reçues de l'adr d'octet du capteur
[
8
];
// Tableau pour stocker l'adresse 64 bits du capteur float celsius
,
Fahrenheit
;
// Variables de calcul de la température // Si les appareils sur le bus ne sont pas trouvés ou si tous les appareils sur le bus sont énumérés // afficher les informations correspondantes dans le moniteur de port, réinitialiser la file d'attente // et effectuer à nouveau une recherche, en attente de 250 ms
si(!
ds
.
chercher
(
adr
)){
En série
.
println
(
"Plus d'adresses."
);
En série
.
println
();
ds
.
Réinitialiser la recherche
();
retard
(
250
);revenir;}
// Si le périphérique suivant sur le bus est trouvé, affiche son adresse unique // dans le moniteur de port en hexadécimal Serial
.
impression
(
"ROM ="
);pour(
je
=
0
;
je
<
8
;
je
++){
En série
.
écrivez
(
‘ ‘
);
En série
.
impression
(
adr
[
je
],
HEX
);}
// Vérifier la somme de contrôle de l'adresse de l'appareil trouvé // et si elle ne correspond pas, afficher les informations correspondantes
si(
OneWire
::
crc8
(
adr
,
7
)!=
adr
[
7
]){
En série
.
println
(
"CRC n'est pas valide!"
);revenir;}
En série
.
println
();
// Vérifiez l'octet zéro de l'adresse, qui contient des informations // sur un type spécifique de capteur de température. En fonction de la valeur de l'octet zéro //, nous affichons la série de la puce dans le moniteur de port. Si l'octet zéro contient une valeur // inconnue, nous affichons un message concernant la famille inconnue du capteur de température.
changer(
adr
[
0
]){Cas
0x10
:
En série
.
println
(
"Puce = DS18S20"
);
les types
=
1
;Pause;Cas
0x28
:
En série
.
println
(
"Puce = DS18B20"
);
les types
=
0
;Pause;Cas
0x22
:
En série
.
println
(
"Puce = DS1822"
);
les types
=
0
;Pause;défaut:
En série
.
println
(
"L'appareil n'est pas un appareil de la famille DS18x20."
);revenir;}
ds
.
réinitialiser
();
// Réinitialise le bus pour initialiser l'échange de données ds
.
sélectionner
(
adr
);
// Sélectionnez le capteur avec l'adresse actuelle pour travailler avec lui // Envoyez la commande pour convertir la température (selon la documentation 0x44) // N'oubliez pas le deuxième paramètre "1", car nous transmettons des données via le / / ligne avec alimentation parasite. ds
.
écrivez
(
0x44
,
1
);
// Le capteur commence la conversion, qui selon la documentation prend max. 750ms // Par prudence, nous organiserons une pause de ё seconde de retard
(
1000
);
// Réinitialise le bus à nouveau pour lire les informations du capteur // sauvegarde la réponse de la fonction reset () à la variable actuelle pour continuer à travailler avec celle-ci
=
ds
.
réinitialiser
();
ds
.
sélectionner
(
adr
);
// Re-sélectionner le capteur par son adresse, car il y a eu une impulsion de réinitialisation // La commande 0xBE, selon la documentation technique, permet de lire la mémoire interne // du capteur de température (Scratchpad), qui se compose de 9 octets. ds
.
écrivez
(
0xBE
);
// Lire et afficher 9 octets de la mémoire interne du capteur de température Série vers le moniteur de port
.
impression
(
"Data ="
);
En série
.
impression
(
cadeau
,
HEX
);
En série
.
impression
(
» «
);pour(
je
=
0
;
je
<
9
;
je
++){
Les données
[
je
]=
ds
.
lire
();
En série
.
impression
(
Les données
[
je
],
HEX
);
En série
.
impression
(
» «
);}
// Vérifie et envoie au moniteur de port la somme de contrôle des données reçues Série
.
impression
(
"CRC ="
);
En série
.
impression
(
OneWire
::
crc8
(
Les données
,
8
),
HEX
);
En série
.
println
();
// Démarre le processus de conversion des données reçues en température réelle, // qui est stockée dans 0 et 1 octets de mémoire de lecture. Pour ce faire, nous combinons ces deux // octets en un seul nombre de 16 bits int16_t raw
=(
Les données
[
1
]<<
8
)|
Les données
[
0
];
// Avant de poursuivre la conversion, vous n'aurez pas besoin de définir la famille à laquelle // appartient ce capteur (nous avons précédemment enregistré le résultat dans la variable type_s). // Selon la famille, la température sera calculée différemment, // puisque le DS18B20 et le DS1822 renvoient une valeur 12 bits, tandis que le DS18S20 renvoie une valeur 9 bits
si(
les types
){
// Si le capteur appartient à la famille DS18S20 raw
=
cru
<<
3
;
// la résolution par défaut est de 9 bits
si(
Les données
[
7
]==
0x10
){
cru
=(
cru
&
0xFFF0
)+
12

Les données
[
6
];}}autre{
// Détermine à quelle précision de mesure ce capteur est configuré octet cfg
=(
Les données
[
4
]&
0x60
);
// A des résolutions inférieures, vous pouvez mettre à zéro les bits les moins significatifs, // car ils ne sont pas définis au début
si(
cfg
==
0x00
)
cru
=
cru
&~
7
;
// 9 bits (la conversion prend 93,75 ms)
autresi(
cfg
==
0x20
)
cru
=
cru
&~
3
;
// 10 bits (la conversion prend 187,5 ms)
autresi(
cfg
==
0x40
)
cru
=
cru
&~
1
;
// 11 bits (la conversion prend 375 ms) // La précision par défaut est de 12 bits (la conversion prend 750 ms)
}
// Calcul et sortie des valeurs de température sur le moniteur de port Celsius
=(
flotter
)
cru
/
16.0
;
Fahrenheit
=
celsius
*
1.8
+
32.0
;
En série
.
impression
(
"Température ="
);
En série
.
impression
(
celsius
);
En série
.
impression
(
"Celsius,"
);
En série
.
impression
(
Fahrenheit
);
En série
.
println
(
"Fahrenheit"
);}
Si tout est fait correctement, alors dans la fenêtre du moniteur de port, nous devrions voir quelque chose comme ce qui suit (Figure 6):

Figure 6 - le résultat de l'utilisation de la bibliothèque OneWire.h

Bibliothèque DallasTemperature.h

Cette bibliothèque est basée sur la précédente et simplifie un peu le processus de programmation grâce à des fonctions plus compréhensibles. Après l'installation, vous aurez accès à 14 exemples de code bien documenté pour toutes les occasions. Dans le cadre de cet article, un exemple de fonctionnement avec un capteur sera considéré.

Le résultat du programme est illustré à la figure 7

Figure №7 - le résultat de la lecture de la température à l'aide de la bibliothèque DallasTemperature.h

// Nous connectons les bibliothèques nécessaires # include #include // Nous connectons le bus de données à la broche # 2 d'Arduino # define ONE_WIRE_BUS 2 // Créez une instance de la classe pour notre bus et un lien vers celui-ci OneWire oneWire
(
ONE_WIRE_BUS
);
Capteurs de température Dallas
(&
oneWire
);
// CONFIGURATION ANNULÉE DE LA FONCTION PRESET
(
annuler
){
En série
.
commencer
(
9600
);
// Initialise les capteurs du port série
.
commencer
();
// Initialise le bus
}
// CYCLE PRINCIPAL
(
annuler
){
En série
.
impression
(
"Lecture de la température ..."
);
// Envoie la commande pour lire les capteurs
.
demandeTempératures
();
En série
.
println
(
"Lire"
);
En série
.
impression
(
"Température du capteur 1:"
);
// Afficher la valeur de température Serial
.
impression
(
capteurs
.
getTempCByIndex
(
0
));}

Capteur de température KY-001 avec interface 1 fil

Ce capteur est utilisé pour une mesure précise de la température. La communication avec le capteur s'effectue via l'interface 1-Wire [1-2], qui vous permet de connecter plusieurs appareils similaires à la carte Arduino en utilisant une broche de microcontrôleur [3-4]. Le module est basé sur le microcircuit ds18b20 [5].

Taille du module 24 x 15 x 10 mm, poids 1,3 g. Un connecteur à trois broches est utilisé pour la connexion. Contact central - alimentation + 5V, contact "-" - commun, contact "S" - informatif.

La carte a une LED rouge qui s'allume lorsque des informations sont échangées.

Consommation de courant 0,6 mA pendant l'échange d'informations et 20 μA en mode veille.

La connexion de ce type de capteurs à Arduino est bien décrite dans de nombreuses sources [6-8]. Dans ce cas, les principaux avantages de l'Arduino se manifestent à nouveau: la polyvalence et la présence d'une énorme quantité d'informations de référence. Pour travailler avec le capteur, vous aurez besoin de la bibliothèque OneWire [9]. Après avoir chargé le programme à partir de [8] (il y a une erreur dans la première version du programme - il n'y a pas de connexion de bibliothèque #include dans l'en-tête de code), les informations suivantes peuvent être observées dans le moniteur de port série.

L'auteur a également testé le code de [7], tout a fonctionné tout de suite, dans le moniteur du port série, vous pouvez lire des informations sur le type de capteur connecté et les données de température réelles.

En général, un capteur très utile qui permet de se familiariser avec l'interface 1-Wire en pratique. Le capteur donne immédiatement les données de température correctes, l'utilisateur n'a pas besoin de calibrer.

Notation
( 1 estimation, moyenne 4 de 5 )

Radiateurs

Fours