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

 
 
> Как сделать вычисление значения температуры по градуировочной таблице термопары?
Ivan Kuznetzov
сообщение Feb 25 2009, 10:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Как сделать вычисление значения температуры по градуировочной таблице термопары?

Пишу прогу на сях.
К примеру, измеряем напряжение с термопары, усиливаем его (с известным Ку) и подаем на вход ADC0 атмеги - там делим на Ку и получаем милливольты;
есть также градуировочная таблица для термопары вида:

float gradtbl[131]={0 , 0.40 , 0.80 , 1.20 ...... и т.д. 131 значение


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


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
11 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 99)
Petka
сообщение Feb 25 2009, 10:57
Сообщение #2


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Ivan Kuznetzov @ Feb 25 2009, 13:37) *
Как сделать вычисление значения температуры по градуировочной таблице термопары?

Пишу прогу на сях.
К примеру, измеряем напряжение с термопары, усиливаем его (с известным Ку) и подаем на вход ADC0 атмеги - там делим на Ку и получаем милливольты;
есть также градуировочная таблица для термопары вида:

float gradtbl[131]={0 , 0.40 , 0.80 , 1.20 ...... и т.д. 131 значение


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

какой тип термопары?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 25 2009, 11:15
Сообщение #3


Гуру
******

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



Цитата(Ivan Kuznetzov @ Feb 25 2009, 13:37) *
Как сделать вычисление значения температуры по градуировочной таблице термопары?

Пишу прогу на сях.
К примеру, измеряем напряжение с термопары, усиливаем его (с известным Ку) и подаем на вход ADC0 атмеги - там делим на Ку и получаем милливольты;
есть также градуировочная таблица для термопары вида:

float gradtbl[131]={0 , 0.40 , 0.80 , 1.20 ...... и т.д. 131 значение


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

Переделайте в микровольты (или десятки микровольт) - будут целые. Если по таблице, то интерполяция - находите интервал, в который попадает Ваше число X - (N-1,N).
T=N-1 + (X-f(N-1))/(f(N)-f(N-1))
Можно многочленом сразу.
Не забудьте про температуру опорного спая.
Только при чем тут АВР и С?
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Feb 25 2009, 11:18
Сообщение #4


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

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



Цитата(Tanya @ Feb 25 2009, 14:15) *
Только при чем тут АВР и С?

Ну как же! rolleyes.gif
Датчик-то к АВР подключается, а программа на си...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 25 2009, 11:22
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Ivan Kuznetzov @ Feb 25 2009, 14:37) *
Пишу прогу на сях.

smile.gif На тех же сях берете и составляете другую "прогу", но уже для компа, в которой все вышесказанное, только не 
Цитата
Переделайте в микровольты (или десятки микровольт) - будут целые.
- это слишком общО - сразу пересчет в ожидаемые реальные показания (N=1024*U/Uref) выводите хоть куда - хоть на экран, и потом забираете данные командной строкой типа create.exe >>table.inc
Go to the top of the page
 
+Quote Post
xemul
сообщение Feb 25 2009, 11:27
Сообщение #6



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Начните лучше с требуемых точностных характеристик. Может статься, что с учетом используемой элементной базы будет достаточно аппроксимировать характеристику термопары одной прямой (или парой прямых) без ущерба для точности прибора.
Без плавучки, имхо, в этой задаче можно легко обойтись. Nadc = Nadc_max*(Kу*Uт)/Uref. Вот и посчитайте на бумажке зависимость Nadc(T).
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Feb 25 2009, 12:26
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Как вариант:
Задаем массив, разбив участки зависимости на прямые (относительно)
//условно:
Код
table_termo[]={0/*значение для 0мкв*/,10/*значение температуры для 100мкв*/,20,30,...};[code]

Расстояние между индексами 100мкв, например, по таблице
Заводим переменную для измеренного напряжения на термопаре u_tmp_mkv
Переменная температуры пусть tmp_table
Тогда
Код
tmp_table=(table_termo[u_tmp_mkv/100+1]-table_termo[u_tmp_mkv/100])*(u_tmp_mkv%10+10*u_tmp_mkv%100)/100+table_termo[u_tmp_mkv/100];

Это примерно, но принцип понятен, думаю...

Сообщение отредактировал Goodefine - Feb 25 2009, 12:27


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 25 2009, 12:30
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Goodefine @ Feb 25 2009, 16:26) *
Расстояние между индексами 100мкв, например, по таблице

Куда удобнее расстояние делать в 1 попугай АЦП. Нам-то, суровым авр-щикам crying.gif
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 25 2009, 12:34
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(Goodefine @ Feb 25 2009, 17:26) *
Как вариант:
Задаем массив, разбив участки зависимости на прямые (относительно)
//условно:
Код
table_termo[]={0/*значение для 0мкв*/,10/*значение температуры для 100мкв*/,20,30,...};[code]

Расстояние между индексами 100мкв, например, по таблице
Заводим переменную для измеренного напряжения на термопаре u_tmp_mkv
Переменная температуры пусть tmp_table
Тогда
Код
tmp_table=(table_termo[u_tmp_mkv/100+1]-table_termo[u_tmp_mkv/100])*(u_tmp_mkv%10+10*u_tmp_mkv%100)/100+table_termo[u_tmp_mkv/100];

Это примерно, но принцип понятен, думаю...

последняя формула точно так будет выглядеть или это пример?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Feb 25 2009, 12:35
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата
Куда удобнее расстояние делать в 1 попугай АЦП. Нам-то, суровым авр-щикам crying.gif
Зато так удобнее передрать зависимость ЭДС от температуры из паспорта термопары. Не принципиально, в общем... Но потом Ваш вариант, безусловно, приятней smile.gif
Цитата
последняя формула точно так будет выглядеть или это пример?

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

Сообщение отредактировал Goodefine - Feb 25 2009, 12:43


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 25 2009, 12:46
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(Goodefine @ Feb 25 2009, 17:35) *
Зато так удобнее передрать зависимость ЭДС от температуры из паспорта термопары. Не принципиально, в общем...

таблица обычная - тоесть указывается значение ЭДС через каждые 10 градусов - и заведена в массив:
второй массив это числа от 0 до 1300 с шагом 10

Код
float gradtbl[131]={0 , 0.40 , 0.80 , 1.20 , 1.61 , 2.02 , 2.43 , 2.85 , 3.26 , 3.68,
4.10 , 4.51 , 4.92 , 5.33 , 5.73 , 6.13 , 6.53 , 6.93 , 7.33 , 7.73,
8.13 , 8.53 , 8.93 , 9.34 , 9.74 , 10.15 , 10.56 , 10.97 , 11.38 , 11.80,
12.21 , 12.62 , 13.04 , 13.45 , 13.87 , 14.30 , 14.72 , 15.14 , 15.56 , 15.99,
16.40 , 16.83 , 17.25 , 17.67 , 18.09 , 18.51 , 18.94 , 19.37 , 19.79 , 20.22,
20.65 , 21.08 , 21.50 , 21.93 , 22.35 , 22.78 , 23.21 , 23.63 , 24.06 , 24.49,
24.91 , 25.33 , 25.76 , 26.19 , 26.61 , 27.04 , 27.46 , 27.88 , 28.30 , 28.73,
29.15 , 29.57 , 29.99 , 30.41 , 30.83 , 31.24 , 31.66 , 32.08 , 32.19 , 32.90,
33.32 , 33.72 , 34.13 , 34.55 , 34.95 , 35.36 , 35.76 , 36.17 , 36.57 , 36.97,
37.37 , 37.77 , 38.17 , 38.57 , 38.97 , 39.36 , 39.76 , 40.15 , 40.54 , 40.93,
41.32 , 41.71 , 42.09 , 42.48 , 42.88 , 43.26 , 43.64 , 44.02 , 44.40 , 44.78,
45.16 , 45.54 , 45.91 , 46.29 , 46.66 , 47.03 , 47.40 , 47.77 , 48.14 , 48.50,
48.87 , 49.23 , 49.59 , 49.95 , 50.31 , 50.67 , 51.02 , 51.38 , 51.73 , 52.08,
52.43};


float tempm[131];

  for (i = 0; i < 131; i++)
  {
  tempm[i] = i;
  tempm[i] *= 10;
  }


и собсссно сам цикл:

Код
while (1)
{
        if (analogreg==1)
        {
        mvolt = read_adc(0) / 25;
        

        for (i = 1; i < 132; i++)
         {
          if (gradtbl[i] > mvolt)
          {  

          themp = tempm[i - 1] + (( mvolt - gradtbl[i - 1] ) / ( gradtbl[i] - gradtbl[i - 1] )) * 10;
          }
         }
{


Дак вот в Баскоме все работало четко - а на Си (CVAVR) у меня все тормозит и когда на входе ADC ноль то температуру кажет " - 198" градусов - в чем тут могут быть грабли?
crying.gif

Сообщение отредактировал Ivan Kuznetzov - Feb 25 2009, 12:47


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 25 2009, 12:53
Сообщение #12


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Ivan Kuznetzov @ Feb 25 2009, 16:46) *
когда на входе ADC ноль то температуру кажет " - 198" градусов - в чем тут могут быть грабли?
crying.gif

И зачем так плакать? Добавили дополнительную проверку на ноль - и делов-то. У Вас индекс ссылается куда? gradtbl[i - 1].. не надо матюков -  и так видно smile.gif
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Feb 25 2009, 13:06
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Зачем здесь флоат не понятно. Видно (из табл), что больше 52430 мкв Вам не понадобится. Т.е. инта для переменной напряжения хватит. Далее, обычно вместе с таблицей указывается полином зависимости. В том же экселе по нему можно найти ряд температур с шагом, скажем 1000 мкв. В этом случае температурный массив будет состоять где-то из 53 значений типа инт (если домножить на 10 - чтоб с десятыми и без флоат). Потом похожим (только учесть что шаг 1000 мкв) способом легко и относительно быстро найти искомую температуру с точностью до десятых, взяв остаток от которой найдем сами десятые в НЕ флоат...

Сообщение отредактировал Goodefine - Feb 25 2009, 13:13


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 25 2009, 13:12
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(_Pasha @ Feb 25 2009, 17:53) *
И зачем так плакать? Добавили дополнительную проверку на ноль - и делов-то. У Вас индекс ссылается куда? gradtbl[i - 1].. не надо матюков -  и так видно smile.gif

я так и не понял где ошибка-то?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 25 2009, 13:30
Сообщение #15


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Ivan Kuznetzov @ Feb 25 2009, 17:12) *
я так и не понял где ошибка-то?


Код
themp = 0;

for (i = 1; i < 132; i++)



дальше по тексту. А привиделось нечто другое...
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Feb 25 2009, 14:02
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Если по Вашему (с флоат), то проще примерно так:
Код
float gradtbl[131]={/*...*/};
//...
uchar index1, index2;
float u_tmpr; //переведенное в флоат-миливольты измеренное напряжение
float tmpr_value; //переменная для температуры

for(i=0;i<131;i++)                {
                   if(gradtbl[i]>=u_tmpr){index1=i; break;}  
                              }

tmpr_value= (gradtbl[index1]-gradtbl[index1-1])/100 //промежуточное

for(i=0;i<100;i++)          {
           if(gradtbl[index1-1]+tmpr_value*i>=u_tmpr){index2=i; break;}  
                     }

tmpr_value=10*(index1-1) + index2/10; //окончательное значение температуры с десятыми


Можно, конечно, и проверку граничных условий добавить...

Сообщение отредактировал Goodefine - Feb 25 2009, 14:23


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 25 2009, 22:17
Сообщение #17


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Ну Вы маньяки. Нужна всего одна целочисленная таблица с шагом в 10 гр.Цельсия, а в таблице прямо коды АЦП.
Получили код с АЦП, пробежались по таблице, тем самым нашли в каком диапазоне температур оказались, а дальше линейная интерполяция.
Единственное о чём Вам надо ещё задуматься так это о компенсации ЭДС ХС.
У меня так сделано - работает превосходно.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 26 2009, 04:59
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(demiurg_spb @ Feb 26 2009, 03:17) *
Ну Вы маньяки. Нужна всего одна целочисленная таблица с шагом в 10 гр.Цельсия, а в таблице прямо коды АЦП.
Получили код с АЦП, пробежались по таблице, тем самым нашли в каком диапазоне температур оказались, а дальше линейная интерполяция.
Единственное о чём Вам надо ещё задуматься так это о компенсации ЭДС ХС.
У меня так сделано - работает превосходно.


а можно Ваш исходник посмотреть, пожалуйста?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 26 2009, 06:11
Сообщение #19


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Ivan Kuznetzov @ Feb 26 2009, 07:59) *
а можно Ваш исходник посмотреть, пожалуйста?
Нет. Это уж как-нибудь самиsmile.gif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
AlexU
сообщение Feb 26 2009, 06:34
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-05-06
Пользователь №: 17 639



Цитата(Ivan Kuznetzov @ Feb 25 2009, 13:37) *
float gradtbl[131]={0 , 0.40 , 0.80 , 1.20 ...... и т.д. 131 значение
...
как сделать пересчет значения миливольт в градусы?


Для ТХА, ТХК 20..200 град/0.5 хватило полинома второй степени. ХС на другом входе АЦП.
Go to the top of the page
 
+Quote Post
Сергей К
сообщение Feb 26 2009, 06:37
Сообщение #21


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 18-09-08
Из: Киев
Пользователь №: 40 317



По поводу компенсации: я вот думаю, можно ли сразу перевести ЭДС термопары в градусы и затем к ним прибавить температуру окружающей среды (окружающая среда -30...+80 градусов Цельсия максимум, т.е. на улице).
Или же нужно сначала все в микровольты переводить, там делать компенсацию и лиш затем переводить в градусы (как в учебниках)? Точности в пару градусов достаточно.

Измеряю температуру 3мя каналами AD7792, темерературу холодного спая - внутреним датчиком AD7792 (вся конструкция в металлической коробке, куда приходят концы термопар)

Сообщение отредактировал Сергей К - Feb 26 2009, 06:54
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 26 2009, 06:44
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Goodefine

По Вашему примеру все работает хорошо - но десятых долей нету почему-то...

В общем сейчас у меня следящий ПИД регулятор на симистор работает
Печка сопротивления + ХА термопара в ней
девайс держит температуру +/- 2 градус....
только десятые доли не показывает - а хотелось бы....

О девайсе вкратце:
1) атмега32, дисплей 20х4
2) полная развязка от сети (по питанию - транс, по управлению симистором - оптрон)
3) переход через 0 ловлю внутренним компаратором меги
4) мощность нагревателя регулирую либо кнопочками +/-. либо по закону ПИД исходя из заданной температуры и измерянной
5) ПИД коэффициенты еще толком не настраивал, есть зона пропорциональности ит.д.
6) Два режима управления симистором фазоимпульсный и по Брезенхему
7) есть возможность встречно-параллельного включения двух тиристоров и управление ими с разных ног меги через развязывающие трансики
Если проект получится - выложу все как есть

Сообщение отредактировал Ivan Kuznetzov - Feb 26 2009, 06:53


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Feb 26 2009, 07:30
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата
...но десятых долей нету почему-то...

Возможно, теряется точность. Попробуйте чуть иначе:
Код
float gradtbl[131]={/*...*/};
//...
uchar index;
float u_tmpr;        //переведенное в флоат-милливольты измеренное напряжение
float tmpr_value; //переменная для температуры
//с одним циклом:
for(i=0;i<131;i++)                {
                   if(gradtbl[i]>=u_tmpr){index=i; break;}  
                              }

//окончательное значение
tmpr_value=10*(index-1) +( u_tmpr - gradtbl[index-1])*10/(gradtbl[index]-gradtbl[index-1]);

Кстати, Ваш код вывода на дисплей можно увидеть?

Сообщение отредактировал Goodefine - Feb 26 2009, 07:35


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 26 2009, 08:19
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Goodefine

Отлично все заработало! Спасибо!

код для лсиди выложу - он у меня самописный - кодевижновский меня не устраивает

в моем коде:
1) 4-х проводный интерфейс
2)можно все ноги дисплея переназначать
3) на RW я забил и посадил его на землю - нафига мне с дисплея читать?? biggrin.gif

...только после 130 градусов - остаток всегда .75

вот мучает меня вопрос - а во флаше хранить таблицу можно? а то память она жрет....

если делаю вот так - то не работает:
Код
flash float gradtbl[131]={0 , 0.40 , 0.80 , 1.20 , 1.61 , 2.02 , 2.43 , 2.85 , 3.26 , 3.68,


Сообщение отредактировал Ivan Kuznetzov - Feb 26 2009, 08:20


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 26 2009, 08:51
Сообщение #25


Гуру
******

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



Цитата(Ivan Kuznetzov @ Feb 26 2009, 11:19) *
Goodefine

Отлично все заработало! Спасибо!


...только после 130 градусов - остаток всегда .75

вот мучает меня вопрос - а во флаше хранить таблицу можно? а то память она жрет....

если делаю вот так - то не работает:
Код
flash float gradtbl[131]={0 , 0.40 , 0.80 , 1.20 , 1.61 , 2.02 , 2.43 , 2.85 , 3.26 , 3.68,

По Вашей таблице видно, что у Вас диапазон 1300 градусов, а в таблице числа в милливольтах.
Разрядность Вашего АЦП (градуировка близка к линейной) позволяет разрешить примерно 1 градус (еще точнее - 1.3). Таблица через 10 градусов. При таких обстоятельствах можно (или нужно)
а) уменьшить таблицу в два - три - четыре... раза. Может быть, неравномерно - постройте график - там, где отклонение от прямой будет меньше 0.5 градуса, нет смысла дробить интервал.
б) в таблицу вместо милливольтов записать целые числа - соответствующие коды АЦП, в другую - соответствующую температуру.
Или полином.
Go to the top of the page
 
+Quote Post
xemul
сообщение Feb 26 2009, 09:27
Сообщение #26



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Tanya @ Feb 26 2009, 11:51) *
По Вашей таблице видно, что у Вас диапазон 1300 градусов, а в таблице числа в милливольтах.
Разрядность Вашего АЦП (градуировка близка к линейной) позволяет разрешить примерно 1 градус (еще точнее - 1.3). Таблица через 10 градусов. При таких обстоятельствах можно (или нужно)
а) уменьшить таблицу в два - три - четыре... раза. Может быть, неравномерно - постройте график - там, где отклонение от прямой будет меньше 0.5 градуса, нет смысла дробить интервал.
б) в таблицу вместо милливольтов записать целые числа - соответствующие коды АЦП, в другую - соответствующую температуру.
Или полином.

Зачем Вы так изощренно издеваетесь над программистами?smile.gif Любой контроллер или процессор и сам должен все сделать.
Я предполагаю, что автор использует АЦП АВР с внутренней опорой (которая по даташиту имеет точность +-10%) и вряд ли эту опору калибрует. Исходя из точности опоры я предложил кривую термопары аппроксимировать прямой (парой, тройкой,... - опять же исходя из требуемой и достижимой точности) и забить на всякие плавучие таблицы.
Но, похоже, для конкретных программистов точность - это сколько знаков после запятой можно вывести на индикатор.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 26 2009, 09:33
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(xemul @ Feb 26 2009, 14:27) *
Зачем Вы так изощренно издеваетесь над программистами?smile.gif Любой контроллер или процессор и сам должен все сделать.
Я предполагаю, что автор использует АЦП АВР с внутренней опорой (которая по даташиту имеет точность +-10%) и вряд ли эту опору калибрует. Исходя из точности опоры я предложил кривую термопары аппроксимировать прямой и забить на всякие плавучие таблицы.
Но, похоже, для конкретных программистов точность - это сколько знаков после запятой можно вывести на индикатор.

совершенно верно! использую внутренний опорный источник МК на 2.5 вольт


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
xemul
сообщение Feb 26 2009, 09:58
Сообщение #28



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Ivan Kuznetzov @ Feb 26 2009, 12:33) *
совершенно верно! использую внутренний опорный источник МК на 2.5 вольт

Тогда просто аппроксимируйте кривую термопары в требуемом температурном диапазоне прямой (по методу наименьших квадратов или любому другому известному Вам). На выходе получите простую функцию T = a*Nadc + b. Все расчеты легко можно будет уложить в 2-хбайтовую целочисленную арифметику.
Ну а дальше (по индукции, и если нужно повысить точность аппроксимации) можно выполнить аппроксимацию двумя прямыми (тремя,...), для каждой рассчитать a и b.
Или, если таки по таблице, то можно выполнять интерполяцию не по 2 точкам, а по 3. Это позволит сократить количество точек в таблице при несущественном увеличении целочисленной арифметики, но потребует некоторых предварительных расчетов, н-р, в ёкселе (чтобы не сократить число точек сверх меры, когда погрешность интерполяции станет значимой).
Погуглите методы аппроксимации и интерполяции.
Кста, попалось: http://do.rksi.ru/library/courses/chm/
Обратите внимание на раздел "Введение. Приближенные числа и действия над ними. Оценка точности вычислений". Это базис, который позволит в дальнейшем не рисовать на индикаторе 5 десятичных разрядов при точности измерения 10%.
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Feb 26 2009, 10:56
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата
...диапазон 1300 градусов...
...АЦП (градуировка близка к линейной) позволяет разрешить примерно 1 градус...

АЦП это дело наживное. Если мало, всегда добавить внешний можно. Кроме того, никто не говорит, что нужно измерять с одинаковой точностью на всем диапазоне. Флоат, конечно, совершенно необязательно...
Цитата
...только после 130 градусов - остаток всегда .75

Прямо всегда?
Цитата
Но, похоже, для конкретных программистов точность - это сколько знаков после запятой можно вывести на индикатор.

Список конкретных программистов мона огласить?


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 26 2009, 11:07
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



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

Вот схемка:

Сообщение отредактировал Ivan Kuznetzov - Feb 26 2009, 11:08
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
xemul
сообщение Feb 26 2009, 11:13
Сообщение #31



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Goodefine @ Feb 26 2009, 13:56) *
Список конкретных программистов мона огласить?

Никаких персоналий. Имелось в виду "чиста канкретных", пишуших идеальные программы, работающие в идеальных коробочках и в идельном мире.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 26 2009, 11:45
Сообщение #32


Гуру
******

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



Цитата(Ivan Kuznetzov @ Feb 26 2009, 14:07) *
хух! в общем все! получился ПИД регулятор - температуру теперь нормально кажет - с десятыми
теперь хочу попробывать какой-нибудь алгоритм авто-настройки ПИД коэффициентов...
может есть у кого, поделитесь пожалуйста?

Вот схемка:

Десятые "кажет" - это кажимость. Надо увеличить разрядность вычислений и применить усреднение - будет во много раз лучше.
Вы это очень зря поставили такой операционник. Его смещение нуля (2 мв) соответствует 50 градусам. Температурный дрейф не нормирован. Навевает. Схема, простите меня, не выдерживает никакой критики... Входы при нуле, выход... Нет слов. Нарисована, однако, отлично.
Go to the top of the page
 
+Quote Post
xemul
сообщение Feb 26 2009, 12:07
Сообщение #33



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



"Они не ведают, что творят."
На всякий случай: в даташите на АВР рекомендуется, чтобы сопротивление источника сигнала для АЦП не превышало скольки-то там кОм. На данной кажимости это уже не скажется, но, будете смеяться, это ограничение Атмел придумал, исходя из точностных характеристик.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 26 2009, 12:39
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(Tanya @ Feb 26 2009, 16:45) *
Десятые "кажет" - это кажимость. Надо увеличить разрядность вычислений и применить усреднение - будет во много раз лучше.
Вы это очень зря поставили такой операционник. Его смещение нуля (2 мв) соответствует 50 градусам. Температурный дрейф не нормирован. Навевает. Схема, простите меня, не выдерживает никакой критики... Входы при нуле, выход... Нет слов. Нарисована, однако, отлично.


Это тестовый операционник - в идеале поставлю какую-нибудь "инструменталку"
может посоветуете что-нибудь? или схемку подкинете какую-нибудь?

а вот насчет усреднения - это интересно! как это сделать?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 26 2009, 14:34
Сообщение #35


Гуру
******

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



Цитата(Ivan Kuznetzov @ Feb 26 2009, 15:39) *
Это тестовый операционник - в идеале поставлю какую-нибудь "инструменталку"
может посоветуете что-нибудь? или схемку подкинете какую-нибудь?

а вот насчет усреднения - это интересно! как это сделать?

Усреднение - это известная мания программистов. Делается, естественно, программно. Очень интересное, полезное, увлекательное и плодотворное занятие для ума.
Можно придумать бесконечное число способов усреднения, а потом бесконечно долго выбирать наилучший.
Учтите - для такой сложной математики С слабоват. Только ассемблер.

И для тестов не используйте этот Ваш операционник...
Возьмите сдвоенный ОУ типа OP07 OP(A)X27 и типовую схему для термопар из даташита на OPA4277 op07 или еще откуда-нибудь. Сами не изобретайте велосипедов. Это только совет.
Или аутозеро какое-нибудь.
И не придумывайте автонастраивающийся ПИД. Уже придумано. И вредно. И Вам, и ни в чем не повинным пользователям такого продукта. Прикрутите три потенциометра к свободным входам АЦП - будете задавать коэффициенты. Это тоже только советы.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Feb 26 2009, 15:04
Сообщение #36


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(xemul @ Feb 26 2009, 15:07) *
"Они не ведают, что творят."
На всякий случай: в даташите на АВР рекомендуется, чтобы сопротивление источника сигнала для АЦП не превышало скольки-то там кОм. На данной кажимости это уже не скажется, но, будете смеяться, это ограничение Атмел придумал, исходя из точностных характеристик.

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

Сообщение отредактировал rx3apf - Feb 26 2009, 15:05
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 26 2009, 15:26
Сообщение #37


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(Tanya @ Feb 26 2009, 22:34) *
Прикрутите три потенциометра к свободным входам АЦП - будете задавать коэффициенты.

Ой, а зачем такая экзотика? 1111493779.gif Я понимаю, что Вы дали только совет, но там же МК. Проще клавиатурку прикрутить, или через UART...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 26 2009, 19:18
Сообщение #38


Гуру
******

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



Цитата(haker_fox @ Feb 26 2009, 18:26) *
Ой, а зачем такая экзотика? 1111493779.gif Я понимаю, что Вы дали только совет, но там же МК. Проще клавиатурку прикрутить, или через UART...

Попробуйте сами оба варианта. Лучше на "быстром объекте". Экранчик-то уже есть. Все видно.
А три резистора (или два) быстрее и нагляднее.

Цитата(rx3apf @ Feb 26 2009, 18:04) *
Ну так автор совершенно правильно поставил солидный конденсатор на входе, правда, номинал резистора все ж великоват, этак на порядок снизить бы стоит.

И получил большую постоянную времени. Кажется многим, что печка медленная. Не нужно им диференциальную компоненту. Но это только кажется....
Go to the top of the page
 
+Quote Post
Designer56
сообщение Feb 26 2009, 19:25
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 932
Регистрация: 13-10-06
Из: Уфа
Пользователь №: 21 290



Цитата(Tanya @ Feb 27 2009, 00:18) *
И получил большую постоянную времени. Кажется многим, что печка медленная. Не нужно им диференциальную компоненту. Но это только кажется....

Она потому и нужна, что печка медленная...Если, конечно, хочется приличное качество регулирования.


--------------------
"...Дьяволу ведомо многое не потому, что он- Дьявол, а потому, что он стар..."
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 26 2009, 19:40
Сообщение #40


Гуру
******

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



Цитата(Designer56 @ Feb 26 2009, 22:25) *
Она потому и нужна, что печка медленная...Если, конечно, хочется приличное качество регулирования.

А для "быстрых" без этой компоненты лучше? Если да, то чем?

Нет, не потому. И медленность - понятие относительное. Живет в головах.
Go to the top of the page
 
+Quote Post
Designer56
сообщение Feb 26 2009, 19:48
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 2 932
Регистрация: 13-10-06
Из: Уфа
Пользователь №: 21 290



Для быстрых можно проинтегрировать, при нужде...Понятие- относительное, но...большие постоянные времены разомкнутой системы порождают медленное установление замкнутой. Кстати, на пракатике операторы любят выключать контура ОС ПИД- регулятроров и крутить вручную...У всех, кроме печей. Или почти у всех.


--------------------
"...Дьяволу ведомо многое не потому, что он- Дьявол, а потому, что он стар..."
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 27 2009, 12:47
Сообщение #42


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



с конденсатором С2 на схеме ошибка- в реали стоит 100 нанофарад


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 27 2009, 16:52
Сообщение #43


Гуру
******

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



Цитата(Ivan Kuznetzov @ Feb 27 2009, 15:47) *
с конденсатором С2 на схеме ошибка- в реали стоит 100 нанофарад


Лучше бы не конденсатор, а резистор уменьшить сильно. А фильтр на входе нужен, а не на выходе, чтобы операционник не зашкаливал от наводки (помехи).
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 27 2009, 18:14
Сообщение #44


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Tanya @ Feb 26 2009, 22:40) *
А для "быстрых" без этой компоненты лучше? Если да, то чем?

Печка, это такой объект регулирования, который чистую задержку имеет. Эта задержка от взаимного положения нагревателя и датчика зависит. Если датчик достаточно далёк от нагревателя, то попробуйте в холодной печке на 100% нагреватель включить. Температура как минимум 10 первых секунд не будет изменятся вообще. А на больших печах и минуты. Не будет всё это время никакого сигнала на выходе у дифферециатора. Зато потом появится, когда он уже не нужен и м.б. даже вреден будет. Поэтому практики и считают, что дифферециатор в печах не нужен. Но это они ошибаются. Просто при управлении печкой в идеале нужно эту чистую задержку учитывать. Для этого приходится всякие скользящие средние считать, а реально никто этого не делает. У большинства просто ПИД и всё. По такой схеме качество регулирования ограничено возникновением автоколебаний в малом. В большом-то всё конечно устойчиво. Тут можно много писать, но не знаю интересно ли кому-нибудь это будет?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 27 2009, 18:44
Сообщение #45


Гуру
******

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



Цитата(galjoen @ Feb 27 2009, 21:14) *
Печка, это такой объект регулирования, который чистую задержку имеет. Эта задержка от взаимного положения нагревателя и датчика зависит. Если датчик достаточно далёк от нагревателя, то попробуйте в холодной печке на 100% нагреватель включить. Температура как минимум 10 первых секунд не будет изменятся вообще. А на больших печах и минуты. Не будет всё это время никакого сигнала на выходе у дифферециатора. Зато потом появится, когда он уже не нужен и м.б. даже вреден будет. Поэтому практики и считают, что дифферециатор в печах не нужен. Но это они ошибаются. Просто при управлении печкой в идеале нужно эту чистую задержку учитывать. Для этого приходится всякие скользящие средние считать, а реально никто этого не делает. У большинства просто ПИД и всё. По такой схеме качество регулирования ограничено возникновением автоколебаний в малом. В большом-то всё конечно устойчиво. Тут можно много писать, но не знаю интересно ли кому-нибудь это будет?

Нет у нормальных печек "чистой задержки". Если считать, что скорость звука (фононов) бесконечна. В таком приближении, как только возник градиент температуры, незамедлительно возникает тепловой поток со всеми вытекающими - ненулевой производной температуры во времени. Модель печки - много-много RC-цепочек. С одной стороны генератор - с другой вольтметр.

Чистая задержка может быть, к примеру, если вы греете воду, а она перекачивается насосом в то место, где стоит датчик. Чисто теоретически - и там нету.
Go to the top of the page
 
+Quote Post
Designer56
сообщение Feb 27 2009, 18:58
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 2 932
Регистрация: 13-10-06
Из: Уфа
Пользователь №: 21 290



Кроме того, датчик температуры в печке (очень зависит от её типа) часто показывает совсем не температуру нагреваемого продукта.


--------------------
"...Дьяволу ведомо многое не потому, что он- Дьявол, а потому, что он стар..."
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 27 2009, 19:21
Сообщение #47


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Tanya @ Feb 27 2009, 21:44) *
Модель печки - много-много RC-цепочек.

А если много-много - это бесконечность, то производная будет нулевая. И задержка тем больше, чем больше теплоёмкость и меньше теплопроводность. Конечно это не чистая задержка. Но можно всё это представить как чистую задержку + одну RC цепочку. И это будет гораздо лучше, чем одна (или в лучшем случае несколько) RC цепочка без задержки, как представляют печку сейчас.
А насчёт того, что тепло распостраняется со скоростью звука я конечно согласен, но вот к практике это отношения не имеет. Вот запах - он тоже теоретически со скоростью звука движется. А на практике?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 27 2009, 19:54
Сообщение #48


Гуру
******

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



Цитата(galjoen @ Feb 27 2009, 22:21) *
А если много-много - это бесконечность, то производная будет нулевая. И задержка тем больше, чем больше теплоёмкость и меньше теплопроводность. Конечно это не чистая задержка. Но можно всё это представить как чистую задержку + одну RC цепочку. И это будет гораздо лучше, чем одна (или в лучшем случае несколько) RC цепочка без задержки, как представляют печку сейчас.
А насчёт того, что тепло распостраняется со скоростью звука я конечно согласен, но вот к практике это отношения не имеет. Вот запах - он тоже теоретически со скоростью звука движется. А на практике?

Учтите, что при дроблении цепочек нужно дробить и R и C. И производная не будет нулевая... в некотором смысле...
А про тепло и запах - Вы абсолютно правы - уравнения диффузии и теплопроводности едины и неотличимы.
Только запах, в принципе, несколько быстрее, кажется.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 27 2009, 20:11
Сообщение #49


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Tanya @ Feb 27 2009, 22:54) *
Учтите, что при дроблении цепочек нужно дробить и R и C. И производная не будет нулевая... в некотором смысле...

Неопределённость типа бесконечность делить на бесконечность. Но если посчитать предел, то там вроде всётаки ноль получается.
Хотя спорить не буду, т.к. очень хорошо забыл всё это и вспоминать желания нет. Тем более, что к практике это отношения не имеет.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 27 2009, 20:14
Сообщение #50


Гуру
******

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



Цитата(galjoen @ Feb 27 2009, 23:11) *
Тем более, что к практике это отношения не имеет.

А как же я? Практикую напрасно?
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Feb 27 2009, 21:39
Сообщение #51


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(Tanya @ Feb 26 2009, 15:34) *
Возьмите сдвоенный ОУ типа OP07

Извините, а он точно сдвоенный ? Если нет, м.б. подскажете его полный (в т.ч. по цене) сдвоенный аналог ?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 28 2009, 06:34
Сообщение #52


Гуру
******

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



Цитата(Огурцов @ Feb 28 2009, 00:39) *
Извините, а он точно сдвоенный ? Если нет, м.б. подскажете его полный (в т.ч. по цене) сдвоенный аналог ?

Они - клоны и потомки великого 07-го бывают одиночными, сдвоенными и счетверенными. выпускаются разными производителями. OPA2277 - пример сдвоенного внучка. Дедушку тоже делают до сих пор.
Аналог по цене - это мне непонятно.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Feb 28 2009, 10:25
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



вот еще мне непонятно - чем так плох алгоритм авто-настройки ПИД регулятора?

я использую алгоритм ПИД регулирования с сахара.ру - можно к нему как-нибудь приспособить алгоритм автонастройки?

Сообщение отредактировал Ivan Kuznetzov - Feb 28 2009, 10:25


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
an_ga
сообщение Feb 28 2009, 12:41
Сообщение #54





Группа: Участник
Сообщений: 7
Регистрация: 8-11-08
Из: Киев
Пользователь №: 41 471



По поводу регуляторов (для информации): http://my.elvisti.com/shov/tune1.html
А температуру из напряжения термопары я обычно по полиному считал. Мне кажется так проще. Главное ЭДС холодного спая не забывать прибавлять.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 28 2009, 13:32
Сообщение #55


Гуру
******

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



Цитата(Ivan Kuznetzov @ Feb 28 2009, 13:25) *
вот еще мне непонятно - чем так плох алгоритм авто-настройки ПИД регулятора?

я использую алгоритм ПИД регулирования с сахара.ру - можно к нему как-нибудь приспособить алгоритм автонастройки?

А чем хорош? А что, на Сахаре разработали что-то новое?
Плох тем, что не нужен никому. И создает иллюзии. И вмешаться нельзя. Если можно, то лучше.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 28 2009, 14:29
Сообщение #56


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Tanya @ Feb 28 2009, 16:32) *
...
И создает иллюзии.
...

+1
На мой взгляд это самое плохое в данном приложении ПИД регулятора. На самом-то деле для печки он плохо подходит. А его используют и ещё гордятся - у меня ПИД...
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Mar 3 2009, 05:09
Сообщение #57


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(galjoen @ Feb 28 2009, 19:29) *
+1
На мой взгляд это самое плохое в данном приложении ПИД регулятора. На самом-то деле для печки он плохо подходит. А его используют и ещё гордятся - у меня ПИД...

а какой ПИД алгоритм тогда лучше использовать?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 3 2009, 10:01
Сообщение #58


Гуру
******

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



Цитата(Ivan Kuznetzov @ Mar 3 2009, 08:09) *
а какой ПИД алгоритм тогда лучше использовать?

ПИД - не алгоритм, а закон управления. Может быть реализован аналоговым способом, а может жить в контроллере. А может и там, и там.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Mar 3 2009, 10:21
Сообщение #59


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(Tanya @ Mar 3 2009, 15:01) *
ПИД - не алгоритм, а закон управления. Может быть реализован аналоговым способом, а может жить в контроллере. А может и там, и там.

ну если он живет в контроллере (а у меня так) то это уже алгоритм, привожу его ниже:

Код
float themp;                            //входная температура, регулируемый параметр, размерность - градусы
long thempSet;                          //уставка температуры, размерность - градусы
float errThemp[3];                      //массив ошибок регулятора

#define    zoneProp 1                      //зона пропорциональности, размерность - градусы
#define    tauInt 4            //постоянная интегрирования, размерность - секунды
#define    tauDiff 1            //постоянная дифференцирования, размерность - секунды
    
#define    tauQuant 0.05           //период квантования (реальный!!! период запуска функции регулятора), размерность - секунды
    
#define    tauDiffFilter 5         //как бы кол-во усредняемых отсчётов Д-составляющей,
                                //не стоит увлекаться и делать это число слишком большим.
#define tauOutFilter 5        //как бы кол-во усредняемых отсчётов полного выходного сигнала, аналогично.

float OutPID;                   //выходное значение ПИД регулятора
float KoeffNormOut;             //нормализовочный коэффициент
float Differential=0;
float Integral;
float tmpReal;

        //********************************************************************************
***************
        // ПИД алгоритм
        //********************************************************************************
***************
        
    errThemp[2] = errThemp[1];
    errThemp[1] = errThemp[0];
    
    //*******************************************************************
    //    Нормированная к отношению MaxOut/zoneProp ошибка регулирования для прямого регулятора.
    //    т.е. увеличивается температура - увеличивается выходной сигнал.
    //    режим - охлаждение нагревателя, обогрев.
    errThemp[0] = (themp - thempSet) * KoeffNormOut;
    
    //    ошибка для обратного регулятора.
    //    режим - нагрев охладителя, охлаждение.
    //    errThemp[0] = (thempSet - themp) * KoeffNormOut;
    
    //    вычисление и простейшая фильтрация Д-составляющей с предварительным усреднением по двум отсчётам
    Differential += (((errThemp[0] - errThemp[2]) * tauDiff * 0.5) - Differential) / tauDiffFilter;

//    без предварительного усреднения
//    Differential += (((errThemp[0] - errThemp[1]) * tauDiff) - Differential) / tauDiffFilter;
    
    //    вычисление И-составляющей методом трапеций с предварительным усреднением по двум отсчётам
    Integral += (((errThemp[0] + 2*errThemp[1] + errThemp[2]) * tauQuant * 0.25) / tauInt);

//    без предварительного усреднения
//    Integral += (((errThemp[0] + errThemp[1]) * tauQuant * 0.5) / tauInt);
    
    //    Ограничитель И-составляющей
    if(Integral > (float)MaxOut)
        Integral = (float)MaxOut;
    else
        if(Integral < (float)MinOut)
            Integral = (float)MinOut;
    
    //    Полный сигнал
    tmpReal = errThemp[0] + Integral + Differential / tauQuant;
    
    //    Ограничитель полного входного сигнала
    if(tmpReal > (float)MaxOut)
        tmpReal = (float)MaxOut;
    else
        if(tmpReal < (float)MinOut)
            tmpReal = (float)MinOut;
            
    OutPID += (tmpReal - OutPID) / tauOutFilter;    //    фильтрация полного выходного сигнала
        
        //********************************************************************************
***************
        // Конец ПИД алгоритма
        //********************************************************************************
***************


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 3 2009, 10:39
Сообщение #60


Гуру
******

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



Цитата(Ivan Kuznetzov @ Mar 3 2009, 13:21) *
ну если он живет в контроллере (а у меня так) то это уже алгоритм, привожу его ниже:

Я бы (почти) все в целых. Частоту выборки (вычислений) привязала бы к сетевой. Тогда сетевая наводка убирается - ослабляется.
А константы надо подбирать экспериментально. Непонятно, что потом - как и чем управляет этот ПИД.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 3 2009, 11:21
Сообщение #61


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Tanya @ Mar 3 2009, 13:39) *
Я бы (почти) все в целых. Частоту выборки (вычислений) привязала бы к сетевой. Тогда сетевая наводка убирается - ослабляется.
А константы надо подбирать экспериментально. Непонятно, что потом - как и чем управляет этот ПИД.

Согласен, что лучше привязаться к сети, но можно хотя бы кратно 10 милисекундам выборку сделать.
2 Ivan Kuznetzov
А вообще чтобы печкой эффективно управлять, по моему мнению, нужно скользящие средние считать на подводимую мощность и на температуру. Время, за которое эти скользящие средние считаются, примерно равно удвоенной задержке вносимой печкой д.б. Эту задержку определить можно как время через которое, после включения нагревателя на 100%, температура реально подниматься начнёт. Я в своё время т.о. решил задачу о том сколько тепла в объект уходило. Т.е. вычитал из всего тепла, тепло ушедшее на нагрев самого нагревателя и в окружающую среду. Даже более того, т.о. можно узнать кое-что о нагреваемом объекте. Его теплоёмкость и теплопроводность. Но это всё оффтоп. По теме. Регулировать то температуру по такой схеме значительно сложнее (программно), чем это делает стандартный ПИД. Хотя качество регулирования конечно лучше получается. А м.б. у вас интерес из-за усложнения уже пропал? Если нет - задавайте вопросы.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 3 2009, 11:35
Сообщение #62


Гуру
******

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



Цитата(galjoen @ Mar 3 2009, 14:21) *
А вообще чтобы печкой эффективно управлять, по моему мнению, нужно скользящие средние считать на подводимую мощность и на температуру.
По теме. Регулировать то температуру по такой схеме значительно сложнее (программно), чем это делает стандартный ПИД. Хотя качество регулирования конечно лучше получается. А м.б. у вас интерес из-за усложнения уже пропал? Если нет - задавайте вопросы.

Сложнее... проще... Это относительно. Надо учитывать "мгновенную" электрическую мощность, подавая ее в контур обратной связи. Тогда управление становится "натуральным" - по мощности... или интегралу мощности - энергии. Точность, естественно, увеличивается. А если еще внешнюю температуру учитывать...
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 3 2009, 11:52
Сообщение #63


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Tanya @ Mar 3 2009, 14:35) *
Сложнее... проще... Это относительно. Надо учитывать "мгновенную" электрическую мощность, подавая ее в контур обратной связи. Тогда управление становится "натуральным" - по мощности... или интегралу мощности - энергии. Точность, естественно, увеличивается. А если еще внешнюю температуру учитывать...

Конечно "натуральное" управление лучше. Установившаяся температура превышает тем-ру окружающей среды пропорционально подведённой мощности.
Только вот есть закавыка. Чтобы динамику сделать - приходится печку дифференциальными уравнениями описываить. И решать их в реалтайме. Вот об этом усложнении я говорил.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 3 2009, 12:06
Сообщение #64


Гуру
******

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



Цитата(galjoen @ Mar 3 2009, 14:52) *
Конечно "натуральное" управление лучше. Установившаяся температура превышает тем-ру окружающей среды пропорционально подведённой мощности.
Только вот есть закавыка. Чтобы динамику сделать - приходится печку дифференциальными уравнениями описываить. И решать их в реалтайме. Вот об этом усложнении я говорил.


Ну... Вы усложняете. Пид работает (должен) только в стационарном или квазистационарном режиме (когда задатчик медленно меняется). Иначе - это управление "по модели", о чем Вы и пишите.
А если дверцу открывать и содержимое менять... Так это другая задача. Можно еще несколько усложнить (но улучшить) - несколько датчиков - у нагревателя и в центре печи...
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 3 2009, 12:22
Сообщение #65


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Tanya @ Mar 3 2009, 15:06) *
Ну... Вы усложняете. Пид работает (должен) только в стационарном...
....

Для того, чтобы съэкономить электроэнергию и повысить производительность желательно (если техпроцесс позволяет) объекты в печи лишнее время не держать. Т.е. нагрелся он там до нужной т-ры - следующий пошёл. В таких условиях у печи фактически не будет стационарного режима.
А насчёт увеличения кол-ва датчиков я согласен. Ещё очень полезно 2 датчика недалеко друг от поставить чтобы тепловой поток можно мерять было. Нужно только место установки правильно подобрать.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Mar 7 2009, 16:25
Сообщение #66


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(Tanya @ Mar 3 2009, 17:06) *
Ну... Вы усложняете. Пид работает (должен) только в стационарном или квазистационарном режиме (когда задатчик медленно меняется). Иначе - это управление "по модели", о чем Вы и пишите.
А если дверцу открывать и содержимое менять... Так это другая задача. Можно еще несколько усложнить (но улучшить) - несколько датчиков - у нагревателя и в центре печи...

Управление по "модели" я тоже хочу реализовать, а именно: регулятор будет иметь связь с кампой по USB, в кампе будет прога на ЛабВью в которой пользователь чертит график требуемой температуры (ну или набор значений SETPOINT) - а ПИД регулятор будет работать по этому графику...

Цитата(Tanya @ Mar 3 2009, 15:39) *
Я бы (почти) все в целых. Частоту выборки (вычислений) привязала бы к сетевой. Тогда сетевая наводка убирается - ослабляется.
А константы надо подбирать экспериментально. Непонятно, что потом - как и чем управляет этот ПИД.


Для настройки П И Д и других констант у меня предусмотрена отдельная менюшка, в которой каждый коэффициент в процессе работы можно натыкать кнопочками, а затем сохранить в EEPROM smile.gif


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 7 2009, 16:42
Сообщение #67


Гуру
******

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



Цитата(Ivan Kuznetzov @ Mar 7 2009, 19:25) *
Управление по "модели" я тоже хочу реализовать, а именно: регулятор будет иметь связь с кампой по USB, в кампе будет прога на ЛабВью в которой пользователь чертит график требуемой температуры (ну или набор значений SETPOINT) - а ПИД регулятор будет работать по этому графику...

"Управление по модели" - это уже не ПИД-управление. Это по решению аналитическому или численному модели процесса.
А про задание коэффициентов. Похоже, некоторые ошибки должны сделать все.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 7 2009, 16:44
Сообщение #68


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Ivan Kuznetzov @ Mar 7 2009, 19:25) *
Управление по "модели" я тоже хочу реализовать, а именно: регулятор будет иметь связь с кампой по USB, в кампе будет прога на ЛабВью в которой пользователь чертит график требуемой температуры (ну или набор значений SETPOINT) - а ПИД регулятор будет работать по этому графику...



Для настройки П И Д и других констант у меня предусмотрена отдельная менюшка, в которой каждый коэффициент в процессе работы можно натыкать кнопочками, а затем сохранить в EEPROM smile.gif

Это никакого отношения к управлению по модели не имеет. Там имеется ввиду модель печки.
Go to the top of the page
 
+Quote Post
ведущий_специали...
сообщение Mar 7 2009, 17:28
Сообщение #69


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 24-11-07
Пользователь №: 32 645



а как насчет такой микросхемы как DS75? В связке с каким нибудь ацп(лучше 16 бит) получаем очень даже неплохие характеристики. Да и интерфейс легок, и2ц как никак
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Mar 8 2009, 18:11
Сообщение #70


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(ведущий_специалист @ Mar 7 2009, 22:28) *
а как насчет такой микросхемы как DS75? В связке с каким нибудь ацп(лучше 16 бит) получаем очень даже неплохие характеристики. Да и интерфейс легок, и2ц как никак

вот это неплохой вариант! тем более существующий LM358 нужен был лишь для тестов...

Уважаемые Форумчане! если у кого завалялся алгоритм авто-настройки ПИД регулятора - поделитесь пожалуйста... охота все-таки попробывать на реальной печке - что он покажет - какие коэффициенты выдаст?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
ведущий_специали...
сообщение Mar 9 2009, 08:23
Сообщение #71


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 24-11-07
Пользователь №: 32 645



ds75 нужна для компенсации по температуре в месте соединения термопары и прибора.
а ацп шку все таки ставь 16 битную
Go to the top of the page
 
+Quote Post
noise2009
сообщение Apr 15 2009, 12:30
Сообщение #72


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 10-04-09
Пользователь №: 47 456



А нет ли исходников на ассемблере с градуровочными характеристиками?
Go to the top of the page
 
+Quote Post
akken
сообщение Apr 17 2009, 18:25
Сообщение #73


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



Цитата(galjoen @ Mar 3 2009, 14:52) *
Конечно "натуральное" управление лучше. Установившаяся температура превышает тем-ру окружающей среды пропорционально подведённой мощности.
Только вот есть закавыка. Чтобы динамику сделать - приходится печку дифференциальными уравнениями описываить. И решать их в реалтайме. Вот об этом усложнении я говорил.


Читал, что управление на принципах нечеткой логики творит чудеса, заменяя кучу дифуравнений. Пытался
перевести управление муфельной печкой на "фаззи", но не одолел. Вам не приходилось этим заниматься,
или слухи о чудесах преувеличены?
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Apr 21 2009, 09:18
Сообщение #74


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



ну вот и все - проект почти закончил, состыковал с ПК через LabView - графики теперь чертит, есть управление параметрами регулятора с ПК, можно по USB или через RS232, также ведется лог в эксельку.

Что сейчас имеем:

1) атмега32, дисплей 20х4
2) полная развязка от сети (по питанию - транс, по управлению симистором - оптрон - на схеме не показаны)
3) переход через 0 ловлю внутренним компаратором меги
4) мощность нагревателя регулирую либо кнопочками +/-. либо по закону ПИД исходя из заданной температуры и измерянной
5) 3 ПИД коэффициента (пока нашел опытным путем для моей печки)
6) Два режима управления симистором фазоимпульсный и по Брезенхему
7) есть возможность встречно-параллельного включения двух тиристоров и управление ими с разных ног меги через развязывающие трансики (для управления мощными тиристорами печей Таммана)

Осталось присобачить нормальный АЦП вместо меговского и датчик холодного спая.

Кто что использует в качестве АЦП для измерения термопарой?

Сообщение отредактировал Ivan Kuznetzov - Apr 21 2009, 09:22


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 21 2009, 09:36
Сообщение #75


Гуру
******

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



Цитата(Ivan Kuznetzov @ Apr 21 2009, 13:18) *
3) переход через 0 ловлю внутренним компаратором меги
4) мощность нагревателя регулирую либо кнопочками +/-. либо по закону ПИД исходя из заданной температуры и измерянной
5) 3 ПИД коэффициента (пока нашел опытным путем для моей печки)
6) Два режима управления симистором фазоимпульсный и по Брезенхему
Осталось присобачить нормальный АЦП вместо меговского и датчик холодного спая.

Кто что использует в качестве АЦП для измерения термопарой?

Выбросьте фазовое управление, если у Вас печка весит больше килограмма.
Если будете учитывать поданную мощность, будет лучше.
Ацп лучше интегрирующий за N периодов сети.
А что, у Вашего контроллера плохой АЦП? Вам какая точность-то нужна?
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 21 2009, 10:01
Сообщение #76


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Tanya @ Feb 27 2009, 22:44) *
Нет у нормальных печек "чистой задержки".


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

Понятие "нормальности" для печки слегка растяжимо.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Apr 21 2009, 16:32
Сообщение #77


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(akken @ Apr 17 2009, 22:25) *
Читал, что управление на принципах нечеткой логики творит чудеса, заменяя кучу дифуравнений. Пытался
перевести управление муфельной печкой на "фаззи", но не одолел. Вам не приходилось этим заниматься,
или слухи о чудесах преувеличены?

Нечёткой логикой не занимался. Но весь мой опыт подсказывает, что чудес не бывает.
В случае с печкой времени для рассчётов вполне достаточно. Да и не сильно сложные эти рассчёты - в основном вычисление скользящего среднего (ползучка) и помножение/сложение. А вот с ОЗУ может возникнуть проблемма (на АВР). Т.к. приходится организовывать достаточно большие кольцевые буфера. Как минимум для замеренной температуры и подведённой мощности. А реально - ещё пару таких-же буферов для внутренних переменных (чтоб каждый раз не считать).
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 21 2009, 16:38
Сообщение #78


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(galjoen @ Apr 21 2009, 20:32) *
Т.к. приходится организовывать достаточно большие кольцевые буфера.


Может быть не нужно именно скользящего среднего для печки? biggrin.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Apr 21 2009, 21:10
Сообщение #79


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Oldring @ Apr 21 2009, 20:38) *
Может быть не нужно именно скользящего среднего для печки? biggrin.gif

Как это ни смешно, но попробовав, я пришёл к выводу, что печка оказывается весьма сложный в управлении объект blink.gif . Во всяком случае гораздо сложнее следящего электропривода.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 21 2009, 21:25
Сообщение #80


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(galjoen @ Apr 22 2009, 01:10) *
Как это ни смешно, но попробовав, я пришёл к выводу, что печка оказывается весьма сложный в управлении объект blink.gif .


Думаю Вы просто её не поняли. smile.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
akken
сообщение Apr 22 2009, 08:50
Сообщение #81


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



Цитата(galjoen @ Apr 22 2009, 00:10) *
Как это ни смешно, но попробовав, я пришёл к выводу, что печка оказывается весьма сложный в управлении объект blink.gif . Во всяком случае гораздо сложнее следящего электропривода.


Особенно, если поставлена задача регулировать +/- 1 градус в диапазоне 50-900*С с 2,5 квт нагревателем. При заданной температуре 50*С малейшая погрешность при определении первой порции энергии забрасывала печку в аут на пол дня. Промышленный "Овен" в режиме ПИД начинал приемлемо регулировать только с 250*.
Так что насчет сложности согласен на все 200%.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 09:40
Сообщение #82


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(akken @ Apr 22 2009, 12:50) *
При заданной температуре 50*С малейшая погрешность при определении первой порции энергии забрасывала печку в аут на пол дня.


Про квадратичную зависимость мощности от напряжения, наверное, забыли? И про сильно ограниченную скорость изменения температуры, вызванную ограничением мощности нагревателя, как сверху, так и снизу? wink.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 22 2009, 09:43
Сообщение #83


Гуру
******

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



Цитата(akken @ Apr 22 2009, 12:50) *
Особенно, если поставлена задача регулировать +/- 1 градус в диапазоне 50-900*С с 2,5 квт нагревателем. При заданной температуре 50*С малейшая погрешность при определении первой порции энергии забрасывала печку в аут на пол дня. Промышленный "Овен" в режиме ПИД начинал приемлемо регулировать только с 250*.
Так что насчет сложности согласен на все 200%.

Ужас какой! Теперь боюсь духовку включать. Там примерно такая мощность.
Вот такая моя нечеткая логика.
А печка, действительно, сложнее привода - пространственный объект - степеней свободы больше, уравнения с косыми производными...
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 09:45
Сообщение #84


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Tanya @ Apr 22 2009, 13:43) *
А печка, действительно, сложнее привода - пространственный объект - степеней свободы больше, уравнения с косыми производными...


Ужас какой. И датчиков обратной связи, наверное, десяток... biggrin.gif
И потребление тепловой мощности изменяется резко при запекании корочки biggrin.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
akken
сообщение Apr 22 2009, 10:44
Сообщение #85


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



Цитата(Oldring @ Apr 22 2009, 12:40) *
Про квадратичную зависимость мощности от напряжения, наверное, забыли? И про сильно ограниченную скорость изменения температуры, вызванную ограничением мощности нагревателя, как сверху, так и снизу? wink.gif

Квадратичная зависимость меня не касалась, так как стоял контактор и стеклянный стержень в качестве измерителя-переключателя. Нужно было заменить только стержень на электронику, в качестве которой принесли стандартный регулятор известной фирмы с "академическим" ПИД алгоритмом. Вот эта комбинация и упала ниже плинтуса при попытке
дежать +50* при темп. воздуха +28*

Цитата(Tanya @ Apr 22 2009, 12:43) *
Ужас какой! Теперь боюсь духовку включать. Там примерно такая мощность.
Вот такая моя нечеткая логика.
А печка, действительно, сложнее привода - пространственный объект - степеней свободы больше, уравнения с косыми производными...

1. а у Вас настоящий термометр в духовке, или стрелочка на "спиральке"?
2. а 50*С пробовали установить поддерживать +/- 1?
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 10:51
Сообщение #86


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(akken @ Apr 22 2009, 14:39) *
Вот эта комбинация и упала ниже плинтуса при попытке
дежать +50* при темп. воздуха +28*


Удивительного в этом ничего нет. Наверняка этот регулятор не рассчитан на такие жесткие условия регулирования - на уровне менее 2.5% от максимальной мощности biggrin.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 22 2009, 10:53
Сообщение #87


Гуру
******

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



Цитата(akken @ Apr 22 2009, 14:44) *
регулятор известной фирмы с "академическим" ПИД алгоритмом. Вот эта комбинация и упала ниже плинтуса при попытке
дежать +50* при темп. воздуха +28*


1. а у Вас настоящий термометр в духовке, или стрелочка на "спиральке"?
2. а 50*С пробовали установить поддерживать +/- 1?

Печка немецкая. Держит 40 градусов - тесто подходит, не варится... Температуру цифрами показывает. Все нормально там, только не знаю, какой термометр.
А с платиновым термометром и "академическим" ПИД алгоритмом можно держать 50 градусов... до микроградусов при наружной тоже около 30.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 10:57
Сообщение #88


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Tanya @ Apr 22 2009, 14:53) *
до микроградусов при наружной тоже около 30.


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


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
akken
сообщение Apr 22 2009, 11:46
Сообщение #89


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



Цитата(Oldring @ Apr 22 2009, 13:51) *
Удивительного в этом ничего нет. Наверняка этот регулятор не рассчитан на такие жесткие условия регулирования - на уровне менее 2.5% от максимальной мощности biggrin.gif

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


Цитата(Tanya @ Apr 22 2009, 13:53) *
Печка немецкая. Держит 40 градусов - тесто подходит, не варится... Температуру цифрами показывает. Все нормально там, только не знаю, какой термометр.
А с платиновым термометром и "академическим" ПИД алгоритмом можно держать 50 градусов... до микроградусов при наружной тоже около 30.

Не пробовали проверить температуру "независимым" термометром?А то ведь встроенный знает, сколько должно быть rolleyes.gif
Согласен, что держать 0,1* можно на 40, а что будет на 900*, если оставить те же настройки.

Сообщение отредактировал akken - Apr 22 2009, 11:50
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 11:56
Сообщение #90


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(akken @ Apr 22 2009, 15:46) *
Нельзя вычитать из заводской инструкции ничего похожего на ограничение минимальной мощности, только есть об "использование усовершенствованной математической модели ПИД#регулятора" . Поэтому все претензии были ко мне.


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

Взялся-то сам зачем за его настройку не прикинув заранее физику?

Цитата(akken @ Apr 22 2009, 15:46) *
Согласен, что держать 0,1* можно на 40, а что будет на 900*, если оставить те же настройки.


Не думаю, что там можно выставить 900 smile.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
akken
сообщение Apr 22 2009, 12:12
Сообщение #91


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



[quote name='Oldring' date='Apr 22 2009, 14:56' post='582395']

Взялся-то сам зачем за его настройку не прикинув заранее физику?

Начальнык показал каталог фирмы на глянцевой бумаге и попросил не умничать.
Через 2 дня начали делать самодельный.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 12:18
Сообщение #92


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(akken @ Apr 22 2009, 16:12) *
Через 2 дня начали делать самодельный.


Два дня на осознание ошибки - это не много. biggrin.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 22 2009, 12:34
Сообщение #93


Гуру
******

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



Цитата(Oldring @ Apr 22 2009, 14:57) *
Вот это, наверное, уже зависит от конструкции печки. Которую по стандартным условиям таких задач изменять обычно не разрешается. Потому как помехи от изменения окружающей температуры будут сильно мешать.

Температура снаружи не (с)только стабилизируется, сколько учитывается.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 12:37
Сообщение #94


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Tanya @ Apr 22 2009, 16:34) *
Температура снаружи не (с)только стабилизируется, сколько учитывается.


На всех шести стенках сразу?
И давление с влажностью тоже учитываются?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 22 2009, 12:39
Сообщение #95


Гуру
******

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



Цитата(Oldring @ Apr 22 2009, 15:56) *
Не думаю, что там можно выставить 900 smile.gif

300+ или около того. Там еще стеклянный (пайрексовый) противень - он при 900 расплавится, наверное...

Цитата(Oldring @ Apr 22 2009, 16:37) *
На всех шести стенках сразу?

Какой Вы недогадливый. Ошиблись в два раза ровно. Стенок всего 3... Влажность и давление не учитывается. Хотя резкие изменения давления могут... в принципе.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 12:44
Сообщение #96


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Tanya @ Apr 22 2009, 16:39) *
Какой вы недогадливый. Ошиблись в два раза ровно. Стенок всего 3...


Три параллельно или три последовательно? wink.gif
Я представлял себе печку в виде кубика. На крайний случай - параллелепипеда.

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


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 22 2009, 12:56
Сообщение #97


Гуру
******

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



Цитата(Oldring @ Apr 22 2009, 16:44) *
Три параллельно или три последовательно? wink.gif
Я представлял себе печку в виде кубика. На крайний случай - параллелепипеда.

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

Недогадливый Вы все-таки. Прямолинейный. Стенок наружных три - как у всякого цилиндра. Температура наружная контролируется в одной точке. А внутри матрешка, да. Примерно тройная. Только регуляторов два. А наружное влияние медленное - оно съедается второй наружной стенкой.
Go to the top of the page
 
+Quote Post
akken
сообщение Apr 22 2009, 13:06
Сообщение #98


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



Цитата(Oldring @ Apr 22 2009, 15:18) *
Два дня на осознание ошибки - это не много. biggrin.gif

Тяжело бороться со стойким предрассудком, что отрицательная ОС решает все вопросы biggrin.gif
Стоит только на 20 секунд открыть дверцу в печке при 300* и настроенный идеально ПИД регулятор превращается в исчадие ада crying.gif
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 22 2009, 13:12
Сообщение #99


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Tanya @ Apr 22 2009, 16:56) *
Стенок наружных три - как у всякого цилиндра. ... А внутри матрешка, да. Примерно тройная.


Да уж, про то, что стенок на самом деле девять - я не догадался biggrin.gif


Цитата(akken @ Apr 22 2009, 17:06) *
Стоит только на 20 секунд открыть дверцу в печке при 300* и настроенный идеально ПИД регулятор превращается в исчадие ада crying.gif


Ну а датчик температуры что меряет? Температуру воздуха в печке или температуру стенок печки?
Если воздуха - тогда понятно почему "исчадие ада". Оторвите датчик температуры - и ни один регулятор ничего стабиллизировать не сможет.

PS Да, тяжело обычно бороться с заблуждением, что любую проблему можно решить на коленке за один человеко-день методом тыка.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Apr 22 2009, 13:22
Сообщение #100


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(akken @ Apr 22 2009, 16:12) *
Начальнык показал каталог фирмы на глянцевой бумаге и попросил не умничать.
Через 2 дня начали делать самодельный.

Просто удивительно, но к той печке, которой я занимался, (до меня) тоже был приделан ОВЕН. У него имелась автонастройка коэффициентов ПИД регулятора. Не помогало. Нагревалась печка медленно и с большим перерегулированием. И при смене нагреваемого объекта таже ситуация наблюдалась. Тут дело в том, что ПИД регулятор в принципе к печке плохо подходит. А вот к следящему приводу хорошо. Там вообще 3 контура - тока, скорости и положения. И у каждого свой датчик. А вот у печки датчик всего 1 - температуры. Вот в этом основная проблемма - в нехватке обратных связей. Кстати пришлось ещё ввести датчик тока нагревателя т.к. от температуры его сопротивление менялось и мощность соотв-но. И от напряжения в сети тоже.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:34
Рейтинг@Mail.ru


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