Სარჩევი:

მავთულის კონტროლირებადი რობოტი: 31 ნაბიჯი
მავთულის კონტროლირებადი რობოტი: 31 ნაბიჯი

ვიდეო: მავთულის კონტროლირებადი რობოტი: 31 ნაბიჯი

ვიდეო: მავთულის კონტროლირებადი რობოტი: 31 ნაბიჯი
ვიდეო: How to use W3230 Thermostat Heat and Cold Relay Controller AC DC 12V/24V/120/220V P1 to P8 2024, ნოემბერი
Anonim
მავთულის კონტროლირებადი რობოტი მკლავი
მავთულის კონტროლირებადი რობოტი მკლავი

ეს არის გაკვეთილი, თუ როგორ უნდა გააკეთოთ რობოტის ხელი, რომელსაც აკონტროლებენ მავთულები. მავთულის გამოყენების უპირატესობა ის არის, რომ თქვენი მკლავი უფრო მსუბუქია და თქვენ შეგიძლიათ გქონდეთ ყველა თქვენი ძრავა მკლავის ძირში, რაც გაადვილებს მშენებლობას და მოვლას. აქ არის ვიდეო მკლავის მოქმედებაში. მომავალში ვგეგმავ ბრჭყალების დამატებას, რათა მან შეძლოს ნივთების ამოღება და არა მხოლოდ მათ გარშემო წამოწევა.

3D დასაბეჭდი მასალები:

აქ და აქ

მარაგები

6 სერვო მოტორსი (MG995)

არდუინო უნო

დაახლოებით 6 მეტრი პლასტმასის დაფარული ფოლადის მავთული (0.5 მმ)

ყუთი 23x33x10 (შეიძლება იყოს ვიწრო, აუცილებლად არ უნდა იყოს მოკლე)

ხის ფიცარი 33x10

თხილი და ჭანჭიკები

მილები 14 სმ (ეს საჭიროა სტრიქონების გასატარებლად)

4 ლ-ფრჩხილი

5 ვოლტიანი ადაპტერი

2 7-გზის ტერმინალური ბლოკი

პურის დაფის მავთულები

3D ნაბეჭდი კომპონენტები (ჩემს მიერ შემუშავებული არ არის, ბმულები აღწერილობაში).

3 "ჭანჭიკები"

2 "ელემენტი 1"

1 "ელემენტი 2"

2 "ელემენტი 3"

1 ბაზის კონექტორი

ნაბიჯი 1: დაბეჭდეთ ყველა 3D კომპონენტი

შეიძლება დაგჭირდეთ ჭანჭიკების ხვრელებისა და თაღების მხარდაჭერა, მაგრამ დარწმუნდით, რომ არ დაამატოთ მხარდაჭერა თქვენი კომპონენტების სხეულს; ეს დახურავს პატარა მავთულის ხვრელებს და თქვენ დაგჭირდებათ ახალი ხვრელების გაკეთება

ნაბიჯი 2: (სურვილისამებრ) მიამაგრეთ ხის ფიცარი ყუთის ქვედა ნაწილში, რომ გაძლიერდეს

ჩემი ყუთი საკმაოდ სუსტი იყო, შენი შეიძლება არ იყოს

ნაბიჯი 3: გაზომეთ და გაჭერით ხის ფიცარი ყუთის მოსაწყობად

ნაბიჯი 4: მონიშნეთ მოტორსის პოზიციები

დარწმუნდით, რომ არცერთი ხელი არ შეეხოთ ერთმანეთს

ნაბიჯი 5: მონიშნეთ ფრჩხილების და მილების პოზიციები

მონიშნეთ ფრჩხილების და მილების პოზიციები
მონიშნეთ ფრჩხილების და მილების პოზიციები

მილი უნდა იყოს მოთავსებული ხვრელის წინ დაახლოებით ერთი სანტიმეტრით

ნაბიჯი 6: გაბურღეთ ხვრელი კაბელიდან, რომელიც გამოდის თქვენი ყუთიდან (USB და დენი)

საბურღი ხვრელი კაბელიდან, რომელიც გამოდის თქვენი ყუთიდან (USB და დენი)
საბურღი ხვრელი კაბელიდან, რომელიც გამოდის თქვენი ყუთიდან (USB და დენი)

ნაბიჯი 7: გაბურღეთ და დაინახეთ ყველა მონიშნული ხვრელი

გაბურღეთ და დაინახეთ ყველა მონიშნული ხვრელი
გაბურღეთ და დაინახეთ ყველა მონიშნული ხვრელი

ნაბიჯი 8: მიამაგრეთ ძრავები და მილები ფიცარზე

ნაბიჯი 9: მიამაგრეთ ფიცარი ყუთში L- ფრჩხილებით

ნაბიჯი 10: აიღეთ ტერმინალის ბლოკები და შეაერთეთ მავთულები ერთად

აიღეთ ტერმინალის ბლოკები და შეაერთეთ მავთულები ერთად
აიღეთ ტერმინალის ბლოკები და შეაერთეთ მავთულები ერთად

ნაბიჯი 11: გათიშეთ ადაპტერის დენის კაბელი და მოაწყვეთ მავთულები

ნაბიჯი 12: ამოიცანი და მონიშნეთ პლიუს და მინუს მავთულები

ნაბიჯი 13: მიამაგრეთ მავთულები ტერმინალის ბლოკებზე ისე, რომ ყველა + Servo მავთული და + მავთული დენის კაბელიდან იყოს დაკავშირებული, იგივე მიდის - მავთულხლართებზე

მიამაგრეთ მავთულები ტერმინალის ბლოკებზე ისე, რომ ყველა + Servo მავთული და + მავთული დენის კაბელიდან იყოს დაკავშირებული, იგივე ეხება - მავთულხლართებს
მიამაგრეთ მავთულები ტერმინალის ბლოკებზე ისე, რომ ყველა + Servo მავთული და + მავთული დენის კაბელიდან იყოს დაკავშირებული, იგივე ეხება - მავთულხლართებს

ნაბიჯი 14: გათიშეთ თავი პურის დაფის მავთულისგან

გათიშეთ თავი პურის დაფის მავთულისგან
გათიშეთ თავი პურის დაფის მავთულისგან

მიამაგრეთ პურის დაფის მავთულის გაშიშვლებული ბოლო მინუს ტერმინალის ბლოკზე და ქინძის ბოლო მიწაზე თქვენს არდუინოში. თუ ამას არ გააკეთებთ, ძრავები არასტაბილურად გადაადგილდებიან ყოველგვარი შეყვანის გარეშე.

ნაბიჯი 15: საბურღი სამი ხვრელი ყუთის ბოლოში მავთულხლართებიდან გამოდის თქვენი მკლავიდან

ხვრელები უნდა ემთხვეოდეს ბაზის კონექტორის ხვრელებს.

ნაბიჯი 16: მიამაგრეთ ბაზის კონექტორი ყუთში

მიამაგრეთ ბაზის კონექტორი ყუთში
მიამაგრეთ ბაზის კონექტორი ყუთში

ნაბიჯი 17: გამოიყენეთ დანა ან ფრჩხილის ფაილი, რათა მავთულის ღარები უფრო ღრმა გახადოთ

გამოიყენეთ დანა ან ფრჩხილის ფაილი, რათა მავთულის ღარები უფრო ღრმა იყოს
გამოიყენეთ დანა ან ფრჩხილის ფაილი, რათა მავთულის ღარები უფრო ღრმა იყოს

2 და 3 ელემენტების მავთულის ღარები ძალიან ზედაპირულია.

ნაბიჯი 18: შექმენით მკლავი

ააშენეთ მკლავი
ააშენეთ მკლავი

ააშენეთ ხელი ინსტრუქციის მიხედვით, აქ შეიძლება დაგჭირდეთ ნაწილების შევსება ისე, რომ ისინი მოერგოს

ნაბიჯი 19: დააინსტალირეთ დამუშავება და Arduino

დამუშავება და არდუინო

ნაბიჯი 20: ჩასვით კოდის პროგრამები

კოდი არის ამ გვერდის ბოლოში

ნაბიჯი 21: შეაერთეთ Servo Control Pins არდუინოსთან

შეაერთეთ Servo Control Pins არდუინოსთან
შეაერთეთ Servo Control Pins არდუინოსთან

პირველი ძრავა დავუკავშირე მესამე ციფრულ პინს, მეორე ძრავა მეოთხე ციფრულ პინს და ასე შემდეგ. დარწმუნდით, რომ გრუნტის პინი კვლავ დაკავშირებულია ტერმინალურ ბლოკთან.

ნაბიჯი 22: დააჭირეთ გადატვირთვის ღილაკს დამუშავების პროცესში, ეს დააყენებს ყველა იარაღს 90 გრადუსზე

ნაბიჯი 23: დააფიქსირეთ სერვო იარაღი ძრავაზე ჰორიზონტალურად

ნაბიჯი 24: ჩააბარეთ მავთულები მკლავებზე ისე, რომ არ არსებობდეს დაბნეულობა

დარწმუნდით, რომ მავთულს რაც შეიძლება მეტ ხვრელში გაატარებთ, ეს დროებით დაიჭერს და მისი ამოღება ადვილი იქნება.

ნაბიჯი 25: გამოსცადეთ ხელი და საჭიროებისამებრ გამკაცრეთ ან მოშალეთ მავთულები

ნაბიჯი 26: ცხელი წებოს მავთულები სერვო იარაღზე, რათა ის მუდმივი გახდეს

ნაბიჯი 27: შენიშვნები

შენიშვნები
შენიშვნები

მე გამოვიყენე 0.5 მმ სამკაულის მავთული, მაგრამ 0.4 მმ უნდა იყოს კარგად. თავდაპირველ დიზაინში გამოყენებული იყო PVC მავთული, მაგრამ ის ძალიან ადვილად გატეხა და ძნელი იყო მუშაობა.

თუ თქვენ აპირებთ მკლავის მოძრაობას მანქანით ან ველოსიპედით, გადაახვიეთ ხელის სახსრები ლენტით, რათა დარწმუნდეთ, რომ ისინი არ ამოიწურება. ეს განსაკუთრებით მნიშვნელოვანია 1 ელემენტისთვის.

როდესაც ეს პროექტი დავიწყე, მაინტერესებდა, რატომ ვიპოვე მხოლოდ ერთი სახელმძღვანელო, თუ როგორ უნდა გამეკეთებინა მავთული, რომელსაც ხელი აკონტროლებდა. ახლა მე მესმის, რატომ არ არის ეს ყველაზე გავრცელებული გზა ჰობი რობოტის მკლავის შესაქმნელად. მავთულები ზოგჯერ ამოვარდება მათი ღარებიდან და ყველაფერი რაღაცნაირად მოუხერხებელია. მე არ ვიცი პრობლემები არის იმის გამო, რომ მე არ მაქვს დიდი გამოცდილება ან მთელი იდეა პრობლემატურია, თუმცა დარწმუნებული ვარ, რომ ეს უფრო მყარი იქნებოდა, რომ მცოდნოდა რას ვაკეთებდი.

ნაბიჯი 28: პრობლემების მოგვარება

მავთულის ხვრელები დახურულია 3D ბეჭდვით ელემენტებში:

თქვენ დაამატეთ მხარდაჭერა მთელი ელემენტის ნაცვლად მხოლოდ ჭანჭიკის ხვრელების ნაცვლად. ან ხელახლა დაბეჭდე ელემენტი ან გახსენი ხვრელები მართლაც ცხელი ნემსით.

COM პორტი დაკეტილია, თქვენ არ შეგიძლიათ დაუკავშირდეთ arduino– ს:

თქვენმა arduino– მ შეიძლება არ მიიღოს USB 3 პორტი (ჩემმა არ მიიღო), შეგიძლიათ შეიძინოთ USB 2 გაფართოების კაბელი ან გამოიყენოთ კომპიუტერი, რომელსაც აქვს USB 2 პორტი

კოდი არ მუშაობს:

მიჰყევით ამ სახელმძღვანელოს და შეცვალეთ იგი საკუთარი კოდის შესაქმნელად

მკლავის ნაწილი არ მოძრაობს:

მავთულები შეიძლება გადახლართული იყოს, ამის შესამოწმებლად, ამოიღეთ servo arm servo– დან და სცადეთ მავთულის ხელით გაყვანა. გახსენით მავთულები და თუ ჯერ კიდევ ძნელია მავთულხლართების გაყვანა სცადეთ WD-40 ან საპოხი მასალები მოძრაობის გასაადვილებლად

ნაბიჯი 29: ბმულები

არასამთავრობო Robotic Arm:

ხელის 3D დასაბეჭდი მასალები:

ჩემი მკლავი 3D დასაბეჭდად:

არდუინო და დამუშავება:

ნაბიჯი 30: კოდი

შეცვლილია ამ კოდიდან

არდუინოს კოდი:

#ჩართვა // გამოაცხადე ძრავები Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // ყველა ძრავა დაყენებულია 90 გრადუსზე ნაგულისხმევად int current1 = 90; int მიმდინარე 2 = 90; int მიმდინარე 3 = 90; int მიმდინარე 4 = 90; int მიმდინარე 5 = 90; int მიმდინარე 6 = 90; // მინიმალური და მაქსიმალური გრადუსი ძრავებს შეუძლიათ მიაღწიონ int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // ხარისხები, რომლებიც უნდა დაემატოს ან გამოაკლოს ამჟამინდელ პოზიციას int გრადუსით = 5; // გადადება ისე, რომ ორი ფუნქცია არ მოხდეს არასწორი თანმიმდევრობით int delayBetweenSteps = 100; void setup () {// დააყენეთ საკონტროლო ქინძისთავები თითოეული ძრავისთვის myservo1.attach (3); myservo2.attach (4); myservo3. მიმაგრება (5); myservo4.atach (6); myservo5. მიმაგრება (7); myservo6. მიმაგრება (8); // დააყენეთ ყველა ძრავა ნაგულისხმევ პარამეტრზე myservo1.write (current1); myservo2.write (მიმდინარე 2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6. დაწერე (მიმდინარე 6); // სერიული კომუნიკაციის დაწყება @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// თუ მონაცემები ხელმისაწვდომია char val = Serial.read () წასაკითხად; // ჩადეთ მასში ამ ჩარტში // Motor Controls if (val == 'a' && current1 + gradFoward mini1) {myservo1.write (current1 - gradFoward); მიმდინარე 1 = მიმდინარე 1 - გრადუსი წინ; დაგვიანება (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - gradFoward); მიმდინარე 2 = მიმდინარე 2 - გრადუსი წინ; დაგვიანება (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - gradFoward); მიმდინარე 3 = მიმდინარე 3 - გრადუსი წინ; დაგვიანება (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - gradFoward); მიმდინარე 4 = მიმდინარე 4 - გრადუსი წინ; დაგვიანება (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - gradFoward); მიმდინარე 5 = მიმდინარე 5 - გრადუსი წინ; დაგვიანება (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - gradFoward); მიმდინარე 6 = მიმდინარე 6 - გრადუსი წინ; დაგვიანება (delayBetweenSteps); } // სიჩქარის კონტროლი თუ (val == 'w') {// თუ სიჩქარე 1 ღილაკზე დაჭერილი ხარისხიFoward = 1; დაგვიანება (delayBetweenSteps); } if (val == 'x') {// თუ სიჩქარე 5 ღილაკზე დაჭერილი ხარისხიFoward = 5; დაგვიანება (delayBetweenSteps); } if (val == 'y') {// თუ სიჩქარე 10 ღილაკზე დაჭერილი ხარისხიFoward = 10; დაგვიანება (delayBetweenSteps); } if (val == 'z') {// თუ სიჩქარე 20 ღილაკზე დაჭერილია გრადუსი = 20; დაგვიანება (delayBetweenSteps); } if (val == 'r') {// თუ სიჩქარე 20 ღილაკზე დაჭერილია myservo1.write (90); მიმდინარე 1 = 90; myservo2.write (90); მიმდინარე 2 = 90; myservo3. დაწერე (90); მიმდინარე 3 = 90; myservo4. დაწერე (90); მიმდინარე 4 = 90; myservo5. დაწერე (90); მიმდინარე 5 = 90; myservo6. დაწერე (90); მიმდინარე 6 = 90; დაგვიანება (delayBetweenSteps); }}}

დამუშავების კოდი:

იმპორტის დამუშავება. სერიალი.*; იმპორტის კონტროლი P5.*; // ControlP5 ბიბლიოთეკის სერიული პორტის იმპორტი; ControlP5 cp5; // ControlP5 ობიექტის PFont შრიფტის შექმნა; void setup () {// იგივე arduino პროგრამის ზომა (300, 700); // ფანჯრის ზომა, (სიგანე, სიმაღლე) printArray (Serial.list ()); // ბეჭდავს ყველა შესაძლო სერიულ პორტს // თუ თქვენ გაქვთ პრობლემა ის ალბათ აქედან მოდის String portName = Serial.list () [0]; პორტი = ახალი სერიალი (ეს, პორტის სახელი, 9600); // arduino დავუკავშირე com3– ს, ის განსხვავებული იქნებოდა linux– ში და mac os– ში // დავუშვათ buton ცარიელ ფანჯარაში cp5 = ახალი ControlP5 (ეს); font = createFont ("Arial", 13); // მორგებული შრიფტები ღილაკებისა და სათაურისთვის // სიჩქარის კონტროლის ღილაკები cp5.addButton ("ერთი") // "ერთი" არის ღილაკის.setPosition (50, 50) // x და y კოორდინატები ღილაკის ზედა მარცხენა კუთხეში.setSize (55, 25) // (სიგანე, სიმაღლე).setFont (შრიფტი); cp5.addButton ("ხუთი").setPosition (110, 50).setSize (55, 25).setFont (შრიფტი); cp5.addButton ("ათი").setPosition (170, 50).setSize (55, 25).setFont (შრიფტი); cp5.addButton ("ოცი").setPosition (230, 50).setSize (55, 25).setFont (შრიფტი); cp5.addButton ("გადატვირთვა").setPosition (110, 2).setSize (55, 25).setFont (შრიფტი); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (შრიფტი); // საავტომობილო კონტროლის ღილაკები cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (შრიფტი); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (შრიფტი); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (შრიფტი); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (შრიფტი); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (სიგანე, სიმაღლე).setFont (შრიფტი); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (შრიფტი); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (სიგანე, სიმაღლე).setFont (შრიფტი); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (შრიფტი); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (შრიფტი); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (შრიფტი); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (შრიფტი); } void draw () {// იგივე მარყუჟი arduino ფონზე (192, 215, 249); // ფანჯრის ფონის ფერი (r, g, b) ან (0 დან 255) // ტექსტის დამატება, რომელშიც ნათქვამია, რომ სიჩქარის კონტროლი არის სიჩქარის კონტროლის შევსება (0, 10, 25); // ტექსტის ფერი (r, g, b) textFont (შრიფტი); ტექსტი ("სიჩქარის კონტროლი", 50, 40); // ("ტექსტი", x კოორდინატი, y კოორდინატი)} // საშუალებას გაძლევთ დაამატოთ რამდენიმე ფუნქცია ჩვენს ღილაკებზე // ასე რომ, როდესაც რომელიმე ღილაკს დააჭერთ, ის აგზავნის კონკრეტულ სიმბოლოს სერიულ პორტზე // დარწმუნებული ვარ, რომ შესაძლებელია სტრიქონების გაგზავნა სიმბოლოების ნაცვლად და ეს უფრო აზრიანი იქნებოდა, მაგრამ არ ვიცი როგორ გავაკეთო // სიჩქარის კონტროლის ბრძანებები void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void ოცი () {port.write ('z'); } // Motor Control Commands void Servo_1_Foward () {port.write ('a'); } void Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } void Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } void Servo_3_Back () {port.write ('f'); } void Servo_4_Foward () {port.write ('g'); } void Servo_4_Back () {port.write ('h'); } void Servo_5_Foward () {port.write ('i'); } void Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } void Servo_6_Back () {port.write ('l'); } void გადატვირთვა () {port.write ('r'); }

ნაბიჯი 31: მეტი სურათი

გირჩევთ: