Upload
luis-paulo
View
8
Download
0
Embed Size (px)
DESCRIPTION
entenda como controlar um motor dc pelo pmw do processador pic
Citation preview
Controle de um motor DC pelo PWM do PIC
:020000040000FA:100000002F28870183160313FB308700FF309200EF:10001000831203130730920095010F3097000800F8:100020009501971217120800950A9712171232308D:10003000252008009503971217123230252008005A:10004000FF309500971217120800A100C830A000D9:1000500000000000A00B2828A10B26280800012082:10006000061C1020861C1420061D1A20861D202028:02007000302836:02400E00713F00:00000001FF
;*Ttulo:Este programa faz uso do mdulo CCP. Configurando este mdulo para PWM *;* Empresa: QSP Tecnologia *;* Web Site: www.qsptecnologia.eng.br *;* Processador: PIC16F870 *;* Firmware Verso: 1.0 *;* Cdigo:PWM.asm *;*Autor: Eng. Daniel Quispe Marquez *;****************************************************************************************
;]--------------------------------------------------------------------------------------[; Area de includes;]--------------------------------------------------------------------------------------[
#include ;* Arquivo padro de incluso
;]--------------------------------------------------------------------------------------[;Configuraes do microcontrolador;]--------------------------------------------------------------------------------------[
__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_ENABLE_ON & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
;]--------------------------------------------------------------------------------------[; Area de definies de comandos;]--------------------------------------------------------------------------------------[
;]--------------------------------------------------------------------------------------[;Definies de Entrada;]--------------------------------------------------------------------------------------[
#DEFINE CH_0PORTB,0;* A CHAVE 0 EST LIGADA NO RB0#DEFINE CH_1PORTB,1;* A CHAVE 1 EST LIGADA NO RB1#DEFINE CH_2PORTB,2;* A CHAVE 2 EST LIGADA NO RB2#DEFINE CH_3PORTB,3;* A CHAVE 3 EST LIGADA NO RB3
;]--------------------------------------------------------------------------------------[;Definies de Sada;]--------------------------------------------------------------------------------------[
#DEFINE MOTORPORTC,2;* O MOTOR EST LIGADO NO RC2 - MODULO PWM
;]--------------------------------------------------------------------------------------[; Area de constantes;]--------------------------------------------------------------------------------------[
;]--------------------------------------------------------------------------------------[;Area de definies de memria RAM;]--------------------------------------------------------------------------------------[
CBLOCK 0X20;* Endereo inicial de memria RAM do Bank0TEMPO1TEMPO2ENDC;* Fim do bloco de memria
;]--------------------------------------------------------------------------------------[;Area de definio de flags;]--------------------------------------------------------------------------------------[
;]--------------------------------------------------------------------------------------[; Arquivo de macros;]--------------------------------------------------------------------------------------[
BANK0 macro RP0,RP1;* Seleciona bank0bcf STATUS,RP0;* rp0 = 0bcf STATUS,RP1;* rp1 = 0endm;]--------------------------------------------------------------------------------------[BANK1 macroRP0,RP1;* Seleciona bank1bsf STATUS,RP0;* rp0 = 1bcf STATUS,RP1;* rp1 = 0endm
;]--------------------------------------------------------------------------------------[; Inicio do Cdigo;]--------------------------------------------------------------------------------------[
ORG 0x00;* O programa inicia aquiGOTO INICIO;* Pula para inicio do programa
;]--------------------------------------------------------------------------------------[; Area de tabelas;]--------------------------------------------------------------------------------------[
;]--------------------------------------------------------------------------------------[; Area de Subrotinas;]--------------------------------------------------------------------------------------[
uC_CONFIG;* SUBROTINA QUE CONFIGURA O uCCLRF PORTCBANK1 RP0,RP1;* SETA BANCO 1MOVLW B'11111011'MOVWF TRISC;* DEFINE ENTRADAS E SADAS PARA O PORTC;* RC2 - SADAMOVLW .255MOVWF PR2;* CONFIGURA PERIODO DO PWM;* T = (PR2+1).4.Tosc.TMR2_PRESCALE;* T = 256.4.250ns.16;* T = 4,096ms -> F244,14HzBANK0 RP0,RP1;* SETA BANCO 0MOVLW B'00000111';* CONFIGURA TIMER 2MOVWF T2CON;* TIMER2 LIGADO;* PRESCALE = 1:16;* POSTSCALE = 1:1CLRF CCPR1L;* ZERA CCPR1LMOVLW B'00001111';* CONFIGURA CCP1CON PARA MODO PWMMOVWF CCP1CON;* LIGA PWM 1RETURN;* RETORNA DA SUBROTINA
ROT_CH0;* SETA CICLO ATIVO PARA 0%CLRF CCPR1LBCF CCP1CON,5BCF CCP1CON,4RETURN
ROT_CH1INCF CCPR1L,F;* INCREMENTA CICLO ATIVOBCF CCP1CON,5BCF CCP1CON,4MOVLW .50CALL TEMPO_01RETURN
ROT_CH2DECF CCPR1L,F;* DECREMENTA CICLO ATIVOBCF CCP1CON,5BCF CCP1CON,4MOVLW .50CALL TEMPO_01RETURN
ROT_CH3;* VELOCIDADE MXIMA DO MOTORMOVLW 0XFFMOVWF CCPR1LBCF CCP1CON,5BCF CCP1CON,4RETURN
;]------------------------------- Rotina de temporizao -------------------------------[TEMPO_01MOVWF TEMPO2;* Registrador 2 que controla o tempoTMP1MOVLW .200MOVWF TEMPO1TMP2;* 200 x 5 CICLOS = 1000 CICLOSNOP;* 1 CICLONOP;* 1 CICLODECFSZ TEMPO1,F;* 1 CICLOGOTO TMP2;* 2 CICLODECFSZ TEMPO2,FGOTO TMP1RETURN;* Retorna da subrotina
;]--------------------------------------------------------------------------------------[; Rotina principal;]--------------------------------------------------------------------------------------[
INICIO:CALL uC_CONFIG;* CHAMA ROTINA DE CONFIGURAO DO uC
;]--------------------------------------------------------------------------------------[; **** Loop principal ****;]--------------------------------------------------------------------------------------[
LOOPBTFSS CH_0;* A CHAVE CH0 EST PRESSIONADA ?CALL ROT_CH0;* SIM, ENTO TRATA ROTINA DO BOTO.
BTFSS CH_1;* A CHAVE CH1 EST PRESSIONADA ?CALL ROT_CH1;* SIM, ENTO TRATA ROTINA DO BOTO.
BTFSS CH_2;* A CHAVE CH2 EST PRESSIONADA ?CALL ROT_CH2;* SIM, ENTO TRATA ROTINA DO BOTO.
BTFSS CH_3;* A CHAVE CH3 EST PRESSIONADA ?CALL ROT_CH3;* SIM, ENTO TRATA ROTINA DO BOTO.
GOTO LOOP;]--------------------------------------------------------------------------------------[; Fim do programa;]--------------------------------------------------------------------------------------[
END