Controle de Um Motor DC Pelo PWM Do PIC

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