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

Панель солнечного трекера с двумя осями с автоматическим и ручным режимами

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

Arduino UNO
× 1
Поворотный потенциометр (общий)
× 2
LED (общий)
× 2
Кнопочный переключатель SparkFun, 12 мм
× 1
Сервоприводы (Tower Pro MG996R)
× 2
Фоторезистор
× 4
Резистор 10 кОм
× 5
Резистор 221 Ом
× 2

Необходимые инструменты и машины

Паяльник (общий)

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

Autodesk Tinkercad
IDE Arduino

Об этом проекте

Это проект, который мои ученики реализовали во время вечернего клуба Young Hackers в 2017-2018 годах. Это сложный проект для учеников начальной школы, и нам потребовалось много встреч, чтобы выполнить его. Он содержит небольшую солнечную панель на 5 В, которая может вращаться по двум осям, чтобы получить максимальную мощность от солнца. Проект основан на проекте Dual Axis Solar Tracker Project от OpenSourceClassroom.

В конечном продукте мы хотели реализовать два режима.

  • Ручной режим - управляется двумя горшками.
  • Автоматический режим - управляется четырьмя световыми датчиками.

Для этого мы запрограммировали устройство на переключение между режимами с помощью кнопки и двух светодиодных индикаторов. Когда устройство находится в ручном режиме, горит красный свет, и мы можем контролировать вращение панели по двум осям с помощью двух потенциометров. Когда устройство находится в автоматическом режиме, горит синий свет, а вращение панели определяется светом, собираемым от четырех LDR. Программирование было выполнено в tinkercad.

Студенты работали в группах в стиле производственной линии, чтобы выполнить задания. (пайка проводов, изоляция проводов, завинчивание деталей и др.)

Код

  • Код вращающейся солнечной панели
Код вращающейся солнечной панели Arduino
Окончательный код двухосной солнечной панели
 #include  // Инициализируем переменные int mode =0; int buttonState =0; int prevButtonState =0; int topLeftLight =0; int topRightLight =0; int bottomLeftLight =0; int bottomRightLight =0; int LeftLight =0; int RightLight =0; int TopLight =0; int BottomLight =0; // Объявление двух сервоприводов Servo servo_9; Servo servo_10; void setup () { pinMode (7, ВХОД); // Кнопка режима pinMode (12, OUTPUT); // Светодиодный индикатор для ручного режима pinMode (11, OUTPUT); // Светодиодный индикатор для автоматического режима pinMode (A0, INPUT); // Потенциометр для перемещения вправо-влево pinMode (A1, INPUT); // Потенциометр для движения вверх-вниз pinMode (A2, INPUT); // Датчик освещенности вверх - слева pinMode (A3, INPUT); // Датчик освещенности вверх - вправо pinMode (A4, INPUT); // Датчик освещенности внизу - слева pinMode (A5, INPUT); // Датчик света внизу - справа 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, ВЫСОКИЙ); digitalWrite (11, LOW); } else {режим =1; digitalWrite (11, ВЫСОКИЙ); digitalWrite (12, LOW); }}} prevButtonState =buttonState; задержка (50); // Ждем 50 миллисекунд if (mode ==0) {// Если режим ручной, сопоставьте значения горшков с градусами вращения servo_9.write (map (analogRead (A0), 0, 1023, 0, 180) ); servo_10.write (карта (analogRead (A1), 0, 1023, 0, 180)); } else {// если режим автоматический, отображает значения датчика на яркость света 0–100. // Каждый датчик освещенности имеет разную чувствительность и должен быть сначала протестирован // на высокие и низкие значения 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) {// Меняйте положение, только если разница в освещении больше 4% if (RightLight  LeftLight) {if (servo_9.read ()> 0) {servo_9.write ((servo_9.read () - 1)); }}} if (abs ((TopLight - BottomLight))> 4) {// Меняем положение, только если разница в освещении больше 4% if (TopLight  BottomLight) {if (servo_10.read ()> 0) {servo_10.write ((servo_10.read () + 1)); }}}}} 

Схема

Схема подключения

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

  1. Датчик DHT11 со светодиодами и пьезо-динамиком
  2. Простой датчик препятствий с Arduino
  3. Solar Tracker V2.0
  4. Солнечный трекер на основе Интернета вещей (IoT)
  5. Светодиодный куб 4x4x4 с Arduino Uno и 1sheeld
  6. Счетчик RPM на основе Arduino с новым и более быстрым алгоритмом
  7. Гальваника медью
  8. Измерение солнечной радиации с помощью Arduino
  9. Платформа солнечных панелей с сервоуправлением и отслеживанием света
  10. Солнечная панель:вопросы качества и ключевые точки контроля