Съдържание:
- Стъпка 1: Изискване за компоненти
- Стъпка 2: Изтеглете Gui
- Стъпка 3: Свързване
- Стъпка 4: Качете фърмуер и проверете резултата от кода в таблото за управление на Arduino
- Стъпка 5: Проектирайте и отпечатайте всички части в шперплат
- Стъпка 6: Монтаж
- Стъпка 7: Настройка на GBRL настройки
- Стъпка 8: Качете окончателния код и проверете виртуалния резултат в Arduino Uno Software Dashboard
Видео: Робот за избор и поставяне на база Arduino: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Направих супер евтина (по -малко от 1000 долара) ръка за индустриални роботи, за да дам възможност на учениците да хакнат по -мащабна роботика и да даде възможност на малките местни производства да използват роботи в своите процеси, без да разбиват банката. Неговият Eassy да изгради и направи възрастовата група хора от 15 до 50 години.
Стъпка 1: Изискване за компоненти
1. Arduino + щит + щифтове + кабели
2. Мотоконтролер: dm860A (Ebay)
3. Стъпков двигател: 34hs5435c-37b2 (Ebay)
4. Болтове M8x45+60+70 и болтове M8.
5. 12 мм шперплат.
6. 5 мм найлон.
7. Щори шайби 8мм.
8. Винтове за дърво 4.5x40mm.
9. Броячът M3 е потопен, 10. 12v захранване
11. драйвер на серво мотор arduino
Стъпка 2: Изтеглете Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Стъпка 3: Свързване
Свържете проводниците, които са дадени на изображението, за да ви разбере по -добре.
трябва да свържем драйвера на двигателя към Arduino и други конектори, които са необходими според вашия робот.
Стъпка 4: Качете фърмуер и проверете резултата от кода в таблото за управление на Arduino
Инсталиране на фърмуера на Arduino - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
Забележка: При компилиране в Arduino може да получите конфликт. Премахнете всички други библиотеки от папката на вашата библиотека (../documents/Arduino/libraries).
Настройка на фърмуера
Задайте активиране на по -ново изчакване. Използвайте серийна връзка и напишете:
$1=255
Задайте насочване:
$22=1
Не забравяйте да зададете серийно предаване на скорост: 115200
Полезни G-кодове
Задайте нулева точка за робота:
G10 L2 Xnnn Ynnn Znnn
Използвайте нулева точка:
G54
Типична инициализация към централен робот:
G10 L2 X1.5 Y1.2 Z1.1
G54
Преместете робота в бързо положение:
G0 Xnnn Ynnn Znnn
Пример:
G0 X10.0 Y3.1 Z4.2 (връщане)
Преместете робота на позиция със специфична скорост:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (връщане)
F трябва да бъде между 10 (slooooow) и 600 (бързо)
Единици по подразбиране за X, Y и Z
Когато използвате настройките за стъпка/единици по подразбиране (250 стъпки/единица) за GRBL и
стъпково задвижване, настроено за 800 стъпки/об., следните единици се прилагат за всички оси:
+- 32 единици = +- 180 градуса
Пример за обработка на код:
Този код може да комуникира директно с Arduino GRBL.
github.com/damellis/gctrl
Не забравяйте да зададете серийно предаване на скорост: 115200
Код uoload на ардунио
импортиране на java.awt.event. KeyEvent;
импортиране на javax.swing. JOptionPane;
обработка на внос.serial.*;
Сериен порт = нула;
// изберете и променете подходящия ред за вашата операционна система
// оставете като нула, за да използвате интерактивен порт (натиснете 'p' в програмата)
Име на порт на низ = null;
// Име на низ на порт = Serial.list () [0]; // Mac OS X
// Име на низ на порт = "/dev/ttyUSB0"; // Linux
// String portname = "COM6"; // Windows
логическо стрийминг = невярно;
скорост на плаване = 0,001;
String gcode;
int i = 0;
void openSerialPort ()
{
if (име на порт == null) връщане;
if (порт! = нула) port.stop ();
порт = нов сериен (това, име на порт, 115200);
port.bufferUntil ('\ n');
}
void selectSerialPort ()
{
Низов резултат = (Низ) JOptionPane.showInputDialog (това, "Изберете серийния порт, който съответства на вашата платка Arduino.", „Изберете сериен порт“, JOptionPane. PLAIN_MESSAGE, нула, Serial.list (), 0);
if (резултат! = нула) {
portname = резултат;
openSerialPort ();
}
}
void setup ()
{
размер (500, 250);
openSerialPort ();
}
void draw ()
{
фон (0);
попълнете (255);
int y = 24, dy = 12;
текст ("ИНСТРУКЦИИ", 12, у); y += dy;
текст ("p: изберете сериен порт", 12, y); y += dy;
текст ("1: задайте скорост на 0.001 инча (1 мили) на джогинг", 12, y); y += dy;
текст ("2: задайте скорост на 0,010 инча (10 мили) на джогинг", 12, y); y += dy;
текст ("3: задайте скорост на 10000 инча (100 мили) на бягане", 12, y); y += dy;
текст ("клавиши със стрелки: джогинг в x-y равнина", 12, y); y += dy;
текст ("страница нагоре & страница надолу: бягане по ос z", 12, y); y += dy;
text ("$: display grbl settings", 12, y); y+= dy;
text ("h: go home", 12, y); y += dy;
text ("0: нулева машина (задайте начало на текущото местоположение)", 12, y); y += dy;
текст ("g: поточен файл с g-код", 12, y); y += dy;
text ("x: спрете стрийминга на g-код (това НЕ е незабавно)", 12, y); y += dy;
y = височина - dy;
текст ("текуща скорост на джогинг:" + скорост + "инчове на стъпка", 12, y); y -= dy;
текст ("текущ сериен порт:" + име на порт, 12, y); y -= dy;
}
void keyPressed ()
{
if (key == '1') скорост = 0.001;
if (ключ == '2') скорост = 0,01;
if (ключ == '3') скорост = 0,1;
if (! стрийминг) {
if (keyCode == НАЛЯВО) port.write ("G91 / nG20 / nG00 X-" + скорост + "Y0.000 Z0.000 / n");
if (keyCode == RIGHT) port.write ("G91 / nG20 / nG00 X" + скорост + "Y0.000 Z0.000 / n");
if (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + скорост + "Z0.000 / n");
if (keyCode == НАДОЛУ) port.write ("G91 / nG20 / nG00 X0.000 Y-" + скорост + "Z0.000 / n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + скорост + "\ n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + скорост + "\ n");
// if (key == 'h') port.write ("G90 / nG20 / nG00 X0.000 Y0.000 Z0.000 / n");
if (key == 'v') port.write ("$ 0 = 75 / n $ 1 = 74 / n $ 2 = 75 / n");
// if (key == 'v') port.write ("$ 0 = 100 / n $ 1 = 74 / n $ 2 = 75 / n");
if (key == 's') port.write ("$ 3 = 10 / n");
if (key == 'e') port.write ("$ 16 = 1 / n");
if (key == 'd') port.write ("$ 16 = 0 / n");
if (key == '0') openSerialPort ();
if (key == 'p') selectSerialPort ();
if (key == '$') port.write ("$$ / n");
if (key == 'h') port.write ("$ H / n");
}
if (! стрийминг && key == 'g') {
gcode = null; i = 0;
Файлов файл = null;
println ("Зареждане на файл …");
selectInput ("Изберете файл за обработка:", "fileSelected", файл);
}
if (key == 'x') стрийминг = невярно;
}
void fileSelected (избор на файл) {
if (избор == null) {
println ("Прозорецът беше затворен или потребителят натисна отказа.");
} else {
println ("Избран от потребителя" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) връщане;
стрийминг = вярно;
поток ();
}
}
void stream ()
{
if (! стрийминг) връщане;
while (вярно) {
if (i == gcode.length) {
стрийминг = невярно;
връщане;
}
if (gcode .trim (). length () == 0) i ++;
иначе почивка;
}
println (gcode );
port.write (gcode + '\ n');
i ++;
}
void serialEvent (Serial p)
{
Низ s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). startWith ("ok")) stream ();
if (s.trim (). startWith ("грешка")) stream (); // XXX: наистина?
}
Стъпка 5: Проектирайте и отпечатайте всички части в шперплат
Изтеглете частта и дизайна на робота в AutoCAD и отпечатайте върху 12 мм шперплат лист и част за довършителни работи и дизайн. Ако някой се нуждае от CAD файл, моля, оставете коментара в полето за коментари, ще го изпратя директно.
Стъпка 6: Монтаж
съберете цялата част и подредете в дадената последователност на изображението и следвайте схемата на изображението.
Стъпка 7: Настройка на GBRL настройки
Настройка, която доказано работи на нашите роботи.
$ 0 = 10 (стъпков импулс, usec) $ 1 = 255 (закъснение на празен ход, мсек) $ 2 = 7 (маска за инвертиране на стъпков порт: 00000111) $ 3 = 7 (маска за инвертиране на порт dir: 00000111) $ 4 = 0 (стъпка активиране инвертиране, бул) $ 5 = 0 (преобръщане на ограничителните щифтове, bool) $ 6 = 1 (инвертиране на щифта на сондата, bool) $ 10 = 3 (маска за доклад за състоянието: 00000011) $ 11 = 0,020 (отклонение на кръстовището, mm) $ 12 = 0,002 (толеранс на дъгата, mm) $ 13 = 0 (инчове на отчета, бул) $ 20 = 0 (меки граници, бул) $ 21 = 0 (твърди граници, бул) $ 22 = 1 (цикъл на самонасочване, бул) $ 23 = 0 (маска на самонасочващата се реверсия: 00000000) $ 24 = 100 000 (подаване на самонасочване, mm/min) $ 25 = 500.000 (търсене на самонасочване, mm/min) $ 26 = 250 (hoom debounce, msec) $ 27 = 1.000 (homing pull-off, mm) $ 100 = 250.000 (x, стъпка/mm) $ 101 = 250 000 (y, стъпка/mm) $ 102 = 250,000 (z, стъпка/mm) $ 110 = 500,000 (x макс. Скорост, mm/min) $ 111 = 500,000 (y макс. Скорост, mm/min) $ 112 = 500,000 (z max скорост, mm/min) $ 120 = 10.000 (x ускорение, mm/sec^2) $ 121 = 10.000 (y ускорение, mm/sec^2) $ 122 = 10.000 (z ускорение, mm/sec^2) $ 130 = 200.000 (x max ход, mm) $ 131 = 200.000 (y макс. ход, mm) $ 132 = 200.000 (z max ход, mm)
Стъпка 8: Качете окончателния код и проверете виртуалния резултат в Arduino Uno Software Dashboard
// Единици: CM
поплавък b_height = 0;
поплавък a1 = 92;
поплавък a2 = 86;
float snude_len = 20;
логическо doZ = невярно;
float base_angle; // = 0;
float arm1_angle; // = 0;
float arm2_angle; // = 0;
поплавък bx = 60; // = 25;
плава с = 60; // = 0;
поплавък bz = 60; // = 25;
поплавък x = 60;
поплавък y = 60;
поплавък z = 60;
поплавък q;
поплавък c;
поплавък V1;
поплавък V2;
поплавък V3;
поплавък V4;
поплавък V5;
void setup () {
размер (700, 700, P3D);
cam = нов PeasyCam (това, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
void draw () {
// ligninger:
y = (mouseX - ширина/2)*(- 1);
x = (mouseY - височина/2)*(- 1);
bz = z;
от = y;
bx = x;
float y3 = sqrt (bx*bx+by*by);
c = sqrt (y3*y3 + bz*bz);
V1 = acos ((a2*a2+a1*a1-c*c)/(2*a2*a1));
V2 = acos ((c*c+a1*a1-a2*a2)/(2*c*a1));
V3 = acos ((y3*y3+c*c-bz*bz)/(2*y3*c));
q = V2 + V3;
arm1_angle = q;
V4 = радиани (90.0) - q;
V5 = радиани (180) - V4 - радиани (90);
arm2_angle = радиани (180.0) - (V5 + V1);
base_angle = градуси (atan2 (bx, by));
arm1_angle = градуси (arm1_angle);
arm2_angle = градуси (arm2_angle);
// println (by, bz);
// arm1_angle = 90;
// arm2_angle = 45;
/*
arm2_angle = 23;
arm1_angle = 23;
arm2_angle = 23;
*/
// интерактивен:
// ако (doZ)
//
// {
// base_angle = base_angle+ mouseX-pmouseX;
//} друго
// {
// arm1_angle = arm1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ mouseY-pmouseY;
draw_robot (base_angle,-(arm1_angle-90), arm2_angle+90-(-(arm1_angle-90)));
// println (base_angle + "," + arm1_angle + "," + arm2_angle);
}
void draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
rotateX (1.2);
завъртанеZ (-1,2);
фон (0);
светлини ();
pushMatrix ();
// БАЗА
попълнете (150, 150, 150);
box_corner (50, 50, b_height, 0);
завъртане (радиани (основен_ъгъл), 0, 0, 1);
// РЪК 1
попълнете (150, 0, 150);
box_corner (10, 10, a1, arm1_angle);
// РЪК 2
попълнете (255, 0, 0);
box_corner (10, 10, a2, arm2_angle);
// СНЕЖДА
попълнете (255, 150, 0);
box_corner (10, 10, snude_len, -arm1_angle -arm2_angle+90);
popMatrix ();
pushMatrix ();
float action_box_size = 100;
превод (0, -action_box_size/2, action_box_size/2+b_height);
pushMatrix ();
превод (x, action_box_size- y-action_box_size/2, z-action_box_size/2);
попълнете (255, 255, 0);
кутия (20);
popMatrix ();
попълнете (255, 255, 255, 50);
кутия (action_box_size, action_box_size, action_box_size);
popMatrix ();
}
void box_corner (float w, float h, float d, float rotate)
{
завъртане (радиани (завъртане), 1, 0, 0);
превод (0, 0, d/2);
кутия (w, h, d);
превод (0, 0, d/2);
}
void keyPressed ()
{
ако (ключ == 'z')
{
doZ =! doZ;
}
ако (ключ == 'h')
{
// задавам нула
arm2_angle = 0;
arm1_angle = 90;
base_angle = 0;
}
ако (ключ == 'g')
{
println (градуси (V1));
println (градуси (V5));
}
ако (keyCode == НАГОРЕ)
{
z ++;
}
ако (keyCode == НАДОЛУ)
{
z -;
}
ако (ключ == 'o')
{
y = 50;
z = 50;
println (q);
println (c, "c");
println (V1, "V1");
println (V2);
println (V3);
println (arm1_angle);
println (V4);
println (V5);
println (arm2_angle);
}
}
Препоръчано:
Arduino OLED дисплейно меню с опция за избор: 8 стъпки
Arduino OLED Display Menu с опция за избор: В този урок ще се научим как да правим меню с опция за избор, използвайки OLED Display и Visuino
Избор на цвят: 4 стъпки
Избор на цвят: етап 1 Стъпка 1: снабдяване с компоненти Компоненти: Esp. 32 (микроконтролер) Непикселен пръстен 12 & 9 (RGB пръстенова светлина) Цветен сензор 3.7v батерия 3.7v до 5v конвертор Предизвикателства: Получаване на точни измервания за компонентите Стъпка 2: Кодиращи материали: A
RFID базиран робот за избор и поставяне: 4 стъпки
RFID базиран робот за избор и поставяне: От много години хората се опитват да заменят човешката работа с машини. Машините, наречени роботи, са по -бързи и по -ефективни от хората. Терминът роботика е практически дефиниран като изследване, проектиране и използване на роботизирани системи за производство. Роботите са g
Избор на стъпков двигател и драйвер за проект за автоматизиран сенчест екран на Arduino: 12 стъпки (със снимки)
Избор на стъпков двигател и драйвер за проект за автоматизиран сенчест екран на Arduino: В тази инструкция ще премина през стъпките, които предприех, за да избера стъпков двигател и драйвер за прототип на проект за автоматизиран сенчест екран. Сенните екрани са популярните и евтини модели на Coolaroo с ръчно коляно и аз исках да заменя т
UCL - Вграден - Избор и място: 4 стъпки
UCL - Embedded - Pick and Place: Тази инструкция ще разгледа как се прави 2D устройство за избор и поставяне и как да го кодирате