Official topic: multicotteri con arduino!

ratto93:
I motori sono questi :
http://www.giantcod.co.uk/epower-gt2210-1270kv-brushless-motor-p-406118.html

Sono veloci, non credo che ce la fanno a far girare bene le 12x4.5 con 3S, sicuramente ce la fanno con 2S, ma perdi 1/3 della potenza massima erogabile (- tensione) e quindi spinta.
Purtroppo mancano tutti i dati del motore, impossibile simularli per verificare le reali prestazioni.
Puoi sempre fare il test della bilancia, monta la 10x4.5 con 3S e vedi quanto spinge con il motore al massimo, l'ideale sarebbe rilevare anche corrente e tensione e in modo da stabilire la potenza elettrica richiesta, stesso test con la 12x4.5 2S e 3S, dati alla mano si tirano le conclusioni.

astrobeed:

milvusmilvus:
per l' algoritmo di calcolo posso darti una mano io, oggi sei trovo mezz' ora vedo di fare qualcosa :slight_smile:

Gli algoritmi non sono un problema, li conosco benissimo, e non solo in teoria.
Il vero problema, che tutti sottovalutano, non è leggere la posizione fornita dal GPS e ricavarsi il vettore 3D, modulo e due angoli, per raggiungere un certo punto, sono solo calcoli di geometria sferica tutto sommato relativamente semplici anche se pesanti da eseguire, è pilotare in automatico il mezzo per fargli raggiungere il punto desiderato.

infatti io sono più preoccupato per come far eseguire i comandi... comunque non è che mi ritengo piu capace di altri, solo che la questione mi interessa, e quindi voglio partecipare, qualche pagina fa ho postato un programmino per calcolare le distanze sulla superficie terrestre, il problema è che usa il raggio medio, e usare 90 costanti diverse è un po pesante(ci sarebbero molti if) oppure possiamo usare un array, oppure ognuno si imposta le costanti per dove deve usare il multicottero (io ad esempio, sono a circa 41°n 16°e) cosi da ottimizzarlo in base alla zona di volo, c'e un modo per simulare l' invio dei dati al programma di configurazione del multiwii?? cosi si puo vedere come effettivamente di comporta,

milvusmilvus:
il problema è che usa il raggio medio, e usare 90 costanti diverse è un po pesante(ci sarebbero molti if) oppure possiamo usare un array

Per questa cosa sono possibili due soluzioni, una LUT nella flash da dove viene preso il giusto valore del raggio, quindi niente if, basta puntare un vettore, oppure si inserisce come dato prevolo dalla GUI e rimane in EEPROM fino a che non è necessario cambiarlo.
In fin dei conti il quadri al massimo viaggia per poche centinaia di metri se volo a vista, qualche km, nella migliore delle ipotesi, se in FPV, quindi a meno di non spostarsi di molto dalla zona di volo abituale non è necessario cambiare il raggio terrestre usato per i calcoli.

c'e un modo per simulare l' invio dei dati al programma di configurazione del multiwii?? cosi si puo vedere come effettivamente di comporta,

Basterebbe scrivere un programma che invia una stringa formattata come quella di MultiWii, dovrebbe bastare copiare la relativa funzione e adattarla per funzionare all'interno di un nuovo software, però non capisco a che ti serve questa cosa ?

è mille volte più facile guardare il codice per capire "come si comporta"

quindi basta usare i puntatori, e carichiamo il raggio in partenza, solo che la differenza di raggio tra 16° 00' e 16°59' è parecchia...ed è molto superiore a quella tra 16° 00' e 15°59', dovremmo arrotondare in qualche modo

io preferirei la tabella, magari salvata su SD... così sia che vai a barletta o bologna a volare non hai bisogno di toccare la configurazione

Mi piacerebbe avere il nome di queste formule in modo che me le cerco anche io, che vorrei implementare anche il pilota automatico sui modelli di aereo.

milvusmilvus:
quindi basta usare i puntatori, e carichiamo il raggio in partenza, solo che la differenza di raggio tra 16° 00' e 16°59' è parecchia...ed è molto superiore a quella tra 16° 00' e 15°59', dovremmo arrotondare in qualche modo

in quel caso vuol dire che 1' di precisione è troppo poco, e bisogna aumentarla

lesto:
io preferirei la tabella, magari salvata su SD... così sia che vai a barletta o bologna a volare non hai bisogno di toccare la configurazione

Mi piacerebbe avere il nome di queste formule in modo che me le cerco anche io, che vorrei implementare anche il pilota automatico sui modelli di aereo.

in quel caso vuol dire che 1' di precisione è troppo poco, e bisogna aumentarla

1' è già parecchio(forse già esagerata per il nostro uso) come precisione , sono 60x60 valori, forse intendevi 1°?

per le formule cerca geometria geodetica

astrobeed:

ratto93:
I motori sono questi :
http://www.giantcod.co.uk/epower-gt2210-1270kv-brushless-motor-p-406118.html

Sono veloci, non credo che ce la fanno a far girare bene le 12x4.5 con 3S, sicuramente ce la fanno con 2S, ma perdi 1/3 della potenza massima erogabile (- tensione) e quindi spinta.
Purtroppo mancano tutti i dati del motore, impossibile simularli per verificare le reali prestazioni.
Puoi sempre fare il test della bilancia, monta la 10x4.5 con 3S e vedi quanto spinge con il motore al massimo, l'ideale sarebbe rilevare anche corrente e tensione e in modo da stabilire la potenza elettrica richiesta, stesso test con la 12x4.5 2S e 3S, dati alla mano si tirano le conclusioni.

Non ho 2S....
con la 3S devo ancora provare perchè è scarica... cun una batteria al pimbo da 12V 7Ah ho provato....
a 15A di consumo mi alza 760gr con la 12 x 4.5 ( poi moltiplicato x 4 ).....
mi pare molto più che sufficiente....
con la 10 x 4.5 provo dopo se ho un momento....

milvusmilvus:

lesto:
io preferirei la tabella, magari salvata su SD... così sia che vai a barletta o bologna a volare non hai bisogno di toccare la configurazione

Mi piacerebbe avere il nome di queste formule in modo che me le cerco anche io, che vorrei implementare anche il pilota automatico sui modelli di aereo.

in quel caso vuol dire che 1' di precisione è troppo poco, e bisogna aumentarla

1' è già parecchio(forse già esagerata per il nostro uso) come precisione , sono 60x60 valori, forse intendevi 1°?

per le formule cerca geometria geodetica

se dici che la differenza tra 15.59 e 16.00 è troppa, allora bisognerà ragionare in 15.59.XX e 16.00.XX, in modo da aumentare la precisione (ed esponenzialmente anche la dimensione della tabella, sigh)

la differenza di raggio tra 16° 00' e 16°59' è parecchia...ed è molto superiore a quella tra 16° 00' e 15°59', dovremmo arrotondare in qualche modo

16° 00' e 16°59' questa è troppa, è quasi un grado che è 60 volte maggiore a questa 16° 00' e 15°59' che è di un primo

se usiamo i gradi come metro, sballiamo un po le distanze, il valore del raggio tra 16°00' e 16°59' sarebbe lo stesso e sarebbe diverso da 15°59' che invece è molto piu simile al valore esatto di 16°00'

i gradi sono solo per esempio, infatti il raggio cambia in funzione della latitudine e non della longitudine, quindi 16° non equivale all'italia che è compresa tra i 35° e i 47° lat N circa..

la longitudine invece varia tra i 6° ed i 18° E

ah ok, sto facendo un pò di confusione tra i 15 e i 16. comunque.

capisco che tra 15° e 16° ci sia "un'abisso", e non ho mai osservato le tabelle col raggio medio della terra, però credo che crescano in modo bbastanza lineare no?, in questo caso se sono a 15°30, potrei trovare il raggio facendo (il raggio di 15°+quello di 16°)/2, no? insomma interpoliamo il valore

il valore dovrebbe vicino a quello corretto, il problema è che la terra non è una sfera perfetta quindi il valore no sarebbe correttissimo, anche se a noi non serve il valore preciso, possiamo accontentarci di uno che vi sia avvicina molto, si potrebbe fare ad esempio, una tabella con valori dell ordine di 16.00 /16.10 /16.20 credo che cosi l' approssimazione potrebbe bastare, ma aspettiamo astrobeed per avere conferma

si potrebbe cambiare il raggio di volta in volta, in base a dove ci troviamo, oppure fare un array, in cui ci sono molti raggi, ed al momento di partire, carica una costante, che rimane fissa per tutto il volo, in fondo non si allontanerà tanto da avere problemi...

si potrebbe anche calcolare... dovrebbe esserci una funzione, ma non la trovo.....

Federico:

arcer:
Mi sembra di capire che il fornitore più usato sia HobbyKing, giusto?

Io dopo aver acquistato la ricevente da li ho preso tutto il resto in europa

Da che negozi??? Confrontando i prezzi con qualche negozio italiano mi è sembrato che ci fosse una differenza di costi ENORME, poi magari quelli di HK fanno schifo, non lo so.

La formulazione più semplice, ma anche la più imprecisa, per calcolare la distanza, e solo quella, tra due coordinate GPS è questa :

Lat1, Long1 = latitudine e longitudine primo punto (è quello con il valore minore di longitudine)
Lat2, Long2 = latitudine e longitudine secondo punto

dist = arccos( sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(long2 – long1) ) * 6371

6371 è il raggio terrestre medio, se si utilizza il corretto valore di raggio la precisione migliora, ma siamo ancora lontani da quella che serve a noi che non deve essere minore di quella offerta dal gps stesso in condizioni ottimali, cioè circa 2 metri.
Intanto cominciate a rendervi conto perché un otto bit non ce la fa a fare questi calcoli in tempo reale, cioè almeno 10 volte al secondo, sopratutto tenendo conto che vanno fatti in double precision (64 bit) e che nel frattempo deve fare tutte le altre cose necessarie per far volare il quadri.
Da notare che la formula sopra calcola solo il modulo del vettore, mancano ancora i due angoli per orientare la retta della rotta, altri calcoli trigonometrici da fare.
Più tardi vi posto la formulazione rigorosa, e precisissima, che adotteremo nel nostro software.

ratto93:
non è che il tuo problema sia da ricondurre al modo in cui hai fermato i quadrangolari d'alluminio?

I quadrangolari di alluminio non hanno a che veder con le eliche quanto col fissaggio del motore, in particolare non li ho utilizzati proprio perche' ho avvitato il motore direttamente alla struttura, senza l'utilizzo di quella parte

arcer:
Da che negozi??? Confrontando i prezzi con qualche negozio italiano mi è sembrato che ci fosse una differenza di costi ENORME, poi magari quelli di HK fanno schifo, non lo so.

HK ha prezzi ottimi, però molto materiale è schifezza cinese che costa due soldi e ne vale uno, quindi tocca stare molto attenti a quello che si compra, poi occorre mettere in conto che la merce ci mette come minimo tre settimane, ma pure sei, per arrivare, che potrebbe arrivare con dazio e iva da pagare, che potrebbe non arrivare mai e non hai un tracking a cui fare riferimento.

arcer:

Federico:

arcer:
Mi sembra di capire che il fornitore più usato sia HobbyKing, giusto?

Io dopo aver acquistato la ricevente da li ho preso tutto il resto in europa

Da che negozi??? Confrontando i prezzi con qualche negozio italiano mi è sembrato che ci fosse una differenza di costi ENORME, poi magari quelli di HK fanno schifo, non lo so.

Ho preso da giantcod http://www.giantcod.co.uk/
Ho fatto il conto che aggiungendo iva e dogana quello che vai a pagare da hobbyking se e' meno e' davvero poco meno. Non ho verificato ultimamente coi prezzi italiani, ma questa differenza cosi' enorme io non l'ho vista. Sei sicuro di aver fatto i tuoi conti aggiungendo iva e dogana? Poi ora che l'iva e' pure salita...

astrobeed:
tre settimane, ma pure sei, per arrivare, che potrebbe arrivare con dazio e iva da pagare, che potrebbe non arrivare mai e non hai un tracking a cui fare riferimento.

Esatto. Io l'ho ricevuta in 3 settimane e una volta partita aspetti, senza sapere ne' dov'e', ne' quando arrivera', ne' se arrivera'. E se arrivera' se arrivera' tutto a posto...

@arcer: Leggi tutti i commenti sugli oggetti in HK per capire meglio di che parlo! F

#include <math.h>

double coordinate (double latA, double lonA,
double latB, double lonB)
{
/* costanti e variabili /
const double raggio = 6371; //io ne metterei una per ogni grado di longitudine perchè altrimenti si assume la terra come una sfera perfetta
const double pigreco = 3.1415927;
double latARad, latBRad;
double lonARad, lonBRad;
double delta;
double c, distanza;
/
Converte i gradi in radianti*/
latARad = pigreco * latA / 180;
latBRad = pigreco * latB / 180;
lonARad = pigreco * lonA / 180;
lonBRad = pigreco * lonB / 180;
/* Calcola l'angolo compreso*/
delta = abs(lonARad - lonBRad);
/* Calcola lato del triangolo /
c = acos(sin(latBRad) * sin(latARad) +
cos(latBRad) * cos(latARad) * cos(delta));
/
Calcola la distanza con raggio = ~6371 km */
distanza = c * raggio;
return(d);
}

riposto il mio programmino per il calcolo della distanza tra 2 punti gps, ovvio che visto che arduino non ce la fa, dovremmo usare un altro processore, oppure arduino 2 direttamente......

ratto93:
con la 3S devo ancora provare perchè è scarica... cun una batteria al pimbo da 12V 7Ah ho provato....
a 15A di consumo mi alza 760gr con la 12 x 4.5 ( poi moltiplicato x 4 ).....
mi pare molto più che sufficiente....

Mi pare molto poco efficiente, i miei motori con la 10x4.5 sollevano 860 grammi con meno di 9A :smiley: