Go Down

Topic: Quadricottero low cost (Read 17 times) previous topic - next topic

astrobeed


[Su questo argomento, Astro, avevi citato l'STM32. Ho visto che ha prezzi abbastanza accessibili (questo, questo, questo e l'F3 da te citata). Vanno bene?
Ho anche visto dal sito che ultimamente hanno sostituito giro e acc con l' MPU6050.


Per la Discovery F3 esiste una versione specifica di Open Pilot, tocca cercarla sul loro wiki, l'ultima volta che ci sono passato era problematico trovare le cose :)

Subsea



Secondo me con la Discovery-F* ci si combina ben poco se non si e' super skillati

Se uno pensa di potersi scrivere tutto il software per un quadricottero partendo da zero su un STM32 senza nessuna esperienza pregressa è sicuramente destinato a non combinare nulla, sopratutto utilizzando i vari tool open source

Non era certamente mia intenzione!! :smiley-sweat: volevo usare open pilot come board e caricarci sopra un soft già operativo! XD Per cominciare da 0 ci vuole oltre tanta esperienza anche (penso) almeno qualche anno in univeristà, e a me ne mancano ancora un paio prima di poterci mettere piede XD

lesto

a priori direi che se qualcuno vuole scriversi un SW per quad senza essere skillato ci combina poco :)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Subsea

#78
Nov 19, 2013, 09:53 pm Last Edit: Nov 19, 2013, 09:57 pm by Subsea Reason: 1
Eeeeeeee usare una delle board già pronte di HK? Ok, non saranno il massimo, ma per esempio questa usata in questo video. monta il AT48 clockato a 20 mhz al prezzo incredibile di 11 euro.
Preferirei comunque avere la board fatta da me, odio la pappa pronta, ma per 11 euri $) $) $)

P.s. LESTO! AUGURI PER I TUOI 9500 POST!!!

lesto

quelle sono  KK Control board, ovvero la board di KapitanKuk di cui ho parlato qualche post fa

Quote
usa solo 3 assi di giroscopio (quindi assolutamente NON stabile) funziona a 8MHz, ma la limitazione, oltre all'assistenza al pilota ridotta la minimo, è anche che il software è scritto in assembly


la fanno girare a 20MHz, non so se hanno cambiato altro nel codice.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

supergiox


Il punto è che non ci sono pro e contro perché non parliamo di algoritmi autoescludenti, anche se è possibile usare solo la DCM o solo il Kalman i risultati migliori si ottengono impiegandoli tutti e due, il PID può essere sostituito da altri metodi di controllo, p.e. il controllo robusto, però per questa applicazione il PID va benissimo, è inutile complicarsi la vita quando non serve :)

Quindi per un quadri comandato con un normale telecomando, sarebbe sufficiente il PID (senza kalman e/o DCM)?

Quote

Se fai funzionare Arduino a 8 MHz, per via della bassa tensione di alimentazione, credo proprio che puoi scordarti di riuscire a far volare il quadri, anzi sarebbe meglio se lo fai girare a 20 MHz.
La questione tensione di alimentazione non è un reale problema, devi usare due regolatori di tensione in cascata, il primo da 5V 500 mA tramite il quale alimenti Arduino, il secondo da 3.3V 100 mA con il quale alimenti la IMU e il bluetooth.
Per collegare la IMU ad Arduino non ci sono problemi, basta che colleghi SDA e SCL al .3.3V tramite due pullup da 1.5k, ricordati di disattivare le pull up interne del ATmega perché la libreria della I2C le attiva (erroneamente) di default.
Per collegare il Blutooth mandi il suo Tx direttamente al Rx di Arduino, colleghi il Tx di Arduino al Rx del Bluetooth tramite un partitore composto da una 18k e una 10k in modo da abbassare i 5V a 3V.
Sulla linea di alimentazione dei ponti H devi inserire un filtro a pi greco composto da due condensatori da almeno 220 uf e un induttore da 1-2 mh (deve essere in grado di reggere tutti gli Ampere richiesti dai motori), in questo modo blocchi tutti i disturbi generati dai motori.

Chiarissimo!  :)  è necessario collegare la IMU con le resistenze di pull-up? Per le poche prove che ho fatto, ho utilizzato questo schema e sembrava funzionare correttamente:
Code: [Select]
Arduino GND -> MPU-6050 GND
Arduino 3.3V -> MPU-6050 VCC
Arduino A4 (SDA) -> MPU-6050 SDA
Arduino A5 (SCL) -> MPU-6050 SCL



obiettivo finale ?

L'obiettivo finale "a breve termine" sarebbe quello di riuscire ad ottenere un risultato simile a quello del video di lesto (quadricottero con arduino).
Se ci dovessi riuscire, potrei pensare di controllarlo via bluetooth in modo più o meno accettabile. Come ho ripetuto più volte, non mi aspetto per niente di costruire un quadricottero maneggevole, stabile, ecc... la mia sfida è quella di riuscire a farlo volare e, almeno in questa prima "versione", ridurre i costi all'osso.

astrobeed


Quindi per un quadri comandato con un normale telecomando, sarebbe sufficiente il PID (senza kalman e/o DCM)?


No, il PID è quello che viene dopo il Kalman e/o la DCM, e non c'è solo lui.

Quote

è necessario collegare la IMU con le resistenze di pull-up?


Assolutamente si, e devono pure essere del giusto valore, spesso le breakout board includono le resistenze di pullup quindi non è necessario aggiungerle, per verificarlo basta misurare con un multimetro la resistività tra SDA/SCL e il 3.3V, ovviamente con la IMU non alimentata, se c'è un valore compreso tra 1.5k e 3.3k sono già presenti.

lesto

aggiungerei che se i sensori lavorano ad una tensione diversa da quella della MCU, e i sensori/MCU non hanno i livelli esplicitamente compatibili, bisogna usare un traslatore di livelli logici
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

supergiox


per verificarlo basta misurare con un multimetro la resistività tra SDA/SCL e il 3.3V, ovviamente con la IMU non alimentata, se c'è un valore compreso tra 1.5k e 3.3k sono già presenti.


Tra SDA e VCC misuro circa 13.5k, tra SCL e VCC ci sono 13k e tra SDA ed SCL sono circa 22k.
Per quanto riguarda i regolatori di tensione, per il momento ho trovato soltanto quello da 3.3V (LE33CZ).


Subsea

mah, un po' altino ma credo vada bene. Più che regolatori di tensioni ti servirebbe un traslatore di livello, altrimenti come comunichi con Arduino (5V)?

supergiox

#85
Nov 24, 2013, 05:19 pm Last Edit: Nov 24, 2013, 05:21 pm by supergiox Reason: 1

mah, un po' altino ma credo vada bene. Più che regolatori di tensioni ti servirebbe un traslatore di livello, altrimenti come comunichi con Arduino (5V)?


Con Arduino a 5V riesco già a comunicare. Il problema era utilizzare una sola batteria (la LiPo) per alimentare tutto, e per questo ho comprato il regolatore da 3.3V (e devo ancora prendere l'altro).
A proposito, ho fatto il test della MPU6050 che ho trovato nel playground e questi sono i valori che ho ottenuto:
Code: [Select]
InvenSense MPU-6050
June 2012
WHO_AM_I : 68, error = 0
PWR_MGMT_2 : 0, error = 0

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 28, 524, 16580
temperature: 21.118 degrees Celsius
gyro x,y,z : -51, 162, -35,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 156, 564, 16800
temperature: 21.212 degrees Celsius
gyro x,y,z : -45, 187, -35,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 120, 516, 16640
temperature: 21.212 degrees Celsius
gyro x,y,z : -46, 168, -27,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 136, 476, 16640
temperature: 21.165 degrees Celsius
gyro x,y,z : -69, 181, -17,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 120, 444, 16684
temperature: 21.118 degrees Celsius
gyro x,y,z : -73, 209, -38,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 44, 484, 16548
temperature: 21.306 degrees Celsius
gyro x,y,z : -50, 184, -30,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: -56, 484, 16552
temperature: 21.165 degrees Celsius
gyro x,y,z : -57, 179, -26,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 144, 484, 16732
temperature: 21.212 degrees Celsius
gyro x,y,z : -48, 178, -33,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 192, 488, 16660
temperature: 21.165 degrees Celsius
gyro x,y,z : -68, 198, -41,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 116, 352, 16640
temperature: 21.212 degrees Celsius
gyro x,y,z : -54, 178, -28,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 184, 448, 16624
temperature: 21.212 degrees Celsius
gyro x,y,z : -72, 167, -47,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 136, 336, 16620
temperature: 21.212 degrees Celsius
gyro x,y,z : -63, 198, -25,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 48, 380, 16624
temperature: 21.353 degrees Celsius
gyro x,y,z : -44, 158, -8,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 68, 496, 16808
temperature: 21.306 degrees Celsius
gyro x,y,z : -57, 192, -40,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 72, 488, 16596
temperature: 21.212 degrees Celsius
gyro x,y,z : -58, 190, -63,

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 184, 476, 16604
temperature: 21.212 degrees Celsius
gyro x,y,z : -30, 221, -38,


P.S. l'IMU non era perfettamente  orizzontale ma era comunque inserita in una breadboard poggiata sul tavolo.

Subsea

Come diceva lesto in un altro post i valori sono in base 1:2000 (se non sbaglio) quindi il tuo 16800 è un poco strano... Sarebbe 8.4 m/s2 contro 9.81

supergiox


Come diceva lesto in un altro post i valori sono in base 1:2000 (se non sbaglio) quindi il tuo 16800 è un poco strano... Sarebbe 8.4 m/s2 contro 9.81


Questo potrebbe essere dovuto al fatto che non era parallelo al tavolo. Ripeterò il test più accuratamente, però volevo sapere cosa ne pensate della "varianza" dei valori

Subsea

Si possibilismo! I valori sono accettabili , almeno per me, scarica il multiwii e fai una prova!!! Testi solo l'allineamento nella GUI, senza rf, giusto per sapere se tutto funzia.

lesto



mah, un po' altino ma credo vada bene. Più che regolatori di tensioni ti servirebbe un traslatore di livello, altrimenti come comunichi con Arduino (5V)?


Con Arduino a 5V riesco già a comunicare.


anche con una fiat panda puoi andare a 150. Il problema è per quanto tempo  :smiley-mr-green:

per i valori se non dici a che scala li hai impostati è dura da decidere. In particolare il giroscopio butta vuori valori belli brutti
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up