Hola
El Kcam no es malo, cuando empecé fue con el primero que quise hacer algo, pero en mi PC no funcionaba, no se porque, seria por la mader o algo así, así que me pase al mach 2. El turbo CNC es un muy buen programa, es mas es el que uso ahora, no es muy lindo, ya que corre bajo MSDos, no simula ni te grafica las trayectoria. En mi caso tenia una 486 tirada, con 8Mb de ram y un disco de 1028Mb, suficiente para que corra el Turbo cnc, no tienen Windows ni nada, le cargué el MSDos y al prenderla ya carga directamente el Turbo CNC, la tengo conectada a la fresadora y la uso solo para correr los G-codes, de esta forma tengo la fresadora con esa PC en otra habitación, no me importa el polvillo y demás. Y en esta PC hago los G-codes los simulo y demás, cuando están listos los llevo en un diskete a la otra PC.
Para hacer una cuenta de 5 min es censillo, es una cuneta normal, ósea un bocle, no lo hago utilizando algun timer.
Lo que hacemos es dividir la cuenta, contar 5 minutos es lo mismo que contar 5 veces un minuto, y contar 1 minuto es lo miumo que contar 60 veces 1 seg.
Para contar un segundo, con un cristal de 4Mz(como el reloj interno de ese pic) se necesitan “dejar pasar” 1000000 cycles de programa. Eso es censillo y lo hacemos con solo 3 variables, el codico puede ser el siguiente:
;-------------------------------------------------------------
PDelay movlw .14 ; 1 set number of repetitions (C)
movwf PDel0 ; 1 |
PLoop0 movlw .72 ; 1 set number of repetitions (B)
movwf PDel1 ; 1 |
PLoop1 movlw .247 ; 1 set number of repetitions (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
decfsz PDel2, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (C)
goto PLoop0 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 clrwdt ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------
Code requirements
-----------------
- Declaration of PDel0 (register)
- Declaration of PDel1 (register)
- Declaration of PDel2 (register)
- 1 stack level
Example of use
call PDelay
;-------------------------------------------------------------
Ahora lo que hacemos es llamar esa subrutina 60 veces y tenemos 1 minuto, eso lo haceos con otro registro(llamamos la rutina de un segundo, incrementamos el contador nos fijamos si es igual a 60, si no es llamamos nuevamente la rutina de un segundo, incrementamos nos fijamos si es igual a 60 y así, también se puede hacer decrementando y fijándonos cuando llega a caro ya que es mas censillo, solo cuestión de testear el flanco Z, obviamente hay que cargar el valor 60 ante de empesar a decrementar) y finalmente contamos hasta 5 si queres con otra variable y ya conseguimos un retardo de 5 minutos. Y todo esto lo hemos hecho con solo 5 registros o variables.
Obviamente el pic esta solo evocado a eso, en uno e los bucles internos, el mas corto podríamos agregar el código que revisa los puertos si es que no se esta trabajando con interrupción, si trabajas con las int es solo mandarlo al bucle, si entre medio algo cambia de estado, solo sale del bucle va a atender dicha interrupción, haces lo que tenes que hacer que hacer y lo mandas a contar de nuevo.
Les adjunto el programita que use para calcular ese delay, de llama Pic Delayer.
Y aca les dejo unas fotos de un PCB que hice con mi fresadora:
E la esquina superior derecha no quedo muy bien, es que terminando se rompió la fresa. Ya hice una filiación en cuanto tenga el video acomodado lo subo.