servo motor

5
  Controlo de um Servo-Motor  Servo-Motor por Nuno Monteiro & Gabriel Dinis Eng. Electrotécnica, UTAD Junho de 2001 [email protected]  [email protected]  Um servo-motor é um pequeno dispositivo cujo veio pode ser posicionado numa determina da posição angular de acordo com um sinal codificado que lhe é enviado. Enquanto esse código persistir na entrada, o servo irá manter a sua posição angular. Se o código de entrada variar a posição angular também varia. Na prática os servo-motores são usados no controlo de aviões telecomandados, robots, etc. Figura 1 - Servo-Motores Os servo-motores são extremamente úteis em robótica. Os motores são pequenos, possuem internamente o circuito de controlo, engrenagens redutoras, mecanismo de posicionamento por feedback e são extremamente potentes para o seu tamanho. Um servo possui 3 entradas. Uma é a alimentação (+5 V), outra é a massa e a outra é a entrada de controlo. Um servo é controlado enviando-lhe um sinal PWM (Pulse Width Modulation), ou seja, a posição angular irá depender da largura do pulso enviado. Figura 2 – Servo-Motor (mecanismo de feedback) Nuno Monteiro & Gabriel Dinis Eng. Electrotécnica, UTAD Junho de 2001 - 1 - 

Upload: msdhmsd1633

Post on 21-Jul-2015

49 views

Category:

Documents


0 download

TRANSCRIPT

Controlo de um Servo-Motor

Servo-Motorpor

Nuno Monteiro & Gabriel Dinis Eng. Electrotcnica, UTAD Junho de 2001 [email protected] [email protected] Um servo-motor um pequeno dispositivo cujo veio pode ser posicionado numa determinada posio angular de acordo com um sinal codificado que lhe enviado. Enquanto esse cdigo persistir na entrada, o servo ir manter a sua posio angular. Se o cdigo de entrada variar a posio angular tambm varia. Na prtica os servo-motores so usados no controlo de avies telecomandados, robots, etc.

Figura 1 - Servo-Motores

Os servo-motores so extremamente teis em robtica. Os motores so pequenos, possuem internamente o circuito de controlo, engrenagens redutoras, mecanismo de posicionamento por feedback e so extremamente potentes para o seu tamanho. Um servo possui 3 entradas. Uma a alimentao (+5 V), outra a massa e a outra a entrada de controlo. Um servo controlado enviando-lhe um sinal PWM (Pulse Width Modulation), ou seja, a posio angular ir depender da largura do pulso enviado.

Figura 2 Servo-Motor (mecanismo de feedback)

Nuno Monteiro & Gabriel Dinis Eng. Electrotcnica, UTAD Junho de 2001 -1-

Controlo de um Servo-Motor

O sinal de controlo uma onda quadrada (0 a 5 V) de frequncia igual a 50 Hz (tambm funciona a 60 Hz). A uma frequncia de 50 Hz corresponde um perodo de 20 ms (1/50 = 20 ms). O sinal PWM a enviar ter de ter sempre o primeiro milisegundo a 5 V. A partir da, durante o milisegundo seguinte, o tempo que o sinal se mantiver a 5 V ir determinar a posio do veio do servo-motor. Ou seja, se imediatamente aps o primeiro milisegundo o sinal passar a ser de 0 V, ento servo ir-se- colocar na posio 0. Se em vez disso, o sinal for durante o primeiro milisegundo igual a 5 V e se esse valor se mantiver durante o segundo milisegundo (igual a a 5 V) ento o servo-motor ir-se- colocar na posio 180 (a posio angular mxima de um servomotor normalmente de 180). Em qualquer dos casos, a partir do segundo milisegundo e durante os 18 ms restantes (2 ms +18 ms =20 ms) o sinal de controlo dever ser de 0 V. Vemos assim que o tempo, durante o segundo milisegundo, que o sinal se mantem a 5 V, que determina a posio angular do servo. Ou seja, se o servo tem um raio de aco de 180 ento, como 1/180 5 s, bastam incrementos de 5 s, para alterar a posio do servo Exemplos de sinais PWM e respectiva posio angular: 1 ms a 5 V e 19 ms a 0 V corresponde a uma posio angular de 0 1,005 ms a 5 V e 18,995 ms a 0 V corresponde a uma posio angular de 1 1,010 ms a 5 V e 18,990 ms a 0 V corresponde a uma posio angular de 2 ... e assim sucessivamente... 1,995 ms a 5 V e 18,005 ms a 0 V corresponde a uma posio angular de 2 2 ms a 5 V e 18 ms a 0 V corresponde a uma posio angular de 180 Para controlar o servo-motor o sinal dever ser o seguinte:5V e repetir-se ... 0V 1 ms 1 ms 20 ms 18 ms

Este sinal deve repetir-se para que o servo se posicione na posio angular pretendida e se mantenha l imvel. Uma forma de gerar este tipo de sinal usando um microcontrolador. Neste caso foi usado o PIC16F84 da Microchip.

Nuno Monteiro & Gabriel Dinis Eng. Electrotcnica, UTAD Junho de 2001 -2-

Controlo de um Servo-Motor

Usou-se a PORTB (todos os pinos) como varivel de entrada para o processo unicamente para demonstrar o funcionamento deste controlador de servo-motores. Em utilizaes reais do servo, bastaria usar um pino de entrada e enviar os dados ao microcontroldor via protocolo srie (RS-232, SPI, I2C, etc). Este circuito deve ser uma referncia para outras utilizaes de um servo. O cdigo em assembly que controla o servo o seguinte:;######################################## Eng. Electrotcnica, UTAD ##################################### ;######################################## Junho de 2001 ##################################### ;################ Circuito usado no projecto de 5 ano - Mapa de proximidade por ultra-sons ############# ;######################################################################################################## ;######################################################################################################## #include p16f84.inc org goto org goto angulo oquesobra contador MS_REG US_REG Start call call bcf PortsInit Inicializa_interrupts PORTA,0 ; ; ; ; O pino RA0 usado como sada e ligado entrada de controlo do servo Os pinos da PORTB (RB0, RB1, RB2..., RB7, so usados como entrada O registo PORTB funciona assim como a varivel A posio angula do servo ir ser proporcional aos valores existentes em PORTB 000h Start 004h Start equ equ equ equ equ 0x0D 0x0E 0x0A 0x0B 0x0C ; POWER_ON Reset

Nuno Monteiro & Gabriel Dinis Eng. Electrotcnica, UTAD Junho de 2001 -3-

Controlo de um Servo-Motorciclo_geral movf movwf sublw movwf movf movwf

PORTB,w angulo .255 oquesobra PORTB,w angulo

bsf PORTA,0 movlw .1 call WaitMS ciclo nop decfsz angulo,f goto ciclo bcf PORTA,0 ciclo2 nop decfsz goto nop movlw call goto oquesobra,f ciclo2

; esperar 1 ms - primeiro milisegundo ; manter a 5 V o tempo proporcional ao valor em PORTB ; no fim desse tempo, fazer a transio para 0 V ; manter a 0 V o tempo que falta at completar os primeiro 2 milisegundos

.18 ;A partir daqui apenas resta esperar os 18 milisegundos finais com a sada RA0 a 0 V WaitMS ciclo_geral ; Repetir todo o processo. Este processo deve repetir-se para o servo manter a sua posio angular

;************************************************************************************************ ;* Subroutime : WaitMS * ;* Purpose : Software delay in mS * ;* Parameter : ms in W Register (W=0 -> Delay = 256mS) * ;* Return Value : W=0 * ;* Var usage : MS_REG, US_REG * ;* Subrot.used : None * ;************************************************************************************************ WaitMS movwf movlw movwf WLoopMS movlw addwf WLoopUS nop decfsz goto decfsz goto nop retlw US_REG, F WLoopUS MS_REG, F WLoopMS 000h ; One Loop=4 cycles ; USReg - 1, skip if zero ; MSReg - 1, skip if zero ; correct time of last ms loop ; return with W=000h 0F9H US_REG, F ; 1 Loop 249*WLoopUS+4Cycles ; Destination is F Register MS_REG 0FEH US_REG ; Store ms ; Correct call time (included ; 1 movlw before calling for first loop

;######################## Rotina PortsInit ##################################### PortsInit bcf STATUS, RP1 bcf STATUS, RP0 ; BANK 0 clrf PORTA clrf PORTB bsf STATUS, RP0 ; BANK 1 movlw b'11111111' ; Configurao da PORTB movwf PORTB movlw b'00000000' ; Configurao da PORTA movwf PORTA retlw 0 ;################################################################################## ;########################### Inicializa Interrupts ################################ Inicializa_interrupts bsf STATUS, RP0 ; BANK1 bcf STATUS, RP1 movlw b'10000000' movwf OPTION_REG

Nuno Monteiro & Gabriel Dinis Eng. Electrotcnica, UTAD Junho de 2001 -4-

Controlo de um Servo-Motorbcf STATUS, RP0 bcf STATUS, RP1 ; BANK0 movlw b'00000000' movwf INTCON retlw 0 ;################################################################################# end

Nuno Monteiro & Gabriel Dinis Eng. Electrotcnica, UTAD Junho de 2001 -5-