Страница 2 из 2

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

Добавлено: 08 фев 2020, 14:36
MX_Master
Сергей Саныч писал(а):Вообще-то без учета особенностей конкретных драйверов ШД такой счетчик сможет отлавливать только наиболее грубые ошибки, типа неправильного количества импульсов "туда" и "обратно". Реальные драйверы могут иметь разные тонкие глюки.
Например, могут отрабатывать лишний шаг при переключении сигнала DIR при определенном состоянии STEP, что может на определенных УП приводить к накоплению ошибки. Поскольку наш счетчик, скорее всего, будет "честно" считать STEPы, то эта ошибка останется незамеченной.
я уж не говорю об аналоговых нюансах из-за медленных входных оптронов драйвера.
Дык, счётчик как раз призван отделить мух от котлет. Дополнительно на экране мы можем показывать статистику по таймингам и частотам. Длину сигнала STEP и его отступ от сигнала DIR. Минималку/максималку по частоте и т.д. Эта инфа будет очень полезна при поиске косяков.

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

Добавлено: 14 фев 2020, 20:42
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 (3741 просмотр) <a class='original' href='./download/file.php?id=176710&mode=view' target=_blank>Загрузить оригинал (50.88 КБ)</a>

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

Добавлено: 14 фев 2020, 20:55
aftaev
Сергей Саныч писал(а):я уж не говорю об аналоговых нюансах из-за медленных входных оптронов драйвера.
Выпаиваем ноги выходные у оптрона и туда припаиваем счетчик шагов ;)

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

Добавлено: 14 фев 2020, 20:57
aftaev
MX_Master писал(а):Дополнительно на экране мы можем показывать статистику по таймингам и частотам. Длину сигнала STEP и его отступ от сигнала DIR. Минималку/максималку по частоте и т.д. Эта инфа будет очень полезна при поиске косяков.
Вообще класс будет. Втыкаешь его в лпт материнки и смотришь что происходит :)
Например у нас на эрозии стоит китайская платка которая больше 1500гц(да скорость задается в Гц) начинает хорошо пропускать шаги.

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

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

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