Чувствительное к температуре переключение сервопривода
Описание работы
Этот код реализует температурочувствительное управление серводвигателем (servolülitus). Он считывает данные с температурного датчика, преобразует их в температуру в градусах Цельсия и управляет серводвигателем и светодиодом в зависимости от текущей температуры.
Применение в жизни
Можно привести такие примеры применений в реальности:
Умное управление вентиляцией:
- В комнате или небольшом пространстве, где требуется поддерживать определённую температуру, эта сборка может использоваться для автоматического управления вентиляционным отверстием. При повышении температуры выше заданного порога (например, 25°C), вентиляционное отверстие будет открываться (серводвигатель поворачивается на 180 градусов), позволяя свежему воздуху поступать в помещение. При понижении температуры ниже 22°C отверстие будет закрываться (серводвигатель возвращается в положение 0 градусов).
Система охлаждения серверной комнаты:
- В серверных комнатах необходимо поддерживать низкую температуру для предотвращения перегрева оборудования. Система может автоматически управлять вентиляционными отверстиями или вентиляторами на основе показаний температуры, предотвращая перегрев серверов.
Список компонентов
- Плата “Arduino UNO”.
- Макет.
- 1 Micro Servo.
- 1 Температурный датчик
- 12 провода.
- 1 резистор.
- 1 LED светодиод.
Код
#include <Servo.h>
#define TEMP_SENSOR_PIN A0 // Пин для подключения датчика температуры
#define SERVO_MOTOR_PIN 12 // Пин для подключения серводвигателя
#define LED_CONTROL_PIN 13 // Пин для подключения светодиода
Servo motor;
void setup() {
Serial.begin(9600); // Начало общения через последовательный порт
motor.attach(SERVO_MOTOR_PIN); // Подключение серводвигателя
pinMode(LED_CONTROL_PIN, OUTPUT); // Установка пина светодиода в режим вывода
}
void loop() {
int tempValue = analogRead(TEMP_SENSOR_PIN); // Считывание значения с датчика температуры
const int sensorPin = 0;
float voltageLevel, tempCelsius, tempFahrenheit;
voltageLevel = calculateVoltage(sensorPin);
tempCelsius = (voltageLevel - 0.5) * 100.0;
tempFahrenheit = tempCelsius * (9.0/5.0) + 32.0;
Serial.print("Voltage: ");
Serial.print(voltageLevel);
Serial.print(" C: ");
Serial.print(tempCelsius);
Serial.print(" F: ");
Serial.println(tempFahrenheit);
// Управление серводвигателем в зависимости от температуры
if (tempCelsius <= 22) {
motor.write(0); // Позиция серводвигателя при 22 градусах
digitalWrite(LED_CONTROL_PIN, HIGH); // Включение светодиода при низкой температуре
} else if (tempCelsius >= 25) {
motor.write(180); // Позиция серводвигателя при 25 градусах
digitalWrite(LED_CONTROL_PIN, LOW); // Отключение светодиода при высокой температуре
} else {
// Промежуточное положение серводвигателя для плавного перемещения
int motorPosition = map(tempCelsius, 22, 35, 0, 180);
motor.write(motorPosition);
}
delay(1000); // Пауза для стабилизации
}
float calculateVoltage(int pin) {
return (analogRead(pin) * 0.004882814); // Преобразование значений от 0 до 1023 в диапазон напряжений от 0 до 5 В
}
Конструкция в Tinkercad

Отчеты
Конструкция в реальности
