Краї еліптичної дошки в KiCAD або CircuitPro?


11

Я намагаюся використовувати KiCAD для розробки плати, яка повинна вписатись у існуючий корпус. Одну сторону друкованої плати потрібно мати як певний сегмент еліптичної дуги. Я можу визначити параметри потрібного еліпса, але я не бачу, як насправді намалювати таку обрізку краю в KiCAD.

Чи можливо це в KiCAD чи я використовую для цього неправильне програмне забезпечення? Дошка буде зроблена на LPKF ProtoMat, тому я буду використовувати програмне забезпечення CircuitPro для створення остаточних інструкцій для плотера (ще не знаю, як це працює).

Тож мої запитання - чи варто думати над дизайном форми дошки в KiCAD або залишити її до наступного кроку?

Дякую.


Це можливо з KiCad, і я створив такі контури дошки раніше. Зараз я перебуваю на мобільному телефоні, однак можу написати відповідь, коли стану доступною.
абдулла кахраман

@abdullahkahraman: Я вдячний за ваше розуміння.
Вал Блант

Відповіді:


25

Я думаю, що приклад вартує мільйона слів, тому я хотів зробити підручник з цього приводу.

Ось поле, я збираюся створити контур для:

введіть тут опис зображення

Ось приклад креслення друкованої плати з таблиці даних:

введіть тут опис зображення

Відкривши Pcbnew, виберіть шар для ребер. У поточній версії KiCad (BZR4008) вона називається "Edge.Cuts". По-перше, я збираюся намалювати верхні та нижні краї, які дорівнюють 62 мм. Потім лівий і правий краї, які дорівнюють 32 мм. Я використовую інструмент, під яким розміщено підказку "Додати графічну лінію або багатокутник".

введіть тут опис зображення

Тепер, коли все добре, я можу намалювати інші фігури:

введіть тут опис зображення

Ось інструмент, який ми будемо використовувати для цього:

введіть тут опис зображення

Цей інструмент в основному є частковим колом. Щоб скористатися нею, натисніть на точку, яка буде центром вашого кола, потім за допомогою миші встановіть радіус із візуальною допомогою KiCad. Дуже корисно - змінити курсор, щоб він відображав повні координати, кнопкою показано нижче:

введіть тут опис зображення

введіть тут опис зображення

Просто для прикладу зробимо край, звернений назовні:

введіть тут опис зображення

На жаль, ви не можете зробити правильні еліпси за допомогою цього методу. Ви повинні використовувати графічне вбудовування або методи наближення для цього, про які згадував Нік Алексєєв.


4

На мою думку, благодать KiCad збереження полягає в тому, що створені ними файли читаються людиною, а формат файлів досить добре зафіксований. Координати X і Y вказані в десятитисячних дюймах, посилаючись на (0,0) в лівій верхній частині. Контур дошки може бути представлений відрізками ліній та напівкруглими дугами.

Маніпулювати .brd-файлами Kicad досить просто, використовуючи вибрану мову сценарію (наприклад, Python). Якби я був ти, я, ймовірно, написав би сценарій, який обчислює кусочні сегменти рядка, щоб наблизити твій еліптичний контур і записати сегментні рядки у ваш .brd файл.


Саме цим я і закінчився. Дякую Роб! Я опублікую повний опис рішення трохи.
Вал Блант

4

Щоб перетравити всю цю інформацію, мені знадобилося пару днів, але я закінчив два рішення цієї проблеми. Я опишу тут обидва рішення.

Я хотів би подякувати Лоренцо та Роб Гілліому з форуму користувачів кікадів, які надали мені всі ідеї та інформацію, які мені потрібні, щоб зібрати рішення нижче ( http://tech.groups.yahoo.com/ група / користувачі-кікади / повідомлення / 15220 ).

= Варіант 1 =

Якщо ви хочете імпортувати один еліптичний сегмент і спроектувати решту плати в KiCAD, то цей сценарій Ruby є, мабуть, найпростішим способом:

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

Для того, щоб використовувати цей скрипт, просто збережіть порожній .kicad_pcbфайл у Kicad, а потім вставте рядки, згенеровані цим сценарієм після останнього розділу перед заключним дужкою.

Відкрийте новий файл дошки в KiCAD і насолоджуйтесь своїм еліпсом, інтерпольованим по сегментах рядків :). Використання 256 точок робить еліпс настільки гладким, що ви не можете сказати, що він складається з ліній в KiCAD.

Якщо ви хочете лише частину еліпса (наприклад, один край вашої друкованої плати), тривіально додати обмежувальне поле до сценарію вище та відкинути всі точки, що лежать поза полем.


= Варіант 2 =

Інший підхід полягає в тому, щоб повністю розробити плату в Inkscape (або що-небудь інше, що може експортувати векторну графіку), і знайти спосіб імпортувати її в KiCAD.

Лоренцо запропонував рішення, яке може перейти від Inkscape до Гербера тут: http://tech.groups.yahoo.com/group/kicad-users/message/15229

Тоді я зміг побудувати на рішенні Лоренцо, щоб зробити сценарій Ruby, який обходить стадію Гербера і безпосередньо генерує файлові рядки файлів KiCAD безпосередньо.

Процес йде так:

  1. Дизайн дошки в Inkscape
  2. Експорт до HPGL
  3. Перетворити HPGL в GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. Створити рядки файлів дошки: gpt2pcbnew file.hpgl.gpt

Ось джерело gpt2pcbnewсценарію:

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

Як і в варіанті 1, згенеровані рядки переходять у файл пустої дошки, збережений у KiCAD.

Це рішення використовує той факт, що формат HPGL дуже схожий за своєю побудовою на файли Гербера, в тому сенсі, що це ряд координат або "pen up", або "pen down", що відповідає кодам D01 і D02 в Gerber.

Таким чином, вся кропітка робота з перетворення безірських сплайнів на сегменти рядків у цьому випадку виконується Inkscape.

= Варіант 2 Обмеження =

При такому підході є кілька обмежень:

  1. Схоже, Inkscape не може експортувати прямокутники в HPGL. Очевидно, це можна вирішити, побудувавши власні прямокутники.
  2. Наразі я не в змозі правильно визначити розміри експортованих об'єктів. Об'єкти закінчуються приблизно вдвічі більше в KiCAD. Я незабаром буду працювати над вирішенням цього питання.

3

У мене були подібні проблеми з Kicad деякий час назад, він коли-небудь має обмежену підтримку нестандартних фігур, або це просто недостатньо задокументовано. Що я в кінцевому підсумку робив - це намалювати свою форму (нестандартну накладку в моєму випадку) за допомогою Gimp і перетворити її на модуль за допомогою вбудованого інструменту. Потім я відкрив цей модульний файл і змінив шар на мідні шари. Відкрийте його назад у Kicad, і у вас є нестандартні форми на ваш вибір на будь-якому шарі. Не ідеально, але це працює.


Кроки:

  1. Створіть малюнок у Gimp
  2. Для перетворення його в компонент використовуйте bitmap2component, що входить у комплект Kicad
  3. Відкрийте модуль в gedit / блокноті та відредагуйте інформацію про шар відповідно до наступного документа (Розділ 3.4):

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

4.Збережіть зміни та відкрийте модуль у Pcbnew

Результати (не міг придумати жоден інший спосіб зробити круговий край, не охоплений паяльною маскою, це фактично накладка SMD з компонентами всередині неї):

введіть тут опис зображення


Хм - це виглядає як цікавий підхід, але я не впевнений, що ви маєте на увазі під "відкриттям цього модульного файлу та зміною шару на мідні шари". Я подумав, що у колодок є цільовий шар, а не сам модуль. Чи можете ви трохи розширити, як перейти від модуля потрібної форми до фактичного малюнка на обраному вами шарі? Спасибі!
Вал Блант

Відповідь оновлено.
s3c

1
Ви можете створити круговий край просто інструментом кола, оскільки область вже заповнена міддю, ви можете зняти паяльну маску, намалювавши коло, але на цей раз на шарі передньої маски.
абдулла кахраман

Це дуже гарна пропозиція, я хотів, щоб модуль міг швидко потрапляти в різні конструкції, хоча, думаю, обидва спрацюють. +1
s3c

1

Я працював з OrCAD, Eagle, Altium. Не працював з KiCAD. Отже, наступне - освічена здогадка.

Зазвичай програми компонування мають функції для малювання кругових дуг, але не мають вбудованої функції для малювання еліпсів. Ви можете наблизити еліпс круговими дугами ( докладніше тут ). Ви також можете намалювати еліпс із програмою складання та спробувати імпортувати DXF в програму компонування (не знаю, наскільки KiCAD може це підтримувати).

Врешті-решт, платка друкованої плати все-таки буде наближати криві до багатокутників.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.