Autor Tema: Control Motores DC con PicBasic  (Leído 3456 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Zero13

  • PIC12
  • **
  • Mensajes: 66
Control Motores DC con PicBasic
« en: 18 de Septiembre de 2005, 17:15:00 »
Hola, hasta ahora siempre he trabajado con ServoMotores de Aeromodelismo y su programacion con Pulsout no habia problema, pero ahora que estoy metido con motores de DC y con Puente en H con el L293 ó L298 no hay manera de poderlos controlar como hacia con los Servos:

Os explico:

He conseguido a traves del L293 ( puente en H ) controlar este motores con la siguiente orden:

high portd.0
low portd.1
high portd.2
low portd.3

De esta manera va hacia adelante y para atras pues a la inversa cada linea...

Todo esto dentro de un tipico inicio: ---> goto inicio

El problema viene cuando quiero hacer por ejemplo:

Que vaya un poco hacia atras ( 1 segundo )
y
Que gire 180 grados ( lo que dure el giro )

...estas dos cosas dentro de una subrutina...llamada evasion:

No se como hacerlo...quizas sea una chorrada...pero es que no encuentro la solucion...

ya que solamente me funciona adelante ó atras, pero va a piñon fijo.....aunque le indique el tiempo dentro de un bucle ( for bucle=1 to 50 ) lo ignora...y no para.

No consigo poder hacer girar cualquiera de los motores solamente lo que le indique en el bucle.

Alguien me puede dar alguna idea?

Gracias
Zero13

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Control Motores DC con PicBasic
« Respuesta #1 en: 18 de Septiembre de 2005, 18:08:00 »
Hola:

Pana Zero13 prueba con esto, gira por 4 segundos para adelante, luego 4 segundos para atras, 4 segundos a la izquierda y 4 segundos a la derecha

Codigo:
@ DEVICE pic16f628, INTRC_OSC_NOCLKOUT "Reloj interno solo
@ DEVICE pic16f628, WDT_OFF " Watchdog Timer desconectado
@ DEVICE pic16f628, PWRT_ON " Power-On Timer conectado
@ DEVICE pic16f628, BOD_ON " Brown-Out Detect conectado
@ DEVICE pic16f628, MCLR_OFF " Master Clear Externo desconectado
@ DEVICE pic16f628, LVP_OFF " Low-Voltage Programming desconectado
@ DEVICE pic16f628, CPD_OFF " Data Memory Code Protect desconectado

TRISA=%00000011

cmcon=7

pause 2000

loop:
    gosub adelante
        pause 4000
        gosub atras
        pause 4000
        gosub derecha
        pause 4000
        gosub izquierda
        pause 4000
    goto loop

    adelante:
        high 0:high 1: low 2
        high 3:high 4: low 5
        return
    atras:
        high 0:low 1: high 2
        high 3:low 4: high 5
        return
    izquierda:
        high 0:low 1: high 2
        high 3:high 4: low 5
        return
    derecha:
        high 0:high 1: low 2
        high 3:low 4: high 5
        return
end


El esquema de los pines del L293D al pic esta en el esquema que esta en tu pagina... con un pic 16F628

Desconectado Zero13

  • PIC12
  • **
  • Mensajes: 66
RE: Control Motores DC con PicBasic
« Respuesta #2 en: 18 de Septiembre de 2005, 18:13:00 »
Gracias Sonrisa lo pruebo y te digo algo.

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: Control Motores DC con PicBasic
« Respuesta #3 en: 18 de Septiembre de 2005, 18:27:00 »
Hola Zero, por si te sirve puedes probar haciendo lo siguiente para calcular cuanto tiempo debes girar.....

Para empezar debes medir la velocidad de tu motor(Wrpm), el radio de las llantas(R) y el espaciamiento entre llantas(E); por cierto estoy asumiendo que la disposicion de los motores es diferencial(los 2 en una misma recta pero con direcciones diferentes), espero no confundirte mucho con eso... Luego haces calculos, asumiendo que las llantas no resbalan...

Primero tenemos q la velocidad lineal en la llanta viene dado por la ecuacion:
W(rad/s)=(2*pi*Wrpm)/(60)
V=W(Rad/s)*R=(2*pi*Wrpm)/(60*R)     <m/s> o <cm/s> segun como hallas puesto el radio de la llanta.
Luego, si lo que quieres es girar 180grados teniendo una llanta sin moverse, harias lo siguiente:
t=espacio/V ;;;;; espacio=pi*E (180ºxRadio de giro)
t=(pi*E)/V ==========> t=30*E*R/Wrpm  (s)

Con esa ecuacion puedes calcular el tiempo que necesitas para girar 180º usando una rueda; si en cambio quieres usar las 2 para girar en su propio eje, es decir que a una le des hacia adelante y a la otra hacia atras; a la ecuacion lo divides entre 2.

Se que estas ecuaciones son ideales, pero nos dan una idea de cual puede ser el tiempo necesario para poder girar el robot.

Pruebalo y me cuantas como te salio, espero haberte podido ayudar.....
Un abrazo

Rebotado
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)


 

anything