Talaan ng mga Nilalaman:

Simple at Smart Robotic Arm Gamit ang Arduino !!!: 5 Mga Hakbang (na may Mga Larawan)
Simple at Smart Robotic Arm Gamit ang Arduino !!!: 5 Mga Hakbang (na may Mga Larawan)

Video: Simple at Smart Robotic Arm Gamit ang Arduino !!!: 5 Mga Hakbang (na may Mga Larawan)

Video: Simple at Smart Robotic Arm Gamit ang Arduino !!!: 5 Mga Hakbang (na may Mga Larawan)
Video: Leap Motion SDK 2024, Nobyembre
Anonim
Image
Image
Mga Bagay na Kakailanganin Mo:
Mga Bagay na Kakailanganin Mo:

Sa itinuturo na ito ay gumagawa ako ng isang simpleng robot na braso. Makokontrol iyon gamit ang isang master arm. Maaalala ng braso ang mga galaw at maglaro nang magkakasunod. Ang konsepto ay hindi bago Nakuha ko ang Ideya mula sa "mini robotic arm -by Stoerpeak" Nais kong gawin ito sa loob ng mahabang panahon, ngunit noong panahong iyon ay ganap akong noob at walang kaalaman tungkol sa pagprograma. Ngayon sa wakas ay nagtatayo ako ng isa, Pinapanatili itong simple, mura at pagbabahagi nito sa inyong lahat.

Kaya't magsimula tayo ….

Hakbang 1: Mga Bagay na Kakailanganin Mo: -

Mga Bagay na Kakailanganin Mo:
Mga Bagay na Kakailanganin Mo:
Mga Bagay na Kakailanganin Mo:
Mga Bagay na Kakailanganin Mo:

Narito ang isang listahan ng mga bagay na kakailanganin mo: -

1. Servo motors x 5 Link para sa US: - https://amzn.to/2OxbSH7Link para sa Europa: -

2. Potentiometers x 5 (Gumamit ako ng 100k.) Link para sa US: - https://amzn.to/2ROjhDMLink para sa Europa: -

3. Arduino UNO. (Maaari mo ring gamitin ang Arduino Nano) Link para sa US: - https://amzn.to/2DBbENWLink para sa Europa: -

4. Breadboard. (Iminumungkahi ko ang kit na ito) Link para sa US: - https://amzn.to/2Dy86w4Link para sa Europa: -

5. Baterya. (opsyonal, gumagamit ako ng isang 5v adapter)

6. Cardboard / Wood / Sun-board / acrylic kung ano ang magagamit o madaling hanapin.

At kakailanganin mo ring mai-install ang Arduino IDE.

Hakbang 2: Paggawa ng Arm: -

Paggawa ng Arm:
Paggawa ng Arm:
Paggawa ng Arm:
Paggawa ng Arm:

Dito ko ginamit ang Popsicle sticks upang gawin ang braso. Maaari mong gamitin ang anumang materyal na magagamit sa iyo. At maaari mong subukan ang iba't ibang mga disenyo ng makina upang gawing mas mahusay ang braso. ang disenyo ko ay hindi masyadong matatag.

Gumamit lang ako ng double sided tape upang idikit ang mga servos sa stick ng Popsicle at i-fasten ang mga ito gamit ang mga turnilyo.

Para sa Master arm, idinikit ko ang mga potentiometers sa mga popsicle stick at ginawang braso.

Ang pagsangguni sa mga larawan ay magbibigay sa iyo ng isang mas mahusay na Idea.

Na-mount ko ang lahat sa isang A4 na laki ng canvas board na ginamit bilang batayan.

Hakbang 3: Paggawa ng Mga Koneksyon: -

Paggawa ng Mga Koneksyon:
Paggawa ng Mga Koneksyon:
Paggawa ng Mga Koneksyon:
Paggawa ng Mga Koneksyon:
Paggawa ng Mga Koneksyon:
Paggawa ng Mga Koneksyon:

Sa hakbang na ito gagawin namin ang lahat ng kinakailangang koneksyon, Sumangguni sa mga larawan sa itaas.

  • Una ikonekta ang lahat ng mga servo kahanay sa supply ng kuryente (Ang Pulang wire sa + ve at Itim o Brown Wire hanggang Gnd)
  • Susunod na ikonekta ang mga wire ng signal ie Yellow o Orange wire sa PWM pin ng arduino.
  • Ikonekta ngayon ang mga potensyal sa + 5v at Gnd ng arduino nang kahanay.
  • Ikonekta ang gitnang terminal sa Analog pin ng ardunio.

Dito ginagamit ang Digital Pins 3, 5, 6, 9 & 10 para sa pagkontrol sa mga servo

Ang Mga Analog Pins A0 hanggang A4 ay ginagamit para sa Input mula sa Potentiometers.

Ang servo na konektado sa pin 3 ay makokontrol ng potentiometer na konektado sa A0

Ang servo na konektado sa pin 5 ay makokontrol ng palayok sa A1, at iba pa ….

Tandaan: - Kahit na ang servos ay hindi pinalakas ng arduino, Siguraduhing ikonekta ang Gnd ng mga servo sa arduino o kung hindi man gagana ang braso.

Hakbang 4: Coding: -

Coding:
Coding:

Ang Logic ng code na ito ay medyo simple ang mga halaga ng potentiometers ay naka-imbak sa isang array ang mga tala ay pagkatapos ay traversed gamit ang isang para sa loop at gawin ng mga servos ang mga hakbang ayon sa mga halaga. Maaari mong suriin ang tutorial na ito na ginamit ko para sa sanggunian na "Arduino Potentiometer Servo Control & Memory"

Code: - (Maida-download na file na naka-attach sa ibaba.)

Una naming idedeklara ang lahat ng kinakailangang mga variable sa buong mundo upang magamit natin ang mga ito sa buong programa. Hindi kinakailangan ng espesyal na paliwanag para dito

# isama

// Servo Objects Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Potentiometer Objects int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Variable upang maiimbak ang Servo Position int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Variable upang maiimbak ang mga nakaraang halaga ng posisyon sa Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // Variable upang maiimbak ang mga kasalukuyang halaga ng posisyon sa kasalukuyang_0_Pos; int Kasalukuyan_1_Pos; int Kasalukuyang_2_Pos; int Kasalukuyang_3_Pos; int Kasalukuyang_4_Pos; int Servo_Position; // Tindahan ng anggulo int Servo_Number; // Tindahan wala ng servo int Storage [600]; // Array upang mag-imbak ng data (Ang pagtaas ng laki ng array ay ubusin ang higit na memorya) int Index = 0; // Array index ay nagsisimula mula sa ika-0 na posisyon char data = 0; // variable upang mag-imbak ng data mula sa serial input.

Ngayon ay magsusulat kami ng isang pag-andar sa pag-setup, kung saan itinakda namin ang mga pin at ang kanilang mga pagpapaandar. Ito ang pangunahing pag-andar na nagpapatupad muna

walang bisa ang pag-setup ()

{Serial.begin (9600); // Para sa Serial na komunikasyon sa pagitan ng arduino at IDE. // Ang mga bagay ng Servo ay nakakabit sa mga PWM na pin. Servo_0.attach (3); Servo_1.attach (5); Servo_2.attach (6); Servo_3.attach (9); Servo_4.attach (10); // Ang mga servos ay nakatakda sa 100 posisyon sa pagsisimula. Servo_0.write (100); Servo_1.write (100); Servo_2.write (100); Servo_3.write (100); Servo_4.write (100); Serial.println ("Pindutin ang 'R' upang Itala at 'P' upang i-play"); }

Ngayon ay kailangan nating basahin ang mga halaga ng potentiometers gamit ang mga Analog Input pin at i-map ang mga ito upang makontrol ang mga servos. Para dito bibigyan namin ng kahulugan ang isang pagpapaandar at pangalanan itong Map_Pot ();, maaari mong pangalanan ito kahit anong gusto mo ito ay isang function na tinukoy ng gumagamit

walang bisa ang Map_Pot ()

{/ * Paikutin ang servos sa 180 degree ngunit upang magamit ito sa mga limitasyon ay hindi isang magandang ideya dahil ginagawa itong patuloy na buzz ng servos na nakakainis kaya nililimitahan namin ang servo upang lumipat sa pagitan ng: 1-179 * / Pot_0 = analogRead (A0); // Basahin ang input mula sa palayok at iimbak ito sa Variable Pot_0. Servo_0_Pos = mapa (Pot_0, 0, 1023, 1, 179); // Map servos ayon sa halaga sa pagitan ng 0 hanggang 1023 Servo_0.write (Servo_0_Pos); // Ilipat ang servo sa posisyon na iyon. Pot_1 = analogRead (A1); Servo_1_Pos = mapa (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = mapa (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = mapa (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = mapa (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }

Ngayon ay isusulat namin ang pagpapaandar ng loop:

walang bisa loop ()

{Map_Pot (); // Function call upang mabasa ang mga halaga ng palayok habang (Serial.available ()> 0) {data = Serial.read (); kung (data == 'R') Serial.println ("Paglilipat ng Pagre-record …"); kung (data == 'P') Serial.println ("Nagpe-play ang Nairekord na Mga Paggalaw …"); } kung (data == 'R') // Kung ipinasok ang 'R', simulang magrekord. {// Itago ang mga halaga sa isang variable Prev_0_Pos = Servo_0_Pos; Prev_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Prev_3_Pos = Servo_3_Pos; Prev_4_Pos = Servo_4_Pos; Map_Pot (); // Naalala ang pagpapaandar ng mapa para sa paghahambing kung (abs (Prev_0_Pos == Servo_0_Pos)) // ganap na halaga ay nakuha sa pamamagitan ng paghahambing sa {Servo_0.write (Servo_0_Pos); // Kung ang mga halagang tugma sa servo ay muling inilalagay kung (Kasalukuyang_0_Pos! = Servo_0_Pos) // Kung ang mga halaga ay hindi tumutugma sa {Storage [Index] = Servo_0_Pos + 0; // Ang halaga ay idinagdag sa array Index ++; // Index index incremented by 1} Kasalukuyang_0_Pos = Servo_0_Pos; } / * Katulad nito ang paghahambing ng halaga ay tapos na para sa lahat ng mga servo, +100 ay idinagdag bawat para sa pagpasok bilang isang kaugalian na halaga. * / if (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); kung (kasalukuyan_1_Pos! = Servo_1_Pos) {Storage [Index] = Servo_1_Pos + 100; Index ++; } Kasalukuyan_1_Pos = Servo_1_Pos; } kung (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); kung (kasalukuyang_2_Pos! = Servo_2_Pos) {Storage [Index] = Servo_2_Pos + 200; Index ++; } Kasalukuyang_2_Pos = Servo_2_Pos; } kung (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); kung (Current_3_Pos! = Servo_3_Pos) {Storage [Index] = Servo_3_Pos + 300; Index ++; } Kasalukuyang_3_Pos = Servo_3_Pos; } kung (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); kung (Current_4_Pos! = Servo_4_Pos) {Storage [Index] = Servo_4_Pos + 400; Index ++; } Kasalukuyang_4_Pos = Servo_4_Pos; } / * Ang mga halaga ay naka-print sa serial monitor, ang '\ t' ay para sa pagpapakita ng mga halaga sa format na tabular * / Serial.print (Servo_0_Pos); Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); Serial.print (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); Serial.print ("Index ="); Serial.println (Index); antala (50); } kung (data == 'P') // KUNG ipinasok ang 'P', Magsimulang maglaro ng mga naitala na gumagalaw. {for (int i = 0; i <Index; i ++) // Daanan ang array gamit ang loop {Servo_Number = Storage / 100; // Nahanap ang bilang ng servo Servo_Position = Storage % 100; // Nakahanap ng posisyon ng servo switch (Servo_Number) {case 0: Servo_0.write (Servo_Position); pahinga; kaso 1: Servo_1.write (Servo_Position); pahinga; kaso 2: Servo_2.write (Servo_Position); pahinga; kaso 3: Servo_3.write (Servo_Position); pahinga; kaso 4: Servo_4.write (Servo_Position); pahinga; } pagkaantala (50); }}}

Kapag handa na ang code, Ngayon i-upload ito sa arduino board

Handa nang gumana ang Smart arm. Ang pagpapaandar ay hindi pa makinis tulad ng ginawa ng Stoerpeak.

Kung maaari mong gawing mas mahusay ang code o may anumang mga mungkahi para sa akin mangyaring ipaalam sa akin sa seksyon ng komento.

Sa nasabing iyon, Hayaan magpatuloy sa pagsubok ….

Hakbang 5: Pagsubok: -

Matapos ang matagumpay na pag-upload ng code sa board, Buksan ang 'Serial Monitor' maaari mo itong makita sa pagpipiliang Mga Tool. Kapag nagsimula ang Serial monitor ang arduino ay i-reset. Ngayon ay makokontrol mo ang robotic arm gamit ang master arm. Ngunit walang naitala.

Upang simulan ang pag-record, Ipasok ang 'R' sa monitor ngayon maaari mong gampanan ang mga paggalaw na nais mong i-record.

Matapos ang paggalaw ay tapos na kailangan mong ipasok ang 'P' upang i-play ang naitala na mga gumagalaw. Ang servos ay magpapatuloy na gawin ang mga gumagalaw hangga't ang board ay hindi na-reset.

Inirerekumendang: