Controllo -> Servo R/C - www.robot-home.it -

 

Sunday 05th February, 2012 - 19.09:10 -

 

Site Index

-- Forum --

:: Home page ::
:: Progetto ::
:: Controllo ::
:: Codice ::
:: Elettronica ::
:: Struttura ::
:: Media ::
:: Links ::
:: Chi sono? ::

Forum news
Sistema di riferimento OpenCV
Inviato il 15/12/10 - ore: 18:12
da: lordjoseph
sul Forum: Libreria OpenCv

Trasformare un vettore (di rotazione) in una matrice
Inviato il 4/12/10 - ore: 11:12
da: lordjoseph
sul Forum: Libreria OpenCv

[Tutorial] Nokia Qt4, Eclipse & OpenCV 2.11 C++
Inviato il 17/11/10 - ore: 12:11
da: Myzhar
sul Forum: Zona QT

[Tutorial] Installare OpenCV 2.0 con Visual Studio
Inviato il 25/10/10 - ore: 12:10
da: Myzhar
sul Forum: Libreria OpenCv

[Perl] Facebook API
Inviato il 18/9/10 - ore: 23:09
da: evilmight
sul Forum: Altri linguaggi

Sponsor TradeDoubler
Support the project
Ti sono stato utile?
Offrimi un caffè
Marchio di accettazione
Sponsor SoloDomini
R/C Servo Tutorial

Tutorial Servomotore R/C

Il servomotore R/C (Servo R/C) è un dispositivo miniaturizzato che contiene un circuito elettronico di controllo digitale, un motore, un blocco di riduzione e un sensore di retroazione della posizione, il tutto in un piccolo case plastico o di alluminio.

Originariamente costruito a componenti discreti, oggi realizzato su di in un singolo circuito di controllo integrato, il servo converte la lunghezza dell’impulso di controllo in un livello di tensione, confronta tale livello con il segnale ottenuto dal sensore di posizione e pilota il motore in modo da annullare la differenza tra i due segnali. L’effetto è quello di controllare la posizione del motore con un unico semplice segnale. Tipicamente gli R/C Servo hanno aperture di rotazione che vanno da 90° a 120°, con 2 msec di impulso di controllo per portarsi a fine corsa e 1 msec per portarsi ad inizio corsa. Alcuni motori possono raggiungere un’apertura massima di 180°, ma hanno un impulso di comando che varia tra 0.8 msec e 2.2 msec.

Questa tipologia di motori `e oggi particolarmente usata in modellismo per controllare gli organismi di sterzo in automodelli o le superfici di controllo degli aeromodelli.
Il segnale di controllo per un servo R/C è assimilabile ad un PWM il cui Duty Cycle determina la posizione dell’asse di rotazione. Il periodo del PWM può variare tra 20 msec e 30 msec, l’impulso di comando (dt) varia tra 1 msec (posizione iniziale) e 2 msec (posizione finale), frazioni intermedie determinano posizioni intermedie.

Controllo del Servo Motore Per controllare con precisione il servo motore è necessario generare un segnale PWM in grado di variare il Tempo in cui rimane alto con una risoluzione di 11 usec.
Per ottenere una tale precisione è necessario disporre di un sistema di controllo Real Time.

Descrizione della struttura di supporto Il più semplice sistema Real Time, in grado di gestire un protocollo di comunicazione tramite porta parallela è realizzabile tramite un microcontrollore, in questo caso il Microchip PIC 16F628 descritto di seguito.

Il PIC 16F628
Il PIC 16F6284, prodotto dall’americana Microchip, è un microcontrollore RISC di ridotte dimensioni dotato di memoria flash cancellabile e riprogrammabile elettricamente migliaia di volte. Questa sua caratteristica lo rende adatto per lo sviluppo di prototipi.
Quale processore di classe RISC è programmabile con soli 35 comandi assembler, ogni istruzione impiega un unico ciclo di clock per essere eseguita (eccetto le istruzioni di controllo di flusso che ne occupano due).
Il microcontrollore è provvisto di un clock interno a 4Mhz e può essere dotato di un clock esterno fino a 20Mhz per applicazioni che richiedono velocità di calcolo superiori.
L’interfacciamento esterno è garantito da 18 pin, dei quali 16 hanno funzioni di I\O e uno è in grado di gestire interruzioni hardware esterne.

Alcuni pin sono utilizzati per gestire funzionalità avanzate particolari:
• Due convertitori Analogico-Digitale
• Modulo di Comunicazione Seriale USART
• Un comparatore di livello
• Programmazione “In Circuit”
La circuiteria interna fornisce due timer a 8bit e uno a 16bit prescalabili, utili per la generazione di segnali PWM o per gestire dei semplici contatori, grazie anche al modulo CCP (Capture and Compare).
Il processore `e infine dotato di tre tipi di memoria:
• 2048x14 bytes di memoria programma FLASH;
• 224x8 bytes di memoria RAM per le variabili di programma;
• 128x8 bytes di memoria EEPROM non volatile per i dati.

Descrizione del firmware di controllo del PIC 16F628 Il PIC è programmato in modo da generare il segnale PWM descritto in figura. Il duty cycle del segnale è regolabile tramite PC attraverso la porta parallela o tramite una pulsantiera integrata sul circuito di controllo, utile soprattutto in fase di test.
Il firmware è costituito da un ciclo infinito in cui il PIC controlla gli ingressi per riscontrare eventuali cambiamenti di stato dovuti alla pressione dei pulsanti o all’invio di un comando da PC e adegua la durata dell’impulso di controllo al segnale ricevuto.
Il segnale PWM è generato tramite l’impiego del modulo CPP e degli interrupt interni.
Il registro TMR1 contiene il valore 49536, valore tale che incrementando il registro ad ogni ciclo di clock, si avrà un interruzione per overflow dopo 65536-49536=16000 colpi di clock, cioè dopo 20msec, il periodo principale del PWM. La routine di interruzione provvederà a ripristinare il valore iniziale di TMR1 in modo da far ripartire il ciclo. Il registro CCP contiene il valore
SetCCP = 64536 - (( unsigned long int ) Gradi * 11111111)/1000000;
che, incrementato ad ogni ciclo di clock, andrà in overflow dopo un tempo tale da generare l’impulso di comando relativo alla posizione che il motore deve assumere (“Gradi”) relativamente alla posizione ottenuta per un impulso di 1msec. Il modulo CCP provvede automaticamente ad invertire il valore dell’uscita RB3, alta all’inizio del ciclo, bassa all’arrivo dell’interruzione.
All’avvio partono entrambi i timer. Quando il timer di impulso va in overflow viene generata un’interruzione interna e la routine di gestione provvede ad abbassare il livello dell’uscita di controllo del servomotore. All’overflow del primo timer (ogni 20 msec) il ciclo riparte da capo riportando automaticamente a livello alto il segnale di controllo.
Il codice del Firmware è stato realizzato in C e compilato tramite PICCLite7. ( Codice servo motore)
Il firmware permette al motore tre movimenti base: rotazione di 1° in senso orario, rotazione di 1° in senso antiorario, posizionamento neutrale a 45°.


Il tutorial ti è stato utile?
Offrimi un caffè, sarò felice di realizzarne di migliori.
Marchio di accettazione
Sponsor Criteo
Sponsor Heyos
Copyright 2006© - Everyone can use the contents of these pages in the way he thinks better. Webmaster Myzhar. Site Admin