Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

31/03/2010 #1


Porgrama en C para cambio de giro de un motor de DC mediante PICS. No funciona.
Hola bueno no puedo hacer que cambie de giro mi motor de DC mediante la programación que tengo dejo las instrucciones:
Realizar un programa para operar un motor de DC empleando el circuito integrado L293D (Puente H). Realizar una rampa de aceleración con las siguientes caracteristicas: de cero a maxima velocidad en 3 segundos(para ambos sentidos).Visualizar magnitud de velocidad por el puerto B, y establecer magnitud maxima mediante potenciometro empleando el modulo de conversion analogico digital por el canal AN0(RA0). Incluir botones para tener control del sentido de giro y paro con RC0 y RC1 respectivamente.
Esta es mi programación en C:

Código PHP:
#include<16F883.h>
#fuses INTRC_IO,NOMCLR,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT
#use delay(clock=8000000)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(E)
#byte PUERTO_A=0x05
#byte PUERTO_B=0x06
#byte PUERTO_C=0x07
#byte PUERTO_E=0x09
#bit RA0=0x05.0
#bit RA1=0x05.1
#bit RA2=0x05.2
#bit RA3=0x05.3
#bit RA4=0x05.4
#bit RA5=0x05.5
#bit RA6=0x05.6
#bit RA7=0x05.7
#bit RBO=0x06.0
#bit RB1=0x06.1
#bit RB2=0x06.2
#bit RB3=0x06.3
#bit RB4=0x06.4
#bit RB5=0x06.5
#bit RB6=0x06.6
#bit RB7=0x06.7
#bit RC0=0x07.0
#bit RC1=0x07.1
#bit RC2=0x07.2
#bit RC3=0x07.3
#bit RC4=0x07.4
#bit RC5=0x07.5
#bit RC6=0x07.6
#bit RC7=0x07.7
int16 Velocidad=0;
int16 i=0;
int16 Tiempo=0;
int Bandera_1=0;
int Bandera_2=0;
int En_stop=1;
void inicializar(void)
{
                      
setup_adc(ADC_CLOCK_INTERNAL);
                      
setup_port_a(sAN0);
                      
set_adc_channel(0);
                                          
                       
set_tris_a(0b11111111);
                       
set_tris_b(0b00000000);
                       
set_tris_c(0b11100011);
                      
                      
PUERTO_B=0;
                      
RC3=0;
                      
RC4=0;
                      
                      
setup_ccp1(CCP_PWM);
                      
setup_timer_2(T2_DIV_BY_4,255,1);
                      
set_pwm1_duty(0);
                      
}
void Rampa(void)
{
Velocidad=read_adc();
if(
Velocidad>0)
{
Tiempo=3000/Velocidad;
}
for(
i=0;i<Velocidad;i++)
{
set_pwm1_duty(i<<2);
PUERTO_B=i;
delay_ms(Tiempo);
}
}
void Stop(void)
{
set_pwm1_duty(0);
RC3=0;
RC4=0;
En_Stop=1;
PUERTO_B=0;
}
//Rutina Principal
 
void main (void)
 {
 
inicializar();
 while (
TRUE)
 {
 if ((
RC0==1)&&(Bandera_1==0))
 {
 
Bandera_1=1;
 if((
En_Stop==11)||(En_Stop==1))
 {
 
En_Stop=10;
 
RC3=1;
 
RC4=0;
 
Rampa();
 }
 else
 {
 
Stop();
 }
 }
 else
 {
 if(
RC0==0)
 {
 
Bandera_1=0;
 
delay_ms(100);
 }
 }
if ((
RC1==1)&&(Bandera_2==0))
 {
 
Bandera_2=1;
 if((
En_Stop==10)||(En_Stop==1))
 {
 
En_Stop=11;
 
RC3=0;
 
RC4=1;
 
Rampa();
 }
 else
 {
 
Stop();
 }
 }
 else
 {
 if(
RC1==0)
 {
 
Bandera_2=0;
 
delay_ms(100);
 }
 }
           
                      }
//Fin del While
            
}//Fin del Main 
Segun esto ya esta bien la programación pero cuando lo simulo en proteus no funciona nadamas que el primer boton pero el segundo no que es el de cambio de giro...
si alguien me pudiera ayudar se los agradesco...
anexo la simulación en proteus
10/04/2010 #2


Respuesta: Ayuda en Cambio de giro de un Motor de DC mediante PICS
úes la verdad no se programar en c pero si algo en basic si quieres me dices y hay vemos que se hace
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.