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

Архитектурная модель «Умная остановка» с автоматической тентой

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

Arduino Nano R3 (компактный) 1
Сервопривод MG995 (высокий момент) 1
Фоторезисторы (восточный и западный) 2
Датчик дождя 1
Высокояркие белые LED 6
Резисторы 220 Ом 3
Макетная плата, перемычки, клеммники, держатели батарей (9В + 4×AA) 1 компл.

О проекте

Улучшенная версия архитектурной модели остановки общественного транспорта (размер 1.5×1 м). Основные изменения по сравнению с v1.0:

Алгоритм работы

Код

#include <VarSpeedServo.h>
VarSpeedServo servo;

int easternLight = 0, westernLight = 0, rainSensed = 0, sunshadePosition = 0;
int rainThreshold = 512;
int sunshadeExpanded = 120, sunshadeContracted = 60;
int ambientLighting = 0, turnOnLightsOn = 150, ledIntensity = 0, ledPower = 0;
int servoSpeed = 20;
bool debugging = false;

void setup() {
  pinMode(A4, OUTPUT); // внутреннее освещение
  pinMode(A5, OUTPUT); // уличный фонарь
  pinMode(A1, INPUT);  // запад
  pinMode(A2, INPUT);  // восток
  pinMode(A3, INPUT);  // дождь аналог
  pinMode(2, INPUT);   // дождь дискрет
  servo.attach(A0);
  servo.write(sunshadeContracted, servoSpeed, true);
  if (debugging) { Serial.begin(9600); Serial.println("*** DEBUGGING STARTED ***"); }
}

void oya_mydebug(String text, int value = NULL) {
  if (debugging) {
    Serial.print(text);
    if (value) { Serial.print(" = "); Serial.println(value); } else Serial.println();
  }
}

void expand_collapse(int easternLight, int westernLight) {
  if (easternLight <= westernLight) { // рассвет
    oya_mydebug("It's sunrise");
    if (sunshadePosition != sunshadeExpanded) {
      servo.write(sunshadeExpanded, servoSpeed, true);
      oya_mydebug("Sunshade expanded");
    }
  }
  if (easternLight > westernLight) { // закат
    oya_mydebug("Sun is going down");
    if (sunshadePosition != sunshadeContracted) {
      servo.write(sunshadeContracted, servoSpeed, true);
      oya_mydebug("Sunshade contracted");
    }
  }
}

void loop() {
  easternLight = analogRead(A2);
  westernLight = analogRead(A1);
  rainSensed = analogRead(A3);
  sunshadePosition = servo.read();
  ambientLighting = (easternLight + westernLight) / 2;

  oya_mydebug("easternLight", easternLight);
  oya_mydebug("westernLight", westernLight);
  oya_mydebug("rainSensed", rainSensed);
  oya_mydebug("sunshadePosition", sunshadePosition);
  oya_mydebug("ambientLighting", ambientLighting);

  if (rainSensed < rainThreshold) { // дождь
    oya_mydebug("It's raining...");
    if (sunshadePosition != sunshadeExpanded) {
      servo.write(sunshadeExpanded, servoSpeed, true);
      oya_mydebug("Sunshade expanded");
    }
  } else { // нет дождя
    oya_mydebug("It is not raining...");
    if (ambientLighting <= turnOnLightsOn) { // темно
      oya_mydebug("It's getting dark, turning on the lights");
      ledPower = (turnOnLightsOn - ambientLighting) * 4;
      oya_mydebug("ledPower", ledPower);
      analogWrite(A5, ledPower);
      analogWrite(A4, ledPower);
      expand_collapse(easternLight, westernLight);
    } else { // светло
      oya_mydebug("A lot of sunshine, turn off lights");
      analogWrite(A5, 0);
      analogWrite(A4, 0);
      expand_collapse(easternLight, westernLight);
    }
  }
  if (debugging) { Serial.println("********************"); delay(5000); }
  else delay(100);
}

Схемы

Схема подключения всех компонентов к Arduino Nano.

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

  1. Модельные поезда Lionel: история, производство и будущее
  2. Робот для сортировки мусора на Google Coral Edge TPU
  3. Максимизация повторяющейся выручки с умными расходниками: Игролом для производителей станков
  4. Автоматическое управление модельной железной дорогой на Arduino — DIY-контроллер поезда
  5. Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
  6. SPRINT 20: линейный токарный автомат для высокоточной серийной обработки
  7. Основы сервопрессов: мощность, точность и эффективность
  8. Серводвигатели: принцип работы и значение
  9. Максимизация точности: правильное сочетание редукторов (gearheads) с сервоприводами
  10. Цикл ECS G86 расточки с функцией остановки шпинделя