29 de mayo de 2014

Insoladora UV V1.0. Circuito Electrónico


Introducción

Este es uno de los primeros circuitos que diseño enterito por mi cuenta por lo que puede haber algunos errores ya que mi experiencia es un poco limitada. Así que si véis cualquier cosa extraña o tenéis alguna pregunta, no dudéis y dejad un comentario.

Como ya sabéis, esta insoladora utiliza el hardware Arduino UNO como cerebro. Es bastante intuitivo para comenzar con la programación por lo que cualquier apasionado de electrónica en sus inicios tendría que tener uno. Como sirve para hacer infinidad de proyectos, he querido hacer un PCB donde se pueda quitar y poner sin ningún problema y así poder seguir "jugando" con él con otros proyectos.





Funcionamiento

El principio de funcionamiento (de acuerdo con el sketch de programación de Arduino) de la insoladora es el siguiente:

  1. Activamos el circuito mediante el interruptor
  2. Movemos con los botones + y - la posición de la barra de led's UV para encontrar primero el límite inferior de nuestro pcb a insolar y pulsamos el botón OK.
  3. Buscamos ahora el límite superior con los mismos botones que antes y volvemos a pulsar OK.
  4. Se encenderá el pequeño led indicador de funcionamiento.
  5. El programa va a esperar 4 segundos (para que nos de tiempo a cerrar la tapa del escáner) y encenderá los led's UV
  6. Un segundo después empezará a realizar las pasadas entre los dos límites marcados anteriormente. El número de pasadas se puede modificar en el sketch de Arduino. Yo le he dado un total de 7 idas y vueltas completas y el resultado es perfecto. Seguramente se puede rebajar este número, lo que disminuirá el tiempo total de insolado, pero viendo que me funciona bastante bien así, no he querido tentar la suerte y desperdiciar más papel fotosensible.
  7. Cuando haya hecho todas sus pasadas se apagarán los led's UV y el led indicador.
  8. El programa vuelve al inicio y podremos volver comenzar a fijar los límites de una nueva placa si fuera necesario.

Esquema

Aquí vemos el esquema general de lo que hay que conectar al circuito electrónico:



  • Botón Más: para mover la barra de led's UV hacia arriba.
  • Botón Menos: para mover la barra de led's UV hacia abajo.
  • Botón OK: para confirmar la posición de la barra de led's UV.

  • Motor paso a paso: en mi caso el escáner tenía un motor paso a paso unipolar (+ info sobre motores paso a paso).
  • Barra de led's UV: he hecho una configuración para alimentarlos con 12V como veremos más adelante.
  • Led indicador de insolado: led verde de 3mm que se encenderá mientras estemos insolando para evitar abrir el escáner y mover la transparencia o el PCB.
Como véis no hay que controlar muchas cosas, por lo que un Arduino UNO nos bastará aunque no tenga muchas entradas/salidas.

El circuito en sí lo podemos dividir en 3 partes: alimentación, control y entradas/salidas.


Alimentación

 


Para no cargar la placa con transformadores y demás y así aprovechar la alimentación propia del escáner, la entrada es directamente en continua. En mi caso es de unos 22V. Es importante que el adaptador o la fuente de continua que utilicemos pueda dar 1 amperio de intensidad para estar por encima del consumo total de la insoladora en funcionamiento que está alrededor de 600mA. En la entrada se pueden utilizar fuentes desde 15V aproximadamente para arriba. Con la mía se calienta un poco el LM7812 ya que caen unos 9V en él, por lo que tuve que ponerle un disipador.

Este circuito no tiene mucho misterio. Lo único que hace es adaptar la entrada en continua a 12V que será la tensión utilizada para alimentar el motor paso a paso y la barra de led's ultravioleta.


Control

 


Para controlar el movimiento del motor y cuándo se encienden o apagan los led's UV tenemos Arduino. En mi caso he puesto las entradas y salidas en los siguientes pines:

Motor paso a paso: pin 9, 10, 11 y 12.
Botón OK: pin 8.
Botón -: pin 7.
Botón +: pin 6.
Led's UV: pin 5
Led indicador: pin 4.

Arduino va a estar alimentado a 12V por su entrada Vin. Vamos a utilizar los 5V que nos proporciona este hardware para alimentar el led indicador de insolado de 3mm y para el estado lógico de los botones de entrada.

Importante: la tierra de Arduino tiene que estar conectada a la tierra de la fuente de alimentación a 12V para que todas las referencias de tensión sean las adecuadas.


Entradas y Salidas

 



Entradas

Botones
Para poder dirigir el motor he aprovechado los tres botones que traía este escáner que es un Epson Perfection 660. Vamos a utilizar los 5V de la placa del Arduino para leer el estado de cada botón. He utilizado una lógica inversa para esto, es decir, que la entrada estará en estado alto mientras el botón no esté pulsado y se pondrá a cero cuando lo activemos.


Salidas

Motor Paso a Paso
Para hacer girar el motor paso a paso necesitamos el driver ULN2003 o similar, aunque también lo podríamos fabricar de forma discreta con transistores, pero con este integrado se simplifica mucho el circuito.
Utilizamos las 4 primeras entradas del ULN2003 para el motor. Tendremos que colocar en el orden correcto los cuatro cables, sino no girará bien. Yo no pude encontrar el datasheet de mi motor por lo que tuve que ir probando hasta que dí con el orden correcto que finalmente fue: Negro - Amarillo - Naranja - Azul. El cable blanco fue el común. Para dar con éste último hay que coger el multímetro y medir la resistencia entre dos cables. El valor de esta resistencia será de X ohmios entre cada uno de los cables "independientes" y de X/2 entre cada uno de esos "cables independientes" y el común. Para acertar el orden de esos mal llamados "cables independientes" utilicé un sencillo código con el arduino que os dejo justo aquí debajo y fui probando al azar hasta que logré hacer girar el motor suavemente sin trompicones. También añadí una resistencia de 82 ohmios por cada bobina del motor para limitar la corriente y que no se me calentara.

//Constantes
int motorPin1 = 9;
int motorPin2 = 10;
int motorPin3 = 11;
int motorPin4 = 12;
int delayTime = 10; //Determina la velocidad del motor paso a paso.


void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {
  
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
  
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);

}


Led's UV
Como el ULN2003 tiene 7 canales, he aprovechado el quinto (que estaba libre) para pilotar la barra de led's, por lo que estos van a funcionar también a 12V como se puede ver en la figura un poco más arriba.



Para realizar la barra de Led's UV he conectado 3 diodos por resistencia. Como yo quería hacer pasar una corriente de unos 14mA por cada rama y en cada led caen 3.3V, entonces la resistencia limitadora tenía que ser de:



Aunque en el último esquema sólo aparecen 3 filas, en realidadl he puesto 20 ramas en paralelo de 3 leds cada una, lo que da un total de 60 led's UV. El consumo total de la barra es de unos 300mA aproximadamente.

Led Indicador
Este led de 3mm está directamente alimentado por Arduino y limitado en corriente por una resistencia de 220 ohmios.

Conclusión

Partiendo de estas indicaciones, se podría adaptar el circuito para cada escáner. Sólo habría que cambiar el valor de las resistencias limitadoras del motor paso a paso.
Este es el diseño más básico para que funcione la insoladora. Una de las mejoras que pretendo hacerle es añadir un par de fines de carrera para limitar el área de insolado ya que si le das a avanzar al motor, este no se parará a menos que dejes de apretar el botón, lo que no sería muy bueno para el motor...

No hay comentarios:

Publicar un comentario