Sida 1 av 2

PID-reglering med uc

Postat: 28 juli 2005, 11:43:24
av björn
Är det någon som har gjort PID-reglering med uc? Kollade runt lite på nätet och hittade http://www.embedded.com/2000/0010/0010feat3.htm.

Postat: 28 juli 2005, 11:49:46
av EagleSpirit
Vad ska du använda den till? Vad har du för ingångsvärden och vad ska du få ut?

Lite att läsa: http://www.microchip.com/stellent/idcpl ... lterID=521

Har för mig att jag hittade en massa information om det när jag lärde mig förut. Kommer dock inte ihåg vad jag sökte på.

Postat: 28 juli 2005, 11:59:16
av björn
Nej, jag skall inte använda det just nu. Tänkte mest kolla upp lite om hur svårt det är att göra.
Så det är bara lite "allmän info" jag e ute efter.

Tack för länkaen.

Postat: 28 juli 2005, 12:08:47
av sodjan
Jätte svårt att svara på utan ett konkret "fall".
Det beror så mycket på t.ex hur "snabb" loppen behöver vara och med vilken noggranhet den skall köras. I många fall behövs inte heller alla tre (P, I och D) komponenterna.

Det är väll inte det allra enklaste, men inte heller något omöjligt...

Postat: 28 juli 2005, 12:09:43
av MicaelKarlsson
Låter intressant, har inte implementerat PID i uC mest för att jag inte behövt det, eller inte lyckats komma på ett projekt som jag kan klämma in lite PID-reglering.

Om du vill ha mer inspiration/information så ta en titt på :http://www.avrfreaks.com oc sök i forumen efter PID så får du en mängd träffar.

Glöm inte att berätta vad det är på gång :)
Lycka till!

Postat: 28 juli 2005, 12:43:23
av macgyver
I det enklaste fallet med PID kan man t.ex använda denna formeln:
ut(t) = Pk*e(t) + Ik*sum(e(t)) + Dk(e(t)-e(t-1))

där e(t) är reglerfelet i nuvarande tidpunkt t d.v.s utsignalen(t) - insignalen(t)
Pk = Proportionella konstanten
Ik = Integreringskonstanten
Dk = Deriveringskonstanten

sum(et(t)) ger summan av alla tidigare insignaler d.v.s integralen

Hur man ska ställa in dessa konstanter och hur hur snabbt man ska sampla insignalen beror helt på vilket system man vill reglera
Ett sätt att få ett humm om konstantvärdena är att använda ziegler nichols metod:
http://www.chem.mtu.edu/~tbco/cm416/zn.html

Postat: 28 juli 2005, 12:45:37
av $tiff
Vilket sammanträffande! Jag håller på att implementera PID i en AVR i skrivande stund! Inte för att hela systemet fungerar just nu, men det är bara en kalibreringsfråga, själva regulatorn verkar fungerar kalasbra.

Postat: 28 juli 2005, 12:52:44
av björn
Ja ziegler nichols känner jag ju sen reglertekniken :).

$tiff : vad är det du skall reglera med "pid-avren"?

Postat: 28 juli 2005, 13:06:06
av $tiff
Den här. Fast med AVR och C istället (det där var ett tag sedan jag försökte sist).

Postat: 28 juli 2005, 13:20:06
av Icecap
Jag har faktisk just gjort en PI-reg i C men jag har inte hunnit testa den då hårdvaran är under tillverkning så jag antar att den fungerar alldeles strålande såklart ;-)

Postat: 28 juli 2005, 14:13:21
av sodjan
I de PID-trådar som jag har följt i andra forum, verkar en vanlig missuppfattning vara att man *måste* köra floating point. Med lite analys av det faktiska fallet, så duger offta fixed point (vilket är mycket snabbare samt enklare att implementera i assembler) eller ibland t.o.m enkla "table lookups" för vissa värden...

Postat: 28 juli 2005, 19:53:34
av Lajo
Detta kankse kan hjälpa dig lite på traven. Iosf för PICar men dock

PID-reg

Postat: 28 juli 2005, 23:40:43
av Henrik
Om det går att matematiskt beskriva det som ska regleras, kan du göra massa roliga grejer. Till exempel simulera hela systemet med olika sorters regulatorer och dödtider. Matlab och simulink använde vi i skolan för just sånt, för att sedan implementera PID i en pic och jämföra mot verkligheten. Vi styrde pumpen till en vattentank, vilket kanske inte var det mest sexuella men ganska intressant var det ändå.

Postat: 28 juli 2005, 23:46:33
av björn
Ja, vi använde också matlab för simuleringar. Dock gjorde jag aldrig pumpstyrningen som var en av alternativen av våra labbar.

Orsaken i till tråden var mest att kolla hur svårt det var att implementera det på en uc.

Vill tacka alla för alla länkar och ideer, Tack.

I mitt nästa projekt kommer nog PI(D) regleringa att testas.

EDIT: skönt att höra att det kan implementeras utan floating point.

Postat: 29 juli 2005, 15:21:27
av MicaelKarlsson
Henrik skrev: vilket kanske inte var det mest sexuella men ganska intressant var det ändå.
Nu fattar jag ingenting :shock: förklaring uppskattas.


Simulink är bra men lite långsamt i mitt tycke, kör simuleringen i Matlab och presentera det visuellt efteråt istället.