Temperatuuri andur, Servo mootor

Katse 4.1 – Temperatuuri andur

Используемые компоненты:

  • Arudiono Uno 1 шт
  • Плата 1 шт
  • Температурный датчик 1 шт
  • Провода 4 шт

Схема соединения:

Код:

const int temperaturePin = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{

float voltage, degreesC, degreesF;
// kasutame analogRead(), mis tagastab sisendi väärtused vahemikul 0 ... 1023.
// koostasime getVoltage() funktsioon, mis tagastab pingeväärtus  0 ... 5,

voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;
// degreesC = voltage * 100.0;
degreesF = degreesC * (9.0/5.0) + 32.0;
Serial.print("voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.print(degreesC);
Serial.print(" deg F: ");
Serial.println(degreesF);


//Ekraanil ilmub järgmine tekst: "voltage: 0.73 deg C: 22.75 deg F: 72.96"
delay(1000); // ootame 1 sek
}

float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
// teisendame pinge vahemikust 0,0 ... 5,0 V, vahemikku 0 до 1023.
}

Пояснение кода:

Цель программы: Измерить температуру с аналогового температурного датчика, подключенного к пину, и вывести значения температуры в Цельсиях и Фаренгейтах в Serial Monitor.

  • Считываем аналоговый сигнал с датчика температуры.
  • Переводим его в вольты.
  • Преобразуем в градусы Цельсия (и Фаренгейта для друзей из Техаса).
  • Выводим в Serial Monitor.
  • Повторяем это каждую секунду.
  • const int temperaturePin = 0; – Объявляем константу — номер аналогового пина, к которому подключён температурный датчик.
  • Serial.begin(9600); – Открываем серийное соединение со скоростью 9600 бод.
  • voltage = getVoltage(temperaturePin); – Вызываем нашу самописную функцию getVoltage() для считывания напряжения с датчика.
  • degreesC = (voltage – 0.5) * 100.0; – Переводим напряжение в температуру.
    • Предполагаем, что 0.5 В — это 0°C.
  • degreesF = degreesC * (9.0/5.0) + 32.0; – Переводим температуру в градусы Фаренгейта
  • delay(1000); – Пауза в 1000 миллисекунд (1 секунда)

Katse 4.2. – Servo kasutamine

Используемые компоненты:

  • Arudiono Uno 1 шт
  • Сервопривод 1 шт
  • Провода 4 шт

Схема соединения:

Код:

// Paljud saadaolevad teegid (library’d) on leitavad aadressilt http://arduino.cc/en/Reference/Libraries

#include <Servo.h> // teavitame Arduino IDE-d, et kasutame mootorite juhtimiseks mõeldud Servo.h teeki

// Kui teek on lisatud, saame kohe kasutada selle funktsioone.
// Servo teegi funktsioonide nimekirja leiad: http://arduino.cc/en/Reference/Servo
// Enamik teeke on kättesaadavad menüüst "File / Examples".

Servo mootor; // Loome objekti nimega "mootor", millega juhime pöördemootorit (servomootorit)

void setup()
{
  // Seome mootori juhtimise digitaalse pinni 9 külge.
  // Kui kasutad rohkem kui ühte mootorit, peab iga uus mootor olema seotud eraldi digitaalse pordiga.
  mootor.attach(9); // Ühendame mootori juhtimise digitaalpordi 9 külge. See peab olema PWM-toega väljund.
}

void loop()
{
  int asend;

  mootor.write(90); // Pöörame mootori asendisse 90 kraadi
  delay(1000); 
  mootor.write(180); // Pöörame mootori 180 kraadi
  delay(1000);
  mootor.write(0); // Pöörame mootori tagasi 0 kraadi
  delay(1000);

  // Mootori pööramine aeglaselt päripäeva (0 → 180 kraadi)
  for(asend = 0; asend < 180; asend += 2)
  {
    mootor.write(asend); // Muudame mootori asendit
    delay(20); // Lühike paus sujuvaks liikumiseks
  }

  // Mootori pööramine aeglaselt vastupäeva (180 → 0 kraadi)
  for(asend = 180; asend >= 0; asend -= 1)
  { 
    mootor.write(asend); // Muudame mootori asendit
    delay(20); // Lühike paus sujuvaks liikumiseks
  }
}

Пояснение кода:

Этот код управляет сервомотором (то есть маленьким моторчиком, который может точно поворачиваться на заданный угол от 0 до 180 градусов). Используется библиотека Servo.h!

  • Используется библиотека Servo.h для лёгкого управления моторами.
  • Сервомотор подключается к цифровому пину 9.
  • Код демонстрирует как резкие, так и плавные повороты сервомотора.
  • #include <Servo.h> – Подключаем библиотеку Servo
  • Servo mootor; – Создаём объект mootor. Это как пульт дистанционного управления, только для мотора.
  • mootor.attach(9); – Подключаем мотор к цифровому пину 9.

Ülesanne 4 – Temperatuuritundlik servolülitus(Kasvuhoone temperatuuri reguleegimine)

Описание работы:

  1. Управление сервомотором на основе температуры:
    Если температура 20 °C или ниже, сервомотор перемещается в положение 0° (например, окно теплицы закрывается). Если температура 30 °C или выше, сервоперемещается в положение 180° (окно открывается для охлаждения).
    Движение сервомотора должно быть плавным, а не скачкообразным (используется движение с небольшими шагами).
  2. Автоматическое освещение с фотореле:
    Если окружающее освещение слабое (темно), светодиод включается автоматически. Если освещения достаточно, светодиод выключается.

Используемые компоненты:

  • Arudiono Uno 1tk
  • Плата 1 шт
  • Светодиод 5 шт
  • Транзистор 220 Om 1шт
  • Транзистор 10 kOm 1шт
  • Провода 12 шт
  • Фоторезистор 1 шт
  • Сервомотор 1 шт
  • Термодатчик 1 шт

Схема соединения:

Код:

#include <Servo.h> // teavitame Arduino IDE-d, et kasutame mootorite juhtimiseks mõeldud Servo.h teeki

Servo mootor; // Loome objekti nimega "mootor", millega juhime servomootorit

// Määrame andurite ja seadmete ühendused
const int tempPin = A0;   // TMP36 temperatuuriandur on ühendatud analoogsisendiga A0
const int lightPin = A1;  // Fototakisti on ühendatud analoogsisendiga A1
const int ledPin = 13;     // LED on ühendatud digitaalpordiga 7

void setup()
{
  Serial.begin(9600);        // Alustame sarjaväljastust temperatuuri ja valguse taseme kuvamiseks
  mootor.attach(9);          // Ühendame mootori juhtimise digitaalpordi 9 külge
  pinMode(ledPin, OUTPUT);   // Määrame LED-i väljundiks
}

void loop()
{
  // --- Temperatuuri lugemine ---
  int tempRaw = analogRead(tempPin);            // Loeme toorväärtuse TMP36 andurilt
  float voltage = tempRaw * 5.0 / 1023.0;        // Teisendame pinge väärtuseks
  float temperatureC = (voltage - 0.5) * 100.0;  // Teisendame kraadideks Celsiuse järgi

  Serial.print("Temperatuur: ");
  Serial.print(temperatureC);
  Serial.println(" C");

  // --- Mootori liigutamine sõltuvalt temperatuurist ---
  if (temperatureC <= 20) {
    liigutaSujuvalt(mootor.read(), 0);           // Kui külm — sulgeme akna (0°)
  }
  else if (temperatureC >= 30) {
    liigutaSujuvalt(mootor.read(), 180);         // Kui kuum — avame akna (180°)
  }

  // --- Valgustaseme lugemine ---
  int lightLevel = analogRead(lightPin);         // Loeme fototakistilt väärtuse

  Serial.print("Valgustase: ");
  Serial.println(lightLevel);

  // --- LED-i juhtimine ---
  if (lightLevel < 500) {
    digitalWrite(ledPin, HIGH);                  // Kui valgust on vähe → LED sisse
  }
  else {
    digitalWrite(ledPin, LOW);                   // Kui valgust piisavalt → LED välja
  }

  delay(1000); // Väike paus enne uut lugemist
}

// --- Funktsioon mootori sujuvaks liigutamiseks ---
void liigutaSujuvalt(int algus, int siht) {
  int samm = (algus < siht) ? 1 : -1;             // Määrame liikumise suuna
  for (int pos = algus; pos != siht; pos += samm) {
    mootor.write(pos);                           // Liigutame mootorit väikeste sammudega
    delay(15);                                   // Väike viivitus sujuvaks liikumiseks
  }
}

Процесс работы:

Проект имитирует работу умной системы управления теплом и освещением в теплице:

Устройство реагирует на температуру воздуха и уровень освещения в помещении. Оно управляет:

  • Сервомотором (например, для открытия/закрытия окна в теплице)
  • LED-индикатором (освещение в тёмное время)

Температурный контроль окна (через сервомотор)

  • Температура считывается с аналогового температурного датчика.
  • Далее значение переводится в градусы Цельсия.
  • Если температура ≤ 20°C – считается, что в теплице прохладно:
    • Сервомотор плавно переводится в положение , т.е. окно закрывается.
  • Если температура ≥ 30°C – слишком жарко:
    • Сервомотор плавно переводится в положение 180°, т.е. окно полностью открывается для проветривания.
  • Сервомотор не дёргается резко, а движется плавно — по одному градусу с задержкой 15 мс между шагами

Автоматическое освещение (LED)

  • Освещённость измеряется через фоторезистор
  • Если значение освещённости < 500 — темно, включается LED
  • Если значение ≥ 500 — светло, LED выключается

Вывод данных в Serial Monitor

Каждую секунду:

  • Показывается текущая температура в градусах Цельсия.
  • Показывается уровень освещённости.

Видео:

Применение термодатчика и сервомотора в разных проектах:

Учебные и хобби-проекты

  • Автоматическое окно для теплицы — когда жарко, открывается; когда прохладно — закрывается.
  • Терморегулируемая вентиляция — вентиляционная заслонка открывается при перегреве.
  • Мини-печь на Arduino — следит за температурой и автоматически открывает дверцу.
  • DIY-переключатель для вентилятора — мотор включает/отключает поток воздуха по температуре.
  • Смарт-будильник с реакцией на температуру — окно приоткрывается, если слишком душно.

Умный дом

  • Термоуправляемые жалюзи — открываются днём при перегреве комнаты.
  • Безопасный душ — если температура воды > 45°C, сервомотор перекрывает поток.
  • Автоматическая форточка в ванной — проветривает помещение при высоком уровне пара или тепла.
  • Подача тёплого пола — сервопривод регулирует кран подачи воды.

Автомобильные проекты

  • Контроль перегрева двигателя — при достижении опасной температуры сервомотор открывает капот или активирует охлаждение.
  • Автоматический люк — открытие при перегреве салона.
  • Температурная вентиляция в багажнике — особенно полезна для перевозки животных или продуктов.

Робототехника и мехатроника

  • Робот, реагирующий на температуру поверхности — например, не наступает на горячее.
  • Пожарный робот — определяет очаг и открывает заслонку для тушения.
  • Эмоции робота — при перегреве опускает “голову” или “потеет” (движение через сервомотор).

Арт и инсталляции

  • Инсталляция “Дышащая скульптура” — реагирует на тепло людей и «открывается».
  • Кинетическое искусство — сервомоторы двигают элементы конструкции в зависимости от температуры.
  • Тепловые портреты — термодатчик управляет положением световых фильтров.

Научные и лабораторные приборы

  • Инкубатор — поддерживает заданную температуру, открывая или закрывая заслонки.
  • Камера для химических реакций — управляет вентиляцией по перегреву.
  • Калибровка оборудования — измерение точной температуры с возможностью регулировки положения сенсора.