| |||||||
| Registrazione | Gallery | FAQ | Lista utenti | Social Groups | Calendario | Cerca | I messaggi di oggi | Segna forums come letti |
![]() |
| | Strumenti discussione | Visualizzazione |
| |
| | #1 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| Citazione:
Un modulo dsm2 lo cannibalizzi facile facile da una dx4/dx5 che trovi sul mercato dell'usato a 40 , considerando che risparmi su arduino tutto sommato mi sembra ragionevole..
__________________ Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo Grazie "TRANQUILLO" FAI 15766 | |
| | |
| | #2 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| poche righe ma potenti
ciao allora ecco qui poche righe ma potenti, in ASSEMBLER, fatte per un Pic 16F876 gestisce un Robot dotato di due motori solamente quindi gestisce un segnale PPM di soli due controlli, il terzo gestisce la direzione.. comunque con lo stesso criterio ho progettato un firmware che gestisce 6 servo... il risultato è uguale.. funziona. ; __________________________________________________ ________ ; ; MAIN LOOP ; ------------------------------------ ; LOOP btfss INTCON,T0IF ; Controlla che non siano scaduti i 20 mS GOTO XX ; se TMR0 < 20 mS allora vai XX CALL MOVE_ALL ; altrimenti vai in MOVE_ALL XX BTFSS READ_IR_1 ; Se nn legge l infrarosso salta e legge la seriale call IR_SEND ; altrimenti chiama IR_SEND btfss PIR1,RCIF ; Receive data from Serial Port GOTO LOOP ; se non riceve dati vai in LOOP MOVWF INDF ; carica in INDF il valore INCFSZ FSR,F ; incrementa l'indirizzo di INDF = FSR GOTO LOOP ; se FSR < 256 allora vai LOOP RESET MOVLW 253 ; Nel caso in cui FSR ha raggiunto il 256 MOVWF FSR ; Allora riponi il valore iniziale di 251 GOTO LOOP ; infine torna in LOOP lo stesso codice si può implementare su Arduino.. la tecnica è sempre la stessa in base all'ordine d'arrivo.. ogni byte sarà dedicato al canale desiderato.. assolutamente sconsigliato inviare posizione valore.. per esempio immaginate che contemporaneamente cambino tre canali su 5 per esempio.. allora dovremmo inviare 2 x 3 = 6 byte.. invece nela caso mio 5 ! se cambiano 5 canali nella prima ipostesi 2 x 5 = 10 byte.. invece la pesantezza della mia soluzione è costante.. vero è che se cambia solo un canale anzichèe 2 bute ne trasferiamo 5 ma alla fine stiamo parlando di un sistema che da un punto di vista pratico è solido. |
| | |
| | #3 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| Citazione:
considerando 2 byte di header 1.5 byte per canale (1024 passi) uno di crc per trasmettere 8 canali trasmettiamo 15 byte ovvero 120bit. anche trasmettendoli 50 volte al secondo (in realtà un po' meno visto che la lunghezza del frame ppm è 22.5ms) ci ritroviamo a 6000 bit/sec onestamente abbiamo tutto il margine di sicurezza per riceverli preparare il frame ppm per la routine che nell'interrupt genererà i pulse e ritornare indietro... Trasmettere le differenze non è salutare, se il micro dovesse perdersi dei pezzi per strada, soprattutto perchè il PC dovrebbe sempre ragionare nella logica che tutto sia sempre stato ricevuto e che non ci sia stato un reset magari dovuto al watchdog del micro.
__________________ Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo Grazie "TRANQUILLO" FAI 15766 Ultima modifica di romoloman : 18 giugno 12 alle ore 20:10 | |
| | |
| | #4 (permalink) Top | |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| ok
allora.. c' è da dire che il sistema che ho realizzato funziona su Ethernet! quindi una portante sarebbe improponibile ..se guardi l'immagine ti fa capire meglio il progetto.. il tutto è rivolto verso la Domotica.. per cui in ufficio o in un parco in remoto devo poter pilotare un Robot.. o un sistema che attrverso il PPM controlla posizione servo, regolazioni motore , relè, pulsanti, avere indietro dati di sensori, allarmi ecc.. comunque nel nostro caso come modello uso un semplice robot che si muove attraverso due motori ricavati da avvitatori, e un radar infrarosso che legge ostacoli, poi aggiungo, dei sensori di pressione in caso di ostacoli bassi ecc.. bene il sistem in rete Ethernet deve ridurre il piu possibile il trafico, la quantità di dati.. per cui prende per buono gli ultimi comandi inviati.. salvo variazioni che appunto richiede la trasmissione del treno di byte completo, ovviamente se vogliamo 10 bit per segnale PPM allora i byte diventano 16, ovvero 2 per ogni onda quadra.. di cui sappiamo che il secondo byte usa solo 2 bit.. a meno che si prepara un firmware che compatta le informazioni, per cui il tutto nel caso di 8 canali diventa 10 byte ! per ogni variazione. che verrà inviata solo dopo ogni 16 mS ! per evitare problemi di mancato coordinamento il watchdog si può disattivare.. e non creare problemi in ogni caso se esso viene impostato su tempi oltre i 30 mS nn può interferire con i 16 mS la discussione mi sta cominciando a piacere a presto fausto Citazione:
| |
| | |
| | #5 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| Citazione:
supponi di avere in Codice: uint8_t buffer[12] i 12 byte corrispondenti ai canali letti dalla seriale
uint16_t val[]={0,0,0,0,0,0,0,0};
for (int i=0; i<4; i++){
val[i*2]= buffer[i*3]<<4;
val[i*2]|= buffer[i*3+1]>>4;
val[i*2+i]=buffer[i*3+1]<<8;
val[i*2+i]|=buffer[i*3+2];
} Quanto a disabilitare i watchdog... de gustibus... ma io li lascio abilitati per sanità di funzionamento, se il micro si pianta deve ripartire. Ci manca più che una radio si inchiodi con un bello schermo di blocco...
__________________ Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo Grazie "TRANQUILLO" FAI 15766 Ultima modifica di romoloman : 18 giugno 12 alle ore 21:23 | |
| | |
| | #6 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| Citazione:
Codice: uint8_t buffer[12] i 12 byte corrispondenti ai canali letti dalla seriale
uint16_t val[]={0,0,0,0,0,0,0,0};
for (int i=0; i<4; i++){
val[i*2]= buffer[i*3]<<4;
val[i*2]|= buffer[i*3+1]>>4;
val[i*2+1]=buffer[i*3+1]<<8;
val[i*2+1|=buffer[i*3+2];
}
__________________ Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo Grazie "TRANQUILLO" FAI 15766 | |
| | |
| | #7 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| HTTPUrlConnection - fantastico
salve.. una osservazione.. premetto che mi trovo in vacanza.. però con me PC e Internet.. ..dunque tra i miei vecchi lavori trovo un'applicazione java che usa la classe HTTPUrlconnection... in sostanza una qualunque applicazione java può comunicare con un web server.. magari dietro c'è un'applicazione in PHP, non importa.. con questo se dotiamo la nostra applicazione di controllo seriale e di HTTPUrlConnection abbiamo tutto per dialogare direttamente con applicazioni fatte con Easy php, Joomla ecc.. !!!! Non è fantastico? vero che in futuro si dovrà sviluppare su Android.. ma al momento volgio percorrere questa vecchia strada.. a dopo
|
| | |
| | #8 (permalink) Top | |
| User Data registr.: 11-04-2012
Messaggi: 6
| Citazione:
ok, questo è parlare. la cosa si fa interessante. però non voglio intasare la discussione andando OT. ti scrivo un pm. | |
| | |
![]() |
| Bookmarks |
| Strumenti discussione | |
| Visualizzazione | |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| Coassiale mixed controller con arduino | catman | Circuiti Elettronici | 12 | 02 aprile 11 00:17 |
| quadricottero con arduino 2009 | sailormann26 | Aeromodellismo Progettazione e Costruzione | 0 | 28 dicembre 10 00:12 |