реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Структурная реализация ПИД, как организовать?
Baser
сообщение Mar 24 2016, 13:00
Сообщение #16


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(XVR @ Mar 24 2016, 14:13) *
В оригинальном AN964 PWM работает на 31.2 KHz, а цикл PID - на 256 Hz

Цитата(_Ivana @ Mar 24 2016, 14:36) *
А как это сделать на одном таймере

Вынудили меня все таки посмотреть даташиты sm.gif
PIC16F684 покруче будет, у него три таймера и один из них 16-и разрядный.
И памяти поболе раза в два.
Так что советую не заниматься мазохизмом, а взять МК чуть получше.

Делать на одном таймере 31 kHz - это 32 мкс период прерывания - и в нем счетчик/делитель на 120 - конечно можно,
но все будет впритирку, могут быть пропуски обработки.
Все это не слишком критично, но выглядит не очень красиво.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Mar 24 2016, 13:05
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Tanya про модулятор не понял, но идею забыть о таймере уловил. Если действительно вычислять не по прерыванию таймера, а сразу как закончилось предыдущее вычисление - то есть без прерываний гонять цикл постоянно, может с добивкой фиктивными операциями для замедления, то пропорциональная составляющая должна отлично это перенести, вот с остальными похуже. Но если у меня один цикл вычисления (в зависимости от разных условных переходов) будет выполняться примерно одинаковое количество тактов, то можно и так попробовать. Но скорее всего это будет плавать, и Д/И составляющие будут сильно скакать, особенно Д. Все-таки я склоняюсь к своему же варианту 2 - таймер на частоту побольше для ШИМ, а запрашивать датчик и вычислять значение каждое n-е прерывание по этому же таймеру. Причем, n может быть и 255.

Baser вот, вижу поняли мой стартовый посыл первого поста sm.gif Не очень красиво, говорите? А что там - 100 раз ввалиться в прерывание таймера просто декрементировать счетчик, проверить на 0 и выйти если не 0 - неужели так будет мешать? Ну там несколько тактов на переход по icall/reti... Имхо, на данном камне - самый компромиссный вариант? Лучше, чем ШИМ с частотой опроса и опрос в цикле без таймера имхо.

ЗЫ к тому же не обязательно разгонять ШИМ до 31 КГц, может и 1 КГц при 256 Гц частоте опроса хватит. А это всего 3 лишних раза ввалиться в прерывание декрементировать счетчик - и снова вернуться к прерванному на середине расчету выходного значения sm.gif Если будет пищать на этих 1 КГц - будет не баг а фича sm.gif
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 24 2016, 13:24
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(_Ivana @ Mar 24 2016, 16:05) *
Tanya про модулятор не понял, но идею забыть о таймере уловил.

Можно немного почитать... про АЦП. Немного поясню. Управление ( для простоты рассмотрим простой случай) добавляет или вычитает каждый цикл какое-то число, и если сумма больше нуля, включается (пусть будет так) печка и вычитается некоторая константа оттуда же. Когда управление опять накопится, опять включается - один импульс. Получится более плавное управление по сравнению с ШИМом.
Вы бы сначала погоняли свое управление (фиктивно) для определения времени вычислений...
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Mar 24 2016, 13:34
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Погоняю конечно. Но у меня могут быть достаточно радикальные изменения в коде, которые еще не однозначно решены. Писать я буду на ассемблере (кто там про мазохизм писал? wink.gif), и к примеру аппаратного умножения на моем камне нет (снова про мазохизм), надо будет умножать вручную. Так я пока даже не знаю, буду ли я 10 бит на 10 бит из АЦП умножать в 3 байта результата или возьму только по одному старшему байту из АЦП, а 2 младших бита отброшу... А от этого время вычислений будет меняться сильно. Я пока с общей структурой уже можно сказать определился с помощью участников этой темы. А например как управлять двигателем вправо-влево по двум выходам ШИМ (на моем камне 2 выхода ШИМ) я пока даже не представляю. В прототипе на PIC16F684 для управления двигателем использовано 4 вывода МК - у меня столько нет лишних. Но я подозреваю, что и двумя можно обойтись - один по часовой (второй при этом 0), второй - против (первый при этом 0).
Go to the top of the page
 
+Quote Post
Baser
сообщение Mar 24 2016, 13:45
Сообщение #20


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(_Ivana @ Mar 24 2016, 15:34) *
(кто там про мазохизм писал? wink.gif)

Я в такие игры лет 15 назад наигрался от отсутствия дешевых ресурсов на МК, больше не хочу sm.gif
Возмите что ль маленький STM32, ну или на крайний случай PIC24 - приятная архитектура wink.gif
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Mar 24 2016, 13:57
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Baser согласен, если упрусь в препятствия непреодолимой силы - скрепя сердце возьму камень чуть мощнее sm.gif Но пока все-таки попробую на этом. Все мои сложности - от некоторого пока недопонимания отдельных моментов, контроллер меня почти не ограничивает - 4 входа АЦП, 2 выхода ШИМ - ровно столько сколько мне всего надо. Ну один таймер (вроде придумал как обойти), ну нет умножения (но тактов при 256 Гц опроса должно хватить на все вычисления). Так то можно и Ардуину взять и на Си написать, транжиря ресурсы. Но сейчас мне интересна именно такая игра.

ЗЫ есичо, я на той же Тини-13 некоторое время назад написал на асме тестировщик реле - замер времен прилета/улета/дребезга при подаче переключающего напряжения, с точностью до 10мкс и выводом таблицы результатов серии измерений в форматированном десятичном виде по вручную (!) реализованному USART (через ногодрыгание с нужными таймингами) на комп через терминал. Использовал почти весь флеш под кот. Так что кое-какой опыт мазохизма есть, но нельзя останавливаться на достигнутом sm.gif
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 24 2016, 14:50
Сообщение #22


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(_Ivana @ Mar 24 2016, 16:34) *
В прототипе на PIC16F684 для управления двигателем использовано 4 вывода МК - у меня столько нет лишних. Но я подозреваю, что и двумя можно обойтись - один по часовой (второй при этом 0), второй - против (первый при этом 0).


Вы с двигателем... осторожнее. ШИМ по напряжению - очень грубо и неправильно. Нужно током управлять - момент пропорционален току ведь... А еще там противоэдс - если полярность поменять все может сгореть, а мотор - разрушиться.
Go to the top of the page
 
+Quote Post
amaora
сообщение Mar 24 2016, 16:33
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Точная модель Вам не нужна, моделировать не будете, идентифицировать параметры системы не будете, синтезировать регулятор не будете, так? Тогда делайте как получается, существенного значения эти детали, о которых спрашиваете, для Вас иметь не будут. Главное, частота достаточно высока а схема замер-выдача стабильна и с минимальной задержкой.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Mar 24 2016, 19:45
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Tanya ну в интегральном смысле у меня резких бросков не должно быть - параметры непрерывны, результирующее управление тоже, переход с плюса на минус плавный... В смысле мгновенных значений - да, ШИМ, но может индуктивность обмоток сгладит. Хотя если механическая инерция системы будет велика, то токи в обмотках могут скакать сильно. да.

amaora Формальского читал, линеаризованную модель составлял, оптимальное управление рассчитывал (через моменты инерции и т.п.), но в данном конкретном случае - Вы правы, простейший ПИД с настройкой коэффициентов безо всякой сложной теории. Если удастся победить управление двигателем постоянного тока через ШИМ, то остальное думаю осилю.
Go to the top of the page
 
+Quote Post
Ga_ry
сообщение Mar 24 2016, 20:09
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 494
Регистрация: 23-06-09
Из: Полтава, UA
Пользователь №: 50 579



Возьмите ATtiny24 там два таймера, в два раза больше памяти, больше портов и он не на много дороже, к тому же если памяти не хватит то на ATtiny44, ATtiny84 можно портировать без труда.
Вдруг захочется дополнительные кнопки, светодиоды - а портов свободных нет.
Ну и на СИ можно свободно писать не мучаясь с асмом.
Go to the top of the page
 
+Quote Post
domowoj
сообщение Mar 25 2016, 03:56
Сообщение #26


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Цитата(Ga_ry @ Mar 25 2016, 02:09) *
Возьмите ATtiny24 там два таймера
Тогда уж ATtiny25...85.


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 25 2016, 07:14
Сообщение #27


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Baser @ Mar 24 2016, 16:45) *
Я в такие игры лет 15 назад наигрался от отсутствия дешевых ресурсов на МК, больше не хочу sm.gif
Возмите что ль маленький STM32, ну или на крайний случай PIC24 - приятная архитектура wink.gif

STM8S003 - 17р в розницу, а уж кишков на порядок больше

и космик бесплатный с этого года



--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Mar 25 2016, 10:27
Сообщение #28


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Если хочется именно AVR, то я бы как следующую ступень после тини13 рассматривал бы tiny2313
остальные варианты не распространены достаточно широко, купить их можно не везде... цены чуть выше всегда(даже на ali)
Грубо говоря, после tiny2313 стоит сразу рассматривать mega8
Это такие камни которые можно найти на каждом углу, дешево и сердито)


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Mar 25 2016, 11:02
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата
...возьмите XXX ...
...не мучаясь...


Отстаньте вы от человека! Он же сразу сказал - это спорт такой.
Что-то вроде "я напишу hello world в N байт", только следующий уровень :-)

Если _Ivana хватит упорства и знаний затолкать всё это в тиньку, он будет на порядок больше молодец, чем реализация того же ПИДа на stm32discovery.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 25 2016, 11:15
Сообщение #30


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Тогда все просто sm.gif
Забить на прерывания и ловить флаг таймера в общем цикле.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 08:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016