[Control] [motor] de 16 bits por comparación numérica.

257 views
Skip to first unread message

Democrito

unread,
Dec 11, 2016, 2:21:39 PM12/11/16
to FPGAwars: explorando el lado libre
Hola!

Con esta actualización de proyecto me estreno con la Icezum Alhambra!

En un hilo anterior explicaba una forma de decodificar las ondas de un encoder incremental. Si alguien llega nuevo, la mayor parte de la información está allí. Aquí me limitaré a poner un vídeo, el ICE, el programa (FreeBasic) correspondiente y una breve descripción. (Si alguien quiere el ejecutable que me lo diga.)

Este nuevo diseño sigue la misma filosofía, pero amplio los comparadores digitales a 16 bits; de esta forma se obtiene la posibilidad de manejar 65536 posiciones posibles. Para un encoder de sólo 16 pulsos por vuelta (4 reales y luego el discriminador multiplica por 4) es tanta que se podría utilizar como contador de vueltas para bobinar hilo en un carrete.

Lo bueno de este diseño es que tiene todas las cualidades positivas de un motor de pasos, pero con la potencia que queramos (según el moto + reducción que utilicemos), sin perder fuerza a altas velocidades y con absoluta precisión.

Os pongo un vídeo para que se vea trabajando. Desde el teclado del PC muevo a posiciones relativas y absolutas (por incrementos o por posiciones ya establecidas).


El motor es de 6 voltios y aproveché que tiene eje trasero para colocar el mismo encoder que usé en el hilo y vídeo anterior. La caja de reducción es de 1/60.

El esquema es el siguiente:

He hecho un "Control P" en Icestudio para sacar esta imagen.


En aplicaciones reales se necesita una posición cero donde comenzar y para ello está "Reset_n", en el esquema siempre está a 1 (lógica inversa), pero es ahí donde iría un sensor o pulsador para la posición cero real.

Está diseñado para funcionar a 115200 baudios, pero eso es modificable. Si hacéis clic en los bloques veréis sus tripas y lugar para cambiar esa velocidad de comunicación.

El programa que maneja este invento envía dos bytes para formar un palabra de 16 bits. Siempre hay que enviar la información de la posición de dos en dos, si se hace de otra manera se produciría una inconsistencia y no funcionaría correctamente.

Recuerda que este tipo de manejo de motores "comparación numérica" es el más sencillo y simple que existe digitalmente hablando y sólo vale para encoders de muy pocos pulsos por vuelta (esto, además, significa que podemos fabricarnos el encoder de forma muy simple).

No sé si se me olvida comentar algo más, si así fuese abriría otro post.

Saludos!


ControlMotor16_v2.ice
Motor_position.bas

Democrito

unread,
Dec 11, 2016, 3:16:22 PM12/11/16
to FPGAwars: explorando el lado libre
Acabo de mirar la resolución del eje final (a ojo) y me sale 360 grados / 1442 pulsos por vuelta completa = casi 0,25 grados.

matthew venn

unread,
Dec 11, 2016, 3:18:40 PM12/11/16
to FPGAwars: explorando el lado libre
Que guay!

Juan Gonzalez Gomez

unread,
Dec 12, 2016, 4:05:56 AM12/12/16
to FPGA-WARS: explorando el lado libre
Wow! Alucinante demócrito!!! ¡Muchas gracias por compartir! :-)

Saludos, Obijuan

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/de0111a0-cdf8-4a38-b2b6-dcc24a3bcf52%40googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

Jose Antonio Vacas Martinez

unread,
Dec 12, 2016, 8:11:08 AM12/12/16
to FPGAwars: explorando el lado libre
¿Soy el único que ve una impresora 3D (o cualquier CNC) con una precisión no vista hasta ahora?

rafael lozano

unread,
Dec 12, 2016, 8:57:04 AM12/12/16
to FPGAwars: explorando el lado libre
No, no eres el unico, desde antes de nacer la icezum ya estaba con ese run run, viendo posibilidades por software con arduino con MISAN, pero con un impedimento un arduino por eje dedicado aparte del control de la 3d o del cnc. Mi objetivo seria meter 2 o 3 servos en la icezum.

Democrito

unread,
Dec 12, 2016, 10:16:47 AM12/12/16
to FPGAwars: explorando el lado libre
Este proyectillo no vale para una impresora 3D ni CNC, porque al parar pendulea varias veces hasta quedarse quieto, sobre todo cuando le das tiempo para adquirir inercia, pero para otras cosas... pues eso!

Personalmente no me gustan los servos tipo futaba, porque carece de resolución y potencia real, y los baratos también pendulean. A partir de 15 euros puedes tener algo medio decente (si necesito 6 servos, sólo tengo que multiplicar 15*6=un riñón), pero con resolución de un grado y sólo para 180 grados. En plan juguete está muy bien, pero para cosas más serias, donde la potencia y resolución es importante, pues ya se sabe.

Como dije, éste método es el más sencillo que existe digitalmente hablando, y creo que es bueno que la gente lo conozca, no siempre se necesita un control PID. El siguiente paso es conseguir un control PID electrónico puro, y pienso que sería un proyecto interesante, pero como comenté en otro hilo, si ocupa casi todos los luts de nuestras FPGA, pues mal asunto. Le estoy dando vueltas a este asunto, no sé si terminaré mareado... En fin!

Saludos!
Reply all
Reply to author
Forward
0 new messages