Оцініть цю публікацію!
[Усього: 1 Середнє значення: 5]
Простий скетч для управління двигуном в сонячному трекері з використанням Arduino Nano, датчиків освітленості LM393 та двоканального реле. Датчики LM393 будуть використовуватися для визначення різниці освітленості між двома сторонами сонячного трекера, а реле буде керувати двигуном для наведення на сонце.
Необхідні компоненти:
- Arduino Nano
- Два датчики освітленості LM393
- Двигун з редуктором
- Двоканальне реле
- Резистори та інші пасивні компоненти (якщо потрібно)
Підключення:
- LM393 (лівий датчик):
- Вихід датчика (OUT) підключіть до цифрового піна Arduino (наприклад, D2).
- Земля (GND) підключіть до GND Arduino.
- Живлення (VCC) підключіть до 5V Arduino.
- LM393 (правий датчик):
- Вихід датчика (OUT) підключіть до цифрового піна Arduino (наприклад, D3).
- Земля (GND) підключіть до GND Arduino.
- Живлення (VCC) підключіть до 5V Arduino.
- Двоканальне реле:
- Перший канал реле підключіть до цифрового піна Arduino (наприклад, D4).
- Другий канал реле підключіть до цифрового піна Arduino (наприклад, D5).
- Земля (GND) підключіть до GND Arduino.
- Живлення (VCC) підключіть до 5V Arduino.
// Піни для датчиків освітленості
const int leftSensorPin = 2;
const int rightSensorPin = 3;
// Піни для реле
const int relayPin1 = 4;
const int relayPin2 = 5;
// Поріг різниці освітленості
const int threshold = 50; // Налаштуйте цей параметр відповідно до ваших потреб
void setup() {
// Ініціалізація пінів
pinMode(leftSensorPin, INPUT);
pinMode(rightSensorPin, INPUT);
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
// Вимкнення реле на початку
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
// Початок зв'язку
Serial.begin(9600);
}
void loop() {
// Зчитування значень освітленості з датчиків
int leftSensorValue = analogRead(leftSensorPin);
int rightSensorValue = analogRead(rightSensorPin);
// Обчислення різниці освітленості
int lightDifference = abs(leftSensorValue - rightSensorValue);
// Перевірка різниці освітленості та управління реле
if (lightDifference > threshold) {
if (leftSensorValue < rightSensorValue) {
// Якщо лівий датчик темніший, рухаємося вліво
digitalWrite(relayPin1, HIGH);
digitalWrite(relayPin2, LOW);
} else {
// Якщо правий датчик темніший, рухаємося вправо
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, HIGH);
}
} else {
// Якщо різниця освітленості менша за поріг, стоїмо на місці
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
}
// Виведення значень освітленості та різниці на Serial Monitor
Serial.print("Left Sensor: ");
Serial.print(leftSensorValue);
Serial.print(" Right Sensor: ");
Serial.print(rightSensorValue);
Serial.print(" Difference: ");
Serial.println(lightDifference);
// Затримка для стабільності
delay(100);
}Опис роботи скетчу:
- Датчики освітленості: Датчики LM393 використовуються для визначення різниці освітленості між лівою та правою сторонами сонячного трекера. Коли датчик виявляє світло, його вихід стає високим (HIGH), а коли темрява — низьким (LOW).
- Реле: Двоканальне реле керує двигуном. Коли реле активоване, воно замикає контакти, що дозволяє струму протікати через двигун, викликаючи його обертання в певному напрямку.
- Логіка управління: Скетч порівнює стан датчиків освітленості. Якщо лівий датчик виявляє менше світла, ніж правий, двигун обертається вліво, щоб навести трекер на більш освітлену сторону. І навпаки, якщо правий датчик виявляє менше світла, двигун обертається вправо. Якщо освітленість однакова, двигун зупиняється.