Управление скоростью вращения шагового двигателя кнопками.

Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Matafon »

Добрый вечер.
Пытаюсь реализовать такую идею - Шаговый двигатель вращается в одну сторону постоянно, при помощи кнопок нужно менять скорость вращения. ШД для того, чтобы скорость была небольшой 2-20 оборота в минуту, при том стабильной.
Проект содержит 28ВYJ-48 с драйвером ULN2003, 2 кнопки, блок 7-сегментных индикаторов на TM1637.
Схема.JPG
Индикатор - по сути показометр, для понимания скорости вращения в попугаях.
Беда в том что по отдельности все работает - кнопками управляется счетчик, значение корректно отображается на показометре, но стоит в схему включить ШД, все встает колом. Счетчик не считает, двигатель не крутиться вовсе.
Пробовал всякие варианты включения,не помогает. Думал тока не хватает, но если параллельно включить ШД, не создавая связь, а указав напрямую скорость вращения ШД - все крутится все мигает.
Кроме того пробовал вместо кнопок генератор - все шикарно, генератор начитает генерировать, счетчик считать, двигатель ускоряться.
Стоит начать пробовать управлять генератором, включив в схему кнопку - (в разных вариантах) все перестает работать.
Пробовал исключать индикатор вовсе, либо данные наблюдал в serial port, не помогает. Как только кнопки и ШД каким либо образом соединены - все перестает работать.
Для понимания часть моих эквилибров в приложенном файле. Примечаний не писал, так вроде все понятно.
Платы все разом не компелируются, нужно по одной включать.
Помогите, а?! Или ткните ссылкой где давно все обсосано, сам не нашел! Неделю форум курил!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Panagiotis
Сержант
Сообщения: 129
Зарегистрирован: 11 сен 2015, 20:58
Имя: Панаётис

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Panagiotis »

Николай обрати внимание какой полярности подаёшь на входы 5 и 6, раз они у тебя подтянуты?

Отправлено спустя 4 минуты 34 секунды:
И поставь блок прохождения по переднему сигналу на входах. наружную подтяжку поставь, сними инверсию на входах так же
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Matafon »

Panagiotis писал(а): 20 янв 2019, 21:01Николай обрати внимание какой полярности подаёшь на входы 5 и 6, раз они у тебя подтянуты?
Ну как я и думал так и получилось.
1. Не работает.
2. Убираем подтяжку имеем - антенну - а как следствие не контролируемое переключение.
3. Меняем параметры входа - подтягиваем к земле - убираем инверсию - имеем тоже что с инверсией и подтяжкой к плюсу.
Извини дорогой Панаётис, но эта твоя идея не сработала. Есть еще идеи?

Результат тот же - убираем связь в flprog - при том что оставляем гальваническую - и все работает, с любым исполнением кнопок.
Но скорость не регулируем. Как только подключаем в flprog - все тухнет. Кнопки не кнопят, ШД не ШДит.
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 486
Зарегистрирован: 15 авг 2016, 11:20
Откуда: Нижний Новгород
Имя: Евгений
Благодарил (а): 1 раз

Управление скоростью вращения шагового двигателя кнопками.

Сообщение eugeneb »

Надо схему...
С уважением,
Евгений Бобков
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Управление скоростью вращения шагового двигателя кнопками.

Сообщение rw6cm »

Matafon писал(а): 21 янв 2019, 15:06Как только подключаем в flprog - все тухнет.
Проблема в совместимости шагового с блоком 1637, быстрей всего придется делать индивидуальный подход для этих блоков.
Win10-64, FLProg (portable)
Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Matafon »

rw6cm писал(а): 21 янв 2019, 15:59Проблема в совместимости шагового с блоком 1637, быстрей всего придется делать индивидуальный подход для этих блоков.
Я тоже так думал. Исключал показометр из схемы. Но он ни как не влияет.
Пробовал UART, брал данные из разных точек. Но несовместимость между кнопками в любом исполнении и ШД.
[spoiler]
Пробовал Кнопки счетчик данные в UART, Все работает.
UART_Y.JPG
Как тока ШД в схему включаю - все тухнет. Данные не идут.
UART_N.JPG
Если вместо кнопок включаю генератор - все работает.
Gena.JPG
[/spoiler]
eugeneb писал(а): 21 янв 2019, 15:50Надо схему...
Схема всяких моих инсинуаций - приложена.
Добавил комментарии в названии плат. Все платы отключены нужно включать по одной.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Управление скоростью вращения шагового двигателя кнопками.

Сообщение rw6cm »

[ref]Matafon[/ref],
в таких схемах надо разруливать очень тщательно, чтобы одно другому не мешало
ШД_1637.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Matafon »

Спасибо!
rw6cm писал(а): 21 янв 2019, 22:01в таких схемах надо разруливать очень тщательно, чтобы одно другому не мешало
Тут мне интуитивно понятно, но знаний глубоких нет!
Схемка заработала, цыфирь меняется, скорость меняется. Есть одно НО. При достижении "0" перестает реагировать на кнопки. "Больше" не делается.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Управление скоростью вращения шагового двигателя кнопками.

Сообщение rw6cm »

Matafon писал(а): 22 янв 2019, 12:39При достижении "0" перестает реагировать на кнопки.
Да, не учел ) надо было вместо детектора числа брать сигнал с кнопок через ИЛИ.
Но можно и так только добавить условие отключения ШД при ноле.
А чтобы не было следующего вопроса, "почему двигатель при 0 остается под питанием" добавил блок отключения.
Описание Здесь
ШД_1637_1.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Matafon »

Огромное спасибо!
Все работает! :smile9: :smile9: :smile9: :yes:
Хоть в моем проекте не надо ШД стоять, но все же заодно разобрался как и где библиотеку поменять, вырос среди себя!
Panagiotis
Сержант
Сообщения: 129
Зарегистрирован: 11 сен 2015, 20:58
Имя: Панаётис

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Panagiotis »

Извиняюсь если не на столько внятно написал! наружную подтяжку поставь. А более внимательно можно было прочитать? Не в коем случае я не ссылаюсь знатоком я тоже новичок в этом деле. Как выше написанном Вами работает в варианте с генератором! Обратите внимание на то что Вы нам написали. Кроме того пробовал вместо кнопок генератор - все шикарно, генератор начитает генерировать, счетчик считать, двигатель ускоряться.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Управление скоростью вращения шагового двигателя кнопками.

Сообщение rw6cm »

Panagiotis писал(а): 23 янв 2019, 19:50наружную подтяжку поставь
В данном случае это не играет роли.
Здесь алгоритм старта ШД с нулевой скоростью, в нем программа входит в бесконечный цикл ожидания записи в порт ШД,
в этот момент она не может слушать прием с других портов (кнопок),
а кроме кнопок, другого условия выхода из цикла нет (В схеме с генератором он является условием). Вот и получается висяк :)
Достаточно поставить условия исключающее работу ШД при ноле, и все будет работать.
[spoiler]
2019_01_24_00_55_36_FLProg_4.2.4.png
[/spoiler]

[ref]Matafon[/ref],
Если не надо полное отключение схему можно упростить.
[spoiler]
2019_01_24_01_01_23_FLProg_4.2.4.png
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Matafon »

Panagiotis писал(а): 23 янв 2019, 19:50наружную подтяжку поставь. А более внимательно можно было прочитать?
Дорогой Panagiotis!
Ты чего, обиделся что ли? Это зря. Тут же дискуссия! И не смотря на то что все используют одинаковые термины, все понимают их немного по разному, по тому что мыслят по разному! Тем, на мой взгляд и отличаются люди от микроконтроллеров. И это хорошо! Не держи на меня зла, я не хотел ни кого обидеть!
По внешней подтяжке я мыслил так (возможно ошибаюсь) - при внутренней подтяжке на входе высокий уровень(1) когда нажимаем кнопку, уровень становится низким ( 0). Символ инверсия все меняет до наоборот, при нажатой кнопке на - входе 1. При внешней подтяжке -на входе 0 и при нажатии кнопки на входе 1. Таким образом нет разницы, так как при нажатии кнопки на входе 1! Возможно я ошибаюсь.
Кроме того я взял и попробовал, так как сомневался в своих умозаключениях, в результате получил подтверждение в того о чем догадывался.
Таким образом, я не сразу начал "умничать" в ответе тебе, а начал умничать по результатам эксперимента. :smile44: :D
Тем не менее идея твоя была для меня свежей и воодушевила, не страшно что не получилось. Как говориться - отрицательный результат тоже результат.
С наилучшими пожеланиями!

Отправлено спустя 51 минуту 46 секунд:
rw6cm писал(а): 24 янв 2019, 01:26Matafon,
Если не надо полное отключение схему можно упростить.
Спасибо rw6cm !
Если честно но я попробовал это сделать первым делом. Как мне показалось, с отключенной опцией остановки двигателя, на малых оборотах ШД грелся. Может показалось но я вернул все как было. Вещь полезная.
Есть вопрос из не понятого - что "дает выполнение по условию" платы с показометром?
Я пробовал и время задержки таймера менять и "тупо" включить в схему разницы не заметил. Можешь растолковать?
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Labu559 »

Matafon писал(а): 26 янв 2019, 08:38Есть вопрос из не понятого - что "дает выполнение по условию" платы с показометром?
Просто как в пословице - "...виновата невестка..." Это подальшая поддержка выдвинутой гипотезы-
rw6cm писал(а): 21 янв 2019, 15:59Проблема в совместимости шагового с блоком 1637, быстрей всего придется делать индивидуальный подход для этих блоков.
В блоке TM1637 есть такая строка- if ((DataIn != preData) || (dpByte != pre_dpByte) || (Bright != Brightness)) { единожды выполняется код блока, если данные изменились} , такой себе детектор изменения данных. Это-же делает Ув. [ref=#ff8000]rw6cm[/ref], на плате, но уже вне блока, при этом отключая ШД. При этом приоритет выполнения ТМ1637 остается выше приоритета ШД благодаря RS -триггеру. От чего уходили к тому вернулись. Но как говорится : [spoiler title= "...если всё работает"]
IO-State.png
[/spoiler] - к чему эта вся болтовня? :)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 26 янв 2019, 10:29, всего редактировалось 1 раз.
Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Matafon »

Labu559 Спасибо.
У меня сложилось впечатление что я понял, приблизительно. :D
В конечном итоге схема стала такой. Еще раз спасибо rw6cm !
[spoiler]
Окончательный вариант.JPG
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Управление скоростью вращения шагового двигателя кнопками.

Сообщение rw6cm »

Matafon писал(а): 26 янв 2019, 10:03В конечном итоге схема стала такой. Еще раз спасибо rw6cm !
И у вас все хорошо работает? ))
Labu559 писал(а): 26 янв 2019, 09:04к чему эта вся болтовня?
Попытаюсь объяснить и [ref]Matafon[/ref], и [ref]Labu559[/ref],
[spoiler]
Есть понятие "цикл" и есть девайсы сильно от него зависящие, и ШД как раз к ним относится,
и есть девайсы, которые программно, или своей инертностью, увеличивают этот цикл, (UART, I2C, ModBus, использование delay, итд),
и 1637 не исключение. Так вот такие девайсы надо развязывать работой в циклах, иначе не чего хорошего не выйдет.
Василий, то что вы дописали выполнять по изменению, не запрещает обновлять данные дисплея каждый цикл, что и происходит.
У меня же обращение к дисплею идет один цикл (или 1мс если использовать таймер) и только при изменении нужных данных.
Это разные вещи). Можно и без таймера, но в тяжелых проектах, с большим количеством инфы (допустим на 2004 дисплеях)
не успевает за цикл обрабатываться вся инфа. Чтобы много не писать приведу пример из которого все станет ясно.
В примере 2сек ШД работает по "вашему" 2сек по "мойму"
[ref]Matafon[/ref], Вот и сравните разницу.
ШД_1637_Test.flp
[spoiler title=для Labu559]
Василий не в обиду, измените в настройке блока названия. Все таки SDA, SCL и DIO, CLK хоть по смыслу похожи,
но все же совершенно разные вещи, SDA, SCL привязаны жестко к железу и не подлежат изменению (если только больше одного порта I2C)
Учитывая что у меня нет и не было 1637, пришлось лезть в библиотеку чтобы понять что же это на самом деле.
Сам допускаю часто ляписы, где по невнимательности где по незнанию, думаю вы меня поймете.
[/spoiler]
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Matafon »

rw6cm писал(а): 26 янв 2019, 11:32Matafon, Вот и сравните разницу.
Сравнил.
Так и так работает.
В моей схеме как будто мотор "троит" или зубья в редукторе все повыламывались....
двухсекундный пример позволил сравнить когда "в одной руке одно а в другой другое". Визуально не заметно, а когда в руках моторчик, сильно есть разница. :smile390:
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Управление скоростью вращения шагового двигателя кнопками.

Сообщение rw6cm »

Matafon писал(а): 26 янв 2019, 12:33В моей схеме как будто мотор "троит" или зубья в редукторе все повыламывались....
Визуально не заметно,
Не знаю что у вас за шд, (быстрей всего питаете от юсб через нанку, и ШД не хватает питания нормально раскрутится)
но на 28byj-48 с отдельным питанием даже на глаз видна серьезная разница.
Видео
Win10-64, FLProg (portable)
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Управление скоростью вращения шагового двигателя кнопками.

Сообщение Labu559 »

rw6cm писал(а): 26 янв 2019, 11:32Попытаюсь объяснить и Matafon, и Labu559,
Спасибо, вполне осознаю, что могу ошибаться. Потому принимаю все Ваши доводы как надлежащее, и очень рад, что поиск истины на нашем форуме не переходит в область у кого длиннее... Надеюсь, что наш диалог будет взаимополезным и приятным. [spoiler title=Для начала сделаю лирическое отступление или немножко флуда.]
rw6cm писал(а): 26 янв 2019, 11:32измените в настройке блока названия. Все таки SDA, SCL и DIO, CLK хоть по смыслу похожи, но все же совершенно разные вещи, SDA, SCL привязаны жестко к железу и не подлежат изменению
Увы, почти так но...
Serial DAta и SerialCLock жёстко привязаны к запатентованому фирмой Philips Semiconductors интерфейсу связи между интегральными схемами Inter-Integrated Circuit ( IIC ), которую любители «профессионального» сленга обозвали I2C, а любители не платить роялти правообладателю патента, обозвали своими 2Wire, TwoWire, TWI.
Выводы своих устройств сама Philips (NXP) называет в соответствии со стандартом. Сторонние производители называют по- стороннему от стандарта- DataIn/Out, CLocK.
В случае TM1637D4beta6 - соблюдена терминология автора этого сообщения, с которого (первого рабочего скетча) я начинал незабываемое путешествие в мир ТМ-ов. :)
В финальном блоке TM1637LabUW мне уже никто «не мешал обозвать» по Datasheet.
Вот ещё один пример из той же оперы, от которого нам должно стать веселее жить.
74HC595.png
комментарии правда лишние? [/spoiler]
rw6cm писал(а): 26 янв 2019, 11:32...Так вот такие девайсы надо развязывать работой в циклах, иначе не чего хорошего не выйдет.
Василий, то что вы дописали...
Уважаемый Владимир, со всем, что Вы сказали я полностью и безоговорочно согласен а вот с реализацией.... Разберём по-подробней?
То, что я дописал (детектор изменения данных) как раз и запрещает выполнение тяжёлого кода обработки данных String и перезагрузки 97-байтовой таблицы знакогенератора ASCII из флэш в оперативную память МК в каждом цикле ф-и Loop(). Два детектора одних данных, но в разных типах Integer и String, и управлением одним и тем же блоком кардинально повлияют на ситуацию?
rw6cm писал(а): 26 янв 2019, 11:32У меня же обращение к дисплею идет один цикл (или 1мс если использовать таймер
Я же изобразил диаграму состояний Входов/Выходов (I/O) на рисунке под спойлером в Вашем проекте. Так вот во временном интервале зелёного цвета разрешена одновременная работа и дисплея и ШД интервалом 500мсек (задержка отключения таймера) состояние Вх/Вых HT-HighTimer, а в синем интервале запрещена тоже обоим до срабатывания детектора, красный интервал- сработал детектор и разрешил диплей и после 1 цикла (сработал приоритетный сброс триггера)разрешил ШД (смотрим порядок компиляции блоков, нумерацию). Но даже если интервал будет, как наверное задумывалось, разницей между сбросом триггера и срабатыванием таймера (взводом триггера) и разрешением на работу дисплея до конца текущего цикла (или 1мсек , которой не увидел в проекте), а ШД как в настройках таймера 500мсек (если я правильно понял Вашу идею как планировалось управлять), то на это же время действует разрешение выполнения платы с дисплеем, а за счёт сброса триггера и последующего взведения ШД получит даже меньше времени на выполнение. Но и это не всё. Ни единственный цикл Loop() ни 1 мс не помешает выполняться коду дисплея, если ему понадобится больше выделеного на это время. Ведь таймер запустил отсчёт этой самой милисекунды (записал своё текущее состояние, т.е. выполнил начальную надлежащую часть своего кода) , передал право выполняться остальному коду и покорно ждёт своей очереди, чтобы сравнить своё состояние с данными ф-и millis()которая получает от хардового таймера МК (который уже независимый от кода) и отключить дисплей. А эта очередь может прийти когда угодно, через 10 мксек или через 100 мсек , в зависимости от скорости выполнения остального кода, в том числе и дисплея, который получил разрешение от нашего софтового таймера-блока и забил на всех, пока не выполнит свой код, до следующего цикла Loop и получения или неполучения нового разрешения на выполнение. И следующий цикл Loop не наступит, пока не закончится текущий цикл. Прерывания не предусмотрены, операторы GoTo тоже, а значит всё идёт от начала до конца и отмена действия или смена сценария выполнения произойдёт в следующем цикле Loop().
Конечно эта вся моя мышиная возня не имеет никакого смысла, так как решение похоже найдено, при этом с Вашей помощью. Извините за потраченное время.
С уважением Lab_U55!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Управление скоростью вращения шагового двигателя кнопками.

Сообщение rw6cm »

[ref]Labu559[/ref],
[spoiler title=немножко флуда]
Labu559 писал(а): 26 янв 2019, 19:47Serial DAta и SerialCLock жёстко привязаны к запатентованому фирмой Philips Semiconductors интерфейсу связи между интегральными схемами Inter-Integrated Circuit ( IIC ), которую любители «профессионального» сленга обозвали I2C, а любители не платить роялти правообладателю патента, обозвали своими 2Wire, TwoWire, TWI.
Не спорю что ноги растут из одного места)
Но рас мы пользуемся этим сленгом, зачем вводить еще и в нем путаницу, не проще назвать вещи своими именами?
А вообще дело Ваше, просто посоветовал.
(в моих первых блоках названия были еще хуже, спустя время сам теперь гадаю, что я имел в виду в этих названиях )))
[/spoiler]

Что касаемо таймера уже писал, в данном случае он не нужен, в начале были сомнения , т.к не было такой матрицы, но когда понял что
блок 1637 вносит только задержки, а вешает нулевая скорость ШД, лишнее отбросил.
Что касаемо подробного разбора "полета" Вы заблуждаетесь )
[spoiler]
Мне не получится объяснить доходчиво, т.к не владею терминологией языка Си.
Могу дополнить в свое первое обращение к Вам:
rw6cm писал(а): 26 янв 2019, 11:32Василий, то что вы дописали выполнять по изменению, не запрещает обновлять данные дисплея каждый цикл,
Чтобы блок работал один цикл, if должен быть снаружи блока а не внутри
Пример:
2019_01_26_23_41_21_FLProg_4.2.4.png
Согласно вашей теории не должно быть разницы, но по факту она огромна.
А там сами решайте...
1637_Test.flp
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Ответить

Вернуться в «Помогите, а то я "нимагу"»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя