Подключение шагового двигателя к микроконтроллерам AVR

Модератор: boogyman

Аватара пользователя
demogorgon
Новичок
Сообщения: 4
Зарегистрирован: 24 янв 2018, 17:53

Re: Подключение шагового двигателя к микроконтроллерам AVR

#61

Сообщение demogorgon » 26 янв 2018, 21:23

AntonChip писал(а):
26 янв 2018, 20:57
Архив не открывается, пишет неизвестный формат или ошибка
а если так?
Вложения
kr_vyaz1.zip
(34.79 КБ) 235 скачиваний

Аватара пользователя
demogorgon
Новичок
Сообщения: 4
Зарегистрирован: 24 янв 2018, 17:53

Re: Подключение шагового двигателя к микроконтроллерам AVR

#62

Сообщение demogorgon » 05 фев 2018, 15:41

demogorgon писал(а):
26 янв 2018, 21:23
AntonChip писал(а):
26 янв 2018, 20:57
Архив не открывается, пишет неизвестный формат или ошибка
а если так?
Здравствуйте. При количестве импульсов на оборот двигателя равном 48,если задать более 5(а нужно 9) оборотов, двигатель начинает вращаться постоянно и не останавливается.Насколько я понимаю, проблема в переполнении счетного регистра таймера Т0. Если у Вас есть время подскажите, пожалуйста, возможно ли устранить эту проблему используя Т0 (как правильно переписать по совпадению или еще что то). Или же как правильно использовать Т1(16 битный) для этих нужд, не могу разобраться как правильно написать и переподключить.((((((

Аватара пользователя
manojsoorya
Новичок
Сообщения: 2
Зарегистрирован: 13 фев 2018, 22:13

Re: Подключение шагового двигателя к микроконтроллерам AVR

#63

Сообщение manojsoorya » 13 фев 2018, 22:22

Пожалуйста, кто-нибудь может помочь мне сделать это? Мне нужно просто так
Нажмите и удерживайте кнопку: Работа двигателя (для обоих направлений)
Unpress: остановка двигателя (для обоих направлений)
Скорость: от 0 до 200 об / мин на той же схеме. Это очень срочно. Пожалуйста, помогите мне.....

Аватара пользователя
manojsoorya
Новичок
Сообщения: 2
Зарегистрирован: 13 фев 2018, 22:13

Re: Подключение шагового двигателя к микроконтроллерам AVR

#64

Сообщение manojsoorya » 13 фев 2018, 23:34

Its working....................waw........waw....

Thank you so much Sir. One more doubg.. How to speedup the Engine bit high?

Аватара пользователя
Rus47
Новичок
Сообщения: 5
Зарегистрирован: 20 апр 2018, 13:24

Re: Подключение шагового двигателя к микроконтроллерам AVR

#65

Сообщение Rus47 » 22 апр 2018, 10:39

Здравствуйте!Помогите пожалуйста!Есть Тини85 нужна под неё программа включение двух портов.Которые включаются по очереди, с интервалом ровно через минуту на 2-3 сек.

Аватара пользователя
Rus47
Новичок
Сообщения: 5
Зарегистрирован: 20 апр 2018, 13:24

Re: Подключение шагового двигателя к микроконтроллерам AVR

#66

Сообщение Rus47 » 25 апр 2018, 18:11

Чёт не кто не отвечает.:( Есть у меня вторичные часы.Хотел бы подключить к Attiny85.

Аватара пользователя
GenukUA
Новичок
Сообщения: 4
Зарегистрирован: 25 фев 2015, 12:10

Re: Подключение шагового двигателя к микроконтроллерам AVR

#67

Сообщение GenukUA » 05 окт 2018, 13:12

Вижу тема заброшена но... Как увеличить максимальные обороты шаговика на Tiny13a c поста #13? Работает на 9.6М, деления на 8 нет. Но максимальная скорость двигателя при задержке 10, дальше пропуски. Тот же двигатель на таких же драйверах но на Tiny2313a с другой программой работает на намного большей скорости. Т.е дело в программе? Или от контроллера тоже зависит? Спасибо.
Р.С. Программа на ассемблере, ее я не осилю переделать никак.

Аватара пользователя
jes
Любитель
Сообщения: 10
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#68

Сообщение jes » 26 ноя 2019, 10:52

Не подскажете, как сделать, чтобы программа - могла выдавать пачки шагов-импульсов, регулируемые внешним переменным резистором?
Скажем, от 1 до 200, а при задании более 200 - игнорировала режим пачек, и переходила в режим беспрерывного вращения.
Наряду с регулировкой скорости резистором, и управления кнопками направлением движения.
Теоретически надо добавить опрос-преобразование еще одного канала АЦП (с дополнительным переменным резистором), и ввести дополнительную переменную-счетчик для подсчета шагов.

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

Показалось, что прикрутить еще один переменный резистор - гораздо проще и удобней в работе, чем заморачиваться со всяким программированием кнопок, подключением дисплея и прочим.

Аватара пользователя
AntonChip
Администратор
Сообщения: 232
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#69

Сообщение AntonChip » 29 ноя 2019, 17:06

Здравствуйте Jes. Немного изменил код выложенный в этой ветке, добавил еще один потенциометр на вход ADC1. Проверяйте, исходник и Протеус во вложении
Вложения
unipolar_step_motor.zip
Проект AVRStudio4
(31.88 КБ) 5 скачиваний

Аватара пользователя
jes
Любитель
Сообщения: 10
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#70

Сообщение jes » 30 ноя 2019, 16:46

Проверил прошивку в реальности, она работает, правда, есть кое-какие нюансы.
Желательно сделать какую нибудь защиту от дребезга, а то срабатывает и при нажатии на кнопку, и при ее отжатии тоже.
Между нажатиями кнопок - наверное, лучше поставить минимальную задержку, типа 0.2 секунды.
Кнопки - все таки должны работать две, одна на вращение в одну сторону, другая - в другую сторону.
И потом, наверное, нужно убрать условие превышения шагов более 200 - крутится постоянно, показалось, это - не комильфо.

Конечно, надо пробовать с механикой, я еще ее не сделал, там несложно, просто заморочено.
То, что при не нажатой кнопке снимается питание со всех обмоток шаговика - это хорошо, нет постоянного разогрева его обмоток, да и берет меньше мощности в состоянии покоя.
У меня под рукой не было шаговика-биполярника, на макете поставил униполярник с ULN2003A.

P.S.
Вам спасибо огромное за программу, она натолкнула на разные мысли по реализации диспенсера.

Аватара пользователя
jes
Любитель
Сообщения: 10
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#71

Сообщение jes » 30 ноя 2019, 16:59

Сейчас воюю с AVR Studio v4.18 build 684 и с WinAVR - если выбрать режим компиляции с отладкой, не создает объектный файл для передачи параметров в отладчик студии.
Уж и так и эдак, подумываю может перейти в CodeVision, но, наверное - там вылезут другие грабли, да и формат там некоторых функций - отличается от студийных, например, тех же прерываний.
Самое интересное, при работе с ассемблером - все нормально, а когда WinAVR компилирует СИ-шный файл - не создает нужного объектного файла для отладчика студии...
Вылезает вот такое сообщение -
"Coordinator: None of the available object file readers can read the specified object file. Please check the format of the object file.
Error loading object file C:\WinAVR-20060421\motor\default\motor.elf"

А переставлять с нуля операционку, и все равно потом танцевать с бубном - уж очень не хочется...

Аватара пользователя
AntonChip
Администратор
Сообщения: 232
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#72

Сообщение AntonChip » 30 ноя 2019, 22:25

Я для таких простых программ использую AVRstudio 4.19 и AVR toolchain 3.3.0, все устраивает

Аватара пользователя
jes
Любитель
Сообщения: 10
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#73

Сообщение jes » 01 дек 2019, 09:25

Решил проблему тем, что установил AVRstudio 4.12 в связке с WinAVR-20060421.
Тоже была идея поставить AVR toolchain, но, пока не стал, как говорится, ...раз оно работает - значит, чинить не нужно...
Дальше будет видно.

Аватара пользователя
jes
Любитель
Сообщения: 10
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#74

Сообщение jes » 02 дек 2019, 03:23

AntonChip, уточните, - в последней прошивке АЦП опрашивается именно в цикле прерывания по INT0.
А можно его опрашивать в основном цикле (как в прошивке с 1 поста - bipolar_step_motor_2.rar), только меняя каналы по очереди, или не получится?
По идее, там надо друг за другом поставить код запуска АЦП, но, с различным номером канала, добавив между опросами небольшую задержку.
Почему так - необходимо, чтобы движок отрабатывал нажатия на обе кнопки, с разницей в направлении вращения, (как в вышеупомянутой прошивке).

И еще, где, по вашему лучше поставить задержку (и какой длительности), чтобы нажатие на кнопку - вызывало только один запуск шагового движка?
Или надо обязательно организовывать проверку на повторность нажатия кнопки?

Аватара пользователя
AntonChip
Администратор
Сообщения: 232
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#75

Сообщение AntonChip » 02 дек 2019, 08:09

В последней программе каналы АЦП поочередно опрашиваются в главном цикле
Пока двигатель не пройдет все шаги повторное нажатие кнопки не обрабатывается
Вы хотите использовать две кнопки - вперед и назад?

Аватара пользователя
jes
Любитель
Сообщения: 10
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#76

Сообщение jes » 02 дек 2019, 15:11

Да, необходимо в программе использовать 2 кнопки, как и в прошивке 1 поста для изначально остановленного двигателя.
Если шагов много, тогда выполнение защиты от дребезга - выполнится автоматически, а если шагов всего пара-тройка (в частном случае - один), тогда вряд ли.
Видимо, между нажатиями кнопок, обязательна нужна задержка 0.2 - 0.3 секунды, или около того.

Аватара пользователя
AntonChip
Администратор
Сообщения: 232
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#77

Сообщение AntonChip » 02 дек 2019, 17:10

много это сколько?

Аватара пользователя
jes
Любитель
Сообщения: 10
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#78

Сообщение jes » 02 дек 2019, 18:24

Вы имеете ввиду число шагов, ну, например, 50, или более.
Но, мое мнение более простое и радикальное - задержка для нажатий кнопок должна быть независимо от числа шагов, мне кажется так будет правильно.
То есть, отрабатывается 1-е нажатие кнопки, а все, что попало в следующие 0.3 - 0.5 секунды - игнорируется в любом случае.
Затем, опять ожидается нажатие какой либо кнопки, и так далее.
Теоретически можно будет ставить кнопки, наверное, с почти любым временем дребезга, если так можно сказать, хотя, обычно, даже в наиболее худшем варианте он не превышает 0.1 секунды.
Других кнопок я просто никогда не встречал.

Аватара пользователя
AntonChip
Администратор
Сообщения: 232
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#79

Сообщение AntonChip » 03 дек 2019, 11:05

Заметил одну особенность, при повторном нажатии кнопки двигатель немного поворачивается в обратную сторону потом вращается нормально, чтобы такого не было надо запоминать последнее положение ротора и в последующем начинать движение с этого места

Аватара пользователя
jes
Любитель
Сообщения: 10
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#80

Сообщение jes » 03 дек 2019, 17:18

А немного - это насколько он поворачивается назад?
Мне кажется, можно просто сделать таблицу не шагов, а полушагов.
Там будет массив из 8 байт на каждое направление вращение, вот так:
unsigned char cw_dir[8]=
{
0b00000001,
0b00000011,
0b00000010,
0b00000110,
0b00000100,
0b00001100,
0b00001000,
0b00001001
};
Влияние возврата назад - будет меньше, да и движок будет крутиться плавнее.
Только надо обязательно в паузе снимать напряжение с обмоток (то есть обнулять порт), иначе увеличится потребление тока, и нагрев обмоток.
А можно пару бит задействовать для контроля вращения, неважно в какую сторону.
Один бит - выводит лог.1, а другой - лог.0, это позволит применять различные драйверы для шаговика, которые активируются нулем, или единицей.
Нет активного уровня - драйвер не подает ток в обмотки.

Ответить