Cuprins:

Robot de autoechilibrare - Algoritm de control PID: 3 pași
Robot de autoechilibrare - Algoritm de control PID: 3 pași

Video: Robot de autoechilibrare - Algoritm de control PID: 3 pași

Video: Robot de autoechilibrare - Algoritm de control PID: 3 pași
Video: Балансировочный робот с ПИД — печатная плата мини-робота 2024, Decembrie
Anonim
Robot de autoechilibrare - algoritm de control PID
Robot de autoechilibrare - algoritm de control PID

Acest proiect a fost conceput pentru că eram interesat să aflu mai multe despre algoritmii de control și cum să implementez în mod eficient bucle PID funcționale. Proiectul este încă în faza de dezvoltare, deoarece încă nu trebuie adăugat un modul Bluetooth, care va permite controlul asupra robotului de pe un smartphone cu Bluetooth.

Motoarele de curent continuu N20 utilizate erau relativ ieftine și, prin urmare, au o cantitate considerabilă de joc în ele. Acest lucru duce la o cantitate mică de smucitură pe măsură ce motoarele depășesc „slăbiciunea”, deoarece aplică cuplul pe roți. Prin urmare, este aproape imposibil să realizezi o mișcare perfectă. Codul pe care l-am scris este destul de simplu, dar demonstrează în mod eficient capacitățile algoritmului PID.

Sumarul proiectului:

Șasiul robotului este imprimat 3D folosind o imprimantă Ender 3 și este proiectat pentru a se potrivi împreună.

Robotul este controlat de un Arduino Uno care preia datele senzorilor de la MPU6050 și controlează motoarele de curent continuu printr-un driver de motor extern. Funcționează cu o baterie de 7.4V, 1500mAh. Șoferul motorului reglează acest lucru la 5V pentru a alimenta Arduino și furnizează 7,4V motoarelor.

Software-ul a fost scris de la zero cu ajutorul bibliotecilor „Arduino-KalmanFilter-master” și „Arduino-MPU6050-master” de la gitHub.

Provizii:

  • Piese imprimate 3D
  • Arduino UNO
  • Senzor MPU6050 cu 6 axe
  • Driver motor DC
  • Motoare N20 D. C (x2)
  • Baterie de 9V

Pasul 1: Construirea robotului

Construirea robotului
Construirea robotului
Construirea robotului
Construirea robotului
Construirea robotului
Construirea robotului

Tipărire și asamblare

Întreaga construcție ar trebui să se potrivească la presare, dar am folosit superglue pentru a fixa componentele, pentru a vă asigura că robotul este complet rigid atunci când se echilibrează.

Am proiectat piesele din Fusion 360 și am optimizat fiecare piesă pentru a imprima fără suporturi pentru a permite toleranțe mai strânse și o finisare mai curată a suprafeței.

Setările utilizate pe imprimanta Ender 3 au fost: 0,16 mm Layer Heights @ 40% umplutură pentru toate piesele.

Pasul 2: Robot de imprimare 3D

Robot de imprimare 3D
Robot de imprimare 3D

Șasiu (x1)

Roata stângă (x2)

Carcasa motor stânga (x2)

Carcasa Arduino (x1)

Pasul 3: Algoritm de control PID

Algoritm de control PID
Algoritm de control PID

Am scris un algoritm de control PID de la zero folosind bibliotecile „Arduino-KalmanFilter-master” și „Arduino-MPU6050-master” de pe gitHub.

Premisa algoritmului este următoarea:

  • Citiți datele brute de la MPU6050
  • Utilizați filtrul Kalman pentru a analiza datele atât din giroscop, cât și din accelerometru pentru a anula inexactitățile din citirile giroscopului datorită accelerării senzorului. Aceasta returnează o valoare relativ netedă pentru pasul senzorului în grade cu două zecimale.
  • Calculați eroarea în unghi, adică unghiul dintre senzor și punctul de referință.
  • Calculați eroarea proporțională ca (constantă de proporționalitate x eroare).
  • Calculați Eroarea integrală ca suma de executare a (constantă de integrare x eroare).
  • Calculați eroarea derivată la fel de constantă ca [(Constantă de diferențiere) x (Modificare eroare / Modificare timp)]
  • Sumați toate erorile pentru a da viteza de ieșire care trebuie trimisă motoarelor.
  • Calculați ce direcție să rotiți motoarele pe baza semnului unghiului de eroare.
  • Bucla va rula la nesfârșit și se va construi pe ieșire pe măsură ce intrarea variază. Este o buclă de feedback, utilizând valorile de ieșire ca noile valori de intrare pentru următoarea iterație.

Pasul final este de a regla parametrii buclei PID Kp, Ki și Kd.

  1. Un bun punct de plecare este să crești încet Kp până când robotul oscilează în jurul punctului de echilibru și poate prinde o cădere.
  2. Apoi, porniți Kd cu aproximativ 1% valoarea Kp și creșteți încet până când oscilațiile dispar și robotul alunecă ușor atunci când este împins.
  3. În cele din urmă, începeți cu Ki în jur de 20% din Kp și variați până când robotul „depășește” punctul de referință pentru a prinde în mod activ o cădere și a reveni la verticală.

Recomandat: