Съдържание:
- Стъпка 1: Веригата
- Стъпка 2: Линейното задвижване
- Стъпка 3: Барабанът
- Стъпка 4: Съвети за строителството
- Стъпка 5: Алгоритъм за чертеж на линии на Bresenham
- Стъпка 6: Кодът
- Стъпка 7: Меню
- Стъпка 8: Калибриране
- Стъпка 9: Предварителна обработка на Gcode
- Стъпка 10: Резултати
- Стъпка 11: Актуализиране на кода
- Стъпка 12: Drum_plotter_v3.ino
- Стъпка 13: Drum_plotter_plotter_v4.ino
Видео: CNC барабанен плотер: 13 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Тази инструкция описва плотер A4/A3, направен от участък от пластмасова тръба, два стъпкови двигателя BYJ-48 и сервомотор SG-90. По същество това е плотер с плоско легло, навит в барабан.
Единият двигател върти барабана, докато другият премества печатащата глава. Сервото се използва за повдигане и спускане на писалката.
Този плотер има редица предимства пред традиционния плосък плотер:
- значително по -малък отпечатък
- изисква само една линейна направляваща релса
- лесен за конструиране
- евтини
Вграден преводач приема изходния код от Inkscape.
Комуникацията с плотера се осъществява чрез Bluetooth връзка.
Плотерът е съвместим с графичния таблет с ЦПУ, описан в инструкциите ми
Въпреки че не е прецизен инструмент, точността на този плотер е задоволителна по предназначението му за прехвърляне на акварелни очертания върху хартия.
Стъпка 1: Веригата
Схемата включва микроконтролер Arduino UNO R3 и персонализиран щит, върху който са монтирани дискретни компоненти. Захранването се подава чрез външен 5 -волтов регулатор 1 ампер. Средният ток е около 500mA.
Стъпковите двигатели BYJ-48 са прикрепени към PORTB (щифтове D8, D9, D10, D11) и PORTC (щифтове A0, A1, A2, A3). Сервомоторът за повдигане на писалка SG-90 е прикрепен към щифт D3.
Резисторите от 560 ома, които могат да бъдат пропуснати, осигуряват мярка за защита от късо съединение на arduino, ако нещо се обърка. Те също така улесняват свързването на щита, тъй като те действат като „джъмпери“през захранващите релси.
Резисторите 1k2 и 2K2 предотвратяват повреда на модула за Bluetooth HC-06 [1], като понижават 5-волтовия изход от arduino до 3,3 волта.
[1] Изключете модула за Bluetooth HC-06, когато качвате код в arduino през USB порта. Това ще избегне конфликти на сериен порт.
Стъпка 2: Линейното задвижване
Линейното задвижване е направено от алуминиева шина с дължина 3 мм х 32 мм, лента от алуминиева ламарина и четири малки ролки с сачмени лагери.
Алуминият се предлага от повечето магазини за хардуер. U624ZZ 4x13x7mm ролки с U-образни канали са достъпни от
Простите ръчни инструменти са всичко, от което се нуждаете. Нарежете алуминиевия прът, за да отговаря на размерите на плотера ви.
Монтажът на двигателя
Монтирайте стъпаловидния двигател BJY-48 през шината в единия край и прикрепете GT2 20 зъб, 5 мм отвор, ролка към вала на двигателя. Сега монтирайте друга шайба GT2 в другия край на щангата, така че ролката да може да се върти свободно. Използвах тръбен (радио) дистанционер с диаметър 5 мм и 3 мм болт, за да постигна това.
Сега завъртете дължината на зъбния ремък GT2 около ролките. Свържете краищата на ангренажния ремък с помощта на половин усукване, така че зъбите да се преплитат и фиксират с кабелна връзка.
Накрая прикрепете каретката към ангренажния ремък с кабелна връзка.
Каретата в комплект
Каретата е изработена от лента от алуминиев лист [1], към която са закрепени шайбите U624ZZ. Ако е необходимо, използвайте 4 мм шайба, за да отделите ролките от алуминиевия лист.
Ролките, които имат 4 мм жлеб, разположени отгоре и отдолу на алуминиевата шина, така че да няма вертикално движение, но алуминиевата лента се движи свободно наляво и надясно.
За да сте сигурни, че каретата се движи свободно, първо монтирайте горните две ролки, след което, като ролките седят на шината, маркирайте позициите на двете долни ролки. Отворите за тези две ролки вече могат да бъдат пробити. Използвайте първо малка "пилотна" бормашина, за да предотвратите дрейфа на по -голямата 4 мм бормашина.
Преди да огънете алуминиевата лента в "U", пробийте отвор отгоре и отдолу, за да отговаря на диаметъра на писалката. Сега завършете завоите.
Прикрепете ангренажния колан към каретката с помощта на кабелна връзка и 3 мм болт между горните две ролки.
Монтажът на писалката
Прикрепете сервомотор SG-90 към горната част на каретата с помощта на една или две кабелни връзки.
Пуснете писалката надолу по двете дупки, които сте пробили. Уверете се, че писалката се плъзга свободно нагоре и надолу.
Закрепете "яка" към писалката си, така че писалката да е свободна от барабана, когато сервото е в положение за писалка.
[1] Алуминият може да бъде нарязан чрез изрязване на двете страни на листа с остър нож (резачка за кутии), след което огъване на среза над ръба на масата. Няколко мърдания и чаршафът ще се счупи, оставяйки права почивка. За разлика от ламарините, този метод не изкривява алуминия.
Стъпка 3: Барабанът
Барабанът включва секция от пластмасова тръба с две дървени крайни тапи [1].
Използвайте компас, настроен към вътрешния радиус на тръбата, за да очертаете очертанията на крайния щепсел. Сега изрежете около всеки контур с помощта на фина резачка ("справяне", "фрет"), след което поставете всеки край на щепсела по поръчка с помощта на дървена рампа. Закрепете крайните тапи с помощта на малки винтове за дърво.
Инженерният болт от 6 мм през центъра на всяка крайна тапа образува оста.
Размери на барабана
Размерите на барабана се определят от размера на вашата хартия. Диаметърът на барабана от 100 мм поддържа портрет А4 и пейзаж А3. Диаметър на барабана от 80 мм ще поддържа само пейзаж А4. Използвайте възможно най-малък диаметър на барабана, за да намалите инерцията … двигателите BYJ-48 са само малки.
Диаметърът на барабана от 90 мм е идеален за портретна хартия А4 и хартия А3, тъй като противоположните ръбове, когато са увити около барабана, се припокриват с приблизително 10 мм, което означава, че имате само един шев, който да залепите.
Въртене на барабана
Всяка ос преминава през алуминиева крайна скоба, така че барабанът да може да се върти свободно. Крайният поплавък се предотвратява чрез GT-2, 20 зъба, 6 мм отвор, ролка, закрепена към оста в единия край. Непрекъснатият зъбен ремък GT-2 свързва стъпковия двигател BJY-48 с барабана. Моторът изисква ролка с размер на отвора 5 мм.
[1] Пластмасовите крайни тапи са налични за повечето диаметри на тръбите, но са отхвърлени, тъй като се побират над тръбата, а не вътре и пластмасата има склонност да се огъва. Вероятно биха били добре, ако вместо болтовете се използва непрекъсната ос … но тогава се нуждаете от някакъв метод за фиксиране на оста към крайните тапи.
Стъпка 4: Съвети за строителството
Уверете се, че писалката се движи по центъра на барабана. Това може да се постигне чрез изрязване на ъглите от дървените подпори. Ако писалката е извън центъра, тя ще се плъзне надолу отстрани на барабана.
Точното пробиване на двата отвора за химикалки е важно. Всяко клатене в ръководството на писалката или каретката ще предизвика колебания по оста X.
Не затягайте прекалено много зъбните ремъци на GT-2 … те просто трябва да бъдат опънати. Стъпковите двигатели BYJ-48 нямат много въртящ момент.
Стъпковите двигатели BJY-48 често показват малки количества луфтове, които са незначителни по оста X, но предизвикват безпокойство, когато става въпрос за оста Y. Причината за това е, че едно завъртане на двигателя по оста Y се равнява на едно завъртане на барабана, докато носачът на писалката изисква много завъртания на двигателя по оста X, за да премине дължината на барабана. Всяка реакция по оста Y може да бъде елиминирана чрез поддържане на постоянен въртящ момент върху барабана. Един прост метод е да прикрепите малка тежест към найлонов кабел, увит около барабана.
Стъпка 5: Алгоритъм за чертеж на линии на Bresenham
Този плотер използва оптимизирана версия [1] на алгоритъма за чертане на линии на Bresenham. За съжаление този алгоритъм е валиден само за наклони на линии, по -малки или равни на 45 градуса (т.е. един октант от окръжност).
За да заобиколя това ограничение, аз "картографирам" всички XY входове към първия "октант", след което ги "демартирам", когато дойде време за начертаване. Функциите за картографиране на входа и изхода за постигане на това са показани в горната диаграма.
Деривация
Останалата част от тази стъпка може да бъде пропусната, ако сте запознати с алгоритъма на Bresenham.
Нека начертаем линия от (0, 0) до (x1, y1), където:
- x1 = 8 = хоризонтално разстояние
- y1 = 6 = вертикално разстояние
Уравнението за права линия, преминаваща през началото (0, 0), се дава от уравнението y = m*x, където:
m = y1/x1 = 6/8 = 0,75 = наклон
Прост алгоритъм
Един прост алгоритъм за начертаване на тази линия е:
- int x1 = 8;
- int y1 = 6;
- поплавък m = y1/x1;
- сюжет (0, 0);
- за (int x = 1; x <= x1; x ++) {
- int y = кръг (m*x);
- парцел (x, y);
- }
Таблица 1: Прост алгоритъм
х | м | m*x | y |
---|---|---|---|
0 | 0.75 | 0 | 0 |
1 | 0.75 | 0.75 | 1 |
2 | 0.75 | 1.5 | 2 |
3 | 0.75 | 2.25 | 2 |
4 | 0.75 | 3 | 3 |
5 | 0.75 | 3.75 | 4 |
6 | 0.75 | 4.5 | 5 |
7 | 0.75 | 5.25 | 5 |
8 | 0.75 | 6 | 6 |
Има два проблема с този прост алгоритъм:
- основният цикъл съдържа бавно умножение
- използва числа с плаваща запетая, което също е бавно
Графика на y спрямо x за тази линия е показана по -горе.
Алгоритъмът на Брезенхам
Bresenham въведе концепцията за термин за грешка „e“, който се инициализира до нула. Той осъзна, че стойностите на m*x, показани в таблица 1, могат да бъдат получени чрез последователно добавяне на „m“към „e“. Освен това той осъзна, че y се увеличава само ако дробната част на m*x е по -голяма от 0,5. За да запази сравнението си в диапазона 0 <= 0,5 <= 1, той изважда 1 от 'e', когато y се увеличава.
- int x1 = 8;
- int y1 = 6;
- поплавък m = y1/x1;
- int y = 0;
- поплавък e = 0;
- сюжет (0, 0);
- за (int x = 1; x <= x1; x ++) {
- e+= m;
- ако (e> = 0,5) {
- e -= 1;
- y ++;
- }
- парцел (x, y);
- }
Таблица 2: Алгоритъмът на Bresenham
х | м | д | e-1 | y |
---|---|---|---|---|
0 | 0.75 | 0 | 0 | 0 |
1 | 0.75 | 0.75 | -0.25 | 1 |
2 | 0.75 | 0.5 | -0.5 | 2 |
3 | 0.75 | 0.25 | 2 | |
4 | 0.75 | 1 | 0 | 3 |
5 | 0.75 | 0.75 | -0.25 | 4 |
6 | 0.75 | 0.5 | -0.5 | 5 |
7 | 0.75 | 0.25 | 5 | |
8 | 0.75 | 1 | 0 | 6 |
Ако разгледате алгоритъма и таблица 2, ще забележите, че;
- основният цикъл използва само събиране и изваждане … няма умножение
- моделът за y е същият като за таблица 1.
Но ние все още използваме числа с плаваща запетая … нека поправим това.
(Оптимизиран) алгоритъм на Bresenham
Алгоритъмът на Bresenham с плаваща запетая може да бъде преобразуван в цяло число, ако мащабираме „m“и „e“с 2*x1, в който случай m = (y1/x1)*2*x1 = 2*y1
Освен мащабиране на „m“и „e“алгоритъмът е подобен на този по -горе, с изключение на:
- добавяме 2*y1 към „e“всеки път, когато увеличаваме „x“
- увеличаваме y, ако e е равно или по -голямо от x1.
- изваждаме 2*x1 от 'e' вместо 1
- x1 се използва за сравнение вместо 0,5
Скоростта на алгоритъма може да бъде допълнително увеличена, ако цикълът използва нула за теста. За да направим това, трябва да добавим отместване към термина за грешка „e“.
- int x1 = 8;
- int y1 = 6;
- int m = (y1 << 1); // константа: наклон, мащабиран с 2*x1
- int E = (x1 << 1); // константа: 2*x1 за използване в цикъл
- int e = -x1; // отместване на -E/2: тестът вече е направен на нула
- сюжет (0, 0);
- int y = 0;
- за (x = 1; x <= x1; x ++) {
- e += m;
- ако (e> = x1) {
- e -= E
- y ++;
- }
- парцел (x, y);
- }
Таблица 3: Алгоритъмът на Bresenham (оптимизиран)
х | м | E | д | д - Д | y |
---|---|---|---|---|---|
0 | 12 | 16 | -8 | 0 | |
1 | 12 | 16 | 4 | -12 | 1 |
2 | 12 | 16 | 0 | -16 | 2 |
3 | 12 | 16 | -4 | 2 | |
4 | 12 | 16 | 8 | -8 | 3 |
5 | 12 | 16 | 4 | -12 | 4 |
6 | 12 | 16 | 0 | -16 | 5 |
7 | 12 | 16 | -4 | 5 | |
8 | 12 | 16 | 8 | -8 | 6 |
Отново моделът за y е същият като в другите таблици. Интересно е да се отбележи, че таблица 3 съдържа само цели числа и че съотношението m/E = 12/16 = 0,75, което е наклонът „m“на линията.
Този алгоритъм е изключително бърз, тъй като основният цикъл включва само събиране, изваждане и сравнение с нула. Умножението не се използва освен когато инициализираме стойностите за „E“и „m“, използвайки „смяна наляво“, за да удвоим стойностите на x1 и y1.
[1] Тази оптимизирана версия на алгоритъма на Bresenham е от документ "Bresenham Line and Circle Drawing", авторски права © 1994-2006, W Randolph Franklin (WRF). Неговият материал може да се използва за научни изследвания и образование с нестопанска цел, при условие, че го кредитирате и се върнете към началната му страница,
Стъпка 6: Кодът
Изтеглете прикачения файл в папка със същото име, след което го качете в плотера с помощта на вашата arduino IDE (интегрирана среда за разработка).
Изключете модула HC-06 bluetoorh, преди да опитате качването. Това е необходимо, за да се избегне конфликт на сериен порт с USB кабела.
Код на трета страна
В допълнение към горепосочения.ino код ще ви трябват следните софтуерни пакети, които са безплатни / дарения-фаянс:
- Teraterm, който е достъпен от
- Inkscape, който е достъпен от
Инструкции за инсталиране и използване на всеки от горните пакети на трети страни могат да бъдат намерени в моята статия
Стъпка 7: Меню
Направете Bluetooth връзка с вашия плотер, като използвате "Teraterm".
Включете „Caps Lock“, тъй като всички команди са с главни букви.
Въведете буквата „M“и трябва да се появи меню, както е показано по -горе.
Менюто е разбираемо само по себе си:
- M (или M0) извежда менюто
- G0 ви позволява да изпращате писалката до определена XY координата с повдигната писалка.
- G1 ви позволява да изпращате писалката до определена координата XY с наведена писалка.
- T1 ви позволява да позиционирате писалката си над 0, 0 координатата. Въведете „E“, за да излезете.
- T2 ви позволява да мащабирате чертежа си. Например „T2 S2.5“ще мащабира чертежа ви с 250%. Скалата по подразбиране е 100%
- T3 и T4 ви позволяват да повдигате или спускате писалката.
- T5 рисува "ABC" тест модел.
- Т6 рисува "мишена".
- T7 рисува набор от радиални линии, чиято цел е да провери дали алгоритъмът на Bresenham работи във всеки от осемте "октанта"
Бележки:
- всички движения на писалката използват скалата за рисуване, зададена с помощта на опция от менюто T2
- числата "17:" и "19:" са кодовете за ръкостискане на терминала "Xon" и "Xoff" от интерпретатора arduino.
Стъпка 8: Калибриране
Стойностите за X_STEPS_PER_MM и Y_STEPS_PER_MM са за барабан с диаметър 90 мм.
Стойностите за други диаметри на барабана могат да бъдат изчислени, като се използват следните съотношения:
- обиколката на барабана е PI*диаметър
- 2048 стъпки са равни на един оборот на всеки вал на двигателя
- един оборот на ролка GT-2 се равнява на 40 милиметра линейно движение на зъбен ремък
Друг метод е да въведете следните команди,
- G1 X0 Y100
- G1 X100 Y100
след това измерете дължината на получените редове и "мащабирайте" стойностите за X-STEPS_PER_MM и Y_STEPS_PER_MM
Стъпка 9: Предварителна обработка на Gcode
Този плотер изисква само четири от g кодовете Inkscape (а именно: G0, G1, G2, G3). Кодът ще се изпълнява значително по -бързо, ако премахнем всички ненужни gcode и коментари.
За да направите това, имате нужда от копие на „Notepad ++“. Този безплатен текстов редактор съдържа търсачка с „регулярен израз“за намиране и премахване на нежелан текст. Notepad ++ е достъпен от
Отворете файла за промяна с Notepad ++ и поставете курсора в горната част на файла.
Изберете „Преглед/Показване на символ/Всички знаци“, последвано от „Търсене/Замяна …“от горната лента с менюта.
Поставете отметка в квадратчето „Редовен израз“(вижте първото изображение) и въведете всяка от следните кодови последователности в полето за търсене.
Кликнете върху „Замяна на всички“след всеки запис:
- %
- (.*)
- ^М.*$
- З.*$
Горните регулярни изрази премахват всички символи %, всички коментари, показани в скоби, всички М кодове, всички Z кодове и кодовете, които следват.
Сега щракнете върху квадратчето за отметка „Разширен израз“(вижте второто изображение) и въведете следната кодова последователност:
r / n / r / n / r / n
Този израз премахва нежеланите връщания на каретки и емисии на редове, създадени от първата поредица.
Запазете файла си под друго име, като използвате „Запазване като“.
Свършен.
Стъпка 10: Резултати
Този плотер е създаден като "доказателство за концепцията" и никога не е имал намерение да бъде перфектен. Като каза, че резултатите не са лоши. Те определено отговарят на моята дизайнерска цел за прехвърляне на акварелни контури върху хартия.
Първите три изображения са вградените тестови модели съответно T5, T6, T7.
„Здравей свят!“моделът е изпратен до плотера чрез Bluetooth. Приложено е "предварително обработено" копие на този файл.
Стъпка 11: Актуализиране на кода
Кодът за този плотер е актуализиран до Drum_Plotter_V2.ino.
Промените от оригиналния Drum_Plotter.ino включват:
- по -гладко позициониране на писалката
- сега разпознава инструкциите за G02 gcode (дъги по часовниковата стрелка)
- сега разпознава инструкциите за G03 gcode (дъги обратно на часовниковата стрелка)
Приложената диаграма очертава моя метод за изчисляване на ъгъла на дъгата.
Стъпка 12: Drum_plotter_v3.ino
Приложена е актуализация на кода за "CNC Drum Plotter".
"drum_plotter_v3.ino" коригира малка грешка, която повлия на точността на плотера.
Промяна на историята
Версия 2:
Добавени би-дъгови криви
Версия 3:
Следните функции бяха пренаписани за справяне с незначителна грешка, която повлия на точността на плотера.
- (int) заменено с round () във функцията move_to ().
- draw_line () алгоритъмът за търсене "октант" е подобрен
- Интерпретаторът сега използва низови функции, а не указатели, което опростява дизайна. Например сега можем да търсим „MENU“, вместо да търсим буквата „M“, след което да извлечем следващото цяло число. Това ви позволява да персонализирате плотера със собствени команди.
Стъпка 13: Drum_plotter_plotter_v4.ino
16 януари 2017 г.:
Кодът за този барабанен плотер е допълнително оптимизиран. Добавени са допълнителни функции.
Промените включват:
- по -бърз алгоритъм draw_line ()
- съвпадаща функция move_to ()
- броячи на стъпки
- отстраняване на малки грешки
За повече подробности прочетете коментарите в прикачения "drum_plotter_v4.ino".
Щракнете тук, за да видите другите ми инструкции.
Препоръчано:
MIDI барабанен комплект на Python и Arduino: 5 стъпки (със снимки)
MIDI барабанен комплект на Python и Arduino: Винаги съм искал да си купя барабанен комплект от малък. Тогава цялото музикално оборудване нямаше всички цифрови приложения, каквито имаме в днешно време, следователно цените заедно с очакванията бяха твърде високи. Наскоро реших да си купя c
MXY Board - нискобюджетна роботна дъска за чертеж на XY плотер: 8 стъпки (със снимки)
MXY Board - нискобюджетен робот за рисуване на плочки XY: Моята цел беше да проектирам дъската mXY, за да направя нискобюджетната машина за рисуване на плочки XY. Затова проектирах дъска, която улеснява онези, които искат да направят този проект. В предишния проект, докато използвате 2 броя стъпалови двигатели Nema17, тази платка използва
CNC робот плотер: 11 стъпки (със снимки)
CNC робот плотер: а. Статии {размер на шрифта: 110.0%; тегло на шрифта: удебелен; стил на шрифта: курсив; декорация на текст: няма; background-color: red;} a.articles: hover {background-color: black;} Тази инструкция описва плотер за роботи с CNC управление. Роботът включва
Arduino CNC плотер (МАШИНА ЗА ЧЕРЕЖЕНЕ): 10 стъпки (със снимки)
Arduino CNC плотер (МАШИНА ЗА ЧЕРЕЖЕНЕ): Здравейте момчета! Надявам се, че вече сте се насладили на предишните ми инструкции " Как да направите своя собствена платформа за обучение Arduino " и вие сте готови за нов, както обикновено, направих този урок, за да ви ръководя стъпка по стъпка, докато правите този вид супер невероятно
Мини CNC плотер Arduino (с Proteus Project & PCB): 3 стъпки (със снимки)
Ардуино мини CNC плотер (с Proteus Project & PCB): Този arduino мини CNC или XY плотер може да пише и прави дизайн в диапазона от 40x40 мм. Да, този диапазон е кратък, но е добър старт за скок в света на arduino. [Дадох всичко в този проект, дори печатни платки, протеинов файл, примерен дизайн и