Счётчик шагов на STM32

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7489
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Счётчик шагов на STM32

Сообщение MX_Master »

Сергей Саныч писал(а):Вообще-то без учета особенностей конкретных драйверов ШД такой счетчик сможет отлавливать только наиболее грубые ошибки, типа неправильного количества импульсов "туда" и "обратно". Реальные драйверы могут иметь разные тонкие глюки.
Например, могут отрабатывать лишний шаг при переключении сигнала DIR при определенном состоянии STEP, что может на определенных УП приводить к накоплению ошибки. Поскольку наш счетчик, скорее всего, будет "честно" считать STEPы, то эта ошибка останется незамеченной.
я уж не говорю об аналоговых нюансах из-за медленных входных оптронов драйвера.
Дык, счётчик как раз призван отделить мух от котлет. Дополнительно на экране мы можем показывать статистику по таймингам и частотам. Длину сигнала STEP и его отступ от сигнала DIR. Минималку/максималку по частоте и т.д. Эта инфа будет очень полезна при поиске косяков.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7489
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Счётчик шагов на STM32

Сообщение MX_Master »

Сделал первую версию с простым программным счётчиком
https://github.cnc32.ru/MX_Master/stepdir_counter

В папке Debug есть готовая прошивка (hex). Кол-во шагов смотрю прямо в глобальных переменных через STM Studio + китайский ST-LINK v2. Проверил на 4-х осях до 200 КГц - полёт нормальный. Вощем-то, для моих задач этого вполне достаточно. Вся соль программного счётчика в основном цикле выглядит так

Код: Выделить всё

port = GPIOA->IDR;

if ( (port & STEP_X_Pin) && !(port_old & STEP_X_Pin) ) pos_X += (port & DIR_X_Pin) ? -1 : 1;
if ( (port & STEP_Y_Pin) && !(port_old & STEP_Y_Pin) ) pos_Y += (port & DIR_Y_Pin) ? -1 : 1;
if ( (port & STEP_Z_Pin) && !(port_old & STEP_Z_Pin) ) pos_Z += (port & DIR_Z_Pin) ? -1 : 1;
if ( (port & STEP_A_Pin) && !(port_old & STEP_A_Pin) ) pos_A += (port & DIR_A_Pin) ? -1 : 1;

port_old = port;
Распиновка для синей пилюли
2020-02-14_234311.png (3742 просмотра) <a class='original' href='./download/file.php?id=176710&mode=view' target=_blank>Загрузить оригинал (50.88 КБ)</a>
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Счётчик шагов на STM32

Сообщение aftaev »

Сергей Саныч писал(а):я уж не говорю об аналоговых нюансах из-за медленных входных оптронов драйвера.
Выпаиваем ноги выходные у оптрона и туда припаиваем счетчик шагов ;)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Счётчик шагов на STM32

Сообщение aftaev »

MX_Master писал(а):Дополнительно на экране мы можем показывать статистику по таймингам и частотам. Длину сигнала STEP и его отступ от сигнала DIR. Минималку/максималку по частоте и т.д. Эта инфа будет очень полезна при поиске косяков.
Вообще класс будет. Втыкаешь его в лпт материнки и смотришь что происходит :)
Например у нас на эрозии стоит китайская платка которая больше 1500гц(да скорость задается в Гц) начинает хорошо пропускать шаги.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7489
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Счётчик шагов на STM32

Сообщение MX_Master »

Следующую версию, сделаю так, как советовал дядя Серёжа :) Если кому-то нужна версия под дисплей, напишите модель дисплея. И не забудьте закинуть автору 5 копеек доната на этот дисплей, потому что на руках из экранчиков ничего нет ;)

Если нужен ещё какой-то функционал, пишите.
Ответить

Вернуться в «Электроника»