[Servos][Icestudio] Controlador de servos implementado en bloques

206 views
Skip to first unread message

Obijuan

unread,
Jul 8, 2017, 4:08:29 AM7/8/17
to FPGAwars: explorando el lado libre
Hola,

  He hecho un componente, llamado ServoTime-20ms, que permite generar las señales de control de la mayoría de los servos. Yo los estoy probando con los servos Futaba 3003
El periodo de la señal generada es de 20ms y los pulsos tienen una anchura variable determinada por el parámetro TICS, cuyas unidades son decenas de micro-segunods. Es decir, 1 tic = 10 micro-segundos
De esta forma, se pueden generar pulso que cubren el rango típico de los servos 0 - 2.5ms

Este es un ejemplo de su uso. Se le envía a la posición correspondiente al pulso de anchura de 1ms (100 tics)



El componente NUM es una constante genérica de 8 bits, que se saca por el bus de 8 bits y se envía al servo. El valor de esta constante se especificaa mediante el parámetro TICS

Lo interesante de este componente es que está implementado, a su vez, con bloques de icestudio



Ahora se puede comprender mejor cómo se genera la señal de control de servos. Y si se quiere adaptar para servos que tengan periodo de 10ms en vez de 20, sólo hay que cambiar el corazón
Si lo que se quiere es que los pulsos tengan un ancho en un rango diferente de 0 - 2.5ms, hay que cambiar el temporizador y crear otro acorde a las especificaciones

Este componente lo podéis encontrar en:  https://github.com/FPGAwars/workshops/tree/master/2017-07-08-makespace-madrid/makespace-17/blocks/Varios/Servos

y el ejemplo de uso en:  https://github.com/FPGAwars/workshops/tree/master/2017-07-08-makespace-madrid/makespace-17/examples/Test

Saludos, Obijuan


Auto Generated Inline Image 1
Auto Generated Inline Image 2

Obijuan

unread,
Jul 8, 2017, 5:14:08 AM7/8/17
to FPGAwars: explorando el lado libre
Basado en el ServoTime, he construido el ServoBit paramétrico, que es un servo Binario. Cuando se le pone un 1 por la entrada va a una posición, y con un 0 a otra. Estas dos posiciones se pueden especificar mediante los parámetros POS0 y POS1:




Esos valores hacen que un servo Futaba 3003 se mueva 90 grados. Si se tiene otro servo, hay que ir modificando esos valores hasta conseguir las dos posiciones que se quieran

¿Cómo está hecho el servoBit?  Muy fácil: a partir de un ServoTime y usando un multiplexor de 2 a 1:



Las dos contantes pasadas como parámetros (que tienen unos valores por defecto para que funcione directamente en los Futaba 3003) se meten en un multiplexor de 2 a 1 de 8 bits. Mediante la entrada de posición del servo se selecciona una u otra posición, que se introduce en el ServoTime que hace que el servo vaya a esa posición.

Ahora ya se pueden hacer componentes de servobit para cada tipo de servo:  ServoBit-90-Futaba3003, ServoBit-90-TowerPro, etc...  Simplemente cambiando los parámetros y encapsulándolo todo en un nuevo módulo

Así entre todos podemos ir creando una biblioteca para el control de todos los servos típicos

Saludos, Obijuan
Auto Generated Inline Image 1
Auto Generated Inline Image 2

Obijuan

unread,
Jul 8, 2017, 6:01:34 AM7/8/17
to FPGAwars: explorando el lado libre
Aquí tengo implementados los ServoBit 90 y 180 para los futaba 3003:





Están en los enlaces que os he pasado antes


Saludos, Obijuan


El sábado, 8 de julio de 2017, 10:08:29 (UTC+2), Obijuan escribió:
Auto Generated Inline Image 1
Auto Generated Inline Image 2

Juan José Luna Espinosa

unread,
Jul 8, 2017, 6:03:47 AM7/8/17
to fpga-wars-explora...@googlegroups.com
Molan un montón estos módulos, cuando tenga tiempo de volver a ponerme con Icestudio seguramente habrá una plétora de ellos.

Sigue así, gastando monóculo!! ;-D

--
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/fa2c77a0-3880-4ab5-8736-d442daa734f6%40googlegroups.com.

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

Juan Gonzalez Gomez

unread,
Jul 8, 2017, 6:14:41 AM7/8/17
to FPGA-WARS: explorando el lado libre
Gracias!

Like a sir!  :-D

Imágenes integradas 1

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

--
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.

Jose Pico

unread,
Jul 9, 2017, 4:10:06 AM7/9/17
to FPGAwars: explorando el lado libre
Fantásticos!
Estoy ansioso por probarlos!

Muchas Gracias

Jose Pico

unread,
Jul 11, 2017, 6:02:23 PM7/11/17
to FPGAwars: explorando el lado libre
Hola:

He probado el ServoTime con un servo  "Tower Pro Micro Servo 9g SG90" y funciona perfectamente.



Saludos

Jose Pico

unread,
Jul 11, 2017, 6:49:50 PM7/11/17
to FPGAwars: explorando el lado libre
 Hola:

Probado el ServoBit con Servo SG90.  oK

Saludos

Obijuan

unread,
Jul 12, 2017, 2:19:11 AM7/12/17
to FPGAwars: explorando el lado libre
Genial! :-)   ¡Gracias Jose!

Saludos, Obijuan
Reply all
Reply to author
Forward
0 new messages