BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Coassiale mixed controller con arduino (https://www.baronerosso.it/forum/circuiti-elettronici/207198-coassiale-mixed-controller-con-arduino.html)

catman 01 aprile 11 23:02

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

Mrk89 01 aprile 11 23:09

Citazione:

Originalmente inviato da catman (Messaggio 2522588)
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
Questi dovranno essere ingressi digitali e non analogici

// 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)Non ti serviranno canali analogici per quello discusso fin'ora
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 Il giroscopio fa continue correzioni sul canale del timone per mantenere la prua costante, quindi va messo prima del micro)
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?Se la portanza è data da motore 1 + motore 2, se diminuisci l'uno senza aumentare l'altro perdi quota, sei d'accordo?

poi mando in output i valori

analogWrite=(A6, BLD1)Anche questi devono essere segnali digitali, in particolare PWM variabili dallo 0% al 100%
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
Per correttezza bisognerebbe fare delle misure per capire come varia la portanza al variare delle due velocità, in questa maniera sarebbe tutto molto più preciso.

Attendo ................

L'unico ingresso analogico che ti servirebbe, sarebbe quello per leggere la tensione della lipo, per non farla scaricare eccessivamente.

A dopo

Mrk89 01 aprile 11 23:17

Citazione:

Originalmente inviato da catman (Messaggio 2522596)
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?

Quella era la premessa ( in verità l'avevo già iniziata a scrivere e quindi l'ho lasciata ):P

Il segnale che esce dalla ricevente ( come già scritto ) è un segnale PWM a 50Hz il quale dutycicle varia dal 5% al 10%.

Praticamente il lavoro del tuo micro sarebbe questo:

//Segnale basso
Attendo cambio di stato.
//Segnale passa da basso ad alto
Azzero e faccio partire un timer
//segnale passa da alto a basso
Leggo il valore del timer, questo è un numero proporzionale al canale letto.

Es:

La parte alta del segnale varia da 1ms a 2ms.

Diciamo che il tuo timer gira a 100kHz, quindi si incrementa ogni 10us.
Se il tuo segnale dura 1ms, il valore che leggerai sarà 100; segnale 1.5ms = 150; segnale 2ms = 200

Questo numero poi lo devi elaborare con il micro.:wink:


Tutti gli orari sono GMT +2. Adesso sono le 16:18.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2026