Bordi ellittici della scheda in KiCAD o CircuitPro?


11

Sto cercando di usare KiCAD per progettare un PCB che deve adattarsi a un caso esistente. Un lato del PCB deve essere modellato come un segmento di arco ellittico specifico. Riesco a capire i parametri dell'ellisse desiderata, ma non vedo come disegnare effettivamente un tale taglio di bordi in KiCAD.

Questo è possibile in KiCAD o sto usando il software sbagliato per questo? La scheda sarà realizzata su ProtoMat LPKF, quindi userò il software CircuitPro per creare le istruzioni finali per il plotter (non so ancora come funziona).

Quindi la mia domanda è se dovrei pensare al design della forma della tavola in KiCAD o lasciarla fino a un passaggio successivo?

Grazie.


Questo è possibile con KiCad e in precedenza ho creato tali profili di bordo. Sono su cellulare ora, tuttavia posso scrivere una risposta quando sono disponibile.
Abdullah Kahraman

@abdullahkahraman: apprezzerei la tua intuizione.
Val Blant,

Risposte:


25

Penso che un esempio valga un milione di parole, quindi volevo fare un tutorial su questo.

Ecco la scatola per la quale creerò uno schema per:

inserisci qui la descrizione dell'immagine

Ecco un esempio di disegno PCB dal foglio dati della scatola:

inserisci qui la descrizione dell'immagine

Dopo aver aperto Pcbnew, selezionare il livello per i bordi. Nella versione attuale di KiCad (BZR4008), si chiama "Edge.Cuts". Innanzitutto, disegnerò i bordi superiore e inferiore, che sono 62 mm. Quindi i bordi sinistro e destro, che sono 32 mm. Sto usando lo strumento di seguito che ha una descrizione di "Aggiungi linea grafica o poligono".

inserisci qui la descrizione dell'immagine

Ora che tutto va bene, posso disegnare le altre forme:

inserisci qui la descrizione dell'immagine

Ecco lo strumento che useremo per questo:

inserisci qui la descrizione dell'immagine

Questo strumento è fondamentalmente un cerchio parziale. Per usarlo, fai clic sul punto che sarà il centro del tuo cerchio, quindi con il mouse imposterai il raggio con un aiuto visivo del KiCad. Una cosa molto utile è cambiare il cursore in modo che mostri le coordinate complete, con il pulsante mostrato sotto:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Solo a titolo di esempio, facciamo il bordo rivolto verso l'esterno:

inserisci qui la descrizione dell'immagine

Purtroppo non è possibile effettuare ellissi corrette con questo metodo. Devi usare l'incorporamento grafico, o i metodi di approssimazione per quello, che sono stati menzionati da Nick Alexeev.


4

La grazia salvifica di KiCad, secondo me, è che i file che crea sono leggibili dall'uomo e il formato del file è ragionevolmente ben documentato. Le coordinate X e Y sono specificate in decimilionesimi di pollice, con riferimento a (0,0) in alto a sinistra. Un contorno della tavola può essere rappresentato da segmenti di linea e archi semicircolari.

È semplice manipolare i file .brd di Kicad usando il tuo linguaggio di scripting preferito (ad es. Python). Se fossi in te, probabilmente scriverei uno script che calcola i segmenti di linea a tratti per approssimare il tuo contorno ellittico e scrivere i segmenti di linea nel tuo file .brd.


Questo è esattamente quello che ho finito per fare. Grazie Rob! Invierò un po 'una descrizione completa della soluzione.
Val Blant,

4

Mi ci sono voluti un paio di giorni per digerire tutte queste informazioni, ma ho concluso con 2 soluzioni a questo problema. Descriverò entrambe le soluzioni qui.

Vorrei ringraziare Lorenzo e Rob Gilliom dal forum degli utenti di kicad, che mi hanno fornito tutte le idee e le informazioni di cui avevo bisogno per mettere insieme le soluzioni di seguito ( http://tech.groups.yahoo.com/ group / kicad-users / message / 15220 ).

= Opzione 1 =

Se vuoi importare un singolo segmento ellittico e progettare il resto della tavola in KiCAD, allora questo script Ruby è probabilmente il modo più semplice per andare:

#
# 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])
}

Per utilizzare questo script, salva un .kicad_pcbfile vuoto in Kicad e inserisci le righe generate da questo script dopo l'ultima sezione prima del controvento di chiusura.

Apri il nuovo file della scheda in KiCAD e goditi la tua ellisse interpolata dai segmenti di linea :). L'uso di 256 punti rende l'ellisse così fluida che non si può dire che è composta da linee in KiCAD.

Se vuoi solo una parte dell'ellisse (un bordo del tuo PCB, per esempio), è banale aggiungere un rettangolo di selezione allo script sopra e scartare tutti i punti che si trovano al di fuori del riquadro.


= Opzione 2 =

Un altro approccio sarebbe quello di progettare la tua tavola interamente in Inkscape (o qualsiasi altra cosa che possa esportare grafica vettoriale) e trovare un modo per importarla in KiCAD.

Lorenzo ha fornito una soluzione che può andare da Inkscape a Gerber qui: http://tech.groups.yahoo.com/group/kicad-users/message/15229

Sono stato quindi in grado di basarmi sulla soluzione di Lorenzo per creare uno script Ruby che bypassa lo stage Gerber e genera direttamente le righe del file della scheda KiCAD.

Il processo procede in questo modo:

  1. Progetta la tua tavola in Inkscape
  2. Esporta in HPGL
  3. Convertire HPGL in GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. Genera linee di file di bordo: gpt2pcbnew file.hpgl.gpt

Ecco la fonte per lo 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]}")
  }  
}

Proprio come nell'Opzione 1, le linee generate vanno in un file di scheda vuoto salvato in KiCAD.

Questa soluzione sfrutta il fatto che il formato HPGL è molto simile nella sua costruzione ai file Gerber, nel senso che è una serie di coordinate con "pen up" o "pen down", che corrisponde ai codici D01 e D02 in Gerber.

In questo caso, quindi, tutto il duro lavoro di conversione da spline di Bezier a segmenti di linea viene svolto da Inkscape.

= Limitazioni dell'opzione 2 =

Ci sono un paio di limitazioni con questo approccio:

  1. Sembra che Inkscape non possa esportare rettangoli in HPGL. Ovviamente puoi ovviare a questo problema costruendo i tuoi rettangoli.
  2. Al momento non sono in grado di ottenere correttamente le dimensioni degli oggetti esportati. Gli oggetti finiscono all'incirca due volte più grandi in KiCAD. Lavorerò presto su una soluzione a questo.

3

Ho avuto un problema simile con Kicad qualche tempo fa, ha sempre un supporto limitato per forme non standard o semplicemente non è ben documentato. Quello che ho finito è stato disegnare la mia forma (pad non standard nel mio caso) con Gimp e convertirlo in un modulo usando lo strumento integrato. Ho quindi aperto questo file del modulo e modificato il livello in strati di rame. Apri il backup in Kicad e hai forme non standard di tua scelta su qualsiasi livello. Non ideale ma funziona.


passi:

  1. Crea un disegno in Gimp
  2. Usa il componente bitmap2 incluso in Kicad per convertirlo in un componente
  3. Aprire il modulo in gedit / blocco note e modificare le informazioni sul livello secondo il seguente documento (Sezione 3.4):

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

4. Salvare le modifiche e aprire il modulo in Pcbnew

Risultati (non riuscivo a pensare a nessun altro modo di creare un bordo circolare non coperto da soldermask, in realtà è un pad SMD con componenti al suo interno):

inserisci qui la descrizione dell'immagine


Hmm - sembra un approccio interessante, ma non sono sicuro di cosa intendi per "aperto questo file di modulo e cambiato il livello in strati di rame". Ho pensato che i pad abbiano un livello target, piuttosto che il modulo stesso. Potresti espandere un po 'il modo in cui passi da un modulo della forma desiderata a un disegno reale sul livello che preferisci? Grazie!
Val Blant,

Risposta aggiornata
s3c,

1
Puoi creare un bordo circolare solo con lo strumento cerchio, quindi, poiché l'area è già piena di rame, puoi rimuovere la maschera di saldatura disegnando un cerchio ma questa volta sul livello Maschera frontale.
Abdullah Kahraman,

Questo è un suggerimento abbastanza buono, volevo un modulo che potessi rapidamente inserire in vari progetti, suppongo che entrambi avrebbero funzionato. +1
s3c

1

Ho lavorato con OrCAD, Eagle, Altium. Non ho lavorato con KiCAD. Quindi, la seguente è un'ipotesi colta.

In genere, i programmi di layout hanno funzioni per disegnare archi circolari, ma non hanno una funzione integrata per disegnare ellissi. Puoi approssimare un'ellisse con archi circolari ( altro qui ). Puoi anche disegnare un'ellisse con un programma di disegno e provare a importare un DXF nel programma di layout (non so quanto KiCAD possa supportare questo).

Alla fine, il PCB fab, probabilmente, approssimerà le curve con i poligoni comunque.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.