Autor Tema: Control 2 stepper con un Pic  (Leído 3837 veces)

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

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Control 2 stepper con un Pic
« en: 13 de Abril de 2009, 15:01:41 »
Amigos que tal:
Traigo una inquietud acerca de poder controlar con 1 solo PIC 2 stepper, quiero saber si es posible ya que aun no encuentro como hacerlo de manera que los movimientos sean independientes, en una ocasión he controlado con un mismo Pic 2 stepper pero trabajando uno a la vez es decir primero uno y luego el otro, mi dudad es si podemos controlarlos de tal manera que puedan trabajar al mismos tiempo empleando el mismo micro y con señales de control independientes :-/.

Un saludo
Sonrie Cristo te ama

Desconectado x-logan

  • PIC10
  • *
  • Mensajes: 14
Re: Control 2 stepper con un Pic
« Respuesta #1 en: 18 de Abril de 2009, 13:58:02 »
Hola que tal

Bueno no se si sea esto lo que quieres pero es una idea. Empecemos con definir a que te refieres con al mismo tiempo. Una aproximación de facil implementacion y que semejaria que los servos fueran independientes seria hacer el paso de un servo, luego del siguiente, dependiendo de las señales de control se ejecutaria el paso del servo o no ejemplo:
Código: [Seleccionar]

while(1)
{
   if(Servo1)
   {
       pasoServo(1);
   }
   else
   {
       delayServo();
   }
   if(Servo2)
   {
       pasoServo(2);
   }
   else
   {
       delayServo();
   }
   
}

Esto es una manera sencilla, se pueden generalizar mas las funciones pero la idea seria esta, PasoServo() ejecuta la secuencia de instrucciones necesaria para que el motor de un paso  y delyServo() ejecuta un retardo igual al que tarda PasoServo1() esto debería ser así por que si un servo no se activa el otro se ejecutaría con una mayor frecuencia y por lo tanto daría los pasos mas rápido el servo cuando esta activado uno solo que cuando están los dos.

No se si esto sea lo que estés buscando, es sencillo pero puede funcionar.



Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Control 2 stepper con un Pic
« Respuesta #2 en: 20 de Abril de 2009, 11:14:13 »
Gracias amigo por tu respuesta pero creo que no me di a entender lo que pretendo es que pueda controlar en forma completamente independiente la secuencia de 2 stepper es decir que igual puede funcionar uno, otro o incluso los dos al mismo tiempo, como mencione el trabajar con uno a lavez, esto lo pudo hacer empleando una función "OR" y guardando el paso de cada motor en una variable por lo que puedo controlar dos motores pero uno a la vez por lo que no tiene tanto problema el problema surge cuando quiero manejar los dos al mismo tiempo en cualquier sentido, eso es lo que se me complica.

Saludos
Sonrie Cristo te ama

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Control 2 stepper con un Pic
« Respuesta #3 en: 20 de Abril de 2009, 12:57:07 »
Hola. con stepper estarías hablando por ejemplo de un motor paso a paso? En que lenguaje programás?

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Control 2 stepper con un Pic
« Respuesta #4 en: 21 de Abril de 2009, 11:03:28 »
 :)Así es al referirme a stepper hablo de los motores paso a paso, y estoy programando en Mikrobaisc, ya he realizado el control de 2 motores con un solo pic pero trabajando uno a la vez y no los dos al mismo tiempo.

Saludos
Sonrie Cristo te ama

Desconectado PHLAKO

  • PIC10
  • *
  • Mensajes: 49
Re: Control 2 stepper con un Pic
« Respuesta #5 en: 26 de Abril de 2009, 01:16:32 »
Hola Moyin, no se cual es el problema, pero hay una cosa importante que no has comentado. el control es a traves de un driver "microstep", solo con transistores de forma unipolar, o con un puente H, osea conectado de forma bipolar?

saludos,

chaos :)
SIEMPRE TE RECORDARE AMADO Y FIEL COMPAÑERO "LOBO"

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Control 2 stepper con un Pic
« Respuesta #6 en: 26 de Abril de 2009, 11:25:58 »
Bueno, al manejar stepper o motores a pasos en lo personal he utilizado desde puentes "H" para lo bipolares o CI como el L293 y para los unipolares desde el tipico driver a transistor, el L293 o el ULN2003 hasta los arreglos L297-L298. Aunque esto es independiente del la lógica de programación lo comento ya que la secuencia de avance del motor es solo una serie de unos y ceros que alimentan al driver y no tiene que ver con los tipos de motores o las interfaces.

saludos
Sonrie Cristo te ama

Desconectado PHLAKO

  • PIC10
  • *
  • Mensajes: 49
Re: Control 2 stepper con un Pic
« Respuesta #7 en: 26 de Abril de 2009, 15:05:20 »
Hola Moyin, te hice el comentario puesto que es distita la logica para manejar unipolares, bipolares con H, o con microstepper driver, en este ultimo son 3 las lineas de control y en un unipolar con driver a transistor, necesitas 4 lineas para controlarlo. En uno inviertes el giro cambiando el estado de un pin, en cambio en el otro debes invertir la secuencia de 4 bits, por lo tanto existe una gran diferencia en la logica de control de uno y otro. Ahora me imagino que indicas que la forma de manejar 2 motores seria igual en ambos casos.

Solo veo posibles problemas cuando se necesite mover ambos motores a distinta velocidad, como sea mi opinion es que debes tener un puerto destinado a lo dos motores, donde siempre refrescara al mismo tiempo, por lo tanto debes refrescar el nibble de aquel motor que vas a mover  y a la vez mover todo el byte hacia el driver....esto es sencillo si necesitas misma velocidad de movimiento, pero creo que este no es el caso..

saludos

chaos:)
SIEMPRE TE RECORDARE AMADO Y FIEL COMPAÑERO "LOBO"

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Control 2 stepper con un Pic
« Respuesta #8 en: 28 de Abril de 2009, 15:28:16 »
Gracias Phlako por tus respuestas, entiendo a lo que te refieres de las tres lineas de control con los driver por ejemplo el L297-L298 los cuales manejas a través del pic por ejemplo el CK, Enable y sentido de giro de motor, pero imagina que quieras controlar con el mismo PIC la secuencia de 2 motores con el mismo puerto o puertos distintos por medio de puentes H para un motor biplar, esto significa que generarías las dos secuencias mediante el mismo PIC.
Como menciono arriba ya esto lo he realizado pero trabajando un motor a la vez nunca los dos al mismo tiempo y quiero saber si es posible generar las secuencias de los dos al mismo tiempo.  Espero ser claro.

Gracias y un saludo :-/
Sonrie Cristo te ama

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Control 2 stepper con un Pic
« Respuesta #9 en: 28 de Abril de 2009, 15:37:31 »
La verdad es que leo y sigo sin entender. Tu problema es implementar el algoritmo para poder controlar con un solo PIC los dos motores a la vez?

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Control 2 stepper con un Pic
« Respuesta #10 en: 28 de Abril de 2009, 18:20:49 »
Así es Bruno, muchas veces he controlado mediante un pic un motor a pasos pero desconozco la forma de poder manejar con un mismo Pic 2 motoresque trabajen en forma independiente cada uno en el  momento en que se requiera.
Pero bien dices ese es mi problema el algoritmo, la lógica del programa.

saludos
Sonrie Cristo te ama

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Control 2 stepper con un Pic
« Respuesta #11 en: 28 de Abril de 2009, 21:44:12 »
Bien. Ahora nos vamos entendiendo.

Te explico una forma:  Programás en MikroBasic, lenguaje con el que casi no he programado ni recuerdo cómo era asi que saldra mal por ahi.

Voy a asumir que controlo ambos motores con puentes H conectados a las salidas del PIC y que los moveré usando paso enteros(NO medios pasos) para simplificar. Después podés extenderlo a medio paso. Es lo mísmo.

Asumo entonces que voy a tener que usar 4 pines por motor. Entonces necesito 8 pines(un puerto completo en las series bajas de uC PIC) para controlar ambos.

Variables:
Propongo usar:

*2 variables: Una para cada motor que contengan el valor actual de las bobinas de cada motor.Las llamaré Motor1 y Motor2;
*1 variable auxiliar que recogerá el valor de cada motor y enviaremos al puerto combinandolas. La llamaré LatchPuerto;

Implementación:

Código: Visual Basic
  1. 'declarar las variables:
  2.  
  3. dim PasoAcual1,PasoActual2,LatchPuerto as byte
  4.  
  5. ´Dentro del main deberías:
  6.  
  7. 'Inicializar las variables
  8.  
  9.             '0000AAAA
  10. PasoActual1=%00001100     'indicar paso 1
  11.  
  12.             '0000BBBB
  13. PasoActual2=%00001100     'indicar paso 1
  14.  
  15. LatchPuerto=%00000000
  16.  
  17.  
  18. 'Enviar por primera vez los valores a los motores para inicializarlos.
  19.  
  20. EnviarPasos
  21.  
  22.  
  23. 'Ahora supongamos que quiero mover uno de los motores...
  24.  
  25. 'Esto "movería" el motor 2 a la derecha...
  26. MoverMotor(1,1)
  27.  
  28. 'Ahora envio al puerto así efectivizo el movimiento
  29. EnviarPasos
  30.  
  31. 'Ahora voy a mover los dos motores a la vez..
  32.  
  33. 'Esto "mueve" el motor 1 a la derecha...
  34. MoverMotor(0,1)
  35.  
  36. 'Esto "mueve" el motor 2 a la izquierda...
  37. MoverMotor(1,0)
  38.  
  39. 'Ahora envio al puerto así efectivizo el movimiento
  40. EnviarPasos
  41.  
  42.  
  43.  
  44. 'Listo?:)
  45.  
  46.  
  47. sub procedure EnviarPasos()
  48.  
  49.         'Copiar el valor del motor1 a la variable LatchPuerto
  50.         LatchPuerto=PasoActual1
  51.  
  52.         'Mover el valor obtenido 4 lugares a la izquierda(XXXXAAAA pasa a ser AAAA0000)
  53.         LatchPuerto<<4
  54.  
  55.         'Incorporar el valor del motor2 a la variable LatchPuerto(que ahora será AAAABBBB)
  56.         LatchPuerto=LatchPuerto OR PasoActual2
  57.  
  58.         'Escribir el valor obtenido en el puertoB(envia a los puentes H)
  59.         PORTB=LatchPuerto
  60.  
  61. end sub
  62.        
  63.  
  64. sub procedure MoverMotor(NumMotor as byte, Direccion as byte)
  65.  
  66.         if(NumMotor=0)
  67.                 if(Direccion=0) ProxPasoIzq(PasoActual1) else ProxPasoDer(PasoActual1)
  68.         else
  69.                 if(Direccion=0) ProxPasoIzq(PasoActual2) else ProxPasoDer(PasoActual2)
  70.         end if
  71.  
  72.  
  73. end sub
  74.  
  75.                          'DIM?
  76. sub function ProxPasoDer(       byref PasoActual as byte)
  77.  
  78.         select case PasoActual
  79.                 case %00001100
  80.                         PasoActual=%00000110                   
  81.                 case %00000110                 
  82.                         PasoActual=%00000011                   
  83.                 case %00000011                 
  84.                         PasoActual=%00001001                   
  85.                 case %00001001                 
  86.                         PasoActual=%00001100
  87.         end select
  88. end sub
  89.  
  90.                          'DIM?
  91. sub function ProxPasoIzq(      byref PasoActual as byte)
  92.  
  93.         select case PasoActual
  94.                 case %00001100
  95.                         PasoActual=%00001001                   
  96.                 case %00001001                 
  97.                         PasoActual=%00000011                   
  98.                 case %00000011                 
  99.                         PasoActual=%00000110                   
  100.                 case %00000110                 
  101.                         PasoActual=%00001100
  102.         end select
  103. end sub

Puede que haya cosas mal, la idea es esa...Espero que puedas analizarlo y asimilarlo.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Control 2 stepper con un Pic
« Respuesta #12 en: 29 de Abril de 2009, 19:18:16 »
OK, voy analizar el programa para entenderlo y ver que logros obtengo, gracias BrunoF por el aporte.

Saludos :P
Sonrie Cristo te ama


 

anything