Мазмұны:
- 1 -қадам: компоненттерге қойылатын талаптар
- 2 -қадам: Gui жүктеп алыңыз
- 3 -қадам: Қосылу
- 4 -қадам: микробағдарламаны жүктеңіз және Arduino бақылау тақтасындағы код нәтижесін тексеріңіз
- 5 -қадам: фанера парағының барлық бөлігін жобалау және басып шығару
- 6 -қадам: құрастыру
- 7 -қадам: GBRL параметрлерін орнатыңыз
- 8 -қадам: Қорытынды кодты жүктеп, Arduino Uno бағдарламалық құралдар тақтасындағы виртуалды нәтижені тексеріңіз
Бейне: Arduino негізін таңдау және орналастыру роботы: 8 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Мен студенттерге үлкен көлемді робототехниканы бұзуға және шағын жергілікті өндірістерге роботтарды банкті бұзбай -ақ қолдануға мүмкіндік беретін өте арзан (1000 доллардан аз) өнеркәсіптік робот білігін жасадым. Бұл 15 жастан 50 жасқа дейінгі адамдарды құруға және жасауға оңай.
1 -қадам: компоненттерге қойылатын талаптар
1. Arduino + Shield + түйреуіштер + кабельдер
2. Моторконтроллер: dm860A (Ebay)
3. Қадамдық қозғалтқыш: 34hs5435c-37b2 (Ebay)
4. M8x45+60+70 болттар мен M8 болттар.
5. 12 мм фанера.
6. 5 мм нейлон.
7. Соқыр шайбалар 8мм.
8. Ағаш бұрандалар 4,5х40мм.
9. М3 есептегіш батып кетті, 10. 12в қуат көзі
11. servo мотор жүргізушісі 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
Серияны bod күйіне қоюды ұмытпаңыз: 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
Ардуниодағы код
java.awt.event. KeyEvent импорттау;
javax.swing. JOptionPane импорттау;
импортты өңдеу.сериал.*;
Сериялық порт = бос;
// операциялық жүйеге сәйкес жолды таңдаңыз және өзгертіңіз
// интерактивті портты пайдалану үшін нөл ретінде қалдырыңыз (бағдарламада 'p' басыңыз)
Жолдың аты = null;
// Жолдың порт аты = Serial.list () [0]; // Mac OS X
// Жолдың порт атауы = «/dev/ttyUSB0»; // Linux
// Жолдың порт аты = «COM6»; // Windows
логикалық ағын = жалған;
қалқу жылдамдығы = 0,001;
Жол gcode;
int i = 0;
жарамсыз openSerialPort ()
{
if (portname == null) қайтару;
if (port! = null) port.stop ();
порт = жаңа сериялық (бұл, порт атауы, 115200);
port.bufferUntil ('\ n');
}
selectSerialPort () жарамсыз
{
Жол нәтижесі = (Жол) JOptionPane.showInputDialog (бұл, «Arduino тақтасына сәйкес келетін сериялық портты таңдаңыз.», «Сериялық портты таңдау», JOptionPane. PLAIN_MESSAGE, нөл, Serial.list (), 0);
if (нәтиже! = нөл) {
порт аты = нәтиже;
openSerialPort ();
}
}
жарамсыз орнату ()
{
өлшемі (500, 250);
openSerialPort ();
}
жарамсыз жеребе ()
{
фон (0);
толтыру (255);
int y = 24, dy = 12;
мәтін («НҰСҚАУЛАР», 12, у); y += dy;
мәтін («p: сериялық портты таңдау», 12, у); y += dy;
мәтін («1: жылдамдықты 0,001 дюймге (1 миль) жүгіруге орнату», 12, у); y += dy;
мәтін («2: жүгіру жылдамдығын 0,010 дюймге (10 миль) қою», 12, у); y += dy;
мәтін («3: жүгіруді 0.100 дюймге (100 миль) орнатыңыз», 12, у); y += dy;
мәтін («көрсеткі пернелері: x-y жазығында жүгіру», 12, у); y += dy;
мәтін («бет жоғары және бет төмен: жүгіру z осінде», 12, у); y += dy;
мәтін («$: display grbl settings», 12, y); y+= dy;
мәтін («с: үйге бар», 12, у); y += dy;
мәтін («0: нөлдік машина (үйді ағымдағы орынға орнату)», 12, у); y += dy;
мәтін («g: а-кодтық файлды ағынмен жіберу», 12, у); y += dy;
мәтін («x: g-кодты жіберуді тоқтатыңыз (бұл бірден емес)», 12, у); y += dy;
y = биіктігі - dy;
мәтін («ағымдағы жүгіру жылдамдығы:» + жылдамдық + «дюйм бір қадамға», 12, у); y -= dy;
мәтін («ағымдағы сериялық порт:» + порт атауы, 12, у); y -= dy;
}
void пернесі басылды ()
{
if (key == '1') жылдамдық = 0,001;
if (key == '2') жылдамдық = 0,01;
if (key == '3') жылдамдық = 0,1;
if (! ағынмен) {
if (keyCode == LEFT) 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 == DOWN) 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 = бос; i = 0;
Файлдық файл = null;
println («Файл жүктелуде …»);
selectInput («Өңделетін файлды таңдаңыз:», «fileSelected», файл);
}
if (key == 'x') ағын = жалған;
}
void fileSelected (Файлды таңдау) {
if (таңдау == бос) {
println («Терезе жабылды немесе пайдаланушы бас тартты.»);
} басқа {
println («Пайдаланушы таңдалды» + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) қайтару;
ағын = ақиқат;
ағын ();
}
}
бос ағын ()
{
егер (! ағынмен) оралса;
while (true) {
егер (i == gcode.length) {
ағын = жалған;
қайтару;
}
if (gcode .trim (). length () == 0) i ++;
басқа үзіліс;
}
println (gcode );
port.write (gcode + '\ n');
i ++;
}
жарамсыз serialEvent (сериялық р)
{
Жол s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). startWith («ok»)) stream ();
if (s.trim (). beginWith («қате»)) stream (); // XXX: шынымен?
}
5 -қадам: фанера парағының барлық бөлігін жобалау және басып шығару
Робот бөлігі мен дизайнын AutoCAD -те жүктеп алып, 12 мм фанера парағына және әрлеу мен дизайн бөлігіне басып шығарыңыз. Егер біреуге cad файлы қажет болса, пікірді түсініктеме бөлімінде қалдырыңыз, мен сізге тікелей жіберемін.
6 -қадам: құрастыру
барлық бөлікті жинап, берілген суреттің ретін реттеңіз және сурет диаграммасын орындаңыз.
7 -қадам: GBRL параметрлерін орнатыңыз
Бұл біздің роботтарда жұмыс істейтінін дәлелдеді.
$ 0 = 10 (қадамдық импульс, usec) $ 1 = 255 (бос тұрудың кешігуі, msec) $ 2 = 7 (қадамдық порттың инверттеу маскасы: 00000111) $ 3 = 7 (dir port invert mask: 00000111) $ 4 = 0 (invert, bool $ 5 = 0 (шекті түйреуіштерді инверттеу, бол) $ 6 = 1 (зондты бұру, бол) $ 10 = 3 (күй туралы есеп маскасы: 00000011) $ 11 = 0,020 (түйістің ауытқуы, мм) $ 12 = 0,002 (доға төзімділігі, мм) $ 13 = 0 (есеп дюймі, бол) $ 20 = 0 (жұмсақ шектеулер, бол) $ 21 = 0 (қатаң шектеулер, бол) $ 22 = 1 (homing циклы, бол) $ 23 = 0 (homing dir invert маскасы: 00000000) $ 24 = 100.000 (homing feed, мм/мин) $ 25 = 500.000 (homing search, мм/мин) $ 26 = 250 (homing debounce, msec) $ 27 = 1.000 (homing pull-off, mm) $ 100 = 250.000 (x, step/mm) $ 101 = 250.000 (у, қадам/мм) $ 102 = 250.000 (z, қадам/мм) $ 110 = 500.000 (x максималды жылдамдық, мм/мин) $ 111 = 500.000 (у максималды жылдамдық, мм/мин) $ 112 = 500.000 (z максималды жылдамдық, мм/мин) $ 120 = 10.000 (x accel, mm/sec^2) $ 121 = 10.000 (y accel, mm/sec^2) $ 122 = 10.000 (z accel, mm/sec^2) $ 130 = 200.000 (x max travel, мм) $ 131 = 200.000 (у максималды саяхат, мм) $ 132 = 200.000 (z максималды жол жүру, мм)
8 -қадам: Қорытынды кодты жүктеп, Arduino Uno бағдарламалық құралдар тақтасындағы виртуалды нәтижені тексеріңіз
// Бірліктер: CM
float b_height = 0;
float a1 = 92;
float a2 = 86;
float snude_len = 20;
логикалық doZ = жалған;
float base_angle; // = 0;
қалқымалы қол1_бұрыш; // = 0;
қалқымалы қол2_angle; // = 0;
float bx = 60; // = 25;
= 60; // = 0;
float bz = 60; // = 25;
float x = 60;
у = 60;
float z = 60;
қалқу q;
қалқыма c;
қалқымалы V1;
қалқымалы V2;
қалқымалы V3;
қалқымалы V4;
қалқымалы V5;
жарамсыз орнату () {
өлшемі (700, 700, P3D);
cam = жаңа PeasyCam (бұл, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
жарамсыз жеребе () {
// қосқыш:
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);
негізгі_бұрыш = градус (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)
//
// {
// базалық_бұрыш = негізгі_бұрыш+ mouseX-pmouseX;
//} басқа
// {
// arm1_angle = arm1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ mouseY-pmouseY;
draw_robot (негізгі_бұрыш,-(arm1_angle-90), arm2_angle+90-(-(arm1_angle-90)));
// println (base_angle + «,» + arm1_angle + «,» + arm2_angle);
}
жарамсыз draw_robot (қалқымалы базалық бұрыш, қалқымалы қол1_бұрыш, қалқымалы қол2_бұрыш)
{
rotateX (1.2);
rotateZ (-1.2);
фон (0);
шамдар ();
pushMatrix ();
// НЕГІЗ
толтыру (150, 150, 150);
box_corner (50, 50, b_height, 0);
айналдыру (радиандар (негізгі_бұрыш), 0, 0, 1);
// ARM 1
толтыру (150, 0, 150);
box_corner (10, 10, a1, arm1_angle);
// ARM 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, -акция_бокс_өлшемі/2, әрекет_бөлігі_өлшемі/2+b_ биіктігі);
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 ();
}
бос_бұрыш
{
айналдыру (радиандар (айналдыру), 1, 0, 0);
аудару (0, 0, d/2);
қорап (w, h, d);
аудару (0, 0, d/2);
}
void пернесі басылды ()
{
егер (кілт == 'z')
{
doZ =! doZ;
}
егер (кілт == 'h')
{
// барлығын нөлге қойыңыз
arm2_angle = 0;
arm1_angle = 90;
base_angle = 0;
}
егер (кілт == 'g')
{
println (градус (V1));
println (градус (V5));
}
егер (keyCode == UP)
{
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 RGB түстерді таңдау құралы - нақты объектілерден түстерді таңдау: 7 қадам (суреттермен)
Arduino RGB түстерді таңдау құралы - нақты өмірдегі объектілерден түстерді таңдау: Arduino негізіндегі RGB түс таңдағышының көмегімен физикалық объектілерден түстерді оңай таңдаңыз, бұл сізге компьютерде немесе ұялы телефонда нақты өмірде көрген түстерді қайта құруға мүмкіндік береді. Арзан TCS347 көмегімен объектінің түсін сканерлеу үшін түймені басыңыз
RFID негізіндегі таңдау және орналастыру роботы: 4 қадам
RFID негізіндегі таңдау және орналастыру роботы: Көптеген жылдар бойы адамдар адам жұмысын машинамен алмастыруға тырысады. Роботтар деп аталатын машиналар адамдарға қарағанда жылдам әрі тиімді. Робототехника термині іс жүзінде өндіріс үшін робот жүйесін зерттеу, жобалау және қолдану ретінде анықталады. Роботтар - бұл
UCL - ендірілген - таңдау және орналастыру: 4 қадам
UCL - Ендірілген - таңдау және орналастыру: Бұл нұсқаулық 2D таңдау және орналастыру қондырғысы қалай жасалатынын және оны қалай кодтау керектігін көрсетеді
UArm көмегімен көруге негізделген таңдау және орналастыру: 6 қадам
UArm көмегімен көруге негізделген таңдау және орналастыру: Жақында біз сізден еститін сұраулардың көпшілігі объектіні тану, камера-uArm корреляциясы сияқты uArm-дің көруге негізделген қосымшалары туралы. Біз бұл үшін жұмыс жасадық. Біз қарапайым көзқарасқа негізделген
Банан телефонын (стационарлық) және банан негізін қалай жасауға болады: 20 қадам (суреттермен)
Банан телефонын (қалалық телефон) және банан базалық блокты қалай жасауға болады: бұл. Сізде Рождестводан бірнеше апта бұрын ғана бар, және сіз шын мәнінде түпнұсқалық сыйлық табуыңыз керек және сіздің қаншалықты шебер екеніңізді көрсетеді. Мыңдаған таңдау бар, бірақ сіз шынымен жасағыңыз келетін нәрсе - банан телефоны