[ServoBit-180] Nuevo bloque ServoBit-180 para Icestudio 0.3

171 views
Skip to first unread message

Obijuan

unread,
Jan 25, 2017, 5:39:03 AM1/25/17
to FPGAwars: explorando el lado libre
Hola!

  Estoy preparando tutoriales para icestudio, para enseñar electrónica digital desde 0. Para ello estoy haciendo bloques básicos, que se cargarán como colecciones

Uno de ellos es el ServoBit-180:




Es un controlador para servos, que sólo admite 2 posiciones. Esto permite visualizar "Bits mecánicos". El ángulo entre las dos posiciones es de 180 grados
En el pantallazo os adjunto el circuito Hola mundo: En estado normal (sin apretar el pulsador), el servo está con la corona mirando hacia la derecha. Al apretar el pulsador, le lega un "1" y  se mueve 180 grados hacia la izquierda. Permanece ahí mientras haya un 1 en su entrada

El componente está en este repo:

https://github.com/Obijuan/digital-electronics-with-open-FPGAs-tutorial/tree/master/blocks/ServoBit-180

Me gustaría que lo probáseis (Tiene que ser con el icestudio 0.3-beta2).

En breve lo meto en una coleccion para que lo podáis instalar fácilmente. De momento podéis probar el "hola mundo":  ServoBit-180_test1-1-servo-1-button.ice   o crear vuestros propios circuitos añadiendo ServoBit-180.ice como bloque

Saludos, Obijuan


Auto Generated Inline Image 1

patripi

unread,
Jan 25, 2017, 7:02:33 AM1/25/17
to FPGAwars: explorando el lado libre
yo diría que si!


En beta2, sobre ICEstick (he cambiado los puertos), con Futaba s3003 y con el button "simulado" : )



PD-al principio he probado con un 9gr... pero algo he hecho mal porque empezó a calentarse y oler a chamuscado :S

Juan Gonzalez Gomez

unread,
Jan 25, 2017, 7:34:41 AM1/25/17
to FPGA-WARS: explorando el lado libre
uuuueeeeeeeee  Gracias Patri!!!!!!!  :-D

Me ha encantado la idea de poner la chincheta de referencia en el servo!!!  :-D  No se me había ocurrido. Yo le ponía un trozo cutre de cinta aisante, pero la chincheta mola más!! :-)

Gracias!

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/b2fc56ac-02cb-4ab5-99d3-fb04db7334c2%40googlegroups.com.

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

patripi

unread,
Jan 25, 2017, 7:55:56 AM1/25/17
to FPGAwars: explorando el lado libre
jejeje si, lo único que según el tamaño la tienes que capar un poco para que no choque con el cuerpo del servo a pasar por encima en el giro : )

Juanma Rico

unread,
Feb 2, 2017, 9:41:45 AM2/2/17
to FPGAwars: explorando el lado libre
Buenas,

Yo he probado el servo ya directamente desde la colección. No tengo servos Futaba, así que lo intenté con un micro servo de los "baratos" (un SG90), la cosa funciona, pero no respeta los ángulos, de hecho llega a "tope" y quiere seguir girando (en ambos sentidos).

He mirado por encima el bloque (no sé nada de Verilog) y veo que existen dos constantes para los ángulos, pero no entiendo sus valores (0xE4=228) y no sé si habría que modificarlos para adaptarlos a cada modelo de servo.



El miércoles, 25 de enero de 2017, 11:39:03 (UTC+1), Obijuan escribió:

Juan Gonzalez Gomez

unread,
Feb 2, 2017, 9:53:17 AM2/2/17
to FPGA-WARS: explorando el lado libre
Hola Juanma,

De momento el servobit 180 lo tengo ajustado para los futabas 3003. Para otros servo hay que modificar valores. 

Modifica esas constantes. Reduce la de mayor valor un poco, y aumenta la inferior hasta que no te llegue a los topes

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.

Juanma Rico

unread,
Feb 2, 2017, 12:06:16 PM2/2/17
to FPGAwars: explorando el lado libre


Perfecto, sin saber nada de Verilog lo he conseguido hacer funcionar para que no sobrecargue el servo cuando llegue a los topes (¿Puede ser eso lo que olía Patritri en su primer intento?).

He modificado el bloque del "ServoBit-180" sobre el modelo existente en la colección ("Tutorial-Obijuan-0.1.2") y he incluido los bloques constantes para así poder regularlo mejor.


Ha sido tan fácil y ha funcionado tan bien que me he sorprendido... Sin embargo, para que funcione en el principal (una vez modificado el zip) he tenido que eliminar y volver añadir la colección (con volver a la colección "Por defecto" y después a la del tutorial no es suficiente), eliminar el bloque del "ServoBit-180" (no se actualiza), volver a añadirlo y reconectar todas las conexiones.

¿Es posible "refrescar" la colección y sus componentes en el esquemático principal de alguna forma que yo no sepa sin tener que eliminar la colección y sin tener que reconectar todo?

Es una pena que no se pueda modificar el bloque directamente desde el principal, sé que se está trabajando sobre el zoom del bloque de código pero... ¿se tiene pensado en añadir esta característica para poder modificar el bloque o no se puede por cuestiones que técnicas que a mi se me escapan?

Jesús Arroyo

unread,
Feb 2, 2017, 12:32:39 PM2/2/17
to FPGAwars: explorando el lado libre
Buenas,

Las colecciones son como "releases" o distribuciones de bloques. Al instalar una colección en formato zip esta se descomprime en HOME/.icestudio/collections y al rearrancar Icestudio las detecta. El concepto está pensado como algo estático que utilizas en vez de modificar. Lo ideal será lanzar nuevas versiones de la colección de servos con bloques más complejos que permitan customización por parámetros.

Lo más cómodo en tu caso habría sido:
  1. Descomprimir la colección en un directorio.
  2. Editar el proyecto original
    1. Abrir el proyecto de servo
    2. Editar el contenido (PD: si cambiar los bloques verdes a FPGA pin puedes utilizarlos directamente con la FPGA)
    3. Guardar el proyecto.

Si quisieras utilizar este proyecto modificado como bloque puedes hacerlo en File > Add as block.


Ahora tu segunda pregunta. Tenemos apuntada la idea de editar bloques de forma recursiva. Es un tema delicado y seguramente lo abordemos después de la release 0.3.


Habría que definir el comportamiento en todos los casos, porque al editar el bloque se convierte en un bloque nuevo, y puede haber conexiones de más o de menos, cambio de la interfaz (puertos y parámetros). También habría que definir cómo se guarda el bloque, si sólamente para el que estás editando o para los similares del mismo nivel o distintos niveles (por ejemplo: si tienes varios bloques not y editas uno se guarda sólo en ese o en todos los del mismo nivel). Y seguramente unos cuantos dilemas más en los que no hemos pensado aún.


En resumen, implementaremos esa funcionalidad en futuras versiones. Mientras tanto podemos avanzar en conceptos e ideas y definición de los requisitos relacionados con esta funcionalidad.


Un saludo.

Juanma Rico

unread,
Feb 2, 2017, 1:47:04 PM2/2/17
to FPGAwars: explorando el lado libre

Gracias Jesús por tus explicaciones, ayudan mucho a comprender el funcionamiento del programa.

Otra cosa respecto a las colecciones que no sé si es porque no lo busco donde lo debo buscar... o porque mi lógica no se rige por las
mismas reglas... Pensaba que en las colecciones se incluían los ejemplos y que para cada colección había un conjunto de ejemplos.

En la colección del tutorial, al descomprimir veo que existen dos carpetas, pero que no se incluyen ejemplos... los ejemplos Obijuan los pone en ficheros aparte.
 
¿No sería interesante que con cada "release" o distribuciones de bloques pudieras incluir una carpeta de ejemplos o "test" para esos bloques?
De esta manera todo sería consistente y con una sola colección que cargaras tendrías el tutorial completo y disponible con los ejemplos accesibles (además de los básicos).

Gracias como siempre.


Jesús Arroyo

unread,
Feb 3, 2017, 2:26:11 AM2/3/17
to FPGAwars: explorando el lado libre
Hola Juanma,

Sí, esta propuesta también la hizo Javascam. Estamos en fase de definición. Incluso puede que cambiemos el nombre de Collection a Library, depende lo que se entienda mejor.

Se me ocurre que una forma de implementarlo podría ser que el ZIP contuviera:
  • Un directorio blocks con la estructura de bloques del menú.
  • Un directorio examples que a su vez tenga directorios con las placas de los ejemplos y dentro de cada placa la estructura de sus ejemplos, tal y como está organizad ahora.
  • Quizá un fichero de descripción en formato json.

Tenemos que definir cómo queremos que sea la implementación pero me parece muy buena idea incluirlo todo de forma conjunta.


Seguiremos comentando esto en el hilo de Colecciones.


Un saludo.

asms...@hotmail.com

unread,
Sep 22, 2017, 9:17:47 AM9/22/17
to FPGAwars: explorando el lado libre
Hola Juanma,

estoy con la Icezum alhambra y trasteando Icestudio, estoy  intentando hacer lo de los servos de poner constantes en el codigo verilog para hacerlo mas sencillo, no se como enlazar las constantes porque no me deja llevar la linea de la constante al Codigo. He estado intentando modificar los parametros en el codigo pero no lo consigo. Por si puedes adjuntar ese bloque por aqui para descargarlo y verlo como lo has hecho. GRACIAS.


El jueves, 2 de febrero de 2017, 18:06:16 (UTC+1), Juanma Rico escribió:

Juan Gonzalez Gomez

unread,
Sep 22, 2017, 10:06:15 AM9/22/17
to FPGA-WARS: explorando el lado libre
Hola!

En la coleccion por defecto, pon un bloque PrescalerN, y métete dentro (con doble click) para ver un ejemplo

El prescalerN está en el menú Lógica/secuencial

Es un prescaler parametrico, donde N es el numero de bits de ese prescaler

Saludos, Juan

Hola Juanma,

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.
Reply all
Reply to author
Forward
0 new messages