LINUX.ORG.RU

Arduino. Библиотека для шаговых двигателей.

 


1

7

Вот пол года ковыряюсь на уровне хобби с Arduino. Позавчера решил разобраться с шаговыми двигателями.

На удивление не нашёл ни одной библиотеки удовлетворяющей хотябы двум критериям.

  1. Чтобы работала не через Delay. Это не правильно описал конечно. Чтобы работало не останавливая процесс других вычислений.

  2. Чтобы работало точно. «Вот сказал один оборот точно» - и точно один оборот (первый пункт здесь причём).

«Железную багиню» для поржать приглашу позже.



Последнее исправление: HIS (всего исправлений: 1)

Ответ на: комментарий от HIS

Если ты напишешь библиотеку, которая действительно упростит жизнь людям, пришедшим после тебя, если её будут использовать, и не будут с неё плеваться, то будет здорово. Если ты напишешь ещё одну библиотеку низкого качества, то… фиолетово. Их уже и так в мире завалы.

Писать хорошие программы тяжело. Но ещё тяжелее писать хорошие библиотеки.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Не нужны тут никакие библиотеки! Достаточно сниппет хороший написать.

Библиотеки в embedded вообще — зло!

anonymous
()
Ответ на: комментарий от anonymous

То-то в FPGA и и производстве железа процветает продажа готовых IP-блоков ;)

anonymous
()

Шаговые двигатели разные. Драйверы разные. По идее никакой библиотеки не надо.

  • Либо у тебя есть драйвер и ты 4 ноги контролёра выставляешь на выходы и согласно таблице переключаешь ноги которые дёргают драйвер который делает поворот двигателя

  • Либо драйвера у тебя нет и ты делаешь его сам. И дальше всё тоже самое.

4 ноги и всё (для биполярного (которые в dvd там к примеру) )

нужно просто в определённой последовательности включать и выключать ноги и всё. Тут библиотеки не нужны всё сделает драйвер а именно переполюсовку обмоток.

https://www.google.com/search?q=%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0+%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8+%D1%88%D0%B0%D0%B3%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B2%D0%B8%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8F&client=firefox-b-d&sxsrf=ACYBGNT9aCet9iCMtbPtXfQifaYtUbsZNg:1579384178764&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjepcHHkI7nAhUFpIsKHSGkBm4Q_AUoAXoECBYQAw&biw=1920&bih=952

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от HIS

Тогда для разных типов шаговиков. С разными режимами шагов. Целый шаг/ полушаг. Шаги с проверкой (тоесть после шага проверять етсть ли на входе нужной ноги истина к примеру если движущее тело датчиком упёрлось во что-то или лазерный или иной датчик безопасности задет не суть важно) Вот именно утилитарная библиотека которая рутину убирает была бы полезна.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от i-rinat

Нет, сниппет - это готовый кусок кода, выполняющий определенный функционал. А не тупо заголовочный файл…

anonymous
()
Ответ на: комментарий от mv

Я свою поделку для Вольво с AVR перевёл на ARM, а потом на ESP32, без особого геморроя.

Бложек твой куда переехал?

AnDoR ★★★★★
()
Ответ на: комментарий от anonymous

К примеру https://github.com/nothings/stb

Для avr и подобного удобно некоторые шаблонные действия описывать в заголовочных файлах. Например взять заголовочный файл и поместить туда просто пару функций или макросов типа шаг мотора назад, шаг мотора вперёд, определить текущий шаг, сделать полушаг и вот тебе утилитарная header-only (ака STB) библиотека управления шаговиком. Причём универсальная единственное что будет нужно выбирать тип шаговика через define и выбирать нужные ноги вывода. Сам алгоритм шаговиков один и тот же что хорошо потому что нет никакой специфики столь свойственной часто МК. Удобно. Практично.

Скетчи ардуинщиков вроде бы так и работают. Разве что обозвали они это скетчами и всё. Суть то та же самая.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

посмешил :)

Это эдакий терминатор должен быть целый с кучей обвязок вместо одного двигателя.

HIS
() автор топика
Ответ на: комментарий от Rastafarra

я позавчера только потрогал сам двигатель и вчера понял что нет нормальных прог.

код будет наверное через месяц.

HIS
() автор топика
Ответ на: комментарий от Rastafarra

Собственно тема была создана для того чтобы люди написали свои предложения чего не хватает в существующих либах.

А не лили тут воду.

HIS
() автор топика
Ответ на: комментарий от i-rinat

Если ты напишешь библиотеку, которая действительно упростит жизнь людям, пришедшим после тебя, если её будут использовать

Если ты будешь меньше пи…ть, людям станет лучше.

Я никогда в «мир» не выпускал низкокачественных программ или ещё чего нибудь. Я не только умею программировать, если что.

И тебе советую сто раз проверять то, что ты выпускаешь в «мир».

HIS
() автор топика
Ответ на: комментарий от HIS

Я никогда в «мир» не выпускал низкокачественных программ или ещё чего нибудь.

а че, где глянуть? акк на гитхабе?

Rastafarra ★★★★
()
Ответ на: комментарий от Rastafarra

Я разработчик Энтерпрайз продуктов в основном.

глянь: https://www.keysurvey.com/ ну или http://sdfm.gov.ua/

Хотя… В мои шашки 25 летней давности можешь сыгрануть ;)

https://drive.google.com/open?id=1BSRFHO15xBtokhG_UajnvrTwXV6DkLY5

Признаюсь сразу. Там есть одна известная мне ошибка. Но чтобы её обнаружить нужно весьма не плохо играть в шашки. Удачи ;)

Да! там инструкция есть по настройке ДОС бокса.

Ну и в догонку мелочёвка: https://play.google.com/store/apps/details?id=com.his.photofifteen

HIS
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Чувак, какой, нафиг, дефайн? Абдуринщики на цепепе пишут!!! Т.е. достаточно сделать класс с нужным набором виртуальных функций, а сами функции реализовать через шаблоны. Получится круто и универсально. И при компиляции не будет оверхеда.

Правда, я не встречал такого. Похоже, абдуринщики ни хрена кресты не знают и пишут в стиле «абы на сях получилось»!

anonymous
()
Ответ на: комментарий от HIS

Я разработчик Энтерпрайз продуктов

А, обычный быдлокодер, устроившийся веб-мартышкой? Т.е. в программировании ты - полный нуль. Понятно.

anonymous
()
Ответ на: комментарий от HIS

Вот, что и следовало ожидать. Ты - обычное чмо, которое имеет завышенное ЧСВ и начинает тут на всех наезжать, кто этой падле хорошие советы дает.

А не забанить ли тебя, гондон?

anonymous
()
Ответ на: комментарий от HIS

Ты так и будешь в разряде чмошников-недоносков ходить, пока достойную ссылку на свой код не дашь, чтобы можно было посмотреть - чмо ты, или человек!

anonymous
()
Ответ на: комментарий от HIS

А вот тебя я не узнаю. Ну да все равно. Видно, что толку из тебя ноль. Ведь если бы ты на самом деле собрался в embedded разобраться, то абдурину бы точно стороной обходил!

anonymous
()
Ответ на: комментарий от anonymous

Вообще просто так сложилось что одному знакомому нужно было написать простую прогу для режессирования риалтайм видео и у него уже была теория как это сделать на Ардуино. Ну чтобы за него кнопки нажимала прога, а он мог пить водку/пиво в это время.

Часа за 2 я ему «накалякал» прогу на эмуляторе. Он мне позже подарил Атмел мега. Вот я и решил позаморачиваться с этой фигнёй. Чуть позже узнал про STM. Позже и ими займусь.

HIS
() автор топика
Ответ на: комментарий от HIS

Чуть позже узнал про STM. Позже и ими займусь.

Только заходи с правильной стороны, а не со стороны калокуба! Вот - правильная сторона (директории с суффиксом notar).

А если ты реально знаешь кресты, то тебе вообще просто будет: нафигачишь на шаблонах себе работу с железом, и у тебя инициализация и запуск нужных функций вообще элементарно будет делаться. Правда, компиляться будет дольше. Зато не будет никакого оверхеда в производительности и размере кода.

anonymous
()
Ответ на: комментарий от anonymous

Тьфу, nolib.

// блин, на ЛОРе реально не хватает граватаров для анонимусов, чтобы их различать можно было, а также возможности редактировать комментарии анонимусам! Ну и по умолчанию должен быть лоркод, а не наркоманский маркДАУН!

anonymous
()
Ответ на: комментарий от HIS

Кто ж тебя, дурака, уму-разуму научит, если не анонимусы? Тут регистрантов вменяемых - раз, два - и обчелся!

anonymous
()
Ответ на: комментарий от anonymous

Что значит опять и почему я сел?

Ты хоть и ананимуз - всёравно ума тебе это не прибавляет.

HIS
() автор топика
Ответ на: комментарий от AUX

Чтобы ты «сказал» вращайся за минуту и 13 секунд столько-то оборотов, а дальше пусть оно там что-то ещё делает (например в шашки играет и переезжает от стола к столу со многими игроками ;) ) и не думает что и сколько там должно вращаться.

HIS
() автор топика
Последнее исправление: HIS (всего исправлений: 1)

Чтобы работала не через Delay. Это не правильно описал конечно. Чтобы работало не останавливая процесс других вычислений.

чтобы не костылировать то, что давно написано до нас - придется засунуть ртос на твой мк

Чтобы работало точно. «Вот сказал один оборот точно» - и точно один оборот (первый пункт здесь причём)

и именно для этого и нужен rtos. Чтобы низкоприоритетные задачи считались пока у тебя дилей

К сожалению, универсальных библиотек нет, а специфические не особо нужны. Пожалуй, если будешь писать либу - то пиши для всех и вся. Вангую просто код, однако тонны ifdef-ов и много-много человекочасов работы.

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

придется засунуть ртос на твой мк

Чего?? Ради шаговиков ртось? Да еще и на аврку говнистую? Ты что?

anonymous
()
Ответ на: комментарий от reprimand

Собираюсь сделать 3 варианта использования библиотеки.

  1. Который пока работает - тормозит систему

  2. Который нужно вызывать в каждом цикле работы контроллера, не тормозит систему*

  3. Который работает от прерывания таймера. Если не нужно использование для своих специфических нужд таймеры. И тут вообще не нужно будет вызывать обработку в каждом цикле.

Каждый разработчик своих «поделок» сможет применить любой из подходящих ему вариантов. Не тормозит систему*

    • это значит что нужно же время на некоторые вычисления делать. Постараюсь сделать задержки минимальными.
HIS
() автор топика
Последнее исправление: HIS (всего исправлений: 1)
Ответ на: комментарий от HIS

Ты забыл четвертый вариант - на связанных таймерах. Один таймер отсчитывает шаги, а второй — генерирует CLK импульсы для микрошагов. При делении шага 1/16 получаем до 4096 шагов «за присест».

При этом все делается вообще без участия ядра микроконтроллера! Тупо автоматом...

Если жалко второй таймер, микрошаги можно считать в прерывании UEV основного таймера (я, собственно, так и делал обычно, т.к. если у тебя четыре шаговика, восемь таймеров — дофига как-то, а так получается SysTick + четыре таймера, вполне нормально). В этом случае уже количество шагов ничем не ограничено.

anonymous
()
Ответ на: комментарий от anonymous

я за 2 дня юзания изучил шаговики вдоль и поперёк.

Один таймер отсчитывает шаги, а второй — генерирует CLK импульсы для микрошагов

ты видать нифига не понял что такое шаг и полушаг.

HIS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.