Modelism - RHC Forum: Care este rolul si cum functioneaza un PID control? - Modelism - RHC Forum

Salt la continut

  • 3 Pagini +
  • 1
  • 2
  • 3

Care este rolul si cum functioneaza un PID control?

#31 Useril este offline   hash84 

  • DreamTeam member
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 2183
  • Inregistrat: 28-November 06
  • Gender:Male
  • Location:Bucuresti

Postat 25 January 2015 - 04:22 PM

inca nu ai citit suficient :)
asteapta mai bine sa vine jucariile si apoi experimentezi si ne tii la curent :).
eu lucrez la un pendul invers rotativ, dar nu imi vine sa investesc bani intr-un servo mega rapid. gen vreo 80 euro.
    /------------------------\              |~~\_____/~~\__  |
    |        Hash84          |______________ \______====== )-+
    |                        |                      ~~~|/~~  |
    \------------------------/                         ()
0

#32 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 14 February 2015 - 02:51 PM

Va salut, mi-au venit ieri ultimele parturi (mai putin bateria si elicile de 9443 sunt inca pe drum) .

Pana una alta m-am pus sa asamblez cat de cat drona, am fost asa nerabdator sa-i dau in gura la un motor cu elice (10x4.5) incat uitasem sa strang piulita si mi-a zburat elicea n`freza :D




http://s4.postimg.org/mn2v0subt/10960390_930051323695971_8938670821176946920_o.jpg

momentan lucrez la un frame de lemn pt joaca cu PID-urile, insa am cateva intrebari legate de throttle la motoare.

am atasat mai jos niste poze cu diferite moduri de control la motoare, sunt ok turatiile gandite?

throttle motor1 = throttle_primar + pitch_offset - roll_offset - yaw_offset

throttle motor2 = throttle_primar + pitch_offset + roll_offset + yaw_offset

throttle motor3 = throttle_primar - pitch_offset + roll_offset - yaw_offset

throttle motor4 = throttle_primar - pitch_offset - roll_offset + yaw_offset

throttle primar - vine din telecomanda

roll,pitch si yaw ofsets sunt iesirile unor pid-uri in care imi intra semnalele (Setpoints) din telecomanda si feedback vine din IMU, roll/pitch/yaw angles

Esc-urile sunt cu firmware simonk

Este gandit corect pana aici?

In imagini turatiile mai mari sunt cu rosu notate

http://s15.postimg.org/hy1ndz1dj/turn_left.jpg
http://s10.postimg.org/j1d6mbwit/turn_right.jpg
http://s30.postimg.org/8xdznidvh/yaw_left.jpg
http://s4.postimg.org/vl1tmr7ux/yaw_right.jpg
http://s29.postimg.org/c88ymsvzn/pitch_down.jpg
http://s4.postimg.org/vaub3et8p/pitch_up.jpg

Aceasta postare a fost editata de moro696: 14 February 2015 - 02:53 PM

0

#33 Useril este offline   renatoa 

  • Sky Sapiens
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 19176
  • Inregistrat: 28-April 05
  • Gender:Male

Postat 14 February 2015 - 04:03 PM

Nu stiu daca exista vreo argumentatie logica, dar "lumea" din cate stiu eu foloseste sensuri opuse celor alese de tine.

Termenul corect pentru turn este roll, platforma nu va face un viraj, ci se va inclina (si deplasa lateral)
... cu picioarele pe pamant ...
0

#34 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 14 February 2015 - 08:42 PM

Va salut,

da am observat ca sensul ales, nu este unul comun, am refacut desenul si am atasat mai jos ( rosu arata o crestere in turatie/throtlle).

http://s1.postimg.org/98am6g56n/drone_thrusts.png

Intre timp am aruncat un ochiu pe ceva firmware scris pt Arduiono care imi confirma ecuatiile acelea

https://github.com/b.../FlightCtrl.ino

 int m0_val=throttle+PIDroll_val+PIDpitch_val+PIDyaw_val;
int m1_val=throttle-PIDroll_val+PIDpitch_val-PIDyaw_val;
int m2_val=throttle+PIDroll_val-PIDpitch_val-PIDyaw_val;
int m3_val=throttle-PIDroll_val-PIDpitch_val+PIDyaw_val;
analogWrite(MOTOR0,m0_val);
analogWrite(MOTOR1,m1_val);
analogWrite(MOTOR2,m2_val);
analogWrite(MOTOR3,m3_val);


Mai ramane sa fac o`tzârã matematica si sa construiesc o rama de lemn sau ceva tije prin casa, sa pot ancora pe x si y drona sa vad cum lucreaza pid-ul, mai tre sa construiesc si un convertor ac-dc de 100A la 12V... pt teste
Saptamana asta sper sa iasa ceva

Aceasta postare a fost editata de moro696: 14 February 2015 - 08:43 PM

0

#35 Useril este offline   renatoa 

  • Sky Sapiens
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 19176
  • Inregistrat: 28-April 05
  • Gender:Male

Postat 14 February 2015 - 10:28 PM

Nu trebuie rama, merge si tinut cu mana. Apuci placa centrala zdravan il turezi si il lasi sa se ridice de la sol cativa cm, este suficient ca sa poti vedea tot. Daca sensurile sunt bune, daca elicile sunt puse corect, daca lucreaza giro-urile, si ai PID sub valorile de oscilatie.

Uite, am pus o filmare cam cum procedez eu intotdeauna cu o bestie nous, e adevarat, cu un soft verificat de altii inainte :)
http://youtu.be/lMxY0vnMasw

Daca are tendinta de rasurnare, adica cel putin unul din motoare nu se ridica, te opresti si cauti cauza, nu este din PID-uri.
Daca are tendinte de oscilatie, cobori p-urile.
Daca a parasit pamantul cu toate 4 motoarele, dar are tendinta usoara de drift, trimezi din statie.
Daca pare stabil pe toate axele incerci sa ii cobori fortat fiecare brat pe rand si urmaresti daca giro lucreaza bine compensand prin cresterea turatiei.
Daca ai trecut de toate astea... iesi la zbor, lasa matematica :)
... cu picioarele pe pamant ...
0

#36 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 08 March 2015 - 07:46 PM

Va salut,
am revenit dupa cateva experimente esuate, in sensul ca nu pot stabiliza axa.
Am incercat deocamdata cu cadrul legat pe o tija prinsa la capeti, si m-am jucat cu o axa (2 motoare)

Motoarele + elicile se rotesc in sensul care trebuie.

Insa din experienta voastra, cam ce procentaj din throttle compenseaza pid-ul? Stiu ca asta variaza in functie de gain.

Semnalul pt motoare este compus asa

throttle vine din telecomanda
xEulerAngles are valori intre 1.5(pitch 90grade), 0(centrat) si -1.5 (pitch -90 grade)


throtPitch=updatePID(0.0, xEulerAngles.m_fPitch, deltaTime200Hz); - am setat referinta ca fiind 0 grade

pwm1=throtlle-throtPitch;
pwm2=throtlle+throtPitch;

motor1PWM(pwm1); // 1000min - 2000 max
motor2PWM(pwm2); // 1000min - 2000 max

Aceasta postare a fost editata de moro696: 08 March 2015 - 07:49 PM

0

#37 Useril este offline   renatoa 

  • Sky Sapiens
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 19176
  • Inregistrat: 28-April 05
  • Gender:Male

Postat 08 March 2015 - 07:58 PM

Experienta noastra ? :) esti primul si singurul care si-a propus sa isi faca propriul controller :)

Pai P-ul exact asta stabileste, cat de tare sa fie contracarata eroarea ... nu e chiar procent, dar un factor de proportionalitate cu thr este.
... cu picioarele pe pamant ...
0

#38 Useril este offline   hash84 

  • DreamTeam member
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 2183
  • Inregistrat: 28-November 06
  • Gender:Male
  • Location:Bucuresti

Postat 08 March 2015 - 09:15 PM

Vezi postareamoro696, la 08 March 2015 - 07:46 PM, a spus:

Insa din experienta voastra, cam ce procentaj din throttle compenseaza pid-ul?

experienta nu avem, dar putem gandi impreuna :)

in primul rand in ce fel incerci sa stabilizezi axa ?
giro (axa trebuie sa mentina un unghi fix pe care il comanzi tu cu telecomanda)
sau level (axa revine la orizontala cand stickul e lasat pe pozitia de mijloc) ?
teoretic, din throtPitch=updatePID(0.0, xEulerAngles.m_fPitch, deltaTime200Hz);
deduc ca folosesti level mode, pt ca ai dat o referinta 0.0

xEulerAngles.m_fPitch ar trebui sa fie inclinarea jucariei nu ?
deltaTime200Hz = perioada esantionare ?
baga codul intreg de la updatePID()

ce face mai exact axa ? cum se comporta ?
    /------------------------\              |~~\_____/~~\__  |
    |        Hash84          |______________ \______====== )-+
    |                        |                      ~~~|/~~  |
    \------------------------/                         ()
0

#39 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 08 March 2015 - 10:37 PM

float KP, KI, KD;
float iTerm;
float windupGuard;
float lastState;
float dTerm1;
float dTerm2;
uint8_t mtype;

float constrain(float input, float minValue, float maxValue)
{
if ( input < minValue ) return minValue;
else if ( input > maxValue ) return maxValue;
else return input;
}





float updatePID(float command, float state, float deltaT)
{
float error;
float dTerm;
float dSum;
float iterm;

error = command - state;

if (mtype == 1)
error = standardRadianFormat(error);

iTerm += error * deltaT;
iTerm = constrain(iTerm, -windupGuard, windupGuard);

dTerm = (state - lastState) / deltaT;

lastState = state;

dSum = dTerm + dTerm1 + dTerm2;
dTerm2 = dTerm1;
dTerm1 = dTerm;

return(KP * error) + (KI * iTerm) - (KD * dSum);
}

si astea doua imi sunt buclele din main loop

if(frame_100Hz==1){ // loop de 100hz in care citesc doar senzorii...
frame_100Hz=0;
GPIO_ToggleBits(GPIOD, GPIO_Pin_14);
Lsm303dlhcMagReadMag(fMagXYZ);
L3gd20ReadAngRate(fGyroXYZ);
Lsm303dlhcAccReadAcc(fAccXYZ);
}

if(frame_200Hz==1){ frame_200Hz=0; // loop de 200hz
currentTime = micros();
deltaTime200Hz = currentTime - previous200HzTime;
previous200HzTime = currentTime;



fpitch = sprintf(tpitch,"%0.1f",xEulerAngles.m_fPitch* 180.0f/3.141592f);
froll = sprintf(troll,"%0.1f",xEulerAngles.m_fRoll * 180.0f/3.141592f);
fyaw = sprintf(tyaw,"%0.1f",xEulerAngles.m_fYaw * 180.0f/3.141592f);


if (TM_NRF24L01_DataReady()) { TM_NRF24L01_GetData(dataIn);}
myremote(dataIn, remoteCh); // procesarea stringului de pe wireless


throtlle=(remoteCh[1]); // semnalu de trothle de pe wireless

throtPitch=updatePID(0.0, xEulerAngles.m_fPitch, deltaTime200Hz);

pwm1=throtlle-throtPitch;
pwm2=throtlle+throtPitch;

motor1PWM(pwm1); // 1000 - 2000 range
motor2PWM(pwm2); // 1000 - 2000 range

lcd_char(1,1,"Throttle:");
sprintf(ch1,"%0.1f",throtlle); // Throttle
lcd_char(1,12,ch1);

lcd_char(2,1,"PWM1:");
lcd_char(3,1,"PWM2:");
sprintf(ch4,"%u",pwm2); // PWM Motor nr 2
lcd_char(3,6,ch4);
sprintf(ch4,"%u",pwm1);// PWM Motor nr 1
lcd_char(2,6,ch4);
sprintf(ch4,"%0.1f",throtPitch);
lcd_char(2,12,ch4);

}


asta este rutina de pid

Jucaria intradevar cand o inclin, simt ca creste turatia la un motor, si scade la celaltalt. Dar nu compenseaza cat ar trebui

I-am dat la un momnet dat Kp 100, dar mai tre sa experimentez.. sper maine seara sa reusesc ceva
0

#40 Useril este offline   hash84 

  • DreamTeam member
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 2183
  • Inregistrat: 28-November 06
  • Gender:Male
  • Location:Bucuresti

Postat 08 March 2015 - 10:51 PM

Codul pare in regula.
Daca tu ai kp=100 atunci corectia maxima aplicata unui motor cand axa este la verticala va fi de 1500+ un pic throtlle.
Dexi iti trebuie kp un pic mai mare
Nu ar strica sa adaugi si un pic de componenta integrativa. Ia pune si un ki=10
    /------------------------\              |~~\_____/~~\__  |
    |        Hash84          |______________ \______====== )-+
    |                        |                      ~~~|/~~  |
    \------------------------/                         ()
0

#41 Useril este offline   hash84 

  • DreamTeam member
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 2183
  • Inregistrat: 28-November 06
  • Gender:Male
  • Location:Bucuresti

Postat 09 March 2015 - 08:22 AM

Vezi postareahash84, la 08 March 2015 - 10:51 PM, a spus:

Daca tu ai kp=100 atunci corectia maxima aplicata unui motor cand axa este la verticala va fi de 1500+ un pic throtlle.

matematica asta bate-o vina, si orele tarzii.
deci sa zicem ca ai o eroare de 0.2;
outputul va fi KP * 0.2; daca ai KP=100 atunci outputul va fi throttle + 20. nu prea o sa simti mare branza. deci ar trebui un KP de 7-800 ca sa simti ceva si sa nu fie prea violent cand o sa ai inclinari mari.
acum e doar de teste. fa cumva astfel incat sa poti schimba valoarea KP online, din pc sau altceva, si daca ai putea sa ai un fel de slider ar fi cel mai indicat sa vezi live evolutia sistemului.
succes si sa nu iti prinzi mainile in elici ;)
    /------------------------\              |~~\_____/~~\__  |
    |        Hash84          |______________ \______====== )-+
    |                        |                      ~~~|/~~  |
    \------------------------/                         ()
0

#42 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 10 March 2015 - 07:43 AM

Va salut, m-am jucat aseara vreo 2 ore cu ea, incercand s-o stabilizez...
Parca incerc sa-l imblanzesc pe dracu... asa tare se agita.
Am incercat cu KP 50 si I, D pe 0, nu statea in echilibru si simteam zvacniri violente in turatie.
Apoi am incercat cu gain de 400 , i si d pe 0, zvacnirile erau mai violente, daca luam mana de pe cadru, incepea sa oscileze violent, la fel si pe kp de 800
Acum stau si ma gandesc daca buba e in alta parte... Elicile nu le-am probat sa vad daca is balansate, motoarele momentan is niste emax-uri de 1200kv, iar elicile`s de 10x45.
Ma gandesc ca ea tre sa stea in echilibru cu un throttle fix din telecomanda, am incercat sa-i dau throttle undeva la 1400 cat de cat fix.
Senzorul vad ca este destul de sensibil la vibratii.
Am incercat si cu I de 1 si la fel face..

Incepe sa devina interesant
0

#43 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 10 March 2015 - 09:38 PM

Va salut, nici astazi nu am reusit s-o aduc in echilibru.

Incep sa cred ca motoarele mele sunt miezul problemei, cand dau turatie mai mare, acestea vibreaza destul de tare...

Am incercat sa-mi setez Output-ul senzorilor gyro/acc chiar si la 10 hz si tot am vibratii mari, ba chiar o refiltrare cu filtru 4th order HPF

Poate ca am deschis cutia pandorei odata cu ambitia mea, insa planuiesc sa schimb motoarele sa nu mai fie tip clopot , adica cu axul fixat doar la un capat (corectati-ma daca gresesc), si sa folosesc un motor cu rotor intern prins in doua puncte .

Am incercat pana si prinderea motorului intr-o bucata mare de MDF cu suruburi, si deja de la 1600 in sus vad axul cum vibreaza destul de serios

De curiozitate, ati avut probleme de genul la motoare tip clopot?
0

#44 Useril este offline   hash84 

  • DreamTeam member
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 2183
  • Inregistrat: 28-November 06
  • Gender:Male
  • Location:Bucuresti

Postat 10 March 2015 - 09:56 PM

Vezi postareamoro696, la 10 March 2015 - 09:38 PM, a spus:

De curiozitate, ati avut probleme de genul la motoare tip clopot?

cand ti-am zis ca ai mult de citit....
motoarele toate se echilibreaza. si elicile la fel.
eu fac echilibrare dinamica a lucrurilor in felul urmator.
iei o bucata de banza izoliera si o pui pe una din palele elicii cam pe la mijloc. pornesti motorul, si vezi cum vibreaza. mai tare sau mai incet ca inainte.
daca vibreaza mai tare, muti band pe pala cealalta. o sa vibreze mai incet. muti banda mai sus sau mai aproape de axul elicii, tot facand incercari, pana obtii vibratii minime.
in felul asta echilibrezi ansamblul elice motor. daca desfaci elicea, si o sa o pui in alta pozitie fata de motor, trebuie sa reiei procedeul :).

placa se prinde de cadru prin scoci dublu adeziv din ala mai gros. eu cu asta am obtinut rezultate mai bune. a atenuat cel mai bine vibratiile
    /------------------------\              |~~\_____/~~\__  |
    |        Hash84          |______________ \______====== )-+
    |                        |                      ~~~|/~~  |
    \------------------------/                         ()
0

#45 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 10 March 2015 - 10:19 PM

O sa incerc maine metoda ta, trucu asta cu banda pe elice e nou pt mine. Oricum mi-am comandat si un "prop balancer". Nu mai fac nimic cu pid pana nu reduc cel putin "ochiometric" vibratile
0

#46 Useril este offline   renatoa 

  • Sky Sapiens
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 19176
  • Inregistrat: 28-April 05
  • Gender:Male

Postat 10 March 2015 - 10:26 PM

Aproape toate motoarele sunt clopot si prinse in doi rulmenti, poate nu iti este matale asa de evident pe unde sunt pusi, dar sunt acolo.

Unul din secrete este sa montezi elicea chiar pe clopot, nu in aer. este suficient 5-10mm de ax liber golas, intre clopot si montura elicii, ca va vibra si daca este superechilibrat totul... e un fenomen de rezonanta mai curand, nu vibratie.

Iar elicile de 10 la 1200kv sunt prea mari, trebuia de 8-9"
... cu picioarele pe pamant ...
0

#47 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 11 March 2015 - 06:09 AM

Minunat... am undeva la 8-10mm distanta intre clopot si conul piulitei , e ok daca mai tai din lungimea axului?

Asa arata piulitele pt elici http://thumbs4.ebays...Np6DetOmb9Q.jpg

Legat de elici, trebuie sa merg la vama dupa elicile 9443 de la HK, iar motoare ma gandeam sa trec pe ceva gen sunnysky a2212 de 980kv, sau ce motor imi recomandati pt elici 10-9 " ? Ma gandesc ca un kv mai mic ofera vibratii ceva mai mici
0

#48 Useril este offline   renatoa 

  • Sky Sapiens
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 19176
  • Inregistrat: 28-April 05
  • Gender:Male

Postat 11 March 2015 - 10:07 AM

Da, axul se taie, atat cat sa vina penseta la marginea conului, sa se sprijine pe el, nu lasi nici 1 mm aer acolo.

Daca ai luat 9443, atunci zic ca cel mai bun match sunt clonele de DJI E300 de la rctimer, SL2212 920kv

In Bucuresti le are EBA, le poti vedea la lucru la el.

Aceasta postare a fost editata de renatoa: 11 March 2015 - 10:08 AM

... cu picioarele pe pamant ...
0

#49 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 11 March 2015 - 07:48 PM

Am o intrebare legata de aceste motoare, am vazut ca sunt clone peste tot.

Dar axul motorul are un "shtift" facut in circumferinta axului, specific la unele elici Dji.

Acum eu am elici cu gaura rotunda (universal hole).

Sa-mi fac griji in privinta fixarii elicei datorita acelui shtift la motoare?
0

#50 Useril este offline   renatoa 

  • Sky Sapiens
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 19176
  • Inregistrat: 28-April 05
  • Gender:Male

Postat 11 March 2015 - 07:52 PM

Care elice "le ai" ? Caci 9443 au gaura ovala, sunt specifice DJI !

Si ce clone ai mai vazut, eu le stiu doar pe cele de la rctimer... :unsure:
... cu picioarele pe pamant ...
0

#51 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 11 March 2015 - 08:03 PM

motoare http://www.aliexpres...2275914092.html

elici https://www.hobbykin...W_2pcs_bag.html
0

#52 Useril este offline   renatoa 

  • Sky Sapiens
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 19176
  • Inregistrat: 28-April 05
  • Gender:Male

Postat 11 March 2015 - 08:08 PM

Elicile alea sunt, cu gaura ovala, nu merg la actualele 2212 decat sa le strangi asa aproximativ la ochi centrate.

De motoare nu stiu ce sa zic, ieftine rau, nu prea cumpar de pe Ali, acolo este floarea noname-ului, plus ca nu accepta paypal.
... cu picioarele pe pamant ...
0

#53 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 11 March 2015 - 08:39 PM

O sa le comand de la mama firma, direct de pe site-ul rctimer.
Oricum cf-urile astea erau ceva provizoriu.
Numa bine ca au si piulite ccw si cw.
O sa revin pe acest topic cand imi vin motoarele
0

#54 Useril este offline   Zen 

  • MEGA Membru
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 1185
  • Inregistrat: 14-January 09
  • Gender:Male
  • Location:Galati

Postat 17 March 2015 - 03:45 PM

Un multicopter clar nu e platforma potrivita pentru a invata despre PID. In primul rand datorita complexitatii controlului, in al 2-lea rand datorita intolerantei la erori.
Chiar daca stii si ai inteles teoria PID, mai e destul trial & error pana faci ceva functional, asa ca o platforma buna de inceput si "iertatoare" este un line-follower, dupa care poti trece la un robotel gen segway si abia apoi la chestii zburatoare.

La zburatoare mai e nevoie si de o filtrare robusta pe IMU datorita vibratiilor de la elice. Bineinteles acestea pot fi mult reduse cu o echilibrare buna insa este imposibil sa fie reduse in totalitate chiar si cu o echilibrare perfecta.
De ce? Raspunsul sta in principiul conservarii momentului de intertie. Matematica este destul de complicata dar efectul poate fi usor observat: Orice schimbare a inclinatiei axei de rotatie unei elice va produce vibratii.
Efectul este extrem de pronuntat pentru 2 pale (elicea clasica) si mult mai putin pronuntat pentru 3 sau mai multe pale. Daca avem un disc uniform nu mai avem vibratii ci doar simpla rezistenta continua la schimbarea axei.
Cum schimbarea axei de rotatie a elicei vine odata cu schimbarea inclinatiei unui multicopter, este evident inevitabila.


Cateva explicatii intuitive despre sistemul PID:

Sa consideram pentru inceput doar un sistem PD, acesta este perfect analogic cu un resort pus in paralel cu un amortizor (adica exact un arc cu telescop de la suspensia unui automobil).
Resortul este componenta P iar lungimea lui naturala este target-ul sistemului. Orice alungire sau comprimare a lui va determina o forta proportionala in sensul opus (F = k*x, x fiind termenul eroare). Sistemele care nu au inertie (mecanica, termica, etc.) pot folosi doar un sistem P. Dar stim ca daca atasam o masa la resort, acesta va oscila la nesfarsit dupa cu prima perturbatie, deci sistemele care au inertie au nevoie de ceva in plus.
Aici intervine amortizorul, componenta D care vrem sa amortizeze oscilatia in timp cat mai scurt. Acesta functioneaza exercitand o forta de rezistenta proportionala cu viteza de miscare (F = -b* dx/dt, se demonstreaza afland solutia ecuatiei diferentiale care rezulta ca oscilatia va fi amortizata).
Deci daca avem constantele k si b reglate potrivit pentru inertia sistemului (echivalenta cu m - masa) atunci avem un sistem corectat si stabil.

Insa in mai multe cazuri doar PD nu e suficient, cand deviatii mici dar persistente sunt de nedorit.
De exemplu intr-un automobil, resortul din suspensie nu sta la lungimea lui naturala ci comprimat la o anumita deviatie dependenta de incarcare.
Daca este nevoie sa minimizam aceasta deviatie absoluta, am putea folosi resorturi mai tari (coeficient P mai mare, insa metoda asta este limitata de materiale si introduce probleme mai mari de oscilatie)
sau am putea adauga un sistem activ de reglare a suspensiei pentru a o mentine pe termen lung la nivelul dorit (garda la sol).
Acest subsistem activ, componenta I, nu are un echivalent mecanic simplist insa nu este greu de inteles matematic. El integreaza eroarea in timp (o aduna in permanenta) astfel incat deviatiile pe termen scurt de care se ocupa PD-ul nu au vreo influenta,
insa deviatiile mici care treg "nevazute" de componenta P sunt detectate de componenta I care isi adauga contributia corespunzatoare. Aceasta corectie vine insa cu intarziere si deci are tendinta de a determina o oscilatie lenta care este mai greu de amortizat,
deci coeficientul nu trebuie sa fie prea mare desigur.



Vezi postareamoro696, la 25 January 2015 - 03:12 PM, a spus:

intre timp m-am apucat de constructia modulelor wireless pentru telecomanda si receptor

http://s15.postimg.org/d15mpzthj/lol.jpg

E de apreciat pcb-ul homemade dar cand e vorba de RF de ordinul GHz... n-o sa-ti iasa in veci la nivelul asteptarilor (range). Mai bine cumperi un modul cu chip-ul respectiv pe care sa-l integrezi in pcb-ul tau.

Aceasta postare a fost editata de Zen: 17 March 2015 - 03:50 PM

It's difficult to make things simple!
0

#55 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 08 May 2015 - 06:27 PM

rc timer 2212/920kv + elici 9443 din carbon. I-am dat in gura niste throttle si intradevar nu mai am acele vibratii, amu ne apucam de PID`uri.

Wish me luck :spiteful: =@
0

#56 Useril este offline   Elicopter 

  • Membru de onoare
  • PipPipPipPipPipPip
  • Grup: Members
  • Postari: 565
  • Inregistrat: 02-December 02
  • Gender:Male
  • Location:Alba Iulia

Postat 08 May 2015 - 08:20 PM

Eu din ce am incercat am pus i mai mare ca valoare ca si p , si d o valoare mica , pentru c contracra cat de cat redresarea .
Ceea ce cauti aceea gasesti
0

#57 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 09 May 2015 - 05:56 PM

Va salut, am revenit cu vesti ceva mai bune.
Fata de ultimul setup de acum 2 luni, nu mai am vibratii asa mari.
Totusi am ceva overshoot la senzori, momentan trimit tot in matlab, am pus pe iesirile accelerometrului un filtru de ordin 4 inainte de fuziune cu gyro. Pe monitor arata mult mai bine ( cu drona nemiscata)

Mai jos este o comparatie cu unghiul de pe pitch :db:

Imaginea din dreapta este fara filtru

Acum am prins destul de sanatos placuta cu gyro,acc si mag de cadru. Iar motoarele le-am asezat cauciuc intre cadru si acestea.

Astept sa se incarce bateria si reincep testele (incepe sa-mi placa in cutia pandorei)

Thumbnail atasat

  • Imagine atasata: Untitled.png

0

#58 Useril este offline   hash84 

  • DreamTeam member
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 2183
  • Inregistrat: 28-November 06
  • Gender:Male
  • Location:Bucuresti

Postat 11 May 2015 - 08:03 AM

zboara domne ?
    /------------------------\              |~~\_____/~~\__  |
    |        Hash84          |______________ \______====== )-+
    |                        |                      ~~~|/~~  |
    \------------------------/                         ()
0

#59 Useril este offline   moro696 

  • Membru
  • PipPipPipPip
  • Grup: Members
  • Postari: 163
  • Inregistrat: 01-January 15
  • Gender:Male
  • Location:Timisoara

Postat 11 May 2015 - 07:09 PM

Mai e pana sa zboare, nu reusesc sa stabilizez axele, incepe sa oscileze usor pana face ca nebuna.

Inca am vibratii mari pe senzori, elicile sunt echilibrate, m-am uitat la motoare sa vad daca vibreaza ( "ochiometric"), par ok.

Mi-am comandat un "damping platform" cu "bile" de cauciuc sa tina placuta cu senzori, numa dureaza pana ajung...

Si vreau sa pun ceva cauciuc intre motoare si cadru cu suruburi putin mai lungi..

Sper eu vara asta s-o fac sa zboare, se face aproape 1 an de cand am inceput softul
0

#60 Useril este offline   hash84 

  • DreamTeam member
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 2183
  • Inregistrat: 28-November 06
  • Gender:Male
  • Location:Bucuresti

Postat 11 May 2015 - 07:58 PM

Deci.
1. Se echilibreaza ansamblul elice motor. Nu separat! Aplici metoda cu banda Izoliera. Elicea trebuie sa fie cat mai aproape de clopotul motorului. O poti prinde cu soricei. Ia pune o poza cu partea de sus a motorului.
2. Du-te in hornbach ia niste bare patrate de aluminiu si fa un cadru cum am facut eu. Cauta in sectiunea de aeromodelism, multicoptere. totul trebuie sa fie foarte rigid ! Daca ai ceva moale in sistem va intra in oscilatii. Ce ti se intampla tie acum.
3. Motoarele se prind de cadru cu suruburi cat mai scurte si le stragi foarte bine. Fara cauciuc sau alte improvizatii.
4. Placa se prinde cu doua straturi de dubluadeziv de centrul cadrlui. Nu fa alte minuni ca nu o sa mearga! Nu incerca sa reinventezi apa calda !
5. Am doua posturi pe forum cu cadre de multicoptere. Vezi acolo ce am facut eu. A functionat !
    /------------------------\              |~~\_____/~~\__  |
    |        Hash84          |______________ \______====== )-+
    |                        |                      ~~~|/~~  |
    \------------------------/                         ()
0

Arata acest topic


  • 3 Pagini +
  • 1
  • 2
  • 3

10 useri citesc topicul
0 membri, 10 vizitatori, 0 utilizatori anonimi

913Creative.ro