Archivi tag: python

Alfa3test. Ecco il software

Dopo aver completato una serie di test , ecco il software alfa3 disponibile : alfa3

Sono ora presenti tutti i componenti necessari per  l’implementazione finale del quadricottero.

Questo l’elenco dei moduli sviluppati:

  • motor.py
  • sensor.py
  • MPU6050.py
  • pid.py
  • rc.py

Ogni modulo include un oggetto specifico.Dedichero’ un po di tempo per rivedere e aggiornare la pagina di python con un help dettagliato ai vari moduli.

Qui mi preme dare solo un riassunto delle loro principali caratteristiche.

rc e’ la novita’ di questo alfa3test.E’ un oggetto che lavora in un thread in parallelo.Resta in attesa di input da parte dell’utente. In questo caso specifico l’input atteso arriva dalla tastiera,ma con lo stesso  approccio si puo’ pensare (ci sto ancora lavorando,sara’ a breve oggetto di un post dedicato) di ricevere l’input da un webserver.

Motor e’ un oggetto che gestisce la comunicazione fra le uscite del raspberry pi verso l’ESC ed infine verso il motore. Utilizza la libreria RPIO per la gestione del PWM.

Sensor e’ un oggetto che lavora in un thread in parallelo. Ogni 6ms circa e’ in grado di acquisire le informazioni di posizione e velocita’ angolare del quadricottero ricevendo i dati dal giroscopio e dall’accelerometro.

MPU6050 e’ una classe di pura interfaccia fra il raspberry e l’hardware del sensore. Se si desidera utilizzare un sensore differente dal mio , e’ sufficiente sostiuire questa classe con una appropriata all’hw utilizzato.

Pid e’ un oggetto che racchiude l’algoritmo di calcolo del controllo proporzionale, integrale e derivativo. Al suo interno gestisce il calcolo del tempo ciclo per ogni chiamata.

Tutorial: Come controllare un motore brushless con Raspberry PI

Sabato scorso e’ stato il grande giorno: primo brushless mosso! E mosso con rpi!!!

Per ora non ho voluto mischiare troppe cose, per cui rpi e’ alimentato da USB e collegato via cavo col pc.

wiring_2

Questi nel dettaglio i passaggi necessari.

  1. Monta il motore ben fissato ad un sostegno.IMPORTANTE: Ricorda che si muovera’,fissalo bene !
  2. Collega i cavi del motore all’ESC.Il motore che ho io,ha 3 cavi, nero,rosso e giallo. Io ho deciso di collegare sempre il nero al cavo centrale ,mentre invertiro’ il rosso col giallo per ottenere rotazioni orarie o antiorarie.
  3. NON collegare ancora i cavi di potenza dell’ESC alla batteria
  4. Collega il cavo segnale  di 0v (nero) dell’ESC al ground di rpi (per esempio pin 25)
  5. Collega il cavo segnale PWM (bianco) ad un output di rpi (nella mia prova l’ho collegato col pin fisico 11,corrispondente a GPIO17. Questo valore (17) sara’ usato poi nel programma.
  6. Collega cavo Ethernet
  7. Collega USB per alimentare rpi.motor_test_setup

Passiamo ora al lato sotware.E’ necessario che su rpi sia istallata la libreria RPIO.Se non ancora fatto, qui trovi la descrizione dell’ istallazione SW.

  1. Scarica la cartella motor_test che contiene motor_test.py e motor.py e posizionala nella cartella home/python/motor_test del tuo pc.
  2. Dal terminale del pc  usa il comando per copiare la cartella su rpi(chiedera’ password di rpi):
    scp -r python/motor_test  pi@10.42.0.63:./python
    password : raspberry
  3. Dal terminale del pc  usa il comando per connettersi con rpi.Il terminale del pc ora e’ diventato il terminale del rpi
    ssh pi@10.42.0.63
    password : raspberry
  4. Infine lancia il programma motor_test.Importante: la sequenza di avvio dell’ESC varia da modello a modello. Vedi la pagina dell ESC per i dettagli.
    cd python/motor_test 
    sudo python motor_test.py
  5. Segui le istruzioni del programma.

motor_test

Dopo il primo ENTER il PWM viene settato al massimo (un impulso lungo 2000us ogni 20ms). A questo punto occorre collegare i cavi di potenza del ESC.Se tutto va a buon fine (tensione corretta,numero di celle della batterie corrette) l ESC e’ pronto a pilotare il motore.Viene settato il PWM a 1000us, il minimo. A questo punto e’ possibile alzare e abbassare la velocita del motore ed il motore si muovera’. Il mio motore comincia a muoversi sopra il 5%, cioe’ 1050us.Questo dipende dall’inerzia del motore,dagli attriti  e dal livello di carica della batteria