# Control de motor DC con PIC16F877A activación PWM y L293d



## johames (Sep 5, 2013)

Buenas tarde estoy trabajando con el pic16f877a para la activiacion de pwm para el control de velocidad de motor dc, pero tengo que controlar el driver l293d para la inversion de giro con el pic tambien para generar los pulso de activacion de driver. Bueno ya tengo el programa en pic c compiler y la simulacion en proteus funciona bien.. Pero unas ves montado el circuito en la protoboard solo activa el pwm y no me trabaja los pulso de salida que van al l293d. Bueno dejo la simulacion y programa para que me puede ayudar con el tema 


gracias !!!


----------



## DJ T3 (Sep 6, 2013)

verifica detenidamente todo el circuito. Seguramente te faltó algo o conectaste algo mal. Puede también que tú pic no este funcionando correctamente o que se haya grabado mal. Prueba volver a programarlo


----------



## johames (Sep 6, 2013)

gracias por el comentario amistad.. pero he programado mas de tres ves el circuito con otros pic de la misma referencia. el problema en si. es que los pulso para el control de driver L293D no me lo esta generando no se porque pero en el simulador funciona lo mas de bien, y el compilador no me genera error en la programacion ni warning.. 


programo el pwm y el control de giro por separado y funciona lo mas de bien entonces no se cual es el problema real..


----------



## jcristhian_1 (Sep 6, 2013)

Hola Johames, el que el compilador no genere mensaje de error o warning, no significa que tu programa hará lo que realmente deseas que haga.
Por otra parte he revisado tu simulación y tienes conectado el pin PWM del pic al pin EN del l293, nunca he usado ese integrado asi que no lo conozco, pero lo mas probable es que EN sea un pin de habilitación y el PWM debas aplicarlo o en in 1 o in2, otra cosa que observo es que para que los pines del pic que van a IN1 e IN2, no figuran como salidas en proteus, así que no estas enviando ninguna señal a través de ellos, vuelve a revisar tu programa, saludos.
Te recomiendo que no pongas la simulación por sobre el datasheet ya que por las conexiones, veo que no haz leído mucho sobre el funcionamiento del l293


----------



## louis1724 (Sep 6, 2013)

Buenas
Debes cambiar como le aplicas el PWM al L293 mejor ajusta el EN1 a través de un resistor de 10k a +5v y luego puedes aplicar la salida PWM a un transistor que conmute el voltaje que va a utilizar el circuito l293 para el motor, recuerda que el necesita 5v para su funcionamiento y tiene un rango de voltajes para alimentar el motor 
saludos


----------



## johames (Sep 7, 2013)

jcristhian_1 dijo:


> Hola Johames, el que el compilador no genere mensaje de error o warning, no significa que tu programa hará lo que realmente deseas que haga.
> Por otra parte he revisado tu simulación y tienes conectado el pin PWM del pic al pin EN del l293, nunca he usado ese integrado asi que no lo conozco, pero lo mas probable es que EN sea un pin de habilitación y el PWM debas aplicarlo o en in 1 o in2, otra cosa que observo es que para que los pines del pic que van a IN1 e IN2, no figuran como salidas en proteus, así que no estas enviando ninguna señal a través de ellos, vuelve a revisar tu programa, saludos.
> Te recomiendo que no pongas la simulación por sobre el datasheet ya que por las conexiones, veo que no haz leído mucho sobre el funcionamiento del l293



bueno tarde jcristhian, 
yo tambien pensaba los mismo, pero lo que se quiere con este circuito es tener control de velocidad mediante PWM, el L293D es un driver para inversor de giro o como algunas persona lo conocen puente H, IN1 y IN2 son la entrada TTL 0 - 5 voltios. esto hara que el si por la IN1 hay =1 y en IN2 = 0 el motor gira a un sentido y viceversa. la entrada EN es para el control de velocidad es donde se aplicara el PWM. la simulacion funciona bien.. pero una vez realizado el monta respectivo no me esta generado los pulso de salida para el driver L293D


----------



## jcristhian_1 (Sep 7, 2013)

Aun así amigo, los pines del pic a los cuales haz conectado In1 e In2 están configurados como entradas, y por lo tanto no estas enviando ni 0 ni 1 a través de ellos (revisa tu programa y configura como salidas).
Concretamente en tu archivo cof, se ve que haz configurado el registro trisb=0b00000011
por lo tanto b0 y b1 son entradas y a ellos haz conectado in1 e in2 entonces no estas enviando nada por esos pines, los tienes flotando.
Ahora, para controlar velocidad, igual dudo que pueda controlarse por el pin EN (lee el datasheet), yo creo que debes usar in1 o in2:
Puente deshabilitado: en=0, in1, in2 no_importa
Giro lado1: in1=pwm, in2=0, en=5v
Giro lado2: in1=0, in2=pwm, en=5v
incluso puedes frenar el motor in1=in2=1 en=5v

Para poder alternar el pwm entre el pin1 o el pin2 puedes usar arreglos de compuertas, o puedes hacer uso de los dos canales pwm que posee el pic16f877a


----------



## johames (Sep 8, 2013)

Buenas noche parcero.. Queria agradecerle por hacerme caer en cuenta la configurar del tris_b resulta que con tanto cambio que le hice al programa y la simulacion no cai en cuenta del las entrada y la salida.. De los perifericos 

gracias..!!



jcristhian_1 dijo:


> Aun así amigo, los pines del pic a los cuales haz conectado In1 e In2 están configurados como entradas, y por lo tanto no estas enviando ni 0 ni 1 a través de ellos (revisa tu programa y configura como salidas).
> Concretamente en tu archivo cof, se ve que haz configurado el registro trisb=0b00000011
> por lo tanto b0 y b1 son entradas y a ellos haz conectado in1 e in2 entonces no estas enviando nada por esos pines, los tienes flotando.
> Ahora, para controlar velocidad, igual dudo que pueda controlarse por el pin EN (lee el datasheet), yo creo que debes usar in1 o in2:
> ...





Buenas noche parcero.. Queria agradecerle por hacerme caer en cuenta la configurar del tris_b resulta que con tanto cambio que le hice al programa y la simulacion no cai en cuenta del las entrada y la salida.. De los perifericos 

gracias..!!


----------



## shedun (Nov 20, 2013)

johames que tal podrias volver a subir tu programa con la simulacion corregidos porfavor... te lo agradeceria


----------



## johames (Nov 24, 2013)

Parcero me gustaria ayudarle de esa forma pero el equipo lo formate hace tiempo..!!  Solo tiene que observar el código cambiar el registro tris_b y listo*** la simulacion es la misma y el codigo tambien solo configura el puerto b y ya.. Espero que le sirva de ayuda..


----------



## LUC4R10 (Nov 25, 2013)

Que tal en la U me dejaron hacer un proyecto similar a este, quisiera si me podrian ayudar con mi codigo, ya tengo el PWM lo que me hace falta es lo del cambio de giro con el L293d  
Es en mplab

```
include<P16F877A.inc>
__CONFIG _XT_OSC&_WDT_OFF& _PWRTE_OFF&_LVP_OFF&_CP_OFF&_BODEN_OFF &_DEBUG_ON
CBLOCK
ENDC
      org 00H
      goto inicio
      
      
inicio bsf STATUS,5
       clrf TRISC
       movlw .255
       movwf PR2
       movlw b'00000001'
       movwf TRISA
       clrf ADCON1
       bcf STATUS,5
       movlw b'00000101'
       movwf T2CON
       movlw b'00001100'
       movwf CCP1CON
       movlw b'01000001'
       movwf ADCON0
       
   a2  bsf ADCON0,2
   a1  btfsc ADCON0,2
       goto a1
       movf ADRESH,W
       movwf CCPR1L
       bcf CCP1CON,4
       bcf CCP1CON,5
       goto a2
       END
```


----------

