25 de abril de 2020

Proyecto BOTPA (2): Obtención de los ficheros en GCODE a partir de los GERBER

Introducción

Con kicad obtenemos, como paso final, los ficheros GERBER. De los cuales, me interesan 3: La capa trasera o B_Cu, el fichero de taladros y la capa Edge-Cuts.

La primera es el dibujo de pistas en sí. La segunda los taladros de dicha capa, y, la tercera, cortaría de forma perfecta la baquelita.

La capa F-Cu, o de pistas delanteras, no se contempla en este proyecto. Se dibuja, pero son tan pocas las pistas que se harán puentes en ella. Además, voy a usar baquelita de una sola cara de cobre.

Nota del 4 -Enero-2021: ver revisión al final del artículo.

Conversión de los ficheros Gerber a B-Cu.


Usaré la aplicación online gratuita https://copper.carbide3d.com/rapidpcb/ . Intentaré seguir las escuetas instrucciones de su howto (https://carbide3d.com/apps/rapidpcb/community.html).

Primer paso: opciones iniciales.

  1.  Pongo las medidas de la placa (NodeMCU Botón del pánico CENTRAL): 53.34 x 48.26 y usaré baquelita de 1.58mm
  2. Marcaré "mill flat surface" con una broca de 3mm. Margen de 5 mm, profundidad de 1.5 mm (supongo que es la profundidad a la que ya quitará la capa de cobre) y 10mm/s de velocidad. Todos los datos por defecto.  Nota del 4-Enero de 2021: este paso no lo he necesitado.

Segundo paso: cargar placa de cobre B-Cu.gbr
  1.  Al cargarla, la placa aparece muy desplazada.
  2. Con los valores de offset en X e Y: -115.7 y 81, la centro en la placa.
  3. En el resto de parámetros escojo Count = 3. Si ampliáis la imagen, veréis que es el número de pasadas que da la broca. En el resto de parámetros: V-bit, 20º y 0.1 mm que se corresponde con unas brocas tipo lanza que he comprado (https://www.amazon.es/gp/product/B00SKFVP06/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1)


Tercer paso: ficheros de taladrado
  1. El offset el mismo, pero sale algo desplazado. rectificar la x a -115.7
  2. Elijo broca de 1 mm (¿tendré que cambiar de broca?). Profundidad pongo 4 mm. velocidad de penetración 1mm/s


Cuarto paso: generar línea de corte.
  1. Ajusto la zona de corte con los parámetros que vienen de offset y tamaño de la placa.
  2. Profundidad de 4mm con broca de 2 mm

Quinto paso: no voy a generar hatches, que son como líneas en las pistas. No lo veo necesario.

Sexto paso: extensión *.nc, z seguridad (supongo que es la retroacción) 5 mm y movimiento de traslación 50 mm/s.

= = = = = =

Y por fin guardo los tres ficheros *.nc obtenidos. Los abriré con el programa UGS (Universal Gcode Sender). Este programa simplemente me sirve para visualizar el proceso de grabado y ver que todo está correcto.No lo usaré para mandar el fichero a la máquina; usaré en vez de ello la tarjeta en la unidad controladora.
 
= = = = =

Nota del 4-May-2020: tras intentos infructuosos con V-bit 20º 0.1mm de punta, creo que necesito brocas mejores o baquelitas de cobre menos duras. Parece marcar correctamente a 0.3mm, pero los trazos son muy poco definidos y no rectos. Creo que necesito brocas de 30º o 60º, quizás del tipo flute string o algo parecido.

Vídeos: https://youtu.be/zRdJrE80Vjk, https://youtu.be/nrW6Hq6V3VY

= = = = = = =

Ampliación del 4-Enero-2021: haciendo una placa distinta (para un ATtiny85), y con otras brocas, he conseguido por fin una placa aceptable, aunque un poco tosca. Quizás necesite otro tipo de brocas mejores. Usaré baquelita con una sola cara de cobre (capa trasera).

Respecto al diseño de la placa en KiCad, conviene tener unas pistas no demasiado finas. Por lo menos con el material que contaba. En el ejemplo uso pistas de 1,4mm y pads de 1mm de diámetro. Esto último por conveniencia, pues no contaba con brocas de 0.8mm de diámetro. Notar también que no he diseñado ninguna zona. El programa así trabaja menos, dejando en cobre, las zonas negras.


Una vez definido el diseño, y exportados los ficheros Gerber, uso la aplicación https://copper.carbide3d.com/rapidpcb/ para los tres ficheros que se necesitan (al menos los dos primeros) para elaborar la placa. 

= = = = = = =

Primero, defino la zona : ancho, alto y grosor de la placa. También es importante establecer el origen del grabado / taladrado.

Segundo, introduzco el primer archivo Gerber, el de las pistas de cobre, el más importante. En este paso, lo primero que hay que hacer es establecer un offset que nos centre las pistas en la placa. Seguramente vienen del kiCAD con una desviación al centrarlas en la hoja de diseño. 

Una vez centrada, elijo los parámetros que dibujarán el contorno de las pistas, isolándolas del resto del cobre. usaré una broca de 3.175mm, de 60º y 0.1mm de punta, que compré en aliexpress (https://es.aliexpress.com/item/32968638466.html?spm=a2g0s.9042311.0.0.453f63c0P8Ho4H) ,que no puede elegirse de la lista. 

Después el resto de parámetros: 2 pasadas (counts), a profundidad 0.2mm (podría cambiar con el tipo de placa), a una distancia de 0.03mm cada pasada, step 0.1mm y velocidad 5 mm/s


Es importante hacer zoom y comprobar cómo quedaría el grabado de la placa en este paso. Observad las pasadas como líneas de color negro que rodean las pistas.

= = = = = = 

Tercero, el fichero de taladros. Avanzo a siguiente, normalmente tiene el mismo offset pero, si no, comprobar que los agujeros (círculos negros) se centran en los pads.

En este paso elijo broca de 1mm , a 2mm de profundidad (la placa tiene 1.58mm de grosor) y a una velocidad de penetración (plunge) baja 0.2 mm/s . En este caso las brocas que tengo son malas, y se me han partido, así que he optado por usar puntas de 20º tipo lanza (diámetro punta 0.1mm) que me han marcado los agujeros. Después con un taladro y brocas de 1mm normales los he repasado.

= = = = = = = 

Cuarto, el fichero de corte. Aunque en las características a elegir se escoge una broca tipo "End Mill" de 3.175 mm, a mí me ha servido la misma V-60º que usé en el grabado. 


= = = = =

En siguiente, me olvido del rayado "hatches". Los parámetros finales son: 

 

 = = = = = 

Una vez pulsado el botón de guardar el fichero .zip, pásalo a la tarjeta de tu CNC... Y ya podemos trabajar con la máquina. En este paso conviene fijarnos en cómo quedará la placa:

Consejos importantes: 

  1. Fijar muy bien la placa a una madera, usando cinta adhesiva de doble cara, cuidando que quede uniforme el pegado.
  2. Sujetar la madera a la mesa de la máquina, pero no presionar la placa con las mordazas, ya que puede combar la placa y estropear el resultado.
  3. Repasar todos los tornillos de la máquina. Comprobad que no hay ninguno suelto. Yo tenía uno sin darme cuenta y no había manera que saliera bien... Hasta que lo apreté.
  4. Colocar las brocas siempre con su funda. Y apretarlas bien. No quitar las fundas hasta que se empiece con el proceso de grabado / taladrado.
  5. Lo primero a hacer es el grabado de las pistas con la broca V-60º. Elige la posición donde empezará la máquina (tu origen), y desplaza la broca en alto hasta ese punto en X y en Y.
  6. No es mala idea, por lo menos la primera vez, que con la broca bastante alta eches a correr el programa. Comprueba que la broca recorre la zona que quieres grabar (que no haya equivocaciones: se salga de zona, tropiece con algo, etc.). 
  7. Una vez lo tengas todo claro, vuelve al punto de origen si no estás en él. Ahora con la punta de la broca debes tocar el cobre sin presionar, bajando la broca poco a poco. A ojo, es muy difícil. Si coges un polímetro en posición de medida de continuidad y un par de cables con cocodrilos, sujeta uno a la broca y otro a la placa. Cuando toquen el medidor te dará la señal, y ese es el punto correcto.
  8. Quita la sonda del polímetro y lanza el programa. Deberá marcar las pistas correctamente. Si todo va bien, la broca se parará en el mismo punto donde ha comenzado. Dos consejos: primero, ponte unas gafas protectoras; siempre una broca puede partirse o proyectar una viruta y segundo, yo he usado una brocha para ir limpiando la zona y ver el resultado, sin estorbar el grabado, claro.
  9. Para el siguiente paso, el taladrado de los agujeros, he usado la broca V-20º aunque lo suyo es una de 1mm (¡pero buena, que no se parta!). Al usar esta broca, después tendré que repasar los agujeros con una broca de 1mm normal y corriente con un taladro. Importante: no pierdas la X e Y del origen. Levanta la broca en Z, haz el cambio de brocas, vuelve a calibrar la altura usando el polímetro como antes, y lanza el programa de taladrado.
  10. Si todo va bien, la broca acabará en el lugar donde ha comenzado de nuevo. Ahora puedes cambiar la broca para hacer el corte del perímetro. Yo vuelvo a usar la broca V-60º que ahora penetrará 2mm cortando la placa. Repite el proceso de cambio de broca y de calibrado.
  11. Cuando acabes, despega la placa de la madera, retirando las cintas de doble cara. Intenta no romper la baquelita, a mí me costó despegarla. Repasa los bordes de la placa con una lima. 
  12. Comprueba la continuidad de las pistas y retira las posibles virutas. 
  13. ¡¡ Y a soldar... !!

Proyecto BOTPA (1): Montaje de la CNC y primeras pruebas.

Bueno, ha tenido que pasar casi cuatro meses para animarme a montar la CNC (Vogvigo 3018 Pro CNC).

He de decir que el montaje no ha sido difícil, aunque el eje roscado X me ha dado un poco la lata. Entre las instrucciones y algunos vídeos como los de "GADGETBRO MINI ROUTER CNC 3018 PRO Armado y Prueba" se consigue sin muchos problemas.

Antes de lanzarme a la aventura de mecanizar las placas PCB, he decidido lanzarme a algo más sencillo: grabar un dibujo en una madera. Tras algunos fallos, lo he conseguido.

Me ha servido de guía este otro vídeo: "CNC Portátil 3018 - Puesta en marcha" , aunque no lo he seguido al pie de la letra. De hecho, la lista de los pasos que he dado es:
  1. Armado de la máquina.
  2. Descarga del programa Universal Gcode Sender. Me he descargado la versión 2.0 Platform Stable, que necesita Java 8+. 
  3. Descomprimirlo y ejecutarlo (sin instalar, solo se necesita tener java).
  4. Con el programa inkscape hacer un dibujo vectorial y guardarlo como SVG. Como elegí algo de texto, tuve que convertirlo a trazado, así como los dibujos de mapa de bits incrustados: en el menú Trayecto, escoger las opciones objeto a trayecto , borde a trayecto o vectorizar mapa de bits.
  5. Una vez tengo el objeto dibujado en SVG necesito su código en GCODE. Para ello hay una aplicación fácil online que es JSCUT. En esta aplicación:
    1. Marcar primero medidas en milímetros: "make all mm".
    2. En Thickness indicar el grosor de la madera a usar.
    3. En Clearance lo que se levantará la boca cuando se traslade.
    4. En Tool, a la izquierda. Indicar el diámetro de la broca, su ángulo, y la profundidad que marca en cada pasada. Yo tenía brocas de dos tipos que me habían venido con la máquina: planas (180º) y tipo lanza de 20º. La segunda es una auténtica pasada.
    5. Abrir el dibujo en OPEN SVG.
    6. Ir marcando las zonas de dibujo a las que quieres aplicar una operación. De un color gris se irán coloreando en azul.
    7. A la izquierda arriba pulsar en: CREATE OPERATION, y elegir entre grabado (engrave), vaciado (pocket), líneas internas o externas, o Vpocket (no lo he probado). A cada operación hay que indicar hasta qué profundidad llega. 
    8. Una vez la operación está aplicada, se puede continuar eligiendo otra zona del dibujo y aplicando más operaciones.
    9. En la pestaña "Simulate GCODE" podemos obtener una simulación del mecanizado.
    10. Por fin, exportar usando el menú de "Save GCODE".
  6. Una vez obtenido el fichero GCODE, abrimos el Universal Gcode Sender, y abrimos el fichero que acabamos de obtener con JSCUT.
  7. La aplicación viene bien explicada en el vídeo de puesta en marcha. Si conectamos el USB directamente a la placa controladora de la máquina, podemos desde el programa controlar la CNC. Teóricamente mandarle el fichero GCODE para que lo ejecute; sin embargo he tenido problemas con eso y no lo he realizado de esta manera (se paraba en el proceso y no continuaba dado un punto, y no sé por qué). Yo lo he utilizado de este modo para hacer pruebas con los motores "Jog_controller" y alguna macro como se describe en en vídeo.
  8. Se puede usar directamente la unidad offline controller que trae la máquina, de forma análoga a la que traen las impresoras 3D. Simplemente carga el fichero GCODE en la tarjeta y con la unidad lo ejecutas. Sin embargo, el fichero GCODE que descargo de JSCUT no puedo usarlo directamente; en el fichero no se activa el giro de la broca
  9. Así que he abierto el fichero GCODE con el UGS y lo he editado. En las primeras líneas de código, cuando baja por primera vez la broca, introduzco la orden M03 S1000, que activa el giro de la broca a 1000rpm y casi al final la desactivo con la orden M05. Me fijo también donde tiene el cero de coordenadas; en mi caso en la esquina superior izquierda. También es útil observar cómo va a hacer el trazado la máquina.
  10. Guardo el fichero de nuevo, y éste en la tarjeta, y la introduzco en la unidad offline controller. 
  11. Preparo la madera y la sujeto muy bien con los gatos que trae la máquina. Cuidado de no obstaculizar con los gatos el movimiento del cabezal y de la broca.
  12. Introduzco la broca en el cabezal. He visto que lo más fácil es sacarlo entero, colocar la broca (si es tipo lanza con la funda protectora puesta) y después enroscar en el taladro. Apretar bien con las dos llaves a contratuerca.
  13. Quitar la funda de la broca, si la tenía.
  14. Colocarla en el punto de inicio usando los controles X e Y de la unidad. Es buena idea elevarla unos centímetros y poner el programa en marcha, observando al menos los primeros movimientos de la máquina. Como está en el aire, no debe marcar nada. 
  15. Volverla al punto de inicio y colocar la broca, ahora sí, sobre la pieza intentando que la punta toque el material sin penetrarlo. Empezar el programa.
  16. Y si todo va bien, hasta que termine. 

22 de abril de 2020

NodeMCU 12_Desarrollo de placas para el Botón del pánico: versión 01. FASE 1

Inicio

Proyecto en github: https://github.com/agrgal/Bot-n_del_p-nico_NODEMCU 

Una vez llevado a cabo los programas y testeados los montajes en protoboard, habría que sacar una versión más robusta de los prototipos. Esto pasaría por soldar los componentes a una placa, que previamente, hay que diseñar.

El diseño del circuito impreso se lleva a cabo con el programa kicad. Hacía tiempo que no lo manejaba, así que la primera labor ha consistido en actualizarlo a la versión 5.1.5

= = = = = = = = =

Esquemático

El proceso empieza por diseñar el esquemático. Para ello, descargué la librería de símbolos (kicad-ESP8266 - a library for KiCAD) que contiene la biblioteca de símbolos ESP8266.lib para el esquemático y los footprints en la carpeta pretty correspondiente.


Empezamos el esquemático de la CENTRAL y de la ESTACIÓN. Es el primer paso. Hay que comprobar que no tienen errores ejecutando ERC (control de reglas eléctricas).

= = = = = = = = =

Asignación de footprints


Una vez realizados sin errores, continuamos asignando footprints a cada componente. Un footprint es el lugar de la placa donde irá soldado. Por ejemplo, una resistencia consistirá en dos contactos separados cierta distancia. Ese dibujo de "huella" en la placa está sistematizado y hay bibliotecas de las mismas; pero claro, tenemos que relacionar primero nuestro esquema con los footprints deseados:

Para el circuito CENTRAL:



Para el circuito EMISOR:



En algunos casos, como el conector de 4 pines para la pantalla OLED o el conector de 2 para el Buzzer se escogen componentes genéricos de conexión porque esos elementos no van a ir soldados en placa. Tampoco probablemente en el diseño definitivo el LED y el pulsador, pero esos componentes tienen claramente un footprint asignado.

Antes  de este proceso, la huella del componente NodeMCU V1.0 ESP-12E no está cargada; de la biblioteca correspondiente al mismo en el directorio pretty descargado se incorpora en el editor de huellas (footprint editor).

=======

Fichero netlists


Cuando todos estos procesos estén finalizados se genera un fichero netlist (extensión net) que contiene la información de las conexiones que se han creado. Este fichero formará parte de tu proyecto y conectará con un programa diferente de kicad llamado PCB Layout editor

=======

PCB Layout editor


En esta parte del programa se empieza el verdadero diseño del circuito impreso. Lo primero que tenemos que hacer es especificar las características de la placa (ARCHIVO>>BOARD SETUP).

Yo he elegido dos capas de cobre, e indicando que las pistas de cobre estarían en la parte de atrás (capa B.Cu) y la capa de delante "de cobre" será para hacer puentes soldando algunos cables si es necesario (capa F.Cu) ya que pienso aprovechar placas de baquelita de cobre de una sola capa. Añado en este paso también , aparte del diseño de vías y pistas por defecto, algunas más en Tracks & Vias.


Básicamente las pistas y vías por defecto son pequeños. Prefiero tener más zona de contacto, pistas más amplias siempre que pueda permitírmelo según los componentes. Usaré pistas más anchas y vías de 1,5mm.

= = = = = = = = =

Colocación de componentes


Realizado este paso, se carga el netlist "Load Netlist" accediendo al fichero que creamos anteriormente. Elige la zona del área de trabajo donde colocarás los componentes y haz click.

Haz click en cada componente. Muévelos pulsando "M" y rótalos con "R". Haz una distribución de los mismos.

Las conexiones entre componentes aparecerán como líneas blancas. Es el denominado "rastnest" o red de rastros. El objetivo será conectar todas las conexiones haciendo aparecer pistas y eliminando todos los rastros.

= = = = = = = = =

Ruteo


Para dibujar las pistas uso un procedimiento manual. Al parecer, kicad ha prescindido de sus procedimientos de autorouting. Aunque todavía puedes hacerlo con programas gratuitos. Por ejemplo, freeRouting.jar. A mí no me ha hecho falta.



Posteriormente debes trazar el contorno con la herramienta polígono de la placa, eligiendo la capa (paso 1) Edge.Cuts Ese dibujo delimitará la zona de impresión de pistas.

 = = = = = = = = =

 Zonas 


Es una buena práctica hacer zonas dentro de la placa. Esto evita tener que retirar demasiado material y, si lo hacemos por ejemplo de tensiones fijas a cero voltios (tierra) podremos minimizar las interferencias.

Bajo el símbolo de vías, encontramos el de zonas. Antes de dibujar el polígono de la zona (ver imagen) aparecerá un menú de selección en el que lo más importante es elegir la capa donde se dibujará la zona, la pista que servirá de relleno, y la distancia de la zona al resto de la pistas. Importante: en el menú de la izquierda, tener escogida la opción "Mostrar áreas rellenas en zonas"





Terminado el proceso, y dibujada la zona, podemos escribir textos en algún lugar donde no afecte a la conectividad.

= = = = = = = = = 

Hasta ahora, y con la placa diseñada, es conveniente ejecutar el control de diseño (DRC - símbolo del insecto) para comprobar que no existen errores de conexionado.

= = = = = = = = =

Ficheros Gerber

Aunque todavía no me he puesto a ello (Espero que con este proyecto sí) los ficheros Gerber son necesarios para las CNC, con los que estas máquinas consiguen el taladrado y recorte de las pistas en la placa de baquelita.

En Kicad se consigue con la opción PLOT (trazar), al lado de imprimir. Los valores por defecto se consiguen como en la imagen. Sobre todo, escoger las capas de cobre (B.Cu y F.Cu y la Edges.Cut) aunque es mejor dejar las opciones por defecto.


Pulsar en "Generar archivo de taladrado". Marcar la opción "PTH y NPTH in single file".


Al volver a la ventana, por fin, pulsar el botón de Trazar para generar los distintos ficheros Gerber  al proyecto. Al cerrar PCB LAyout Editor y volver a la ventana de proyecto, podremos comprobar como se han generado los ficheros de taladrado (*.drl) y un fichero Gerber por cada capa (*.gbr). Las capas importantes para una placa de una sola cara serán la B.Cu y Edges.Cut. La F.Cu hay que tenerla en cuenta para hacer puentes. las otras contienen las diferentes serigrafías. 

Todos estos ficheros pueden visualizarse con la herramienta "Gerber View".

= = = = = = = = =

Otros

Se pueden obtener otros ficheros, como los BOM (bills of materials - listados de materiales). También hay otras funcionalidades que me he saltado, básicamente porque las desconozco o se salen del propósito de este pequeño manual.

También se puede usar en PCB Layout Editor un visualizador en 3D de la placa. Hay que buscarse un fichero STEP o STL de la placa NodeMCU V1.0 y exportarlo al formato VRLM 2.0 (*.wrl). Seguramente tendrás que hacer ajustes de escalado y posición.

 = = = = = = = = =

Enlaces: 

  1.  https://github.com/jdunmire/kicad-ESP8266
  2. Fichero en 3D del NodeMCU V1.0: https://grabcad.com/library/nodemcu-2
  3. Ficheros en 3d para kicad: https://github.com/Obijuan/videoblog/wiki/Cap%C3%ADtulo-21:-Modelos-3D-en-Freecad-para-Kicad
  4. Freerouting with kicad: https://freerouting.org/freerouting/using-with-kicad
  5. Manual y documentación de kicad: https://docs.kicad-pcb.org/







19 de abril de 2020

NodeMCU: 11_ESPNOW: Botón del pánico: Central_y_estación. Versión 01

Introducción



Primera versión del proyecto (V01) terminada. Se hacen ciertas mejoras a ambas partes, CENTRAL y ESTACIÓN, sobre todo a la primera. Es el primer desarrollo funcional. En próximas versiones se podría ampliar a varias estaciones y una estación central.

Estación




En el caso de la estación, el programa básico no ha cambiado. Excepto que la estructura de datos en la recepción se ha cambiado y puesto como variable global y la rutina que apaga la alarma controlada desde la CENTRAL. 

Central




En este caso, el programa sufre varias ampliaciones
  1. Se dibuja un logo nuevo para el programa.
  2. Se modifica la salida del LED (pasa a D3) y en D5 ponemos un buzzer.
  3. Creamos tres variables: frecmin, frecmax y duracion, para poder modificar el sonido de la sirena. Dejo los valores en 2000, 4000 y 250, pero se puede jugar con ellos. 700 y 800 dan un sonido más de "cacharros de feria".
  4. La estructura de datos E2 pasa a ser variable global.
  5. Hay una rutina por la que cada seis segundos muestra el logo (función presentarLogo). Así sabremos que no se ha bloqueado.
  6. En otra rutina (presentarPantalla) presentamos en la pantalla la información de la estación. Se ha mejorado incluyendo el símbolo ASCII de la "ó".
  7. No he borrado la función de testeo. Hay memoria para ello y me parece útil si quiero buscar un símbolo (testdrawchar)
  8. En la línea 243, si tenemos estado de alarma, suena el buzzer.
  9. En la línea 252, si el estado que recibo es de apagado, fuerzo a que la alarma se desactive.
<