пятница, 16 мая 2014 г.

Сборка дельтаботов - ковыряем МарлИнов.

Итак Kossel-T уже достаточно вышло в свет, а инструкции как это все настраивать все еще нет. Так что инструкцию по сборке надо будет начинать таки с прошивки.
Для начала нам потребуется сама прошивка - Марлин по версии RichCattell на GitHub (ветка обсуждения в Deltagroup)
Также надо будет среда разработки ардуино -качаем последний под нужную ОС
И программа управления самим принтром - я предпочитаю максимально простой printrun

Не думаю, что стоит расписывать установку ПО и распаковку прошивки из архива, поэтому начнем сразу с запуска среды Ардуино.
нам нужен фаил marlin.pde в распакованном архиве прошивки.
Открываем, получаем вот такое окно:




в нем нам нужна вкладка configuration.h:



по основным настройкам:
// This determines the communication speed of the printer
#define BAUDRATE 250000
//#define BAUDRATE 115200
изменяет скорость общения - принтер-компьютер. По умочанию - 250000, если на 250000 возникают ошибки - можно попробовать скорость общения снизить.

#define MOTHERBOARD 33
устанавливает тип используемого контроллера  расшифовка для цифр - над этими строчками:
//// The following define selects which electronics board you have. Please choose the one that matches your setup
// 10 = Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
...
// 21 = Elefu Ra Board (v3)

Итак основной раздел который нас интересует:
//=======================================================================
//============================== Delta Settings =============================
//=======================================================================
// Enable DELTA kinematics
#define DELTA
задает что кинематика таки от дельтабота. )

#define DELTA_SEGMENTS_PER_SECOND 200
При использовании дельта кинематики в процессор перегоняет постоянно стандартный G-code в дельта координатыэта строчка задает сколько на сколько участков будет разбиватся каждое движение. значение по умолчанию 200. можно снизить до 150 без особой потери в качестве. (если используется lcd панель на чипе расширения порта i2c (panelulo2) или есть задержки при печати с sd карты, значение рекомендуется снизить, процессору и так не легко приходится)

Дальше нам пригодится визуальная подсказка где какое значение мереть:
  
#define DEFAULT_DELTA_DIAGONAL_ROD 217.5 // mm
длинна диагоналей

#define DELTA_SMOOTH_ROD_OFFSET 156.4 // mm 
от центральной точки до середины направляющих

#define DELTA_EFFECTOR_OFFSET 24 // mm 
расстояние от центра эффектора до шарнирных соединений к котором крепятся диагонали

#define DELTA_CARRIAGE_OFFSET 24 // mm  
от центра направляющих до шарниров на каретках

#define DEFAULT_DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET)
а вот этим уравнением вся кинематика и описывается

Измеряем все значения - подставляем правильные.

Дальше большую часть пока опустим. и идем сразу в раздел
//=======================================================================
//=============================Mechanical Settings===========================
//=======================================================================

нам нужны следующие строчки:

#define MANUAL_Z_HOME_POS 258  

Расстояние от стола до кончика сопла когда все каретки приехали на home. Это пока предварительное значение можно на него не опираться

#define DEFAULT_AXIS_STEPS_PER_UNIT   {80, 80, 80, 439.5}
количество шагов на мм.  первые три значения - XYZ. дополнительное - экструдер, если требуется подключить еще один - через запятую дописываем пятое значение (также потребуется изменит значение #define NUM_AXIS 4 с 4 на 5)
значение шагов на мм может быть подсчитано как эмпирически (особенно актуально при использовании печатных шкивов) так и математически исходя из значений в калькуляторе для принтеров от Джозефа Прюши. Значение зависят от того на значения микрошага для двигателя  и количестве зубов на шкиву.
Дальше нужно убедится в том что значения
#define EEPROM_SETTINGS
#define EEPROM_CHITCHAT
не закомментированы.

Все. пока можно заливать прошивку на плату. 

Далее запускаем принтран:
и нам нужно будет дописать кнопки подобно моим
нажимаем на "+":






и в выпадающем окошке вносим
название команды (Button tittle)
и саму команду (command)

таким образом создаем кнопки
Calib X - G1 X-65 Y-35
Calib Y - G1 X65 Y-35
Calib Z - G1 X0 Y80




Хорошо прошивка залита кнопки созданы.
идем пить чай и попутно искать что-то круглое что можно катать между соплом и столом и точного размера (например сверло на 8мм ))

открываем репитерхост подключаем принте.
Для начала сверимся что сопло не уходит с стол.
В командной строке
вводим -
G28
G1 Z100

Сверяемся не уехало ли сопло на расстояние много меньше 100мм

если 100 или немного больше:
G1 Z8 (если то что вы нашли - 8мм. если нет - вместо 8 вводим нужное значение)
Сопло должно приехать на позицию X0 Y0 Z8 принимаем прокатив наш щуп под соплом дальше можно приподнять или опустить сопло командой G1 чтобы щуп плотно проходил под соплом.
И вот тут нам пригодятся созданные кнопки. после нажатия сопло будет перемещаться к нужной нам колонне по этому можно определить если ли перекос рабочей плоскости относительно плоскости стола. Так же можно проверить наличие отсутствие "Линзы" (когда все углы выше или ниже относительно центра)

В дальнейшем нам потребуется комманда - M666 при помощи нее мы можем вызывать из ЕЕПРОМ текущие значения геометрии принтера и перезаписывать их не перезаливая целиком прошивку.
M666 L - вызывает список текущих значений.
Current Delta geometry values:
X (Endstop Adj): -3.05
Y (Endstop Adj): -1.83
Z (Endstop Adj): -2.69
P (Z-Probe Offset): X0.00 Y10.00 Z-5.60
A (Tower A Position Correction): -0.04
B (Tower B Position Correction): 0.05
C (Tower C Position Correction): -0.02
I (Tower A Radius Correction): 0.25
J (Tower B Radius Correction): -1.25
K (Tower C Radius Correction): -0.37
R (Delta Radius): 109.60
D (Diagonal Rod Length): 224.59
H (Z-Height): 255.73
Endstop adj - подстрока значений эндстопов для выравнивания рабочей плоскости относительно плоскости стола значения "+" если сопло у этой башни ниже чем требуется. и "-" если выше. значения задаются M666 X(нужное значение)

Delta radius - требуется правка если у принтера есть "линза" уменьшать если ниже чем края и увеличивать если выше. M666 R(значение)

Delta diagonal rod - требуется корректировка для подгонки размеров печатаемого к размерам напечатанного. M666 D(значение)

Z-Height - высота от стола до сопла. M666 Z (значение)

M500 сохранить текущие настройки в EEPROM.
M501 откатить настройки к последним сохраненным



среда, 23 октября 2013 г.

Ретроспектива - Миньоны в банке

Недавно по наводке Andrey Kruykov устроили "день миньонов".
печать - слой 0.1 АБС полностью в поддержках

Поддержки скрывали вот это )

Заодно решил попробовать технологию полировки изделий из АБС парами ацетона.
миньон в банке - видно серебряный "ковшик" на котором стоит модель
Суть довольно проста - берем банку, в нее насыпаем чего-нибудь металлического (можно отпечатать сеточку из ПЛА его ацетон не берет), далее наливаем намного ацетона на дно банки. 1-2мм хватит с головой и сверху ставим отпечатанную модель предварительно прикрепив ее к какой-нибудь основе с ручкой. чтобы можно было после вытянуть из банки не касаясь модели.

Дальше надо нагреть ацетон чтобы он начал испарятся, прогреваем стол на принтере до 80-90 градусов и ставим банку на него. Все. ждем 5-10 минут внимательно следя за моделью - иначе может "поплыть" особенно на тонких деталях.


Итого:
- модель явно сглаживается при этом меняется фактура пластика - при натуральном АБС больше проявляется его "молочность" визуально модель будто покрывают толстым слоем прозрачного лака. Скорее всего на других цветах будет просто глянцевый вид.
итог: обработанный - справа
- печать слоем в 0.1 по этой технологии совершенно не обязательна - можно печатать и 0.2 и 0.3 - отличие только в объеме детализации которую съест обработка.
- теоретически увеличивается прочость модели т.к. верхние слои склеиваются в общую массу
- технология съедает все острые углы на изделии (
-  если не делать принудительную вентиляцию нижняя часть будет оплавлятся быстрее чем верх за счет большей концентрации паров. подозреваю что фен дующий в банку замечательно справится с этой задачей.

среда, 9 октября 2013 г.

бюджетный кард ридер для принтера

Автономная печать это в общем очень круто. Думаю любой у кого 4-х часовой принт терялся из за потери USB соединения меня поймет. в принципе кард ридеры достаточно доступны, чтобы не заморачиватся вещами о которых я сейчас буду писать. Цена на специализированные  (что бы это не значило) кард ридеры для 3д печати порядка 10 баксов, если поискать на китайских супермаркетах типа DX.com по запросу arduino sd-card находятся ридеры от 1.5 до 5 баксов.
я когдато брал c BIC по 1.59usd
1.59 usd
с ними то и приключилась занятная история.
первый кардридер, взятый для проверки, я долго пытался подключить, но он постоянно выдавал ошибку sd карты. Тем не менее, вторая "партия" подключалась совершенно нормально. Посмотрев на них пристальнее я "внезапно" открыл что ридеры совершенно разные по схеме. Китайцы полностью изменили печатку кардридера, но схема на лоте осталась прежняя , не советую на нее ориентироватся.
В общем закинул я ридер в дальний угол до лучших времен. и вот он дождался своего часаю притер начал странно реагировать на включения стоящего рядом холодильника и обрывать соединение каждый раз когда последний включался. Ждать новый ридер из китая полтора месяца очень долго. И я решил перепять то что имею.

взято тут
Для начала надо было найти схему с делителями напряжения на 10кОм ( имеющиеся смд резисторы ).

т.е. на надо было просто добавить резисторы 4.7кОмна каналыб раскопки имеющегося кардридер показали что он таки полностью соответсвует его схеме (и закономерно не работает) в итоге немного подучав как жто все припаять на место я решил всю схему перенести на имеющуюся макетку. 
общая шина земли и резосторы на 4.7кОм идут с другой стороны
описывать процесс отпайки и возвращения элекментов назад смысла особого думаю нет. Разве упомянуть, что разъем отпаивался при помощи сплава розе - плавим его на все ножки и таким способом прогреваем их все разом.

чуть было не забыл заземлить один из контактов, но быстро исправился и все запустилось.

в общем можно обойтись и без китайского магазина. Разъем выпаивается из не рабочего кард ридера (рабочий мне было бы жалко) или делается из сдвоенной планки штырей на  2.54мм
спасибо instructables




Удачной всем бесперебойной печати!

пятница, 4 октября 2013 г.

если каретки не едут вниз

где какие длины
Есть забавная проблема в прошивке марлина для дельтаботов. Если ввести значения дельта длин целым числом без ".0" то при верной механике и электронике  принтер будет уезжать по команде G28 наверх и не будет ехать вниз. M114 при этом будет показывать какие-то бесконечные значения для координат.
Так что если у вас каретка уехала вверх и не желает возвращаются - проверьте значения.

             




                   правильный вид значений:
#define DELTA_DIAGONAL_ROD 222.0 // mm
#define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm
#define DELTA_EFFECTOR_OFFSET 32.33 // mm
#define DELTA_CARRIAGE_OFFSET 18.85// mm

                     а это приведет к ошибке:
#define DELTA_DIAGONAL_ROD 222 // mm
#define DELTA_SMOOTH_ROD_OFFSET 150 // mm
#define DELTA_EFFECTOR_OFFSET 32.33 // mm
#define DELTA_CARRIAGE_OFFSET 18.85// mm


Kossel-T iL2

 У Kossel-T появилась вторая версия. на этот раз больше ориентированная на лазерную резку чем на 3д печать.
Основной являетс версия "мини" с рабочй областью цилиндр Д150мм и высотой печати в 200мм занимаемый размер на столе-  треугольник с стороной в 260мм  (при снятой панели управления)
Общий вид
привод- на основе плетеной лески
привод с ленивцем
честно был заимствован на 3dprinterhell.blogspot.dk давно искал решение которое бы не давало леске уходить в сторону при движении.

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


четверг, 16 мая 2013 г.

Калибровка высоты по Z

Изначально Мендель90, как и прюша, имел эндстоп по Z размещенный снизу. но ноупхэд довольно быстро отказался от этой идеи и перенес его наверх. К жтому моменту я уже намучался с попытками выставить 0 при помощи отвертки и такойто матери. и быстренько сделал тоже самое, фиг меня ктото теперь заставит перейти обратно! Но пост сейчас не о агитации за перестановку эндстопов (хотя оно того стоит). Пост будет о том как откалибровать осб по Z не раздавив стекло на столе.

1. берем кусок оси/болта/сверла с известным диаметром (D), лучше удостоверится в диаметре штангенциркулем. 
2. измеряем расстояние от сопла до стола линейкой и этот размер загоняем в прошивку (обозначим за L).
3. G28 - хоум по всем осям
4. G1 Z00 - где 00=L-D
5. дальше командами пронтерфейса выясняем сколько надо добавить отнять от занчения L чтобы получить првильный размер. Покатываем под соплом наш огрызок если не пролазит - приподнимаем сопло если проходит с запасом - опускаем. Добится надо состояния когда проход свободный вплотную к соплу (тут можно заодно калибровку горизонтальности стола проверить просто проделываем эту процедуру в 4-х углах стола). Дальше приподнимаем голову на 0.2мм и смотрим текушее значение высоты (L1) - M114 (спасибо Hudbrog за подсказанную команду)
6. M114+D наше искомое значение для записи в прошивку.

7. записываем в прошивку новое значение - радуемся )

суббота, 9 марта 2013 г.

Mendel90 и windowserror [error 2]

фига из кармана
Если вам так не в терпеж постороить таки свой варинат Mendel90, а ваш комп выдает вам фигу из кармана:

openscad -o dummy.csg scad/bom.scad
Traceback (most recent call last):
File "E:\openscad\Mendel90\make_machine.py", line 17, in <module>
make_machine(sys.argv[1])
File "E:\openscad\Mendel90\make_machine.py", line 10, in make_machine
boms(machine)
File "E:\openscad\Mendel90\bom.py", line 95, in boms
openscad.run("-o", "dummy.csg", "scad/bom.scad")
File "E:\openscad\Mendel90\openscad.py", line 9, in run
subprocess.call(["openscad"] + list(args), stdout = log, stderr = log)
File "C:\Python27\lib\subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 2]


То думаю у меня есть ответ.
1. Думаю Python 2.7 и OpenScad 2013.01 у вас уже стоит? Если нет - обновляемся. и ставим до комплекта inkscape.
2. Идем по пути джедаев прямиком в "переменные среды" (Пуск -> панель управления->система и безопстность -> система -> дополнительные параметры системы -> дополнительно ->переменные среды) далее  нам надо "системные переменные" -> PATH. в графе Path ставим  ;  в конце строки и дописываем  C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;C:\Program Files (x86)\OpenSCAD;C:\Program Files (x86)\Inkscape\ 
3. после этого открываем командную строку и провяряем вызываются ли Питон и Опенскад  командами Openscad и python соответсвенно.
4. Запускаем проект на рендеринг. )