Со школьного возраста меня всегда интересовало устройство заводов и фабрик. Сейчас я очень жалею, что школьных экскурсий на действующие промышленные предприятия было так мало. Поэтому, чтобы занять время по вечерам и расширить кругозор, я решил построить собственную фабрику.
Фабрика будет игрушечная, что-то вроде макета. И на этом макете я смогу попробовать свои силы в разработке алгоритмов управления различными технологическими процессами. Кто-то строит макеты железных дорог, а я построю макет небольшой фабрики.
На Хабре уже было много замечательных постов, в которых авторы рассказывают о конструировании и программировании роботов на базе микропроцессорной платформы-конструктора Arduino. В основном это статьи про мобильных роботов на колесном или гусеничном шасси, автономных или с дистанционным управлением. Про промышленное применение почти ничего нет. В связи с этим предлагаю свои «пять копеек» в виде описания процесса конструирования и программирования небольшой автоматизированной системы, которой управляет Arduino.
* — не настоящем.
С чего-то наша фабрика должна начинаться? Умные люди говорят, что правильная логистика на производстве определяет успех всего предприятия.
Итак, первая автоматическая машина нашей фабрики — простой ленточный конвейер, который будет использоваться для транспортировки штучных грузов.
01. Образцы грузов, которые будут перемещаться по конвейеру.

Конвейер собран из деталей конструктора fischertechnik. Ленту приводит в движение мотор M1. Система управления построена на базе контроллера Arduino UNO. Питание всей электроники от БП на 9В.
02. Конвейер в собранном виде.

Для питания двигателя используется плата расширения DFRobot Motor Shield c силовыми ключами. Сигналы управления этими ключами поступают от выводов контроллера Arduino с функцией ШИМ. В моем случае используется только один канал из двух существующих на этой плате.
03. Схема нарисована с помощью fritzing.

Для начала я реализовал простое ручное управление конвейером. На пульте управления находятся 3 кнопки – S1, S2 и S3. Кнопка S1 включает движение ленты в одну сторону, кнопка S2 в другую сторону, ну и кнопка S3 останавливает конвейер.
04. Пульт управления с кнопками.

Вот что у меня получилось (скетч для Arduino UNO, версия IDE 1.0):
05. Процесс сборки.
На следующем этапе мне предстоит оснастить конвейер датчиками, которые позволят включать движение ленты только при наличии грузов для перемещения.
Фабрика будет игрушечная, что-то вроде макета. И на этом макете я смогу попробовать свои силы в разработке алгоритмов управления различными технологическими процессами. Кто-то строит макеты железных дорог, а я построю макет небольшой фабрики.
На Хабре уже было много замечательных постов, в которых авторы рассказывают о конструировании и программировании роботов на базе микропроцессорной платформы-конструктора Arduino. В основном это статьи про мобильных роботов на колесном или гусеничном шасси, автономных или с дистанционным управлением. Про промышленное применение почти ничего нет. В связи с этим предлагаю свои «пять копеек» в виде описания процесса конструирования и программирования небольшой автоматизированной системы, которой управляет Arduino.
* — не настоящем.
Транспортируй это
С чего-то наша фабрика должна начинаться? Умные люди говорят, что правильная логистика на производстве определяет успех всего предприятия.
«Высокопроизводительная работа любого современного предприятия невозможна без правильно организованных и работающих средств перемещения грузов – подъемно-транспортных машин. По принципу действия эти машины разделяются на две группы: машины периодического и непрерывного действия. К первым относятся краны и т.п., а ко вторым конвейеры различных типов».
Итак, первая автоматическая машина нашей фабрики — простой ленточный конвейер, который будет использоваться для транспортировки штучных грузов.
01. Образцы грузов, которые будут перемещаться по конвейеру.

Конструкция
Конвейер собран из деталей конструктора fischertechnik. Ленту приводит в движение мотор M1. Система управления построена на базе контроллера Arduino UNO. Питание всей электроники от БП на 9В.
02. Конвейер в собранном виде.

Для питания двигателя используется плата расширения DFRobot Motor Shield c силовыми ключами. Сигналы управления этими ключами поступают от выводов контроллера Arduino с функцией ШИМ. В моем случае используется только один канал из двух существующих на этой плате.
03. Схема нарисована с помощью fritzing.

Алгоритм
Для начала я реализовал простое ручное управление конвейером. На пульте управления находятся 3 кнопки – S1, S2 и S3. Кнопка S1 включает движение ленты в одну сторону, кнопка S2 в другую сторону, ну и кнопка S3 останавливает конвейер.
04. Пульт управления с кнопками.

Вот что у меня получилось (скетч для Arduino UNO, версия IDE 1.0):
/* Conveyor control system */ // Привязка входов int S1Pin = 8; int S2Pin = 9; int S3Pin = 10; // Привязка выходов int M1PWMPin = 5; int M1DIRPin = 4; // Константы скорости int motorSlowSpeed = 50; int motorNormSpeed = 130; int motroFastSpeed = 255; // Константы направления int motorFwd = LOW; int motorRev = HIGH; int S1,S2,S3 = 0; // Состояние входов int M1PWM = 0; // Скорость мотора М1 int M1DIR = 0; // Направление вращения мотора М1 int State = 0; void M1Fwd() { M1PWM = motorNormSpeed; M1DIR = motorFwd; } void M1Rev() { M1PWM = motorNormSpeed; M1DIR = motorRev; } void M1Stop() { M1PWM = 0; } void readInputs() { S1 = digitalRead(S1Pin); S2 = digitalRead(S2Pin); S3 = digitalRead(S3Pin); } void writeOutputs() { analogWrite(M1PWMPin, M1PWM); digitalWrite(M1DIRPin, M1DIR); } void setup() { // Дискретные каналы 4 и 5 выходы pinMode(M1PWMPin, OUTPUT); pinMode(M1DIRPin, OUTPUT); // Дискретные каналы 8,9 и 10 входы с включенным pullup pinMode(S1Pin, INPUT); // set pin to input digitalWrite(S1Pin, HIGH); // turn on pullup resistors pinMode(S2Pin, INPUT); digitalWrite(S2Pin, HIGH); pinMode(S3Pin, INPUT); digitalWrite(S3Pin, HIGH); Serial.begin(57600); } void loop() { readInputs(); if (S1 == LOW) { M1Rev(); } if (S2 == LOW) { M1Fwd(); } if (S3 == HIGH) { M1Stop(); } writeOutputs(); Serial.println(State, DEC); }
05. Процесс сборки.
Движемся дальше
На следующем этапе мне предстоит оснастить конвейер датчиками, которые позволят включать движение ленты только при наличии грузов для перемещения.