Сегодня 26 ноября, вторник ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7276
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
3D Печать, 3D Принтеры и другие приключения в стране RepRap план
 

Опыт практического применения поддержек в Meshmixer

2013-12-03 21:30:00 (читать в оригинале)

Сегодня я опишу свой первый практический опыт генерирования поддержек в Meshmixer и что из этого вышло.

Meshmixer поддержки

"3D Печать - Генерирование поддержек в Meshmixer".

Нужно было напечатать модель (на фото) с очень большим количеством нависающих поверхностей. Вначале я попытался напечатать модель со стандартными поддержками генерируемыми слайсером.

Поддержки слайсер

Но меня постигла деламинация, а соответственно и деформация модели, и также попробовав удалить поддержки во внутренней части модели я понял что результат поверхности и сложность удаления поддержек меня не устраивает. Причем деламинация у меня довольно интересная получается и как я с ней боролся опишу в следующей статье.

Поддержки слайсерПоддержки слайсер

Так что я решил генерировать поддержки в Meshmixer.

Вначале поддержки в Meshmixer были сгенерированы с настройками по умолчанию.

Поддержки в Meshmixer

Поддержки в Meshmixer

Но процесс печати вынужден был остановить? потому что отламались поддержки в центре модели, там где прямоугольный вырез (на фото они отсутствуют). Плюс в самом начале печати, цилиндрической ее части, где поддержек нет (на фото хорошо видно), а угол нависания очень большой, получилось подплавление краев, что привело к не очень хорошему внешнему виду поверхности.
Причиной поломки поддержек явилось то, что диаметр столбика поддержки (Post Diameter) всего 1.6мм и они находились близко друг к другу, а как вы знаете печатать мелкие объекты очень сложно, потому что пластик не успевает застывать, происходит подплавление и соответственно поверхность деформируется. Когда сопло проезжает над такой поверхностью, оно цепляется за нее, а площадь основания поддержки маленькая, т.к. поддержка крепится к поверхности модели, что и приводит к отламыванию поддержек.

Во второй раз был увеличен угол нависающих поверхностей (Angle Thresh = 45), а также вручную добавлены дополнительные поддержки для жесткости.

Поддержки в Meshmixer

Стало чуть лучше но опять отламались поддержки в центре. Поэтому снова были изменены настройки генерации поддержек в Meshmixer, угол нависающих поверхностей (Angle Thresh = 45) и диаметр поддержек (Post Diameter = 2.17).

Поддержки в Meshmixer

Результат тот же, поддержки в центре (и не только) отламались. И стало понятно что качество поверхности тоже очень страдает.

Итак нужно было уменьшить число нависающих поверхностей, а соответственно и поддержек.
В Meshmixer - Analysis - Overhangs есть замечательная кнопочка Optimize Orientation, которая и делает то что нужно, а именно выбирает такую ориентацию модели, при которой нависающие поверхности минимальны. Также подкорректированы параметры генерации поддержек, Angle Thresh = 45, Max Angle = 70, Strut Density = 80, остальные параметры по умолчанию. И наконец то получен более-менее нормальный результат печати.

Поддержки в Meshmixer

Но не все хорошо как хотелось бы. В некоторых местах поддержки также отламались, хоть это и не сильно ухудшило качество печати, но все же заметно.

Поддержки в Meshmixer

Поддержки в Meshmixer

Так как поддержки очень высокие, то их раскачивало при печати, соответственно они печатались неравномерно, подплавлялись и цеплялись за сопло, отламывались.
Вот то что получилось после удаления поддержек.

Поддержки в Meshmixer

Поддержки в Meshmixer

Вывод:


При генерации поддержек в Meshmixer нужно выбирать положение модели с минимальными нависающими поверхностями. Значения по умолчанию вполне адекватны и их можно использовать, но все зависит от возможностей вашего принтера. Если поддержки высокие, то нужно вручную добавлять поддержки для жесткости, примерно каждые 10мм по высоте.

Надеюсь мой опыт оказался вам полезен.
Удачной 3D Печати!

При копировании ссылка на источник обязательна.


OpenSCAD - Введение

2013-11-19 02:00:00 (читать в оригинале)

OpenSCAD - это программа твердотельного 3D моделирования, которая очень популярна среди RepRap сообщества. Принцип ее работы основан на написании алгоритма отрисовки 3D объекта.

OpenSCAD

Для начала нужно настроить наше рабочее пространство, как это сделать и облегчить себе работу в OpenSCAD читайте здесь.
Теперь удобно расположите ваши руки на клавиатуре и мы начнем.
Весь код мы будем вводить в окне Sublime Text и по нажатию Ctrl+S он будет отображаться в окне OpenSCAD. Но вы также можете обойтись и одним OpenSCAD, в этом случае вводите код в окно редактора OpenSCAD.

OpenSCAD Show Axes

Куб и Перемещение


Куб в OpenSCAD относится к прямоугольной призме. Чтобы создать куб введите:
cube(5);
Куб в OpenSCAD

Мы также можем отобразить куб в центре координат:
cube(5, center=true);

Куб с разными сторонами отображается следующей командой, где размер указывается в формате [x,y,z]:
cube([2,2,5], center=true);
Куб с разными сторонами в OpenSCAD

Чтобы переместить объект используется команда translate([x,y,z]), например переместим предыдущий куб на 2 по Х, на 2 по У и на 10 по Z:
translate([2,2,10]) cube([2,2,5], center=true);
Перемещение куба в OpenSCAD

Если нужно переместить группу объектов то эта группа заключается в фигурные скобки, например так:
translate([2,2,10]) {
       cube([2,2,5], center=true);
       //......
}
В OpenSCAD все что идет после символов // является комментарием и не учитывается интерпретатором OpenSCAD при генерации 3D модели, в них можно писать пометки в вашем коде чтобы потом легче было разобраться в нем, особенно когда код будет очень большим и сложным.

Перемещать естественно можно и в отрицательные полуоси, например:
translate([2,-2,-10]) {
       cube([2,2,5], center=true);
       //......
}
Перемещение куба в OpenSCAD

А теперь сделаем модель буквы "П"
translate([2.5,0,2.5]) cube([2,2,5], center=true); //правая нога
translate([-2.5,0,2.5]) cube([2,2,5], center=true); //левая нога
translate([0,0,5]) cube([7,2,2], center=true); //перекладина
Буква "П" из кубиков в OpenSCAD

Каждая строка кода завершается точкой с запятой, после фигурных скобок точку с запятой ставить не обязательно.

Переменные


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

Переменная определяется следующим образом:
parameter = 10;
В OpenSCAD нельзя переопределять переменные, т.е. переменная должна быть задана только один раз, и она будет равна последнему присвоенному значению по всему тексту скрипта, например:
a = 10;
echo(a);

a = 15;
echo(a);
Даст следующий результат:
ECHO: 15
ECHO: 15
А теперь давайте сделаем ту же модель буквы "П" с применением переменных:
depth = 2; //глубина модели по оси Y
weight_leg = 2; //ширина ноги по оси X
height_leg = 5; //высота модели по оси Z
legs_space = 5; //расстояние между осями ног по X
weight_bridge = legs_space + weight_leg; //ширина перекладины равна расстоянию между осями ног плюс ширина ноги
height_bridge = weight_leg; //высота перекладины равна ширине ноги

translate([legs_space/2,0,height_leg/2]) //перемещаем правую ногу вправо по X
    cube([weight_leg,depth,height_leg], center=true); //правая нога
translate([-(legs_space/2),0,height_leg/2]) //перемещаем левую ногу влево по X
    cube([weight_leg,depth,height_leg], center=true); //левая нога
translate([0,0,height_leg + height_bridge/2]) //перемещаем перекладину вверх по Z
    cube([weight_bridge,depth,height_bridge], center=true); //перекладина
Параметры в OpenSCAD

Попробуйте поэкспериментировать с различными значениями параметров.
Как видите теперь намного проще изменять модель.

Теперь давайте взглянем на другие формы которые вы можете использовать в OpenSCAD.

Сфера


Простая сфера (шар) может быть определена командой:
sphere(r=5);
Сфера в OpenSCAD

Вы можете управлять разрешением сферы и других форм при помощи параметра $fn. Разрешение можно задать как для всего скрипта:
$fn = 50;
Так и для конкретной формы которая позволяет использовать этот параметр:
sphere(r=5, $fn = 50);
Разрешение сферы в OpenSCAD

На время проектирования рекомендуется использовать разрешение 20-40, а при компиляции и прорисовке готовой модели 100-150, потому что чем выше разрешение тем дольше будет проходить компиляция и тем больше понадобится памяти OpenSCAD.


Цилиндр и Вращение


Для цилиндра нужно указать два параметра, радиус и высоту, а также можно указать разрешение как для сферы и положение относительно центра как для куба:
cylinder(r=5, h=5, center=true, $fn = 50);
Цилиндр в OpenSCAD

Цилиндр создается в вертикальном положении, а если нам он нужен в горизонтальном положении то мы воспользуемся функцией вращения rotate([x,y,z]), где x,y,z - это угол на который нужно повернуть относительно соответствующей оси. Например повернем цилиндр на 90° относительно оси Y:
rotate([0,90,0]) cylinder(r=5, h=5, center=true, $fn = 50);
Вращение в OpenSCAD

А теперь повернем и переместим цилиндр одновременно:
translate([0,0,5]) rotate([0,90,0]) cylinder(r=5, h=5, center=true, $fn = 50);
Этот код можно написать и подругому:
translate([0,0,5]) {
    rotate([0,90,0]){
        cylinder(r=5, h=5, center=true, $fn = 50);
    }
}
Одновременный поворот и перемещение в OpenSCAD

Из цилиндра можно получить конус задав разные диаметры сверху и снизу:
cylinder(r1=20, r2=3, h=40, center=true, $fn=50);
Конус в OpenSCAD

Где r1 - диаметр основания, а r2 - диаметр вершины. Вы также можете получить идеальный конус задав диаметр r2 равным нулю.

Объединение и Вырезание

Объединение неявно когда не используется. Но оно необходимо, например когда необходимо вырезать один объект из группы объектов. Пример объединения:
union() {
    cylinder (h = 4, r=1, center = true, $fn=100);
    rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100);
}
Объединение в OpenSCAD

Все что мы рассмотрели ранее позволяет создавать объекты сложной формы посредством добавления небольших частей друг к другу. Но очень часто нам нужно вырезать какую-то часть. И рассмотрим мы это на примере создания кольца. В функции вырезания из первого объекта вырезаются все последующие:
$fn = 50;

difference() {
    // Из этого цилиндра мы будем вырезать
    cylinder(r=10, h=5, center=true);

    // Все остальное следующее далее будет вырезано
    cylinder(r=8, h=6, center=true);
}
Вырезание в OpenSCAD

Иногда очень удобно видеть что мы вырезаем и в этом случае можно использовать специальный знак #, который делает видимым вырезаемую часть:
$fn = 50;

difference() {
    // Эта часть будет создана
    cylinder(r=10, h=5, center=true);

    // Все остальное следующее далее будет вырезано
    #cylinder(r=8, h=6, center=true);
}
Видимое вырезание в OpenSCAD

Вырезаемая часть всегда должна быть немного больше. Например в рассмотренном выше примере, если между внешним и внутренним цилиндрами не будет перекрытия мы получим "оболочку" равную нулю. Это плохой стиль 3D моделирования, и может привести к ошибкам при генерации модели (рендеринг) или отправке модели в 3D принтер.

Ошибка вырезания в OpenSCAD

Поэтому всегда учитывайте это и делайте вырезаемый объект немного выступающим, 0.1мм достаточно.

А теперь используем объединение и вырезание в одном примере, чтобы наглядно показать как вырезать из группы объектов:
difference() {
    union() {
        cylinder (h = 4, r=1, center = true, $fn=100);
        rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100);
    }
    rotate([0,90,0]) cylinder(r=1, h=10, center=true, $fn=100);
}
Вырезание и объединение в OpenSCAD


Модули


Модули являются мощным средством в OpenSCAD, они позволяют упростить и повторно использовать однажды написаный код.
Сделаем ранее рассмотренную модель буквы "П" с использованием модуля:
// Инструкции как должна создаваться буква "П"
module pi() {
    // Параметры
    depth = 2; //глубина модели по оси Y
    weight_leg = 2; //ширина ноги по оси X
    height_leg = 5; //высота модели по оси Z
    legs_space = 5; //расстояние между осями ног по X
    weight_bridge = legs_space + weight_leg; //ширина перекладины равна расстоянию между осями ног плюс ширина ноги
    height_bridge = weight_leg; //высота перекладины равна ширине ноги

    translate([legs_space/2,0,height_leg/2]) //перемещаем правую ногу вправо по X
        cube([weight_leg,depth,height_leg], center=true); //правая нога
    translate([-(legs_space/2),0,height_leg/2]) //перемещаем левую ногу влево по X
        cube([weight_leg,depth,height_leg], center=true); //левая нога
    translate([0,0,height_leg + height_bridge/2]) //перемещаем перекладину вверх по Z
        cube([weight_bridge,depth,height_bridge], center=true); //перекладина
}

// Эта строчка говорит OpenSCAD найти инструкции как создавать букву "П" и создать ее
pi();
Модули в OpenSCAD

А теперь давайте улучшим модуль и будем передавать параметры в него, что позволит повторно использовать модуль с разными размерами, и создадим несколько разных букв "П":
// Инструкции как должна создаваться буква "П"
module pi(depth, weight_leg, height_leg, legs_space) {
    // Параметры
    weight_bridge = legs_space + weight_leg; //ширина перекладины равна расстоянию между осями ног плюс ширина ноги
    height_bridge = weight_leg; //высота перекладины равна ширине ноги

    translate([legs_space/2,0,height_leg/2]) //перемещаем правую ногу вправо по X
        cube([weight_leg,depth,height_leg], center=true); //правая нога
    translate([-(legs_space/2),0,height_leg/2]) //перемещаем левую ногу влево по X
        cube([weight_leg,depth,height_leg], center=true); //левая нога
    translate([0,0,height_leg + height_bridge/2]) //перемещаем перекладину вверх по Z
        cube([weight_bridge,depth,height_bridge], center=true); //перекладина
}

// Эта строчка говорит OpenSCAD найти инструкции как создавать букву "П" и создать ее
pi(2,2,5,5);
translate([10,0,0]) pi(1,3,7,4);
translate([-10,0,0]) pi(4,1,2,5);
Модули с параметрами в OpenSCAD

Модули незаменимы когда вы работаете с функциями которые должны повторно использоваться в вашей модели.

Вот мы и рассмотрели основные функции OpenSCAD, которые позволят вам создавать ваши 3D модели в такой замечательной программе твердотельного 3D моделирования как OpenSCAD.

Продолжение следует...


При копировании ссылка на источник обязательна.


Компиляция и загрузка прошивки Marlin для Sanguinololu

2013-11-07 23:00:00 (читать в оригинале)

Если для своего 3D принтера вы выбрали в качестве электроники Sanguinololu, то нужно проделать несколько манипуляций для того чтобы прошивка скомпилировалась без ошибок.
Все манипуляции проводились на Linux Ubuntu 13.10 c Arduino 1.0.5  и прошивкой Marlin v1, но они также верны и для других операционных систем.




скачать и установить ПО Arduino. Если вы это уже сделали, то пропустите этот шаг.
  • Скачать прошивку Marlin (самая последняя) и распаковать ее.
    Последняя версия прошивки по состоянию на 05.11.2013 для Sanguino у меня компилироваться не захотела. Выдало кучу ошибок, возможно из-за того что в данный момент идет добавление новых фич в прошивку (автоматическая калибровка стола например), а вот для Arduino Mega2560 скомпилировалась без проблем. Поэтому если у вас такая же проблема, то можете использовать более старую версию (от 20.06.2013) в которой таких проблем нет.
  • Скопировать папку Marlin/ArduinoAddons/Arduino_1.x.x/Sanguino в arduino-1.0.5/hardware, у вас должно получится arduino-1.0.5/hardware/Sanguino.
  •  Скопировать папку Marlin/ArduinoAddons/Arduino_1.x.x/libraries в arduino-1.0.5/libraries с заменой всех файлов.
  • Запустить Arduino IDE, открыть файл прошивки Marlin.ino (или Marlin.pde).
  • Выбрать в настройках Arduino IDE соответствующую плату, например меню Сервис -  Плата - Sanguino W/ ATmega1284p 16mhz.
  • Отредактировать файл настройки прошивки Configuration.h в соответствии с параметрами вашего принтера.
  • Сохранить изменения и запустить проверку/компиляцию Ctrl+R или соответствующую кнопку в меню.

    Если все в порядке вы получите нечто вроде этого



  • Теперь можно залить прошивку в Sanguinololu нажав соответствующую кнопку, не забудьте предварительно подключить плату к компьютеру, лучше подключать ее до запуска Arduino IDE, тогда программа автоматически определит порт платы.

  • Вот собственно и все, Marlin прошит в Sanguinololu!


     Так же вы можете прикрутить Arduino к Sublime Text и скомпилировать прошивку там.

    Удачной 3D Печати!


    При копировании ссылка на источник обязательна.


    Как все начиналось - Мой первый опыт и ошибки в RepRap строительстве

    2013-11-06 04:00:00 (читать в оригинале)

    Итак, сегодня я вам расскажу как я пришел в тему RepRap и с какими проблемами столкнулся при сборке первого своего 3D Принтера "Mendel Prusa i2".




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

    Совет: Когда покупаете комплект деталей для вашего 3D Принтера или заказываете их 3D Печать, убедитесь что комплект деталей из ABS пластика с заполнением не менее 40%, иначе рискуете поломать детали еще при сборке или они повыходят у вас из стоя при настройке принтера.

    Следующим моим приключением было подключение шаговых двигателей к драйверам. Опыт с шаговыми двигателями у меня достаточный, так что определить пары для меня не проблема, но обозначение выводов на драйверах и материнской плате меня очень удивило. Так как оно не соответствует не одному из промышленных вариантов обозначения. Благо я заранее все электрические соединения сделал на клемниках, для удобства монтажа и наладки оборудования. Что и вам советую сделать.
    Изучив даташит на А4988 и схему драйвера я подключил шаговики. Все заработали кроме одного, рычал и стоял как вкопаный, регулировка тока не помогала. Начал искать причину. Сначала думал что шаговик неправильно подключен, но оказалось что драйвер не рабочий.
    И опять изучение даташита и схемы драйвера, проблема была определена - не работал подстроечный резистор тока, толи сам резистор толи дорожки к нему я так и не определил. Нашел у себя подстроечный резистор и впаял его в драйвер.


    На первое время проблема была решена, но на всякий случай я заказал в запас еще драйверов и как оказалось не зря. Через 2 недели отремонтированный драйвер умер окончательно.

    Совет: При покупке шаговых двигателей уточните у продавца маркировку выводов по цветам или найдите даташит на этот тип шаговика. Покупайте драйвера шаговиков с запасом, мало ли что.

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


    Потом умер хотэнд. Сначала начал забиваться, стали образовываться пробки и в конце концов сопло выдавило из PEEK корпуса. И опять ожидание пока приехали новые хотэнды.


    Совет: Позаботьтесь заранее о хорошем контакте проводов на нагревательный стол. Покупайте сразу запасные хотэнды.

    И последнее. Я использовал компьютерный блок питания и вначале у меня очень долго грелся нагревательный стол, 25-30 минут до 100° и при дополнительном охлаждении печатаемой детали стол не мог удержать заданную температуру. Пошел купил более мощный и дорогой компьютерный БП хорошей фирмы, а он зараза вообще не захотел работать, срабатывала защита в БП и он начинал включаться/выключаться непереставая. Вернулся на дешевый китайский БП. Потом мне надоело это ожидание и я купил промышленный БП, теперь у меня стол греется до 100° за 8 минут.

    Совет: Покупайте сразу хороший промышленный блок питания.

    Вот такой вот у меня опыт самостоятельной сборки 3D Принтера RepRap.

    Спасибо что дочитали до конца! Надеюсь мой опыт оказался вам полезен.

    Удачи в RepRap строительстве!


    При копировании ссылка на источник обязательна.


    Прикручиваем Arduino к Sublime Text

    2013-11-04 23:00:00 (читать в оригинале)

    Ранее я писал как упростить себе работу в OpenSCAD. Сегодня вы узнаете как облегчить себе работу при программировании для Arduino с помощью того же Sublime Text.

    Для Sublime Text существует великое множество различных плагинов, одним из них является Stino. Установив Stino мы получаем всю мощь и удобство Sublime Text и простоту разработки Arduino.




    • После установки появится меню Arduino. Теперь нужно указать плагину где находится каталог с Arduino, меню Arduino - Preferences - Select Arduino Application Folder. В появившемся меню ввода нажмите клавишу Enter и укажите каталог куда установлен Arduino.
    Вот и вся установка. Мы получили Arduino IDE с подсветкой синтаксиса и автозавершением команд.

    При попытке скомпилировать прошивку Marlin, меню Arduino - Verify/Compile, я получил вот такую ошибку:



    Сначала долго не мог понять в чем причина, а оказалось все просто, нужно снять галочку в меню Arduino - Full Compilaton.



    Не забывайте перед компиляцией указать правильную плату в меню Arduino - Arduino AVR Boards.

    Чтобы загрузить скомпилированную прошивку в плату, выберите в меню Arduino - Upload.

    Вот мы и получили гремучую смесь Sublime Text + Arduino.

    Приятного использования!


    При копировании ссылка на источник обязательна.


    Страницы: 1 2 3 

     


    Самый-самый блог
    Блогер ЖЖ все стерпит
    ЖЖ все стерпит
    по сумме баллов (758) в категории «Истории»
    Изменения рейтинга
    Категория «Люди»
    Взлеты Топ 5
    Падения Топ 5


    Загрузка...Загрузка...
    BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
    взяты из открытых общедоступных источников и являются собственностью их авторов.