
![]() | #31 (permalink) Top | |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| tentativo
un ipotesi semplicistica potrebbe essere che i 4 cavi del GPTA010 possano essere: VCC (già verificato) GND (già verificato) RX TTL ??? da verificare TX TTl ?? da verificare. potrei procedere per tentativi.. per esempio alimentando il GPS con il tester verificare la tensione media sui due cavi TX/RX ovviamente mi aspetto nel TX una tensione.. mentre in RX nessuna . Quindi individuato il TX provo ad inserire tale direttamente nell'ingresso del max 232 che poi verso il PC con Hyper terminal.. va be, scusate ancora.. a dopo Citazione:
| |
![]() | ![]() |
![]() | #32 (permalink) Top |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| funziona!
ok ci siamo funziona.. ..le mie ipotesi erano corrette ...per cui mi basta solo acquistare ardupilot, comunque appena torno da questi 4 giorni di viaggio... creo un post apposito.. Arduino-UAV a presto |
![]() | ![]() |
![]() | #33 (permalink) Top | |
User Data registr.: 19-12-2005 Residenza: Roma
Messaggi: 440
| Citazione:
http://www.baronerosso.it/forum/fpv-...-e-lm1881.html Non é ancora aggiornato con la versione GPS. Un saluto, E.
__________________ Primum vivere, deinde philosophare. | |
![]() | ![]() |
![]() | #34 (permalink) Top | |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| ok, ad intuito credo che..
...se vai sugli esempi di arduino, esattamente l'argomento che tratta i sensori, bene per esempio prendi Ping trovi pinMode(pingPin,INPUT); duration = pulseIn(pingPin, HIGH); ecco pulseIn è la funzione che cerchi, converte la durata dell'onda quadra in un numero long , ad intuito credo che è ciò che cerchi !! . adesso sono fuori sicilia.. non posso fare prove.. ma se attacchi il segnale che esce dalla ricevente.. ecc.. se vuoi attraverso l'oggeto map( duration, range del valore, range desiderato) puoi traslare i valori prelevati verso un intervallo che desideri. a dopo Citazione:
| |
![]() | ![]() |
![]() | #35 (permalink) Top |
User Data registr.: 23-04-2008 Residenza: Firenze
Messaggi: 1.108
|
Sei un drago, Fausto! ![]() Tienici al corrente, se non altro farai sognare noi miseri vecchi, modellisti e sperimentatori da salotto ![]() P.S. La storia della guida automatica intriga... a me era venuta l'idea di iniziare con una macchinina, più semplice da pilotare (manca la terza dimensione e non risente del vento!) e sicuramente anche più robusta in caso di ... ehm... errori di guida! ![]()
__________________ 1) Honey Bee FP 2) Mini Titan (V1 e V2) 3) Paracopter 4) Ultra-Micro J-3 Cub 5) Blade msr 6) Ultra-Micro T-28 Trojan 7) Team Losi Mini T 8) Blade mcpx 9) Turnigy 1/16 Nitro Buggy 10) Basher Nictro Circus 1/10 SCT |
![]() | ![]() |
![]() | #36 (permalink) Top |
User Data registr.: 10-06-2007 Residenza: Sansepolcro (Ar)
Messaggi: 1.948
|
Qui trovi informazioni e progetti interessanti anche se non sono per arduino Hardware - Paparazzi |
![]() | ![]() |
![]() | #37 (permalink) Top | |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| 10 Hz !!!
ciao marco .. ...scaricando la versione ultima 2.7 ecc.. cerco di capire come adattare il GPS GTPA010 che funzia a 10 Hz e 38.400 bps .. nel file di include GPS.. ho la possibilità di modificare il bps ..però mi sorge un dubbio... poiche di progetto ardupilot funziona max a 5 hz, non vorrei che una velocità doppia nn possa essere gestita a prescindere della velocita della seriale.. perchè ovviamente da un lato i dati arrivano.. e si può prenderli correttamente a 38.400 , però poi gli stessi devono arrivare dentro la logica di funzionamento rispettendo dei tempi.. poi chè ho letto da diverse parti dei sorgenti max 5hz ..mi sorge il dubbio! qui c'è la funzione di setaggio: void change_to_sirf_protocol(void) { Serial.begin(4800); // First try in 4800 delay(300); for (byte x = 0; x <= 28; x++){ Serial.print(byte(gps_buffer[x])); //Sending special bytes declared at the beginning } delay(300); Serial.begin(9600); // Then try in 9600 delay(300); for (byte x = 0; x <= 28; x++){ Serial.print(byte(gps_buffer[x])); } Serial.begin(EM406_GPS); //Universal Sincronus Asyncronus Receiveing Transmiting } Citazione:
| |
![]() | ![]() |
![]() | #38 (permalink) Top | |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| prova fatta
ciao Tom sei della stessa annata mia! allora oggi ho potuto fare una prova, funziona! l'ipotesi era corretta, solo che arduino legge i dati dalla ricevente portando con se piccole sbavature.. tenendo fermo lo stick della radio il segnale ogni tanto porta delle piccole variazioni.. che poi trasferite sul servo significano piccoli e fastidiosi movimenti.. ...occorre per tanto un'istruzione di controllo , che effettua l'assegnamento del nuovo valore solo se il valore assoluto della differenza è > 10 ..in modo da avere un margine.. if ( abs( pulseIn(ENG, HIGH) - RX_engine ) > 10) RX_engine = pulseIn(ENG, HIGH); Quindi aggiorna il valore di RX_engine solo se il valore assoluto della differenza con il precedente valore supera 10. Con questa istruzione le sbavature vengono corrette. Questo software è il primo passo.. vale a dire prendo il segnale dalla ricevente... se non cambia rispetto all'ultimo ordine... allora legge dalla lista dei waypoint per andare ad eseguire il movimento del prox punto.. #include <Servo.h> Servo myservo1,myservo2; // create servo object to control a servo const int ENG = 2; // pin lettura ricevente segnale motore INGRESSO const int DIR = 4; // pin lettura segnale servo di direzione INGRESSO const int IR = 8; // pin lettura segnale infrarosso INGRESSO const int ENG_OUT = 9; // pin per segnale motore da inviare USCITA const int DIR_OUT = 10; // pin per segnale direzione servo da inviare USCITA long engine; // segnale imposto per la potenza motore long direct; // segnale imposto al servo di direzione long RX_engine; // segnale proveniente dalla ricevente potenza motore long RX_direct; // segnale proveniente dalla ricevente servo direzione int val_1,val_2; //__________________________________________________ ________________ void setup() { // initialize serial communication: Serial.begin(38400); myservo.attach(ENG_OUT); pinMode(ENG, INPUT); pinMode(DIR, INPUT); pinMode(IR, INPUT); } //__________________________________________________ ________________ void loop() { RX_engine = pulseIn(ENG, HIGH); RX_direct = pulseIn(DIR, HIGH); val_1 = map(RX_engine, 1050, 1850, 0, 180); val_2 = map(RX_direct, 1050, 1850, 0, 180); myservo.write(val_1); } Citazione:
Ultima modifica di faustog_2 : 15 aprile 12 alle ore 00:13 | |
![]() | ![]() |
![]() | #39 (permalink) Top | |
User Data registr.: 18-04-2008 Residenza: milano
Messaggi: 405
| Citazione:
aggiungerei che il pulsein e la libreria servo non sono i metodi piu efficienti ... | |
![]() | ![]() |
![]() | #40 (permalink) Top |
User Data registr.: 18-04-2008 Residenza: milano
Messaggi: 405
| PPM.h
a supporto di quanto sopra allego il PPM.h che contiene un decoder ppm molto configurabile con validazione del frame, un driver pr 6 servi con risoluzione 1000 o 2000 count a seconda che si usi un 8 o 16 mhz, il driver è sincronizzato col ppm in ingresso per minimizzare la latenza.. il sistema è assolutamente glitch free perche: 1- sono disbilitati gli iterrupts primpostati dalla piattaforma arduino 2-è implementato un anticollisione fra i 2 interrupts del driver e quello di scansione dell'ingresso ppm l'ingresso ppm è testato periodicamente tramite interrupt in modo da non risentire della lunghezza del programma utente (es. autopilota) |
![]() | ![]() |
![]() |
Bookmarks |
| |
![]() | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
Coassiale mixed controller con arduino | catman | Circuiti Elettronici | 12 | 01 aprile 11 23:17 |
quadricottero con arduino 2009 | sailormann26 | Aeromodellismo Progettazione e Costruzione | 0 | 27 dicembre 10 23:12 |