а если так?
Подключение шагового двигателя к микроконтроллерам AVR
Модератор: boogyman
- demogorgon
- Новичок
- Сообщения: 4
- Зарегистрирован: 24 янв 2018, 17:53
Re: Подключение шагового двигателя к микроконтроллерам AVR
- Вложения
-
- kr_vyaz1.zip
- (34.79 КБ) 496 скачиваний
- demogorgon
- Новичок
- Сообщения: 4
- Зарегистрирован: 24 янв 2018, 17:53
Re: Подключение шагового двигателя к микроконтроллерам AVR
Здравствуйте. При количестве импульсов на оборот двигателя равном 48,если задать более 5(а нужно 9) оборотов, двигатель начинает вращаться постоянно и не останавливается.Насколько я понимаю, проблема в переполнении счетного регистра таймера Т0. Если у Вас есть время подскажите, пожалуйста, возможно ли устранить эту проблему используя Т0 (как правильно переписать по совпадению или еще что то). Или же как правильно использовать Т1(16 битный) для этих нужд, не могу разобраться как правильно написать и переподключить.((((((
- manojsoorya
- Новичок
- Сообщения: 2
- Зарегистрирован: 13 фев 2018, 22:13
Re: Подключение шагового двигателя к микроконтроллерам AVR
Пожалуйста, кто-нибудь может помочь мне сделать это? Мне нужно просто так
Нажмите и удерживайте кнопку: Работа двигателя (для обоих направлений)
Unpress: остановка двигателя (для обоих направлений)
Скорость: от 0 до 200 об / мин на той же схеме. Это очень срочно. Пожалуйста, помогите мне.....
Нажмите и удерживайте кнопку: Работа двигателя (для обоих направлений)
Unpress: остановка двигателя (для обоих направлений)
Скорость: от 0 до 200 об / мин на той же схеме. Это очень срочно. Пожалуйста, помогите мне.....
- manojsoorya
- Новичок
- Сообщения: 2
- Зарегистрирован: 13 фев 2018, 22:13
Re: Подключение шагового двигателя к микроконтроллерам AVR
Its working....................waw........waw....
Thank you so much Sir. One more doubg.. How to speedup the Engine bit high?
Thank you so much Sir. One more doubg.. How to speedup the Engine bit high?
Re: Подключение шагового двигателя к микроконтроллерам AVR
Здравствуйте!Помогите пожалуйста!Есть Тини85 нужна под неё программа включение двух портов.Которые включаются по очереди, с интервалом ровно через минуту на 2-3 сек.
Re: Подключение шагового двигателя к микроконтроллерам AVR
Чёт не кто не отвечает.
Есть у меня вторичные часы.Хотел бы подключить к Attiny85.
![Грустный :(](./images/smilies/icon_e_sad.gif)
Re: Подключение шагового двигателя к микроконтроллерам AVR
Вижу тема заброшена но... Как увеличить максимальные обороты шаговика на Tiny13a c поста #13? Работает на 9.6М, деления на 8 нет. Но максимальная скорость двигателя при задержке 10, дальше пропуски. Тот же двигатель на таких же драйверах но на Tiny2313a с другой программой работает на намного большей скорости. Т.е дело в программе? Или от контроллера тоже зависит? Спасибо.
Р.С. Программа на ассемблере, ее я не осилю переделать никак.
Р.С. Программа на ассемблере, ее я не осилю переделать никак.
Re: Подключение шагового двигателя к микроконтроллерам AVR
Не подскажете, как сделать, чтобы программа - могла выдавать пачки шагов-импульсов, регулируемые внешним переменным резистором?
Скажем, от 1 до 200, а при задании более 200 - игнорировала режим пачек, и переходила в режим беспрерывного вращения.
Наряду с регулировкой скорости резистором, и управления кнопками направлением движения.
Теоретически надо добавить опрос-преобразование еще одного канала АЦП (с дополнительным переменным резистором), и ввести дополнительную переменную-счетчик для подсчета шагов.
Почему именно такое требование, есть желание попробовать собрать диспенсер для паяльной пасты (флюса).
В принципе, программа с управлением движком от кнопок (в изначально остановленном состоянии) - полностью подходит для этой цели.
Но, хотелось бы задавать именно длительность отработки нажатия кнопок - чтобы при необходимости выставлять дозу выдавливаемой пасты одним нажатием на кнопку, а не держать постоянно кнопку нажатой.
Показалось, что прикрутить еще один переменный резистор - гораздо проще и удобней в работе, чем заморачиваться со всяким программированием кнопок, подключением дисплея и прочим.
Скажем, от 1 до 200, а при задании более 200 - игнорировала режим пачек, и переходила в режим беспрерывного вращения.
Наряду с регулировкой скорости резистором, и управления кнопками направлением движения.
Теоретически надо добавить опрос-преобразование еще одного канала АЦП (с дополнительным переменным резистором), и ввести дополнительную переменную-счетчик для подсчета шагов.
Почему именно такое требование, есть желание попробовать собрать диспенсер для паяльной пасты (флюса).
В принципе, программа с управлением движком от кнопок (в изначально остановленном состоянии) - полностью подходит для этой цели.
Но, хотелось бы задавать именно длительность отработки нажатия кнопок - чтобы при необходимости выставлять дозу выдавливаемой пасты одним нажатием на кнопку, а не держать постоянно кнопку нажатой.
Показалось, что прикрутить еще один переменный резистор - гораздо проще и удобней в работе, чем заморачиваться со всяким программированием кнопок, подключением дисплея и прочим.
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Подключение шагового двигателя к микроконтроллерам AVR
Здравствуйте Jes. Немного изменил код выложенный в этой ветке, добавил еще один потенциометр на вход ADC1. Проверяйте, исходник и Протеус во вложении
- Вложения
-
- unipolar_step_motor.zip
- Проект AVRStudio4
- (31.88 КБ) 262 скачивания
Re: Подключение шагового двигателя к микроконтроллерам AVR
Проверил прошивку в реальности, она работает, правда, есть кое-какие нюансы.
Желательно сделать какую нибудь защиту от дребезга, а то срабатывает и при нажатии на кнопку, и при ее отжатии тоже.
Между нажатиями кнопок - наверное, лучше поставить минимальную задержку, типа 0.2 секунды.
Кнопки - все таки должны работать две, одна на вращение в одну сторону, другая - в другую сторону.
И потом, наверное, нужно убрать условие превышения шагов более 200 - крутится постоянно, показалось, это - не комильфо.
Конечно, надо пробовать с механикой, я еще ее не сделал, там несложно, просто заморочено.
То, что при не нажатой кнопке снимается питание со всех обмоток шаговика - это хорошо, нет постоянного разогрева его обмоток, да и берет меньше мощности в состоянии покоя.
У меня под рукой не было шаговика-биполярника, на макете поставил униполярник с ULN2003A.
P.S.
Вам спасибо огромное за программу, она натолкнула на разные мысли по реализации диспенсера.
Желательно сделать какую нибудь защиту от дребезга, а то срабатывает и при нажатии на кнопку, и при ее отжатии тоже.
Между нажатиями кнопок - наверное, лучше поставить минимальную задержку, типа 0.2 секунды.
Кнопки - все таки должны работать две, одна на вращение в одну сторону, другая - в другую сторону.
И потом, наверное, нужно убрать условие превышения шагов более 200 - крутится постоянно, показалось, это - не комильфо.
Конечно, надо пробовать с механикой, я еще ее не сделал, там несложно, просто заморочено.
То, что при не нажатой кнопке снимается питание со всех обмоток шаговика - это хорошо, нет постоянного разогрева его обмоток, да и берет меньше мощности в состоянии покоя.
У меня под рукой не было шаговика-биполярника, на макете поставил униполярник с ULN2003A.
P.S.
Вам спасибо огромное за программу, она натолкнула на разные мысли по реализации диспенсера.
Re: Подключение шагового двигателя к микроконтроллерам AVR
Сейчас воюю с 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"
А переставлять с нуля операционку, и все равно потом танцевать с бубном - уж очень не хочется...
Уж и так и эдак, подумываю может перейти в 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
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Подключение шагового двигателя к микроконтроллерам AVR
Я для таких простых программ использую AVRstudio 4.19 и AVR toolchain 3.3.0, все устраивает
Re: Подключение шагового двигателя к микроконтроллерам AVR
Решил проблему тем, что установил AVRstudio 4.12 в связке с WinAVR-20060421.
Тоже была идея поставить AVR toolchain, но, пока не стал, как говорится, ...раз оно работает - значит, чинить не нужно...
Дальше будет видно.
Тоже была идея поставить AVR toolchain, но, пока не стал, как говорится, ...раз оно работает - значит, чинить не нужно...
Дальше будет видно.
Re: Подключение шагового двигателя к микроконтроллерам AVR
AntonChip, уточните, - в последней прошивке АЦП опрашивается именно в цикле прерывания по INT0.
А можно его опрашивать в основном цикле (как в прошивке с 1 поста - bipolar_step_motor_2.rar), только меняя каналы по очереди, или не получится?
По идее, там надо друг за другом поставить код запуска АЦП, но, с различным номером канала, добавив между опросами небольшую задержку.
Почему так - необходимо, чтобы движок отрабатывал нажатия на обе кнопки, с разницей в направлении вращения, (как в вышеупомянутой прошивке).
И еще, где, по вашему лучше поставить задержку (и какой длительности), чтобы нажатие на кнопку - вызывало только один запуск шагового движка?
Или надо обязательно организовывать проверку на повторность нажатия кнопки?
А можно его опрашивать в основном цикле (как в прошивке с 1 поста - bipolar_step_motor_2.rar), только меняя каналы по очереди, или не получится?
По идее, там надо друг за другом поставить код запуска АЦП, но, с различным номером канала, добавив между опросами небольшую задержку.
Почему так - необходимо, чтобы движок отрабатывал нажатия на обе кнопки, с разницей в направлении вращения, (как в вышеупомянутой прошивке).
И еще, где, по вашему лучше поставить задержку (и какой длительности), чтобы нажатие на кнопку - вызывало только один запуск шагового движка?
Или надо обязательно организовывать проверку на повторность нажатия кнопки?
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Подключение шагового двигателя к микроконтроллерам AVR
В последней программе каналы АЦП поочередно опрашиваются в главном цикле
Пока двигатель не пройдет все шаги повторное нажатие кнопки не обрабатывается
Вы хотите использовать две кнопки - вперед и назад?
Пока двигатель не пройдет все шаги повторное нажатие кнопки не обрабатывается
Вы хотите использовать две кнопки - вперед и назад?
Re: Подключение шагового двигателя к микроконтроллерам AVR
Да, необходимо в программе использовать 2 кнопки, как и в прошивке 1 поста для изначально остановленного двигателя.
Если шагов много, тогда выполнение защиты от дребезга - выполнится автоматически, а если шагов всего пара-тройка (в частном случае - один), тогда вряд ли.
Видимо, между нажатиями кнопок, обязательна нужна задержка 0.2 - 0.3 секунды, или около того.
Если шагов много, тогда выполнение защиты от дребезга - выполнится автоматически, а если шагов всего пара-тройка (в частном случае - один), тогда вряд ли.
Видимо, между нажатиями кнопок, обязательна нужна задержка 0.2 - 0.3 секунды, или около того.
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Подключение шагового двигателя к микроконтроллерам AVR
много это сколько?
Re: Подключение шагового двигателя к микроконтроллерам AVR
Вы имеете ввиду число шагов, ну, например, 50, или более.
Но, мое мнение более простое и радикальное - задержка для нажатий кнопок должна быть независимо от числа шагов, мне кажется так будет правильно.
То есть, отрабатывается 1-е нажатие кнопки, а все, что попало в следующие 0.3 - 0.5 секунды - игнорируется в любом случае.
Затем, опять ожидается нажатие какой либо кнопки, и так далее.
Теоретически можно будет ставить кнопки, наверное, с почти любым временем дребезга, если так можно сказать, хотя, обычно, даже в наиболее худшем варианте он не превышает 0.1 секунды.
Других кнопок я просто никогда не встречал.
Но, мое мнение более простое и радикальное - задержка для нажатий кнопок должна быть независимо от числа шагов, мне кажется так будет правильно.
То есть, отрабатывается 1-е нажатие кнопки, а все, что попало в следующие 0.3 - 0.5 секунды - игнорируется в любом случае.
Затем, опять ожидается нажатие какой либо кнопки, и так далее.
Теоретически можно будет ставить кнопки, наверное, с почти любым временем дребезга, если так можно сказать, хотя, обычно, даже в наиболее худшем варианте он не превышает 0.1 секунды.
Других кнопок я просто никогда не встречал.
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Подключение шагового двигателя к микроконтроллерам AVR
Заметил одну особенность, при повторном нажатии кнопки двигатель немного поворачивается в обратную сторону потом вращается нормально, чтобы такого не было надо запоминать последнее положение ротора и в последующем начинать движение с этого места
Re: Подключение шагового двигателя к микроконтроллерам AVR
А немного - это насколько он поворачивается назад?
Мне кажется, можно просто сделать таблицу не шагов, а полушагов.
Там будет массив из 8 байт на каждое направление вращение, вот так:
unsigned char cw_dir[8]=
{
0b00000001,
0b00000011,
0b00000010,
0b00000110,
0b00000100,
0b00001100,
0b00001000,
0b00001001
};
Влияние возврата назад - будет меньше, да и движок будет крутиться плавнее.
Только надо обязательно в паузе снимать напряжение с обмоток (то есть обнулять порт), иначе увеличится потребление тока, и нагрев обмоток.
А можно пару бит задействовать для контроля вращения, неважно в какую сторону.
Один бит - выводит лог.1, а другой - лог.0, это позволит применять различные драйверы для шаговика, которые активируются нулем, или единицей.
Нет активного уровня - драйвер не подает ток в обмотки.
Мне кажется, можно просто сделать таблицу не шагов, а полушагов.
Там будет массив из 8 байт на каждое направление вращение, вот так:
unsigned char cw_dir[8]=
{
0b00000001,
0b00000011,
0b00000010,
0b00000110,
0b00000100,
0b00001100,
0b00001000,
0b00001001
};
Влияние возврата назад - будет меньше, да и движок будет крутиться плавнее.
Только надо обязательно в паузе снимать напряжение с обмоток (то есть обнулять порт), иначе увеличится потребление тока, и нагрев обмоток.
А можно пару бит задействовать для контроля вращения, неважно в какую сторону.
Один бит - выводит лог.1, а другой - лог.0, это позволит применять различные драйверы для шаговика, которые активируются нулем, или единицей.
Нет активного уровня - драйвер не подает ток в обмотки.