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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Не могу добиться устойчивости работы шим регулятора, шим регулирование
Kovrov
сообщение Mar 25 2006, 06:04
Сообщение #16


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



алгоритм отличный - только накладен в вычислениях!
или есть способы?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 25 2006, 08:26
Сообщение #17


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(Kovrov @ Mar 25 2006, 08:04) *
алгоритм отличный - только накладен в вычислениях!
или есть способы?


Да нет проблем. N выбирается как степень двойки, в результате k*1/N превращается в k>>log2N wink.gif

Вообще-то это обычный RC фильтр. Правильнее делать (чтобы результат переменной был такой-же, как и входной результат):

Y=Y-((Y-X)>>n), где Y - ваша переменная, X - результат преобразования, n - логарифм (2) N. Реализуется очень просто и быстро. Соответственно, чем больше n, тем ниже частота среза.

Да, и еще, сдвиг надо делать обязательно АРИФМЕТИЧЕСКИЙ (т.е. ASR ROR ROR ROR ...), чтобы сохранялся знак разности.

По поводу регулятора. А попробовать сл. метод:

Прерывание TOVxxx (таймера, на котором шим сделан)
Если уровень на входе обратной связи меньше порога то OCRx++ иначе OCRx--
Конец прерывания.

++ или -- возможно надо местами поменять в зависимости от полярности сигнала обратной связи.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
SpyBot
сообщение Mar 25 2006, 09:37
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491



Цитата(Rst7 @ Mar 25 2006, 11:26) *
По поводу регулятора. А попробовать сл. метод:

Прерывание TOVxxx (таймера, на котором шим сделан)
Если уровень на входе обратной связи меньше порога то OCRx++ иначе OCRx--
Конец прерывания.

++ или -- возможно надо местами поменять в зависимости от полярности сигнала обратной связи.

Вот именно, что получится интегральный регулятор, для которого как раз и свойственна неустойчивость. Уставка таймера должна быть пропорциональна рассогласованию, тем более, что имеем сигнал с АЦП, а не с компаратора.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Mar 25 2006, 11:35
Сообщение #19


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(Rst7 @ Mar 25 2006, 11:26) *
Да нет проблем. N выбирается как степень двойки, в результате k*1/N превращается в k>>log2N wink.gif

вот это я не понял! можно пример реализации (лучше в мнемокодах чтоб подсчитать примерное кол-вл тактов )k*1/n как k>>log2N
или я затупил или здесь и будут проблемы в скорости


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 25 2006, 12:40
Сообщение #20


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(Kovrov @ Mar 25 2006, 13:35) *
Цитата(Rst7 @ Mar 25 2006, 11:26) *


Да нет проблем. N выбирается как степень двойки, в результате k*1/N превращается в k>>log2N wink.gif

вот это я не понял! можно пример реализации (лучше в мнемокодах чтоб подсчитать примерное кол-вл тактов )k*1/n как k>>log2N
или я затупил или здесь и будут проблемы в скорости


Ну например так:
Код
;
; Измерение проведено, производим фильтрацию (IIR фильтр, порядок 1)
; MeasureFF=MeasureFF-(MeasureFF-Measure)/8
;
    mov    r16,MeasureFF
    sub    r16,Measure
    mov    r17,MeasureFFl
    ror    r16
    ror    r17
    asr    r16
    ror    r17
    asr    r16
    ror    r17
    sub    MeasureFFl,r17
    sbc    MeasureFF,r16


MeasureFF - 2хбайтное число, MeasureFFl - это дробная часть. Measure - 8бит из АЦП (у меня сигнал от 0 до 255).

Обратите внимание, что первый раз делается ror ror (а не asr ror), т.к. знаковый бит после вычитания оказывается в carry.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Mar 25 2006, 13:38
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



А схему девайса с указанием номиналов всех элементов привести можете?
Нестабильность, скорей всего, возникает в петле регулирования. Для определения причины нужно знать все параметры системы.
PS. Осциллограммки бы ещё...


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Mar 25 2006, 13:55
Сообщение #22


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



схемы в эл виде пока нет в понедельник нарисую
ничего особенного нет
ключ IGBT с драйвером + диод шоттки+ фильтр
вообщем классика...
индуктивность дросселей точно тоже замерю в понедельник

Цитата(Rst7 @ Mar 25 2006, 15:40) *
MeasureFF - 2хбайтное число, MeasureFFl - это дробная часть. Measure - 8бит из АЦП (у меня сигнал от 0 до 255).

Обратите внимание, что первый раз делается ror ror (а не asr ror), т.к. знаковый бит после вычитания оказывается в carry.

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

MeasureFF я инициализирую значением ацп?
и
Y=Y-((Y-X)>>n),
чем больше измерений я завожу в эту формулу тем больше переменаая Y у меня движется к бесконечности...


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 27 2006, 23:40
Сообщение #23


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Alex11 @ Mar 24 2006, 20:23) *
Если так, то есть такой отличный алгоритм: заводишь переменную, на каждом шаге добавляешь к ней отсчет с АЦП и вычитаешь 1/N часть ее самой. N нужно подобрать в зависимости от требуемого времени усреднения. Требуемая разрядность переменной определяется разрядностью АЦП и N. Алгоритм очень устойчив, не требует буфера отсчетов и отдает текущий ответ на каждом шаге.

Скользящее усреднение. Вечно делал с помощью массива, а тут вот оказывается как -X/N на каждом шаге и не надо никаких массивов. Спасибо за алгоритм!


Цитата(Kovrov @ Mar 25 2006, 15:55) *
чем больше рою тем более непоняток


почитайте про алгоритм: http://tutornet.ru/library/books/Math/MATH..._14/Index14.htm
будет легче понять реализацию..
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 28 2006, 06:12
Сообщение #24


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(Kovrov @ Mar 25 2006, 15:55) *
чем больше рою тем более непоняток
чето не работает этот алгоритм у меня
Извиняюсь, но никак я в него не врублюсь :-)
я так понял
(Правильнее делать (чтобы результат переменной был такой-же, как и входной результат):

MeasureFF я инициализирую значением ацп?
и
Y=Y-((Y-X)>>n),
чем больше измерений я завожу в эту формулу тем больше переменаая Y у меня движется к бесконечности...


Чего-то у вас не срослось с математикой.

Пример в екселе:



Начальное значение 0. На вход подана 1 через 2 такта - в результате имеем на выходе тот-же результат, как и RC цепь, без всяких бесконечностей.

ЗЫ Для эксела >>3 заменено на /8 - как вы понимаете - это один хрен.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Mar 28 2006, 08:26
Сообщение #25


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



после этого наконец врубился в тему..
только это практически тоже самое что я делал только с массивом..
только все бы было хорошо, если скорость ацп была больше периода шим
и поскольку всем этим алгоритмам присуща некоторая инерционность
боюсь не прокатит эта тема...
думаю будет шим "качать" ;-)
может мои опасения необоснованы?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Mar 28 2006, 12:22
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Цитата(Kovrov @ Mar 28 2006, 11:26) *
после этого наконец врубился в тему..

Может пригодиться для расчета параметров обсуждаемого алгоритма набрасывал в свое время на MathCad 5.0 файлики (int_cep.mcd)
и измерение методом суммирования значений (к делу не относиться но вдруг) это AnalizF.mcd
Прикрепленные файлы
Прикрепленный файл  MCD.rar ( 4.54 килобайт ) Кол-во скачиваний: 38
 
Go to the top of the page
 
+Quote Post
Starick
сообщение Mar 30 2006, 14:58
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 4-09-05
Пользователь №: 8 211



Да.....ребята.....Какие то алгоритмы строите...какие то равенства выводите....Я вам рекомендую почитать ТАУ (Теория автоматического управления). Кто-то уже затрагивал этот вопрос с построением ЛАЧХ и ЛФЧХ. Это ближе, как говорится, к телу....шутка...Да, действительно эта проблема присутствует в любой схеме, где присутствует обратная связь, будь-то по скорости или по току, НЕ ИМЕЕТ ЗНАЧЕНИЕ какой параметр регулируется. И даже на базе той же меги16 (с медленным АЦП tongue.gif ) мы сделали в свое время систему возбуждения для дизель-генератора, где регулировался ток возбуждения генератора. Регулируемым параметром было напряжение на выходе генератора....Но это предисловие, я к чему веду....Нужно делать вам ребята цифровой ПИД или хотя бы ПИ регулятор.....Ээээээээээ......наверно хватит, и так много сказал....
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 30 2006, 16:45
Сообщение #28


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Starick @ Mar 30 2006, 16:58) *
Да.....ребята.....Какие то алгоритмы строите...какие то равенства выводите....Я вам рекомендую почитать ТАУ

У вас такая манера изложения, что остается лишь сказать - Спасибо, барин!
Go to the top of the page
 
+Quote Post
Starick
сообщение Mar 31 2006, 10:57
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 4-09-05
Пользователь №: 8 211



Цитата(defunct @ Mar 30 2006, 19:45) *
Цитата(Starick @ Mar 30 2006, 16:58) *

Да.....ребята.....Какие то алгоритмы строите...какие то равенства выводите....Я вам рекомендую почитать ТАУ

У вас такая манера изложения, что остается лишь сказать - Спасибо, барин!


Барин - не барин, а совет дельный! Если Вам, уважаемый не нравится моя форма изложения, то прошу не читать их совсем. Мне ваша критика не к чему. Я еще раз настою на своем. Никакие быстродействующие АЦП не помогут, да и количество данных такое не к чему. Нужна реализация програмного хотя бы ПИ регулятора, который бы застабилизировал систему. На реализацию и отладку такого у меня ушло не мало времени. А уже вывести управляющее воздействие на ШИМ - это не сложно.
Go to the top of the page
 
+Quote Post
zhek
сообщение Mar 31 2006, 11:28
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 29-12-05
Из: Екатеринбург
Пользователь №: 12 692



Цитата
Задача в следующем:
осуществить стабилизацию тока в пределах 0-100а
имеем шим период 62,5мкс (шаг 62,5нс) (макс заполнеие 25-30%)

Получаем максимальное значение длительности импульса 250, т. е. шаг 0.4 А (если система абсолютно линейная). Грубовато получается. Имхо, какие алгоритмы ни строй, надо сначала увеличить разрядность ШИМ. Тут надо выбирать между частотой ШИМ и ступенькой регулирования. А лучше поставить отдельный аналоговый ШИМ контроллер.
Go to the top of the page
 
+Quote Post

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

 


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


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