Вот этим массивом (
весь код):
static const U8 usteps[8] = {0b1000, 0b1010, 0b0010, 0b0110, 0b0100, 0b0101, 0b0001, 0b1001};как и раньше пытаюсь генерировать импульсы для движения униполярного шаговика (единичка поджимает соответствующую ногу дарлингтона к земле, и через данную обмотку идет ток). Крутится, но, зараза, делает 4 шага на каждый прогон
(
Read more... )
Comments 6
Reply
А уж там, где нужно будет точно двигаться (ровно по одному шагу), буду старые системы биполярных ШД с драйверами использовать.
Reply
Reply
Зато хваленые драйверы с разбиением шага рекламируют так, как будто бы у них каждые 1/512 шага - устойчивые положения! Понятно, что снятие питания вызовет поворот ротора в ближайшее стабильное положение, а чтобы стоять в промежуточном состоянии, придется прикладывать напряжение удержания (а это чревато разогревом мотора и драйвера).
Я, кстати, посмотрел мельком свой код и понял, что буквально пяти-десяти минут хватит, чтобы переделать счетчик на "реальные" шаги. Сейчас readme по протоколу закончу и выложу все на гитхаб.
Reply
Reply
Черт! Сколько уже управлялок ШД наделал неправильных... И рисовал же диаграммы со смещенными синусоидами!!!
Но, что интересно, драйвера с делением шага на 8 за 8 импульсов делают честный шаг. Судя по всему, придется экспериментировать, как мне обеспечить перемещение на один шаг с последующим отключением питания... Ну или можно пойти по более простому пути и работать с учетверенными шагами ☺
Не, надо завязывать с такой фигней и работать с полноценными биполярными движками, управляемыми нормальными драйверами, где не нужно ломать голову над кучей проблем: те же тринамиковские позволяют по I2C или SPI задавать, с какой предельной скоростью, каким рампом на какое количество шагов надо уехать.
Reply
Leave a comment