|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 10 08, 11:35. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » PID algoritmaa
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 2 Pereiti prie 1, 2 Toliau |
|
|
PID algoritmaa |
Parašytas: 2017 02 28, 08:54 |
|
|
|
Sveiki, gal kas turit pasirase PID temperaturos valdymui. Sildau su sildytuvu, sildytuva jyngines rele. Gal kam negaila pasidalinti isbandytu kodu. Man reikia inkubatoriui |
|
_________________ Skype: dmb-220 |
|
|
|
|
PID algoritmaa |
Parašytas: 2017 02 28, 09:59 |
|
|
|
[url]
https://en.wikipedia.org/wiki/PID_controller
[/url]
Dariau pagal šitą. Ten pabaigoje diskretus aprašytas "Pseudocode". Veikia padoriai.
Jei temperatūrą reguliuosi, ir tik įjungt išjungt, tai neigiamo signalo turi nebūti.
Ir pervesk bent į integer, su realiais daug vietos užima ir lėtai veikia.
Man į Atmega16 netilpo.
|
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 02 28, 13:22 |
|
|
|
krienas rašo: |
[url]
https://en.wikipedia.org/wiki/PID_controller
[/url]
Dariau pagal šitą. Ten pabaigoje diskretus aprašytas "Pseudocode". Veikia padoriai.
Jei temperatūrą reguliuosi, ir tik įjungt išjungt, tai neigiamo signalo turi nebūti.
Ir pervesk bent į integer, su realiais daug vietos užima ir lėtai veikia.
Man į Atmega16 netilpo.
|
gal galite pasidinti savo kodu? Pas manes stm32f103 tai resursu turi nepritrukti |
|
_________________ Skype: dmb-220 |
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 02 28, 13:39 |
|
|
|
Pas mane objektiniu prašyta:
Pido klasė atrodo taip:
Kodas: |
class kitas_pidas{
private :
char startas;
int Kp;
int Ki;
int Kd;
int klaida_pries;
int integralas;
int dt;
int klaida;
int de;
int rezultatas ;
public:
kitas_pidas();
void _reguliavimas();
void _startas (char a){startas = a;}
char _busena () {return startas;}
};
kitas_pidas::kitas_pidas(){
Kp = 100;
Ki = 10;
Kd = 0;
klaida_pries = 0;
integralas =0;
dt = 1;
}
void kitas_pidas::_reguliavimas(){
if (startas == 0x01){
klaida = ((int)temperaturos_nustatymas * 100 )- ((int)tempertura * 100);
if (integralas >= - 200){
if (integralas < 200){
integralas = (integralas + (klaida / 100));}}
//de = (klaida - klaida_pries)/dt;
rezultatas = (klaida / 5) + (integralas/ 100);// + (integralas/ Ki) + (Kd * de));
if (rezultatas >= 100) {kaitinimo_rezultatas = 100;}
if (rezultatas < 0 ){kaitinimo_rezultatas = 0;}
if (rezultatas > 0){
if (rezultatas < 100){kaitinimo_rezultatas = (unsigned char) rezultatas;}}
klaida_pries = klaida;
}
}
|
Čia privesta prie int.
globalus kintamieji:
unsigned char tempertura = 0x00;
unsigned char temperaturos_nustatymas = 0x00;
unsigned char kaitinimo_rezultatas = 0; |
|
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 02 28, 15:23 |
|
|
|
Ka tu cia valdei? Vakarr bandysiu pasirasyti sau ir istestuoti reiks |
|
_________________ Skype: dmb-220 |
|
|
|
|
PID algoritmaa |
Parašytas: 2017 02 28, 16:58 |
|
|
|
Laminatorių.
Temperatūrą matavau su diodu.
Atidarinėjau simistorių sinuso pradžioje, Lėtas PWM, su softiniais skaitliukais 100 max. |
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 03 01, 18:34 |
|
|
|
iš tikrųjų, o kodėl inkubatoriui prireikė PID'o temperatūros valdymui? kokia histerezė? ar svarbus temperatūros kilimo / kritimo greitis? |
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 03 01, 22:12 |
|
|
|
a1girdas rašo: |
iš tikrųjų, o kodėl inkubatoriui prireikė PID'o temperatūros valdymui? kokia histerezė? ar svarbus temperatūros kilimo / kritimo greitis? |
kitimo greitis nera svarbus, man svarbu kad tuo tiksliau islaikytu nustatyta temperatura. pvz . reik kad butu 37,8 laipsnio, 39 jau labai blogai, 36 irgi ne ka geriau. norisi kad svyravimas butu tik 37,2 - 38,5 kazkur. pwz man idomu, kad su sildytuvu pasildai iki 37,8, sildytuvas atsijungia, bet jis dar siltas, vis dar sildo ora. reiketu sita kazkaip kompensuoti.
pagalvojau kad PID tiktu, jei netinka buciau dekingas kad uzvestumet ant tinkamesnio kelio? |
|
_________________ Skype: dmb-220 |
|
|
|
|
PID algoritmaa |
Parašytas: 2017 03 01, 22:35 |
|
|
|
Pas patį bus tokie niuansai:
Kur stovės temperatūros daviklis. Oras ne koks laidininkas šilumai.
Kaitinimo elementas turi inerciją. Arti kaitinimo elemento gali būti per karšta, nors daviklis per atstumą rodys normalią temperatūrą. |
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 03 01, 23:44 |
|
|
|
krienas rašo: |
Pas patį bus tokie niuansai:
Kur stovės temperatūros daviklis. Oras ne koks laidininkas šilumai.
Kaitinimo elementas turi inerciją. Arti kaitinimo elemento gali būti per karšta, nors daviklis per atstumą rodys normalią temperatūrą. |
oras bus maisomas ventiliatoriaus pagalba. temperatura turetu buti mazdaug vienoda visoje dezeje. uzsiakes esu keleta skirtingu davikliu, bus matyt kuris geriau ir tiksliau rodys |
|
_________________ Skype: dmb-220 |
|
|
|
|
PID algoritmaa |
Parašytas: 2017 03 02, 14:39 |
|
|
|
blah labai gera nuorodą pateikė.
Jei nori tikslumo, statyk ne relę, o optosemistorių ir kaitinimą valdyk kaip lėtą PWM (pvz 2s periodo). Tada ir PID teorija tiks. |
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 04 18, 16:09 |
|
|
|
Padėkit su PID'o matematika. Noriu patyrinėti greitaveiką 8 bitų mikrovaldiklyje.
Yra DC variklis su incrementiniu encoderiu. Aš noriu valdyti variklį keičiant jo pozicijos skaičių (galim sakyti apskritimo laipsnius) į PWM duty cycle. Kuo arčiau REAL_POSITION link NEED_POSITION (kuo mažesnis erroras), tuo mažesnis duty cycle. REAL_POSITION tapus lygiai NEED_POSITION, duty cycle tampa nulis.
Kadangi visose PID formulėse dalyvauja laipsniai, tai ir u(t) gauname laipsnius. O kaip tai konvertuoti į duty cycle?
u(t) = P (t) + I (t) + D (t);
P (t) = Kp * e (t);
I (t) = I (t 1) + Ki * e (t);
D (t) = Kd * {e (t) e (t 1)}; |
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 04 18, 16:28 |
|
|
|
Neprokatit, variklis turi inercija, tad stabdant varikli ta inercija reikes kompensuoti priesingo zenklo srove, t.y. reikes kazkiek "apmokyti". |
|
|
|
|
|
PID algoritmaa |
Parašytas: 2017 04 18, 17:01 |
|
|
|
AlgisL rašo: |
Neprokatit, variklis turi inercija, tad stabdant varikli ta inercija reikes kompensuoti priesingo zenklo srove, t.y. reikes kazkiek "apmokyti". |
Mačiau aš tą inerciją nuėmus įtampą, pusė skritulio tuščias apvažiuoja. O gal galėtum padėti pritempti tuos laipsnius iki duty cycle, noriu pažiūrėti kaip neveikia |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods |
|
|
|