Эксперименты с шаговиком

Потихоньку раскуриваю что и как

Почти все в описалове на ютубе. Код страшный и уродливый, впервые задумался что ассемблер наверное не помешает. Сделано на хтоническом флаговом автомате без прерывний. Хотя по хорошему таймер для расчета приращения скорости не помешал бы. Движок похоже не вышел на максимальные обороты. Длительность подачи напряжения на ногу — около 10 мс на максимальной скорости. У мотора 64 шага на оборот и понижающий в 64 раза редуктор. Пальцами удержать весьма и весьма сложно. В полношаговом режиме запустить не смог, хотя пытался не очень настойчиво. Пока отлаживал в Протеусе нашел багу с переполнением буфера в протеусовском примере АВР+шаговик. Особо не мешало, но побочные спецэффекты крови попили
  • +2
  • 08 октября 2012, 02:55
  • Buba

Комментарии (12)

RSS свернуть / развернуть
хм. делал шаговик на сях без асма. уперся в шаговик, а не в язык. что-то ты не так делаешь, явно.
код в студию!
0
Не, там есть еще куда разогнать. Об ассемблере задумался когда увидел листинг компилятора, он страшный. Но это с выключенной оптимизацией. Включать пока не стал потому что может коцнуть пустой цикл, на котором сделана регулировка скорости. В планах — разобраться с максимальной скоростью и добить полношаговый режим
0
хм. оптимизацию выключать не стоит. вообще. никогда.
единственное исключение — отладка как самоцель.
и что тебе дало изучение листинга?
0
Не понял Оо Чем же оптимизации может повредить пустой цикл? А, for с не volatile счётчиком.

Никто не запрещает вынести задержку в отдельную функцию. И сделать переменную volatile. Никто тогда цикл не тронет.
0
volatile и принципы оптимизации для меня пока темный лес, сказывается альтернативная разработка на Python. Оптимизацию отключил из-за какого-то глюка Студии и отвалившейся из-за этой _delay_ms(), которая была в начальном наброске кода. В листинге просто много не необходимых на первый взгляд инструкций. Просто разбираться с этим в два часа ночи уже не хотелось, отложил на потом
0
Вы намеренно полный оборот не демонстрировали или это особенность шаговика?
0
  • avatar
  • DVF
  • 08 октября 2012, 11:04
Все крутит как положено, не подумал что это вызовет любопытство
0
По воле случая при вращении по часовой стрелке останавливали в аккурат в одном и том же месте.
0
Я для проверки и определения порядка фаз шаговиков использую контроллер на базе вот такого: Stepper Motor controller.rar 280kb. depositfiles.com/files/un2dvid2f
Там сохраненные странички из моего архива. На самом сайте все поменялось, искать, чтобы дать ссылку, не стал. В архиве есть все что нужно.

Есть кнопки СТОП, ВЛЕВО, ВПРАВО, скорость регулируется переменным сопротивлением. При желании изменить диапазон регулировки (например, сделать по шагу в секунду, для определения чередования фаз), легко заменой конденсатора С1 на другой, с большей или меньшей емкостью.

В моей модификации есть изменения — добавлен переключатель шаг/полушаг, и еще какой — то (уже не помню, зачем).

Несколько лет назад я таким контроллером за полдня перебрал кучу своих шаговиков,(с полсотни), оценив их момент и максимальную скорость вращения.
Правда, только для движков с раздельными обмотками (5 и 6 выводов), для которых достаточно 4 ключей на земле. Биполярные (с 2 обмотками, которые надо включать через мост), — не проверяет. Но если добавить еще мостовой драйвер — например, L298, с соответствующими небольшими изменениями в программе — то сможет и их. Но у меня двухобмоточных шаговиков немного, так что пока не актуально.
0
  • avatar
  • SWG
  • 08 октября 2012, 11:07
Я это оставлю пока не начну раскуривать FPGA, есть там кое-какие задумки на эту тему
0
А что за отладочная плата на видео?
0
  • avatar
  • Bonio
  • 09 октября 2012, 22:58
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.