Proiectul consta in realizarea unei drone folosind 4 motoare brushless, fiecare fiind conectat la cate un controler ESC si frame-ul fiind printat 3D.
Scopul este de a sta in aer si de a elimina perturbatiile folosind un algortim PID.
Aceasta poate avea multe utilitati pe baza ce aceasta are implementata mai multe functionalitati.
Proiectul meu constă în construirea unei drone de la zero, folosind patru motoare brushless și patru ESC-uri. Pentru a controla și stabiliza drone, am implementat un modul senzor cu 9 axe MPU9250 și un controler PID.
Motoarele brushless și ESC-urile permit dronei să obțină o putere și o stabilitate superioare în timpul zborului. Modulul senzor cu 9 axe MPU9250 este responsabil pentru colectarea datelor privind orientarea, accelerația și viteza dronei. Aceste informații sunt utilizate de către controlerul PID pentru a menține stabilitatea și controlul precis al dronei în timpul zborului.
PID-ul compară datele primite de la modulul senzor cu referința dorită și ajustează în mod continuu viteza și unghiul de înclinare ale motoarelor pentru a menține dronei în echilibru și a obține o stabilitate optimă. Prin implementarea PID-ului, dronea va putea să compenseze automat orice deviație de la poziția și orientarea dorite, asigurând un zbor precis și controlat.
Componetele folosite sunt:
Cele 4 ESC-uri sunt conectate la GND si la pinii 4,5,6,7.
Modul Senzor cu 9 Axe MPU9250 este conectat astfel: VCC la 5V, GND la GND, SCL la A5 si SDA la A4.
Pentru dezvoltarea aplicatiei am folsoit urmaotearele biblioteci:
Codul implementeaza controlarea si stabilizarea unei drone folosind un controler PID si un filtru Kalman pentru a combina datele de la giroscop si datele de la accelerometru.
Sunt preluate date de la modululSenzor cu 9 Axe MPU9250: aceeleratie si rotatie
Functia “kalman_1d” primește starea curentă a sistemului (KalmanState), incertitudinea (KalmanUncertainty), intrarea sistemului (KalmanInput) și măsurarea curentă (KalmanMeasurement). Calculează și actualizează starea Kalman și incertitudinea. Ieșirile sunt stocate într-un vector numit Kalman1DOutput.
Functia “pid_equation” implementează ecuația unui controler PID. Primește eroarea curentă (Error), coeficienții P, I și D, eroarea anterioară (PrevError) și integrala anterioară (PrevIterm). Calculează termenii P, I și D și returnează ieșirea controlerului PID și valorile de eroare și integrală actualizate.
Functia “reset_pid” reseteaza valorile anterioare ale roarilor si integralelor pentru o noua iteratie.
Functia “setup” intializeaza sistemul:
Am reusit sa control fiecare motor individual in urma prelucarii datelor primite de la girscop si accelerometru.
Am reusit sa ridic drona de la sol, dar stabilizarea ei nu a fost realizata in practica, probabil deoarece frecventa microcontroller-ului atmega328p, ce ruleaza la o freceventa de 16MHz nu reuseste sa proceseze suficient de repede datele.
In practica se vede cum datele giroscopului se modifica la modificarea pozitiei dronei si cum valorile de input ale ficarui motor sunt modificate individual incercandu-se stabilizarea sistemului.