
Arduino на производстве*
Со школьного возраста меня всегда интересовало устройство заводов и фабрик. Сейчас я очень жалею, что школьных экскурсий на действующие промышленные предприятия было так мало. Поэтому, чтобы занять время по вечерам и расширить кругозор, я решил построить собственную фабрику.
Фабрика будет игрушечная, что-то вроде макета. И на этом макете я смогу попробовать свои силы в разработке алгоритмов управления различными технологическими процессами. Кто-то строит макеты железных дорог, а я построю макет небольшой фабрики.
На Хабре уже было много замечательных постов, в которых авторы рассказывают о конструировании и программировании роботов на базе микропроцессорной платформы-конструктора 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. Процесс сборки.
Движемся дальше
На следующем этапе мне предстоит оснастить конвейер датчиками, которые позволят включать движение ленты только при наличии грузов для перемещения.
Comments 42
Only users with full accounts can post comments. Log in, please.