Buscar este blog

Información semanal de las clases de electrónica y las sucesivas prácticas realizadas por Guillermo Cayetano Espejo alumno del Ciclo de Grado Superior de Manteniemintos Electronicos de 2º Curso del CIFPN1 (Peñacastillo,Santander) Dpto:Electricidad y Electrónica

jueves, 8 de diciembre de 2016

Practica 3 Arduino Ethernet

Introducción:
El objetivo de esta  práctica es crear un servidor web con arduino a través de su placa complementaria de Ethernet (Ethernet Shield), y visualizarlo desde fuera de una red local. Además en la página, debe leerse un sensor, previamente colocado en arduino, de temperatura (LM35) y visualizar la temperatura con un refresco de tiempo continuo.

Desarrollo:
Lo primero que hice fue desarrollar un programa de lectura de temperatura, el LM35 es un chip que lee temperatura en  y ofrece una salida de 10 mV por grado centígrado. Por ello lo que haremos será colocar el chip LM35 a un pin analógico de arduino, en mi caso al 4, y hacemos una conversión para que nos muestre el valor directamente en grados centígrados.  Si  10 mV es un grado centígrado y el pin analógico abarca un rango de valores entre 0 y 1024, primero hay que convertir el valor leído por el pin a mili voltios, dado que 5 v es la tensión máxima, 5000 mv corresponde a 1023 el valor máximo analógico, si tenemos l valor analógico que lee el pin aplicando una regla de tres podemos sacar el valor en mili voltios que corresponde al valor analógico en cada momento:



Con el valor en mili voltios, tan lo hay que dividirlo entre 10 para sacar el valor en grados centígrados ya que 1 grado eran 10 mV para el sensor.
Programa temepratura:
…………………………………………………………………………………….
float tempC;
int tempPin =4; // Definimos la entrada en pin A0

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly:
   tempC = analogRead(tempPin);
    Serial.println(tempC);

    // Convierte el valor a temperatura
    tempC = (5* tempC * 100.0)/1023.0;

    // Envia el dato al puerto serial
  
    Serial.println(tempC);
    Serial.println(" grados Celsius\n");

    // Espera cinco segundo para repetir el loop
    delay(3000);

}
…………………………………………………………………………………..
El programa principal es donde integraremos el servidor web, para ello utilizaremos las librerías Ethernet y SPI la primera la utilizaremos para configurar ll servidor web (IP,MAC…) la segunda es para comunicarnos por el BUS SPI con la placa de Ethernet de Arduino.

Para poder realizar esta práctica con éxito debemos abrir un puerto en nuestro router para permitir conectarse nuestro servidor ya que alojaremos el servidor en mi red local y si quiero acceder desde la red pública e de abrir un puerto.



Como se puede apreciar en la imagen superior, abrí el puerto 80 en mi router para una IP específica (192.168.1.30) que es la que por programación le he dado a mi servidor web.
De este modo introduciendo esa IP como URL en un red pública, el router lo detecta y lo renvía al puerto abierto para esa IP, el 80 en mi caso.
A continuación muestro el programa final, con explicaciones básicas de cada comando, excepto el código HTML que es el que he usado para formar la página, ya que he usado un formato estándar de programación y no tengo conocimiento suficiente para dar una explicación detallada.
Programa Principal:
…………………………………………………………………………………………….

/*
/////////////////////////////////////////////////////////////////////////////
// Autor: Guillermo Cayetano Espejo               23/11/2016//
/////////////////////////////////////////////////////////////////////////////
// Programa:Servidor Web con sensor de temoeratura        Version: 1.0
// Dispositivo:Atmel 328                                  Compilador:AVR
// Entorno IDE: 1.6.12                                    Simulador: Vitronic
// Tarjeta de aplicacion:  Arduino                        Debugger:
////////////////////////////////////////////////////////////////////////////
//Consista en leer la entrada analogica de un sensor de temperatura       //
// analogica de un sensor de temperatura y subirla a un servidor web.     //
////////////////////////////////////////////////////////////////////////////
*/
/////////////////LIBRERIAS//////////////////////////////////////////////////
#include <SPI.h> //Definimos la libreria de la comunicacion SPI (#include es una directiva que le dice al compilador que busque
//la libreria escrita).
#include <Ethernet.h> // Definimos la libreria Ethernet


byte mac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Escribimos la MAC de nuestra shield de Ethernet ( suele venir escrita por debajo).
IPAddress ip(192,168,1,30);  // Asignamos la IP a Arduino (Va entre comas) ponemos la //Privada que le queremos asignar , ya que lo usaremos como servidor de la página web que //creemos debemos tener cuidado ya que nuestro router puede tener el protocolo DCHP //activado y cambiar esta IP de vez en cuando, si ocurre esto podemos desactivar el servicio //DHCP en el router o asignar un dominio a la IP, aunque lo mejor es fijar una IP por dirección //MAC en el router así para esa MAC siempre le da la misma IP Privada, también debemos //abrir un puerto para que al entrar desde fuera de la red local nos re direccione a nuestra IP. //En el router abro el puerto 80 y le asigno la IP local que he puesto.



EthernetServer server(80);  //Creamos un servidor web en el puerto 80 que es el puerto HTTP por defecto
/////////////////Variables Globales/////////////////////////////////////////

float tempC;
int tempPin =4; // Definimos la entrada en pin A0

/////////////////Funciones//////////////////////////////////////////////////

/////////////////Configuración(SETUP)/////////////////////////////////////////   
void setup()
 {
  // Abre puerto serial y lo configura a 9600 bps (baudios por segundo)
   Serial.begin(9600);
   Ethernet.begin(mac,ip); // Comienza la connexion
   server.begin();
 }

 /////////////////Principal (LOOP)///////////////////////////////////////////
void loop()
 {
   EthernetClient client=server.available(); // Creamos el objeto cliente de la clase //EthernetClient cuando se ejecute la función "available" del objeto server que creamos para //la clase EthernetServer, la función se ejecutara ( y por tanto el objeto client se creara) //cuando se  detecte un cliente a través de una petición HTTP.
    if (client){
        Serial.print(" Cliente Nuevo: ");
        boolean currentLineIsBlank=true; // Las peticiones HTTP acaban con una línea en blanco, //así que creamos una variable booleana para esa línea.
        while (client.connected()){// Mientras el cliente este conectado....
              if(client.available()){ // Si el cliente está disponible...
                  char c=client.read(); // Leemos la petición HTTP carácter por carácter.
                  Serial.write(c); // Visualizamos la petición HTTP en el monitor serie.
                  if (c == '\n' && currentLineIsBlank){  // Al recibir línea en blanco la petición HTTP ha //terminado, ahora mandaremos la respuesta en HTML.
                       // Enviamos al cliente una respuesta HTTP
                       // Escribimos el código HTML
                       client.println("HTTP/1.1 200 OK");
                       client.println("Content-Type: text/html");
                       client.println("Connection: close");  // La conexión se cerrara después de //completar la respuesta
                       client.println("Refresh: 5");  // Refresca la página cada 5 segundos
                       client.println();
                   
                       //Cabezera:
                      client.println("<!DOCTYPE html>");          // Envía la página Web
                      client.println("<html>");
                      client.println("<head>");
                      client.println("<title>Sensor De Temperatura</title>");
                      client.println("</head>");
                      client.println("<body background=http://www.hdfondos.eu/pictures/2014/0412/1/outer-space-dark-stars-images-155548.jpg"); // Defines una imagen de fondo de pantalla
                      client.println("<B>");//Escritura en negrita a partir de aquí
                      client.println("<FONT FACE=arial SIZE=5 COLOR=YELLOW >"); // Define el tipo de //letra el tamaño y el color
                      client.println("<h1>LM35</h1>");
                      client.println("<p>Sensor de temperatura por Guillermo Cayetano.</p>");
                      client.println("<form method=\"get\">");              
                     
                      
                       //Se muestra el valor de la entrada analógica:
                        tempC = analogRead(tempPin);
                        // Convierte el valor a temperatura
                        tempC = ((5* tempC * 100.0)/1023.0)-8; //LM35 indica mide en mv/C (mili voltios //entre Grados Centígrados) por eso debemos multiplicar por 100.
                        client.print("La temperatura en mi casa es:  ");
                        client.print(tempC);
                        client.print(" grados centígrados  <br>");
                        client.println("</B>");//Cerramos escritura en negrita
                        client.println("</FONT>");//Cerramos el formato de escritura abierto antes
                        client.print("<IMG SRC=http://4.bp.blogspot.com/-mIRoj-lZlZY/UJzqh4UfshI/AAAAAAAAJgw/kJZ1Z2kisoE/s1600/b2bdeca50ad5715437373cd170ffaa4d_article.png>"); //Establece una imagen
                        client.println("</form>");
                        client.println("</body>");
                        client.println("</html>");



                       
                       

                       
                    break;  
                  }
                       if (c== '\n'){
                            currentLineIsBlank=true; 
                       }
                       else if (c !='\r'){
                            currentLineIsBlank=false;
                       }
               }
         
         }
         delay(100);
         client.stop();// Cierra la conexión con cliente.
      }
  
    boolean lineaenblanco=true; // Las peticiones HTTP acaban con una línea en blanco, así que //creamos una variable booleana para esa línea.
   // Lee el valor desde el sensor
    tempC = analogRead(tempPin);
    Serial.println(tempC);

    // Convierte el valor a temperatura
    tempC = ((5* tempC * 100.0)/1023.0)-8;

    // Envía el dato al puerto serial
  
    Serial.println(tempC);
    Serial.println(" grados Celsius\n");

    // Espera cinco segundo para repetir el loop
    delay(3000);
 }


………………………………………………………………………………….


Compilamos y subimos el programa a Arduino, y lo conectamos al router además de alimentarlo. Hay que tener en cuenta que el servidor se encuentra en el mismo Arduino, por lo tanto este debe estar alimentado y conectado a la Red para poder visualizar la página Web.

Archivos fuente en el siguiente enlace:
Ethernet 

martes, 6 de diciembre de 2016

Practica 2: RTC


Introducción:
En esta  práctica lo que vamos a hacer es imprimir la fecha y hora en una pantalla LCD (Liquid Crystal Dislay) ofrecida por un módulo RTC (Real time clock) todo ello dirigido por un dispositivo a Arduino, mediante comunicación I2C.

Desarrollo:
Lo primero que debemos conocer es cómo funciona el BUS I2C, a grandes rasgos es un BUS en el que la comunicación se establece en dos hilos (tres contando GND), uno será SDA que es el de datos y otro es el SCL que es el reloj para sincronizar la comunicación. (Bus explicado extensamente en este mismo blog en la entrada:(Bus I2C).
La pantalla viene con un chip integrado (Expansor remoto de I/O a I2C), con lo que la comunicación con este chip ya se hace en I2C.
El módulo RTC (DS1307), viene integrado con el cristal y ofrece su salida en I2C, además lleva una pila integrada para mantener la hora después de apagarse.
La conexión es sencilla por un lado, se conectan las salidas de la pantalla y el RTC del bus I2C (SDA y SCL) a las entradas del Arduino del mismo nombre los cuales físicamente son los pines analógicos 4 y 5. Seguidamente se alimenta la pantalla y el RTC a 5 voltios desde la salida de 5 voltios del arduino.
Después de realizar el montaje solo queda hacer el programa, yo le he hecho en Proteus para poder hacer un esquemático del montaje, pero como había conflicto con algunas libreris cargue el programa desde el IDE de arduino.


En mi caso he utilizado dos librerías: virtuabotixRTC y LiquidCrystal_I2C, la primera la utilizo para establecer la hora del RTC por primera vez, y para crear el objeto RTC. La segunda la utilizo para printar en la pantalla LCD.
El Programa:
/*
////////////////////////////////////////////////////////////////////////////////////
//   AUTOR: Guillermo                                              Octubre/2016
////////////////////////////////////////////////////////////////////////////////////
//   PROGRAMA:    Practica2 RTC             VERSIÓN:       1.3
//   DISPOSITIVO: ATMEL 328                            COMPILADOR:    AVR
//   Entorno IDE:   1.6.12                              SIMULADOR:     VIRTRONIC
//   TARJETA DE APLICACIÓN: ARDUINO                    DEBUGGER:    
////////////////////////////////////////////////////////////////////////////////////
Printar en pantalla LCD la hora y la fecha establecidos por un RTC.
////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
// LIBRERÍAS //////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//
*/
// Declaramos las librerías
#include <Wire.h>
#include <virtuabotixRTC.h>
#include <LiquidCrystal_I2C.h>
// include--> es una directiva que le dice al compilador donde buscar la librería
//"<>" Con esas instrucciones le dices al compilador que busque las librerías en el lugar por defecto.
virtuabotixRTC RTC(2,3,4); // Instancias la clase virtuabotixRTC y creas el objeto RTC y como   //demanda la librería virtuabotix le asignamos los pines que corresponden en orden al reloj, datos
// y reset del RTC(DS1302).
LiquidCrystal_I2C lcd(0x27,16,2); // Instancias la clase LiquidCrtistal y creas el objeto lcd y se le //asigna la dirección y los pines que corresponden en orden a: dirección, columnas y filas.

///////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES //////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
int start=0; // Inicializamos la Variable global de tipo int 2 bytes (65536).



////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES ///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////
// CONFIGURACIÓN ///////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
void setup()
{

Wire.begin(); // Inicializamos las funciones de I2C de arduino (Que es lo que hace la librería Wire)
//RTC.setDS1302Time(0,9,10,4,11,11,2016);  // Activas la función de la librería virtuabotix para el //objeto RTC, Esta función le metes la fecha y hora y se la asigna al rtc, solo sería necesario hacerlo //la primera vez, luego esa línea se podría comentar. Los parámetros son n orden: seg, min, hora, //diadelasemana, diadelmes, mes, año.


lcd.begin(16,2); //Inicializamos el LCD con 16 columnas y 2 filas.
lcd.backlight(); // Establece la retroiluminación en nuestro objeto lcd.
}
////////////////////////////////////////////////////////////////////////////////////
// PRINCIPAL ///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
void loop()
{

   if (start==0){
   lcd.print("Buenos Días"); // Al empezar start vale 0 y nos da un mensaje de Buenos Días.
   delay(1000);
   }
start++; // Incrementa la variable global start en uno.
RTC.updateTime(); // Esta función pertenece a la librería virtuabotix y lo que hace es subir el //tiempo del reloj al objeto RTC.



lcd.setCursor(0,0); //Esta función sitúa el cursor (por llamarlo de alguna forma) en la posición que  //le des, en este caso es 0,0 por lo tanto lo siguiente que se escriba en el LCD empezara a partir de //la columna 0 y fila 0.

// lcd.print("Hora ");
   if (RTC.hours<10){// Si el valor de la hora es menor de 10 pone un "0" delante
      lcd.print("0");
      lcd.print(RTC.hours);
   }
   else{
      lcd.print(RTC.hours);
   }

lcd.print(":");
   if (RTC.minutes<10){
      lcd.print("0");
      lcd.print(RTC.minutes);
   }
   else{
      lcd.print(RTC.minutes);
   }

lcd.print(":");
   if (RTC.seconds<10){
      lcd.print("0");
      lcd.print(RTC.seconds);
   }
   else{
      lcd.print(RTC.seconds);
   }


lcd.setCursor(0,1);
switch (RTC.dayofweek){ // la librería virtuabotix asigna a los días de la semana como números //del 1 al 7 con este switch asigno los días a su equivalente en nombre de día de la semana.

       case 1:
                               lcd.print("Lunes");
                               break;
       case 2:
                               lcd.print("Martes");
                                break;
       case 3:
                               lcd.print("Miercoles");
                               break;
       case 4:
                                lcd.print("Jueves");
                               break;
       case 5:
                                lcd.print("Viernes");
break;
       case 6:
                                lcd.print("Sabado");
                                break;
       case 7:
                                lcd.print("Domingo");
                                break;
      }
delay(3000); // Espera 3 segundos hasta seguir con el programa.
lcd.clear(); // Limpia la pantalla de nuestro lcd.
lcd.setCursor(0,0);
lcd.print("Fecha ");
lcd.print(RTC.dayofmonth);
lcd.print("/");
lcd.print(RTC.month);
lcd.print("/");
lcd.print(RTC.year);
delay(1000);
lcd.clear();
//lcd.función ()à a la izquierda del punto tenemos el objeto y a la derecha la función que se //aplicara //a ese objeto, dentro del paréntesis introduciríamos los parámetros que necesita la //función.

}
Archivo fuente en el siguiente enlace:
RTC

Practica 1: Placa Arduino Nano


Introducción:
Esta  práctica , consiste en crear una placa de circuito impreso semejante a la del Arduino Nano ya que seguiremos su esquema de montaje. Para llevarla a cabo podríamos dividir la practica en tres secciones, la primera seria el diseño en un CAD (Proteus) de la placa en si, colocando todos los componentes, vías, pistas según queramos, teniendo en cuenta el esquema del arduino Nano. La segunda parte seria imprimir esa placa que hemos diseñado, se utilizara una CNC, que mediante una placa de cobre rellena de aislante, lo que hace es, al rallar el cobre con una fresa deja al aire el aislante pudiendo separar las pistas entre sí. Una vez realizada la placa la última parte seria soldar los componentes previamente adquiridos en cualquier tienda de componentes o por Internet.

Desarrollo:
Lo primero que hacemos es abrir y entender el esquema del arduino Nano ya que es en el que nos vamos a basar:

Descomponiendo ese esquema podemos diferenciar 3 partes fundamentales la primera y más importante es el microcontrolador (Atmega 328-P) que es como coloquialmente nos referimos como el cerebro de la placa ( el chip del centro). Para hacer nuestra placa seguiremos la misma disposición en cuanto a los pines que hay en el esquema en relación al microcontrolador. Según se observa tiene varios componentes conectados directamente, bien uno de ellos es un interruptor que corresponde con el botón de Reset que podemos encontrar en la mayoría de las placas de Arduino. Los condensadores que tiene conexionados son los condensadores de BYPASS, estos condensadores se ponen en cada pin de tensión y GND de la mayoría de los chips integrados y sirven para eliminar los efectos parásitos que se generan en todos los componentes. También observamos que hay un oscilador conectado al Atmega 328-P, este es el que marcara la frecuencia del micro-controlador y se pone lo más cerca posible a este.
El segundo bloque que se encuentra a la derecha en el esquema de antes, es el chip Integrado FT232RL, se utiliza para conectar el microcontrolador al puerto USB y poder conectar este a un PC vía UART y establecer una comunicación RS232. El componente que tiene conectado por debajo a la derecha es el conector USB a través del cual podemos conectar nuestro ordenador a la placa e introducirle los programas. También tiene condensadores de BYPASS y dos diodos led de control.
En el tercer y último bloque quedarían recogidos todos los demás componentes como el ICSP, el regulador de tensión y el auto selector.
-El ICSP es el acrónimo de la frase en ingles In Circuit Serial Programing (Programación seria en circuito), posibilita la reprogramación de los PIC (familia de microcontroladores del tipo RISC) sin necesidad de extraerlos del mismo circuito.
-Regulador de tensión: Recibe una tensión a la entrada y devuelve una tensión a la salida de menor valor pero constante y sin picos, en este caso devuelve una tensión de 5 voltios.

Una vez entendido el esquema y sus componentes pasamos a diseñarlo en el Proteus, primeros haremos el esquemático quedando de la siguiente forma:


Cada componente tiene su coste y código (de RS) real excepto la base que esa es la que haremos nosotros en la CNC. Usamos la librería personal que nos dio el profesor para encontrar algunos componentes que no estaban en las librerías por defecto de Proteus. Otros en cambio tuvimos que modificarlos para poder escribir su precio y su código, el proceso era algo complejo pero a grandes rasgos lo que había que hacer era coger el componente y descomponerlo. Aparece un texto debajo del componente en el que pinchando dos veces acedemos a un documento de texto en donde están todas las características del componente, lo que hacemos es añadir en una line en blanco el código y el coste siguiendo el mismo formato que tiene otras líneas.

Una vez realizado el esquemático podemos pasar a hacer el diseño (Layout), en el mismo programa y proyecto en la barra de herramientas esta la opción de hacer el diseño a partir del esquemático (un botón rojo).
En el diseño ten os el mismo problema que en el esquemático hay algunas huellas de los componentes que no están en por defecto en las librerías de Proteus o no estan como las queremos nosotros, para nuestro proyecto hemos elegido componentes SMD de 1206 de tamaño (3.2x1.6x0.5mm), asi que algunas huellas que modificar para nuestros intereses. Para ello cojimaos un componente con una huella parecida, los descomponíamos y le añadíamos o quitábamos lo que quisiéramos cambiar, después le seleccionábamos y pinchábamos la opción “Make a Package”, no salían una seria de ventanas de configuración y para guardarlo (nosotros los guardábamos en la librería personal en sub-categoría personal) y ya estaba hecho.
El diseño quedo de la siguiente forma:
TOP




BOTTOM





Con el diseño echo, generamos los archivos Gerber/Excellon para imprimirla en la CNC, y la imprimimos siguiendo los pasos cuidadosamente.(Ver entrada: “Pasos CNC” en este mismo blog)


Placa Impresa y “casi-remachada”(Dos caras)":




  

Con la placa impresa, lo siguiente que debemos hacer es poner las vías pero sin remacharlas ya que si no podríamos estropear las pistas. En mi caso me salieron 30 vías con lo que puse 30 vías, deben ser “casi-remachadas” todas por el mismo lado que debe ser el mismo lado por donde se soldaran los headers, según el diseño de las imanes de arriba ese lado correspondería a la TOP (Rojo). Una vez “casi-remachadas” todas las vías, debemos soldarlas con cada pista que llega a ellas por ambos lados teniendo especial cuidado con la soldadura en no echar demasiado estaño o que la soldadura que dé en punta, es recomendable practicar antes con alguna placa que haya salido mal. Una vez soldadas todas las vías solo queda soldar los componentes en sus respectivos Paths teniendo especial cuidado en no soldar dos Paths juntos. Después de esto solo quedaría probarla y verificar su funcionamiento.

Asi quedria la placa despues de remacharla y soldar los componenetes:







lunes, 14 de noviembre de 2016

Pasos CNC


Pasos para imprimir una  placa PCB  en la CNC

Esta guía se basa en un diseño en el CAD Proteus, aunque puede servir para cualquier otro CAD.
Paso 1: Descomprimir el archivo (del CAD) en formato Gerber/Excellon. En Proteus en la barra de herramientas, en la pestaña OUTPUT. Previamente nos aseguraremos que las reglas de diseño son las adecuadas.



Nos saldrá una ventana en la que se verá como genera los archivos, cuando acabe saldrá la siguiente ventana:


En esta ventana tendremos que seleccionar únicamente las capas de: Bottom, Edge,  Mech1, Top y Drill.

Paso 2: Pasar al CircuitCam
2.1-Copiar archivos Gerber/Excellon en carpeta Circuit Cam ( Este paso es para nuestra clase que tenemos el programa Circuit Cam en el ordenador de la CNC).
2.2- En el Circuit Cam, importar los archivos creados, todos menos el READ ME.


Nos saldrá otra ventana y en la cabecera nos saldrá un bloque con unas líneas que corresponden a las capas que hemos importado, en la columna Layer nos saldrá un desplegable para cada linea que tendremos que cambiar por lo siguiente:
                -En la capa Bottom en el desplegable elegimos Bottom Layer
                - En la capa Mech1 en el desplegable elegimos Cutting Outside (para             cortar por fuera, si elegimos Cutting Inside cortara por dentro).
- En la capa Top en el desplegable Top Layer.
- En la capa Drill en el desplegable elegimos Drill Plated para hacer los agujeros por la Bottom, si los queremos hacer por la Top elegimos Drill unplated.

Paso 3: Contour Routing
            Seleccionamos la opción Contour Routing y damos a ejecutar.


           



Seguidamente en la barra de herramientas seleccionamos la pestaña Tool Path y en el desplegable la opción Aislar.
En la ventana que nos sale, estará seleccionada una de las capas Bottom o Top, en la parte de abajo nos saldrá “Ancho” y dos opciones modificables, Base y Espacio, cambiamos ambas por 2mm y le damos a EJECUTAR. !!!! NO DAR A OK ¡¡¡después de dar a EJECUTAR, volvemos a hacer lo mismo pero cambiando la capa.
Una vez echo lo anterior tenemos que exportar el archivo creado en formato LPKF, la opción sale en la columna de la izquierda (Ver imagen debajo).





                Paso 4: Board Master (Programa que dirige la CNC)
Al abrir el programa es posible que salga una ventana con el encabezado “¿Dónde está la herramienta?”, simplemente le das a OK.
Lo primero es importar (en la barra de herramientas en la pestaña archivo) el archivo LMD creado en el circuit CAM.
Nos saldrá la placa inmediatamente en la pantalla, debemos asegurarnos que se han pasado todas las capas para ello en la parte superior izquierda tenemos un desplegable con todas las capas numeradas (Justo debajo de donde está el desplegable de herramientas).
Lo Primero que debemos hacer si es la primera vez que hacemos la placa es hacer los agujeros para los pernos (para que no se mueva la placa). Para ello colocamos la broca con la que queramos hacer los pernos en uno de los agujeros tener en cuenta que están numerados de izquierda a derecha, es decir si la colocamos en el ultimo (el de mas a la derecha)  ese seria el numero 10 ya que hay 10 agujeros para colocar brocas y el de mas a la izquierda seria el numero 1, esto es importante ya que al seleccionar en el programa la herramienta deberemos elegir el numero correcto para hacer los agujeros.

Una ve colocada la broca cerramos la tapa y seleccionamos la opción del panel de herramientas (Ver Imagen) para encender el taladro.




En la pestaña superior izquierda  salen todas las herramientas y sus respectivos números, seleccionamos el 10 (en el numero donde hayamos colocado la broca) y la maquina ira a cojer esa herramienta.
Para hacer los agujeros de los pernos debemos quitar el capuchón de plástico del cabezal de la máquina. ¡MUY IMPORTANTE TANTO PARA QUITAR COMO PARA PONER EL CAPUCHÓN HACERLO CUANDO TENGA UNA BROCA COJIDA¡, para ello llevar la maquina a la P (Parking) y apagar el taladro si estuviera encendido
Antes de nada a la hora de empezar a trabajar con la maquina cerrar la tapa ya que si no funcionara.
Para hacer los agujeros  primero encendemos el taladro, escucharemos el aspirador de la maquina al hacerlo.

Ahora si le das a las opción de la casa, lleva el cabezal de la maquina al primer fiducial, mediante las flechas de dirección vas bajando el cabezal hasta perforar la placa y hacer el primer agujero, cuando acabe podemos subimos el cabezal con las flechas de dirección, una vez aquí para hacer el segundo agujero podemos hacer dos cosas: La primera seria, tal y como queda el cabezal después de hacer el primer fiducial desplazamos hacia la derecha 290 mm el cabezal( ya que es la distancia entre fiduciales) y volvemos a perforar. La segunda  opción, sería una vez hecho el primer fiducial, mandar el cabezal a parking “P” (opción con una P azul), abrimos la tapa y giramos la placa 180, y ponemos el fiducial del agujero que hemos hecho, cerramos la tapa, y damos a la casa otra vez y hacemos el fiducial del otro lado.

Paso 5: Hacer agujeros propios de la PCB (Vias,headers….)


 Lo primero que debemos hacer es colocar las herramientas en los agujeros de la maquina (fresas y brocas) para ello seleccionamos la siguiente opción:


Nos saldrá una ventana dividida en dos partes en la ventana de la izquierda están 10 desplegables cada corresponde a una agujero de la maquina numerados de izquierda a derecha, y en la parte de la derecha están las herramientas que debemos utilizar según el programa que hemos introducido también numeradas. Lo que hay que hacer es poner en cada desplegable de la izquierda la herramienta que nos dice la parte de la derecha. Una vez colocadas todas las herramientas en la parte izquierda tal y como están el la parte derecha antes de cerrar esa ventana, abrimos la tapa de la CNC y las colocamos físicamente en la maquina, en nuestro caso haremos algunas excepciones que son las siguientes:
- Todas las brocas que sean menores de 1 mm nosotros pondremos 0.85 mm indistintamente de lo que indique el programa.
-Universal Cutter Marking, no la utilizamos ya que no marcamos antes de cortar.
-Universal Cutter 0.2 (8mil) es la fresa propia de cada uno (Naranja)
-End Mill 1.0mm es la otra fresa de cada uno (Morada)


Para hacer los agujeros debajo de las herramientas, en el desplegable elegimos drilling plated o unplated depende lo que hayamos elegido en el CircuitCam, seguidamente seleccionamos Alt+ y Start, y la maquina empezara ha hacer todos los agujeros de la placa.




Cuando acabe hacemos las pistas, para ello donde elegimos drilling plated seleccionamos milling Bottom, si hubiésemos elegido drilling unplated elegiríamos milling top.
Cuando acabe, mandamos el cabezal a Parking, abrimos la tapa y damos la vuelta a la placa sobre su eje horizontal, cerramos la tapa y seleccionamos millin Top (O miling Bottom si antes hubiésemos hecho la top). Y hará las pistas por la otra cara, cuando haya acabado saldrá un mensaje de fin de fase en el ordenador, le das a aceptar y ya solo queda hacer el galleteado del borde, en la pestaña despegable donde hemos echo las pista y los agujeros hay otra opción que es Cutting Outside (si elegimos cortar por fuera si no sera Cutting Inside) la seleccionamos, pinchamos Alt+ y Start. 

Cuando acabe el galleteado saldrá final de fase le das a aceptar y ya podrás abrir la tapa y retirar tu placa terminada, recordar pasarla una goma para limpiar impurezas y pasar el aspirador por la maquina para limpiar todas las virutas que se hayan podido caer alrededor.