Arduino - Capteur de température - Moteur servo

Ce tutoriel présente comment utiliser un Arduino et un capteur de température DS18B20 pour contrôler un moteur servo. Plus précisément, l'Arduino est programmé pour mesurer continuellement la température à l'aide du capteur DS18B20. Le moteur servo est ensuite ajusté selon les règles suivantes :

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×DS18B20 Temperature Sensor (WITH Adapter)
1×DS18B20 Temperature Sensor (WITHOUT Adapter)
1×Servo Motor
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Buy Note: Many DS18B20 sensors available in the market are unreliable. We strongly recommend buying the sensor from the DIYables brand using the link provided above. We tested it, and it worked reliably.

À propos du moteur servo et du capteur de température

Si vous ne connaissez pas le moteur servo et le capteur de température (brochage, fonctionnement, programmation...), renseignez-vous sur ces éléments dans les tutoriels suivants :

Diagramme de câblage

  • Schéma de câblage avec plaque d'essai
Schéma de câblage du servo moteur Arduino DS18B20

This image is created using Fritzing. Click to enlarge image

  • Schéma de câblage avec adaptateur (recommandé)
Schéma de câblage du servo-moteur du capteur de température Arduino

This image is created using Fritzing. Click to enlarge image

Nous vous suggérons d'acheter un capteur DS18B20 équipé d'un adaptateur de câblage pour une connexion facile. L'adaptateur intègre une résistance, éliminant ainsi le besoin d'une résistance séparée dans le câblage.

Code Arduino - Capteur de température déclenche un moteur servo

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-temperature-sensor-servo-motor */ #include <Servo.h> #include <OneWire.h> #include <DallasTemperature.h> const int SERVO_PIN = 5; // Arduino pin connected to Servo Motor's pin const int SENSOR_PIN = 2; // Arduino pin connected to DS18B20 sensor's DATA pin const float TEMPERATURE_THRESHOLD = 20; // °C Servo servo; // create servo object to control a servo OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensor(&oneWire); // pass oneWire to DallasTemperature library float temperature; int angle; void setup() { Serial.begin(9600); // initialize serial servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(0); sensor.begin(); // initialize the sensor } void loop() { sensor.requestTemperatures(); // send the command to get temperatures temperature = sensor.getTempCByIndex(0); // read temperature in Celsius if (temperature > TEMPERATURE_THRESHOLD) angle = 90; // set angle to 90 degree else angle = 0; // set angle to 0 degree servo.write(angle); // rotate servo motor // print to serial Serial.print("Temperature: "); Serial.print(temperature); Serial.print("°C => servo angle: "); Serial.println(angle); }

Étapes rapides

  • Effectuez le câblage entre l'Arduino, le capteur de température et le servo-moteur comme le montre le schéma ci-dessus.
  • Connectez l'Arduino au PC via un câble USB.
  • Ouvrez l'Arduino IDE, sélectionnez la bonne carte et le bon port.
  • Naviguez vers l'icône Libraries sur la barre gauche de l'Arduino IDE.
  • Recherchez "DallasTemperature", puis trouvez la bibliothèque DallasTemperature de Miles Burton.
  • Cliquez sur le bouton Install pour installer la bibliothèque DallasTemperature.
Bibliothèque de température Dallas Arduino
  • On vous demandera d'installer la dépendance de la bibliothèque.
  • Cliquez sur le bouton Install All pour installer la bibliothèque OneWire.
Bibliothèque onewire Arduino
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload de l'IDE Arduino pour charger le code sur Arduino
  • Modifiez la température autour du capteur de température
  • Observez le changement du moteur servo
  • Consultez le résultat sur le moniteur série, cela ressemble à ce qui suit :
COM6
Send
Temperature: 19.2°C => servo angle: 0 Temperature: 19.5°C => servo angle: 0 Temperature: 19.6°C => servo angle: 0 Temperature: 19.9°C => servo angle: 0 Temperature: 20.2°C => servo angle: 90 Temperature: 20.7°C => servo angle: 90 Temperature: 21.3°C => servo angle: 90
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Arduino - Le capteur de température active le moteur servo avec une tolérance

Pendant le fonctionnement, la température peut fluctuer au-dessus ou en dessous du seuil, entraînant des ajustements rapides et constants du moteur servo. Cela peut se traduire par des vibrations au lieu d'une rotation douce vers l'angle désiré. Pour atténuer ce problème, une tolérance peut être intégrée au seuil. Le code suivant illustre comment mettre en œuvre cette solution :

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-temperature-sensor-servo-motor */ #include <Servo.h> #include <OneWire.h> #include <DallasTemperature.h> const int SERVO_PIN = 5; // Arduino pin connected to Servo Motor's pin const int SENSOR_PIN = 2; // Arduino pin connected to DS18B20 sensor's DATA pin const float TEMPERATURE_THRESHOLD = 20; // °C const float TOLERANCE = 0.5; // °C Servo servo; // create servo object to control a servo OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensor(&oneWire); // pass oneWire to DallasTemperature library float temperature; int angle; void setup() { Serial.begin(9600); // initialize serial servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(0); sensor.begin(); // initialize the sensor } void loop() { sensor.requestTemperatures(); // send the command to get temperatures temperature = sensor.getTempCByIndex(0); // read temperature in Celsius if (temperature > (TEMPERATURE_THRESHOLD + TOLERANCE)) angle = 90; // set angle to 90 degree else if (temperature < (TEMPERATURE_THRESHOLD - TOLERANCE)) angle = 0; // set angle to 0 degree servo.write(angle); // rotate servo motor // print to serial Serial.print("Temperature: "); Serial.print(temperature); Serial.print("°C => servo angle: "); Serial.println(angle); }

Le code présenté ci-dessus spécifie un seuil de 20°C et une tolérance de 0,5°C. Les conditions suivantes s'appliquent :

  • Si la température est inférieure à 19,5°C, l'angle du moteur servo est ajusté à 0°.
  • Si la température est supérieure à 20,5°C, l'angle du moteur servo est ajusté à 90°.
  • Si la température est entre 19,5°C et 20,5°C, aucun ajustement n'est effectué sur l'angle du moteur servo.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!