Sei sulla pagina 1di 7

MICROCONTROLADORES PIC PRTICA - PARTE 1 CONTROLE PWM COM PIC

PWM POR SOFTWARE COM PIC16F84

Este exemplo prtico mostra a construo de circuito para controle PWM ( Pulse Width Modulation), ut PIC16F84 com manipulao dos pulsos via software.

Um controle PWM permite variar a velocidade de um motor DC, por exemplo, atravs de pulsos. O te pulso determinar a velocidade do motor. Quanto maior for a durao de T1 e menor a durao de T2 velocidade. Quanto menor a durao de T1 e maior a durao de T2, menor ser a velocidade. Vale s pulsos tm sempre o valor mximo da tenso aplicada (menos as quedas no circuito), proporcionando torque, mesmo em baixas velocidades. Veja a figura abaixo.

Sendo assim, vemos que este mtodo de controle o ideal para aplicaes de motores CC para a tra pequenos robs, braos mecnicos e outros tipos de automatismos.

CIRCUITO PRTICO

O circuito da figura acima poder ser montado em um pront-o-board , placa padro ou outro mtodo melhor. A idia deste circuito ser apenas um teste. No preciso dizer que aps a montagem do mes for ela, voc deve rever atentamente todas as ligaes, evitando assim danos aos componentes, prin PIC, caso algo tenha sido ligado erro. No mundo "real" as coisas queimam!. Se voc adepto dos sim tem muito com o que se preocupar, a no ser com o que esta perdendo: "o prazer inestimvel de ter montagem e v-la funcionando!!!". O transistor pode esquentar um pouco, dependendo do motor util um radiador de calor pode ajudar.

Os botes BT1 e BT2 permitem o controle da velocidade. Ao se pressionar BT1 o motor aumentar d seu limite mximo. BT2 permite reduzir esta velocidade. Os tempos mnimos e mximos para T1 e T PWM esto entre 10ms a 70ms, aproximadamente.

A alimentao para o circuito deve ser separada. O microcontrolador precisa de 5 volts. Para o motor deve estar de acordo com o tipo utilizado. Lembrando que um circuito PWM podem gerar interferncia e os microcontroladores so sensveis a estas interferncias. Separar a alimentao ajudar a impedi destas interferncias.

O PROGRAMA

O programa foi desenvolvido utilizando a Linguagem Assembly Microchip e compilado no MPASM Micr (http://www.microchip.com). Para grava-lo voc poder utilizar o projeto do gravador PROGPICII, pr site ou qualquer outro que voc disponha, desde que para microcontroladores PIC. Atravs do set de detalhado na segunda parte da teoria tambm oferecida neste site, voc poder estudar e compreend funcionamento do programa. O cdigo fonte foi ricamente comentado, para demonstrar o seu funcion vou "pegar na sua mo" para gui-lo. Estudar preciso e o "caminho das pedras" j foi dado! Cdigo fonte PWM_CTRL.ASM

;************************************************************** ;* Controle PWM para motores DC ;* ;* Marcio Jose Soares - 01/10/2002 ;************************************************************** ; ;************************************************************** ;definies do programa ;************************************************************** radix dec ;padrao->valores decimal include <P16F84A.INC> ;inclue arquivo __CONFIG _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC ;configura bits PICRES PICINT PICRAM MOTOR CHV1 CHV2 LED MAX MIN equ equ equ equ equ equ equ equ equ 0x00 0x04 0x0C 0 1 2 3 0x59 0X0C ;endereo de reset ;endereo de interrupes ;endereo da RAM ;i/o do motor ;i/o da chave para aumentar a velocidade do motor ;i/o da chave para diminuir a velocidade do motor ;i/o do LED ;valor mximo para PWM ;valor mnimo para PWM

; ;************************************************************** ;variaveis do programa ;**************************************************************

org PICRAM T1 res 1 ;varivel para tempo T2 res 1 ;varivel para tempo _TMAX res 1 ;varivel para trabalhar tempo mximo _TMIN res 1 ;varivel para trabalhar tempo mnimo ; ;************************************************************** ;area do reset ;************************************************************** org PICRES goto inicio ;reset ;desvia do endereco 0x04 - interrupo

; ;************************************************************** ;area das interrupes ;************************************************************** org retfie PICINT ;toda interrupo aponta para este endereo ;retorno de interrupo

; ;**************************************************************

;inicio do programa ;************************************************************** inicio: movlw 0x00 movwf INTCON clrf clrf bsf PORTA PORTB STATUS,RP0 ;ajuste para os bits INTCON ;desabilita ints ;limpa portas

;seleciona banco 1 para options e tris ;ajusta os bits em A como sada ;exceto RA1 e RA2, entrada para chave ;ajusta os bits em B como sada ;no usados ;volta ao banco 0... (padro do reset) ;move valor para _TMAX ->70ms

movlw 0x06 movwf TRISA movlw 0x00 movwf TRISB bcf STATUS,RP0 MAX _TMAX MIN _TMIN

movlw movwf movlw movwf

;move valor para _TMIN ->10ms

; ;************************************************************** ;loop principalo do programa ;************************************************************** loop: call PWM: bsf call bcf call goto

TECLA

;verifica Tecla

PORTA,MOTOR TMIN PORTA,MOTOR TMAX loop

;liga pulso ;aguarda ;desliga pulso ;aguarda

; ;************************************************************** ;subrotina para testar tecla ;************************************************************** TECLA: nop nop nop btfss PORTA,CHV2 goto TC2 nop nop nop ;perde 3 ciclos

;testa chave 2 ;pressionada ;perde 3 ciclos

btfss PORTA,CHV1 goto TC1 goto TC3

;testa chave 1 ;pressionada ;nenhuma chave pressionada

; ;************************************************************** ;subrotina para incrementar velocidade ;************************************************************** TC1: nop nop nop

;perde 3 ciclos ;

movf _TMIN,W andlw 0xFF xorlw MAX btfss STATUS,Z goto TC1_1 bsf PORTA,LED goto TC3 TC1_1: incf _TMIN,F decf _TMAX,F goto TC3

;carrega com valor mnimo atual ;faz and com W ;faz xor com W, se = , bit Z em STATUS = 1 ;testa resultado, zero valor mnimo = mximo ;incrementa velocidade ;velocidade no mximo, no incrementa mais ;e liga led

;incrementa registro ;decrementa registro ;volta

;************************************************************** ;subrotina para decrementar velocidade ;************************************************************** TC2: nop nop nop

;perde 3 ciclos

movf _TMIN,W andlw 0xFF xorlw MIN btfss STATUS,Z goto TC2_1 goto TC3 TC2_1: decf _TMIN,F incf _TMAX,F bcf PORTA,LED TC3: bcf STATUS,Z return

;carrega com valor mnimo atual ;faz and com W ;faz xor com W, se = , bit Z em STATUS = 1 ;testa se resultado zero ;decrementa velocidade ;velocidade no mnimo, no decrementa mais

;incrementa registro ;decrementa registro ;desliga led

;garante bit Z como 0 ;retorna

; ;**************************************************************

;subrotina para temporizao do PWM ;************************************************************** TMIN: movf _TMIN,W movwf T1 goto car_1 TMAX: movf _TMAX,W movwf T1 goto car_1

;carrega W com _TMIN ;carrega T1 com W ;inicia temporizao

;carrega W com _TMAX ;carrega T1 com W ;inicia temporizao

; ;************************************************************** ;subrotina para temporizao do PWM ;**************************************************************

car_1: movlw movwf dec_1: decfsz goto decfsz goto retlw

0xff T2 T2,1 dec_1 T1,1 car_1 0x00

;carrega W com 255 ;carrega T2 com 255 ;decrementa T2 ;255 x T1 vezes ;decrementa T1 ;volta a carregar T2 ;retorna

; ;************************************************************** ;fim do programa ;************************************************************** end

CONCLUSO

O microcontrolador PIC16F84 apesar de pequeno demonstra grandes possibilidades. O controle de c PWM s uma delas. Muito se pode conseguir fazer com um microcontrolador PIC. Tudo depende ape criatividade e fora de vontade.

Material para o circuito PWM Semicondutores 1 1 1 1 PIC16F84A/4MHz microcontrolador TIP112A transistor NPN darlington 1N4001 diodo retificador Led comum

Resistores (1/8 Watt, 5%) 1 10K Marrom, preto e laranja 2 330R Laranja, laranja e marron 2 4K7 Amarelo, violeta e vermelho

Capacitores 1 100nF cermico 2 33pF cermico

Diversos 3 - chaves push-botton 1 crystal 4MHz 1 motor DC 3 a 6V 2 suportes para 4 pilhas pequenas Pront-o-board ou placa padro para a montagem, fios para ligao, etc

Copyright deste contedo reservado para Mrcio Jos Soares e protegido pela Lei de Direitos Autorais de 19 de Fevereiro de 1998. estritamente proibida a reproduo total ou parcial do contedo desta outros pontos da internet, livros ou outros tipos de publicaes comerciais ou no, sem a prvia auto escrito do autor.

Potrebbero piacerti anche