Лифт на ардуино схема

Mini Elevator © CC BY-SA

A working Arduino-powered elevator!

This is a working 5-story elevator. It is 3 feet tall. We put a lot of work into this.

Let’s cut to the chase … here’s how it works!

We’ve been playing with Arduino and embedded processing/IoT for a couple of years now, but most projects we have done (and most we have seen) are pretty simple. We’ve been looking for something “real” to do for a long time.

This summer, I went to an awesome summer camp, Project Ember . It is in the San Francisco Bay Area and it is awesome! Kids design and build large wood structures with power tools. Once I knew I could do that, I wanted to combine the physical building with Arduino and this is the outcome!

The hardest part of figuring this out was the motor and floor detection technique. A real elevator probably uses a huge A/C motor with sensors at each floor location. We certainly could use this approach with a smaller-scale but putting sensors at each floor is a lot of wiring, and we would have concerns about sensitivity and alignment, etc. On the other hand, a stepper motor can be positioned precisely … but we would have to know exactly where we are and how far we have to go to do that.

Fortunately, we have done something similar, in our earlier “ fancy calendar ” project. There, we had figured out how to use stepper motors and more interestingly, to save their positions in non-volatile memory (EEPROM on the Arduino). So we’ll use the same approach here. This way we don’t need any position sensors at all, we’ll just count on our ability to count the number of steps that we move our stepper motor.

The other design concern was with the elevator call buttons. They need to be lit momentary contact switches, but the lights need to be controllable independently from the button. We found some suitable ones on eBay .

Buttons with separate lights (We bought from eBay, they should look like:

Источник

Arduino.ru

Модель лифта на Mega2650

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Доброго всем дня!

У меня давняя мысль сделать действующую модель электрического лифта с основной функциональностью:

— 4 этажа в модели (можно добавлять)

— кнопки вызова из лифта и с этажей

— освещение в лифте

— индикатор (экран) положения лифта

— экран для общей информации (в машинном зале над шахтой лифта)

Исполнительный механизм — шаговый двигатель Nema17 (17HS8401S) с драйвером HY-DIV268N-5V, зубчатые колеса и зубчатый ремень для 3D принтера, роликовые подшипники, блоки и противовес. Все остальные детали также имеются в наличии (все, конечно, заказано с «алика»).

Накидал проект на Fritzing (Я.Диск 2,5 МБ), хотел по возможности узнать ваши мнения и предложения, т.к. с электроникой пока на «вы» (с программированием дела обстоят лучше, код пока не писал).

Основные вопросы по схемотехнике, где испытываю сомнения: 1) хватит ли питания с платы всем периферийным устройствам (двигатель, естественно, запитан от 12В)? 2) можно ли на серводвигатель (для управления дверью кабины) подать 12В? (сейчас в схеме использовал делитель напряжения для выдачи 5В, его также неплохо было бы проверить. ) 3) насколько правильно подобраны сопротивления резисторов? 4) какие еще возможны оптимизации в схеме?

Попутно возникают и другие мысли, например, реализовать схему на 2 микроконтроллерах (напр. Arduino + ESP32 или ST32 — есть в наличии), для разгрузки и без того не слишком производительного SoC.

Буду рад любым комментариям!

Источник

Arduino.ru

«Лифт» (подъемник) на 2 этажа

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Здравствуйте. Исходные материалы: ардуино, двойной релейный модуль, 2 концевика и кнопка( вообще 3 кнопки вызова — внизу, наверху и в лифте — каждая из которых может отправить лифт в любом направлении взависимости от положения лифта).

Набросал пример для управления светодиодами вместо реле. Но так как это мой первый код, он оказался не рабочим (хотя по моей логике должно все работать), возможно подключение не правильное.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Для начала, это как бы не весь код. А где собственно включение и выключение моторов (светодиодов) в зависимости от всех этих кнопок и флагов?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Так за этим и на форум пришел. чтобы моторы начали включаться.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Включение — если digitalRead(1) ==HIGH (кликнули кнопку вызова)- то проверяем какой концевик нажат (допустим digitalRead(2) == HIGH -лифт внизу) и определяем переменную flagDirection = 4 или 5 (верх или вниз, в данном случае 4(вверх)) для digitalWrite(flagDirection,HIGH) — мотор начал движение

Выключение — если переменная flagMotion включена(лифт движется), а она включается после клика по кнопке вызова — то проверяем положение лифта по концевикам в функции Direction — если flagMotion =True и нажат концевик Вверх(лифт доехал до верха), то объявляем переменную flagMotion =false и тогда в void loop условие if flagMotion не выполняется — соответсвенно digitalWrite(flagDirection,HIGH) не выполняется.

я пишу и читаю это так)

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Сорри, да, запуск-то есть. А остановка мотора где?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

поправьте пожалуйста если я ошибаюсь — я думал, что если условие не выполняется (т.е. flagMotion не равен True), то и сигнал на digitalWrite(flagDirection,HIGH) отправлятся не будет

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

От этого HIGH на выводе не пропадёт. Надо LOW записать. Возможно в Direction(), где концевики проверяете и сбрасываете флаг flagMotion=false.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

пробовал в void loop дописывать

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вы в логике запутались. Вынесите проверки в функции с говорящими именами. Сразу станет намного легче разбираться.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

запутаться запутался, прошу помогите распутаться. первый раз пишу

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

запутаться запутался, прошу помогите распутаться. первый раз пишу

Ну я имел ввиду так:

Если едем и сработал концевик, то остановить соответствующий двигатель и сбросить флаг. Но не факт, что этого достаточно. (4 и 5 сами проверьте кто там верх, кто низ)

Ещё возможно стоит добавить:

пока едем — нечего кнопки давить.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

попробовал, не работает. я все думаю, что проблемы с подключением

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Блин, фига се глюк! написал обстоятельный ответ, а он пропал :( Только маленький кусочек остался

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

запутаться запутался, прошу помогите распутаться. первый раз пишу

Я думал, что я Вам уже помог фразой

Вынесите проверки в функции с говорящими именами. Сразу станет намного легче разбираться.

Но, Вы, похоже, её не поняли.

Хорошо, давайте подробнее. Вот смотрите, что у Вас написано, например

начнём с того, что комментарий неправильный — последняя строка — она про верхний концевик, а в комментарии о нём ничего не сказано.

Сделайте несколько простых вещей (привыкните их делать всегда) и Вам сразу станет намного легче писать программы и искать в них ошибки.

1. Никогда не используйте числовые номера пинов — только названия

2. Все проверки и действия выделите в отдельные функции с говорящими названиями. Например

Теперь, Вы никогда не пишете «if (digitalRead . «, но всегда пишете «if (isUpperLimitSwitchActive() . «

Точно также, Вы никогда не пишете «digitalWrite(. «, а пишете «goUp()»

Уже одно только это повысит читабельность программы в разы, и Вы будете меньше путаться.

2. Вы завели ТРИ флага и запутались в них. Это немудрено. Три флага дают 8 состояний и в них чёрт ногу сломит. Уйдите от использования флагов и работайте через состояния системы. Их меньше и они понятнее. Обязательно дайте им имена (ни в коем случае не числа. ). Например,

И везде используйте состояния, тогда флаги не нужны вовсе. А с так названными состояниями, им и комментарии не нужны — они сами себя комментируют.

Вот теперь попробуйте переписать программу с учётом всего, что я написал, и почувствуйте разницу.

Два замечания напоследок:

1) уйдите от пина 1. Используйте другой. Привыкайте использовать пины 0 и 1 только по прямому назначению. Потом поймёте почему и когда можно, а когда нельзя, пока же — только для UART и ни для каких кнопок

2) у Вас что, одна кнопка вызова?

А если хотите научится писать такие программы грамотно, то у Вас просто изначально неверный подход. Это классическая автоматная задача и делать её надо автоматом. Вот посмотрите пример со светофором на стр. 8+ вот в этой книге. С лифтом всё точно также. Оцените как элегантно и просто получается с таблицей состояний и переходов — проще некуда. Вот так это и надо делать.

Источник

Arduino управляет промышленным грузовым лифтом

Дисклеймер: Если вы разбираетесь в электронике, то некоторые технические решения, описанные в этой статье повергнут вас в шок и ужас, а также вызовут непреодолимое желание оторвать автору руки. Я предупредил.
Немного о том как устроены грузовые подъемники и небольшая история создания системы управления для шестиэтажного грузового лифта на базе платы Arduino совместимого контроллера Seeeduino (ATmega 328).
Довольно много картинок и букв!

Я подрабатываю электриком в небольшой фирме, которая занимается производством и монтажом грузовых подъемников. На эту работу активно принимают студентов, обучающихся по близкому профилю и они охотно соглашаются. В плане творчества такая работа просто рай — никто не лезет в электрические дела и есть полная свобода действий как в выборе электромонтажных материалов (лишь бы не сильно дорого), так и в способах реализации готового продукта (лишь бы работало). Так как основная масса заказов сводится к простейшим подъемникам с двумя остановками, то такую работу не назовешь сложной, и даже студент без опыта быстро втягивается.
В общем, благодатная нива для экспериментов!

Как правило, вся электрика собирается по уже готовым схемам, которые построены на примитивной логике с применением реле. Основными элементами в типичном решении являются два магнитных пускателя (ПВ и ПН на рисунке), которые осуществляют запуск электрической тали (двигатель с редуктором и барабаном, на который намотан трос), концевые выключатели этажей (К1 и К2), кнопки управления пуском (КН) и концевые выключатели цепи безопасности (КД), которые блокируют запуск лифта (например, если открыты двери шахты).

Вся логика работы грузового лифта сводится к тому, что пока нажаты все концевые выключатели в цепи безопасности (на рисунке она начинается от L1 и до концевых выключателей К1 и2), соблюдена фазировка, двигатель не перегрелся и не нажата кнопка Стоп, на кнопки управления подъемником подается напряжение. В случае нажатия одной из кнопок, запускается соответствующий магнитный пускатель, который срабатывая, по сути образует триггер, который разомкнется, как только лифт доедет до этажного концевого выключателя.
Вся канитель начинается после того, как количество этажей, на которые должен приезжать грузовой лифт становится больше двух. Например, для трехэтажного подъемника схема пополнится одним промежуточным реле, которое будет перекоммутировать схему для обеспечения остановки на среднем этаже. Для четырехэтажного подъемника таких реле понадобится уже два, для пятиэтажного — три и так далее. И если предыдущий рисунок Вы раскусили как орешек, то представляю Вашему вниманию схему управления девятиэтажным грузовым подъемником:
В наше время такая сложность схемы управления — это смертный грех. Разумеется, первое что предложит сделать разумный инженер — использовать программируемый логический контроллер (ПЛК). Правда стоимость комплектующих в таком случае возрастет. Но почему бы не применить здесь дешевую Arduino? Порыскав в сети, я нашел несколько интересных проектов с макетами пассажирских лифтов из всем знакомого LEGO и решил, что уж с грузовым лифтом эта платка точно должна справиться. Как раз к случаю, поступил заказ на шестиэтажный подъемник.

Кроме того, у меня уже довольно давно лежала без дела плата Seeeduino (ATmega 328), и китайский LCD дисплей. Если уж ваять контроллер — то с дисплеем! И первым делом я подсчитал количество портов на плате, которые можно использовать. А их на Seeeduino — 14 дискретных и 6 аналоговых (которые разумеется работают и как дискретные). Идея была проста: повесить каждую кнопку и концевой этажный выключатель на свой порт, а магнитные пускатели включать с помощью 5VDC/220VAC реле. Цепь безопасности также должна иметь свой порт. Итого, для шестиэтажного грузового лифта необходимо 13 дискретных входов и два выхода для реле. Но куда же подключить дисплей? На помощь приходит сдвиговый регистр PCF8574, который позволит управлять им всего по двум проводам (про это есть пост). Таким образом, используя макетную плату, 13 подтягивающих резисторов и две лампочки, имитирующие реле «пуска вверх» и реле «пуска вниз», я написал управляющую программу (там цикл на цикле и циклом погоняет мне даже стыдно ее показывать). Дисплей к сожалению у меня без поддержки кириллицы, поэтому выводит лишь сообщения типа «Lift on a Floor» и «Security Circuit Broken!».

Если с количеством портов все прошло гладко, то первой большой проблемой оказалось совмещение логических уровней. Дело в том, что электромонтажные изделия, применяемые у нас рассчитаны на 220VAC*. То есть при нажатии на кнопку или концевой выключатель на провод приходит самая настоящая фаза, тогда как Arduino использует логику 5VDC. Так как в электронике я отнюдь не профи, я обратился за помощью на радиофорум, и используя подсказки сгородил такую схему, основанную на оптроне:

Она прекрасно работала со светодиодом, и я руководствуясь принципом Кейва Джонсона («мы просто бросаем наукой в стенку и смотрим, что прилипнет») решил сразу напаять ее на плату.
И, разумеется, это был провал. Arduino не только не видела логической единицы на порту, но и оптроны часто весело горели вместе с резисторами. А тем временем заказчик уже ждал свой лифт. И ничего не оставалось кроме как признать поражение и сделать схему как и раньше, на реле. Ну на реле так на реле, решил я, выбросил оптроны и взял тринадцать промежуточных реле для использования в качестве гальванической развязки. Каждому реле соответствует своя кнопка и этажный концевой выключатель.

После такого оригинального решения проблемы логических уровней, я перешел к задаче включения магнитных пускателей. Стоит упомянуть, что реле 5VDC/220VAC к портам Arduino подключаются не напрямую, а по схеме с транзистором и диодиком. Впрочем, можно просто купить готовый блок.
Тем не менее, в вопросе управления такой нагрузкой, как магнитные пускатели на 220В, меня поджидала вторая и самая большая проблема — наводки. Так как я запихнул Arduino, дисплей и оба реле довольно плотно в один корпус, при включении магнитного пускателя дисплей начинал показывать кракозябры вместо букв, а контроллер мог и вовсе зависнуть. Времени оставалось все меньше, и я решил сделать импровизированное экранирование из кухонной фольги.

Как бы нелепо все не выглядело, но это помогло. Я искал в сети какие-либо решения, но нашел лишь предложения использовать ферритовые колечки или опять оптроны, с которыми я уже не подружился.
Вся конструкция в сборе:

Далее следует выезд на объект для установки электрооборудования. Это фабрика по производству пластиковой тары. Вот этим красавцем, грузоподъемностью в три тонны будет управлять контроллер:

Монтаж электрики занятие довольно утомительное — приходиться целый день лазать по шахте, протягивая провода, а потом, порой вися в неудобном положении, соединять их в клеммных колодках в распределительных коробках. Но это не самая страшная проблема, которая ждет Вас, если вы надумали сделать свой контроллер. Самая страшная как я уже говорил — наводки. Оказалось что наводки от магнитного пускателя, работающего в холостую и наводки от пускателя, замыкающего или (что самое страшное) размыкающего питание восьми-киловаттного двигателя это совсем не одно и тоже (Кто бы мог подумать!). Какие бы экраны я ни городил, искры на контактной группе пускателя сводили их действие к нулю. И хотя работа контроллера не нарушалась, дисплей выдавал чепуху вместо информационных сообщений. После долгих мытарств, в итоге, я отгородил магнитные пускатели от контроллера подключенной к нейтрали стальной пластиной (заземления к сожалению на момент установки еще не было), а проблему дисплея решил программно с использованием функции delay();. Как только программа выполняла пуск двигателя или его остановку, включался секундный delay(); после которого выводилось сообщение на дисплей.

Разумеется, я не мог полностью доверить контроллеру вопрос аварийной или экстренной остановки лифта. Как только пропадает питание в цепи безопасности, реле размыкает питание на пускателях, и подает сигнал на порт arduino. И даже если контроллер по какой либо причине зависнет, подъемник все равно будет остановлен. Кроме того, схема предусматривает удаленную перезагрузку системы с любого этажа, с помощью нажатия кнопки «Стоп» более двух секунд.

Видео работы, за качество заранее извиняюсь.

Итоги:
По цене получилось вполне недорого: Реле — 80 р/шт*13шт=1040р, дисплей+Arduino=1000р, блок питания, корпус, клеммники и резисторы = 1000р.
Итого контроллер обошелся где-то в 3000р, тогда как самый бюджетный ПЛК, который справится с такой задачей выйдет не менее 7000р.
По надежности — время покажет. Сгоревшие ПЛК я уже видел, так что не факт что Arduino будет хуже. По этому параметру релейная схема все равно вне конкуренции. Использование контроллера позволило сократить количество проводов, а значит облегчить работу по их обжимке и маркировке, а также упростить монтаж.

Подводя итоги, хотелось бы пожелать развития платформы Arduino в сторону интеграции с силовыми цепями (ну например появления готовых блоков оптической развязки) в будущем. Я знаю, что многие считают Arduino лишь детской игрушкой. Однако прогресс не стоит на месте и все идет к тому, что мало-мальски знакомый с электроникой человек сможет собирать сложнейшие устройства, не оборачиваясь на всякие проблемы вроде «какой резистор выбрать чтобы не сгорел оптрон», и освобождать больше времени для технического творчества.
Спасибо за внимание!

PS:
*Да, я прекрасно понимаю, что 220В не самый лучший выбор для цепей управления. Дело в том, что в фирме еще до моего прихода исторически так сложилось (видимо лень было заморачиваться с преобразователями), ну а еще у поставщиков порой трудновато достать кнопки и пускатели на нужное напряжение. Чтобы Вас успокоить, скажу что многие заказчики подключают грузовые лифты через УЗО, чего я всем и советую.

UPD:
Господа, лифт грузовой, и людям на нем ездить запрещено. Об этом ясно написано на каждой двери на каждом этаже. Двери шахты на время работы заблокированы электрозамками, полностью независимыми от контроллера.
На все аварийные ситуации уже есть свой ответ. Например на случай обрыва троса — механический ловитель резкого томожения (его кстати изобрел сам Оттис), в случае перегрузки либо заклинивания кабины — тепловое реле и ограничители перегрузки, также работающие независимо от контроллера.
Короче говоря, контроллер лишь занимается логикой пуска лифта на этажи, а система безопасности осталась абсолютно без изменений.

UPD2:
Вот текст программы (программист я такой же как и электронщик)

Источник

Adblock
detector