TODOPIC
Mecatrónica => Robótica => Mensaje iniciado por: mtristan en 07 de Febrero de 2010, 16:57:51
-
.
Hola a todos. Estoy en una situación desesperante. Intento generar dos señales PWM desde un PIC12F629 para manejar sendos motores cc que deberían dar movilidad a un mini-robot seguidor de luz.
Intento lo siguiente:
- Línea recta: ambos motores al 80%
- Giro derecho/izquierdo: un motor a 80% y el otro a 20%.
Pensé que sería una buena idea usar las interrupciones del TMR0 y TMR1 para lograr algo así:
(http://img504.imageshack.us/img504/9130/pwm12f629.gif) (http://img504.imageshack.us/i/pwm12f629.gif/)
Con lo que tengo una señal PWM 80% y al invertirla (usando las mismas interrupciones) otra de 20%.
El gran problema es que luego de simular con el MPSIM y ver que funciona correctamente, lo pruebo en un protoboard con un par de LEDs en lugar de los motores y observo que ninguno se enciende en lo más mínimo.
Sospecho que tal vez la frecuencia no sea la adecuada (ya probé con 1,2KHz y 10Khz)
¿Alguien que me oriente? :undecided:
-
¿Con que esquema has conectado los LED?
Yo probaría a poner un pin del micro a nivel alto, conectar el LED (con la resistencia para limitar la corriente) y así acotar el problema al Software que genera la señal PWM.
Un saludo, Alberto
-
Hola Mtristan, te paso un codigo que a mi me funciona, genera 3 pwm para controlar led rgb
ma memoria , es para saber si cada color, termino o no su tiempo de encendido...
los que figuran como pwm_rojo pwm_verde y pwm_azul son registros contadores
COLORES
;COLOR_ROJO
BTFSC BANDERA_R ;FUE APAGADA?
GOTO COLOR_VERDE
BSF ROJO
DECFSZ PWM_ROJO,F
GOTO COLOR_VERDE
BCF ROJO
BSF BANDERA_R ;MARCO QUE YA TERMINO SU CICLO
COLOR_VERDE
BTFSC BANDERA_G ;FUE APAGADA?
GOTO COLOR_AZUL
BSF VERDE
DECFSZ PWM_VERDE,F
GOTO COLOR_AZUL
BCF VERDE
BSF BANDERA_G ;MARCO QUE YA TERMINO SU CICLO
COLOR_AZUL
BTFSC BANDERA_B ;FUE APAGADA?
GOTO CONTAR
BSF AZUL
DECFSZ PWM_AZUL,F
GOTO CONTAR
BCF AZUL
BSF BANDERA_B ;MARCO QUE YA TERMINO SU CICLO
CONTAR CALL DEMORA ;ANCHO DE CADA PASO DEL PWM -TOTAL 255 PASOS 0.00004 40uS
DECFSZ CONTADOR,F ;TIEMPO TOTAL DEL PWM
GOTO COLORES
GOTO LEER_DATO ;ACTUALIZA NUEVOS DATOS INGRESADOS
Norberto
-
.
Muchas gracias por la respuesta, todopic. Lo pude probar y por fin me dio resultado :grin:. Además con ese pedacito de código tengo libre la interrupción del TMR1 para agregarle una de esas rueditas que avisan cuando el robot se quedó atascado.
Me voy contento (: