TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: sirias52 en 13 de Mayo de 2010, 20:14:31
-
Hola a la comunidad Todopic, la verdad es que necesitaba un poco de consejo con el proyecto que estoy realizando. Mi proyecto consiste en controlar la dirección y velocidad de un motor PAP unipolar únicamente con un potenciometro utilizando un pic16f84a (es el pic que domino más :). La idea de la lógica de programación en asm que tengo es el siguiente:
(http://img62.imageshack.us/img62/4545/step2s.gif) (http://img62.imageshack.us/i/step2s.gif/)
Uploaded with ImageShack.us (http://imageshack.us)
una vez que yo posicione el potenciometro en 5k el motor estará detenido si yo vario el potenciometro a un valor de 4k (por ejemplo es algo teorico) el motor girará ala izquierda y si el valor disminuye a un valor menor de 4k el motor seguira girando a la izquierda y cambiará su velocidad.
Lo que tengo pensado es que cuando el potenciometro este en 5k el capacitar se cargará en un tiempo t el cual será comparado con un valor de referencia el cual dirá que con ese tiempo de carga el motor estará detenido. cuando el pot varie de omeaje a 4k el capacitor tendrá otro tiempo de para cargarse totalmente el cual se comparar y dira que ahora gire a la izquierda con una velocidad y cuando disminuya aun mas el valor de pot cambiara su velocidad e ira un poco mas rapido.
estoy complicandome o estoy haciendolo bien?, creo que me estoy complicando, pero su consoje me ayudará a saberlo :)
Gracias amigos y saludos desde Nicaragua
-
Hola, el proyecto me parece bueno. Pero creo que será más sensillo saltar a algún micro que posea conversor AD integrado. Con esto conectas el pote directo al PIc y haces todo por soft, esto te simplificará mucho el proyecto.
PD: Seria bueno comentes la aplicacion del proy, ya que así te podremos dar mas y mejores ideas. Por ej es posible utilizar un motor de CC?, si es asi se puede hacer con elect discreta
-
Hola, creo que te estas complicando un pococ las cosas, podrias usar el convertido analogico-digital del pic para conectar tu potenciometro, y desde el programa incluso podrias hacer girar el motro en ambos sentidos dependiendo de la posicion de tu potenciometro.
si tienes alguna duda de como hacerlo pregunta y te ayudaremos
-
Hola amigos, gracias por leer el tema. Mi proyecto es un brazo robótico y pretendo controlarlo con un joystick basado potenciometros. La palanca principal del joystick controlará la cadera y el codo del brazo robótico. A principio quería seleccionar la velocidad con un switch (les adjunto el codigo y la simulación), pero no me resulta debido al joystick que tengo y quiero usar :), asi que según sus recomendaciones me agrada la idea de utilizar el conversor analogo digital, aunque sinceramente estoy algo desorientado, pero me pondré a investigar.
list p=16F84A
include<P16F84A.inc>
bsf STATUS,RP0
clrf PORTB
movlw b'00001111'
movwf PORTA
bcf STATUS,RP0
seleccion_velocidad
btfss PORTA,2
goto velocidad_1
goto velocidad_2
velocidad_2
btfss PORTA,0
goto principal_1
goto giro_horario
principal_1
btfss PORTA,1
goto detenido
goto giro_antihorario
giro_horario
movlw b'00000011'
movwf PORTB
call Retardo_200ms
movlw b'00000110'
movwf PORTB
call Retardo_200ms
movlw b'00001100'
movwf PORTB
call Retardo_200ms
movlw b'00001001'
movwf PORTB
call Retardo_200ms
goto velocidad_2
giro_antihorario
movlw b'00001001'
movwf PORTB
call Retardo_200ms
movlw b'00001100'
movwf PORTB
call Retardo_200ms
movlw b'00000110'
movwf PORTB
call Retardo_200ms
movlw b'00000011'
movwf PORTB
call Retardo_200ms
goto velocidad_2
detenido
movlw b'00000000'
movwf PORTB
goto seleccion_velocidad
velocidad_1
btfss PORTA,0
goto principal_2
goto giro_horario2
principal_2
btfss PORTA,1
goto detenido2
goto giro_antihorario2
giro_horario2
movlw b'00000011'
movwf PORTB
call Retardo_50ms
movlw b'00000110'
movwf PORTB
call Retardo_50ms
movlw b'00001100'
movwf PORTB
call Retardo_50ms
movlw b'00001001'
movwf PORTB
call Retardo_50ms
goto velocidad_1
giro_antihorario2
movlw b'00001001'
movwf PORTB
call Retardo_50ms
movlw b'00001100'
movwf PORTB
call Retardo_50ms
movlw b'00000110'
movwf PORTB
call Retardo_50ms
movlw b'00000011'
movwf PORTB
call Retardo_50ms
goto velocidad_1
detenido2
movlw b'00000000'
movwf PORTB
goto seleccion_velocidad
include<Ret.inc>
end
basicamente de eso se trata, seguire detallando mas sobre el proyecto.
Gracias amigos.
-
como tu dices el 16F84 lo dominas bien, has pensado saltar al 16F628 que ese ya tiene mejor prestacion e incluye conversor A/D.
La parte fisica es compatible y la de firmware con muy poco la puedes modificar, creo que es solo cambiar el encavezado.
Sigue este link: http://robots-argentina.com.ar/Cerebro_PIC628vs84.htm
Saludos
-
Bueno he estado leyendo por internet de como controlar la dirección y velocidad de un motor PAP con un potenciometro, pero se me complica un poco comprender como voy hacerlo sino encuentro un ejemplo aunque sea sencillo de algo similar a lo que busco.
Si alguien me puede dar un empujón se lo agradeceria mucho.
Gracias
-
yo te decia del 16F628 porque tiene conversores A/D, con eso directamente conectas el potenciometro como un divisor de tension.
Luego programas a que de 2,5V sea punto medio o de velocidad nula, luego de 2,5V a 5V que valla aumentando hacia un sentido y luego de 2,5 a 0V hacia el otro.
Luego la parte de potencia del motor la puedes hacer con un L293 o un L298, son integrados especificos para manejar motores de DC, PAP o en configuraciones variadas de puente H.
http://www.clubse.com.ar/DIEGO/NOTAS/3notas/nota11.htm
ahi creo que tiene data para hacer algo, incluso usando el 16F84.
-
en mi blog explico como hacer un variador de velocidad con un potenciometro
http://chinoox.blogspot.com/2010/06/velocidad-variable-de-un-motor-paso.html :-/