Non mi assumo nessuna responsabilita' per danneggiamenti, perdita di dati
o danni personali come risultato diretto o indiretto dell'uso delle
informazioni contenute in queste pagine.
Questo materiale e' fornito cosi' com'e'
senza nessuna garanzia
implicita o esplicita.
Servomotore |
ServomotoreParlando di servomotori mi riferiro' in particolare a quelli usati nel modellismo, tipicamente per il controllo dell'acceleratore o degli alettoni o dello sterzo; mi riferiro' esclusivamente a servi analogici, il caso dei servi digitali e' del tutto simile, cambia solo la frequenza degli impulsi che e' piu' alta nei servi digitali. Un servo ha solitamente una forma piu' o meno rettangolare, ha un albero che esce da un lato solitamente dotato di attacco millerighe e un cavetto a tre fili. Due dei tre fili servono chiaramente per alimentare il servo, il terzo filo porta il segnale di comando al servo. Un servo non ruota, un servo si posiziona ed e' in grado di mantenere in modo autonomo la posizione indicata dal segnale di controllo. In funzione del modello l'albero del servo ha piu' o meno liberta' di movimento, difficilmente supera comunque i 270 gradi di rotazione prima di incontrare un fermo meccanico; nel movimento dell'albero si identifica una posizione iniziale, albero ruotato tutto da una parte, ed una posizione finale, albero ruotato tutto nel senso opposto. Il segnale di controllo indica al servo quale debba essere la posizione dell'albero. Come si vede nella figura sotto il segnale di controllo ha un andamento impulsivo: e' costituito da un breve impulso largo solitamente da 1ms a 2ms seguoto da una pausa di 20ms. La larghezza dell'impulso determina la posizione del servo: 1ms corrisponde alla posizione iniziale, 2ms corrisponde alla posizione finale; tutte le posizioni intermedie sono possibli. In funzione del modello questi valori possono variare leggermente, alcuni garantiscono che la variazione da 1ms a 2ms copra 90 gradi di rotazione anche per servi che offrono una maggiore liberta'. La morale della favola e' che servi diversi possono accettare range di controllo differenti, non resta che sperimentare.
Servo testerQuesto e' lo schema elettrico di un semplice driver per servomotori, il tutto e' basato su un 555 e il controllo della posizione avviene tramite il potenziometro sulla sinistra. E' molto semplice da realizzare e funziona molto bene, tra le altre cose offre un modo molto veloce per verificare il range di pilotaggio e di movimento dei servi.
Servo stick
Ora passiamo al servo controller computerizzato:
dopo diverse prove ed esperimenti sono approdato a servo
stick, il nome dipende dalla sua forma che imita la famosa
gomma del ponte.
Registri di controlloVisto che si parla di ModBus sara' necessaria una tabella che descriva i registri mostrati da questo controller, ovviamente il dispositivo e' slave e il suo indirizzo e' fisso a 0x02. Qualcuno potrebbe notare che gli indirizzi dei registri non seguono esattamente lo standard ModBus, infatti mi sono permesso di utilizzare direttamente gli indirizzi di memoria del microprocessore, per me e' molto piu' chiaro cosi'.
Il registro di controllo non e' utilizzato nella versione 0.06,
volendo puo' essere utilizzato come registro spare per
verificare il dialogo con la scheda. I registri velocta' determinano, come suggerisce il nome, la velocita' di movimento di ciascun servo, 0x01 corrisponde alla velocta' minima, 0xff corrisponde alla velocita' massima, praticamente limitata solo dall'effettiva velocita' di risposta del servo. La velocita' viene misurata in step massimi eseguibili per unita' di tempo: la velocita' di 0x01 impone al servo di muoversi di un solo punto (1/256esimo del movimento totale) per ogni unita' di tempo. Una unita' di tempo corrisponde ai 20ms di pausa che separano un impulso dal successivo. I registri posizione contengono in ogni istante la posizione del servo, per quanto non sia vietato e' sconsigliato modificare direttamente il valore di questi registri per evitare comportamenti inaspettati dei servi. Collaudo
Adesso che il servo controller e' pronto manca ovviamente la cosa
piu' importante: chi comanda il servo controller? Servoseq e' un programma da riga di comando che legge la sequenza di operazioni da un file di testo e invia le coordinate da seguire al servo controller. Il set di comandi e' veramente ridotto all'osso, ma con questi semplici comandi e' possibile comporre scenari piu' complessi come: la camminata di un ragno a sei zampe o i movimenti di un braccio nello spazio circostante. L'uso di servoseq e' del tutto sperimentale in attesa di un software e di una interfaccia utente piu' complessa.
Trackball
Un giorno trovo nella mia cantina un vecchio trackball seriale,
probabilmente dei tempi dei 286, e mi viene un'idea fulminante:
perche' non pilotare i servi tramite trackball?! Cosi' nasce la versione 0.07 di servo: solo due servi, uno legato alle X e l'altro legato alle Y del trackball. Visto che servo stick non e' collegabile direttamente ad un mouse, ha bisogno di un vero transceiver RS232 dall'altra parte per poter funzionare, ho utilizzato IR sil: una scheda elettricamente identica ma che fisicamente si presta meglio ad essere collegata ad un transceiver RS232. Qui sotto il piano di montaggio del modulo IR sil.
Qui sotto lo schema delle connessioni per poter utilizzare la scheda IR sil per piloare i servi tramite mouse o trackball.
Tavoletta graficaPurtroppo l'appetito vien mangiando e un bel giorno ho trovato un altro residuato bellico in fondo alla mia cantina: una tavoletta grafica Acecad D-9000; per quanto sia perfettamente funzionante non l'ho mai usata, cosi' mi sono detto: "Perche' non usarla per pilotare i servi!?!". Dopo tutto una tavoletta grafica e' molto piu' precisa di un trackball o di un mouse e finalmente potrebbe approfittarne per uscire dalla buia cantina e farsi un giretto tra servomotori e azionamenti vari.
All'inizio sembrava semplice: sostituisco il trackball con la tavoletta, imposto l'emulazione di mouse et voila'... non funziona niente! Reimposto, punzono, giro, brigo, meno, ma il risultato non cambia: i servi non si muovono o si muovono a casaccio! Dopo lunga e attenta riflessione scopro che: il trackball lavora in modalita' Microsoft mouse, ma non so per quale motivo impostando la tavoletta in emulazione di Microsoft mouse questa rimane perfettamente muta. La tavoletta funziona invece perfettamente in emulazione di System mouse! Ecco quindi una nuova versione di firmware per il servo controller, la 0.08, ora deve essere in grado anche di parlare il System mouse-ese se voglio giocare con la tavoletta grafica. Per fortuna i collegamenti rimangono gli stessi del trackball, l'unica differenza rispetto a prima e' nel firmware caricato sul modulo IR sil. Download
|
Questo sito e' stato realizzato interamente con vim.
Grazie a tutta la comunita' open source, alla free software foundation
e chiunque scriva software libero.