|
Структурная реализация ПИД, как организовать? |
|
|
|
Mar 25 2016, 11:26
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
MrYuran поясните подробнее. Мне нужно вызывать некую процедуру каждые 256 Гц, при этом таймер у меня будет работать, допустим, на 256*256*n Гц, где n выберу от 2 до .... Останавливать/перезапускать таймер я опасаюсь - нужен гарантированный перманентный ШИМ.
ЗЫ по поводу структуры и логики работы мне сейчас вроде все понятно (хотя могут внезапно появиться вопросы, которые сейчас не подозреваю), остались детали - аналоговая схема управления двигателем от двух 256-битных шимов, сколько брать бит от АЦП, где и как ограничивать аддитивные составляющие ПИД. В конце концов какой взять двигатель и как реализовать механику, может приклеить по кругу резиновую зубчатую полоску и ездить по ней шестеренкой на двигателе, для отсутствия проскальзывания. Копировать код и реализацию один в один с прототипа не хочу.
|
|
|
|
|
Mar 25 2016, 11:39
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
EmbedElektrik спасибо, хорошая мысль, думал ее. У меня в рабочем режиме один датчик (коэффициенты получаю по другим ножкам через АЦП при инициализации после включения), переключать входы АЦП не надо, значит можно запустить режим автоопроса одного канала. Если можно установить нужную его частоту, то должно сработать.
MrYuran спасибо, понятно. Получается уже 3 хороших варианта, как обойтись одним таймером и гарантировать строгую периодичность опроса. ЗЫ хотя в этой ситуации непонятно, как мне продолжать декрементировать счетчик этого нужного количества периодов ШИМ, когда я начал рассчитывать результат ПИД. Его же надо продолжать декрементировать. Вариант с прерываниями мне все-таки более понятен.
|
|
|
|
|
Apr 7 2016, 13:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(MrYuran @ Mar 25 2016, 15:37)  В общем цикле (main loop) занимаетесь своими мелкими делами и между делом опрашиваете флаг переполнения таймера ШИМ. По флагу переставляете счетчик (оптимально декрементировать до нуля), по достижению нужного колиества циклов выполняете основную функцию ПИД. Не будет накладных расходов на прерывание. Ой!!! Не надо так делать. В прерывании, а не в главном цикле. Цитата(_Ivana @ Apr 7 2016, 17:02)  Tarbal, давно не заходил на форум, не видел ваш ответ. Спасибо, попробую изучить. Сейчас изучаю ассортимент и выбираю интернет-магазин, где закупить все сразу - двигатели с редукторами (разные штук 5 на пробу), их ШИМ-контроллеры, колеса и прочую механику. С механикой у меня всегда нелегко идет, собственно электроника легче  С механикой у всех нелегко идет, зато на форуме механиков с электроникой нелегко идет, а с механикой легче.
|
|
|
|
|
Apr 7 2016, 14:57
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(_Ivana @ Mar 24 2016, 12:02)  Думаю реализовать ПИД-регулятор на АВР Тини-13. Хочу уточнить, правильно ли я выбираю структуру реализации.
Сначала инициализирую все что надо, читаю по трем АЦП значения, задающие 3 коэффициента ПИД. Запускаю таймер с требуемой частотой опроса датчика, устанавливаю по нему прерывание. В прерывании читаю показания АЦП датчика и выставляю флаг, что пришло новое значение. В мэйне в бесконечном цикле жду пока не установится этот флаг, а как он установился - рассчитываю управляющее воздействие и кладу его в ШИМ, сбрасываю флаг. Все красиво, но непонятно одно - у меня один единственный таймер - он определяет частоту опроса и он же определяет частоту ШИМ. Частота прерываний больше или равна частоте ШИМ, поскольку ШИМ крутит счетчик от 0 до 255, а прерывание - от заданного мной значения до 255. И вообще, если я буду опрашивать датчик чаще, чем выводить управляющее воздействие, будет имхо как-то не комильфо. Вижу 2 варианта
Что скажете, господа? Вижу третий. В бесконечном цикле Считываем АЦП1- П-компонента. Потенциометры на питание - 3 штуки. Считываем АЦП2- И-компонента Считываем АЦП3- Д-компонента Обновляем константы ПИДа Считываем АЦП4- разбаланс Считаем воздействие. 1 или 0 Выдаем воздействие. ----------------------------------- Экономим целый таймер. И ШИМ. Параметры считываем в цикле, так как тут нужно глазами смотреть...
|
|
|
|
|
Apr 8 2016, 11:08
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Цитата(Tanya @ Apr 8 2016, 13:11)  Каков у Вас период ШИМа предполагается? При частоте опроса датчика 256Гц (ориентируясь на прототип, может сделаю и в 2-4 раза меньше) частота таймера ШИМ пусть в 4 раза больше - 1кГц. Каждый 4-й тик полного счетчика таймера считаю управление. Если, конечно, мой выбранный драйвер на L298N будет нормально работать на такой частоте ШИМа. Если пищать будет - пока думаю что некритично. Цитата(Tanya @ Apr 8 2016, 13:11)  А вместо потенциометра и АЦП можно сделать кнопки - увеличить и уменьшить. Можно. К тому же я предполагаю снимать коэффициенты в 6 бит (64 варианта от 0 до 100%), с одной стороны можно было бы и побольше, но так я гарантированно уложусь в 2 байта результата при однобайтном значении ошибки каждой составляющей и сумме трех умноженных на коэффициенты ошибок. Но тогда возникает вопрос визуализации значений коэффициентов - переменный резистор отличный прибор задания значения и визуализации его же забесплатно (можно хоть круговую шкалу нарисовать), кнопки и всякие энкодеры в этом отношении проигрывают. Цитата(Tanya @ Apr 8 2016, 13:11)  А время вычислений легко сделать постоянным. Наверное. Если закопаться в математику и написать чисто линейный алгоритм нормализаций и масштабирований значений в диапазоны безо всяких условных переходов, который будет на порядок сложнее и неочевиднее.
|
|
|
|
|
Apr 8 2016, 13:04
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Ну вот я и планирую новые значения считывать с потенциометров при нажатии кнопочки - только кнопочка называется Power Off  И Держать рукой, да. Можно взять нормальный контроллер, можно ардуину, можно вообще готовый ПИД или сразу все готовое купить и не мучиться  Пока я пытаюсь определиться с заказом комплектующих - у меня нет опасений, что выбранного контроллера мне не хватит. Может, когда дойдет до практики, они появятся.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|