Оцініть цю публікацію!
[Усього: 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).
- Реле: Двоканальне реле керує двигуном. Коли реле активоване, воно замикає контакти, що дозволяє струму протікати через двигун, викликаючи його обертання в певному напрямку.
- Логіка управління: Скетч порівнює стан датчиків освітленості. Якщо лівий датчик виявляє менше світла, ніж правий, двигун обертається вліво, щоб навести трекер на більш освітлену сторону. І навпаки, якщо правий датчик виявляє менше світла, двигун обертається вправо. Якщо освітленість однакова, двигун зупиняється.