Სარჩევი:
- ნაბიჯი 1: კომპონენტების მოთხოვნა
- ნაბიჯი 2: ჩამოტვირთეთ Gui
- ნაბიჯი 3: კავშირი
- ნაბიჯი 4: ატვირთეთ firmware და შეამოწმეთ კოდის შედეგი Arduino Dashboard– ში
- ნაბიჯი 5: დიზაინი და დაბეჭდვა ყველა ნაწილი პლაივუდის ფურცელზე
- ნაბიჯი 6: შეკრება
- ნაბიჯი 7: დააყენეთ GBRL პარამეტრები
- ნაბიჯი 8: ატვირთეთ საბოლოო კოდი და შეამოწმეთ ვირტუალური შედეგი Arduino Uno პროგრამულ დაფაზე
ვიდეო: არდუინოს ბაზის არჩევა და განთავსება რობოტი: 8 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
მე გავაკეთე სუპერ იაფი (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 Counter ჩაიძირა, 10. 12 ვ კვების წყარო
11. სერვო ძრავის მძღოლი arduino
ნაბიჯი 2: ჩამოტვირთეთ Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
ნაბიჯი 3: კავშირი
შეაერთეთ მავთულები, რომლებიც მოცემულია სურათზე, თქვენთვის უფრო გასაგებია.
ჩვენ უნდა დავუკავშიროთ ძრავის მძღოლი არდუინოს და სხვა კონექტორებს, რაც საჭიროა თქვენი რობოტის მიხედვით.
ნაბიჯი 4: ატვირთეთ firmware და შეამოწმეთ კოდის შედეგი Arduino Dashboard– ში
Firmware– ის დაყენება 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"; // Linux
// სიმებიანი პორტნარი = "COM6"; // Windows
ლოგიკური ნაკადი = ყალბი;
float სიჩქარე = 0.001;
სიმებიანი კოდი;
int i = 0;
void openSerialPort ()
{
if (portname == null) დაბრუნება;
if (port! = null) port.stop ();
პორტი = ახალი სერიალი (ეს, პორტნელის სახელი, 115200);
port.bufferUntil ('\ n');
}
void selectSerialPort ()
{
სიმებიანი შედეგი = (სიმებიანი) JOptionPane.showInputDialog (ეს, "შეარჩიეთ სერიული პორტი, რომელიც შეესაბამება თქვენს Arduino დაფას.", "სერიული პორტის არჩევა", JOptionPane. PLAIN_MESSAGE, null, Serial.list (), 0);
თუ (შედეგი! = null) {
პორტნარი = შედეგი;
openSerialPort ();
}
}
ბათილად დაყენება ()
{
ზომა (500, 250);
openSerialPort ();
}
ბათილად გათამაშება ()
{
ფონი (0);
შევსება (255);
int y = 24, dy = 12;
ტექსტი ("ინსტრუქცია", 12, წ); y += dy;
ტექსტი ("p: აირჩიეთ სერიული პორტი", 12, y); 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); y += dy;
ტექსტი ("გვერდი ზემოთ და ქვემოთ: სირბილი z ღერძში", 12, y); y += dy;
ტექსტი ("$: ჩვენება grbl პარამეტრები", 12, წ); y+= dy;
ტექსტი ("თ: წადი სახლში", 12, წ); y += dy;
ტექსტი ("0: ნულოვანი მანქანა (დააყენეთ სახლში მიმდინარე ადგილას)", 12, y); y += dy;
ტექსტი ("g: ნაკადი g- კოდის ფაილი", 12, y); y += dy;
ტექსტი ("x: შეაჩერე ნაკადი g-კოდი (ეს არ არის მყისიერი)", 12, y); y += dy;
y = სიმაღლე - dy;
ტექსტი ("მიმდინარე სირბილის სიჩქარე:" + სიჩქარე + "ინჩი ნაბიჯზე", 12, y); y -= dy;
ტექსტი ("მიმდინარე სერიული პორტი:" + პორტნამის სახელი, 12, y); y -= dy;
}
void keyPressed ()
{
თუ (გასაღები == '1') სიჩქარე = 0.001;
თუ (გასაღები == '2') სიჩქარე = 0.01;
თუ (გასაღები == '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 (გასაღები == 'h') port.write ("G90 / nG20 / nG00 X0.000 Y0.000 Z0.000 / n");
if (გასაღები == 'v') port.write ("$ 0 = 75 / n $ 1 = 74 / n $ 2 = 75 / n");
// if (გასაღები == 'v') port.write ("$ 0 = 100 / n $ 1 = 74 / n $ 2 = 75 / n");
if (გასაღები == 's') port.write ("$ 3 = 10 / n");
if (გასაღები == 'e') port.write ("$ 16 = 1 / n");
if (გასაღები == 'd') port.write ("$ 16 = 0 / n");
if (გასაღები == '0') openSerialPort ();
if (გასაღები == 'p') selectSerialPort ();
if (გასაღები == '$') port.write ("$$ / n");
if (გასაღები == 'h') port.write ("$ H / n");
}
თუ (! ნაკადი && გასაღები == 'გ') {
gcode = null; i = 0;
ფაილის ფაილი = null;
println ("ფაილის ჩატვირთვა …");
selectInput ("აირჩიეთ ფაილი დასამუშავებლად:", "fileSelected", ფაილი);
}
თუ (გასაღები == 'x') ნაკადი = ყალბი;
}
ბათილი ფაილი არჩეული (ფაილის არჩევა) {
თუ (შერჩევა == null) {
println ("ფანჯარა დაიხურა ან მომხმარებლის დაწკაპუნება გაუქმდა.");
} სხვა {
println ("მომხმარებელი არჩეულია" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) დაბრუნება;
ნაკადი = ჭეშმარიტი;
ნაკადი ();
}
}
ბათილი ნაკადი ()
{
თუ (! ნაკადი) დაბრუნდება;
სანამ (მართალია) {
თუ (i == gcode.length) {
ნაკადი = ყალბი;
დაბრუნების;
}
if (gcode .trim (). სიგრძე () == 0) i ++;
სხვაგან შესვენება;
}
println (gcode );
port.write (gcode + '\ n');
მე ++;
}
void serialEvent (სერიული p)
{
სიმებიანი s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). იწყებს ("ok")) ნაკადი ();
if (s.trim (). იწყებაWith ("შეცდომა")) ნაკადი (); // XXX: მართლა?
}
ნაბიჯი 5: დიზაინი და დაბეჭდვა ყველა ნაწილი პლაივუდის ფურცელზე
ჩამოტვირთეთ რობოტის ნაწილი და დიზაინი AutoCAD– ში და დაბეჭდეთ 12 მმ პლაივუდის ფურცელზე და დაამთავრეთ და შეიმუშავეთ ნაწილი. თუ ვინმეს სჭირდება cad ფაილი გთხოვთ დატოვეთ კომენტარი კომენტარების განყოფილებაში, მე პირდაპირ გამოგიგზავნით.
ნაბიჯი 6: შეკრება
შეაგროვეთ ყველა ნაწილი და დაალაგეთ თანმიმდევრობით მოცემულ გამოსახულებაზე და მიჰყევით გამოსახულების დიაგრამას.
ნაბიჯი 7: დააყენეთ GBRL პარამეტრები
პარამეტრი, რომელიც დადასტურდა, რომ მუშაობს ჩვენს რობოტებზე.
$ 0 = 10 (საფეხური პულსი, usec) $ 1 = 255 (ნაბიჯი უსაქმური შეფერხება, წმ) $ 2 = 7 (საფეხურის პორტის შემობრუნების ნიღაბი: 00000111) $ 3 = 7 (დირი პორტის ინვერსიული ნიღაბი: 00000111) $ 4 = 0 (ნაბიჯის ჩართვა ინვერსია, bool) $ 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 $ 250.000 (y, ნაბიჯი/მმ) $ 102 = 250.000 (z, ნაბიჯი/მმ) $ 110 = 500.000 (x max განაკვეთი, მმ/წთ) $ 111 = 500.000 (y მაქსიმალური მაჩვენებელი, მმ/წთ) $ 112 = 500.000 (z max განაკვეთი, მმ/წთ) $ 120 = 10.000 (x accel, მმ/წ^2) $ 121 = 10.000 (y accel, მმ/წ^2) $ 122 = 10.000 (z accel, მმ/წმ 2) $ 130 = 200.000 (x max მოგზაურობა, მმ) $ 131 = 200.000 (y მაქსიმალური მგზავრობა, მმ) $ 132 = 200.000 (z max მოგზაურობა, მმ)
ნაბიჯი 8: ატვირთეთ საბოლოო კოდი და შეამოწმეთ ვირტუალური შედეგი Arduino Uno პროგრამულ დაფაზე
// ერთეულები: CM
float b_height = 0;
float a1 = 92;
float a2 = 86;
float snude_len = 20;
ლოგიკური doZ = ყალბი;
float base_angle; // = 0;
float arm1_angle; // = 0;
float arm2_angle; // = 0;
float bx = 60; // = 25;
float = 60; // = 0;
float bz = 60; // = 25;
float x = 60;
float y = 60;
float z = 60;
float q;
float c;
float V1;
float V2;
float V3;
float V4;
float V5;
void setup () {
ზომა (700, 700, P3D);
კამერა = ახალი PeasyCam (ეს, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
ბათილად გათამაშება () {
// ლინგინჯერი:
y = (mouseX - სიგანე/2)*(- 1);
x = (mouseY - სიმაღლე/2)*(- 1);
bz = z;
by = 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)
//
// {
// base_angle = base_angle+ 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 (ბაზის_კუთხედი + "," + 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_ სიმაღლე, 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);
// 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, დ/2);
ყუთი (w, h, d);
თარგმნა (0, 0, დ/2);
}
void keyPressed ()
{
თუ (გასაღები == 'z')
{
doZ =! doZ;
}
თუ (გასაღები == 'თ')
{
// დააყენეთ ყველაფერი ნულზე
arm2_angle = 0;
arm1_angle = 90;
ბაზის_კუთხედი = 0;
}
თუ (გასაღები == 'გ')
{
println (გრადუსი (V1));
println (გრადუსი (V5));
}
თუ (გასაღები კოდი == UP)
{
z ++;
}
თუ (გასაღები კოდი == ქვემოთ)
{
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);
}
}
გირჩევთ:
მოამზადეთ ყავის მაღაზია საიტის განთავსება: 9 ნაბიჯი
გააკეთეთ ყავის მაღაზიის ვებსაიტი
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: 8 ნაბიჯი
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: ჩვენ შევქმენით კომბინირებული ბალანსირების და 3 ბორბლიანი რობოტი სკოლებში საგანმანათლებლო გამოყენებისთვის და სკოლის შემდგომ საგანმანათლებლო პროგრამებისთვის. რობოტი დაფუძნებულია Arduino Uno– ზე, საბაჟო ფარზე (კონსტრუქციის ყველა დეტალი მოცემულია), Li Ion ბატარეის პაკეტზე (ყველა კონსტრუქცია
კარაქის რობოტი: არდუინოს რობოტი ეგზისტენციალური კრიზისით: 6 ნაბიჯი (სურათებით)
კარაქი რობოტი: არდუინოს რობოტი ეგზისტენციალური კრიზისით: ეს პროექტი დაფუძნებულია ანიმაციურ სერიალზე "რიკი და მორტი". ერთ -ერთ ეპიზოდში რიკი ქმნის რობოტს, რომლის ერთადერთი დანიშნულებაა კარაქის მოტანა. როგორც Bruface– ის (ბრიუსელის საინჟინრო ფაკულტეტი) სტუდენტები, ჩვენ გვაქვს დავალება მექანიკის შესახებ
დამხმარე გიტარის არჩევა: 10 ნაბიჯი
დამხმარე გიტარის არჩევა: რაც ჩვენ გავაკეთეთ: დამხმარე გიტარის არჩევა შემუშავდა იმ პირთათვის, რომლებსაც აქვთ კუნთების დაბალი ტონი და კონტრაქტურა ხელში. იმისათვის, რომ გაეცნოთ ამ პროექტის მიზანს, როგორ ჩავიცვათ დამხმარე არჩევანი და ნახოთ გიტარაზე დაკვრის დემო
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი - ცერა თითის რობოტი - სერვო ძრავა - წყაროს კოდი: 26 ნაბიჯი (სურათებით)
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი | ცერა თითის რობოტი | სერვო მოტორი | წყაროს კოდი: Thumbs Robot. გამოყენებული იქნა MG90S სერვო ძრავის პოტენომეტრი. ეს არის ძალიან სახალისო და მარტივი! კოდი ძალიან მარტივია. ეს მხოლოდ 30 სტრიქონია. როგორც ჩანს მოძრაობის გადაღება. გთხოვთ დატოვოთ ნებისმიერი შეკითხვა ან გამოხმაურება! [ინსტრუქცია] წყაროს კოდი https: //github.c