Autor Tema: Modulo de expansion para Sable 2015  (Leído 78598 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Modulo de expansion para Sable 2015
« en: 14 de Febrero de 2011, 00:04:38 »
Buenas a todos!
Desde que tengo mi sable he querido que hiciera algunas cosillas mas de las que hace, pero por falta de tiempo nunca me pude poner a ello.
Ahora, no es que tuviera tiempo, pero me apetecia hacerlo, asi que pospuse algunas cosas y al fin termine mi pequeño anhelo  :mrgreen:



La "ampliacion" consta de:
-encendido del taladro con un rele, comandado automaticamente desde el mach
-control para una aspiradora
-control de velocidad del taladro desde el mach o con un potenciometro externo
-tacometro que muestra las RPM en mach
-el conjunto del control de la velocidad y el tacometro permiten un control PID de la velocidad desde mach
-limites y home switch para los 3 ejes
-auto tool zero (busca automaticamente el cero de la herramienta)
-dos entradas para usar como se quiera (para activar algo con un pulsado, para usar como entrada de señal, etc)
-una salida (para activar otro rele, una luz, etc... en mi caso sera para un LASER  :-/)
-luz para el boton de EStop, que esta encendida mientras la maquina este funcionando, y se apague cuando se pulsa el boton o el reset

Bueno, esas son las capacidades de la expansion, que son las que pude aprovechar con los pines no usados del puerto paralelo.
Pasare a explicar como hacer cada cosa.

Lo primero fue "preguntarme" para que servia el conector DB15 que trae la controladora (http://www.todopic.com.ar/foros/index.php?topic=29274.0)... y una vez intuido que seria para una expansion, tuve que buscar un esquema o alguna orientacion de que es cada pin... Por suerte encontre un esquema de nuestra controladora, donde viene todo lo que necesitaba saber!
Aqui encontraran el esquema: http://www.todopic.com.ar/foros/index.php?topic=29327.0
Esta es una descripcion de cada uno de los pines del DB15 y su correspondencia con el LPT

FuncionDB15LPT
Paso X12
Dir X23
Paso Y34
Dir Y45
Paso Z56
Dir Z67
Enabled todos los ejes716
Rele8-
Paso A91
Dir A1014
Enabled A11-
Señal para activar rele1217
Vcc13-
Entrada optoacoplada1415
Gnd15-

Con el esquema pude ver que la controladora esta preparada para recibir el paso y la direccion para un cuarto eje (A), pero no tiene la electronica para controlar un PaP, por eso esa señal que le llega por el LPT la envia al DB15. Yo no quise mantener la posibilidad de un cuarto eje, y por eso aproveche esas dos salidas, una para el control de velocidad por PWM y otra como salida para lo que quiera (un laser, en su momento).

Tambien se puede ver en el esquema que se puede conectar un rele, y tambien estan los pines para ello en el DB15. Con el rele doy los 220v a un enchufe para una aspiradora, y tambien alimento el triac que controla el taladro. El triac esta controlado con un pic 12F683. Mi placa contiene la electronica necesaria para detectar el cruce por cero de los 220v y sincronizar el disparo del triac para controlar la velocidad del taladro.
El codigo del PIC es este:

Código: C
  1. #include <12F683.h>
  2. #device adc=8
  3.  
  4. #FUSES WDT,NOMCLR,PUT,INTRC_IO,PROTECT
  5.  
  6. #use delay(clock=8000000)
  7. #use fast_io(a)
  8.  
  9. //GPIO
  10. #byte GP    =  0x05
  11.  
  12. //0b00011110
  13. //#bit DAT      = GP.0  //tambien se usa como Tx para debug
  14. //#bit CLK      = GP.1
  15. #bit CX0        = GP.2
  16. //#bit VPP      = GP.3
  17. #define ADC     3       //GP4/AN3
  18. #bit TRIAC      = GP.5
  19.  
  20. //#use rs232(baud=2400, xmit=PIN_A0)
  21.  
  22. //Constantes
  23. #define RES_ADC 255                     //resolucion del adc
  24. #define LIMINF  5                       //limite inferior de velocidad
  25. #define LIMSUP  250                     //limite superior de velocidad
  26.  
  27. //Variables
  28. short flagCX0 = FALSE;          //flag de cruce por cero
  29. int Velocidad = LIMINF; //velocidad actual del motor
  30. long VelocidadCCP = 0;          //cuando tiene que saltar la interrupcion CCP
  31. long Semiciclo = 0;                     //duracion del semiciclo
  32.  
  33. //Rutinas
  34. void CalcularVelocidad(void);
  35.  
  36. #int_EXT
  37. void INT_EXT_isr(void){
  38.         TRIAC = FALSE;                          //empieza semiciclo, apagar triac
  39.         Semiciclo = get_timer1();       //establece la duracion del semciclo
  40.         set_timer1(0);                          //restablece timer
  41.         flagCX0 = TRUE;                         //flag para leer ADC y calcular velocidad
  42. }
  43.  
  44. #int_CCP1
  45. void CCP1_isr(void){
  46.         TRIAC = TRUE;                           //encender triac, estamos en la intensidad deseada
  47. }
  48.  
  49. void main() {
  50.         setup_adc_ports(sAN3|VSS_VDD);
  51.         setup_adc(ADC_CLOCK_INTERNAL);
  52.         setup_timer_0(RTCC_INTERNAL);
  53.         setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
  54.         setup_timer_2(T2_DISABLED,0,1);
  55.         setup_wdt(WDT_18MS);
  56.         setup_ccp1(CCP_COMPARE_INT);
  57.         setup_comparator(NC_NC);
  58.         setup_vref(FALSE);
  59.  
  60.         enable_interrupts(INT_EXT);
  61.         enable_interrupts(INT_CCP1);
  62.         enable_interrupts(GLOBAL);
  63.  
  64.         setup_oscillator(OSC_8MHZ);
  65.         set_tris_a(0b00011110);
  66.         set_adc_channel(ADC);
  67.         ext_int_edge(0,L_TO_H); //configura INT para que solo se active a la subida
  68.        
  69.         TRIAC = FALSE;  //pwm apagado
  70.        
  71.         do{
  72.                 if(flagCX0 == TRUE){
  73.                         flagCX0 = FALSE;
  74.                         CalcularVelocidad();
  75.                 }
  76.         }while(TRUE);
  77.  
  78. }
  79. void CalcularVelocidad(void){
  80. long Step = 0;
  81.        
  82.         restart_wdt();          //reinicio el watchdog
  83.         Velocidad = read_adc(); //leo adc
  84.        
  85.         if(Velocidad < LIMINF)  //comprueba que la velocidad nunca sea inferior al limite
  86.                 Velocidad = LIMINF;
  87.         if(Velocidad > LIMSUP)  //comprueba que la velocidad nunca sea superior al limite
  88.                 Velocidad = LIMSUP;
  89.        
  90.         Step = Semiciclo / RES_ADC;
  91.         VelocidadCCP = Semiciclo - (Step * Velocidad);
  92.         CCP_1 = VelocidadCCP;
  93.  
  94. }

El pic lo que hace es medir el voltaje en uno de sus pins y convertirlo con el ADC. Segun el valor obtenido regula la velocidad del motor disparando el triac. Se puede seleccionar la fuente del voltaje a medir. Si queremos controlar la velocidad con un potenciometro (actuando como divisor de tension) o desde un PWM proveniente del mach. El PWM es una señal pulsante, que convertimos en un voltaje de 0 a 5v con un filtro RC.
La velocidad ya puede ser controlada desde el mach, pero hay que configurar el PID para que vaya fluido.
Links de interes sobre control PID de velocidad:
http://www.cjh.com.au/PWM%20Spindle%20Control%20using%20Mach3.pdf
http://www.vhipe.com/product-private/SuperPID.htm

El tacometro lo conecte a la entrada optoacoplada libre. Aqui se puede ver algo de informacion para hacer un tacometro: http://www.todopic.com.ar/foros/index.php?topic=29669.0

El pin de enabled "pone a la maquina a trabajar", y cuando apretamos el reset/Estop/limit switch el enabled se apaga. Yo lo aproveche y lo conecte a un transistor para iluminar mi boton de estop. Cuando el enabled esta activo el estop esta iluminado, en caso contrario se apaga.
El boton lo tienen en SeeedStudio y en SparkFun. Aqui explican como tunearlo: http://stuffandymakes.com/2011/01/08/hack-the-sparkfun-big-red-dome-button/

La sable tiene tambien una entrada de 5 pines donde se conectan los 3 limites y el estop. Yo conecte TODOS los limites (X, Y y Z) en la entrada del limite X, asi me ahorro dos entradas que puedo utilizar para otra cosa  :)
Una de ellas es un "auto tool zero" con la capacidad de centrar la maquina con precision en un punto deseado: http://www.cnczone.com/forums/mach_wizards_macros_addons/56079-xyz_probe_modification.html

Mas informacion sobre home y limit switches: http://www.esteca55.com/tuto-home&limit.html

ADVERTENCIA: en mi placa solo hay una entrada de LIMIT SWITCH pues todos los interruptores que uso son NORMALMENTE CERRADOS y estan conectados todos en SERIE. Cuando alguno se active abriria el circuito disparando el limite. Como comenta Esteca en su tutorial, es mejor poner los finales de carrera como normalmente cerrados para evitar interferencias.


A la caja le puse un conector para la toma de 220v, dos tomas shuko, una para el taladro y otra para la aspiradora. Un conector DB15, y un conector PS/2. El conector PS/2 es de 6 pines, y lo use para conectar el Estop y los limites X, Y y Z. En la parte superior, los conectores para los limites, asi como para las entradas son RCA. El conector del tacometro y el de la salida son jack estereo de 3,5mm.
La caja la grabe con la CNC y luego le aplique unas pinturas que son como cera para llenar los huecos:





y asi queda acabada:


Hay que configurar el mach para que reconozca las nuevas entradas, el tacometro, la salida, el rele, y la regulacion de velocidad, asi como todos los limit switch en el mismo canal.
Esta es mi configuracion:










En Function Cfg's>Calibrate Spindle hay una utilidad para calibrar el control PID.
Para hacerlo funcionar primero hay que activar la CNC con el boton RESET y luego entrar en esa pantalla.
Si pulsamos el boton Spindle On/Off, logicamente encenderemos o apagaremos el rele del motor.
En las casillas P, I y D se pueden ir probando los valores deseados, en la casilla Control RPM pondremos la velocidad que queremos alcanzar. Cada vez que modifiquemos algo debemos pulsar el boton de UPDATE PID para que se refleje el cambio.
Los valores PID que utilice son validos para mi taladro, y aunque no son perfectos, me doy por satisfecho. Aqui se ve una grafica de como el motor alcanza la velocidad deseada:



Solo queda decir que estoy muy contento con esta nueva ampliacion, y que pronto habra mas. Como decia antes, el laser es inminente, y tambien un panel de control externo con joystick y unos cuantos botones para poder operar la maquina con mayor facilidad, todo por USB.

Os dejo los archivos de eagle con el esquema y la pcb. Podeis modificar a gusto siempre y cuando, si haceis alguna mejora teneis la obligacion de comentarla  ;-)

Espero que alguien le saque provecho, ya que cada vez somos mas los poseedores de una Sable!

Edito:
15/2/11: actualizado el codigo del PIC, le puse un watchdog por las dudas
1/3/11: agregadas las pantallas de configuracion para el mach3, actualizada PCB
« Última modificación: 01 de Marzo de 2011, 08:39:29 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Modulo de expansion para Sable 2015
« Respuesta #1 en: 14 de Febrero de 2011, 00:23:04 »
 :-/ :-/ que envidia os tengo  :D :D pues te ha quedado de padre,  y eso que nunca tiene tiempo  :D :D



Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Modulo de expansion para Sable 2015
« Respuesta #2 en: 14 de Febrero de 2011, 02:41:29 »
Joe macho, menudo gusto que te has dado, y menuda putada que me has hecho. Ya los tenía altos, pero has conseguido que mis niveles de envidia superen la barrera de lo soportable.

Ha quedado de dulce, precioso, con una estética totalmente profesional.
Me apunto el truco ese de la cera de relleno porque es sencillamente genial. ¿Esa pintura después de aplicada se endurece y no mancha?

Enhorabuena querido mago, es un trabajo digno de un Goya.

Desconectado Dani27v

  • PIC12
  • **
  • Mensajes: 73
Re: Modulo de expansion para Sable 2015
« Respuesta #3 en: 14 de Febrero de 2011, 10:02:18 »
Muchas gracias Marttyn !!!!  Mas tenga un poco de tiempo me pongo a preparlo todo.

Un saludo,

Dani

p.d. ¿Has probado a fresar la pcb o lo has echo por el metodo convencional de insolado?
« Última modificación: 14 de Febrero de 2011, 10:09:03 por Dani27v »

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Modulo de expansion para Sable 2015
« Respuesta #4 en: 14 de Febrero de 2011, 10:15:02 »
Bueno, subi la PCB que por lo visto se me habia olvidado.

Noc, las ceras esas son solidas, pero a base de frotar contra el grabado se ablanda un poco y se mete en la hendidura. Despues de un rato vuelve a endurecer, pero yo por las dudas puse un adhesivo transparente por encima para que no se ensucie ni manche... por las dudas... las ceras las compre aqui: http://www.cnc-plus.de/product_info.php/info/p1121_marking-sticks.html

Si te gusta pero no tienes tiempo te recomiendo que prescindas de todo lo demas, pero al menos ponle en control de velocidad PID y el rele. Seguro que con esa pequeña modificacion estaras mas que contento!!!
Eso si, no me hago cargo de tu envidia cuando le ponga un laser y tu no tengas una salida para poder controlarlo :D
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Modulo de expansion para Sable 2015
« Respuesta #5 en: 14 de Febrero de 2011, 12:35:38 »
Pues voy a comprar las ceras esas, que me ha encantado el descubrimiento.
He descargado el RAR pero sólo contiene el esquema.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Modulo de expansion para Sable 2015
« Respuesta #6 en: 14 de Febrero de 2011, 12:50:09 »
Ya solucione lo de la PCB.
Lo de las ceras no es mala idea, siempre y cuando no uses mas de un color... yo use tres, y la verdad fue un suplicio! Los textos estaban muy juntos, y tuve que enmascarar lo que no queria pintar, pero al final lo teñia igualmente... Sobre todo, porque no lo pense demasiado y primero puse la cera blanca, luego la roja y despues la negra... y el problema fue que la roja se me teñia con el negro, y la blanca se me ponia rosa :S

Ah, el autotoolzero es otra herramienta IMPRESCINDIBLEEE! te lo recomiendo
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Modulo de expansion para Sable 2015
« Respuesta #7 en: 14 de Febrero de 2011, 12:58:05 »
¿Y el autotoolzero lo has comprado o lo has hecho?

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Modulo de expansion para Sable 2015
« Respuesta #8 en: 14 de Febrero de 2011, 13:04:07 »
Lo hice lo hice, of course!
Es muy facilito http://www.cnczone.com/forums/mach_wizards_macros_addons/56079-xyz_probe_modification.html
Solo necesitas una entrada libre, que bien puede ser uno de los limit switches si los pones todos en uno, asi te quedaran 2 libres.
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Modulo de expansion para Sable 2015
« Respuesta #9 en: 15 de Febrero de 2011, 17:06:06 »
Actualice el codigo del PIC, le puse un watchdog, que incomprensiblemente a veces se me colgaba... esperemos que esto lo solucione :)
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Modulo de expansion para Sable 2015
« Respuesta #10 en: 19 de Febrero de 2011, 07:31:51 »
mu guapo :mrgreen: te ha quedao pro
solo una preguntilla, veo la salida para controlar el moc que maneja el triac, en GP5. tambien la entrada para seleccionar la velocidad, con el pote o desde el mach con un jumper, GP4. y la entrada con el cruze por cero en GP2 usando un PS2505. pero... ¿como sabe el pic, a que velocidad va el trompo? ¿con control PID quiere decir que el control de la velocidad es por soft?

un saludo

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Modulo de expansion para Sable 2015
« Respuesta #11 en: 19 de Febrero de 2011, 10:18:31 »
Si, el control PID lo hace el mach, yo le envio la señal del tacometro y el envia un PWM proporcional a la velocidad a alcanzar, que con un filtro RC convierto en un voltaje y lo leo con el ADC.
Al encargarse el mach del control PID simplifico el programa del PIC :)
Ademas, por las pruebas que pude hacer funciona muy bien!
« Última modificación: 19 de Febrero de 2011, 10:26:31 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Modulo de expansion para Sable 2015
« Respuesta #12 en: 19 de Febrero de 2011, 11:43:55 »
 :shock: :shock: no sabia que el mach podia regular con el tacometro el pwm del trompo, control PID con trampas :mrgreen: habrá que hacer unas pruebecitas

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Modulo de expansion para Sable 2015
« Respuesta #13 en: 19 de Febrero de 2011, 12:08:18 »
si entras en "config>port and pins>spindle setup" podras ver que puedes configurar la frecuencia del PWM, el duty minimo, e incluso los valores de P, I y D. Las pruebas que hice funciono genial... Pero me cargue el triac y hasta que no lo cambie y haga unas pruebas mas no voy a poder mostraros los avances...
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Modulo de expansion para Sable 2015
« Respuesta #14 en: 19 de Febrero de 2011, 13:30:23 »
si te sirve de algo yo estoy usando estos tg25c60 que no he conseguido cargarme ni uno


 

anything