Autor Tema: Control de velocidad y aceleración en un motor a pasos con 16F887  (Leído 8697 veces)

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

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Hola amigos de todopic:

Estoy por comenzar un proyecto para la escuela que consiste en la construcción de un brazo manipulador tipo angular, que por el momento va a tener 4 grados de libertad (digo por el momento por que tal vez le ponga más).

Pienso utilizar motores a pasos bipolares para los movimientos, en formato de micropasos para mayor fuerza y presición, ya tengo los drivers para esto, son los drivers del buen amigo esteca55 que tiene en su página y que recomiendo ampliamente por que funciona de maravilla:

Driver bipolar 2A con control de corriente

Pienso utilizar un PIC16F887 por el momento, con miras a mudarme, en caso necesario a un 18F4550, programado en CCS.

Hasta aquí todo de perlas, ya que ya he probado los motores desde el PIC y funcionan muy bien, el problema es el siguiente:

Debido a que estoy en la carrera de control y automatización, quiero meterle un control PID, no tan complejo, y tal vez un control de posición por medio del algoritmo de Bresenham para que responda con mayor velocidad y presición.

El algoritmo de Bresenham es un algoritmo creado para dibujar rectas en los dispositivos de gráficos rasterizados, como por ejemplo un monitor de ordenador, que determina qué pixeles se rellenarán, en función de la inclinación del ángulo de la recta a dibujar.


Mi principal problema radica en que estoy un poco oxidado en la cuestión de las ecuasiones del movimiento angular uniformemente acelerado que creo que son las que necesito implementarle a mi PIC para lograr la curva de aceleración - velocidad cte. - desaseleración:


Recuerdo que V=d/t, y que la aceleración es la derivada de la velocidad, pero con lo que no logro dar es con una ecuación que me describa el movimiento del motor a pasos, a la cuál poder aplicarle la derivada para la aceleración, y de esta forma calcular el retraso entre un pulso y otro, variantes en el tiempo para lograr dicha curva de aceleración.

Alguien tiene más conocimiento sobre este tema que me pudiera ayudar a llegar a estas ecuaciones que busco?

Muchas gracias por su atención y tiempo ;-)


« Última modificación: 01 de Mayo de 2011, 14:15:18 por falflores »
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: Control de velocidad y aceleración en un motor a pasos con 16F887
« Respuesta #1 en: 01 de Mayo de 2011, 19:59:46 »
.

Si tuviera que calcular la velocidad de un motor paso a paso en función del tiempo de entre pasos, haría:

w(T) = g / T (velocidad angular)

donde:
- g es el valor de grados por paso, en radianes (= 2pi / nº de pasos por revolución)
- T es el tiempo entre pasos

luego: v(T) = R*w = R*g / T

donde R es la distancia al eje de rotación

No se si es algo así lo que buscabas :? Sino espero que sirva de base por lo menos..

Saludos.


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Control de velocidad y aceleración en un motor a pasos con 16F887
« Respuesta #2 en: 02 de Mayo de 2011, 14:08:28 »
Citar
en formato de micropasos para mayor fuerza y presición,


¿Por que, no encuentras motores con los pasos que necesitas? ¿o como aprendizaje simplemente?. Es bastante complejo, y programando en C te va a ocupar bastante.


Citar
tal vez un control de posición por medio del algoritmo de Bresenham para que responda con mayor velocidad y presición.

Una de las grandes ventajas del PAP es que en el mismo programa sabes donde esta en cada momento, es el programa el que le manda dar cada paso, quien mejor que el para saber donde esta.

Citar
Recuerdo que V=d/t, y que la aceleración es la derivada de la velocidad, pero con lo que no logro dar es con una ecuación que me describa el movimiento del motor a pasos, a la cuál poder aplicarle la derivada para la aceleración, y de esta forma calcular el retraso entre un pulso y otro, variantes en el tiempo para lograr dicha curva de aceleración.


¿Si lo haces empiricamente, tu profe se cabreara mucho? Pruebas con una aceleracion y si no te gusta le das mas o menos tiempo entre pasos hasta que te guste, bueno a ti y al profe  :lol: :lol:

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Control de velocidad y aceleración en un motor a pasos con 16F887
« Respuesta #3 en: 03 de Mayo de 2011, 01:45:40 »
Gracias por tu respuesta tapi8.
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Control de velocidad y aceleración en un motor a pasos con 16F887
« Respuesta #4 en: 03 de Mayo de 2011, 01:47:28 »
Si tuviera que calcular la velocidad de un motor paso a paso en función del tiempo de entre pasos, haría:

w(T) = g / T (velocidad angular)

donde:
- g es el valor de grados por paso, en radianes (= 2pi / nº de pasos por revolución)
- T es el tiempo entre pasos

luego: v(T) = R*w = R*g / T

donde R es la distancia al eje de rotación

Gracias por las fórmulas mtristan, creo que serán un buen punto de partida  ;-)
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com