BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Qualcuno sperimenta con Arduino? (https://www.baronerosso.it/forum/circuiti-elettronici/241145-qualcuno-sperimenta-con-arduino.html)

faustog_2 06 settembre 12 12:28

ciao gawain..

perchè parli di pseudo PPM? quello dovrebbe essere proprio tutto il treno di segnali che di volta in volta si ripete dopo ogni 20 mS circa.... i segnali viaggiano in serie e man mano che arrivano vengono spedite ai pin verso i servo... per cui ogni pin riceve il segale in modo esclusivo... ....non mi meraviglio se nell'unico cavo passano tutti i segnali... ...altrimenti dovresti mettere un lettore ad interrupt per ogni canale? mi sembra strano..... per esempio le schede KK per i quadri cottero... prendono con delle spienette ogni canale singolarmente ... ma poi credo che al'interno della scheda abbiano un schema simile al tuo...


a partire dal tuo schema.. si potrebbe interrogare con il modulo capture di arduino... agendo direttamente sui registri... catturando l'interrupt generato dal fronte di salita.. ... misurando i valori di durata del segnale alto, ponendo i valori all'interno di una array si confrontano con l'ultimo treno ... se analizzano le differerenze per capire la decisione da prendere .... ecc.. è così che si sviluppa un drone-semi autonomo che ascolta i comandi del pilota...ma contemporaneamente legge i sensori... interpretando situazini critiche o desiderate .. il volo potrebbe essere assistito da Arduino



Citazione:

Originalmente inviato da gawain (Messaggio 3151158)
mi autoquoto per spiegare con un disegnino quello che confusamente ho tentato di dire...
in aggiunta per leggere fronti alterni basta porre inPPM.h
#define EDGE_DETECTOR_TOGGLE 1 // 0=reading PPM stream 1=reading alternate channel sequence from rx

ovviamente questo per quelle rx che non hanno il canale ppm


faustog_2 26 settembre 12 23:35

Non funziona
 
non funziona questo semplice schema... l'ho provato.. i segnali vanno in conflitto
credevo che il multiplexer potesse in qualche modo evitare la sovraposizione del segnale alto... comunque... credo che occorre un canale di ingresso per ogni ch della ricevente

a dopo
fausto

Citazione:

Originalmente inviato da gawain (Messaggio 3151158)
mi autoquoto per spiegare con un disegnino quello che confusamente ho tentato di dire...
in aggiunta per leggere fronti alterni basta porre inPPM.h
#define EDGE_DETECTOR_TOGGLE 1 // 0=reading PPM stream 1=reading alternate channel sequence from rx

ovviamente questo per quelle rx che non hanno il canale ppm


romoloman 27 settembre 12 03:43

Citazione:

Originalmente inviato da faustog_2 (Messaggio 3409578)
non funziona questo semplice schema... l'ho provato.. i segnali vanno in conflitto
credevo che il multiplexer potesse in qualche modo evitare la sovraposizione del segnale alto... comunque... credo che occorre un canale di ingresso per ogni ch della ricevente

a dopo
fausto

Assolutamente no, una paccata di diodi e via....
poi serve un minimo di codice per beccare l'impulso di sincronismo (facile) e resettare la sequenza di memorizzazione dei canali...

faustog_2 27 settembre 12 12:22

!!!!!
 
ciao romoloman.. con arduino .. mi sono scritto una procedura che funziona molto bene con un solo canale, usando il pin 14 ..il modulo Input Capture , hardware molto preciso.. però usando i diodi e la resistenza da 2,7 k ...non funziona..
Esattamente..se uso un solo canale usando il diodo correttamente OK.. ma se metto due canali come lo schema non funziona! non scatta l'interrupt... probabile che rimane costantemente seganle alto.. quindi non rileva frotni di salita.. ne fronti di discesa..

infatti il firmware come logica funziona che dopo un fronte di salita... comincia a contare e asspetta un fronte di discesa... poi una volta rilevato memorizza in un array il valore e scambia il fronte come interrupt.. e così ad oltranza.. ti dico funziona alla grande.. ma appena metto due canali con diodi così come illustrato KO , niente! mi disiace smentirti.. amche a me sarebbe piaciuto... con un solo pin di ingresso risolvevo il problema... adesso ho mi realizzo un circuito tipo multiplexer... che mi convoglia tutto in unico segnale.. oppure devo avere 4 input tanti quanti sono i canali... tutto ci per poter realizare in futuro un quadricottero per esempio... dai confronti successivi tra i comandi del pilota e i gyro, ed eventuale accelerometro.. i segnali vengono opportunamente generati.

a dopo
fausto

Citazione:

Originalmente inviato da romoloman (Messaggio 3409717)
Assolutamente no, una paccata di diodi e via....
poi serve un minimo di codice per beccare l'impulso di sincronismo (facile) e resettare la sequenza di memorizzazione dei canali...


romoloman 27 settembre 12 16:46

Citazione:

Originalmente inviato da faustog_2 (Messaggio 3410232)
ciao romoloman.. con arduino .. mi sono scritto una procedura che funziona molto bene con un solo canale, usando il pin 14 ..il modulo Input Capture , hardware molto preciso.. però usando i diodi e la resistenza da 2,7 k ...non funziona..
Esattamente..se uso un solo canale usando il diodo correttamente OK.. ma se metto due canali come lo schema non funziona! non scatta l'interrupt... probabile che rimane costantemente seganle alto.. quindi non rileva frotni di salita.. ne fronti di discesa..

infatti il firmware come logica funziona che dopo un fronte di salita... comincia a contare e asspetta un fronte di discesa... poi una volta rilevato memorizza in un array il valore e scambia il fronte come interrupt.. e così ad oltranza.. ti dico funziona alla grande.. ma appena metto due canali con diodi così come illustrato KO , niente! mi disiace smentirti.. amche a me sarebbe piaciuto... con un solo pin di ingresso risolvevo il problema... adesso ho mi realizzo un circuito tipo multiplexer... che mi convoglia tutto in unico segnale.. oppure devo avere 4 input tanti quanti sono i canali... tutto ci per poter realizare in futuro un quadricottero per esempio... dai confronti successivi tra i comandi del pilota e i gyro, ed eventuale accelerometro.. i segnali vengono opportunamente generati.

a dopo
fausto

Sono sicuro che funziona... solo che probabilmente non hai un pull down sufficientemente deciso oppure hai i pull-up degli ingressi abilitati.
viene usato in quel modo per le schede che necessitano di un ppm composito...

faustog_2 28 settembre 12 20:34

Vediamo Un Po
 
mi stavo documentando in merito alla gestione degli interrupt esterni, i pin dell'Atmel 328p corrispondenti :

pin 4 - PCINT18 (PD2)
pin 6 - PCINT20 (PD4)
pin 11
pin 12

CREDO CHE SE SI GESTISCONO GLI INTERRUPT CON QUESTO SISTEMA DOVREMMO RIUSCIRCI... OCCORRE UN PO DI STUDIO! ADESSO SONO ALL'INIZIO..



void setupRx() {
pinMode(2, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);

// interrupt change PCINT

PCICR |= (1 << PCIE2);
PCMSK2 = (1 << PCINT18) | (1 << PCINT20) | (1 << PCINT21) | (1 << PCINT22) ;
}


Citazione:

Originalmente inviato da romoloman (Messaggio 3410808)
Sono sicuro che funziona... solo che probabilmente non hai un pull down sufficientemente deciso oppure hai i pull-up degli ingressi abilitati.
viene usato in quel modo per le schede che necessitano di un ppm composito...


faustog_2 28 settembre 12 20:35

Diodi , Quali?
 
QUALI DIODI USI?

Citazione:

Originalmente inviato da romoloman (Messaggio 3409717)
Assolutamente no, una paccata di diodi e via....
poi serve un minimo di codice per beccare l'impulso di sincronismo (facile) e resettare la sequenza di memorizzazione dei canali...


romoloman 28 settembre 12 21:26

Citazione:

Originalmente inviato da faustog_2 (Messaggio 3412818)
QUALI DIODI USI?

Se hai problemi prova a fare così:
http://static.rcgroups.com/forums/at...0722153600.jpg

Io ho usato dei 1N4148 con una resistenza da 1K come nello schema, senza transistor ne nulla, ma ho disabilitato il pullup interno:
digitalWrite(pin, 0) ;

dove pin è il tuo pin di input

faustog_2 28 settembre 12 22:54

ok
 
tutti componenti che ho a casa..

ma scusa perchè hai messo TO RX ...quindi from RX TO Arduino.. giusto ?

appena rietro provo a "impastare" sarebbe utile in modo che con con il solo inèut capture faccio tutto.... ...la RX è una 2,4 Ghz della Hitech

a dopo
fausto

Citazione:

Originalmente inviato da romoloman (Messaggio 3412916)
Se hai problemi prova a fare così:
http://static.rcgroups.com/forums/at...0722153600.jpg

Io ho usato dei 1N4148 con una resistenza da 1K come nello schema, senza transistor ne nulla, ma ho disabilitato il pullup interno:
digitalWrite(pin, 0) ;

dove pin è il tuo pin di input


faustog_2 29 settembre 12 00:14

--
 
qui c'è la fonte di informazioni:

leggere impulsi dal radiocomando x modellismo con arduino???


Citazione:

Originalmente inviato da faustog_2 (Messaggio 3412815)
mi stavo documentando in merito alla gestione degli interrupt esterni, i pin dell'Atmel 328p corrispondenti :

pin 4 - PCINT18 (PD2)
pin 6 - PCINT20 (PD4)
pin 11
pin 12

CREDO CHE SE SI GESTISCONO GLI INTERRUPT CON QUESTO SISTEMA DOVREMMO RIUSCIRCI... OCCORRE UN PO DI STUDIO! ADESSO SONO ALL'INIZIO..



void setupRx() {
pinMode(2, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);

// interrupt change PCINT

PCICR |= (1 << PCIE2);
PCMSK2 = (1 << PCINT18) | (1 << PCINT20) | (1 << PCINT21) | (1 << PCINT22) ;
}



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

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002