Corso di BASCOM 8051 - (Capitolo 2 6 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. S E R V O M O T O R I ( 2 ) Un Servomotore è un organo meccanico di potenza, in grado di gestire un movimento, il quale può essere comandato da un segnale logico di bassa o bassisima potenza. Tipico Servomotore o semplicemente Servo. Tramite questi dispositivi è possibile movimentare delle apparecchiature di notevole complessità. In questo caso è conveniente abbinarlo a dell'opportuna elettronica di controllo che ne aumenta la versalità di utilizzo. Abbinato ad un Microcontrollore può essere la soluzione ideale e, nel ns. caso, l'uso di un Mini Modulo risulta estremamente vantaggiosa tenendo delle facilitazioni offerte da un Linguaggio ad Alto Livello, come il BASCOM. 140
Modello di Nave Storica. Modello di Automobile. 141
Modello di Robot Cingolato. Delle specifiche Istruzioni del BASCOM facilitano il compito della gestione anche se la risoluzione che si riese ad ottenere non è la massima possibile. Se durante le prove del precedente esempio avete provato ad inserire tutti i possibili valori (0..255) per il numero Reload, avrete notato che solo un sottoinsieme di questi provoca uno spostamento regolare dell albero del motore. 142
Provando, ad esempio, il collegando ad Servo standard 900-00005, della Parallax, i valori validi per il numero Reload vanno da 7 a 46. Questi valori provocano lo spostamento rispettivamente alla posizione di inizio (Circa 0 ) a quella di fine rotazione (Circa 200 ). Da questo considerazione si ricava facilmente che con i 39 valori validi (da 7 a 46) si potranno ottenere solo altrettante posizioni dell albero. La risoluzione sulle posizioni risulta quindi essere di 200 /39 posizioni = 5,13. Se nel'applicazione in questione la risoluzione non dovesse essere sufficiente, e si volessero otterere delle precisioni maggiori, è sufficiente utilizzare delle tecniche diverse che fanno ricorso ad Istruzioni a Basso Livello. Il primo esempio di questo capitolo usa come organo di comando per l utente il tasto rosso T1 della GMM TST3 che provoca la rotazione in senso Orario del Servo, oppure il tasto verde T2 che provoca la rotazione in senso Antiorario. Per poter acquisire i tasti T1 e T2 il Mini Modulo deve essere montato sullo zoccolo Z1 della GMM TST3. Siccome il segnale P1.3 su CN4.3, usato dai precedenti esempi, non è collegato allo zoccolo Z1, si deve inevitabilmente usare un segnale diverso per il controllo del Servo; per questo viene scelto il P4.0 su CN4.9. Esaminando i sorgenti dei programmi si nota la facilità con cui si può effettuare la variazione del segnale di controllo Servo (PCM). 143
E S E M P I D I U T I L I Z Z O L'Esempio.043 illustra come utilizzare le Istruzioni del BASCOM 8051 per gestire dei Servo. Montare Mini Modulo su Z1 della GMM TST3, collegare PCM del Servo a CN4.9. La gestione del Servo motore viene effettuata con le istruzioni ad alto livello del BASCOM. Queste generano un segnale che non segue esattamente le specifiche temporali del segnale PCM di controllo del Servo, ma che comunque riesce a farlo muovere correttamente. Le istruzioni del BASCOM usano un Interrupt periodico generato dal TIMER0, che quindi non può essere usato per altre funzioni!!! La Risoluzione (=durata) delle Temporizzazioni è definita dal valore di Reload impostato con l'istruzione Config Servo... e dalla posizione settata con l'istruzione Servo..., come indicato nell'aiuto in linea del BASCOM. Questo Demo imposta un tempo di reload minimo che non provoca vibrazioni del Servo, pari a 50 µs, in modo da ottenere una risoluzione massima sulle posizioni. Schema Applicativo per Collegare il Servo all'esempio.043. 144
L'Esempio.044 è un'evoluzione dell'esempio.042 in cui, per ottenere una precisione decisamente superore, sono state adoperate delle Istruzioni a Basso Livello in Assembler. Le caratteristiche operative rimangono le stesse dell'esempio citato ma le prestazioni raggiungono dei livelli molto alti. Se volete rendervi conto dei progressi ottenuti potete sperimentare praticamente il programma e, supratutto, studiare le strategie messe in campo per ottenere tali risultati. Nel sorgente di questo programma si è avuto cura di spiegare, nel dettaglio, le ragioni che concorrono a giustificare le scelte adottate. A questo proposito sono stati anche esplicitate le trattazioni matematiche necessarie allo scopo. Studiando questo programma si potranno trarre degli ottimi spunti per affrontare, e risolvere, le possibili future problematiche. Schema Applicativo per Collegare il Servo all'esempio.044. 145
Esempio.043. Servomotore. Agendo sui due tasti (T1 e T2) si fa muovere il servo nelle due direzioni. Premendo entrambi si azzera a 90 la posizione e si suona il Bell. Definizioni aggiunte: Nessuna Dichiarazioni aggiunte: Nessuna Istruzioni aggiunte: Nessuna Operatori aggiunti: Nessuno Programma di Esempio.043 del corso BASCOM 8051. Il programma muove un Servo motore nelle due direzioni tramite i pulsanti T1, T2 della GMM TST3. Premendo contemporaneamente entrambi i tasti si posiziona il servo nella posizione centrale (90 ) e si emette un Bell con il Buzzer. Il segnale prescelto per controllare il Servo è il P4.0 del Mini Modulo riportato sul connettore CN4.9 della GMM TST3. Per le prove del programma è stato usato il modello Servo standard 900-00005 prodotto dalla Parallax. Il programma si presenta su una console seriale dotata di monitor, con un protocollo fisico costante a 19.200 Baud, 8 Bit x chr, 1 Stop bit, Nessuna Parità. Questa console può coincidere con un sistema in grado di gestire una comunicazione seriale in RS 2 3 2. Al fine di semplificarne l'uso si può usare un PC dotato di una linea COMx, che esegue un programma di Emulazione Terminale come HYPERTERMINAL o l'omonima modalità offerta dal BASCOM 8051 (vedere Configurazioni IDE). L'uso della console è facoltativo infatti il programma funziona anche senza. Il programma funziona solo se la GMM 5115 è montata sullo zoccolo Z1 della GMM TST3!! 146
Esempio.044. Servomotore. Da Menù si può scegliere di muoversi in qualsiasi posizione compresa trà 0 e 180. Gestione Tramite Istruzioni a Basso Livello. Definizioni aggiunte: $Asm ; $End Asm Dichiarazioni aggiunte: Nessuna Istruzioni aggiunte: <Istruzioni assembly del microcontrollore> Operatori aggiunti: Nessuno Programma di Esempio.044 del corso BASCOM 8051. Il programma consente di posizionare un Servo motore in tutte le posizioni della sua corsa (0 200 ), tramite valore in gradi inserito da console. Il segnale prescelto per controllare il Servo è il P1.3 del Mini Modulo, riportato sul connettore CN4.3 della GMM TST3. Tale segnale non è generato con le istruzioni per Servo del BASCOM, bensì con Istruzioni a basso livello. Per ottenere la massima risoluzione sulla posizione del motore si è dovuto ottenere la massima risoluzione sulle temporizzazioni; questo è stato possibile solo con parti di programma in Assembly. Per le prove del programma è stato usato il modello Servo standard 900-00005 prodotto dalla Parallax. Il programma si presenta ed usa una console seriale dotata di Monitor e Tastiera, con un protocollo fisico costante a 19.200 Baud, 8 Bit x chr, 1 Stop bit, Nessuna Parità. Questa console può coincidere con un sistema in grado di gestire una comunicazione seriale in RS 2 3 2. Al fine di semplificarne l'uso si può usare un PC dotato di una linea COMx, che esegue un programma di Emulazione Terminale come HYPERTERMINAL o l'omonima modalità offerta dal BASCOM 8051 (vedere Configurazioni IDE). Il programma funziona solo se la GMM 5115 è montata sullo zoccolo Z2 della GMM TST3!! 147