Está en la página 1de 3

//////////////////////////////////////////////////////////////////////

//////////
//
//
//
CONTROL VELOCIDAD MOTOR DC CON PIC
//
//
//
//
(c) RobotyPic 2012
//
//
//
//////////////////////////////////////////////////////////////////////
//////////
#include <16f876a.h>
16f876a

//Archivo para control del pic

#device adc=8
8 bits

//Configuracin conversor AD a

#fuses XT,NOWDT
#use delay(clock=4000000)
#byte
#byte
#byte
#byte

//frecuencia de reloj 4 MHz

trisb=0x86
portb=0x06
trisc=0x87
portc=0x07

#define use_portb_lcd TRUE


control lcd
#include <lcd.c>

//Configuracin puerto b
//archivo para control del lcd

/***************** Definicin de las variables globales


***********************/
int1 cambio=0;
int16 lectura_AD;

//Control del cambio


//Referencia de velocidad

/********************** Prototipos de las funciones


***************************/
void main (void);
void ccp2_int (void);

//funcin principal
//funcin por interrupcin

/
**********************************************************************
********/
/******************* FUNCIN GENERACIN MODULACIONES PWM
**********************/
#int_ccp2
void ccp2_int(){
if(++cambio==1){
salida CCP2
setup_ccp2(CCP_COMPARE_CLR_ON_MATCH);
conmutacin salida a 0

//Conmutacin estado
//Modo comparacin,

ccp_2=lectura_AD;
semiperiodo alto
}

//carga del ccp2 con valor

else{
setup_ccp2(CCP_COMPARE_SET_ON_MATCH);
conmutacin salida a 1
ccp_2=255-lectura_AD;
valor semiperiodo bajo
}
set_timer1(0);
temporizador para comparacin
}

//Modo comparacin,
//Carga del ccp2 con
//Reinicio del

/
**********************************************************************
********/
/******************** FUNCIN PRINCIPAL
***************************************/
void main(){
float velocidad;
trisc=0x00;
datos
port_b_pullups(TRUE);
puerto b
lcd_init();

//Porcentaje velocidad
//Puerto C como salida de
//Habilitacin resistencias pullups
//Inicializacin del lcd

setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
para comparacin
setup_ccp2(CCP_COMPARE_SET_ON_MATCH);
conmutacin salida a 1

//Configuracin Timer

setup_adc_ports(AN0);
analgico AN0
setup_adc(ADC_CLOCK_INTERNAL);
conversor AD

//Canal de entrada

enable_interrupts(int_ccp2);
comparacin
enable_interrupts(GLOBAL);
interrupciones

AD

while (true){
set_adc_channel(0);
delay_us(20);
lectura_AD=read_adc();
velocidad=(lectura_AD/2.55);
}

//Modo comparacin,

//Fuente de reloj RC para


//habilitacin interrupcin por
//Habilitacin de toda las

//Habiliatacin lectura
//Estabilizacin
//Lectura canal analgico
//Clculo % de velocidad

printf(lcd_putc, "\fVelocidad = %3.0f%%", velocidad);

También podría gustarte