Sommario:

Robot di autobilanciamento - Algoritmo di controllo PID: 3 passaggi
Robot di autobilanciamento - Algoritmo di controllo PID: 3 passaggi

Video: Robot di autobilanciamento - Algoritmo di controllo PID: 3 passaggi

Video: Robot di autobilanciamento - Algoritmo di controllo PID: 3 passaggi
Video: Realizzare un PID con Arduino - parte 1 - #161 2024, Novembre
Anonim
Robot di autobilanciamento - Algoritmo di controllo PID
Robot di autobilanciamento - Algoritmo di controllo PID

Questo progetto è stato concepito perché ero interessato a saperne di più sugli algoritmi di controllo e su come implementare in modo efficace i loop PID funzionali. Il progetto è ancora in fase di sviluppo poiché deve ancora essere aggiunto un modulo Bluetooth che consentirà il controllo del robot da uno smartphone abilitato Bluetooth.

I motori DC N20 utilizzati erano relativamente economici e quindi hanno una notevole quantità di gioco. Ciò porta a una piccola quantità di sobbalzi quando i motori superano il "gioco" applicando la coppia alle ruote. Quindi, è quasi impossibile ottenere un movimento perfettamente fluido. Il codice che ho scritto è ragionevolmente semplice ma dimostra efficacemente le capacità dell'algoritmo PID.

Sintesi del progetto:

Il telaio del robot è stampato in 3D utilizzando una stampante Ender 3 ed è progettato per incastrarsi a pressione.

Il robot è controllato da un Arduino Uno che prende i dati del sensore dall'MPU6050 e controlla i motori CC tramite un driver motore esterno. Funziona con una batteria da 7,4 V, 1500 mAh. Il driver del motore lo regola a 5 V per alimentare Arduino e fornisce 7,4 V ai motori.

Il software è stato scritto da zero con l'ausilio delle librerie "Arduino-KalmanFilter-master" e "Arduino-MPU6050-master" di gitHub.

Forniture:

  • Parti stampate in 3D
  • Arduino UNO
  • Sensore a 6 assi MPU6050
  • Driver del motore CC
  • N20 motori CC (x2)
  • Batteria da 9V

Passaggio 1: costruzione del robot

Costruzione del robot
Costruzione del robot
Costruzione del robot
Costruzione del robot
Costruzione del robot
Costruzione del robot

Stampa e assemblaggio

L'intera costruzione dovrebbe essere press-fit, ma ho usato la supercolla per fissare i componenti per garantire che il robot sia completamente rigido durante il bilanciamento.

Ho progettato le parti in Fusion 360 e ho ottimizzato ogni parte per la stampa senza supporti per consentire tolleranze più strette e una finitura superficiale più pulita.

Le impostazioni utilizzate sulla stampante Ender 3 erano: Altezza strato di 0,16 mm @ riempimento del 40% per tutte le parti.

Passaggio 2: Robot di stampa 3D

Robot di stampa 3D
Robot di stampa 3D

Telaio (x1)

Ruota sinistra (x2)

Alloggiamento motore sinistro (x2)

Custodia Arduino (x1)

Passaggio 3: algoritmo di controllo PID

Algoritmo di controllo PID
Algoritmo di controllo PID

Ho scritto un algoritmo di controllo PID da zero utilizzando le librerie "Arduino-KalmanFilter-master" e "Arduino-MPU6050-master" di gitHub.

La premessa dell'algoritmo è la seguente:

  • Leggi i dati grezzi da MPU6050
  • Usa il filtro di Kalman per analizzare i dati sia dal giroscopio che dall'accelerometro per eliminare le imprecisioni nelle letture del giroscopio dovute all'accelerazione del sensore. Ciò restituisce un valore relativamente livellato per il passo del sensore in gradi fino a due cifre decimali.
  • Calcolare l'errore nell'angolo, ovvero: l'angolo tra il sensore e il setpoint.
  • Calcola l'errore proporzionale come (costante di proporzionalità x errore).
  • Calcola l'errore integrale come somma corrente di (Costante di integrazione x errore).
  • Calcola errore derivato come costante come [(Costante di differenziazione) x (Variazione nell'errore/Variazione nel tempo)]
  • Sommare tutti gli errori per fornire l'uscita di velocità da inviare ai motori.
  • Calcola in quale direzione far girare i motori in base al segno dell'angolo di errore.
  • Il ciclo verrà eseguito indefinitamente e si baserà sull'output al variare dell'input. È un ciclo di feedback, che utilizza i valori di output come nuovi valori di input per l'iterazione successiva.

Il passaggio finale consiste nel regolare i parametri Kp, Ki e Kd del loop PID.

  1. Un buon punto di partenza è aumentare lentamente Kp finché il robot non oscilla intorno al punto di equilibrio e può cadere.
  2. Successivamente, avviare Kd intorno all'1% del valore di Kp e aumentare lentamente fino a quando le oscillazioni scompaiono e il robot scivola dolcemente quando viene spinto.
  3. Infine, inizia con Ki intorno al 20% di Kp e varia fino a quando il robot "supera" il setpoint per catturare attivamente una caduta e tornare in verticale.

Consigliato: