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 2025 05 02, 22:49. Visos datos yra GMT + 2 valandos.
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
Uzvesiu biski ant kelio:
Jei mechaninis pasipriesinimas i abi puses daug maz vienodas, tai kiek energijos idesi geritejant, panasiai tiek reikes sustabdant, jei pradesi stabdyti per tiek pat laipsniu anskciau tikslo.
Po keli(u)olikos iteraciju turesi atatinkama statistika ir galesi tiksliau pataikyti is pirmo karto.
Kadangi visose PID formulėse dalyvauja laipsniai, tai ir u(t) gauname laipsnius.
Netiesa. Formulės yra bendro pobūdžio, vienetai gali būti ir metrai ir temperatūros laipsniai, ir kampo laipsniai.
Tavo atveju duty cycle apsprendžia įtampą. O "apmokymas" vyksta eksperimentiškai parenkant Kp, Ki, Kd. Yra ir savireguliavimo algoritmai, bet tai tikrai sudėtinga.
Cia priklauso kaip parinksi variklio darbo rezima.
Jei kaip tu matomai siulai parinkti pacioj pradzioj, kai variklis teisnaudoja 10% savo galios, tai tavo tiesa, jis tikrai sunkiai prades suktis...
Jei parinksi taip, kad variklis darbo metu bus isnaudojamas arti 80% - bus atvirksciai, nes tie 20% nueis tik tepimo/dilimo nuostoliams kompensuoti.
Gerai imkim iškarto realius pavyzdžius. Pasisukus išorinei ašiai (yra pavarų dėžė) 360 laipsnių bus sugeneruota 1102500 impulsų iš encoderio. Tarkim ta ašis turi rodyklę ir stovi ties 100 laipsnių (skaičius d'306250' REAL_POSITION registre mikrovaldiklyje). Iš klaviatūros įvedama nauja pozicija, 120 laipsnių (įrašoma d'367500' į NEED_POSITION registrą mikrovaldiklyje). Taigi pirmasis reikšmių erroras bus e(t) = d'367500' - d'306250' = d'61250'. Sakykim esam pasirinkę visus gain koeficientus lygius 1. Tada
Kadangi gain=1 tai ir gaunasi neaiškumas
Pradėkim nuo P. Jei erroras 61250, o PWM 8 bitų, tai Kp galima įsivaizduoti 0,001 (teks parinkti eksperimentiškai). Tada poveikis gaunasi 61.
Toliau D. Spėju Kd galėtų būti 0,0005. Tada D poveikis bus -30. Bet tu neteisingai skaičiuoji, momentu t jis bus 0.
I kol kas nerūpi. Taigi bendras poveikis 61-30=31.
Aiškiau?
Aš kai PID aiškinaus, Excelyje formules surašiau ir kreives paišiau.
Paskutinį kartą redagavo bachurelis, 2017 04 19, 16:02. Redaguota 3 kartus(ų)
As domejausi ant arduino PID.
Gal ka pritaikysi. Cia bicas pasakoja kaip jis tobulino ta koda nuo nulio gali pasiskaityti. As tai ne programeris tai man labai daug klausimu ten kilo. Cia parasyta biblioteka arduinui kuri toliau naudojama arduino programoje. Nudojant sia programa gali pats susikonfiguruot kokiu daznumu skaiciuosi PID, nustatyti integravimo, diferenciavimo ir proporcini koficiantus. As bandziau su skaitmeniniu temperaturos davikliu tai gavos nesamones matyt kaskas nesutinka, reikia analoginio matyt.
Gerai imkim iškarto realius pavyzdžius. Pasisukus išorinei ašiai (yra pavarų dėžė) 360 laipsnių bus sugeneruota 1102500 impulsų iš encoderio. Tarkim ta ašis turi rodyklę ir stovi ties 100 laipsnių (skaičius d'306250' REAL_POSITION registre mikrovaldiklyje). Iš klaviatūros įvedama nauja pozicija, 120 laipsnių (įrašoma d'367500' į NEED_POSITION registrą mikrovaldiklyje). Taigi pirmasis reikšmių erroras bus e(t) = d'367500' - d'306250' = d'61250'. Sakykim esam pasirinkę visus gain koeficientus lygius 1. Tada
Ir kas toliau? Gavau, kad reikia atlikti poveikį d'183750', bet vis dar nežinau kaip tai valgoma.
360 bus 1102500 impulsai, tuomet vienas laipsnis bus ~3 impulsai jei neskaityti pavaru dezes, jei skaityti turi ziureti jos redukcija ir atatinkamai ivertinti poslinkio ir impulsu santykį. gauni d'183750 tuomet atatinkamai turi suktis ir variklis ta kryptimi ir tiek laipsnių, tačiau kai ašis artėja prie tikslo PID perskaičiuoja viską ir gaunasi vis mažesnis erroras ir nebūna overshooto, cia tavo PID reiksme yra laiko momente t ji keisis kai rodykle artes prie tikslo. Jei didele integracija ir pokytis gali buti oversotas tai cia vienetai gali buti ir per dideli cia kaip ir sake turi ekperimentuoti. As taip suprantu. PID tai nera kad daviau signala sukis ten ir tiek laipsniu PID yra kai sukimosi metu skaiciuojama viskas ir isduodama komanda pastoviai keciasi. Noreciau pabresti PID reikalingas jei istikruju tas overshootas galimas jei inercijos nera didele ir variklis tiksliai sustoja kur reikia jam pid ir nereikia
Paskutinį kartą redagavo valentinas, 2017 05 08, 21:28. Redaguota 2 kartus(ų)
Gerai imkim iškarto realius pavyzdžius. Pasisukus išorinei ašiai (yra pavarų dėžė) 360 laipsnių bus sugeneruota 1102500 impulsų iš encoderio. Tarkim ta ašis turi rodyklę ir stovi ties 100 laipsnių (skaičius d'306250' REAL_POSITION registre mikrovaldiklyje). Iš klaviatūros įvedama nauja pozicija, 120 laipsnių (įrašoma d'367500' į NEED_POSITION registrą mikrovaldiklyje). Taigi pirmasis reikšmių erroras bus e(t) = d'367500' - d'306250' = d'61250'. Sakykim esam pasirinkę visus gain koeficientus lygius 1. Tada
Ir kas toliau? Gavau, kad reikia atlikti poveikį d'183750', bet vis dar nežinau kaip tai valgoma.
360 bus 1102500 impulsai, tuomet vienas laipsnis bus ~3 impulsai jei neskaityti pavaru dezes, jei skaityti turi ziureti jos redukcija ir atatinkamai ivertinti poslinkio ir impulsu santykį. gauni d'183750 tuomet atatinkamai turi suktis ir variklis ta kryptimi ir tiek laipsnių, tačiau kai ašis artėja prie tikslo PID perskaičiuoja viską ir gaunasi vis mažesnis erroras ir nebūna overshooto, cia tavo PID reiksme yra laiko momente t ji keisis kai rodykle artes prie tikslo. Jei didele integracija ir pokytis gali buti oversotas tai cia vienetai gali buti ir per dideli cia kaip ir sake turi ekperimentuoti. As taip suprantu. PID tai nera kad daviau signala sukis ten ir tiek laipsniu PID yra kai sukimosi metu skaiciuojama viskas ir isduodama komanda pastoviai keciasi.