Visualizza messaggio singolo
Vecchio 01 aprile 11, 22:59   #10 (permalink)  Top
catman
User
 
L'avatar di catman
 
Data registr.: 20-02-2011
Residenza: Firenze
Messaggi: 19
Citazione:
Originalmente inviato da Mrk89 Visualizza messaggio
Praticamente ti hanno fottuto una centralina che andava bene?
Mamma mia che stroni!!

Come ti dicevo precedentemente, questo non è il tipo di progetto adatto a chi deve iniziare a programmare...

Il segnale di una radio per modellismo può essere PPM o PCM ( lasciamo perdere i 2.4Ghz per ora ), comunque, entrambi sono digitali.
Dalla ricevente ( segnale che interessa a te ) esce, per ogni canale un segnale digitale PWM ( livello basso = 0V; livello alto = tensione alimentazione ricevente = 5V ) ad una frequenza di 50Hz, con dutycicle variabile dal 5% al 10% ( quindi da un minimo di 1ms alto e 19ms basso, ad un massimo 2ms alto e 18ms basso ).
Tu leggendo la durata di questi impulsi sai in che posizione si trova lo stick della radio abbinato al canale letto.

Ma questa codifica non la fa già la ricevente? che poi manda i tre segnali 0, 3,3V, e quello varibile al servo? il pacchetto digitale in PPM non serve solo alla trasmissione seriale e poi decodificato in analogico?

Fissiamo:

canale 1 elevatore ( rotore in coda )
canale 2 timone ( variazione di rotazione differente dei due motori coassiali )
canale 3 motore ( variazione di rotazione uguale dei due motori coassiali )

All'interno del micro dovrai fare queste miscelazioni:

Uscita motore di coda = Canale 1 ( può essere utilizzato così com'è ).
Uscita motore coass 1 = (Canale 3 + Canale2*(costante) )
Uscita motore coass 2 = (Canale 3 - Canale2*(costante) )

questa costante dovrà essere scelta in base alla risposta dell'ely.

Il canale 2 prima di farlo entrare nel micro, deve passare dal giroscopio, per essere stabilizzato.

Se tutto non fosse abbastanza, devi creare i PWM per pilotare i MOS ( il segnale che mandi ai motori tramite i MOS, è un segnale PWM che varia dallo 0 al 100% ).

Come vedi la strada è lunga....

Fai pure domande se hai dubbi.
Io avevo abbozzato questo:


//memorizzo nelle variabili i valori dei pin


INT analogPin 0=A0 // Ch1 thrust
...................A1, CH2 L/R input, A3 Ch3 tail
INT analogPin4= A4 //gyro


// dichiaro le varibili
INT THR=0
ecc. , LR, L, R, Tail, Gyro, BLD1, BLD2 =0

//indico Vcc riferimento e pin alta/bassa impedenza
Void setup ()
....
analogReferece (defalut)
pinMode (a0.......a4, input)
pinMode (A5/ A9/ A10, output)
....

// leggo i valori dei canali
THR= analogRead (analogpin0)
LR=analogRead (analogpin2)

Per il cuore della miscelazione avrei pensato (semplificando senza giro per ora) a

IF LR> (valore analogico servo o digtale convertito) LR=R , L=0
BLD1=THR-L
BLD2=THR-R
(non sapevo di dovere considerare il gyro come coefficente del valore del canale)
In questo modo un rotore mantiene il segnale originale mentre l'altro diminuisce favorendo la risultante: consumo meno batteria e il tempo limitato del segnale non mi fa perdere portanza ...o no? Nel caso tuo aumenti di una quantià il rotore e diminuisci di uguale quantità l'altro: non è troppo?

poi mando in output i valori

analogWrite=(A6, BLD1)
analogWrite=(A9, BLD2)

segue altra if simmetrica se LR< (valore del potenziomentro)

è chiaro che poi a seconda della meccanica si deciderà se mantenere uguali i giri motore di entrambi sia conveniente o meno per l'equilibrio


Attendo ................
__________________
Align T-Rex 500 CF Mode 2 con volontà propria e predilizione per il terreno.
catman non è collegato   Rispondi citando