Arduino - sensor de temperatura - servomotor

Este tutorial muestra cómo usar un Arduino y un sensor de temperatura DS18B20 para controlar un servomotor. Específicamente, el Arduino está programado para medir continuamente la temperatura utilizando el sensor DS18B20. El servomotor se ajusta luego de acuerdo con las siguientes reglas:

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×Sensor de Temperatura DS18B20 (con Adaptador)
1×Sensor de Temperatura DS18B20 (sin Adaptador)
1×Servomotor
1×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

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.

Acerca del servomotor y del sensor de temperatura

Si no sabes sobre el servomotor y el sensor de temperatura (disposición de pines, cómo funcionan, cómo programarlos ...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

  • Diagrama de cableado con protoboard
Diagrama de cableado de Arduino DS18B20 y servomotor

This image is created using Fritzing. Click to enlarge image

  • Diagrama de cableado con adaptador (recomendado)
Diagrama de cableado de Arduino para sensor de temperatura y servomotor

This image is created using Fritzing. Click to enlarge image

Sugerimos comprar un sensor DS18B20 que viene con un adaptador de cableado para una conexión fácil. El adaptador tiene una resistencia integrada, lo que elimina la necesidad de una resistencia separada en el cableado.

Código de Arduino - Sensor de temperatura acciona el servomotor

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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); }

Pasos R\u00e1pidos

  • Realiza el cableado entre Arduino, el sensor de temperatura y el servomotor como en el diagrama anterior.
  • Conecta Arduino al PC mediante un cable USB.
  • Abre Arduino IDE, selecciona la placa y el puerto correctos.
  • Navega hasta el icono Bibliotecas en la barra izquierda del Arduino IDE.
  • Busca “DallasTemperature”, luego encuentra la biblioteca DallasTemperature de Miles Burton.
  • Haz clic en el botón Instalar para instalar la biblioteca DallasTemperature.
Biblioteca Dallas Temperature para Arduino
  • Se le pedirá que instale la dependencia de la biblioteca
  • Haga clic en el botón Instalar todo para instalar la biblioteca OneWire.
Biblioteca OneWire para Arduino
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino
  • Cambia la temperatura alrededor del sensor de temperatura
  • Observa el cambio en el servomotor
  • Observa el resultado en el Monitor Serial. Se ve a continuación:
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  

Código de Arduino - Sensor de temperatura dispara un servomotor con tolerancia

Durante la operación, la temperatura puede fluctuar por encima o por debajo del umbral, lo que provoca ajustes rápidos y constantes al servomotor. Esto puede resultar en vibración en lugar de una rotación suave hacia el ángulo deseado. Para mitigar este problema, se puede incorporar una tolerancia al umbral. El siguiente código ilustra cómo implementar esta solución:

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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); }

El código presentado arriba especifica un umbral de 20 °C y una tolerancia de 0,5 °C. Se aplican las siguientes condiciones:

  • Si la temperatura es inferior a 19,5°C, el ángulo del servomotor se ajusta a 0°.
  • Si la temperatura es superior a 20,5°C, el ángulo del servomotor se ajusta a 90°.
  • Si la temperatura está entre 19,5°C y 20,5°C, no se realiza ningún ajuste al ángulo del servomotor.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!