Со школьного возраста меня всегда интересовало устройство заводов и фабрик. Сейчас я очень жалею, что школьных экскурсий на действующие промышленные предприятия было так мало. Поэтому, чтобы занять время по вечерам и расширить кругозор, я решил построить собственную фабрику.
Фабрика будет игрушечная, что-то вроде макета. И на этом макете я смогу попробовать свои силы в разработке алгоритмов управления различными технологическими процессами. Кто-то строит макеты железных дорог, а я построю макет небольшой фабрики.
На Хабре уже было много замечательных постов, в которых авторы рассказывают о конструировании и программировании роботов на базе микропроцессорной платформы-конструктора 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. Процесс сборки.
Движемся дальше
На следующем этапе мне предстоит оснастить конвейер датчиками, которые позволят включать движение ленты только при наличии грузов для перемещения.