Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Двухосевой солнечный трекер с авто/ручным управлением

Компоненты и материалы

Инструменты

Приложения и сервисы

О проекте

Учебный проект клуба «Young Hackers» (2017-2018). Маленькая 5В солнечная панель вращается по двум осям для максимального сбора энергии. Реализовано два режима:

Переключение режимов кнопкой с антидребезгом (50 мс). Программирование велось в Tinkercad. Ученики работали конвейерно: пайка, изоляция, сборка.

Код (Rotating solar panel code)


#include 
int mode = 0; // 0 - manual, 1 - auto
int buttonState = 0, prevButtonState = 0;
int topLeftLight, topRightLight, bottomLeftLight, bottomRightLight;
int LeftLight, RightLight, TopLight, BottomLight;
Servo servo_9; // Азимут
Servo servo_10; // Угол места

void setup() {
  pinMode(7, INPUT);       // Кнопка режима
  pinMode(12, OUTPUT);     // Красный LED (ручной)
  pinMode(11, OUTPUT);     // Синий LED (авто)
  pinMode(A0, INPUT);      // Потенциометр азимут
  pinMode(A1, INPUT);      // Потенциометр угол места
  pinMode(A2, INPUT);      // LDR верх-лево
  pinMode(A3, INPUT);      // LDR верх-право
  pinMode(A4, INPUT);      // LDR низ-лево
  pinMode(A5, INPUT);      // LDR низ-право
  servo_9.attach(9);
  servo_10.attach(10);
}

void loop() {
  buttonState = digitalRead(7);
  if (buttonState != prevButtonState) {
    if (buttonState == HIGH) {
      if (mode == 1) { mode = 0; digitalWrite(12, HIGH); digitalWrite(11, LOW); }
      else { mode = 1; digitalWrite(11, HIGH); digitalWrite(12, LOW); }
    }
  }
  prevButtonState = buttonState;
  delay(50);

  if (mode == 0) {
    servo_9.write(map(analogRead(A0), 0, 1023, 0, 180));
    servo_10.write(map(analogRead(A1), 0, 1023, 0, 180));
  } else {
    // Калибровка каждого LDR индивидуальна (min/max подбираются экспериментально)
    topLeftLight = map(analogRead(A2), 50, 980, 0, 100);
    topRightLight = map(analogRead(A3), 200, 990, 0, 100);
    bottomLeftLight = map(analogRead(A4), 170, 970, 0, 100);
    bottomRightLight = map(analogRead(A5), 250, 1000, 0, 100);

    TopLight = (topRightLight + topLeftLight) / 2;
    BottomLight = (bottomRightLight + bottomLeftLight) / 2;
    LeftLight = (topLeftLight + bottomLeftLight) / 2;
    RightLight = (topRightLight + bottomRightLight) / 2;

    if (abs(RightLight - LeftLight) > 4) {
      if (RightLight < LeftLight && servo_9.read() < 180) servo_9.write(servo_9.read() + 1);
      if (RightLight > LeftLight && servo_9.read() > 0) servo_9.write(servo_9.read() - 1);
    }
    if (abs(TopLight - BottomLight) > 4) {
      if (TopLight < BottomLight && servo_10.read() < 180) servo_10.write(servo_10.read() - 1);
      if (TopLight > BottomLight && servo_10.read() > 0) servo_10.write(servo_10.read() + 1);
    }
  }
}

Схемы

Схема монтажа (PNG).

Производственный процесс

  1. Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
  2. Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод
  3. Солнечный трекер v2.0 — продвинутая DIY система слежения за солнцем
  4. IoT-солнечный трекер на Arduino: умное управление энергией с мониторингом через Cayenne
  5. Создание интерактивного 4x4x4 светодиодного куба на Arduino Uno и 1Sheeld
  6. Высокоскоростной тахометр на Arduino: новый алгоритм измерения RPM до 2 знаков после запятой
  7. Медное гальваническое покрытие: умная система на Arduino UNO
  8. Измерение солнечной радиации на Arduino UNO с Ethernet Shield
  9. Точная солнеследующая платформа на сервоприводах для максимальной генерации энергии
  10. Качество солнечных панелей: ключевые контрольные точки для оптимальной производительности