Skip to main content area
Home
  • English
  • Español
  • Get it
  • Build it
  • Use it
  • Blog
  • DiyouPCB
    • Get It
    • Build
    • Use
    • Improve
    • Gallery
    • Downloads
  • Contact
  • About us

Mejora en el enfoque del láser

Submitted by DIYouware on Sun, 03/27/2016 - 21:06

Stephan R. de Alemania nos ha enviado una mejora en el código del firmware de enfoque del láser

Está relacionada con la forma en que usamos el ADC cada vez que el vector de interrupción se invoca. Más abajo podéis ver el código afectado que incluye la modificación (líneas comentadas en rojo).

Básicamente estábamos arrancando la conversión mediante la sentencia ADCSRA != 1 << ADSC y realmente no es necesario porque en la función de inicialización configuramos el ADC en modo automático.

Aunque no hemos encontrado ningún problema al enfocar desde que escribimos el código, hemos probado la modificación y hemos visto que el driver sigue enfocando de la misma manera e incluso mejor, al menos en nuestro prototipo.

Stephan nos dijo que lo descubrió porque su prototipo tenía problemas para enfocar y cuando quitó las líneas mencionadas el driver comenzó a enfocar bien. Este comportamiento tan diferente entre prototipos probablemente es producido por ruido eléctrico en la señal de FE y con esta modificación el firmware es más robusto y detecta mejor la curva-S necesaria para enfocar. Stephan también nos confirmó que el láser, una vez enfocado, imprime correctamente a 600dpi, lo que significa que realmente está enfocado.

Vamos a seguir probando esta mejora pero si tienes dificultades para enfocar, pruebala comentando las líneas (en rojo). Luego compila el firmware y cargalo de nuevo en el Arduino. Encontrarás el código en el archivo focus.cpp de TwinTeethFirmware.

!Muchas gracias Stephan!

/**
 ** Interrupt vector
 **/
ISR(ADC_vect) {//when new ADC value ready
  static int FEVal;
  static int FEtimeout;
  //ADCSRB = 0;
  //ADMUX = ((1 << REFS0) | ((FE_SIGNAL_PIN-PIN_A0) & 0x07));


  // State machine
  switch (fe_state){
  case FE_WAIT_ST:
    FEtimeout=0;
    break;
  case FE_AMPLITUD_ST:
    //ADCSRA |= 1<<ADSC; // Start conversion
    FEVal = ADC;
    if ( FEVal > fe_max_val)
      fe_max_val = FEVal;
    if (FEVal < fe_min_val)
      fe_min_val = FEVal;
    break;
  case FE_FOCUS_ST:
    //ADCSRA |= 1<<ADSC; // Start conversion
    FEVal = ADC;
    if (abs(REF_FE_VALUE - FEVal) > fe_amplitud/FE_NOISE_DIVIDER){
      FEtimeout=0;
      fe_state = FE_SCURVE_ST;
    }
    else if (FEtimeout++ > FOCUS_TIMEOUT){
      fe_state = FE_ERROR_ST;
    }
    break;
  case FE_SCURVE_ST:
    //ADCSRA |= 1<<ADSC; // Start conversion
    FEVal = ADC;
    if (abs(REF_FE_VALUE - FEVal) <= fe_amplitud/AMPLITUD_DIVIDER){
      fe_focus_pos = fe_servo_pos;
      fe_state = FE_FOCUSED_ST;
    }
    else if (FEtimeout++ > FOCUS_TIMEOUT){
      fe_state = FE_ERROR_ST;
    }
    break;
  case FE_FOCUSED_ST:
    break;
  case FE_ERROR_ST:
    break;
  }
}

  • Read more about Mejora en el enfoque del láser
  • Log in or register to post comments

Laser Focus improvement

Submitted by DIYouware on Sun, 03/27/2016 - 20:56

Stephan R. from Germany sent us an improvement on the firmware focus code.

It's related to the way we reset the ADC every time the interrupt vector is invoked. Below you can see the code affected including the modification (commented lines in red).

Basically, we were re-starting the conversion using the sentence ADCSRA |= 1<<ADSC and really it is not needed because we configured the ADC to auto-trigger on the init function.

Although we have been focusing without any problem since we wrote that code we tested the modification and we saw that the driver can focus in the same way and probably better.

Stephan said he discovered it because his prototype had problems to focus and when he removed the lines mentioned the driver started to focus well. Probably this different behaviour between prototypes is produced by electric noise on the FE signal and using this modification the firmware is more robust and detects easily the s-curve needed for focusing. Stephan also confirmed us that once focused the laser prints correctly at 600dpi so it means it is really focused.

We will continue to test this improvement but if you experimented difficulties while focusing try to comment those lines (in red). Then compile it and upload the code to the Arduino. You will find the code at focus.cpp file on TwinTeethFirmware.

Thanks very much Stephan!!

/**
 ** Interrupt vector
 **/
ISR(ADC_vect) {//when new ADC value ready
  static int FEVal;
  static int FEtimeout;
  //ADCSRB = 0;
  //ADMUX = ((1 << REFS0) | ((FE_SIGNAL_PIN-PIN_A0) & 0x07));


  // State machine
  switch (fe_state){
  case FE_WAIT_ST:
    FEtimeout=0;
    break;
  case FE_AMPLITUD_ST:
    //ADCSRA |= 1<<ADSC; // Start conversion
    FEVal = ADC;
    if ( FEVal > fe_max_val)
      fe_max_val = FEVal;
    if (FEVal < fe_min_val)
      fe_min_val = FEVal;
    break;
  case FE_FOCUS_ST:
    //ADCSRA |= 1<<ADSC; // Start conversion
    FEVal = ADC;
    if (abs(REF_FE_VALUE - FEVal) > fe_amplitud/FE_NOISE_DIVIDER){
      FEtimeout=0;
      fe_state = FE_SCURVE_ST;
    }
    else if (FEtimeout++ > FOCUS_TIMEOUT){
      fe_state = FE_ERROR_ST;
    }
    break;
  case FE_SCURVE_ST:
    //ADCSRA |= 1<<ADSC; // Start conversion
    FEVal = ADC;
    if (abs(REF_FE_VALUE - FEVal) <= fe_amplitud/AMPLITUD_DIVIDER){
      fe_focus_pos = fe_servo_pos;
      fe_state = FE_FOCUSED_ST;
    }
    else if (FEtimeout++ > FOCUS_TIMEOUT){
      fe_state = FE_ERROR_ST;
    }
    break;
  case FE_FOCUSED_ST:
    break;
  case FE_ERROR_ST:
    break;
  }
}

  • Read more about Laser Focus improvement
  • Log in or register to post comments

Nueva versión del software

Submitted by DIYouware on Tue, 12/29/2015 - 15:56

Hemos estado trabajando durante las vacaciones de Navidad para terminar la nueva versión del software. Prácticamente hemos modificado toda la cadena de herramientas para incluir nuevas funcionalidades, adaptar el software a las nuevas versiones de algunas librerías y corregir algunos bugs.

Estos son los cambios:

TwinTeeth Firmware V2.1

  • Nueva funcionalidad para disparar el láser con el eje Z o E.
  • Nuevo comando G81 para taladrar y rellenar vías ciegas.
  • Cambios menores en la impresión láser en modo rastering.

TwinTeehMC 2.3

Estas son las modificaciones en TwinTeethMC:

Refactorización y soporte de la nueva versión de Processing

Hemos refactorizado el código del lado del servidor para reescribir parte de él y también soportar las nuevas versiones de Processing y ControlIP5.

Ahora TwinTeethMC soporta las siguientes versiones:

  • Processing 3.0
  • ControlIP5 2.2.5
  • ghost4j-0.5.1.
  • GhostScript 9.16

Nueva opción de 0,05 mm en el Keypad

Con las flechas a los lados del keypad se puede mover manualmente la plataforma. Al hacer click en ellas, la plataforma se mueve los mm que se muestran en la esquina superior izquierda, en un campo desplegable. Si haces click allí verás que se puede seleccionar diferentes valores:  0.1,1 y 10mm. En esta nueva versión hemos agregado también 0,05mm para obtener más precisión al mover manualmente la plataforma.

Nueva funcionalidad de trazado e impresión 3D con el láser

Hemos añadido nuevas funcionalidades a la pestaña del cabezal láser para permitir diferentes formas de impresión.

La versión anterior sólo soportaba impresión láser en modo rastering. Este método tiene una alta resolución porque imprime bitmaps de 600 dpi, de forma similar a cómo lo hace una impresora de papel, pero a veces puede tardar mucho tiempo imprimiendo a tanta resolución. Por esta razón hemos incluido en esta nueva versión la posibilidad de utilizar el láser para trazar los circuitos como si fuera un plotter. Puedes utilizar esta nueva opción para imprimir las pistas del circuito sobre films o placas negativas, o aislar las pistas en films/placas positivas, de forma similar a cómo se hace con máquinas CNC. La nueva función trabaja con el eje Z, usándolo como disparador del láser. Cuando el eje Z se mueve por debajo de cero el firmware dispara el láser. Cuando se mueve por encima de cero apaga el láser. Activar este modo es fácil: simplemente pulsa el botón "plot", carga un archivo HPGL o g-código válido, enfoca el láser presionando en el botón "Focus" y ejecuta el programa. Ten en cuenta que el láser enfoca solamente una vez en el centro de la PCB y no cuatro veces en las esquinas, como en el modo rastering.

El segundo método de impresión láser que hemos añadido al software se basa en el movimiento del Eje E y es experimental. Lo hemos utilizado para hacer pruebas de impresión 3D en resina UV. Consiste en encender el láser cuando se mueve el eje E. El eje E es el eje del extrusor de plástico en impresoras 3D. El g-code generado por los programas Slicer mueve el Eje E cuando el extrusor debe depositar plástico sobre el objeto. En vez de eso, lo que hacemos en esta versión es disparar el láser para curar la resina. Se puede utilizar cualquier archivo g-code generado por software de impresión en 3D como Cura o Slic3R. Simplemente pulsa el botón "3D" en la la pantalla del cabezal láser, carga un archivo g-code 3D válido, enfoca el láser pulsando en "Focus" y ejecuta el programa.

Nuevos campos offset

Hemos añadido nuevos campos offset en los ejes x, y para evitar el problema de centrado de la PCB cuando se usa la versión light de Eagle Cadsoft.

Básicamente hemos incorporado dos campos nuevos para ajustar en mm el desplazamiento de los ejes x,y con respecto al origen de coordenadas. De esta manera se puede utilizar cualquier origen de coordenadas durante el diseño de la PCB, ya que más adelante se puede compensar añadiendo valores de desplazamiento en estos campos.

El procedimiento para utilizar esta nueva característica es el siguiente:

 

  • Diseña la PCB con Eagle y fija el origen x, y en la esquina inferior izquierda de la placa (es el origen x,y por defecto de Eagle)
  • Localiza el centro de la placa trazando las líneas diagonales (tal y como explicamos en el tutorial) y dibuja allí el círculo que indica el centro.
  • Elimina las marcas diagonales.
  • Configura  la cuadrícula a 1mm.
  • Colca el cursor en el centro del círculo y toma nota de las coordenadas. Las encontrarás en la esquina superior izquierda de la zona de trabajo de Eagle (ver imagen siguiente).

Salva el fichero y genera el código HPGL o g-code usando el procesador CAM.

Ejecuta TwinteethMC. Verás los dos campos nuevos:

Los campos están activos únicamente después de cargar un archivo y sólo funcionan con archivos del tipo HPGL o g-code. No tienen sentido con archivos Postscript (láser rastering).

Selecciona el cabezal apropiado y carga el archivo. Los campos se activarán.

Entonces podrás mover los controles deslizantes y ajustar los valores x, y adecuados. El eje Y tiene que estar en negativo.

Al mover los deslizadores, verás que la imagen también se mueve hacia el centro de la zona de trabajo. Una vez que quede centrada, el archivo está listo para su ejecución.

Si utilizas la versión profesional de Eagle entonces puedes poner el origen x,y en el centro de la PCB, tal y como explicamos en el Tutorial, y no utilizar estos campos (resetealos a 0,0).

TwinTeethULP V2.0:

Esta versión incluye nuevos parámetros para soportar el taladrado y relleno de vías ciegas con tinta conductiva. Explicamos esta funcionalidad en un artículo reciente de este mismo blog.

Descripción de los campos

Filling Rate es la velocidad en mm por minuto del motor de pasos del dispensador.

Retraction length es la longitud en mm que se moverá en sentido inverso el husillo del dispensador después de rellenar la via. Se utiliza para evitar que la tinta conductiva siga fluyendo después de rellenar la vía. Se puede poner a cero y deshabilitar esta característica.

Plunger diameter es el diámetro en mm del embolo de la jeringa. Se utiliza para calcular el volumen de líquido desplazado por el émbolo. Utiliza un calibre para medir el émbolo y pon el diámetro en este campo

PCB thickness es el espesor en mm de la PCB. Se utiliza para calcular el volumen del cilindro de la vía para llenarlo con el líquido.

Hemos incluido un diagrama en el ULP que explica los campos del eje Z (Z Axis fields) por lo que son auto explicativos.

Filling Dwell es el tiempo en ms de detención del robot después de llenar la vía (opcional).

Los campos de las velocidades de trabajo (Feed rates) determinan la velocidad de los ejes X, Y y Z en mm/min.

Descarga e instalación

Primero descarga e instala la nueva versión de Processing -  Processing 3.0.

Probablemente ya tendrás instalada las versiones adecuadas de Ghostscript 9.16 y ghost4j-0.5.1. Puedes reusar estas instalaciones o copiar las librerías a los nuevos directorios. En caso contrario instálatelas, tal y como explicamos en el tutorial.

A continuación descarga e instala la nueva versión de ControlP5. Puedes descargarla aquí.

Finalmente descarga e instala la nueva release del software de TwinTeeth:

Descargar TwinTeethFirmwareV2.1

Descargar TwinTeethMCV2.3

Descargar TwinTeehULPV2.0

 

Esto es todo. Si tenéis alguna duda, pregunta o encontráis algún bug, por favor poneros en contacto con nosotros.

 

!Muchas gracias!

Diyouware Team

  • Read more about Nueva versión del software
  • Log in or register to post comments

New software release

Submitted by DIYouware on Sun, 12/27/2015 - 21:57

We have been working during Christmas vacations to finish the new release of the software. We modified all the software tool chain to include new functionality, adapt the software to new library versions and fix some bugs.

These are the changes:

TwinTeeth Firmware V2.1

  • New functionality to fire the laser using Z or E axis.
  • New G81 command for drilling and filling blind vias.
  • Minor changes on rastering laser printing.

TwinTeehMC 2.3

Refactoring and new Processing version support

We refactored the server side software to re-write some code and also support new versions of Processing and ControlIP5.

Now we support the following versions:

  • Processing 3.0
  • ControlIP5 2.2.5
  • ghost4j-0.5.1. 
  • GhostScript 9.16

New 0.05mm option added to the Jog keypad

When you click on the arrows at the KeyPad sides, you manually move the platform  the millimetres shown on the top-left corner of the pad. If you click there you will see that you can change that number to 0.1,1 and 10mm. In this new version we also add 0.05mm to provides you more precision manually moving the platform.

New Laser plotting and 3D functionality

We added new functionality to the Laser Toolhead tab to allow different ways of printing with the laser.

Last version only supported laser rastering printing. This method has a high resolution because it prints bitmaps at 600dpi, in a similar way a paper printer does, but sometimes it can be time consuming. For this reason we included in this new version the possibility to use the laser for plotting boards. You can use this option to print circuit traces using negative film/boards or to quickly isolate the traces using positive film/boards. It works using the Z axis as the trigger to fire the laser. When the Z axis moves below zero position the firmware fires the laser. When it moves up under zero it turns the laser off. Activate this mode is easy: just push the Plot button, load a valid g-code or HPGL file, focus the laser pushing on the Focus button and run the program. Note that the laser will focus only one time at the centre of the board and not four times on the corners like rastering mode does.

The second method is based on the movement of the E axis and is experimental. We used it to 3D print objects with the laser on UV resin. It consists on fire the laser when the E axis moves. The E axis is the plastic extruder axis of 3D printers. The g-code generated by the slicer programs moves the e-axis when the extruder has to deposit some plastic on the object. Instead of that, we fire the laser to cure the resin. You can use any g-code file generated by 3D printing software like Cura or Slic3R. Just push the 3D button on the Laser ToolHead tab, load a valid 3D g-code file, focus the laser and run the program.

New board offset fields

We added x,y board offset fields to avoid the issue of centring the board while using Eagle’s light edition.

Basically we added two new fields for setting in mm the x and y board offsets from coordinates origin. In this way you can use whatever coordinate origin while designing the board, even not centred on it, because later you can compensate it adding offsets on TwinTeethMC.

The procedure to use this new feature is the following:

  • Design the board and put the x,y origin at the left-bottom corner of the board (Eagle’s default)
  • Find the centre of the board drawing the diagonal lines (as we explained in the tutorial) and draw there a circle.
  • Delete the diagonal marks.
  • Set the grid to 1mm.
  • Put the cursor on the centre of the circle and take note of centre’s coordinates. You will find them at the left-up corner of Eagle’s working area (see next picture).

Save the file and generate the HPGL or g-code files using the CAM processor.

Run TwinteethMC. You will see two new fields:

The fields are active only after you load the file and they only work with HPGL or g-code files. They don’t have sense with Postscript files (laser rastering).

Select the appropriate ToolHead and load the file.

Then move the sliders and set the appropriate x,y offsets. Set the y axis offset on negative.

As you move the sliders you will see that the image also moves to the centre of the working area. Once it is centred, the file is ready to run.

If you are using the Professional version of Eagle then you can centre the board as we explained in the Tutorial and use 0,0 offsets (or use the new method if you want)

TwinTeethULP V2.0:

This version includes new parameters to support drilling/filling blind vias. We explained this functionality in a recent blog entry.

Fields description

Filling Rate is the speed of the dispenser stepper motor in mm per min.

Retraction length is the dispenser leadscrew reverse length movement in mm. It's used to avoid the ink leaking after filling the via. Set a zero to disable this feature.

Plunger diameter is the diameter of the sryngre plunge in mm. Use a calliper to measure the plunger and set the diameter there. It  is used to calculate the liquid volume displaced by the plunger.

PCB thickness in mm. It is used to calculate the volume of the cylinder (well) and fill it with the liquid.

We included a picture which explains the Z Axis fields so they are auto-explicative.

Filling Dwell is the optional delay time in ms after filling the via.

Feed rates fields determines the X,Y and Z axis speed in mm/min.

Downloading and installation

First, please download and install Processing 3.0.

Probably you already installed Ghostscript 9.16 and ghost4j-0.5.1, so you can reuse the installations or copy the libraries. Otherwise install those libraries as we explained in the tutorial.

Then install the new version of ControlIP5 library. Download it from here.

Finally download and install TwinTeeth’s new software versions from here:

Download TwinTeethFirmwareV2.1

Download TwinTeethMCV2.3

Download TwinTeehULPV2.0

 

That's all. If you have any doubt, question or you found a bug, please contact us.

 

Thanks!

Diyouware Team

  • Read more about New software release
  • Log in or register to post comments

Algunos problemas con la version light de Eagle

Submitted by DIYouware on Tue, 12/15/2015 - 11:07

La semana pasada un cliente nos dijo que tenía algunos problemas para centrar las PCBs en el origen de coordenadas usando la versión light de Eagle.

Nos bajamos la última versión y efectivamente: al menos en las últimas versiones no se puede centrar la PCB en el área de trabajo y colocar el centro en el origen de coordenadas (según explicamos en el tutorial).

Creemos que tiene que ver con una limitación que tiene la version light en el tamaño máximo de la PCB que puedes diseñar. Parece que miden el tamaño en coordenadas absolutas, y aunque el tamaño de la PCB sea igual inferior a lo permitido, no deja moverla mostrando el siguiente error:

Esperamos que Cadsoft modifique este comportamiento, pero por si acaso ya hemos modificado nuestro software para evitar este inconveniente.

La modificación estará disponible en las próximas semanas. Mientras tanto, si os corre prisa, poneros en contacto con nosotros y os enviaremos una versión beta.

 

  • Read more about Algunos problemas con la version light de Eagle
  • Log in or register to post comments

Some issues on Eagle light edition

Submitted by DIYouware on Tue, 12/15/2015 - 10:58

A customer told us he had some issues centring the board using Eagle's Cadsoft light edition.

We downloaded the last version and tested it and he is right. At least on last versions of Eagle's light edition, it's impossible to move the board and centre it on the coordinate’s origin (as we indicated on the tutorial).

We think it 's because Eagle's freeware edition has a board size limitation and it measures the board size in absolute coordinates from the 0,0 instead of using relative ones. The effect is that it throws the following error when you try to move the board and centre it on the 0,0, even if your board is under the allowed area limits.

We hope Cadsoft will change this behaviour in next releases but just in case we have also modified our software to implement a workaround and avoid it.

The modification will be available in the next Twinteeth's software release which we are working on. It will be available in the following weeks, but if you are in a hurry, please let us know and we will send you a beta version.

  • Read more about Some issues on Eagle light edition
  • Log in or register to post comments

More on conductive inks and bowden hot-end support

Submitted by DIYouware on Thu, 12/03/2015 - 10:01

We are still working on the idea of making conductive inks.

Right now we are focused on two directions: first, test a new copper nanoparticle ink which we recently brewed, and second, find an expert who help us to make silver conductive inks, just for testing, we don't need too much, a few ml will be enough.

We published some messages in chemical forums but we have not answers yet.

We think we have some interesting ideas about how to improve the traditional PCB manufacturing process using these inks with TwinTeeth and it seems nanoparticles are cool now. There is at least two companies which recently launched professional PCB ink printers which uses silver and copper nanoparticles inks.

This week Nano Dimension, filled a patent application for a new copper nanoparticles ink which they say improves the oxidation resistance of the nanoparticles. Copper nanoparticles rapidly oxidize in contact with air creating cooper oxide which is a bad electricity conductor. Silver nanoparticles also oxidize but silver oxide is a conductor. In fact it is used as a fine grained conductive paste filler. This is an important difference, and also that silver is the best electricity conductor after graphene.

Another interesting property of silver and many silver compounds is photosensibility. It is used for example in analogue photography and radiography. Even silver nanoparticles can be sensitized using a laser which is very interesting for our goals.

For all these reasons we also want to test with silver nanoparticles ink, but we don’t want to make it because we have too many battlefronts opened. Anyway if we see nobody can help us we will do it.

From our side, last week we made a new copper nano-particles ink using  Polyvinylpyrrolidone (PVP). In theory PVP preserves the nanoparticles from oxidation because it covers the particles with a thin polymer film which can be removed later using a flash or a laser. We want to test it with our laser to see if it is powerful enough to activate the particles and make them conductive.

The formula is easy to do it and the chemical components are safe enough to try it in our kitchen. You have here a Robert Murray's video about how to make this kind of ink using the Polyol method.

We don't have chemical lab equipment (and we are not interesting to acquire it) so we had to improvise a lot. For example, Robert uses a sonicator in the original formula, but we don't have such device. Instead we tried using microwaves (one or two seconds into the microwave oven) and it works fine. How we know it works? Because the solution changes of colour from yellow, orange, brown and finally copper colour. When it has this colour it means the nanoparticles are ready.

This is how the ink looks in its PVP bath:

This kind of ink is not conductive itself until it's activated with photonic energy. In theory the PVP which cover each particle is photosensible and react to intense light. Next step is try shooting it with our 405nm laser.

We also made a DIY magnetic stirrer using an old computer fan, a 3D printed part and some neodymium magnets. Here it is:

PCB vias trick in the media

It seems our last article about making blind PCB vias has had some repercussion in the media:

http://hackedgadgets.com/2015/11/22/pcb-vias-made-using-conductive-ink/

http://www.electronics-lab.com/making-pcb-vias-using-conductive-ink/

http://hackaday.com/2015/11/23/easier-pcb-vias-using-conductive-drill-bit/

http://dangerousprototypes.com/2015/11/23/making-pcb-vias-with-conductive-ink/

http://makerfeed.net/article/making-pcb-vias-with-conductive-ink

http://oomlout.co.uk/blogs/news/77751169-diyouwares-twinteeth-makes-homebrew-circuit-board-vias-with-ease

Thanks guys for published it and thanks also all the readers who sent us questions about it.

Bowden style hot-end support

We also had time to design a new toolhead for a Bowden all-metal E3D type hot-end.

Some people asked us if we could support this kind of hot-end because actually it's possible to buy cheap Chinese versions at eBay for less than $15. So we designed a new plastic holder for use it on TwinTeeth.

The actual 3D printer Toolhead kit uses a direct drive extruder and a J-Head type hot-end which is also very popular. We will continue support it but now you can also use a bowden type if you want. We will include the .stl files it in the next release of the blue-prints and parts.

New version of TwinTeethMC

Finally, we are refactoring  the TwinTeethMC code to adapt it to new versions of Control IP5 and Processing. We will also release them in the following weeks together with the ULPs and firmware modifications we did to make blind vias with conductive ink.

That's all for the moment. Thanks!

  • Read more about More on conductive inks and bowden hot-end support
  • Log in or register to post comments

More on conductive inks and bowden hot-end support

Submitted by DIYouware on Wed, 12/02/2015 - 21:47

We are still working on the idea of making conductive inks.

Right now we are focused on two directions: first, test a new copper nanoparticle ink which we recently brewed, and second, find an expert who help us to make silver conductive inks, just for testing, we don't need too much, a few ml will be enough.

We published some messages in chemical forums but we have not answers yet.

We think we have some interesting ideas about how to improve the traditional PCB manufacturing process using these inks with TwinTeeth and it seems nanoparticles are cool now. There is at least two companies which recently launched professional PCB ink printers which uses silver and copper nanoparticles inks.

This week Nano Dimension, filled a patent application for a new copper nanoparticles ink which they say improves the oxidation resistance of the nanoparticles. Copper nanoparticles rapidly oxidize in contact with air creating cooper oxide which is a bad electricity conductor. Silver nanoparticles also oxidize but silver oxide is a conductor. In fact it is used as a fine grained conductive paste filler. This is an important difference, and also that silver is the best electricity conductor after graphene.

Another interesting property of silver and many silver compounds is photosensibility. It is used for example in analogue photography and radiography. Even silver nanoparticles can be sensitized using a laser which is very interesting for our goals.

For all these reasons we also want to test with silver nanoparticles ink, but we don’t want to make it because we have too many battlefronts opened. Anyway if we see nobody can help us we will do it.

From our side, last week we made a new copper nano-particles ink using  Polyvinylpyrrolidone (PVP). In theory PVP preserves the nanoparticles from oxidation because it covers the particles with a thin polymer film which can be removed later using a flash or a laser. We want to test it with our laser to see if it is powerful enough to activate the particles and make them conductive.

The formula is easy to do it and the chemical components are safe enough to try it in our kitchen. You have here a Robert Murray's video about how to make this kind of ink using the Polyol method.

We don't have chemical lab equipment (and we are not interesting to acquire it) so we had to improvise a lot. For example, Robert uses a sonicator in the original formula, but we don't have such device. Instead we tried using microwaves (one or two seconds into the microwave oven) and it works fine. How we know it works? Because the solution changes of colour from yellow, orange, brown and finally copper colour. When it has this colour it means the nanoparticles are ready.

This is how the ink looks in its PVP bath:

This kind of ink is not conductive itself until it's activated with photonic energy. In theory the PVP which cover each particle is photosensible and react to intense light. Next step is try shooting it with our 405nm laser.

We also made a DIY magnetic stirrer using an old computer fan, a 3D printed part and some neodymium magnets. Here it is:

PCB vias trick in the media

It seems our last article about making blind PCB vias has had some repercussion in the media:

http://hackedgadgets.com/2015/11/22/pcb-vias-made-using-conductive-ink/

http://www.electronics-lab.com/making-pcb-vias-using-conductive-ink/

http://hackaday.com/2015/11/23/easier-pcb-vias-using-conductive-drill-bit/

http://dangerousprototypes.com/2015/11/23/making-pcb-vias-with-conductive-ink/

http://makerfeed.net/article/making-pcb-vias-with-conductive-ink

http://oomlout.co.uk/blogs/news/77751169-diyouwares-twinteeth-makes-homebrew-circuit-board-vias-with-ease

Thanks guys for published it and thanks also all the readers who sent us questions about it.

Bowden style hot-end

We also had time to design a new toolhead for a Bowden all-metal E3D type hot-end.

Some people asked us if we could design parts to support this kind of hot-end because actually it's possible to buy cheap Chinese versions at eBay for less than $15. So we designed a new plastic holder for use it on TwinTeeth.

 

 

The actual 3D printer Toolhead kit uses a direct drive extruder and a J-Head type hot-end which is also very popular. We will continue support it but now you can also use a bowden type if you want. We will include the .stl files it in the next release of the blue-prints and parts.

New version of TwinTeethMC

Finally, we are refactoring  the TwinTeethMC code to adapt it to new versions of Control IP5 and Processing. We will also release them in the following weeks together with the ULPs and firmware modifications we did to make blind vias with conductive ink.

That's all for the moment. Thanks!

  • Read more about More on conductive inks and bowden hot-end support
  • Log in or register to post comments

PCB Vias à la Diyouware

Submitted by DIYouware on Sat, 11/21/2015 - 15:52

Last week we had time to continue researching about making vias with conductive ink.

We tried to fill the vias with the copper nano-particles ink but we brewed a very slippery one. It drains so easy through the holes that was difficult to fill the vias. We though add some viscous agent to the ink, but finally we had a brilliant idea.

Really we don’t need holes to make vias. Well, we need holes, but not through-holes. I mean, we can avoid drilling to bottom copper layer and make blind-vias like tiny wells instead of vias!

The idea is to drill holes taking care not to drill the bottom copper sheet. Then fill the tiny wells from inside, inserting a needle and injecting the conductive ink, mainly because it will be difficult to fill it from outside due to the air inside the well and also surface tension forces.

Both are simple tasks for a robot.

How to drill PCB wells

If we want to make PCB wells we need to detect in some way when the drill-bit tip touches the bottom copper layer. Then withdraw it quickly before it could damage the copper sheet.

In order to do it, we designed a “drilling interruptus device”. It is made with a carbon brush. We used a standard DC motor carbon brush and some bolts&nuts to attach it to the Dremel Toolhead.

The brush is always in contact with the drill collar and connects the drill bit to the electronics while the shaft is rotating. We used TwinTeeth’s auto-levelling probe circuit to detect when the tip touches the copper.

 

 

We also connected the bottom side of the PCB to the electronics through the spring cable, which is the other pole of the circuit, and we wrote a firmware modification which detects the event and manage the situation.

When the bit tip touches the bottom copper layer, the bot quickly withdraws the drill (really it withdraws the PCB because TwinTeeth moves the bed instead the tool).

The result is tiny wells instead of holes. They have an entry on the top copper sheet and a little bump on the bottom sheet produced by the bit tip.

Picture above shows the top side.

And above is the picture of the bottom side with the bumps.

These bumps were unexpected but really useful because probably they will fill up with conductive ink and help create electric contact with the bottom layer.

 

Filling the wells with conductive ink

Ok, we were clever finding a way to drill the tiny wells but fill them won’t be so easy.

We took some pictures of the wells and its mouths at the microscope. They look like these:

 

Not nice, they seem black holes of 0.75-0.8mm of diameter because we used a 0.7mm drill bit.

Next step is threading there the dispenser needle and inject the ink with a syringe.

You can see the needle into a well on next picture. We included one-cent coins to show you the size of the tiny wells. In red, the crocodile clip which connects the needle to the Arduino detecting when it touches the copper.

TwinTeeth's Dispenser Toolhead uses a 10cc syringe, may be it is too big for the task. Instead we should use a micropipette because we only have to dispense 0.854mm3 into each via, we thought.

We made the micropipette using a 2mm ID teflon tube and a 27-gauge needle (0.21 ID, 0.41mm OD). We installed it inside the 10cc syringe to fit it on the Dispenser Toolhead.

 

But it did not work very well because the plunge leaks. So finally we decided to use a 5ml standard syringe and we also installed it inside the 10cc syringe. What a mess of sryinges...

   

The idea is to fill the syringe with some ml of conductive ink. Then install the syringe on the dispenser and let the bot make the hard work.

It has to move to each via position and carefully insert the needle on each well. Then stops when it reaches the specified depth, or the needle touches the bottom copper sheet. Finally, it has to inject the ink on the well and run away to the next one.

We also implemented an algorithm which quickly withdraws the platform in case the needle tip touches the top copper sheet. This is to avoid breaking the needle but also to have the opportunity to try again displacing a little bit the shot position. You can see on the last picture a green wire which connects the top layer to the spring wire which allows this function.

So we connected the syringe and the PCB top layer to the electronics and modified the firmware to implement this behaviour.

The software chain

The process begins on Eagle Cadsoft.

We wrote a new Eagle’s ULP (User Language Program). It allows configuring the drilling/filling process and adjusting the various parameters. This program reads the vias information present at the board and generates the g-code needed to control TwinTeeth.

 

Then we used TwinTeethMC to load the g-code and control the robot.

Finally we modified the bot firmware to implement the new behaviour, as we said.

Additional features

We think we will be able also to implement a process for testing the vias using the bot.

It could use the auto-levelling probe to check vias conductivity and mark on the console those vias which does not work and those which does. It could also meter automatically the vias resistance and provides a complete quality control system.

Results

It works! And the method seems feasible saving a lot of time. No more melancholy making vias...:-)

We made a proof of concept without ink (we only have a few) and filmed a video. It’s very interesting see how TwinTeeth makes the work with so precision. You will see that sometimes, while threading the needle it fails, but recovers the situation using the algorithm we implemented and retry again.

Next time we will try using the conductive ink.  We still need to improve the ink formulations and find a cheap source or copper nano-particles, although we could also use any commercial silver ink which probably works better, but at a cost.

Anyway, a selective dispensing method of silver conductive ink has a lot of advantages from the cost point of view, because we don't waste a drop of ink.

Reading some papers we took note of some additives for make good conductive inks. Some of them uses PEG, PVP, PVA even gum arabic. We have to test them. PEG is a surfactant which decreases the surface tension forces. It is used in paper inkjet printers as an ink solvent. PVP is used to avoid particles form lumps.

Summarizing

This is a small step in the process of improving making PCB vias at home. We hope have contributed a little to it. Also we hope have inspired other people to researching in this way. We will continue to do it, and also researching about what we think will be the definitive DIY solution: 3D printing electronics.

Stay tuned!

  • Read more about PCB Vias à la Diyouware
  • Log in or register to post comments

PCB Vias à la Diyouware

Submitted by DIYouware on Sat, 11/21/2015 - 12:42

Last week we had time to continue researching about making vias with conductive ink.

We tried to fill the vias with the copper nano-particles ink but we brewed a very slippery one. It drains so easy through the holes that was difficult to fill the vias. We though add some viscous agent to the ink, but finally we had a brilliant idea.

Really we don’t need holes to make vias. Well, we need holes, but not through-holes. I mean, we can avoid drilling to bottom copper layer and make blind-vias like tiny wells instead of vias!

The idea is to drill holes taking care not to drill the bottom copper sheet. Then fill the tiny wells from inside, inserting a needle and injecting the conductive ink, mainly because it will be difficult to fill it from outside due to the air inside the well and also surface tension forces.

Both are simple tasks for a robot.

How to drill PCB wells

If we want to make PCB wells we need to detect in some way when the drill-bit tip touches the bottom copper layer. Then withdraw it quickly before it could damage the copper sheet.

In order to do it, we designed a “drilling interruptus device”. It is made with a carbon brush. We used a standard DC motor carbon brush and some bolts&nuts to attach it to the Dremel Toolhead.

The brush is always in contact with the drill collar and connects the drill bit to the electronics while the shaft is rotating. We used TwinTeeth’s auto-levelling probe circuit to detect when the tip touches the copper.

 

 

We also connected the bottom side of the PCB to the electronics through the spring cable, which is the other pole of the circuit, and we wrote a firmware modification which detects the event and manage the situation.

When the bit tip touches the bottom copper layer, the bot quickly withdraw the drill (really it withdraw the PCB because TwinTeeth moves the bed instead the tool).

The results are tiny wells instead of holes. They have an entry on the top copper sheet and a little bump on the bottom sheet produced by the bit tip.

Picture above shows the top side.

And above is the picture of the bottom side with the bumps.

These bumps were unexpected but really useful because probably they will fill up with conductive ink and help create electric contact with the bottom layer.

 

Filling the wells with conductive ink

Ok, we were clever finding a way to drill the tiny wells but fill them won’t be so easy.

We took some pictures of the wells and its mouths at the microscope. They look like these:

 

Not nice, they seem black holes of 0.75-0.8mm of diameter because we used a 0.7mm drill bit.

Next step is threading there the dispenser needle and inject the ink with a syringe.

You can see the needle into a well on next picture. We included one-cent coins to show you the size of the tiny wells. In red, the crocodile clip which connects the needle to the Arduino detecting when it touches the copper.

TwinTeeth's Dispenser Toolhead uses a 10cc syringe, may be it is too big for the task. Instead we should use a micropipette because we only have to dispense 0.854mm3 into each via, we though.

We made the micropipette using a 2mm ID teflon tube and a 27-gauge needle (0.21 ID, 0.41mm OD). We installed it inside the 10cc syringe to fit it on the Dispenser Toolhead.

 

But it did not work very well because the plunge leaks. So finally we decided to use a 5ml standard syringe and we also installed it inside the 10cc syringe. What a mess…

   

The idea is to fill the syringe with some ml of conductive ink. Then install the syringe on the dispenser and let the bot make the hard work.

It has to move to each via position and carefully insert the needle on each well. Then stops when it reaches the specified depth or the needle touches the bottom copper sheet. Finally, it has to inject the ink on the well and run away to the next one.

We also implemented an algorithm which quickly withdraws the platform in case the needle tip touches the top copper sheet. This is to avoid breaking the needle but also to have the opportunity to try again displacing a little bit the shot position. You can see on the last picture a green wire which connects the top layer to the spring wire which allows this function.

So we connected the syringe and the PCB top layer to the electronics and modified the firmware to implement this behaviour.

The software chain

The process begins on Eagle Cadsoft.

We wrote a new Eagle’s ULP (User Language Program). It allows configuring the drilling/filling process and adjusting the various parameters. This program reads the vias information present at the board and generates the g-code needed to control TwinTeeth.

 

Then we used TwinTeethMC to load the g-code and control the robot.

Finally we modified the bot firmware to implement the new behaviour, as we said.

Additional features

We think we will be able also to implement a process for testing the vias using the bot.

It could use the auto-levelling probe to check vias conductivity and mark on the console those vias which does not work and those which does. It could also meter automatically the vias resistance and provides a complete quality control system.

Results

It works! And the method seems feasible saving a lot of time. No more melancholy making vias...:-)

We made a proof of concept without ink (we only have a few) and filmed a video. It’s very interesting see how TwinTeeth makes the work with so precision. You will see that sometimes, while threading the needle it fails, but recovers the situation using the algorithm we implemented and retry again.

 

Next time we will try using the conductive ink.  We still need to improve the ink formulations and find a cheap source or copper nano-particles, although we could also use any commercial silver ink which probably works better, but at a cost.

Anyway, a selective dispensing method of silver conductive ink has a lot of advantages from the cost point of view, because we don't waste a drop of ink.

Reading some papers we took note of some additives for make good conductive inks. Some of them uses PEG, PVP, PVA even gum arabic. We have to test them. PEG is a surfactant which decreases the surface tension forces. It is used in paper inkjet printers as an ink solvent. PVP is used to avoid particles form lumps.

Summarizing

This is a small step in the process of improving making PCB vias at home. We hope have contributed a little improving it. Also we hope have inspired other people to researching in this way. We will continue to do it, and also researching about what we think will be the definitive DIY solution: 3D printing electronics.

Stay tuned!

  • Read more about PCB Vias à la Diyouware
  • Log in or register to post comments

Pages

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • …
  • next ›
  • last »

(c) 2013 Diyouware.com