PCB Prints FPGAwars CR-10

PCB Prints de FPGAwars con CR-10

Desde la semana pasada llevo para terminar esta entrada y me he prometido que de hoy no pasa, veremos a ver…

PCB Prints FPGAwars

Pronto hará un año que tenía que estar disfrutando de mi impresora de KickStarter y todavía estoy esperando.

Están usando conmigo la táctica más cutre que conozco, la que usan todos los creadores de crowdfundings que no cumplen con los tiempos que ellos mismos han definido. Se empeñan en hacernos creer que es por nuestro bien, que toda la espera esa que llevamos acumulada se transformará en felicidad cuando lleven a cabo esas modificaciones. No se dan cuenta que la ilusión con la que se participó, se evapora al mes de tardanza en llegar y que jamás aparece de nuevo.

Igual que no elegí esas modificaciones, tampoco me apetece aceptar sin más que incumplas lo pactado. Sinceramente, no me creo nada.

Pero bueno, vamos a lo divertido que os quería contar en esta entrada.

Impresora CR-10

Para poder introducirme en la impresión 3D he decidido comprar una CR-10 (aconsejado por @akirasan) e ir viendo cómo va el tema. Creo que he acertado haciéndome caso de sus consejos en el modelo de impresora y en la web para comprarla.

Os recomiendo echar un vistazo en Akirasan.net (su blog), tiene cosas muy interesantes relacionadas con Impresión 3D, Raspberry Pi, Arduino, etc.

Impresora CR-10 para mis PCB Prints

Por 350,00€ en 20 días aproximadamente tenía mi CR-10 en casa lista para imprimir.
Cuando abrí la caja (muy bien protegido y embalado todo) encontré lo siguiente:

  • Impresora CR-10.
  • Rollo de filamento PLA blanco.
  • Rollo de cinta de carrocero.
  • Espátula.
  • Tarjeta de 8 gigas.
  • Cables de conexión.
  • Y algunas cosas más que no tienen mucha importancia, ya que se utilizaron sólo para el montaje.

Impresión 3D con PLA

Impresión 3D desde cero

Aun sin haber montado ninguna antes, el montaje es muy sencillo. Es más, creo que recomendaría esta impresora a personas que les de un poco de miedo tener que montarla ellos mismos. Aparte de que existen muchos vídeos (en castellano incluido) del paso a paso para montarla, es muy fácil hacerlo.

Las instrucciones que vienen para montarla son pésimas, es muy fácil montarla, pero al no ser adivino, tuve que mirar un vídeo en internet.

ABS vs PLA

Después de leer un poco sobre las características de los filamentos ABS y PLA, estoy convencido que me decanto por el PLA, ya que es de origen vegetal y no de petróleo como es el caso del ABS. Sacrificando su dureza y aferrándome a que encima de no ser tóxico, los resultados son muy similares y es más sencillo de usar.

Tips impresión 3D para verderones

Aquí van algunos tips que me han servido, aunque imagino que dependiendo de la impresora serán más efectivos o menos. Desde luego con la CR-10 están funcionando.

  • La temperatura de la cama para imprimir PLA debe ser de 60 grados.
  • La temperatura de la boquilla (nozzle) debe ser de 200 grados.
  • Alinear la altura de la boquilla respecto a la cama en las 4 esquinas antes de imprimir (es algo muy sencillo que puede resultar muy confuso si es la primera vez que se hace, ni te cuento si es en la primera toma de contacto con una impresora 3D). Para la siguiente entrada preparo tutorial con vídeo.
  • Colocar unas tiras de cinta adhesiva de carrocero sobre la cama.
  • Estar pendiente de que no se lie el filamento.

PCB Prints curso FPGAwars

Impresiones de impresión (efecto o sensación que algo o alguien causa en el ánimo) e impresiones de objetos impresos.

¿Pues qué decir? Que estoy muy contento con la compra y me pongo con el curso de FreeCAD de Obijuan para poder llevar las ideas que se me ocurran a trozos de plástico vegetal (PLA).

Curso de FPGAwars

Tengo que reconocer que ha sido el curso de FPGAwars y los PCB Prints los responsables de comprar otra impresora 3D mientras llega algún año de estos la desaparecida BuildOne.

Desde este enlace PCB Prints para el curso de FPGA wars de Obijuan puedes ver todos los PCB Prints que se van creando para imprimir.

En este enlace hay una búsqueda de IceZUM en Thingiverse.

Esta lista la voy a dejar abierta para incluir los PCB Prints y demás objetos relacionados con IceZUM Alhambra que vaya sacando impresos.

  • PCB Print button (saqué 3 unidades).
  • Caja para IceZUM Alhambra. (Muy fina para mi gusto, parece que se va a romper con sólo tocarla, pero es de agradecer igualmente el detalle de compartirla).

Untitled.es en redes sociales

Bloque pulsador para Icestudio en Verilog

[toc]

Bloque pulsador para Icestudio en Verilog

Antes de empezar quiero dejar claro que esta sección dedicada a FPGA, Icestudio, Verilog y demás allegados, van a ser mis apuntes. Llevaba desde junio del 2017 para ponerme a enredar a conciencia con la IceZUM Alhambra y hasta hace un mes que me puse de lleno con la Academia Jedi de hardware de Obi Juan no he podido.

IceZUM Alhambra FPGAwars
(Contacta conmigo si quieres plancharte en una camiseta este diseño de FPGAwars)

Bueno, sin más rollo voy a preparar un bloque para Icestudio en el que transformo un pulsador físico (sw1) de IceZUM Alhambra a interruptor con Verilog.

Si te quieres ahorrar el tutorial (no te lo recomiendo) y ponerte a enredar con los archivos directamente, aquí los tienes Bloque de pulsador a interruptor con Icestudio.

Tutorial Icestudio

Para este tutorial vamos a crear dos archivos diferentes:

  • 1º Crearemos pulsador.ice (este será el bloque que podremos incluir en nuestros futuros proyectos).
  • 2º Crearemos un ejemplo en el que incluiremos el bloque pulsador.

Al lío, creando el bloque pulsador…

Aunque parezca obvio, lo primero que debemos hacer es abrir Icestudio y crear un nuevo documento. Se puede llegar a pensar que para crear bloques hay que escribir el código desde otro lugar (a mi me pasó).

Si no lo tienes aún instalado, desde aquí puedes descargar Icestudio.

Una vez descargado e instalado nos ponemos al lío.

Archivo >> Nuevo

No sé si lo habré pensado de la forma correcta o no, pero os voy a contar cómo se me vino a la cabeza. Todavía estoy bastante desacostumbrado a pensar en hardware.

Recibo señal >> Transformo con Verilog >> Saco señal

Para esto necesito incluir en mi proyecto desde el menú:

  • Básico >> Entrada
  • Básico >> Código
  • Básico >> Salida

Para la Entrada selecciono Básico >> Entrada, pongo el nombre de Pulsador y despincho (o cómo queráis llamarlo) la casilla que hace referencia a que sea un pin de la FPGA.

Crear móodulo Icestudio

Hacemos algo muy parecido para Salida >> Basico >> Salida, ponemos el nombre de interruptor, despinchamos que sea un pin de FPGA y seguimos.

Si todo va bien, tenemos que llevar nuestro proyecto así.

Crear Móodulo Icestudio

Ahora tendremos que incluir un bloque de código que será el «culpable» de que nuestro pulsador se transforme en interruptor, Básico >> Código y le vamos a indicar que tenga 1 puerto de entrada llamado pulsador y otro de salida que se llame interruptor.

Crear Bloque Icestudio

Hacemos las uniones con nuestro código y nos ponemos a escribirlo.

Crear Bloque Icestudio

Turorial de pulsador a interruptor

Lo primero que haremos será crear dos variables que tengan capacidad para almacenar datos, utilizaremos reg. Por si quieres saber más sobre tipos de datos en Verilog.

reg btn = 0;
reg pulsado = 0;

Ahora crearemos un evento always en el que estaremos comprobando siempre si cambia el estado de nuestro pulsador de 0 a 1 (flanco de subida) o de 1 a 0 (flanco de bajada), para esto tendremos que añadir posedge.

always @(posedge pulsador) begin
    btn = btn + 1;
    if (btn % 2 == 0)
        pulsado = 0;
    if (btn % 2 != 0)
        pulsado = 1;
end

El evento always se puede usar sin posedge para controlar si cambia de valor alguna de nuestras variables.

always @(variable or variable2 or variable3...) begin
    ...
    ...
    ...
end

Una vez con esto en el código hace falta explicar poco más.

Cada vez que hay modificación del estado del pulsador (0 ó 1) sumamos 1 a la variable btn = btn +1 y verificamos mediante un if btn % 2 == 0 si btn es un número par o impar. Si es número par (btn % 2 == 0) apago led poniendo la variable pulsado = 0, y si es impar (btn % 2 != 0) enciendo led poniendo la variable pulsado = 1.

Por último le asignamos a la salida interruptor el valor que tenga pulsado. Teniendo en cuenta que este tipo de asignación continua sólo se puede llevar a cabo fuera de los bloques always.

assign interruptor = pulsado;

Pues con esto tendríamos ya terminado nuestro bloque, lo guardamos con el nombre de pulsador.ice >> Archivo >> Guardar como >> pulsador.ice

Guardando móodulo Icestudio

Si queremos ponerlo bonito con una imagen, incluirlo en una colección, etc, os paso el enlace de este tutorial de @_angel_m3 que ha sido con el que he aprendido yo.

Tutorial FPGA

Terminado nuestro bloque vamos a incluirlo en un proyecto.

  • Abrimos Icestudio y creamos proyecto nuevo >> Archivo >> Nuevo
  • Añadimos como bloque nuestro pulsador.ice >> Archivo >> Añadir como bloque >> Seleccionamos pulsador.ice
  • Lo soltamos en nuestro proyecto

Deberíamos tener nuestro proyecto nuevo de la siguiente forma (como podéis ver a este bloque ya le puse imagen y tiene de nombre para la entrada y salida sw1).

Inlcuir bloque Icestudio

Ahora añadimos una entrada y una salida indicando que sí queremos que haga referencia a un pin físico de nuestra FPGA.

entrada FPGA Icestudio

Hacemos las uniones y asignamos a la entrada >> sw1 de nuestra IceZUM Alhambra y a la salida >> led3.

usando bloque Icestudio

Ya nos quedaría únicamente sintentizar en nuestra FPGA y ver la magia.

Código Tutorial FPGA libres

Aquí puedes ver un vídeo del funcionamiento del bloque para Icestudio que transforma un pulsador en un interruptor.

Agradezco a toda la gente que hay detrás de estos proyectos (FPGAwars, IceZUM Alhambra, Icestudio, Alhambra Bits, Academia Jedi de Hardware), que no sé muy bien quienes forman parte de uno y quienes de otro, pero de lo que estoy muy seguro es que sin ellos no podría haber realizado este tutorial.

Untitled.es en redes sociales