فهرست مطالب:
- مرحله 1: الزامات اجزاء
- مرحله 2: Gui را بارگیری کنید
- مرحله 3: اتصال
- مرحله 4: سیستم عامل را بارگذاری کرده و نتیجه کد را در داشبورد آردوینو بررسی کنید
- مرحله 5: طراحی و چاپ تمام قسمتها در ورق تخته سه لا
- مرحله ششم: مونتاژ
- مرحله 7: تنظیمات GBRL را تنظیم کنید
- مرحله 8: کد نهایی را بارگذاری کرده و نتیجه مجازی را در داشبورد نرم افزار Arduino Uno بررسی کنید
تصویری: ربات انتخاب و مکان آردوینو: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
من یک بازوی ربات صنعتی بسیار ارزان (کمتر از 1000 دلار) ایجاد کرده ام تا دانش آموزان بتوانند روباتیک در مقیاس بزرگتر را هک کنند و تولیدات کوچک محلی را قادر سازم که از ربات ها در فرایندهای خود بدون شکستن بانک استفاده کنند. هدف آن ایجاد و ایجاد گروه سنی 15 تا 50 سال است.
مرحله 1: الزامات اجزاء
1. آردوینو + سپر + پین + کابل
2. کنترل کننده موتور: dm860A (Ebay)
3. استپرموتور: 34hs5435c-37b2 (Ebay)
4. پیچ و مهره M8x45+60+70 و پیچ و مهره M8.
5. تخته سه لا 12 میلی متری.
6. نایلون 5 میلی متری.
7. واشر کور 8 میلی متر.
8. پیچ های چوبی 4.5x40 میلی متر.
9. شمارنده M3 غرق شد ،
10. منبع تغذیه 12 ولت
11. سروو موتور راننده آردوینو
مرحله 2: Gui را بارگیری کنید
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
مرحله 3: اتصال
سیمهایی که در تصویر نشان داده شده است را برای شما درک کنید.
ما باید راننده موتور را به آردوینو و دیگر اتصالات مورد نیاز ربات خود متصل کنیم.
مرحله 4: سیستم عامل را بارگذاری کرده و نتیجه کد را در داشبورد آردوینو بررسی کنید
نصب سیستم عامل در Arduino - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
توجه: ممکن است هنگام کامپایل در آردوینو دچار تضاد شوید. همه کتابخانه های دیگر را از پوشه کتابخانه خود (../documents/Arduino/libraries) حذف کنید.
راه اندازی سیستم عامل
فعال کردن را روی مهلت زمانی جدیدتر تنظیم کنید. از اتصال سریال استفاده کنید و بنویسید:
$1=255
تنظیم خانه:
$22=1
به یاد داشته باشید که سریال را روی baud: 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 (آرام) و 600 (سریع) باشد
واحدهای پیش فرض برای X ، Y و Z
هنگام استفاده از تنظیمات پیش فرض گام/واحد (250 مرحله/واحد) برای GRBL و
درایو استپر برای 800 مرحله/دور تنظیم شده است ، واحدهای زیر برای همه محورها اعمال می شود:
+- 32 واحد = +- 180 درجه
مثال پردازش کد:
این کد می تواند مستقیماً با Arduino GRBL ارتباط برقرار کند.
github.com/damellis/gctrl
به یاد داشته باشید که سریال را روی baud: 115200 تنظیم کنید
کد uoload in ardunio
واردات java.awt.event. KeyEvent ؛
واردات javax.swing. JOptionPane؛
پردازش واردات. سریال.*؛
پورت سریال = null؛
// خط مناسب سیستم عامل خود را انتخاب و اصلاح کنید
// برای استفاده از پورت تعاملی به عنوان null ترک کنید ('p' را در برنامه فشار دهید)
نام پورت رشته = null؛
// رشته پورت رشته = Serial.list () [0]؛ // Mac OS X
// رشته پورت رشته = "/dev/ttyUSB0"؛ // لینوکس
// رشته پورت رشته = "COM6"؛ // پنجره ها
جریان بولی = false ؛
سرعت شناور = 0.001 ؛
رشته gcode؛
int i = 0 ؛
void openSerialPort ()
{
if (portname == null) return؛
if (port! = null) port.stop ()؛
پورت = سریال جدید (این ، نام پورت ، 115200) ؛
port.bufferUntil ('\ n')؛
}
void selectSerialPort ()
{
String result = (String) JOptionPane.showInputDialog (این ،
"پورت سریال مربوط به برد Arduino خود را انتخاب کنید."،
"انتخاب پورت سریال" ،
JOptionPane. PLAIN_MESSAGE ،
خالی،
Serial.list () ،
0);
if (نتیجه! = null) {
نام بندر = نتیجه ؛
openSerialPort ()؛
}
}
void setup ()
{
اندازه (500 ، 250) ؛
openSerialPort ()؛
}
خلاء قرعه کشی ()
{
پس زمینه (0) ؛
پر (255) ؛
int y = 24 ، dy = 12 ؛
متن ("دستورالعمل" ، 12 ، y) ؛ y += dy؛
متن ("p: پورت سریال را انتخاب کنید" ، 12 ، y) ؛ y += dy؛
متن ("1: سرعت را روی 0.001 اینچ (1 میل) در هر دویدن تنظیم کنید" ، 12 ، y) ؛ y += dy؛
متن ("2: سرعت را روی 0.010 اینچ (10 میل) در هر دویدن تنظیم کنید" ، 12 ، y) ؛ y += dy؛
متن ("3: سرعت را روی 0.100 اینچ (100 میل) در هر دویدن تنظیم کنید" ، 12 ، y) ؛ y += dy؛
متن ("کلیدهای جهت دار: حرکت در صفحه x-y" ، 12 ، y) ؛ y += dy؛
متن ("صفحه بالا و پایین صفحه: حرکت در محور z" ، 12 ، y) ؛ y += dy؛
متن ("$: نمایش تنظیمات grbl" ، 12 ، y) ؛ y+= dy؛
متن ("h: go home" ، 12 ، y) ؛ y += dy؛
متن ("0: صفر دستگاه (تنظیم خانه در محل فعلی)" ، 12 ، y) ؛ y += dy؛
متن ("g: جریان فایل g-code" ، 12 ، y) ؛ y += dy؛
متن ("x: توقف پخش g-code (این فوری نیست)" ، 12 ، y) ؛ y += dy؛
y = ارتفاع - dy؛
متن ("سرعت دویدن فعلی:" + سرعت + "اینچ در هر مرحله" ، 12 ، y) ؛ y -= dy؛
متن ("پورت سریال فعلی:" + نام پورت ، 12 ، y) ؛ y -= dy؛
}
کلید خالی فشرده ()
{
if (کلید == '1') سرعت = 0.001 ؛
if (کلید == '2') سرعت = 0.01 ؛
if (کلید == '3') سرعت = 0.1 ؛
اگر (! جریان) {
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 = null؛ i = 0 ؛
فایل فایل = null؛
println ("در حال بارگیری فایل …") ؛
selectInput ("انتخاب پرونده برای پردازش:" ، "fileSelected" ، فایل) ؛
}
if (key == 'x') streaming = false؛
}
void fileSelected (انتخاب فایل) {
if (selection == null) {
println ("پنجره بسته شد یا کاربر لغو لغو کرد.")؛
} دیگری {
println ("کاربر انتخاب شده" + selection.getAbsolutePath ()) ؛
gcode = loadStrings (selection.getAbsolutePath ()) ؛
if (gcode == null) return؛
جریان = درست؛
جریان ()؛
}
}
جریان خالی ()
{
اگر (! جریان) بازگشت ؛
در حالی که (درست) {
if (i == gcode.length) {
جریان = false؛
برگشت؛
}
if (gcode .trim (). طول () == 0) i ++ ؛
در غیر این صورت شکستن ؛
}
println (gcode )؛
port.write (gcode + '\ n')؛
من ++ ؛
}
void serialEvent (سریال p)
{
رشته s = p.readStringUntil ('\ n')؛
println (s.trim ()) ؛
if (s.trim (). beginWith ("ok")) stream ()؛
if (s.trim (). beginWith ("خطا")) جریان ()؛ // XXX: واقعاً؟
}
مرحله 5: طراحی و چاپ تمام قسمتها در ورق تخته سه لا
قسمت و طراحی ربات را در اتوکد بارگیری کنید و قسمت ورق تخته سه لا 12 میلی متری را چاپ کرده و قسمت را به پایان برسانید و طراحی کنید. اگر کسی به فایل cad احتیاج دارد لطفاً نظر خود را در کادر بخش نظرات ارسال کنید ، من مستقیماً برای شما ارسال می کنم.
مرحله ششم: مونتاژ
تمام قسمت ها را جمع آوری کرده و ترتیب تصویر را در ترتیب داده شده ترتیب دهید و نمودار تصویر را دنبال کنید.
مرحله 7: تنظیمات GBRL را تنظیم کنید
تنظیماتی که ثابت شده روی روبات های ما کار می کند.
$ 0 = 10 (نبض گام ، usec) $ 1 = 255 (تاخیر در حالت آماده به کار ، msec) $ 2 = 7 (ماسک معکوس پورت مرحله: 00000111) $ 3 = 7 (ماسک معکوس پورت dir: 00000111) $ 4 = 0 (گام فعال کردن معکوس ، بول) $ 5 = 0 (محدوده پین معکوس ، بول) $ 6 = 1 (پین پروب معکوس ، بول) $ 10 = 3 (ماسک گزارش وضعیت: 00000011) $ 11 = 0.020 (انحراف پیوند ، میلی متر) $ 12 = 0.002 (تحمل قوس ، میلی متر) $ 13 = 0 (گزارش اینچ ، بول) 20 دلار = 0 (محدوده نرم ، بول) 21 دلار = 0 دلار (محدودیت سخت ، بول) 22 دلار = 1 دلار (چرخه بازگشت ، بول) 23 دلار = 0 دلار (ماسک معکوس جهت ورود: 00000000) 24 = 100.000 دلار (تغذیه خانگی ، میلی متر/دقیقه) 25 دلار = 500.000 دلار (جستجوی خانگی ، میلی متر در دقیقه) 26 دلار = 250 دلار (خروج از خانه ، ثانیه) 27 دلار = 1.000 دلار (خروج از خانه ، میلی متر) 100 دلار = 250.000 (x ، مرحله/میلی متر) 101 دلار = 250.000 (y ، گام/میلی متر) $ 102 = 250.000 (z ، گام/میلی متر) $ 110 = 500.000 (x حداکثر نرخ ، میلی متر در دقیقه) $ 111 = 500.000 (y حداکثر نرخ ، میلی متر در دقیقه) $ 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 (حداکثر حداکثر سفر ، میلی متر) $ 131 = 200.000 (y حداکثر سفر ، میلی متر) $ 132 = 200.000 (z حداکثر سفر ، میلی متر)
مرحله 8: کد نهایی را بارگذاری کرده و نتیجه مجازی را در داشبورد نرم افزار Arduino Uno بررسی کنید
// واحدها: CM
شناور b_height = 0 ؛
شناور a1 = 92؛
شناور a2 = 86 ؛
شناور snude_len = 20؛
boolean doZ = false؛
شناور base_angle ؛ // = 0 ؛
شناور arm1_angle؛ // = 0 ؛
شناور arm2_angle؛ // = 0 ؛
شناور bx = 60 ؛ // = 25 ؛
شناور = 60 ؛ // = 0 ؛
float 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 ؛
شناور 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 (توسط ، bz) ؛
// arm1_angle = 90؛
// arm2_angle = 45؛
/*
arm2_angle = 23؛
arm1_angle = 23؛
arm2_angle = 23؛
*/
// در ارتباط بودن:
// if (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) ؛
rotateZ (-1.2) ؛
پس زمینه (0) ؛
چراغ () ؛
pushMatrix ()؛
// پایه
پر کنید (150 ، 150 ، 150) ؛
box_corner (50 ، 50 ، b_height ، 0) ؛
چرخش (رادیان (base_angle) ، 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) ؛
// SNUDE
پر (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) ؛
}
کلید خالی فشرده ()
{
if (کلید == 'z')
{
doZ =! doZ؛
}
if (key == 'h')
{
// همه را روی صفر قرار دهید
arm2_angle = 0؛
arm1_angle = 90 ؛
base_angle = 0 ؛
}
if (کلید == 'g')
{
println (درجه (V1)) ؛
println (درجه (V5)) ؛
}
if (keyCode == UP)
{
z ++ ؛
}
if (keyCode == DOWN)
{
z -؛
}
if (key == '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) ؛
}
}
توصیه شده:
ربات انتخاب و مکان بر اساس RFID: 4 مرحله
ربات انتخاب و مکان بر اساس RFID: سالهاست که مردم سعی می کنند کار انسان را با ماشین جایگزین کنند. ماشینهایی به نام روبات سریعتر و م effectiveثرتر از مردم هستند. اصطلاح روباتیک عملاً به عنوان مطالعه ، طراحی و استفاده از سیستم های ربات برای تولید تعریف می شود. روبات ها g
ربات شادی (Robô Da Alegria) - ربات منبع باز 3D چاپ شده ، ربات Arduino !: 18 مرحله (همراه با تصاویر)
ربات شادی (Robô Da Alegria) - ربات منبع باز سه بعدی ، ربات قدرتمند Arduino!: جایزه اول در مسابقه چرخ های دستورالعمل ، جایزه دوم در مسابقه دستورالعمل های آردوینو و دومین مسابقه در طراحی برای کودکان. با تشکر از همه کسانی که به ما رای دادند! روبات ها به همه جا می رسند. از کاربردهای صنعتی تا
UCL - تعبیه شده - انتخاب و مکان: 4 مرحله
UCL - جاسازی شده - انتخاب و مکان: این دستورالعمل با وجود این که چگونه یک واحد انتخاب و مکان دوبعدی ساخته شده و چگونه آن را کدگذاری می کند ، انجام می شود
انتخاب و مکان بر اساس چشم انداز با UArm: 6 مرحله
انتخاب و مکان بر اساس چشم انداز با UArm: اخیراً ، بیشتر سeriesالاتی که از شما می شنویم در مورد برنامه های کاربردی مبتنی بر دید uArm است ، مانند تشخیص شی ، ارتباط دوربین و uArm و غیره. در واقع ما برای آن کار کرده ایم دوره زمانی. ما یک دیدگاه ساده مبتنی بر
[ربات آردوینو] چگونه می توان یک ربات ضبط حرکتی ساخت - ربات انگشت شست - سرو موتور - کد منبع: 26 مرحله (همراه با تصاویر)
[ربات آردوینو] چگونه می توان یک ربات ضبط حرکتی ساخت | ربات انگشت شست | سرو موتور | کد منبع: ربات انگشت شست از پتانسیومتر سروو موتور MG90S استفاده شده است. بسیار سرگرم کننده و آسان است! کد بسیار ساده است. فقط در حدود 30 خط است. به نظر می رسد یک حرکت ضبط است. لطفاً هر گونه سوال یا بازخوردی بگذارید! [دستورالعمل] کد منبع https: //github.c