Capteur de température multiple
Composants et fournitures
| | × | 8 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| SparkFun RS232 Shifter - SMD | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
Applications et services en ligne
À propos de ce projet
J'avais besoin de lire les températures sur plusieurs positions. La température doit être analysée dans un système domotique (Crestron/AMX). La solution ne devrait pas coûter trop cher. De cette façon, j'ai décidé d'utiliser des capteurs DS18B20 car ils sont largement disponibles et assez bon marché. Enfin, c'est un système de bus.
Les capteurs sont connectés à un Arduino Nano. La sortie série de l'Arduino (ttl) est convertie en RS232 pour la rendre compatible avec le système domotique.
Pour que tout soit joli, j'ai conçu un étui et je l'ai imprimé sur mon imprimante 3D Zortrax M200.
Des questions? N'hésitez pas à demander!
Code
MultiTempSensor v1.0.0Arduino
Code Arduino/*Code MultiTempSensor par WT040Le code du capteur est basé sur les exemples de Rik Kretzinger et d'autres extraits de codeHistory :v0.1.1 27/11/2016v0.1.5 04/12/2016 version préliminaire v1.0.0 04 /12/2017 release version*///Include's#include #include //Constants#define SENSOR_PIN 12#define READ_TIMER 10000 //10 secondes//OneWire oneWire(SENSOR_PIN);// Passez notre référence oneWire aux capteurs Dallas Temperature.DallasTemperature(&oneWire);//Sensor Adresses DeviceAddress Sensor1 ={ 0x28, 0xFF, 0x89, 0x0F, 0x61, 0x16, 0x03, 0x40 };DeviceAddress Sensor2 ={ 0x28, 0xFF, 0xE2, 0x0F , 0x61, 0x16, 0x03, 0x21 };DeviceAddress Sensor3 ={ 0x28, 0xFF, 0x38, 0xB3, 0x60, 0x16, 0x03, 0xEA };DeviceAddress Sensor4 ={ 0x28, 0xFF, 0xA4, 0xBE, 0x603, 0x16, 0x1 };DeviceAddress Sensor5 ={ 0x28, 0xFF, 0xFE, 0x13, 0x61, 0x16, 0x03, 0x56 };DeviceAddress Sensor6 ={ 0x28, 0xFF, 0x89, 0xBA, 0x60, 0x16, 0x03, 0xFB };DeviceAddress Sensor6 ={ 0x28,7 0xFF, 0xFA, 0xB C, 0x60, 0x16, 0x03, 0xD1 };DeviceAddress Sensor8 ={ 0x28, 0xFF, 0x57, 0xB1, 0x60, 0x16, 0x03, 0x93 };intmountOfSensors =8;//variable pour vérifier le nombre de capteurs sur le bus une fois dans un whileint counterCheckBus =0;void setup(){ // démarrer le port série pour afficher les résultats Serial.begin(9600); // display_Running_Sketch(); printNomProgramme(); Serial.print ("Initialisation de la version de la bibliothèque de contrôle de température "); Serial.println(DALLASTEMPLIBVERSION); Serial.print("Recherche de "); Serial.print(amountOfSensors); Serial.println("capteurs..."); // Initialiser la bibliothèque de mesure de température sensor.begin(); // définit la résolution sur 10 bits (peut être de 9 à 12 bits .. plus bas est plus rapide) capteurs.setResolution(Sensor1, 10); capteurs.setResolution(Sensor2, 10); capteurs.setResolution(Sensor3, 10); capteurs.setResolution(Sensor4, 10); capteurs.setResolution(Sensor5, 10); capteurs.setResolution(Sensor6, 10); capteurs.setResolution(Sensor7, 10); capteurs.setResolution(Sensor8, 10); getSensorsOnBus(); Serial.println("Système initialisé");}boucle vide(){ counterCheckBus++; retard(READ_TIMER); Serial.println(); if (counterCheckBus ==360) { getSensorsOnBus(); compteurCheckBus =0 ; } capteurs.requestTemperatures(); Serial.print("Capteur 1:"); printTemperature(Sensor1) ; Serial.println(); Serial.print("Capteur 2:"); printTemperature(Sensor2) ; Serial.println(); Serial.print("Capteur 3:"); printTemperature(Sensor3) ; Serial.println(); Serial.print("Capteur 4:"); printTemperature(Sensor4) ; Serial.println(); Serial.print("Capteur 5:"); printTemperature(Sensor5) ; Serial.println(); Serial.print("Capteur 6 :"); printTemperature(Sensor6) ; Serial.println(); Serial.print("Capteur 7 :"); printTemperature(Sensor7) ; Serial.println(); Serial.print("Capteur 8 :"); printTemperature(Sensor8) ; Serial.println();}void printTemperature(DeviceAddress deviceAddress){ float tempC =sensor.getTempC(deviceAddress); if (tempC ==-127,00) { Serial.print("Erreur du capteur !"); } else { Serial.print("C:"); Serial.print(tempC); }} void printProgramName() { Chemin de chaîne =__FILE__; int barre oblique =chemin.lastIndexOf('\\'); String programName =path.substring(slash + 1); int point =nom_programme.lastIndexOf('.'); nom_programme =nom_programme.substring(0, point); Serial.print("\nVersion du programme :"); Serial.println(programName);}void getSensorsOnBus() { Serial.print("Nombre de capteurs trouvés sur le bus :"); Serial.println(sensors.getDeviceCount());} Pièces et boîtiers personnalisés
Boîtier imprimable 3D - boîtier imprimable bottom3D - boîtier imprimable top3D - monture sub-d 9 Schémas
schéma de base, sans module rs232