Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Готовая электроника для самодельного робота. Уровень от начинающих до опытных конструкторов.

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение Master » 30 окт 2007, 21:48

Ну не знаю я в основном сталкивался с таким написанием. Ты же можешь писать мосфИты. :lol:
Да и какая разница как вещи называть главное чтобы смысл был понятен, а так что под столом (или сталом блин с этим албанским, вчера спорили как писать правильно флаг или флак, бедные училки руского языка, они наше время вспоминают как сказку с нашими "зделоть" и т. д.), что пацталом - все один фиг.
Последний раз редактировалось Master 30 окт 2007, 21:51, всего редактировалось 1 раз.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение avr123.nm.ru » 30 окт 2007, 21:51

Master писал(а):у меня был супер момент, забыл закрыть он весь вытек в ящичек


POXIPOL - не течет !!! Он "тикстропный" не стекающий значит. Как вазелин.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение Victorovych » 30 окт 2007, 21:57

Master писал(а):Тогда уж лучше повесить N-кодеры на INT0 и INT1, и по переполнению таймера, скажем раз в 1 сек, смотреть скока набежало на каждом колесе. А остальные ресурсы МК бросить на что то более полезное.


По моему быстрые INTы лучше использовать на что нибудь полезное. По моему пара операций выполняемых с частотой в 1-2 кГц два десятка операций выполняемых с частотой порядка 10 Гц
Ядро с тактовой 8МГц не перегрузят
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение rig » 30 окт 2007, 23:58

контрол обычно две, ну да ладна.
на основе таймера сделать часы с точностью Т=0,01 сек или более в зависимости от потребности. каждое срабатывание таймера, то есть чаждые Т секунд анализ датчиков энкодеров 1/0, запоминаем состояние 1/0, текущее время, смотрим изменилось ли состояние энкодера 0/1, если изменилось то надо расчитать время между срабатываниями. вычесть из текущего прошлое, запомнить, сравнить результат левого правого и расчитать поправку для изменения ШИМа. ШИМ тоже не мгновенно изменится значит надо вводить какую нибудь паузу на корректировку. скажем ввели поправку ждем Х*Т тактов на реакцию.
можно и остальные задачи также по кругу гонять. мегагерц должно хватить.
что скажем?
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение rig » 31 окт 2007, 00:01

шим кстати программный или аппаратный будет
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение avr123.nm.ru » 31 окт 2007, 00:04

Аппаратный очевидно изменяемый програмно.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение Victorovych » 31 окт 2007, 11:35

[
rig писал(а):шим кстати программный или аппаратный будет

Аппаратный, зачем зря ядро грузить?
rig писал(а):...ШИМ тоже не мгновенно изменится значит надо вводить какую нибудь паузу на корректировку. скажем ввели поправку ждем Х*Т тактов на реакцию.
...

Коэффициент заполнения ШИМа изменится на следующий такт после записи в OCR, так что поправку вводить не надо.
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение SSG » 31 окт 2007, 14:45

Пока не зарылись в подробности нужно продумать подход с созданию программы в целом.
Считаю, что в данном случае достаточно хорошим с точки зрения удобства разработки и дальнейшего усовершенствования, является использование подобия конечных автоматов. Это даст, во-первых, общность подходов к использованию периферии в разных местах программы, а, во-вторых, можно достаточно просто совершенствовать программу, не влияя на уже имеющийся код.
Что касается поворотов, то тут нужно прикидывать как будет соотноситься количество импульсов от левого и правого энкодеров, для поворота на определенный угол по определенному радиусу. Например на 2 импульса правого энкодера должен приходиться один от левого. Если это не так, нужно корректировать заполнение. Можно так же и выключать-тормозить один двигатель вообще, чтобы второе колесо довернулось до нужного соотношения импульсов.
Может уместно использовать ограниченный набор радиусов поворота и для них теоретически прикинуть соотношение количества импульсов от энкодеров и на практике замерить заполнения ШИМ, которые нужны для таких радиусов поворотов?
Последний раз редактировалось SSG 31 окт 2007, 15:00, всего редактировалось 1 раз.
I live My life!
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение rig » 31 окт 2007, 14:46

я баловался только с динамической индикацией на 100Гц, диод плавно зажигался и гас, дискретность в 1 % тоесть 10 КГц заполнение . а вот с моторами как быть, какую частоту опорную делать.
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение rig » 31 окт 2007, 14:50

Victorovych писал(а):Коэффициент заполнения ШИМа изменится на следующий такт после записи в OCR, так что поправку вводить не надо.

ту т я имел в виду нечто другое, шим то изменится быстро а насколько быстро изменится скорость вала мотора . вот на изменение скорости и надо делать паузу в корректировках. иначе мы за каждое срабатывание энкодера навводим поравок не учитывая момент инерции вала. тут нужен эксперимент или готовый практик.
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение Myp » 31 окт 2007, 15:02

rig писал(а):
Victorovych писал(а):Коэффициент заполнения ШИМа изменится на следующий такт после записи в OCR, так что поправку вводить не надо.

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

ну вот шим изменится а мотор по инерции крутится
тогда в след раз шим ещё больше уменьшится а мотор продолжает медленно тормозит
в итоге он затормозится слишком сильно и будет поправка на увеличение шима
в итоге автоколебания :)
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение Victorovych » 31 окт 2007, 15:40

rig писал(а):ту т я имел в виду нечто другое, шим то изменится быстро а насколько быстро изменится скорость вала мотора . вот на изменение скорости и надо делать паузу в корректировках. иначе мы за каждое срабатывание энкодера навводим поравок не учитывая момент инерции вала. тут нужен эксперимент или готовый практик.

При составлении алгоритма было введено предположение что скорость вращения изменяется довольно быстро и блуждание относительно прямой будет незначительным. Если предположить что инерция большая, тогда стоит учитывать разность между имеющейся ошибкой и предыдущей и на основании этих данных увеличивать или уменьшать приращение коэффициента заполнения.
В общем, не попробуешь - не узнаешь :)
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение Strijar » 31 окт 2007, 17:49

Предлагаю сделать проще. Движки работают независимо друг от друга. Скорость задается временем сигналов от энкодера (speed_time): меньше время - быстрей крутится. Энкодер сидит на прерывании, при срабатывании выясняется за какое время пришел сигнал (encoder_time) и после сравнивания с тем, что задано делается коррекция ШИМом скорости. ШИМ корректируется методом Ньютона ;) Грубо, без учета препятствий pwm_new = pwm_old * (encoder_time / speed_time)

Вот вам и прямолинейное движение, и повороты.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение Виталий » 01 ноя 2007, 14:22

Ну вот вобщем начал потихонечку набрасывать.
http://quark-bot.blogspot.com/2007/11/blog-post.html

То, что использовать в качестве скорости время между импульсами - согласен, но дело в том, что там может быть очень большой диапазон измерений, от мс до единиц секунд.
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Софт - Алгоритм работы ШИМ+Энкодер->ПИД

Сообщение EdGull » 01 ноя 2007, 17:11

Ну вот вобщем начал потихонечку набрасывать.
http://quark-bot.blogspot.com/2007/11/blog-post.html

А по чему в ПДФнике, почему не сразу на сайте?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Пред.След.

Вернуться в МиниБот — национальный класс роботов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7