Electroensaimada DIY, Raspberry Pi, Arduino ...
  • Home
  • Raspberry Pi
    • Básico >
      • Primeros pasos
      • IP estática
      • Montar Pendrive
      • Escritorio remoto
      • Conexión Wifi
      • no-ip
    • Intermedio >
      • Openelec Xbmc
      • OwnCloud
      • Torrent
      • Parpadeo led
      • Xbee
    • Avanzado >
      • SPI con WiringPi
      • ADC
      • Control temperatura
      • Alarma con aviso por mail
    • Raspberry Pi Expansion Board >
      • Control temperatura
      • Alarma con aviso por mail
  • Arduino
    • Motor paso a paso
    • Servomotor
    • PWM
    • Sensor Infrarrojo
    • SPI
    • I2C
    • Relé y LDR
    • Mando Radiocontrol
  • Blog
    • Contacto
  • CNC
    • Material
    • Codigo Maquina >
      • Leer el fichero
      • Decodificar fichero
      • Entorno de usuario
    • Movimiento >
      • Recta a trozos
      • Taladrar o cortar
    • Estructura
    • Estructura(2º Version)
    • Modelo CAD 3D
  • Software
    • Qt
    • Eagle >
      • Instalación y primeros pasos eagle
      • Librerías
  • Utilidades
  • Laboratorio
    • Fuente alimentación >
      • Material
      • Montaje

Decodificador fichero

Una vez hemos sido capaces de leer el fichero, es hora de decodificar la información y transformarla en operaciones concretas, como encender la maquina o movernos a una posición concreta. Para ello utilizaremos la siguiente tabla para saber el significado de cada comando.
Imagen
Evidentemente hay muchos mas códigos pero de momento usaremos estos. Después, añadir códigos nuevos es realmente sencillo.Nuestro código de prueba:

%
M48
M72
T01C0.0320
%
T01
X5600Y11600
X11600Y11600
X13100Y10100
X13100Y4100
M30

He creado una estructura global para almacenar las variables del sistema, como la posicion X,Y,Z la posicion Objetivo , el sistema de coordenadas etc.

struct System_CNC{

int X,Y,Z; //Cordenadas actuales
int Xo,Yo,Zo; //Cordenadas objetivo
int Unidades;//Metrico o Imperial
int Herramienta;//Herramienta
int estado;//Estado de la maquina ON,OFF,ESPERA.

};



struct System_CNC Sistema;
He realizado una función para decodificar cada código, en ella se busca el cabezal del código que es la letra M o T o X, etc. Una vez echo esto miramos el parámetro numérico que se encuentra delante suyo. 

Con un switch decodificamos cada Comando, en el caso de los comandos M y G como cada uno tiene un significado he creado otra función para decodificarlos, simplemente es otro switch.
Aquí adjunto el código del programa con los archivos y el proyecto de codeblocks. También esta el .exe en bin por si queréis ejecutarlo en Windows, el fichero que uséis debe estar en la misma carpeta que el proyecto.
cnc_121214.zip
File Size: 23 kb
File Type: zip
Descargar archivo

Imagen
Programa ejecutándose en Windows 8.
También podéis pasar el proyecto entero a la raspberry y ejecutar el archivo .cbp que es el que contiene la información del proyecto. Pero para poder usarlo en la raspberry tenéis que darle a rebuild (flechas azules) en vez de a compilar, para que os elimine todo lo que tenga que ver con Windows. Obviamente la raspberry tarda bastante mas en compilar y también en ejecutar el programa.
Imagen
Codeblocks en raspberry Pi, la marca roja indica el rebuild.
Imagen
Ejecución del programa en la raspberry Pi.
Ahora vamos a probar otro archivo diferente a resistencias.drd, en este caso un cuadrado con los bordes de una placa. 
Imagen
borde.dim
File Size: 0 kb
File Type: dim
Descargar archivo

Su código es el siguiente:

G75*
G70*
%OFA0B0*%
%FSLAX24Y24*%
%IPPOS*%
%LPD*%
%AMOC8*
5,1,8,0,0,1.08239X$1,22.5*
%
%ADD10C,0.0160*%
D10*
X000180Y000180D02*
X000180Y019680D01*
X025180Y019680D01*
X025180Y000180D01*
X000180Y000180D01*
M02*


Imagen
Con tecnología de Crea tu propio sitio web único con plantillas personalizables.
  • Home
  • Raspberry Pi
    • Básico >
      • Primeros pasos
      • IP estática
      • Montar Pendrive
      • Escritorio remoto
      • Conexión Wifi
      • no-ip
    • Intermedio >
      • Openelec Xbmc
      • OwnCloud
      • Torrent
      • Parpadeo led
      • Xbee
    • Avanzado >
      • SPI con WiringPi
      • ADC
      • Control temperatura
      • Alarma con aviso por mail
    • Raspberry Pi Expansion Board >
      • Control temperatura
      • Alarma con aviso por mail
  • Arduino
    • Motor paso a paso
    • Servomotor
    • PWM
    • Sensor Infrarrojo
    • SPI
    • I2C
    • Relé y LDR
    • Mando Radiocontrol
  • Blog
    • Contacto
  • CNC
    • Material
    • Codigo Maquina >
      • Leer el fichero
      • Decodificar fichero
      • Entorno de usuario
    • Movimiento >
      • Recta a trozos
      • Taladrar o cortar
    • Estructura
    • Estructura(2º Version)
    • Modelo CAD 3D
  • Software
    • Qt
    • Eagle >
      • Instalación y primeros pasos eagle
      • Librerías
  • Utilidades
  • Laboratorio
    • Fuente alimentación >
      • Material
      • Montaje