Skip to main content

Someone wanted to learn this too, so Grasp built them a personal learning path.

You can keep exploring this one or create your own

Зазоры в корпусе: Основы применения

Здравствуйте!

На прошлом уроке мы завершили работу над монтажными элементами, добавив в стойки пилотные отверстия и углубления для шляпок винтов. Наша виртуальная печатная плата теперь имеет надежное место для крепления. Однако в 3D-моделировании, как и в реальной инженерии, идеальное совпадение размеров — это почти всегда проблема.

Цель этого урока — научиться применять зазоры (clearances) между печатной платой и внутренними элементами корпуса. Это критически важный шаг, который гарантирует, что физически напечатанные детали соберутся вместе без проблем.

1. Допуск и Зазор: Почему идеальная точность — это миф?

В наших предыдущих моделях мы проектировали все "впритык". Например, внутренние размеры полости корпуса точно соответствовали габаритам печатной платы. В реальном мире из-за особенностей FDM-печати (неидеальность экструзии, люфты механики, усадка пластика) напечатанные детали никогда не будут на 100% соответствовать цифровой модели. Если мы не предусмотрим небольшой запас пространства — зазор — наша плата попросту не влезет в корпус.

Важно различать два термина:

  • Допуск (Tolerance): Диапазон приемлемых отклонений реального размера от номинального. Например, если допуск на диаметр отверстия ±0.1 мм, то любое отверстие от 2.9 до 3.1 мм считается годным. Это характеристика производственного процесса.
  • Зазор (Clearance): Намеренно спроектированное расстояние между двумя деталями для обеспечения их сборки и функционирования. Это параметр, который мы закладываем в модель на этапе проектирования.

Test your 3D Printer's Clearance and Tolerance

Для четкого понимания разницы между допуском и зазором, посмотрите это короткое вступление от Maker's Muse. Оно отлично проясняет терминологию.

Посмотрите фрагмент с 00:26 по 01:08. Автор ясно разделяет эти два понятия.

Допуски в 3D-печати: как их проверять и улучшать

Теперь давайте углубимся в причины неточностей при FDM-печати и разберем, какие типы посадки деталей существуют. Статья 'Допуски в 3D-печати' от Top 3D Shop подробно освещает эти вопросы.

Прочтите три раздела: 'Почему важны допуски' для общего понимания, 'Типы подгонки' для изучения посадок с зазором, натягом и переходной, и 'Причины неточностей FDM' для понимания физических источников погрешностей.

Как вы видите, для нашей задачи (установка платы в корпус) нам нужна посадка с зазором (clearance fit), чтобы плата свободно входила в свое посадочное место.

2. Какой зазор выбрать?

Величина зазора зависит от точности вашего принтера, материала, скорости печати и желаемого типа соединения. Лучший способ определить оптимальный зазор — напечатать тестовые образцы.

3D-печатные тестовые образцы для определения зазоров
Пример тестовой детали для определения зазоров. Путем подбора штыря, который входит в отверстие с нужным усилием, можно определить оптимальный зазор для вашего принтера и материала.

Однако для начала можно воспользоваться практическими рекомендациями.

Допуски в 3D-печати: как их проверять и улучшать

В той же статье есть раздел с конкретными численными рекомендациями для проектирования. Это отличная отправная точка.

Прочтите раздел 'Дизайн'. Обратите внимание на рекомендации по величине зазоров для разных типов посадки для сопла 0.4 мм. Для 'посадочного зазора' рекомендуется разница в диаметрах от 0.5 мм, что дает зазор в 0.25 мм на сторону.

Исходя из рекомендаций, зазор в 0.2-0.5 мм на каждую сторону между платой и стенкой корпуса будет хорошим стартом. Этого достаточно, чтобы компенсировать неровности печати и обеспечить легкую сборку.

3. Реализация зазоров в build123d с помощью offset

Самый надежный и универсальный способ добавить зазор вокруг объекта — использовать операцию offset. Она позволяет создать новый 2D-эскиз, который является увеличенной (или уменьшенной) копией исходного. Учитывая ваш бэкграунд, можно провести аналогию с расширением или сжатием волнового фронта.

Давайте применим этот метод для создания полости под нашу плату. Скопируйте ваш предыдущий файл enclosure_v7.py в enclosure_v8.py.

Сначала добавим новый параметр в наш скрипт:

# enclosure_v8.py

# ... другие параметры ...

# ================== ПАРАМЕТРЫ КОРПУСА ==================
pcb_clearance = 0.5  # Зазор между платой и стенками корпуса (мм)
wall_thickness = 1.6 # Толщина стенок
# ...

Я выбрал 0.5 мм — это довольно щедрый зазор, который почти наверняка сработает. Для более плотной посадки его можно уменьшить до 0.2-0.3 мм после тестовой печати.

Теперь мы изменим логику создания основания (base). Вместо того чтобы вычислять внешние размеры Box и затем делать в нем полость (thicken), мы построим его "от центра наружу", отталкиваясь от контура платы. Этот подход более явно следует нашему проектному замыслу.

Найдите код, где создается base_with_lip. Мы его полностью заменим.

Старая логика (примерно):

  1. Создать большой монолитный Box.
  2. Сделать из него тонкостенную коробку с помощью thicken.

Новая, более гибкая логика:

  1. Определить 2D-контур печатной платы.
  2. С помощью offset создать контур внутренней полости, добавив зазор.
  3. С помощью offset создать внешний контур стенок, добавив их толщину.
  4. Выдавить (extrude) стенки.
  5. Добавить дно.

Вот как это выглядит в коде. Замените блок, где вы создавали base_block и hollow_base.

# enclosure_v8.py

# ... после определения pcb_model и параметров ...

# Создаем основание с зазорами с помощью offset
with BuildPart() as base_builder:
    # 1. Создаем 2D-контур платы
    with BuildSketch(mode=Mode.PRIVATE) as pcb_footprint:
        Rectangle(pcb_dimensions.X, pcb_dimensions.Y)
    
    # 2. Создаем контур внутренней полости (плата + зазор)
    with BuildSketch(mode=Mode.PRIVATE) as pocket_footprint:
        offset(pcb_footprint.sketch, amount=pcb_clearance)

    # 3. Создаем контур внешних стенок (полость + толщина стенки)
    with BuildSketch() as wall_footprint:
        offset(pocket_footprint.sketch, amount=wall_thickness)

    # 4. Выдавливаем внешние стены
    extrude(amount=base_height)

    # 5. Добавляем дно, создавая замкнутый объем
    # Мы используем исходный контур внешних стен и выдавливаем его вниз
    extrude(wall_footprint.sketch, amount=-wall_thickness, dir=(0, 0, -1))

    # Смещаем деталь так, чтобы дно было на Z=0
    base_builder.part.locate(Location(Vector(0, 0, wall_thickness)))

base_block = base_builder.part

# Создаем выступ (фальц) как и раньше
lip_height = 1.0
lip_thickness = 1.0

with BuildPart() as lip:
    with BuildSketch(Plane.XY.offset(base_height)):
        # Выступ создается на ВНУТРЕННЕЙ границе стен
        # offset с отрицательным значением
        offset(pocket_footprint.sketch, amount=-lip_thickness)
        # И вычитаем исходный контур полости
        offset(pocket_footprint.sketch, amount=-lip_thickness * 2, mode=Mode.SUBTRACT)
    extrude(amount=-lip_height)

base_with_lip = base_block + lip

# ... остальной код (создание стоек и отверстий) остается без изменений ...

Что здесь произошло?

  • Мы использовали вложенные контексты BuildSketch для создания промежуточных 2D-профилей. mode=Mode.PRIVATE используется, чтобы эскиз не добавлялся в финальную деталь, а служил лишь основой для следующего шага.
  • offset(..., amount=pcb_clearance) создал эскиз полости, который на 0.5 мм шире и длиннее платы.
  • offset(..., amount=wall_thickness) создал внешний контур.
  • Затем мы выдавили стены и добавили дно.
  • Важно, что для создания выступа (lip) мы теперь тоже отталкиваемся от pocket_footprint, что сохраняет параметрическую связь.

Если вы теперь запустите визуализацию и отобразите base_with_holes и pcb_model одновременно, вы увидите отчетливый зазор между краем платы и внутренними стенками корпуса.

Проверьте себя!

Предположим, на нижней стороне вашей печатной платы есть выступающие элементы (например, ножки SMD-компонентов или разъемы) высотой 1.5 мм. Текущая высота стоек (standoff_height) равна 3 мм. Достаточно ли этого для безопасного размещения платы? Какой параметр нужно ввести, чтобы управлять этим вертикальным зазором, и как он повлияет на standoff_height?

Показать решение

При standoff_height = 3 мм расстояние от дна корпуса до нижней стороны платы составит 3 мм. Если компоненты выступают на 1.5 мм, то зазор между ними и дном корпуса будет 3.0 - 1.5 = 1.5 мм. Этого, скорее всего, достаточно.

Однако, чтобы сделать модель более надежной и параметрической, следует ввести явный параметр для этого зазора:

# В разделе параметров
bottom_clearance = 1.5  # Минимальный зазор под платой
max_component_height_bottom = 1.5 # Высота компонентов на нижней стороне

Затем, standoff_height следует вычислять на основе этих параметров, а не задавать фиксированным значением:

# Расчет высоты стоек
standoff_height = max_component_height_bottom + bottom_clearance

Теперь, если вы будете использовать плату с более высокими компонентами, вам достаточно будет изменить один параметр (max_component_height_bottom), и вся геометрия корпуса корректно перестроится, сохранив необходимый зазор bottom_clearance.

Ключевые выводы

  • Зазоры (clearances) — это не ошибка, а необходимость в проектировании для 3D-печати, компенсирующая неизбежные погрешности FDM-технологии.
  • Для простой сборки деталей, как правило, используется посадка с зазором, величину которого можно определить экспериментально или взять из практических рекомендаций (0.2-0.5 мм на сторону).
  • Операция offset в build123d является мощным и идеологически правильным инструментом для создания зазоров вокруг контуров произвольной формы.
  • Проектирование "от детали наружу" (от контура платы к внешним стенкам) делает модель более гибкой и легко модифицируемой.

Что дальше?

Мы почти закончили проектирование нижней части корпуса! Плата теперь корректно располагается на стойках, надежно крепится винтами и имеет необходимые зазоры для легкой установки. В следующем модуле мы перейдем к не менее важной задаче: проектированию механизмов соединения крышки и основания нашего корпуса. Мы рассмотрим как винтовое соединение, так и защёлки.

Can't find a good explanation? Sign up and we'll make it for you

Sign up