Cuprins:
- Pasul 1: Introducere
- Pasul 2: Sistem de control bazat pe PID
- Pasul 3: Robot de auto-echilibrare
- Pasul 4: Proiectarea robotului
- Pasul 5: Componentele proiectului
- Pasul 6: Structura robotului
- Pasul 7: Cod
- Pasul 8: Concluzie
- Pasul 9: Mulțumiri speciale
Video: Robot de auto-echilibrare folosind algoritmul PID (STM MC): 9 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Recent s-a făcut multă muncă în echilibrarea de sine a obiectelor. Conceptul de auto-echilibrare a început cu echilibrarea pendulului inversat. Acest concept s-a extins și la proiectarea de aeronave. În acest proiect, am proiectat un mic model de robot de auto-echilibrare utilizând algoritmul PID (proporțional, integral, derivat). De atunci, această metodă este noua față a sistemelor de control al proceselor industriale. Acest raport analizează metodele implicate în autoechilibrarea obiectelor. Acest proiect a fost realizat ca un proiect semestrial pentru a înțelege corelația PID cu privire la eficiența diferitelor procese industriale. Aici ne concentrăm doar pe furnizarea unei scurte recenzii cu privire la eficacitatea și aplicarea controlului PID. Această lucrare a fost elaborată oferind o scurtă introducere a sistemelor de control și a terminologiilor conexe, în plus față de motivațiile pentru proiect. Au fost luate experimente și observații, meritele și demeritele descrise cu sfârșitul viitoarelor îmbunătățiri. Un model de robot de auto-echilibrare a fost dezvoltat pentru a înțelege eficacitatea PID în lumea sistemului de control. Trecând prin niște teste și experimente riguroase, au fost descoperite meritele și dezavantajele sistemului de control PID. S-a constatat că, în ciuda multor avantaje ale controlului PID asupra metodelor anterioare, totuși acest sistem necesită o mulțime de îmbunătățiri. Se speră că cititorul obține o bună înțelegere a importanței echilibrării de sine, a eficienței și a deficiențelor controlului PID.
Pasul 1: Introducere
Odată cu apariția computerelor și industrializarea proceselor, de-a lungul istoriei omului, au existat întotdeauna cercetări pentru a dezvolta modalități de a rafina procesele și, mai important, pentru a le controla folosind mașini în mod autonom. Scopul este de a reduce implicarea omului în aceste procese, reducând astfel eroarea în aceste procese. Prin urmare, a fost dezvoltat domeniul „Ingineriei sistemelor de control”. Ingineria sistemului de control poate fi definită ca folosind diverse metode pentru a controla funcționarea unui proces sau menținerea unui mediu constant și preferat, fie el manual sau automat.
Un exemplu simplu ar putea fi controlul temperaturii dintr-o cameră. Control manual înseamnă prezența unei persoane la un loc care verifică condițiile actuale (senzor), o compară cu valoarea dorită (procesare) și ia măsurile corespunzătoare pentru a obține valoarea dorită (actuator). Problema cu această metodă este că nu este foarte fiabilă, deoarece o persoană este predispusă la erori sau neglijențe în munca sa. De asemenea, o altă problemă este că rata procesului inițiat de actuator nu este întotdeauna uniformă, ceea ce înseamnă că uneori poate apărea mai repede decât este necesar sau uneori poate fi lent. Soluția acestei probleme a fost utilizarea unui microcontroler pentru a controla sistemul. Microcontrolerul este
programat pentru a controla procesul, conform specificațiilor date, conectat într-un circuit (care va fi discutat mai târziu), a alimentat valoarea sau condițiile dorite și astfel controlează procesul pentru a menține valoarea dorită. Avantajul acestui proces este că nu este necesară nicio intervenție umană în acest proces. De asemenea, rata procesului este uniformă
Sistem de control de bază
Diagrama anterioară arată o versiune foarte simplificată a unui sistem de control. Microcontrolerul se află în centrul oricărui sistem de control. Este o componentă foarte importantă, prin urmare, alegerea sa de selecție ar trebui făcută cu atenție pe baza cerințelor sistemului. Microcontrolerul primește o intrare de la utilizator. Această intrare definește starea dorită a sistemului. Microcontrolerul primește, de asemenea, o intrare de feedback de la senzor. Acest senzor este conectat la ieșirea sistemului, a cărei informație este readusă la intrare. Microprocesorul, pe baza programării sale, efectuează diverse calcule și dă o ieșire actuatorului. Actuatorul, pe baza puterii, controlează instalația pentru a încerca să mențină aceste condiții. Un exemplu ar putea fi un conducător auto care conduce un motor în care conducătorul motorului este actuatorul, iar motorul este instalația. Motorul se rotește astfel la o viteză dată. Senzorul conectat citește starea instalației în prezent și o alimentează înapoi la microcontroler. Microcontrolerul compară din nou, face calcule și astfel ciclul se repetă. Acest proces este repetitiv și fără sfârșit, prin care microcontrolerul menține condițiile dorite
Pasul 2: Sistem de control bazat pe PID
Algoritmul PID este o metodă eficientă de proiectare a unui sistem de control.
Definiție
PID înseamnă Proporțional, Integral și Derivat. În acest algoritm, semnalul de eroare primit este intrarea. Și următoarea ecuație este aplicată semnalului de eroare
U (t) = Kp ∗ e (t) + Kd ∗ d / dt (e (t)) + Ki ∗ integral (e (t)) (1.1)
Scurtă explicație
Așa cum se poate vedea în ecuația de mai sus, integrala și derivata semnalelor de eroare sunt calculate, înmulțite cu constantele lor respective și adăugate împreună cu constanta Kp înmulțită cu e (t). Ieșirea este apoi alimentată către actuator, ceea ce face ca sistemul să funcționeze. Acum să analizăm pe rând fiecare parte a funcției. Această funcție influențează în mod direct timpul de creștere, timpul de cădere, vârful peste tragere, timpul de stabilire și eroarea la starea de echilibru.
• Partea proporțională: partea proporțională reduce timpul de creștere și scade eroarea la starea de echilibru. Acest lucru înseamnă că sistemul va dura mai puțin timp pentru a atinge valoarea sa maximă și când va ajunge la starea sa stabilă, eroarea de stare staționară va fi scăzută. Cu toate acestea, crește depășirea vârfului.
• Partea derivată: partea derivată reduce depășirea și timpul de decontare. Aceasta înseamnă că starea tranzitorie a sistemului va fi mai amortizată. De asemenea, sistemul va atinge starea de echilibru într-un timp mai mic. Cu toate acestea, nu are niciun efect asupra timpului de creștere sau a erorii la starea de echilibru.
• Piesă integrală: piesa integrală reduce timpul de creștere și elimină complet eroarea la starea de echilibru. Cu toate acestea, crește depășirea vârfului și timpul de stabilire.
• Reglare: un sistem de control bun va avea timp de creștere scăzut, timp de stabilire, depășire maximă și eroare la starea de echilibru. Prin urmare, Kp, Kd, Ki trebuie reglate fin pentru a ajusta contribuția factorilor de mai sus pentru a dobândi un sistem de control bun.
A fost atașată figura care arată efectul modificării diferiților parametri în algoritmul PID.
Pasul 3: Robot de auto-echilibrare
Un robot de auto-echilibrare este un robot cu mai multe straturi, cu două roți.
Robotul va încerca să se echilibreze la aplicarea oricărei forțe inegale. Se va echilibra prin aplicarea forței care se opune rezultantei forțelor pe robot.
Metode de echilibrare a sinelui
Există patru metode de auto-echilibrare a roboților. Acestea sunt următoarele:
Auto-echilibrare utilizând două senzori de înclinare IR
Acesta este unul dintre cele mai crude moduri de a echilibra robotul, deoarece necesită foarte puțin hardware și un algoritm relativ ușor. În această abordare, doi senzori IR înclinați sunt utilizați pentru a măsura distanța dintre sol și robot. Pe baza distanței calculate, PID poate fi utilizat pentru a acționa motoarele pentru a echilibra robotul în consecință. Un dezavantaj al acestei metode este că senzorul IR poate pierde unele citiri. O altă problemă este că sunt necesare o întrerupere și bucle pentru calcularea distanței, ceea ce crește complexitatea timpului algoritmului. Prin urmare, această metodă de echilibrare a robotului nu este prea eficientă.
Auto-echilibrare folosind accelerometrul
Accelerometrul ne oferă accelerația corpului în 3 axe. Accelerarea orientată în axa y (în sus) și în axa x (înainte) ne oferă măsura de a calcula direcția gravitației și, prin urmare, de a calcula unghiul de înclinare. Unghiul este calculat după cum urmează:
θ = arctan (Ay / Axe) (1.2)
Dezavantajul utilizării acestei metode este că în timpul mișcării robotului, accelerația orizontală va fi adăugată și la citiri, care este un zgomot de înaltă frecvență. Prin urmare, unghiul de înclinare va fi inexact.
Auto-echilibrare folosind giroscop
Un giroscop este utilizat pentru a calcula viteza angulară de-a lungul celor trei axe. Unghiul de înclinare se obține folosind următoarea ecuație.
θp (i) = θp (i − 1) + 1/6 (vali − 3 + 2vali − 2 + 2vali − 1 + vali) (1.3)
Un mare dezavantaj al utilizării giroscopului este că are un DC Bias mic, care este un zgomot de joasă frecvență și în câteva timp valorile returnate sunt complet greșite. Acest lucru, după integrare, va face ca punctul zero să se îndepărteze. Ca urmare, robotul va rămâne în poziția sa verticală pentru o perioadă de timp și va cădea odată ce va veni deriva.
Auto-echilibrare utilizând atât accelerometru, cât și giroscop
Așa cum s-a discutat mai sus, folosind doar accelerometru sau giroscop nu ne va oferi unghiul corect de înclinare. Pentru a explica acest lucru, se utilizează atât accelerometrul, cât și giroscopul. Ambele sunt încorporate în MPU6050. În aceasta obținem datele de la amândoi și apoi le contopim fie folosind filtrul Kalman, fie filtrul complementar.
• Filtru Kalman: filtrul Kalman calculează cea mai bună estimare a stării unui sistem dinamic din măsurători zgomotoase, minimizând eroarea pătrată medie a estimării. Funcționează în două etape, predicție și corecție, având în vedere ecuațiile discrete stocastice care descriu dinamica sistemului. Cu toate acestea, este un algoritm foarte complex de implementat în special pe un hardware limitat al unui microcontroler.
• Filtru complementar: Acest algoritm utilizează în primul rând datele obținute din giroscop și îl integrează în timp pentru a obține unghiul de înclinare. De asemenea, folosește o mică proporție de citiri ale accelerometrului. Filtrul complementar, de fapt, minimizează zgomotul de înaltă frecvență al accelerometrului și zgomotul de joasă frecvență al giroscopului și apoi fuzionează-le pentru a oferi cel mai bun unghi precis de înclinare.
Pasul 4: Proiectarea robotului
Am proiectat un robot de auto-echilibrare utilizând controlerul derivat proporțional implementat de Filtrul complementar pentru MPU6050. Acest mic model de robot de auto-echilibrare ne va ilustra utilitatea sistemelor de control în auto-echilibrarea roboților.
Implementarea sistemului:
Sistemul este un robot de auto-echilibrare. Este implementat folosind controlerul PID, care este un controler derivat integral proporțional. Echilibrăm robotul acționând roțile în direcția căderii sale. În acest sens, încercăm să menținem centrul de greutate al robotului deasupra punctului de pivotare. Pentru a conduce roțile în direcția căderii sale, ar trebui să știm unde cade robotul și viteza cu care cade. Aceste date sunt obținute folosind MPU6050 care are un accelerometru și un giroscop. MPU6050 măsoară unghiul de înclinare și oferă ieșirea sa către microcontroler. MPU6050 este interfațat cu placa STM prin I2C. În I2C, un fir este pentru ceas, denumit SCL. Celălalt este pentru transferul de date care este SDA. În aceasta, se utilizează comunicarea master slave. Adresa de început și adresa de sfârșit sunt specificate pentru a ști de unde încep datele și unde se termină. Am implementat aici Filtrul complementar pentru MPU6050, care este un filtru matematic pentru îmbinarea ieșirilor accelerometrului și giroscopului. După obținerea datelor de la MPU6050, microcontrolerul va efectua calcule pentru a ști unde cade. Pe baza calculelor, microcontrolerul STM va da comenzi conducătorului motorului pentru a conduce vehiculele în direcția de cădere, ceea ce va echilibra robotul.
Pasul 5: Componentele proiectului
Următoarele componente au fost utilizate în proiectul robotului de auto-echilibrare:
STM32F407
Un microcontroler proiectat de ST Microelectronics. Funcționează pe ARM Architecture Cortex-M.
Driver motor L298N
Acest CI este utilizat pentru a porni motorul. Obține două intrări externe. Unul de la microcontrolerul care îi furnizează un semnal PWM. Reglând lățimea impulsului, viteza motorului poate fi reglată. A doua sa intrare este sursa de tensiune necesară pentru acționarea motorului, care este o baterie de 12V în cazul nostru.
Motor DC
Un motor DC funcționează pe o sursă de curent continuu. În acest experiment, motorul de curent continuu funcționează utilizând optocuploarele conectate la driverul motorului. Pentru a conduce motorul, am folosit Motor Drive L298N.
MPU6050
MPU6050 este folosit pentru a obține informații despre locul în care cade robotul. Măsoară unghiul de înclinare în raport cu punctul de înclinare zero, care este poziția MPU6050 atunci când programul începe să ruleze.
MPU6050 are un accelerometru pe 3 axe și un giroscop pe 3 axe. Accelerometrul măsoară accelerația de-a lungul celor trei axe, iar giroscopul măsoară rata unghiulară în jurul celor trei axe. Pentru a combina rezultatul, trebuie să filtrăm zgomotele ambelor. Pentru a filtra zgomotele, avem Kalman și filtru complementar. Am implementat un filtru complementar în proiectul nostru.
Opto Couple 4N35
Un optocuplator este un dispozitiv folosit pentru a izola partea de joasă tensiune și partea de înaltă tensiune a circuitului. După cum sugerează și numele, funcționează pe baza luminii. Când partea de joasă tensiune primește un semnal, curentul curge în partea de înaltă tensiune
Pasul 6: Structura robotului
Structura robotului este explicată după cum urmează:
Structura fizică
Robotul de auto-echilibrare este format din două straturi formate din sticlă de plastic transparentă. Detaliile a două straturi sunt date mai jos:
Primul strat
În partea de jos a primului strat, am plasat o celulă pentru a alimenta placa STM. De asemenea, două motoare de câte 4 volți au fost amplasate pe fiecare parte cu pneuri conectate pentru ca robotul să se miște. În partea superioară a primului strat, două baterii de câte 4 volți fiecare (8 volți în total) și driverul motorului IC (L298N) au fost amplasate pentru funcționarea motoarelor.
Al doilea strat
În stratul superior al robotului, am plasat placa STM pe placa Perf. O altă placă de perfecțiune cu 4 opto-cuplaje este plasată pe stratul superior. Giroscopul este plasat, de asemenea, pe stratul superior al robotului din partea inferioară. Ambele componente sunt plasate în partea de mijloc, astfel încât centrul de greutate să fie menținut cât mai jos posibil.
Centrul de Gravitate al Robotului
Centrul de greutate este menținut cât mai jos posibil. În acest scop, am pus baterii grele pe stratul inferior și componente ușoare precum placa STM și optocuploare pe stratul superior.
Pasul 7: Cod
Codul a fost compilat pe Atollic TrueStudio. STM studio a fost utilizat în scopuri de depanare.
Pasul 8: Concluzie
După o mulțime de experimentări și observații, ajungem în cele din urmă la punctul în care ne rezumăm rezultatele și discutăm cât de mult am reușit să implementăm și să dezvoltăm eficacitatea sistemului.
Revizuire generală
În timpul experimentării, viteza motorului a fost controlată cu succes folosind algoritmul PID. Cu toate acestea, curba nu este exact o linie dreaptă netedă. Există multe motive pentru aceasta:
• Senzorul, deși este conectat la un filtru de trecere joasă, oferă totuși anumite declarații definitive; acestea se datorează rezistențelor neliniare și unor motive inevitabile ale electronicii analogice.
• Motorul nu se rotește lin sub tensiune mică sau PWM. Oferă sacadări care ar putea provoca unele valori greșite alimentate sistemului.
• Din cauza oscilației, senzorul ar putea pierde unele fante care oferă valori mai mari. • Un alt motiv major pentru erori poate fi frecvența de ceas de bază a microcontrolerului STM. Acest model de microcontroler STM oferă un ceas de bază de 168 MHz. Deși a abordat această problemă în acest proiect, există o noțiune generală despre acest model că nu oferă exact o astfel de frecvență ridicată.
Viteza de buclă deschisă oferă o linie foarte lină, cu doar câteva valori neașteptate. Algoritmul PID funcționează, de asemenea, pentru a asigura un timp de reglare foarte scăzut al motorului. Algoritmul PID al motorului a fost testat sub diferite tensiuni, menținând constantă viteza de referință. Schimbarea tensiunii nu modifică turația motorului, arătând că algoritmul PID funcționează bine
Eficacitate
Aici discutăm despre eficacitatea controlerului PID pe care am observat-o în timpul experimentării.
Implementare simplă
Am văzut în secțiunea de experimentare și observații că un controler PID este foarte ușor de implementat. Este nevoie doar de trei parametri sau constante care trebuie setate pentru a avea un sistem de control al vitezei
Eficiență de neegalat pentru sistemele liniare
Controlerul PID liniar este cel mai eficient din familia controlerelor, deoarece logica este foarte simplă și aplicația este răspândită în cazul aplicațiilor liniare sau destul de liniare.
Limitări
Am explicat în rezumat limitările acestui sistem. Aici discutăm câteva dintre ele pe care le-am observat.
Selectarea constantelor
Am văzut că, deși un controler PID este ușor de implementat, totuși este un dezavantaj major al sistemului faptul că pasul selectării valorii constantelor este unul laborios; deoarece cineva trebuie să facă calcule dificile. Cealaltă modalitate este metoda de încercare și încercare, dar nici aceasta nu este eficientă.
Constantele nu sunt întotdeauna constante
Rezultatele experimentale au arătat că pentru diferite valori ale turației de referință pentru motor, controlerul PID a funcționat defectuos pentru aceleași valori ale constantelor PID. Pentru diferite viteze, constantele trebuiau să fie selectate diferit și acest lucru mărește costul de calcul exponențial.
Neliniar
Controlerul PID utilizat în cazul nostru este liniar, prin urmare, poate fi aplicat numai sistemelor liniare. Pentru sistemele neliniare, controlerul trebuie să fie implementat diferit. Deși sunt disponibile diferite metode neliniare de PID, acestea necesită selectarea mai multor parametri. Acest lucru face din nou sistemul nedorit din cauza costului de calcul ridicat.
Este necesară apăsarea inițială
Am arătat în secțiunea de experimentare că pentru o viteză de referință destul de mică în care eroarea este destul de mică la început, PWM furnizat de PID este atât de mic încât nu generează cuplul de pornire necesar pentru motor. Deci, motorul în unele probe nu funcționează sau în alte probe oferă o depășire mare și un timp de stabilizare mai lung.
Pasul 9: Mulțumiri speciale
Mulțumiri speciale membrilor grupului meu care m-au ajutat în acest proiect.
În curând voi încărca linkul către videoclip.
Sper că veți găsi acest lucru interesant.
Acesta este Tahir Ul Haq de la semnarea UET. Noroc !!!
Recomandat:
DIY -- Cum se face un robot Spider care poate fi controlat folosind un smartphone folosind Arduino Uno: 6 pași
DIY || Cum să faci un robot Spider care poate fi controlat folosind un smartphone Utilizând Arduino Uno: În timp ce faci un robot Spider, poți învăța atât de multe lucruri despre robotică. În acest videoclip vă vom arăta cum să realizați un robot Spider, pe care să îl putem utiliza cu smartphone-ul nostru (Androi
Algoritmul cordic folosind VHDL: 4 pași
Algoritmul cordic care utilizează VHDL: ## Acesta este cel mai clicat, popular link din Google pentru implementarea VHDL a CORDIC ALGORITHM pentru a genera undă sinusoidală și cosinus ## În prezent, există mulți algoritmi eficienți hardware, dar aceștia nu sunt bine cunoscuți din cauza dominația software-ului
Led de control peste tot în lume folosind Internet folosind Arduino: 4 pași
Led de control peste tot în lume folosind internetul folosind Arduino: Bună, eu sunt Rithik. Vom face un led controlat de internet folosind telefonul dvs. Vom folosi software cum ar fi Arduino IDE și Blynk. Este simplu și dacă ați reușit puteți controla cât mai multe componente electronice doriți Lucruri de care avem nevoie: Hardware:
Inteligență artificială de joc de masă: algoritmul Minimax: 8 pași
Inteligența artificială a jocului de masă: algoritmul Minimax: V-ați întrebat vreodată cum sunt fabricate computerele împotriva cărora jucați în șah sau în dame? Ei bine, nu căutați mai departe de acest instructabil, deoarece vă va arăta cum să creați o inteligență artificială (AI) simplă, dar eficientă, utilizând algoritmul Minimax! Prin utilizarea
Controlul vitezei motorului DC folosind algoritmul PID (STM32F4): 8 pași (cu imagini)
Controlul vitezei motorului de curent continuu folosind algoritmul PID (STM32F4): salut tuturor, asta este tahir ul haq cu un alt proiect. De data aceasta este STM32F407 ca MC. Acesta este un proiect de sfârșit de semestru. Sper că vă place. Necesită o mulțime de concepte și teorie, așa că mergem mai întâi în ea. Odată cu apariția computerelor și a