TEMP, SERVO KATSE

4.1.Опыт с температурным датчиком/Temperatuuti andur:

const int temperaturePin = 0;

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

void loop()
{

float voltage, degreesC, degreesF;
// Сначала мы измерим напряжение на аналоговом входе. Обычно для этого мы
// использовали функцию analogRead(), которая возвращает число от 0 до 1023.
// Здесь же мы написали специальную функцию, о ней чуть дальше, под
// названием getVoltage(), которая возвращает напряжение (от 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);

// Вывод информации будет иметь вид подобно следующему:
// "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);
// Это уравнение преобразует значение напряжения от 0,0 до 5,0 В., полученное с помощью функции analogRead() с аналогового порта, в значения от 0 до 1023.
}

4.2.Опыт с серводвигателем/180 kraadine servo mootori kasutamine

#include <Servo.h> // Include the Servo library

Servo servo1; // Declare the servo object

void setup()
{
  servo1.attach(9); // Attach the servo object to digital pin 9
}

void loop()
{
  int position;

  servo1.write(90); // Rotate the servo to position 90 degrees (center position)
  delay(1000);

  servo1.write(180); // Rotate the servo to position 180 degrees (rightmost position)
  delay(1000);

  servo1.write(0); // Rotate the servo to position 0 degrees (leftmost position)
  delay(1000);

  // Change servo position gradually in forward direction
  for (position = 0; position < 180; position += 2)
  {
    servo1.write(position);
    delay(20);
  }

  // Change servo position gradually in reverse direction
  for (position = 180; position >= 0; position -= 1)
  {
    servo1.write(position);
    delay(20);
  }
}


Uued Funktisonid:

servo1.attach(9) – Эта функция устанавливает соединение между пином 9 Ардуино и сервоприводом. Она позволяет Ардуино контролировать движение сервопривода.

servo1.write(90); – Эта функция записать (write) устанавливает сервопривод в определенную позицию. Значение 90, переданное в качестве аргумента, определяет угол, на который должен поворачиваться вал сервопривода

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

https://www.tinkercad.com/things/3rHrTWE3o5F-daring-migelo-hango

Töö kirjeldus:

В классе я изучил как работает Серво Двигатель и температурный датчик. Дома я сделал схему в тинкер кард и написал код. В классе я собрал схему и заполнил эту страницу

Tunnis õppisin, kuidas servomootor ja temperatuuriandur töötavad. Kodus tegin tinker cardis skeemi ja kirjutasin koodi. Tunnis panin vooluahela kokku ja täitsin selle lehekülje

Tööpõhimõte:

Сервомотор меняет свое положение в зависимости от температуры. В задани было сказано что на 180 градусов серво мотор поворачивается после того как температура достигает 35 градусов, но я изменил необходимую температуру до 27 градусов. Причиной этого стало то что температуру в 35 градусов было достичь крайне сложно.В нулевую позицию Сервомотор встаёт когда температура ниже 26 градусов. Led работает от фоторезистора как в ночнике.

Servomootor muudab oma asendit sõltuvalt temperatuurist. Töös öeldi, et servomootor pöördub 180 kraadi, kui temperatuur saavutab 35 kraadi, kuid ma muutsin nõutava temperatuuri 27 kraadiks. Põhjuseks on see, et ma ei suutnud saavutada temperatuuri 35°C. Servomootor liigub nullist asendisse ainult siis, kui temperatuur on alla 26°C. Valgusdioodi toiteks on fototakisti. LEDi toidab fotoresistori abil nagu öölampides.

Ma kasutasin:
Üks LED
2 takisti
Arendusplaat
Arduino Uno
Juhtmed
1 Temeperaturiandur
1 Photoresistor
1 Servo Mootor

Kood:

#include <Servo.h>

const int PhotoPin = 1;
int sensorValue = 0;
int lightLevel, high = 0, low = 1023;
const int ledPin = 10;
const int temperaturePin = 0;
Servo servo1;

void setup()
{
  servo1.attach(9);
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop()
{
  // Чтение температуры и вывод результатов в серийный порт
  float voltage, degreesC, degreesF;
  voltage = getVoltage(temperaturePin);
  degreesC = (voltage - 0.5) * 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: ");
  delay(100);
  Serial.println(degreesF);
  
  // Проверка условия для управления сервоприводом и светодиодом
  if (degreesC <= 26)
  {
    autoTune(); // Вызов функции для настройки светового уровня
    lightLevel = analogRead(PhotoPin);
    lightLevel = constrain(lightLevel, 0, 255);
    analogWrite(ledPin, lightLevel);
    Serial.println("");
    delay(1000);
    int position = servo1.read(); // Чтение текущей позиции сервопривода
    Serial.println(position);
    Serial.println("");
    Serial.println(lightLevel);
    
    if (position != 0)
    {
      // Поворот сервопривода в позицию 0 градусов
      for (position = 180; position >= 0; position -= 1)
      {
        servo1.write(position);
        delay(50);
      }
    }
  }
  else if (degreesC >= 27)
  {
    autoTune(); // Вызов функции для настройки светового уровня
    lightLevel = analogRead(PhotoPin);
    lightLevel = constrain(lightLevel, 0, 255);
    analogWrite(ledPin, lightLevel);
    Serial.println("");
    delay(100);
    int position = servo1.read(); // Чтение текущей позиции сервопривода
    Serial.println(position);

    if (position != 180)
    {
      // Поворот сервопривода в позицию 180 градусов
      for (position = 0; position <= 180; position += 2)
      {
        servo1.write(position);
        delay(50);
      }
    }
  }  
}

void autoTune()
{
  if (lightLevel < low)
  {
    low = lightLevel; // Обновление значения нижнего порога светового уровня
  }
  if (lightLevel > high)
  { 
    high = lightLevel; // Обновление значения верхнего порога светового уровня
  }
  lightLevel = map(lightLevel, low + 0, high - 30, 0, 255);
lightLevel = constrain(lightLevel, 0, 255); // Ограничение значения светового уровня в диапазоне от 0 до 255
}

float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814); // Получение напряжения из аналогового пина и преобразование его в вольты
}

https://drive.google.com/file/d/1RTOOWn6E75gykSwmzby3EB2xAXd0MyP-/view?usp=share_link (Сначала на видео показывается работа фотоезистора и Led лампы. После нажатия на кнопку показываю работу Сервомотора)

Сервомоторы — это устройства, используемые для прецизионного управления положением и скоростью вращения механизмов. Они широко применяются в различных областях и системах, включая:

1.Робототехника: Сервомоторы часто используются в робототехнике для управления движением роботов. Они могут управлять поворотом суставов или механических частей робота, обеспечивая точное позиционирование и контроль движения.

2.Моделирование и управление: Сервомоторы находят применение в моделировании и управлении системами, где точность и контроль движения критичны. Например, они могут использоваться в радиоуправляемых моделях самолетов, автомобилей или кораблей.

3.Автоматизация и промышленность: Сервомоторы широко используются в автоматизированных системах и промышленных процессах. Они могут применяться в роботах-манипуляторах, станках с числовым программным управлением (ЧПУ) и других устройствах, где требуется точное позиционирование или контроль движения.

4.Авиация и аэрокосмическая промышленность: В авиации и аэрокосмической промышленности сервомоторы используются для управления поворотом и положением поверхностей управления воздушных судов. Они обеспечивают точное и надежное управление, что особенно важно для безопасности и стабильности полета.

5.Медицинская техника: В медицинской технике сервомоторы применяются для управления движением механических частей медицинских приборов и оборудования. Они могут использоваться в хирургических роботах, аппаратах для диагностики и реабилитации, обеспечивая точное управление и манипуляции.