Bordas elípticas da placa no KiCAD ou CircuitPro?


11

Estou tentando usar o KiCAD para projetar uma PCB que deve caber em um gabinete existente. Um lado do PCB precisa ser modelado como um segmento de arco elíptico específico. Eu posso descobrir os parâmetros da elipse desejada, mas não vejo como realmente desenhar um corte de borda no KiCAD.

Isso é possível no KiCAD ou estou usando o software errado para isso? A placa será feita no LPKF ProtoMat, então usarei o software CircuitPro para criar as instruções finais para a plotadora (ainda não sei como isso funciona).

Portanto, minhas perguntas são se devo pensar no design da forma da placa no KiCAD ou deixar para uma etapa posterior?

Obrigado.


Isso é possível com o KiCad e eu já criei esses esboços antes. Agora estou no celular, mas posso escrever uma resposta quando estiver disponível.
abdullah kahraman

@abdullahkahraman: Eu apreciaria sua visão.
Val Blant

Respostas:


25

Eu acho que um exemplo vale um milhão de palavras, então eu queria fazer um tutorial sobre isso.

Aqui está a caixa para a qual vou criar um esboço:

insira a descrição da imagem aqui

Aqui está um exemplo de desenho de PCB da folha de dados da caixa:

insira a descrição da imagem aqui

Após abrir o Pcbnew, selecione a camada para as arestas. Na versão atual do KiCad (BZR4008), é chamado "Edge.Cuts". Primeiro, vou desenhar as arestas superior e inferior, que são 62 mm. Em seguida, as bordas esquerda e direita, que são 32 mm. Estou usando a ferramenta abaixo, que possui uma dica de ferramenta "Adicionar linha gráfica ou polígono".

insira a descrição da imagem aqui

Agora que está tudo bem, posso desenhar as outras formas:

insira a descrição da imagem aqui

Aqui está a ferramenta que vamos usar para isso:

insira a descrição da imagem aqui

Esta ferramenta é basicamente um círculo parcial. Para usá-lo, clique no ponto que será o centro do seu círculo e, com o mouse, você definirá o raio com uma ajuda visual do KiCad. Uma coisa muito útil é mudar o cursor para que ele mostre as coordenadas completas, com o botão mostrado abaixo:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Apenas por uma questão de exemplo, vamos fazer a borda virada para fora:

insira a descrição da imagem aqui

Infelizmente, você não pode fazer elipses corretas com esse método. Você precisa usar a incorporação gráfica ou os métodos de aproximação para isso, mencionados por Nick Alexeev.


4

A graça salvadora do KiCad, na minha opinião, é que os arquivos que ele cria são legíveis por humanos e o formato do arquivo é razoavelmente bem documentado. As coordenadas X e Y são especificadas em dez milésimos de polegada, com referência a (0,0) no canto superior esquerdo. Um esboço do quadro pode ser representado por segmentos de linha e arcos semicirculares.

É simples manipular os arquivos .brd do Kicad usando a linguagem de script de sua escolha (por exemplo, Python). Se eu fosse você, provavelmente escreveria um script que calcula os segmentos de linha por partes para aproximar seu contorno elíptico e gravar os segmentos de linha em seu arquivo .brd.


Foi exatamente isso que acabei fazendo. Obrigado Rob! Vou postar uma descrição completa da solução daqui a pouco.
Val Blant

4

Levei alguns dias para digerir todas essas informações, mas terminei com duas soluções para esse problema. Vou descrever as duas soluções aqui.

Gostaria de agradecer a Lorenzo e Rob Gilliom, do fórum kicad-users, que me forneceram todas as idéias e informações necessárias para reunir as soluções abaixo ( http://tech.groups.yahoo.com/ group / kicad-users / message / 15220 ).

= Opção 1 =

Se você deseja importar um único segmento elíptico e projetar o restante do quadro no KiCAD, esse script Ruby é provavelmente o caminho mais fácil:

#
# Generates an ellipse for Kicad. You have to copy the 
# generated lines into an existing template inside a .kicad_pcb file
#

Xo = 200.0
Yo = 150.0
MAJOR = 60.0
MINOR = 40.0
N = 256 # Number of points on the ellipse

TEMPLATE = "(gr_line (start %.2f %.2f) (end %.2f %.2f) (layer Edge.Cuts) (width 0.15))\n"

step = Math::PI * 2 / N
points = Array.new

# Calculate coordinates for all N points
(0..N).each {|s|
  x = Xo + MAJOR * Math::cos(step * s)
  y = Yo - MINOR * Math::sin(step * s)
  points << [x, y]
}

# For each pair of points, print a gr_line
points.each_cons(2) { |line| 
  printf(TEMPLATE, line[0][0], line[0][1], line[1][0], line[1][1])
}

Para usar esse script, salve um .kicad_pcbarquivo em branco no Kicad e insira as linhas geradas por esse script após a última seção antes da chave de fechamento.

Abra o novo arquivo de quadro no KiCAD e aproveite sua elipse interpolada por segmentos de linha :). Usar 256 pontos torna a elipse tão suave que você não pode dizer que consiste em linhas no KiCAD.

Se você deseja apenas uma parte da elipse (uma borda da sua PCB, por exemplo), é trivial adicionar uma caixa delimitadora ao script acima e descartar todos os pontos que estão fora da caixa.


= Opção 2 =

Outra abordagem seria projetar sua placa inteiramente no Inkscape (ou qualquer outra coisa que possa exportar gráficos vetoriais) e encontrar uma maneira de importá-la para o KiCAD.

Lorenzo forneceu uma solução que pode ir do Inkscape para o Gerber aqui: http://tech.groups.yahoo.com/group/kicad-users/message/15229

Eu fui capaz de desenvolver a solução de Lorenzo para criar um script Ruby que ignora o estágio Gerber e gera diretamente as linhas de arquivo da placa KiCAD.

O processo é assim:

  1. Crie sua prancha no Inkscape
  2. Exportar para HPGL
  3. Converta HPGL para GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. Gere linhas de arquivo da placa: gpt2pcbnew file.hpgl.gpt

Aqui está a fonte do gpt2pcbnewscript:

#
# Convert a GPT file created by hp2xx to Pcbnew gr_lines
#

# That's the line we'll write into the board file
TEMPLATE = "(gr_line (start %.5f %.5f) (end %.5f %.5f) (layer Edge.Cuts) (width 0.15))\n"


gpt_file = ARGV.shift

segments = Array.new

File.open(gpt_file, "r") do |file|
  # Start a new segment
  segment = Array.new 

  while (line = file.gets)
    unless ( line.strip! =~ /^#/ ) # Skip comments
      if ( line =~ /([0-9.]+) *([0-9.]+)/ )
        # Found coordinates. Save this point in the current segment
        #
        segment << line.split
      else
        # No numbers on a line means that we are done drawing the segment,
        # so we need to "lift up the pen" and move to the next segment
        #

        # Add current segment to the list of segments
        segments << segment unless segment.empty?

        # Start a new segment
        segment = Array.new
      end
    end
  end

  # Add the last segment we read
  segments << segment unless segment.empty?
end


# Print out gr_lines for all the segments
segments.each { |segment|  
  # For each pair of points print a line
  segment.each_cons(2) { |line| 
    printf(TEMPLATE, line[0][0], "-#{line[0][1]}", line[1][0], "-#{line[1][1]}")
  }  
}

Assim como na Opção 1, as linhas geradas entram em um arquivo de quadro em branco salvo no KiCAD.

Essa solução aproveita o fato de o formato HPGL ser muito semelhante em sua construção aos arquivos Gerber, no sentido de que é uma série de coordenadas com "caneta para cima" ou "caneta para baixo", o que corresponde aos códigos D01 e D02 no Gerber.

Portanto, todo o trabalho árduo de converter splines de bezier em segmentos de linha é feito pelo Inkscape nesse caso.

= Limitações da opção 2 =

Existem algumas limitações nessa abordagem:

  1. Parece que o Inkscape não pode exportar retângulos para o HPGL. Obviamente, você pode contornar isso construindo seus próprios retângulos.
  2. No momento, não consigo acertar os tamanhos dos objetos exportados. Os objetos terminam com o dobro do tamanho do KiCAD. Estarei trabalhando em uma solução para isso em breve.

3

Eu tive um problema semelhante com o Kicad há algum tempo, ele já tem suporte limitado para formas fora do padrão ou simplesmente não está bem documentado. O que acabei fazendo foi desenhar minha forma (pad não padrão no meu caso) com o Gimp e convertê-la em um módulo usando a ferramenta incorporada. Abri esse arquivo de módulo e alterei a camada para as de cobre. Abra-o novamente no Kicad e você terá formas fora do padrão de sua escolha em qualquer camada. Não é o ideal, mas funciona.


Passos:

  1. Crie um desenho no Gimp
  2. Use o bitmap2component incluído no Kicad para convertê-lo em um componente
  3. Abra o módulo no gedit / notepad e edite as informações da camada de acordo com o seguinte documento (Seção 3.4):

https://bazaar.launchpad.net/~kicad-developers/kicad/doc/view/head:/doc/help/file_formats/file_formats.pdf

4.Salve as alterações e abra o módulo no Pcbnew

Resultados (não foi possível pensar em outra maneira de fazer uma aresta circular não coberta pela máscara de solda, na verdade, é um bloco SMD com componentes dentro):

insira a descrição da imagem aqui


Hmm - isso parece uma abordagem interessante, mas não sei o que você quer dizer com "abriu este arquivo de módulo e alterou a camada para as camadas de cobre". Eu pensei que as almofadas têm uma camada de destino, ao invés do próprio módulo. Você poderia expandir um pouco a maneira como passa de um módulo da forma desejada para um desenho real na camada de sua escolha? Obrigado!
Val Blant

Resposta atualizada.
S3c

1
Você pode criar uma aresta circular apenas pela ferramenta Círculo. Como a área já está preenchida com cobre, é possível remover a máscara de solda desenhando um círculo, mas desta vez na camada Máscara frontal.
abdullah kahraman

Essa é uma sugestão muito boa, eu queria um módulo que pudesse ser rapidamente dividido em vários projetos, mas acho que ambos funcionariam. +1
s3c

1

Trabalhei com o OrCAD, Eagle, Altium. Não trabalhou com o KiCAD. Portanto, o seguinte é um palpite.

Normalmente, os programas de layout têm funções para desenhar arcos circulares, mas não têm a função integrada para desenhar elipses. Você pode aproximar uma elipse com arcos circulares ( mais aqui ). Você também pode desenhar uma elipse com um programa de desenho e tentar importar um DXF para o programa de layout (não sabe o quão bem o KiCAD pode suportar isso).

No final, a fábrica de PCB provavelmente aproximará as curvas com polígonos de qualquer maneira.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.