
Não gosto de gravar placas de circuito impresso. Bem, eu não gosto do processo de mexer com cloreto férrico. Imprima aqui, ferro aqui, exponha o fotorresistente - a história toda sempre. E então pense sobre onde drenar o cloreto férrico. Eu não discuto, este é um método acessível e simples, mas pessoalmente eu tento evitá-lo. E então minha felicidade aconteceu: completei o roteador CNC. Imediatamente surgiu o pensamento: mas não se deve tentar fresar placas de circuito impresso. Mal disse o que fez. Pego um adaptador simples de um esp-wroom-02 sobrecarregado e começo minha excursão no fresamento de placas de circuito impresso. Faixas especialmente pequenas - 0,5 mm. Pois se isso não der certo, então o que é essa tecnologia?
Aqui você precisa de uma pequena digressão. Existem várias maneiras de obter um conjunto de códigos g para fresar uma placa de circuito impresso do cad. Na minha opinião, eles diferem dependendo do sistema CAD que você usa. Se você é um fã da Eagle, existem soluções especializadas e bem integradas: PCB-GCode , a capacidade de abrir diretamente arquivos BRD no chilipeppr. Infelizmente, não faz muito tempo, a Autodesk mudou a política de licenciamento da águia e agora a comunidade não gosta muito (você pode ver a opinião de um representante importante da comunidade ).
Como eu pessoalmente faço placas de circuito impresso a cada cinco anos nos principais feriados, o KiCAD é suficiente para eu projetar. Não encontrei soluções convenientes especializadas para isso, mas existe uma maneira mais universal: usar arquivos gerber. Nesse caso, tudo é relativamente simples: pegue pcb, exporte a camada desejada para o gerber (sem espelhamento e outras magias!), Execute pcb2gcode - e obtenha um arquivo nc pronto para ser entregue à fresa. Como sempre, a realidade é uma infecção maligna e tudo se torna um pouco mais complicado.
Obtendo gcode de arquivos gerber
Portanto, não pretendo descrever como obter um arquivo gerber, acho que todo mundo sabe como. Em seguida, você precisa executar o pcb2gcode. Acontece que requer cerca de um milhão de opções de linha de comando para produzir algo aceitável. Em princípio, a documentação dele não é ruim, eu a dominei e descobri como obter algum tipo de código de código mesmo assim, mas ainda queria casualidade. Porque a GUI do pcb2gcode foi encontrada. Essa, como o nome sugere, é uma GUI para definir parâmetros básicos do pcb2gcode com marcas de seleção e até mesmo com uma visualização.

Na verdade, nesta fase, algum tipo de código é recebido e você pode tentar fazer o fresamento. Mas enquanto eu olhava as marcas de verificação, o valor padrão da profundidade que esse software oferece é de 0,05 mm. Consequentemente, a placa deve ser instalada no roteador pelo menos com uma precisão maior que isso. Não sei como é que alguém tem isso, mas tenho uma mesa com um moinho que é visivelmente mais curvado. A solução mais simples que veio à mente foi colocar contraplacado sacrificial sobre a mesa, fresando um bolso com o tamanho das tábuas - e estaria idealmente no plano da fresa.
Para quem já possui um bom comando do roteador, essa parte é desinteressante. Após algumas experiências, descobri que é necessário fresar um bolso em uma direção (por exemplo, alimentando-o com um dente) e com uma sobreposição de pelo menos trinta por cento. O Fusion 360 me ofereceu pouco demais e dirigia para frente e para trás. No meu caso, o resultado foi insatisfatório.
Contabilizando a curvatura do PCB
Alinhando o site, colei nele uma fita dupla face, coloquei o textolite e comecei a moer. Aqui está o resultado:

Como você pode ver, em uma extremidade da placa, o cortador praticamente não toca em cobre, na outra - ele foi muito profundo na placa, enquanto as migalhas de PCB foram fresadas. Olhando atentamente para o próprio quadro, notei que ele era inicialmente irregular: levemente curvado e, não importa como você sofra, haverá alguns desvios de altura. A propósito, observei e descobri que, para placas de circuito impresso com espessura superior a 0,8 mm, uma tolerância de ± 8% é considerada normal.
A primeira opção que vem à mente é a calibração automática. De acordo com a lógica das coisas - o que é ainda mais fácil, a placa é revestida de cobre, o cortador é de aço, anexa uma fiação ao cobre e a outra ao cortador - aqui você tem uma sonda pronta. Pegue e construa a superfície.
Minha máquina é controlada pelo grbl em um escudo chinês barato. O Grbl tem suporte de ponta de prova no pino A5, mas por algum motivo não há um conector especial na minha placa. Depois de examiná-lo cuidadosamente, descobri que o pino A5 é enviado para o conector da porta SPI (assinado como SCL). Há um truque com esse "sensor" - os fios precisam ser torcidos juntos. Na fresa, é extremamente fácil de pegar e, sem isso, o sensor sempre fornecerá falsos positivos. Mesmo após a tecelagem, ele continuará, mas muito, muito raramente.

Portanto, o sensor é montado, testado pelo testador, e a questão importante é como verificar no grbl se tudo está em ordem e não quebrarei um único gravador. Um pouco de pesquisa no Google mostrou que ele precisava enviar ao time G38.2 Z-10 F5.
A equipe diz: comece a descer para –10 em Z (altura absoluta ou relativa - depende do modo em que o firmware está agora). Descerá muito lentamente - a uma velocidade de 5 mm / min. Isso ocorre porque os próprios desenvolvedores não garantem que a descida pare exatamente no momento em que o sensor for acionado, e não um pouco mais tarde. Portanto, é melhor descer devagar, para que tudo pare no horário e não tenha tempo para embarcar, para não brincar. É melhor realizar o primeiro teste, levantando a cabeça a uma altura bem acima de 10 mm e largando o sistema de coordenadas. Nesse caso, mesmo que tudo não funcione e você não tenha tempo para acessar o botão de parada de emergência, a fresa não irá constipar. Você pode realizar dois testes: o primeiro - para não fazer nada (e ao atingir –10 grbl dará "Alarme: falha na sonda"), o segundo - enquanto estiver inativo, feche o circuito com alguma coisa e verifique se tudo pára.
Em seguida, você precisa encontrar um método sobre como realmente medir a matriz e distorcer o gcode conforme necessário. À primeira vista, o pcb2gcode possui algum tipo de suporte para autoleveling, mas não há suporte para grbl. Há a oportunidade de pedir à equipe que faça o teste com as mãos, mas você precisa lidar com isso e, para ser sincero, eu estava com preguiça. Uma mente indagadora pode perceber que, com o LinuxCNC, o comando de execução de amostra corresponde ao comando grbl. Mas então vem a diferença irreparável: todos os intérpretes gcode "adultos" salvam o resultado do teste em uma variável de máquina e o grbl simplesmente gera o valor para a porta.
Uma pesquisa leve sugeriu que ainda havia algumas opções diferentes, mas o projeto chillpeppr chamou minha atenção:
Este é um sistema de dois componentes projetado para brincar com o ferro da web. O primeiro componente - Serial JSON Server, escrito em go, é executado em uma máquina conectada diretamente ao hardware e pode controlar a porta serial via soquetes da web. O segundo funciona no seu navegador. Eles têm uma estrutura inteira para criar widgets com algumas funcionalidades, que podem ser enviadas para a página. Em particular, eles já têm um espaço de trabalho pronto (um conjunto de widgets) para grbl e tinyg.
E o chillpeppr tem suporte para autoleveling. Além disso, na aparência, é muito mais conveniente que o UniversalGcodeSender, que eu usei antes. Coloquei o servidor, inicio a parte do navegador, passo meia hora tentando descobrir a interface, carrego o código g da minha placa lá e vejo algum lixo:

Tendo analisado o próprio gcode que o pcb2gcode gera, vejo que ele usa notação quando o comando (G1) não é repetido nas linhas subseqüentes, mas apenas novas coordenadas são fornecidas:
G00 X1.84843 Y34.97110 ( rapid move to begin. ) F100.00000 G01 Z-0.12000 G04 P0 ( dwell for no time -- G64 should not smooth over this point ) F200.00000 X1.84843 Y34.97110 X2.64622 Y34.17332 X2.69481 Y34.11185 X2.73962 Y34.00364 X2.74876 Y31.85178 X3.01828 Y31.84988 X3.06946 Y31.82249 X3.09684 Y31.77131
A julgar pelo fato de o chilipeppr mostrar apenas movimentos verticais, ele vê a linha G01 Z-0.12 aqui, mas não entende tudo o que vem depois da F200. Precisa refazer a notação explícita. Obviamente, você pode trabalhar com as mãos ou arquivar algum script de pós-processamento. Mas ninguém ainda cancelou o G-Code Ripper , que, entre outras coisas, pode vencer comandos complexos do gcode (como os mesmos arcos) em comandos mais simples. A propósito, ele também sabe como dobrar o gcode na matriz de verificação automática, mas, novamente, não há suporte interno para o grbl. Mas você pode fazer a mesma divisão. As configurações padrão me agradaram bastante (a menos que na configuração eu tivesse que mudar as unidades para mm com antecedência). O arquivo resultante começou a ser exibido normalmente no chilipeppr:

Em seguida, execute a detecção automática, não esquecendo de especificar a distância a partir da qual diminuir a amostra e sua profundidade. No meu caso, eu indiquei que ele deveria ser baixado de 1 para –2 mm. O limite inferior não é tão importante, pode ser definido em pelo menos –10, mas eu não recomendaria: algumas vezes defini, sem sucesso, o ponto de partida para iniciar o teste, e os pontos extremos estavam fora do quadro. Se a profundidade for maior, o gravador poderá ser quebrado. E então, apenas um erro. O nível do limite superior depende diretamente de quanto tempo medirá a superfície. No meu caso, na realidade, a placa quase nunca ultrapassou 0,25 mm para cima ou para baixo, mas 1 mm é de alguma forma mais confiável. Clique na corrida estimada e corra para o roteador para meditar:

E na interface chilipeppr, uma superfície ligeiramente medida aparece:

Aqui é necessário prestar atenção que todos os valores em Z são multiplicados por 50, para melhor visualizar a superfície resultante. Este é um parâmetro personalizado, mas 10 e 50 funcionam bem na minha opinião. Muitas vezes me deparo com o fato de que um único ponto é muito maior do que você poderia esperar dele. Pessoalmente, atribuo isso ao fato de o sensor pegar a ponta e fornecer um falso positivo. Os benefícios do chilipeppr permitem descarregar o mapa de altura na forma de json, você pode corrigi-lo com as mãos depois disso e carregá-lo com as mãos. Em seguida, clique no botão "Enviar GCode com nível automático para área de trabalho" - e o código corrigido já está carregado no pepper:
N40 G1 X 2.6948 Y 34.1118 Z0.1047 (al new z) N41 G1 X 2.7396 Y 34.0036 Z0.1057 (al new z) N42 G1 X 2.7488 Y 31.8518 Z0.1077 (al new z) N43 G1 X 3.0183 Y 31.8499 Z0.1127 (al new z) N44 G1 X 3.0695 Y 31.8225 Z0.1137 (al new z) N45 G1 X 3.0968 Y 31.7713 Z0.1142 (al new z)
Os movimentos do código Z foram adicionados ao código, o que deve compensar a rugosidade da superfície.
Seleção de parâmetros de fresamento
Começo a fresar, recebo este resultado:

Aqui você pode ver três pontos ao mesmo tempo:
- O problema com a rugosidade da superfície se foi: tudo é cortado (mais precisamente, arranhado) até quase a mesma profundidade, não há lacunas em nenhum lugar e em nenhum lugar foi muito profundo.
- Profundidade insuficiente: 0,05 mm claramente não é suficiente para esta película. As placas, aliás, são uma fera desconhecida no AliExpress, a espessura do cobre não foi indicada lá. A camada de cobre é diferente, a mais comum - de 18 a 140 mícrons (0,018-0,14 mm).
- O espancamento do gravador é claramente visível.
Sobre o aprofundamento. É fácil perceber até que ponto o gravador precisa ser abaixado. Mas há uma especificidade. O gravador cônico tem uma forma de triângulo na projeção. Por um lado, o ângulo de informação em relação ao ponto de trabalho determina o quão difícil é quebrar a ferramenta e por quanto tempo ela vai durar. Por outro lado, quanto maior o ângulo, maior o corte em uma determinada profundidade.

A fórmula para calcular a largura de corte para uma determinada profundidade é semelhante a esta (imodestamente tirada de reprap.org e fixa):
2 * penetration depth * tangens (tool tip angle) + tip width
Consideramos isso: para um gravador com um ângulo de 10 graus e um ponto de contato de 0,1 mm com profundidade de 0,1 mm, obtemos uma largura de corte de quase 0,15 mm. Com base nisso, a propósito, podemos estimar qual distância mínima entre as faixas fará o gravador selecionado na folha da espessura selecionada. Bem e ainda, mesmo que você não precise de distâncias muito pequenas entre as faixas, ainda não vale a pena abaixar o cortador muito fundo, pois os cortadores de fibra de vidro são muito bruscos, mesmo a partir de ligas duras.
Bem, ainda há um momento engraçado. Suponha que tenhamos duas faixas com 0,5 mm de distância. Quando executamos o pcb2gcode, ele analisará o valor do parâmetro de deslocamento do caminho da ferramenta (quanto se desviar da pista ao fresar) e fará duas passagens entre as trilhas, separadas por (0,5 - 2 * toolpath_offset) mm, entre elas permanecerão (mas sim apenas quebre) um pedaço de cobre, e será feio. Se toolpath_offset for maior que a distância entre as trilhas, pcb2gcode emitirá um aviso, mas gerará apenas uma linha entre as trilhas. Em geral, para minhas aplicações, esse comportamento é mais preferível, já que as faixas são mais largas, o cortador corta menos - a beleza. É verdade que pode haver um problema com os componentes smd, mas é improvável.
Há um caso pronunciado desse comportamento: se você definir um toolpath_offset muito grande, obteremos uma placa de circuito impresso em vista do diagrama de Voronoi. Pelo menos - é lindo;) Você pode ver o efeito na primeira captura de tela do pcb2gcode que eu dei. Mostra como ficará.
Agora, sobre o espancamento do gravador. É assim que eu os chamo em vão. O eixo não é ruim e, é claro, não bate tão forte. Aqui, na verdade, a ponta do gravador, quando se move, se dobra e pula entre pontos, dando aqui essa imagem estranha com pontos. A primeira e principal idéia é que a fábrica não tenha tempo de cortar e, portanto, salte. A pesquisa fácil mostrou que as pessoas usavam placas de circuito impresso com um eixo a 50 mil rotações a uma velocidade de cerca de 1000 mm / min. Meu fuso dá 10k sem carga, e podemos assumir que é necessário cortar a uma velocidade de 200 mm / min.
Resultados e Conclusão
Levando tudo isso em consideração, meço uma nova peça de PCB, inicio a fresagem e obtenho esse resultado:

A de cima é exatamente a mesma que saiu da fresa, a de baixo - depois de segurá-la com uma pedra de amolar comum algumas vezes. Como você pode ver, em três lugares as faixas não foram cortadas. Em geral, a largura das faixas flutua por todo o painel. Isso ainda precisa ser resolvido, mas suponho qual é o motivo. No começo, fixei o quadro em uma fita dupla face e ela partia com frequência. Então, em alguns lugares, agarrei as bordas das cabeças dos parafusos. Parece ficar melhor, mas ainda brinca um pouco. Suspeito que, no momento da moagem, ele seja pressionado no local e, por isso, de fato, não seja cortado.

Em geral, tudo isso tem perspectivas. Quando o processo é concluído, a construção do DEM leva cerca de cinco a sete minutos, e a moagem em si leva alguns minutos. Parece que você pode experimentar ainda mais. Mas então você pode perfurar na mesma máquina. Ainda compre rebites, e haverá felicidade! Se o tópico for interessante, posso escrever outro artigo sobre perfuração, painéis bilaterais etc.