Table des registres Modbus du NT18B07 et tutoriel Arduino : surveillance de la température NTC RS485 à 7 canaux
Partager
Carte des registres Modbus du NT18B07 et tutoriel Arduino : surveillance de la température NTC sur 7 canaux RS485
Introduction
Vous recherchez un module d’acquisition de température RS485 capable de communiquer avec un Arduino, un automate programmable industriel (API) ou d’autres contrôleurs Modbus RTU ?
Le Eletechsup NT18B07 est un module d’acquisition de température NTC à 7 canaux conçu pour collecter des mesures de température et transmettre les résultats via une interface RS485 en utilisant le protocole Modbus RTU.
Pour les développeurs qui conçoivent des équipements de surveillance industrielle, des enregistreurs de données environnementales ou des systèmes de mesure de température multipoints, la compréhension de la carte des registres Modbus constitue une première étape essentielle.
Ce guide présente les paramètres de communication du NT18B07, les registres de température, la conversion des données et une approche de base pour l’intégration avec un Arduino.
1. Paramètres de communication Modbus RTU du NT18B07
Le module utilise Modbus RTU sur RS485. Ses paramètres de communication par défaut documentés sont les suivants :
| Paramètre | Réglage par défaut |
|---|---|
| Interface de communication | RS485 |
| Protocole | Modbus RTU |
| Adresse de l’esclave | 1 |
| Débit de transmission | 9600 bps |
| Nombre de bits de données | 8 |
| Parité | Aucune |
| Nombre de bits d’arrêt | 1 |
| Canaux de température | 7 |
| Unité du registre de température | 0,1 °C |
| Tension d’alimentation | 6 à 24 V CC |
Ces réglages constituent un point de départ pour la communication avec des maîtres Modbus compatibles. Vérifiez la révision effective du matériel et son manuel avant de mettre en service un système.
2. Carte des registres de température du NT18B07
Les sept canaux de température sont accessibles via des registres de maintien consécutifs.
| Canal | Adresse du registre | Unité de température |
|---|---|---|
| CH1 | 0x0000 | 0,1 °C |
| CH2 | 0x0001 | 0,1 °C |
| CH3 | 0x0002 | 0,1 °C |
| CH4 | 0x0003 | 0,1 °C |
| CH5 | 0x0004 | 0,1 °C |
| CH6 | 0x0005 | 0,1 °C |
| CH7 | 0x0006 | 0,1 °C |
Chaque mesure de température occupe un registre de 16 bits.
Par exemple, une valeur brute de registre de 253 représente 25,3 °C. Les températures négatives doivent être décodées comme des valeurs signées sur 16 bits. Une valeur d’erreur du capteur doit également être traitée séparément plutôt que d’être affichée comme une température réelle.
Certains logiciels Modbus utilisent des références de registre commençant par 1 au lieu d’offsets hexadécimaux commençant par 0. Vérifiez la convention d’adressage de votre logiciel maître lors de la configuration de la carte des registres.
3. Lecture du NT18B07 avec un Arduino
Un Arduino peut communiquer avec le NT18B07 via un émetteur-récepteur RS485 compatible, tel qu’une interface adaptée à base de MAX485, et une bibliothèque Modbus RTU.
Le schéma de connexion général est le suivant :
-
A et B RS485 du NT18B07 → A et B de l’émetteur-récepteur RS485
-
RO de l’émetteur-récepteur → RX de l’Arduino
-
TX de l’Arduino → DI de l’émetteur-récepteur
-
DE et RE de l’émetteur-récepteur → une broche de contrôle de direction Arduino adaptée
-
Entrée d’alimentation du NT18B07 → une alimentation CC régulée dans sa plage de tension spécifiée
-
Masse logique de l’Arduino et de l’émetteur-récepteur → connectée selon les exigences de la conception de l’interface
Vérifiez la compatibilité de tension et les exigences de câblage de l’émetteur-récepteur avant d’alimenter le circuit.
Exemple de code Arduino
L’exemple suivant utilise la bibliothèque ModbusMaster couramment disponible et SoftwareSerial. Il illustre la lecture de sept registres de maintien consécutifs en utilisant l’adresse d’esclave par défaut.
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
#define RS485_DIR 4
SoftwareSerial rs485(2, 3); // RX, TX
ModbusMaster node;
void preTransmission() {
digitalWrite(RS485_DIR, HIGH);
}
void postTransmission() {
digitalWrite(RS485_DIR, LOW);
}
void setup() {
pinMode(RS485_DIR, OUTPUT);
digitalWrite(RS485_DIR, LOW);
Serial.begin(9600);
rs485.begin(9600);
node.begin(1, rs485);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
void loop() {
uint8_t result = node.readHoldingRegisters(0x0000, 7);
if (result == node.ku8MBSuccess) {
for (uint8_t i = 0; i < 7; i++) {
uint16_t raw = node.getResponseBuffer(i);
// Vérifier d’abord le code d’erreur du capteur documenté.
if (raw == 0xF555) {
Serial.print("CH");
Serial.print(i + 1);
Serial.println(": Erreur du capteur");
continue;
}
int16_t signedRaw = (int16_t)raw;
float temperatureC = signedRaw / 10.0f;
Serial.print("CH");
Serial.print(i + 1);
Serial.print(": ");
Serial.print(temperatureC, 1);
Serial.println(" C");
}
} else {
Serial.print("Erreur Modbus : 0x");
Serial.println(result, HEX);
}
delay(2000);
}
Important : Il s’agit d’un exemple d’intégration, qui ne garantit pas le bon fonctionnement sur toutes les cartes Arduino ou tous les adaptateurs RS485. Vérifiez la convention des valeurs d’erreur, la carte des registres et le comportement des capteurs du module dans le manuel correspondant. La logique de contrôle de direction RS485 et la mise en œuvre série peuvent également nécessiter des ajustements pour votre matériel.
4. Autres possibilités d’intégration
Le NT18B07 peut être envisagé pour plusieurs types d’applications nécessitant une acquisition de température multipoints.
Arduino et électronique DIY : Créez des prototypes de surveillance de la température, des enregistreurs de données et des systèmes de contrôle embarqués.
API et automatisation industrielle : Lisez les registres de température via une interface maître Modbus RTU compatible.
Home Assistant et passerelles IoT : Transmettez les mesures acquises à une plateforme d’automatisation compatible via une interface RS485 et une configuration logicielle appropriées.
Surveillance environnementale : Collectez les relevés de plusieurs sondes NTC installées en différents points de mesure.
Le module fournit l’interface d’acquisition de température ; la visualisation, le stockage des données, les alertes et la logique de contrôle sont implémentés par le système hôte.
5. Dépannage des problèmes Modbus courants
Si le NT18B07 ne renvoie pas de relevés valides, vérifiez les éléments suivants :
-
Confirmez l’adresse de l’esclave et le débit de transmission.
-
Vérifiez le câblage RS485 A/B et le contrôle de direction de l’émetteur-récepteur.
-
Vérifiez que le maître utilise la bonne fonction de registre de maintien.
-
Confirmez si le logiciel attend des adresses de registre commençant par 0 ou par 1.
-
Appliquez la conversion correcte des valeurs signées et l’échelle de température appropriée.
-
Inspectez les connexions des capteurs si une valeur d’erreur du capteur est renvoyée.
-
Vérifiez la mise à la terre, la qualité des câbles, la terminaison et le polarisation, le cas échéant.
Tester d’abord un registre, puis étendre à l’ensemble des sept canaux, est souvent une méthode utile pour isoler les problèmes de configuration.
Conclusion
L’Eletechsup NT18B07 offre une solution pratique aux développeurs qui ont besoin d’une acquisition de température NTC à sept canaux sur RS485 en utilisant Modbus RTU.
En comprenant sa carte des registres et ses paramètres de communication, les ingénieurs peuvent évaluer son intégration avec un Arduino, des API, des passerelles industrielles et des plateformes de surveillance compatibles.
Pour les spécifications du produit et des informations complémentaires, consultez Eletechsup.
Référence technique : Documentation lamaPLC NT18B07