Управление двигателем
- Войдите на сайт для отправки комментариев
Сб, 28/12/2019 - 22:02
Добрый день всем, андруиной занялся не давно, написал скеч для управления двигателем, в кратце суть что должно быть, через час например двигатель должен закрыть заслонку и потом через 10 сек открыть и так в цикле. А у меня получилось, что при следующем цикле закрытия, время открытие сбивается. как подправить этот косячек.
Попробуйте для начала почитать тему ПЕСОЧНИЦА. ДЛЯ ВСЕХ НОВИЧКОВ, только внимательно. А потом, запостите Вашу хотелку снова, но, на этот раз, правильно.
Моторы перетягивают друг друга?
нет , управление идет на микросхеме L293D, остальною часть выполняет другая часть скетча, но выкладывать смысла пока нет чтоб не вводить в заблуждение, она прекрасно работает. Так же есть переменные которые и управляют другой частью скетча, Можно перефразировать мотор на светодиоды, первый светодиод включился (_k8), а через 10 сек включился второй (_k9). потом цикл повторяется.
наверное надо организовать таймера, а управлять уже в скетче
Возможно это сделать и в первой части это в (R1). включение второго светодиода (_k9). Но у меня пока мысли не приходят, как для начинающего. Не могу начало подправить, но напишу здесь. двигатель который управляет заслонкой через час должен ее закрыть, и открыть через 10 секунд, и через час повторить это до бесконечности. Надо для того это, чтоб заслонка не прикипела.
может так?
Не работает как надо, но примерно похоже как нужно, осталось убрать постоянную единицу на _k9, все время команда на открытие идет.
Не работает как надо, но примерно похоже как нужно, осталось убрать постоянную единицу на _k9, все время команда на открытие идет.
да ну, а у меня всё работает, смотрим на светлодиодик...
если эти переменные не что иное, как разрешение на открытие, то сделано всё идеологически через одно место, во первых надо определиться с временем работы мотора на перемещение заслонки из одного положения в другое, далее сигналов будет три, DIR1, DIR2, ENABLE, они и задают режим управления заслонкой (ну так принято), таймеров будет три, время открытого состояния заслонки, время закрытого состояния заслонки, время перемещения
все хорошо но не могу все это внедрить в общую часть, все время единица на открытие. через еще константу тоже не получилось обмануть
Опять флпрог притащили на форум.
лучше схему привести
ну часть стырена из него,
схему изделия.
это он такой кошмарный код рожает? да уж!!!
кнопок надо две - пуск и стоп, два концевика на заслонку и один реверсивный мотор, всё!!!
пины уже не совпадают, но принцип понятен, как мне начинающему это подошло для того что мне нужно, подправил для себя, возможно если будет время перепишу. концевеки стоят в моторе, но чтоб все время подавалась напряжение, тоже не хорошо. У меня три кнопки, третья на снятие аварии. пока на нее не нажмешь, открытие не возможно.
ну начинать надо с самого простого, подключить пока только мотор, для это требуются пины 7 и 8, пока всё, при включении питания на ардуину, надо установить их в состояние торможения, то-есть ноль на этих пинах. Это и сделайте, сможете?
sergb59,
судя по описанию задачи, устройство должно работать долго - днями, месяцами и годами, а не "включил на пять минут и выключил". Правильно?
В таком случае, обратите внимание на строки №№ 302-307 из #11. И подумайте, что произойдёт, когда millis перевалит за своё максимальное значение и начнёт снова с нуля. Боюсь, Ваша программа отреагирует не совсем адекватно.
да это сделано, просто из вашего примера, у меня работает кнопка закрыть. а вот открытие все время логическая единица, и мотор все время открывается. Из простого надо чтоб через время в константе freq, появилась единица на кнопке закрытие, тайминг закрытия у меня отрабатывает дальнейший скетч, и секонд через 10 , появился сигнал на кнопку открытие, остальное опять делает последующий скетч под R3. И так по кругу до бесконечности.
Да Евгений, можно было конечно заморочиться и поставить часы, но это удорожает все и программу увеличивает. Это нужно только для того чтоб не закисли заслонки.
можно было конечно заморочиться и поставить часы,
А можно и не заморачиваться, просто написать этот кусок кода правильно.
Так вот у меня загвозка на открытие, на закрытие все пучком , а вот открытие оно либо со временем забегает в моем случае, а в случае ua6em у меня все время мотор на открытие работает. Да и тут точность не нужна, можно через час сделать, сутки, месяц.
Спасибо, все справился, огромное спасибо ua6em , дополнительно поставил дополнительные переменные, и дальше в скетче (R3) в этих дополнительных переменных надо единичку превратить в ноль.
Спасибо, все справился, огромное спасибо ua6em , дополнительно поставил дополнительные переменные, и дальше в скетче (R3) в этих дополнительных переменных надо единичку превратить в ноль.
На некорректную работу с миллисом, что Евгений говорил, решили болт забить?
Я не настоящий сталевар, поэтому неблокирующий код сделал бы приблизительно так: (кнопки не подключал)
Да, блин!
Питона на Вас нет!
Да, блин!
Питона на Вас нет!
так вроде читабельно, нет???
так вроде читабельно, нет???
Нет. Совершенно не читабельно, честно.
так вроде читабельно, нет???
Нет. Совершенно не читабельно, честно.
я жеж говорю, я не настоящий сталевар, в своих каракулях ориентируюсь неплохо )))
Конечно начало надо было написать иначе, как-то так:
Дак всё ясно-понятно. Кубофутурист в наших рядах.
не )))
Я достаю из широких штанин...
смотрите, завидуйте, я гражданин...
PS а вот ТС Евгений Петровича напрасно не прислушался )))
ЗЗЫ в моем коде зато проблемы millis() НЕТ!
Если нужны интервалы в минуты-часы-сутки, то лучше это делать не на милисе напрямую. На милисе формировать некий базовый, например 1 секунда или другой удобный. По этому интервалу инкрементить счётчик. Дальше интервалы формировать на этом счетчике. Если нужны еще больше интервалы - можно повторить изавести второй счетчик для больших интервалов. Тогда и переполнения не страшны, и реализация проще.
Если нужны интервалы в минуты-часы-сутки, то лучше это делать не на милисе напрямую. На милисе формировать некий базовый, например 1 секунда или другой удобный. По этому интервалу инкрементить счётчик. Дальше интервалы формировать на этом счетчике. Если нужны еще больше интервалы - можно повторить изавести второй счетчик для больших интервалов. Тогда и переполнения не страшны, и реализация проще.
Нет, не проще, а даже строго наоборот. Считать по миллисекундам нужный интервал это проще, чем считать по миллисекундам промежуточный интервал, а потом по промежуточному интервалу считать нужный. Что за мода не думать, перед тем как пишешь?
ТС, никак антипротечку делаешь? У мня каждый день, вентиля закрываюца/открываются в час ночи, чтоб не закисли. Нада, наерна, праэктик выкласть.
"блинк" с часовой задержкой,не?
"блинк" с часовой задержкой,не?
по сути да
Тогда и переполнения не страшны
С какого бодуна? Хоть какие счётчики заводи, а если с миллис работать, как в #11, косяк с переполнением никуда не денется.
Тогда и переполнения не страшны
С какого бодуна? Хоть какие счётчики заводи, а если с миллис работать, как в #11, косяк с переполнением никуда не денется.
косяк не только с миллис, а полное отсутствие информации о реальном положении заслонки при включении?
Команды - исходное положение принять - нету )))
ТС, никак антипротечку делаешь? У мня каждый день, вентиля закрываюца/открываются в час ночи, чтоб не закисли. Нада, наерна, праэктик выкласть.
так в чём дело - выкладывай, коль спрос есть