Pages: 1 ... 5 6 [7] 8 9 ... 17   Go Down
Author Topic: Quadricottero low cost  (Read 7780 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

a priori direi che se qualcuno vuole scriversi un SW per quad senza essere skillato ci combina poco smiley
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 502
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-money smiley-money smiley-money

P.s. LESTO! AUGURI PER I TUOI 9500 POST!!!
« Last Edit: November 19, 2013, 03:57:20 pm by Subsea » Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
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!  smiley  è 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:
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.
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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).

Logged

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 502
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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)?
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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.
« Last Edit: November 24, 2013, 11:21:47 am by supergiox » Logged

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 502
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 502
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

per i valori se non dici a che scala li hai impostati è dura da decidere.

Io non ho scelto una scala, nel senso che ho semplicemente seguito il playground e ho caricato questo sketch, come consigliato.

Quote
scarica il multiwii e fai una prova
Potresti spiegarmi meglio cosa fare? So a mala pena cosa sia il MultiWii ma non l'ho mai provato smiley
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
// default at power-up:
  //    Gyro at 250 degrees second
  //    Acceleration at 2g
  //    Clock source at internal 8MHz
  //    The device is in sleep mode.

devi vedere il valore in di LSB in base a questi settaggi e fare la conversione. Se il sensore era fermo, il giroscopio va calibrato.
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: 1 ... 5 6 [7] 8 9 ... 17   Go Up
Jump to: