Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print
ELETRÔNICA / ELÉTRICA => Eletrônica Básica => Microcontroladores => Tópico iniciado por: Angelo Farinhas em 13 de Dezembro de 2014, 23:30
-
Boa noite
Meu nome e Ângelo, já fiz uma CNC em madeira a alguns anos atras e postei aqui no fórum algumas fotos, agora estou terminando uma de alumínio com área útil de 400 x 300mm mais para PCI e peças em acrilico e polimeros.
Mas no momento estou abrindo o topico pois tenho algumas dificuldades com Microcontrolador PIC, sinceramente não entendo nada de programação e peço a ajuda dos amigos do fórum que possam me ajudar.
Procurando na net encontrei uma pessoa que fez o desenho do hardware e o softer, segundo ele fez no Proteus, testei no Proteus e ate funcionou, mas na hora de gravar no PIC, grava mas não funciona.
Tentei entrar em contato com quem fez mas não tive retorno.
Ja procurei ajuda em outros foruns e na net, mas não encontro quem possa me ajudar, no fórum do clube do hardware, eles responderam alguma duvidas e me deram algumas dicas e orientações, mas não funcionou.
Preciso da ajuda aqui do fórum ou de quem possa me ajudar ja to a quase 8 meses tentando resolver esse problema, estou montando este circuito para um brinquedo to fazendo para umas crianças.
A ideia do circuito e simples para quem entende de programação, e foi feito de forma simples e com poucos componentes .
A ideia e a seguinte.
Um circuito com PIC sem cristal, escolhido o PIC16F628A,
Utilizando dois botões normalmente abertos pulsado, UP e DOWN ( Frente e Trás)
Alimentado com 4,5 ou 9 v ,
Aciona 10 leds de 1W
Apertando o botão UP acende o led 1
Apertando o botão UP acende o led 2 e apaga o 1
Apertando o botão UP acende o led 3 e apaga o 2 e assim por diante.
Caso eu esteja com o led 7 acesso e quero voltar ao led 4
Aperto o botão DOWN e acende o led 6 apaga o led 7
Aperto o botão DOWN acende o led 5 apaga o led 6
Aperto o botão DOWN acende o led 4 apaga o led 5 e assim por diante.
Em anexo o desenho
Abaixo o programa que foi feito, so tenho isso sei que falta os fuzers e mais algumas coisas mas não sei como fazer.
/*
Projeto: Leds
MCU: PIC16F628A
CLOCK: INTOSC 4MHz
Compilador: MikroC PRO for PIC
*/
unsigned Saida at PORTA;
sbit Right at PORTA.B0;
sbit Left at PORTA.B1;
char flags = 0;
void main()
{
CMCON = 7;
TRISB = 0;
TRISA = 0;
TRISA.B0 = 1;
TRISA.B1 = 1;
Saida = 0x8000; //Max: 0x8000, Min: 0x0040
while(1)
{
if( Left ) flags.B0 = 1;
if( !Left && flags.B0 )
{
flags.B0 = 0;
if( Saida < 0x8000 )
{
Saida <<= 1;
}
}
if( Right ) flags.B1 = 1;
if( !Right && flags.B1 )
{
flags.B1 = 0;
if( Saida > 0x0040 )
{
Saida >>= 1;
}
}
}
}
Obrigado pela ajuda
Abraços
Angelo
-
Esse teu programa possui alguns erros, para começar:
(1) Você quer acionar 10 LEDs, mas a variável "Saída" está associada apenas à porta A, que possui 8 bits e portanto, poderia acionar apenas 8 LEDs (um LED associado a cada bit da porta).
(2) Em seu circuito, 8 LEDs estão ligados a porta B e dois LEDs à porta A. Isso está incompatível com seu programa. Em outras palavras, seu programa está incompatível com seu hardware. Não entendi como este programa poderia funcionar no Proteus. Não seria outro programa? Ou outro circuito? ...
(3) Seu programa não dispõe de um artifício de debouncing (evitar os múltiplos acionamentos de um botão), usando por exemplo um temporizador, ...
(4) Não estou acostumado com esse Mikro C, mas acho que estão faltando parâmetros de inicialização para definir uso do clock interno (RC), entre outros parâmetros do PIC (inibir watchdog, interrupção, ...).
Eu usava mais o "assembly" do PIC com o aplicativo de desenvolvimento (IDE) da Microchip. Atualmente tenho usado o Arduíno.
-
minilathe
Obrigado pela resposta.
Pelo que descreveu, seria melhor então refazer tudo novamente?
Pode me ajudar?
-
Como o programa é muito simples e o grau de mudanças é elevado (em relação a este programa como é atualmente), resulta em ter que consertar e refazer praticamente tudo e inclusive acrescentar um temporizador em alguns pontos do programa, ....
Dá para tentar consertar, se eu fizer, vai consumir alguns HH e ainda terei de instalar um compilador C, um assembler, simulador do PIC, ... Ou posso ir te ajudando (se é que você sabe o que estará fazendo).
-
Olá Angelob
Qual a intenção real deste dispositivo?, tem que ser 10 leds? vc poderia usar mais componentes na placa, exemplo instalar um conversor ABCD ou algumas portas AND. quanto a lógica realmente seu código ficou meio complicado usando um carri a esquerda ou a direita. ideal seria uma variável sendo incrementada ou decrementada subindo ou descendo o valor desejado. geralmente uso o MPLAB e PIC CCS. para compilação.
-
Minilathe.
Se puder me ajudar na parte do programa e circuito eu agradeço já tenho tudo instalado no computador, e a parte eletrônica eu refaço.
Paulo Lumens
Se puder me ajudar, sua ajuda será bem vinda
A idéia e fazer um tipo brinquedo para crianças com deficiência de uma entidade que ajudo.
A idéia inicial era usar 8 leds, mas não lembro o por que foi para 10 leds.
Se for complicado usar 10, pode ser com 8 sem problemas.
Quanto ao programa quem fez foi uma pessoa que conheci na net que se propôs a ajudar e fazer o programa e o circuito, testei ele e montei, mas nada funciona.
Pode ser modificado.
Quanto a colocar mais componentes pode sim sem problemas.
Pelo que vi e melhor começar do ZERO.
-
Olá Angelob
talvez isto te ajude, dei uma modificada em um programa que eu tinha aqui.
//**********************************************************************
// programa desenvolvido por Paulo Furlan p/ guia CNC 12/2014
//**********************************************************************
#include <16f628A.h>
#use delay(clock=4000000)
#fuses HS,NOWDT,PUT,NOLVP
signed long int t0_conta,leds;
char tcl;
static boolean led;
static int conta;
boolean tecla_pres;
//*****************************************************************
#int_timer0
void trata_t0 ()
{
// reinicia o timer 0 em 131 menos a contagem que já passou
set_timer0(131-get_timer0());
conta++;
// se já ocorreram 125 interrupções
if (conta == 125)
{
conta=0;
led = !led; // inverte o led
output_bit (pin_a4,led);//RA4 LED TIMER
}
}
/*
********Entradas*******************
PIN_A0***Botão S1
PIN_A1***Botão S2
*********Saidas*******************
PIN_B0***led1
PIN_B1***led2
PIN_B2***led3
PIN_B3***led4
PIN_B4***led5
PIN_B5***led6
PIN_B6***led7
PIN_B7***led8
*/
//*********************************************************************
char varre_teclas (void)
// verifica se alguma tecla está pressionada
{
if (!input(pin_a0)) return('1'); // verifica a tecla S1 Incrementa
if (!input(pin_a1)) return('2'); // verifica a tecla S2 Decrementa
// se nenhuma tecla está pressionada, desliga o flag
// tecla_pres e retorna o valor 0
tecla_pres = 0;
return (0);
}
//******************************************************************************
char teclas (void)
// Rotina principal de verificação do teclado
// Verifica se é uma nova tecla e filtra ruídos
{
int t;
t = varre_teclas(); // verifica se há tecla
if ((t) && (!tecla_pres))
// se há tecla e o flag está apagado
{
tecla_pres = 1; // ativa o flag
if (t != tcl)
// se a tecla atual é diferente da tecla
// anterior
{
// filtra o ruido de contato
delay_ms (50); // aguarda 50ms
// lê novamente as tecla e verifica
// se a mesma tecla ainda está pressionada
// caso positivo, retorna a tecla
if (varre_teclas() == t) return (t);
}
}
return (0); // se não há tecla, retorna 0
}
//*************************************************
main()
{
SET_TRIS_A(0x03);
SET_TRIS_B(0x00);
output_B(0x00);
t0_conta = 2500;
setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_64 );
set_timer0(131); // inicia o timer 0 em 131
enable_interrupts (global | int_timer0);
tcl = 0; // limpa a tecla atual
tecla_pres = 0; // desliga o flag de tecla pressionada
while(true) // espera interrupção
{
tcl=teclas(); // verifica se há tecla pressionada
if (tecla_pres)
// caso exista tecla pressionada*********************************************************************
{
// verifica se é a tecla é maior que 0****************************************************************
switch (tcl) // verifica a tecla
{
case '1' : if(leds<8)
{
leds=leds+1; //incrementa variavel
}
else
{
leds=leds;
}
break;
case '2' : if(leds>0)
{
leds=leds-1;//decrementa variavel
}
else
{
leds=leds;
}
break;
default :
break;
}
}
delay_ms(10);
switch (leds) // converte binario para seguencial na saída
{
case 0x00 :
output_b(0x00); //saída
break;
case 0x01 :
output_b(0x01); //saída 1
break;
case 0x02 :
output_b(0x03); //saída 2
break;
case 0x03 :
output_b(0x07); //saída 3
break;
case 0x04 :
output_b(0x0F); //saída 4
break;
case 0x05 :
output_b(0x1F); //saída 5
break;
case 0x06 :
output_b(0x3F); //saída 6
break;
case 0x07 :
output_b(0x7F); //saída 7
break;
case 0x08 :
output_b(0xFF); //saída 8
break;
default :
break;
}
}
}
Estou enviando um arquivo do Proteus para simulação, o programa fou compilado no MPLAB e PIC CCS, qualquer duvida fala ai
-
Paulo
Obrigado pela ajuda, vou testar no Proteus e depois no MPlab.
Você tem o programa em arquivo
Abraços
Angelo
-
Fiz uma versão um pouco mais compacta, o circuito é o proposto inicialmente, com 10 Leds e entradas em PA_0 e PA_1
/*
* File: main.c
* Author: Gil Pinheiro
*
* Created on 16 de Dezembro de 2014, 22:54
*/
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
typedef unsigned int uint16;
typedef unsigned char uint8;
uint16 Contador=1;
#define Direita RA0
#define Esquerda RA1
void temporiza(void);
/*
*
*/
int main(int argc, char** argv) {
TRISB = 0x0; // Todos os bits da porta B são saídas
TRISA = 0x3F; // Os bits 6 e 7 da porta A são saídas e de 0 a 5 entradas
PORTA = 0x3F; // Habilita resistores de pull-up nas entradas
for(;;) // Loop eterno
{
if (Direita==0)
{
temporiza();
while (Direita==0);
if (Contador > 1) Contador >>= 1;
}
if (Esquerda==0)
{
temporiza();
while (Esquerda==0);
if (Contador < 0x100) Contador <<= 1;
}
PORTB = (uint8)Contador;
PORTA = (uint8)(Contador >> 2) || 0x03F;
}
return (0);
}
void temporiza(void)
{
uint16 a,b;
for(a=0;a<0xffff;a++)
for(b=0;b<0xff;b++);
}
-
Segue programa no formato .hex (roda no Proteus).
:02000000FA2FD5
:100F300001340034F001F101FF307106031DA22FCE
:100F4000FF30700603190800F201F301003073024C
:100F5000FF30031972020318BA2F0130F207031889
:100F6000F30A0030F30700307302FF3003197202F6
:100F7000031CAD2F0130F0070318F10A0030F10710
:100F80009C2F8316031386013F3085003F30831268
:100F9000031385000518DF2F9A2783120313051CFE
:100FA000CD2F00307A02023003197902031CDF2FA3
:100FB00001300310FA0CF90CFF3E031DD92F8518E0
:100FC000F42F9A2783120313851CE22F01307A0233
:100FD0000030031979020318F42F01300310F90DC2
:100FE000FA0DFF3E031DEE2F79088600F801F80A7E
:100FF0007808C92F9827F9009927FA008301C12F93
:00000001FF
-
Melhorei um pouco a temporização para facilitar o manuseio por crianças (temporização mais lenta para melhor interação).
/*
* File: main.c
* Author: Gil Pinheiro
* IDE/Compiler: MPLAB-X / XC8 (Microchip)
* Created on 16 de Dezembro de 2014, 22:54
*/
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
typedef unsigned int uint16;
typedef unsigned char uint8;
uint16 Contador=1;
#define Direita RA0
#define Esquerda RA1
void temporiza( uint16 );
/*
*
*/
void main( void ) {
TRISB = 0x0; // Todos os bits da porta B são saídas
TRISA = 0x3F; // Os bits 6 e 7 da porta A são saídas e de 0 a 5 entradas
PORTA = 0x3F; // Habilita resistores de pull-up nas entradas
for(;;) // Loop eterno
{
if (Direita == 0)
{
temporiza( 0x1 ); // Temporiza para evitar bouncing
if(Direita == 0)
{
while (Direita == 0);
if (Contador > 1) Contador >>= 1;
}
}
if (Esquerda == 0)
{
temporiza( 0x1 ); // Temporiza para evitar bouncing
if(Esquerda == 0)
{
while (Esquerda == 0);
if (Contador < 0x100) Contador <<= 1;
}
}
PORTB = (uint8)Contador;
PORTA = (uint8)(Contador >> 2) || 0x03F;
temporiza( 0xFF ); // Temporiza para tornar interface mais amigável
}
}
void temporiza( uint16 i )
{
uint16 a,b;
for(a = 0; a < 0xffff; a++)
for(b = i; b > 0; b--);
}
Formato HEX:
:02000000FA2FD5
:100F0C0001340034F201F301FF307306031D902FFE
:100F1C00FF307206031908007108F501F507700817
:100F2C00F401F407750874040319A62F0130F402B8
:100F3C000030031CF503F50275087404031D9C2F87
:100F4C000130F2070318F30A0030F3078A2F8316D7
:100F5C00031386013F3085003F3083120313850055
:100F6C00831203130518D32F0130F0000030F10069
:100F7C008827831203130518D32F051CC32F0030A9
:100F8C007802023003197702031CD32F01300310AF
:100F9C00F80CF70CFF3E031DCD2F8518EE2F0130FA
:100FAC00F0000030F1008827831203138518EE2F10
:100FBC00851CDE2F013078020030031977020318EC
:100FCC00EE2F01300310F70DF80DFF3E031DE82F37
:100FDC0077088600F601F60A76088500FF30F000E7
:100FEC000030F1008827B62F8627F7008727F800F6
:040FFC008301AD2F91
:00000001FF
-
Mestre é mestre, código compacto com deslocamento esq. dir. é isso ai mestre Minilathe, vou vivendo e aprendendo..
-
Minilathe
Obrigado pela ajuda, vou simular no proteus, uma pergunta quanto aos fuses, pode me informar como colocar eles.
Obrigado.
-
Sua intenção é que seja um produto para comercialização?
-
Olá
Não tenho intenção de comercializar ou vender, é só para as crianças com paralisia cerebral brincar com algo diferente nada mais, já fiz outras coisas inclusive recortes de dinos na cnc que tinha feito, para montarem, (alguns ate montão e são bem inteligentes) entre outras coisa usando som e lus.
Também fiz dinos para montar, para crianças com câncer de uma entidade que ajuda a as famílias e as crianças, ai era muitos........dinos, mas e tudo valido, recortei 100 chapas de mdf 3mm e gastei 200 fresas e 3 tupias em um pouco mais de dois anos.
Tudo em um quarto do meu apartamento que transformei em minha oficina, a patroa que ficava brava com o pó.............Mas parei concordo não da para fazer isso em um apartamento e muita sujeira. Então to fazendo coisas mais simples e com pouca sujeira.
Minha intensão e fazer 5 peças ja fiz uma parte na cnc, tinha feito antes 5, mas usando CI 4017, mas dava muito problemas pois quando queriam voltar a cor, tinha ir ate chegar nela e alguns abandonavam e ate jogaram no chão e acabava quebrando, alem de ter uma forma um pouco pesada e meio desajeitada esta que estou fazendo e mais pratica. Ela e circular menor e feita em mdf de 3 mm, com espessura final de 30 mm e diâmetro de 200 mm com bordas lixadas e arredondadas, e mais fácil de segurar menos peso e roda, a parte eletrônica vou proteger envolvida em silicone e a parte do mdf sera pintada e protegida vai mergulhar na água, e tem que durar pelo menos de 3 a 6 meses. os outros nem chegaram durar 1 mês.... se for bem aceita e durar faço mais 5. Mas se não for aprovado, volto para a prancheta e crio outra coisa.
Conversando com alguns amigos chegamos a conclusão que se for para frente e para trás eles gostem mais, pois de alguma forma isso prende a atenção deles, (cada um tem seu gosto para cor, uma ou mais depende da cada um), de alguma forma parece trazer certas mudanças de comportamento, uma certa alegria incomum, não sei explicar.
Eu que banco todo gasto com material fresas eletrônica etc, por isso demora um pouco a ser concretizado e prefiro assim pois faço de coração e por que eu quero, conto com a ajuda intelectual de amigos, sem nada de dinheiro só o meu, pois sei que quando entra dinheiro em algo deste tipo, só da problemas.
Se algum amigo quer ajudar financeiramente, peço que procure uma entidade e ajude diretamente, so quero ajuda intelectual.
Pelo menos é uma ajuda e contribuição que eu posso dar a quem precisa de tão pouco, mesmo que seja pequena já é alguma coisa.
-
parabéns pela iniciativa! pena eu não entender nada de programação, senão eu ajudaria!
-
Acho muito válido ajudar quem realmente precisa, iniciativas desse tipo tem meu apoio.
Por outro lado, não gosto de ajudar a fazer algo para proveito e lucro individual às minhas custas.
-
...é só para as crianças com paralisia cerebral brincar com algo diferente nada mais, já fiz outras coisas inclusive recortes de dinos na cnc que tinha feito, para montarem, (alguns ate montão e são bem inteligentes) entre outras coisa usando som e lus...
Parabéns, Ângelo, esse tipo de ajuda é importante para as crianças e gratificante para quem faz.
Se der, põe fotos desses brinquedos aí, pra gente ver.
Abraço.
Jorge
-
Olá Angelob. eu tbm ajudo uma instituição de reabilitação mental, voltado as crianças, já doei alguns trabalhos meus para um bingo que realizam mensalmente, decidi ajudar pela iniciativa sua, porem a proposta do mestre Minilathe é melhor que a minha, mas sugiro que teste abas, e execute aquela que melhor lhe convém, quanto a confecção das plaquinha qual é o processo que vc utiliza??
ps: me passe seu email para lhe enviar todos os arquivos, que usei aqui.
Abrs.
-
Boa noite
Jorge _ Bh
Obrigado pelo incentivo e muito gratificante sim aprendi sob CNC e fiz a primeira em madeira conforme as fotos que postei aqui com essa intenção, mas ela já se desfez faz um tempo cheia de folgas, não aguentou o tranco, fiz outra de alumínio logo posto fotos dela aqui que já trabalhou bastante, mesmo estando incompleta.
Assim que tiver pelo menos um feito coloco as fotos sim. Abraços
andresinho obrigado.
Paulo_lumens, passo o e-mail por mensagem privada, obrigado.
Minilathe, entendo sua posição sei que muita gente se aproveita da boa vontade dos outros, nunca se sabe quem e quem, mas mesmo assim agradeço pela ajuda que deu obrigado.
-
Paulo
Eu faço a placa no proteus ou no PCB Wizard 3, Tango 2000, mas gost muito do Orcad 9.1, mas uso conforme o que vou fazer.
depois imprimo o desenho do pcb em impressora laser HP P1005 que tenho so para isso, com ela imprimo duas ou 3 vz ate ficar bem escuro.
Um dia vendo um site de radioamador fiz uma laminadora usando peças de uma impressora , e mais facil que passar a ferrro, e passo o desenho para a pcb depois que esfriou bem.
Em um reservatorio com água, tem uma bombinha de aquário que puxa a água do reservatório, no qual tem uma resistência e um controle de temperatura que fiz com um NTC, a água e aquecida ate uma temperatura de ate 40 graus mas mantenho com 25, que no meu caso tem tido bom resultado,
Essa água e levada pela bombinha aquecida para outro reservatório no qual esta apoiado em um sistema mecânico no qual um motor fica balançando o reservatório, este motor e controlado por um circuito no qual posso aumentar ou diminuir a velocidade, desta forma aumento ou diminuo o movimento da água aquecida dentro do reservatório, este reservatório para manter a temperatura da água coloquei isopor em volta com uma camada de fita adesiva envolvendo tudo.
Obs. o reservatório onde fica a resistência deve ser isolado para manter a temperatura usando isopor e fita adesiva larga, ou outra forma.
A água fica com temperatura boa e coloco o pcb com o papel dentro e com pouco tempo esta decolado o papel do pcb e o desenho esta intacto, caso aconteça alguma falha e só corrigir com caneta de retroprojetor. O segredo e não ter pressa mas em ate 30 minutos uma placa de tamanho A4 esta descolada do papel.
Tenho um parecido para usar com percloreto, mas a forma de levar o percloreto do reservatório de baixo para a bandeja fiz usando o mesmo sistema das bombas peristálticas, que comprei em uma loja que realiza manutenção em equipamentos odontológicos, essas bombas são usadas em aparelhos de profi, marcas gnatus ou usado em maquinas de recarga de cartuchos HP etc, vende com motor e compre as mangueira para ela de silicone ( neste link tem a foto http://produto.mercadolivre.com.br/MLB-587444285-bomba-peristaltica-1mlseg-12v-dc-_JM (http://produto.mercadolivre.com.br/MLB-587444285-bomba-peristaltica-1mlseg-12v-dc-_JM) ), o percloreto e corrosivo então verifique as mangueiras periodicamente e quando não for usar segue água para lavar as mangueiras, a temperatura tem que ser ajustada e se quiser pode fazer um circuito para regular a velocidade do motor da bomba ela funciona com 24 vcc 400ma, fácil fazer um ckt.
ja fiz placas usando sistema fotográfico, mas e muito complicado e trabalhoso e para pouca coisas nem vale a pena mas para quantidade vale. depende do que quer fazer.
Tentei fazer com a CNC que fiz esta de alumínio, mas ficou horrivelllllll comprei as fresas para gravação com angulo de 30 1mm, 30, 4mm, 90 2mm, 60 3mm
mas sabe não dei sorte as trilhas eram destruídas, ai desisti, bem que gostaria de tentar novamente mas estou sem coragem.
Bem espero poder ter ajudado.
Abraços
-
Eu faço plaquinhas assim: Imprimo na impressora laser HP. (basta uma vez, qualidade normal, tonner original). papel comum. Da pra usar papel couche para ter trilhas mais bem definidas.
Lixo a placa com lixa fina ( grão 300 ou 400). NÃO use bombril ou similar NUNCA pois fica polida e o tonner não gruda.
Uso ferro de passar, mas entre o ferro e o papel coloco duas ou tres camadas de tecido comum de algodão ( um lençol velho). Deixo uns 10 a 15 segundos pressionado.
Deixo esfriar e retiro o papel com água e sabão. se ficar fiapos de papel, lave novamente. Corrosão normal com percloreto um pouco aquecido.
O processo de impressão na placa e retirada do papel não leva mais de dois minutos!
-
Se quiser testar o programa que eu fiz é só marcar o arquivo .hex que enviei anteriormente, copiar e salvar o conteúdo num arquivo texto. Este arquivo deverá ser inserido no simulador Proteus (no modelo do PIC16F628A) - não são necessários outros arquivos para simular no Proteus.
Este mesmo arquivo .hex pode ser utilizado para gravar o PIC16F628A.
O arquivo com o programa fonte você também já tem, é só marcar o código que eu postei, copiar e salvar como um arquivo .c (programa fonte em linguagem C).
Alguma dúvida?
-
... fiz outra de alumínio logo posto fotos dela aqui que já trabalhou bastante, mesmo estando incompleta...
Só uma pergunta; porque não usa a cnc pra fazer as plaquinhas de circuito impresso, ao invés de usar todo esse sistema trabalhoso com impressão, corrosão, etc?
Abç.
Jorge
-
Também uso a impressora laser para placas com muitas trilha finas, para placas com poucas trilhas e mais grossas faço na cnc, para furação tenho usado a cnc.
-
Com um pouco de prática, garanto que em 2 minutos fica pronta usando o ferro de passar roupa.( contando o tempo de ir pegar o ferro de passar roupas :) ) Com um índice de acerto de 90%.
O único porém, é o tamanho máximo de placa que eu consigo, em torno de 10 x 15cm. Para tamanhos maiores eu acho problemático pois fica um pouco fora de escala
-
Boa noite
Minilathe vou colocar a extensão .c e .hex e testar.
Jorge_BH
Não uso a CNC para fazer a Placa de circuito impresso depois em varias tentativas frustrantes, perder algumas placas de PCI, quebrar duas fresas, desisti. As trilhas eram destruídas durante o fresamento, e diverso erros aconteciam, tentei varias vz mas acabei desistindo. estra fresadora de alumínio era para ser usada para fazer placas de circuito e usar para fazer paineis etc em acrílico pvc, polímeros etc por isso falei que esta incompleta pois queria fazer varias coisas nela colocar encode que tava desenvolvendo, utilizando disco com códigos cheguei ate a fazer disco com três tipos de incremental, absoluto e gray, encontrei ate um programa que ajuda a crias os discos. A ideia era de fazer para usar na minha cnc em conjunto com o march3 ou adaptar para uso com outros programas, ia colocar o projeto aqui para os amigos que tem CNC montarem e usar nas suas maquinas, ia ate ficar legal poder ver num display os posicionamentos.
tava usando o PCITOGCODE e ate conversei com o autor por e-mail, desculpe me esqueci do nome dele, para sanar algumas duvidas e problemas que tava encontrando, mas o problema era o seguinte a fresa fazia uma trilha seus contornos, depois ia fazer uma outra do lado da que estava feita ai que complicava ela acabava destruindo a que tava feita, usava so para comer o cobre, usava fresa de gravação e ate v cut de 30 graus com 0,5 mm, 1mm, 2mm, entre outras, a fresa no caso era certa pois entre trilhas deixava ate 4mm de distancia então ela comia 1mm de cada trilha sobrava 2mm mas isso não acontecia.
Ai vc pensa o problema esta na fresadora, pensei isso, passei 4 meses ajustando ela antes de começar a usar.
a repetividade era de 0,01 de erro medido com micrometro digital. fiz ela desenhar numa chapa de aluminio com 4mm de espessura diversos quadrados começando de dentro sendo o primeiro com 40mm x 40mm e depois os outros obedecendo a seguinte medidas de distancias uma da outra 1mm, 1,5mm, 2mm, 3mm, 4mm, 5mm 10mm, 10mm, 5mm, 5mm depois círculos com as mesmas distancias, esse riscos com 1mm de profundidades spindler desligada só a fresa riscando o alumínio, isso para não ter a duvida sera que o motor esta com problema?
O resultado foi o esperado erro de 0,01mm em cada um, este erro para o que eu quero esta excelente não preciso de maior precisão.
Mas ate agora placa de circuito nada kkkkkkk
Mas to tomando coragem para tentar novamente, tava pensando em tratar uma placa de circuito impresso como se foce uma gravura, desbasto o que não interessa e mantenho o que interessa, mas acho que vai ser um processo muito demorado não sei ai fica mais fácil fazer com o andresinho falou.
Abraços.
-
Testei o programa no Proteus e corrigi alguns erros, segue versão testada.
Arquivo fonte:
/*
* File: main.c
* Author: Gil Pinheiro
* IDE/Compiler: MPLAB-X / XC8 (Microchip)
* Created on 16 de Dezembro de 2014, 22:54
*/
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
typedef unsigned int uint16;
typedef unsigned char uint8;
uint16 Contador=1;
#define Direita RA1
#define Esquerda RA0
void temporiza( uint16 );
/*
*
*/
void main( void ) {
TRISB = 0x0; // Todos os bits da porta B são saídas
TRISA = 0x03; // Os bits 0 e 1 da porta A são entradas e de 2 a 7 saídas
for(;;) // Loop eterno
{
if (Direita == 0)
{
temporiza( 0x1 ); // Temporiza para evitar bouncing
if(Direita == 0)
{
while (Direita == 0);
if (Contador > 1) Contador >>= 1;
}
}
if (Esquerda == 0)
{
temporiza( 0x1 ); // Temporiza para evitar bouncing
if(Esquerda == 0)
{
while (Esquerda == 0);
if (Contador < 0x0200) Contador <<= 1;
}
}
PORTB = (uint8)~Contador;
RA3 = ~(Contador>>8) & 1;
RA4 = ~(Contador>>9) & 1;
//temporiza( 0x0FF ); // Temporiza para tornar interface mais amigável
}
}
void temporiza( uint16 i )
{
uint16 a,b;
for(a = 0; a < 0x00ff; a++)
for(b = i; b > 0; b--);
}
Arquivo HEX:
:02000000FA2FD5
:100EE20001340034F201F30100307302FF300319C0
:100EF2007202031808007108F501F5077008F40181
:100F0200F407750874040319902F0130F4020030BD
:100F1200031CF503F50275087404031D862F0130C6
:100F2200F2070318F30A0030F307752F8316031331
:100F320086010330850083128518B82F0130F00036
:100F42000030F1007327831203138518B82F851C14
:100F5200A82F00307902023003197802031CB82F3F
:100F620001300310F90CF80CFF3E031DB22F0518D7
:100F7200D32F0130F0000030F100732783120313E6
:100F82000518D32F051CC32F023079020030031934
:100F920078020318D32F01300310F80DF90DFF3E2C
:100FA200031DCD2F780986007908F7007808F6002E
:100FB2007708F600F7017618E22F831203138515DE
:100FC200E52F8312031385117908F7007808F600DC
:100FD20009300310F70CF60CFF3E031DEA2F7618BA
:100FE200F62F8312031305169C2F83120313051287
:0E0FF2009C2F7127F8007227F9008301972FBA
:00000001FF
-
Novo diagrama elétrico que utilizei no Proteus.
-
Gil Pinheiro obrigado, tava testando no proteus no sábado e tava dando erro, como tive que sair parei, ia ver na segunda o que tava acontecendo e postar, segunda testo com esse.
-
Olá Gil Pinheiro .
Sei que este tópico já tem bastante tempo !
Estava fazendo uma pesquisa na internet para um circuito que, com duas teclas, selecionasse alguns relés. Já tinha pesquisado a possibilidade de usar um CI como o SN74192 , para desenvolver um circuito pra usar aqui em casa.
Achei muito interessante quando vi esse tópico, principalmente na ideia do amigo Angelob de ajudar crianças com deficiência. Não é todo dia que se encontra pessoas assim prontas para ajudar o próximo.
Esse seu último que você atualizou, montei aqui no Proteus e consegui rodar muito bem com o arquivo em hex.
Gostaria de uma ajuda. Como sou muito principiante em programação C, fiz um básico mas uso esporadicamente, então tenho bastante dúvida.
Qual compilador usou para gerar o arquivo hex ? No caso desse projeto, está usando oscilador interno do PIC ? Eu uso o PIC C Compiler da CCS.
Vi no projeto, que tem que apertar a tecla toda vez para aumentar ou diminuir de nível. Teria como fazer uma modificação para quando manter a tecla pressionada por um longo tempo, os níveis mudariam constante num intervalo de pelo menos 500ms ?
Eu ficaria muito agradecido se pudesse me ajudar. Desde já agradeço atenção.
Att, Sandro Cavalcanti
-
Bom dia.
Eu usei assembler, como sempre fazia com o PIC, pois tem pouca memória e eu sempre procurei otimizar meus códigos em espaço de memória e tempo de execução. Faz tempo que não uso o PIC. Já troquei até de computador duas vezes, mas, devo ter um back-up.
-
Obrigado pela atenção.
Ficarei no aguardo .