Pages: [1]   Go Down
Author Topic: Control PID Arduino de Motor paso a paso con Encoder  (Read 2290 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas, estoy estudiando la manera de retroalimentar el motor paso a paso de mi CNC mediante encoder incremental con Arduino como controlador.

En primer lugar, arduino puede contar el número de pulsos recibidos del encoder a través de un pin, he pensado en contar cada pulso mediante interrupciones, es decir, cuando cambia el pin de dirección del motor, comenzar a contar hasta que vuelva a cambiar la dirección. Entonces, verificar la posición del encoder y enviar los pulsos y la señal de dirección necesarios para que el motor se posicione de forma correcta.

El problema que se me plantea es la velocidad de muestreo que debo tomar para no perder pulsos en el contador, ya que no quiero que eso ocurra bajo ningún concepto, al igual que dudo en si debo colocar un buffer para ir almacenando valores o algo similar.

Alguien puede darme alguna idea de como implementar este sistema mediante encoder incremental absoluto y arduino?? Pienso que sería interesante añadir circuitería al encoder para aumentar la resolución de este, ya que mi motor, gracias al driver, tiene una resolución de 1600 pasos por revolución (1/8 * 200), aunque eso podría cuestionarse una vez funcione el código sin micropasos.

Muchas gracias por adelantado. Espero que podais ayudarme.
Logged

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Por qué quieres usar un encoder óptico. En principio, los motores paso a paso se diseñaron para evitar tener circuiteria de retro alimentación. Me explico, por qué vas a enviarle a motor paso a paso 20 pulsos y contar 20? Siempre puedes conocer su posición, calcular velocidades y aceleraciones sin tener que utilizar nada.

Si al final decider usar un encoder, por interrupción, tampoco necesitas ninguna frecuencia de muestreo. Simplemente recibirás una interrupción por pulso.
Logged

   

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Te cuento fm, tengo una máquina CNC (controlada numericamente por PC). Bien, mediante un software adecuado, el PC envia información a través del puerto paralelo al motor paso a paso en cuestión. Cuando mecanizas algunos materiales tales como aluminio, madera y demás, en ocasiones la fuerza que ejerce la herramienta de corte sobre el material hace perder pasos al motor, por lo tanto, para conservar las dimensiones de la pieza es muy aconsejable tener un control sobre su posición, así aseguras que el resultado final es lo más similar posible al diseño inicial. Mi idea es usar arduino para contar los pulsos del encoder anclado al motor y a su vez contar los pulsos enviados al motor, comparar ambos y enviar los pulsos necesarios, desde arduino, para posicionar el motor. El problema, se me hace muy cuesta arriba la programación...

Agradezco cualquier comentario al respecto. Muchas gracias
Logged

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi CNC la controlo directamente con mi vinciDuino y al PC vía USB.
La pérdida de pasos suele ser debida a: exceso de velocidad cuando intenta ejercer más par del que es capaz de entregar el motor y ejercer más par del debido.

La mía no pierde pasos, también es cierto que no mecanizó metales duros.
Logged

   

Pages: [1]   Go Up
Jump to: