switch ppm con Arduino, possibile? - BaroneRosso.it - Forum Modellismo

Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 12 novembre 14, 16:11   #1 (permalink)  Top
User
 
L'avatar di dannybon
 
Data registr.: 16-05-2006
Residenza: Firenze - Augusta
Messaggi: 1.148
switch ppm con Arduino, possibile?

Buona sera a tutti.
Ho un piccolo questito da porre a chi arduino lo conosce bene. Purtroppo io devo ancora addentrarmi in questo nuovo mondo. Per elettronica nessun problema, sulla programmazione sono in alto mare.

Veniamo al dunque:

Ho la necessità di switchare il segnale ppm proveniente dalla ricevente, da una batteria di 4 servi ad un'altra sempre da 4 servi.
Inizialmente volevo usare dei semplici switch, ma ho pensato che con questo progetto potessi cominciare realmente ad addentrarmi in Arduino.

Come dovrà funzionare:

Il passaggio dai primi 4 servi ( collegati uno per canale rx) a gli altri avverà tramite un'interruttore della radio.
Devo avere la possibilità di inserire un delay in attivazione e disattivazione su ogni canale in modo da poter ritardare le varie uscite.

Domande:
potrò incorrere in interferenze?
Potrò avere degli sfarfallii ai servi?
Che tipo di arduino mi consigliate? Io posseggo già una uno pronta per essere sverginata.
Il progetto è fattibile secondo voi?

Grazie mille e a presto.
__________________
Danny
dannybon non è collegato   Rispondi citando
Vecchio 13 novembre 14, 11:05   #2 (permalink)  Top
User
 
L'avatar di frankestein94
 
Data registr.: 30-01-2011
Residenza: Siena
Messaggi: 168
Immagini: 2
Invia un messaggio via MSN a frankestein94
Secondo me è fattibilissimo. Nel loop con il digitalread rilevi constantemente il segnale pwm in ingresso dalla rx, lo attribuisci ad una variabile, lo restituisci ad una batteria di servi if(canale dello switch> di un certo valore and millis > delay), lo restituisci all'altra batteria altrimenti.
Non so se sono stato chiaro anche perché ci vuole un minimo di conoscenza di linguaggio arduino/c.
Se vuoi posso provare a buttare giù il codice.
frankestein94 non è collegato   Rispondi citando
Vecchio 13 novembre 14, 16:48   #3 (permalink)  Top
User
 
L'avatar di dannybon
 
Data registr.: 16-05-2006
Residenza: Firenze - Augusta
Messaggi: 1.148
grazie mille per l'aiuto.
Si mi farebbe piacere che te mi aiutassi con il codice ma a me interessa anche capire.
Intanto posso usare la uno che ho già in casa?
Grazie mille ancora, spero io riesca a fare ciò che ho in mente.
A presto.
__________________
Danny
dannybon non è collegato   Rispondi citando
Vecchio 13 novembre 14, 19:05   #4 (permalink)  Top
User
 
L'avatar di frankestein94
 
Data registr.: 30-01-2011
Residenza: Siena
Messaggi: 168
Immagini: 2
Invia un messaggio via MSN a frankestein94
Citazione:
Originalmente inviato da dannybon Visualizza messaggio
grazie mille per l'aiuto.
Si mi farebbe piacere che te mi aiutassi con il codice ma a me interessa anche capire.
Intanto posso usare la uno che ho già in casa?
Grazie mille ancora, spero io riesca a fare ciò che ho in mente.
A presto.
Bene, meglio così.. La uno va benissimo per ora, poi se vorrai migliorarlo o comunque se andrà montato su roba volante potrai prendere anche la micro.
Alla fine i pin di cui hai bisogno sono: 8 uscite ai servi, 4 ingressi dalla rx e un ingresso sempre dalla ricevente per il canale dello switch.
La meglio cosa per capire è leggerti un pò di informazioni su come gestire i segnali pwm con arduino! Ce ne sono molte sul sito o nella wiki.
Sei proprio a zero o già sai come fare per dichiarare variabili, fare confronti ecc ecc.?
Intanto io butto giù un pò di codice.
frankestein94 non è collegato   Rispondi citando
Vecchio 13 novembre 14, 21:06   #5 (permalink)  Top
User
 
L'avatar di dannybon
 
Data registr.: 16-05-2006
Residenza: Firenze - Augusta
Messaggi: 1.148
Ho letto il libricino "primi passi" solo che non ho mai messo le mani in pasta.
Devo partire da zero con tutti i linguaggi....
Comunque domani mi metto a studiare sul pwm .
Ciao e grazie ancora.
__________________
Danny
dannybon non è collegato   Rispondi citando
Vecchio 21 novembre 14, 09:18   #6 (permalink)  Top
User
 
L'avatar di dannybon
 
Data registr.: 16-05-2006
Residenza: Firenze - Augusta
Messaggi: 1.148
Buongiorno
Allora..... Ho ripreso in mano il libro di arduino e ho ricominciato a dare una lettura.
Ho scritto uno sketch sicuramente sbagliato ma devo pur cominciare......
Quello che m'interessa al momento è sapere se il concetto scritto è giusto, non m'interessa sapere se è correttamente scritto o se funzionera'.
Questo è quanto scritto:

int ch1 = 1;
int ch2 = 2;
int ch3 = 3;
int ch4 = 4;
int ch8 = 5;
int ch1(2) = 6;
int ch2(2) = 7;
int ch3(2) = 8;
int ch4(2) = 9;
int ch1(3) = 10;
int ch2(3) = 11;
int ch3(3) = 12;
int ch4(3) = 13;
void setup() {

pinMode(ch1, INPUT);
pinMode(ch2, INPUT);
pinMode(ch3, INPUT);
pinMode(ch4, INPUT);
pinMode(ch8, INPUT);
pinMode(ch1(2), OUTPUT);
pinMode(ch2(2), OUTPUT);
pinMode(ch3(2), OUTPUT);
pinMode(ch4(2), OUTPUT);
pinMode(ch1(3), OUTPUT);
pinMode(ch2(3), OUTPUT);
pinMode(ch3(3), OUTPUT);
pinMode(ch4(3), OUTPUT);

}

void loop() {
// read the value from the sensor:
ch1 = analogRead(ch1);
ch2 = analogRead(ch2);
ch3 = analogRead(ch3);
ch4 = analogRead(ch4);
ch8 = analogRead(ch8);
if
ch8= LOW
digitalWrite(ch1(2), Valore letto da ch1 );
digitalWrite(ch2(2), valore letto da ch2 );
digitalWrite(ch3(2), valore letto da ch3 );
digitalWrite(ch4(2), valore letto da ch4 );

else
digitalWrite(ch1(3), valore letto da ch1) ;
digitalWrite(ch1(3), valore letto da ch2) ;
digitalWrite(ch1(3), valore letto da ch3) ;
digitalWrite(ch1(3), valore letto da ch4) ;

In pratica sto cercando di dire ad arduino che i 4 canali principali CH1,2,3,4 devono leggere il segnale proveniente dalla rx. Se ch8 ha un segnale basso ( switch radio basso) il segnale deve uscire dalla batteria di canali CH 1,2,3,4 (2) altrimenti uscire dall'altra batteria ch1,2,3,4 (3).

E' la prima volta che scrivo un codice non mi massacrate
__________________
Danny
dannybon non è collegato   Rispondi citando
Vecchio 21 novembre 14, 11:52   #7 (permalink)  Top
User
 
L'avatar di dannybon
 
Data registr.: 16-05-2006
Residenza: Firenze - Augusta
Messaggi: 1.148
Accortomi delle cavolate stratosferiche scritte sopra, voglio rincarare la dose.
Aiutandomi con sketch degli esempi trovati sul programma ide, è venuto fuori questo


#include <Servo.h>
int ch1 = A0;
int ch2 = A1;
int ch3 = A2;
int ch4 = A3;
int ch8state = 0;
Servo esc1;
Servo esc2;
Servo esc3;
Servo esc4;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int val1;
int val2;
int val3;
int val4;

void setup()
{
esc1.attach(6);
esc2.attach(7);
esc3.attach(8);
esc4.attach(9);
servo1.attach(10);
servo2.attach(11);
servo3.attach(12);
servo4.attach(13);

}

void loop() {
val1=analogRead(ch1);
val2=analogRead(ch2);
val3=analogRead(ch3);
val4=analogRead(ch4);

if (ch8state == 0) {

esc1.write(val1);
esc1.write(val2);
esc1.write(val3);
esc1.write(val4);
servo1.write(511); // posizione servo a 0°
servo2.write(511); // posizione servo a 0°
servo3.write(511); // posizione servo a 0°
servo4.write(511); // posizione servo a 0°

}
else {

esc1.write(0); // esclusione esc
esc1.write(0); // esclusione esc
esc1.write(0); // esclusione esc
esc1.write(0); // esclusione esc
servo1.write(val1);
servo2.write(val2);
servo3.write(val3);
servo4.write(val4); }
}
__________________
Danny
dannybon non è collegato   Rispondi citando
Vecchio 21 novembre 14, 14:47   #8 (permalink)  Top
User
 
L'avatar di FPVxfun
 
Data registr.: 08-10-2014
Residenza: Verona
Messaggi: 420
se vuoi dilettarti con Arduino, fai pure (anch'io lo uso raramente). Tuttavia esiste già un circuito che fa il caso tuo:

4 canali:
http://www.hobbyking.com/hobbyking/s...ntroller_.html

8 canali:
http://www.hobbyking.com/hobbyking/s...ntroller_.html

Il funzionamento non è molto chiaro, rispetto quello che vorresti fare tu, non mi pare che la commutazione fra i 2 canali sia gestita tramite uno switch della radio. Penso che una radio sia il Master e una lo Slave: quando la Master smette di trasmettere (si può semplicemente decodificare la qualità dell'informazione ricevuta... io l'ho implementato sul mio tosaerba radiocomandato) entra in gioco lo Slave.

Michele Praga dovrebbe avercelo. Prova a chiedere a lui.


Per quanto riguarda la programmazione con Arduino, io (proveniendo da anni di programmazione schede elettroniche a microcontrollore) soffro molto la mancanza di un vedo debugger. Con Arduino, potresti impazzire per cercare di capire alcuni errori nella scrittura del software: il debugger su seriale di cui dispone, non ti permette di avere accesso diretto ai registri del microcontrollore. Ecco perchè la sua diffusione è ancora prerogativa degli ambienti hobbistici e non di quelli professionali. Quando i signori di Arduino riusciranno ad integrare nel loro IDE ad esempio il Dragon dell'Atmel, allora invaderanno il mercato embedded!

Per quanto riguarda la tua applicazione, anche se concettualmente sembrerebbe molto semplice, potrebbe risultare più sofisticata del previsto a causa delle limitate prestazioni del microcontrollore Atmel AT328 di Arduino UNO (ridotta velocità di esecuzione del programma e gestione interrupt). Magari ci riuscirai anche, tuttavia se devi iniziare a fare dei filtraggi veloci sul segnale in ingresso, ti accorgerai di questo aspetto.

Fammi sapere se riuscirai ad implementare con successo la tua applicazione!
FPVxfun non è collegato   Rispondi citando
Vecchio 21 novembre 14, 16:18   #9 (permalink)  Top
User
 
L'avatar di dannybon
 
Data registr.: 16-05-2006
Residenza: Firenze - Augusta
Messaggi: 1.148
Grazie mille per la risposta e per i link.
Volevo sfruttare questo progetto per cominciare con arduino, banalmente potrei fare con 4 switch e un servo.....
Una domanda cos'è l'interrupt?
Provo a mettere il progetto sul forum di arduino vediamo se incrociando le ricerche riesco a far muovere qualcosa.
Se funziona l'applicazione sarai il primo a saperlo
__________________
Danny
dannybon non è collegato   Rispondi citando
Vecchio 22 novembre 14, 22:54   #10 (permalink)  Top
User
 
L'avatar di FPVxfun
 
Data registr.: 08-10-2014
Residenza: Verona
Messaggi: 420
forse è meglio che frequenti un po' di più il forum di Arduino.

L'interrupt è una routine software di gestione asincrona di eventi (cambio di stato di un pin, variazione di un bit di un registro, scadenza di timer, ...). Serve per gestire eventi veloci facendo uso di risorse hardware dedicate.
FPVxfun non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
Miscelare segnali PPM con arduino felis Circuiti Elettronici 16 12 aprile 16 18:03
Collegamento ppm da radio a ricevente diretto, possibile? EnriVincenzi Radiocomandi 25 16 settembre 14 09:22
Emulare con Arduino un segnale PPM baccothe Circuiti Elettronici 17 11 febbraio 14 19:10
aiuto con arduino e ppm alex-military Circuiti Elettronici 0 22 febbraio 13 13:52



Tutti gli orari sono GMT +2. Adesso sono le 01:09.


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