Sisällysluettelo:

Lankaohjattu robottivarsi: 31 vaihetta
Lankaohjattu robottivarsi: 31 vaihetta

Video: Lankaohjattu robottivarsi: 31 vaihetta

Video: Lankaohjattu robottivarsi: 31 vaihetta
Video: 199 Amazing Fastest Big Wood Sawmill Machines Working At Another Level ►2 2024, Marraskuu
Anonim
Lankaohjattu robotti
Lankaohjattu robotti

Tämä on opetusohjelma siitä, kuinka tehdä robotti käsivarsi, jota ohjataan johtimilla. Johtimien käytön etuna on, että käsivartesi on kevyempi ja kaikki moottorit voivat olla käsivarren pohjassa, mikä helpottaa rakentamista ja huoltoa. Tässä video käsivarsista toiminnassa. Aion lisätä kynsiä tulevaisuudessa, jotta se voi poimia asioita eikä vain työntää niitä ympäri.

3D -tulostettavat:

Tässä ja Tässä

Tarvikkeet

6 servomoottoria (MG995)

Arduino Uno

Noin 6 metriä muovipinnoitettua teräslankaa (0,5 mm)

Laatikko 23x33x10 (saattaa olla kapeampi, ei saisi olla lyhyempi)

Puulauta 33x10

Mutterit ja pultit

Putki 14 cm (tätä tarvitaan merkkijonojen ohjaamiseen)

4 L-kiinnikkeet

5 voltin sovitin

2 7-suuntaista riviliitintä

Leipälevyn johdot

3D -tulostetut komponentit (en ole itse suunnitellut, linkit kuvauksen elementteihin):

3 "Pultit"

2 "Elementti 1"

1 "Elementti 2"

2 "Elementti 3"

1 Tukiaseman liitin

Vaihe 1: Tulosta kaikki 3D -komponentit

Saatat tarvita tukea pultinreikiin ja kaariin, mutta varmista, ettet lisää tukea komponenttien runkoon; tämä sulkee pienet lankareiät ja sinun on tehtävä uusia reikiä

Vaihe 2: (Valinnainen) Kiinnitä puulaatikko laatikon pohjaan sen vahvistamiseksi

Laatikkoni oli melko heikko, sinun ei ehkä ole

Vaihe 3: Mittaa ja leikkaa puulaatta laatikkoon sopivaksi

Vaihe 4: Merkitse moottorien sijainnit

varmista, että mikään käsivarsista ei kosketa toisiaan

Vaihe 5: Merkitse kiinnikkeiden ja putken paikat

Merkitse kiinnikkeiden ja putken sijainnit
Merkitse kiinnikkeiden ja putken sijainnit

Putki tulee sijoittaa noin yhden senttimetrin reiän eteen

Vaihe 6: Poraa reikä laatikoista tuleville kaapeleille (USB ja virta)

Poraa reikä pakkauksestasi tuleville kaapeleille (USB ja virta)
Poraa reikä pakkauksestasi tuleville kaapeleille (USB ja virta)

Vaihe 7: Poraa ja sahaa kaikki merkityt reiät

Poraa ja sahaa kaikki merkityt reiät
Poraa ja sahaa kaikki merkityt reiät

Vaihe 8: Kiinnitä moottorit ja putki lautaan

Vaihe 9: Kiinnitä lankku laatikkoon L-kiinnikkeillä

Vaihe 10: Ota liittimet ja juota johdot yhteen

Ota riviliittimet ja juota johdot yhteen
Ota riviliittimet ja juota johdot yhteen

Vaihe 11: Katkaise sovittimen virtajohdon pää ja kuori johdot

Vaihe 12: Tunnista ja merkitse plus- ja miinusjohdot

Vaihe 13: Kiinnitä johdot riviliittimiin niin, että kaikki + servojohdot ja virtajohdon + johto on kytketty, sama koskee - johtoja

Kiinnitä johdot riviliittimiin niin, että kaikki + servojohdot ja virtajohdon + johto on kytketty, sama koskee - johtoja
Kiinnitä johdot riviliittimiin niin, että kaikki + servojohdot ja virtajohdon + johto on kytketty, sama koskee - johtoja

Vaihe 14: Katkaise pää leipälevyn langalta

Katkaise pää leipälevyn langalta
Katkaise pää leipälevyn langalta

Kiinnitä leipälautajohdon kuorittu pää miinusliittimeen ja tapin pää arduino -laitteen maadoitusnastaan. Jos et tee tätä, moottorit liikkuvat epäsäännöllisesti ilman tuloa.

Vaihe 15: Poraa kolme reikää laatikon pohjalle käsivarsistasi tulevia johtoja varten

Reikien tulee vastata perusliittimen reikiä.

Vaihe 16: Kiinnitä tukiliitin laatikkoon

Kiinnitä tukiliitin laatikkoon
Kiinnitä tukiliitin laatikkoon

Vaihe 17: Käytä terää tai kynsiviilaa viiraurien syventämiseen

Käytä veitsiä tai kynsiviilaa viiraurien syventämiseen
Käytä veitsiä tai kynsiviilaa viiraurien syventämiseen

Elementtien 2 ja 3 lankaurat ovat liian matalat.

Vaihe 18: Rakenna varsi

Rakenna varsi
Rakenna varsi

Rakenna varsi tässä annettujen ohjeiden mukaisesti, saatat joutua viilaamaan osat niin, että ne sopivat

Vaihe 19: Asenna Processing ja Arduino

Käsittely ja Arduino

Vaihe 20: Liitä koodiohjelmat

Koodi on tämän sivun alareunassa

Vaihe 21: Liitä servonohjaustapit Arduinoon

Liitä servonohjaustapit Arduinoon
Liitä servonohjaustapit Arduinoon

Yhdistin ensimmäisen moottorin kolmanteen digitaaliseen nastaan, toisen moottorin neljänteen digitaaliseen nastaan ja niin edelleen. Varmista, että maadoitusnasta on edelleen kytketty - riviliittimeen.

Vaihe 22: Paina Reset -painiketta käsittelyssä, tämä asettaa kaikki aseet 90 asteeseen

Vaihe 23: Kiinnitä servovarret moottoriin vaakasuoraan

Vaihe 24: Pujota johdot aseiden läpi niin, että ne eivät löysty

Varmista, että pujotat langan mahdollisimman monen reiän läpi, sillä se pitää sen tilapäisesti ja on helppo poistaa.

Vaihe 25: Testaa varsi ja kiristä tai löysää johdot tarpeen mukaan

Vaihe 26: Liimaa johdot kuumasti servovarsiin, jotta se pysyy

Vaihe 27: Huomautuksia

Huomautuksia
Huomautuksia

Käytin 0,5 mm korulankaa, mutta 0,4 mm pitäisi olla hieno. Alkuperäisessä suunnittelussa käytettiin PVC -lankaa, mutta se hajosi liian helposti ja sen kanssa oli vaikea työskennellä.

Jos aiot liikuttaa käsivartta autossa tai pyörässä, kiedo käsinivelet teipillä varmistaaksesi, että ne eivät ponnahda ulos. Tämä on erityisen tärkeää elementille 1.

Kun aloitin tämän projektin, ihmettelin, miksi löysin vain yhden opetusohjelman siitä, miten tehdä käsivarsi, jota ohjataan johtimilla. Nyt ymmärrän, miksi tämä ei ole yleisin tapa tehdä harrastusrobottivarret. Johdot putoavat toisinaan uristaan ja koko asia on jotenkin heikko. En tiedä johtuuko ongelmista, koska minulla ei ole paljon kokemusta, vai onko koko idea ongelmallinen, vaikka olen varma, että se olisi vankempi, jos tietäisin mitä teen.

Vaihe 28: Vianetsintä

Langanreiät on suljettu 3D -tulostetuissa elementeissä:

Lisäsit tuen koko elementille vain pultinreikien sijasta. Tulosta elementti uudelleen tai avaa reiät todella kuumalla neulalla.

COM -portti on suljettu, et voi kommunikoida arduinon kanssa:

Arduino ei ehkä hyväksy USB 3 -portteja (minun ei), voit joko ostaa USB 2 -jatkokaapelin tai käyttää tietokonetta, jossa on USB 2 -portit

Koodi ei toimi:

Noudata tätä opetusohjelmaa ja muokkaa sitä luodaksesi oman koodisi

Osa käsivartta ei liiku:

Johdot ovat saattaneet sotkeutua, tarkistaaksesi tämän, ota servovarsi irti servosta ja yritä vetää johdot käsin. Irrota johdot ja jos johtojen vetäminen on edelleen vaikeaa, kokeile WD-40: n tai voiteluaineen käyttöä liikkeen helpottamiseksi

Vaihe 29: Linkit

Ei-robottivarsi:

Käsittele 3D-tulostettavat:

My Arm 3D-tulostettava:

Arduino ja käsittely:

Vaihe 30: Koodi

Muokattu tästä koodista

Arduino -koodi:

#include // Ilmoita moottorit Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Kaikki moottorit on asetettu oletusarvoisesti 90 asteeseen int current1 = 90; int virta2 = 90; int virta3 = 90; int virta4 = 90; int nykyinen5 = 90; int nykyinen6 = 90; // Minimi- ja maksimiasteet, joita moottorit voivat saavuttaa 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; // Asteet, jotka lisätään tai vähennetään nykyisestä sijainnista int fokFoward = 5; // Viive, joten kaksi funktiota ei tapahdu väärässä järjestyksessä int delayBetweenSteps = 100; void setup () {// Aseta ohjaustapit kullekin moottorille myservo1.attach (3); myservo2.attach (4); myservo3.liitäntä (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Aseta kaikki moottorit oletusasetuksiin myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (nykyinen5); myservo6.write (current6); // aloita sarjaliikenne @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// jos tietoja on luettavissa char val = Serial.read (); // laita se tähän merkkiin // Moottorin säätimet if (val == 'a' && current1 + asteFoward mini1) {myservo1.write (current1 - laipsniųFoward); nykyinen1 = virta11 astetta delay (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - asteFoward); nykyinen2 = virta2 - astetta eteenpäin; delay (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - laipsniųFoward); nykyinen3 = virta33 astetta delay (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - laipsniųFoward); nykyinen4 = nykyinen4 astetta delay (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - laipsniųFoward); nykyinen5 = virta55 astetta delay (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - laipsniųFoward); nykyinen6 = nykyinen6 - astetta delay (delayBetweenSteps); } // Nopeus Säätää, jos (val == 'w') {// Jos nopeus 1 -painiketta painetaan asteina Edessä = 1; delay (delayBetweenSteps); } if (val == 'x') {// Jos nopeus 5 -painiketta painetaan asteita eteenpäin = 5; delay (delayBetweenSteps); } if (val == 'y') {// Jos nopeus 10 -painiketta painetaan asteita eteenpäin = 10; delay (delayBetweenSteps); } if (val == 'z') {// Jos nopeus 20 -painiketta painetaan astetta Eteenpäin = 20; delay (delayBetweenSteps); } if (val == 'r') {// Jos nopeus 20 -painiketta painettiin myservo1.write (90); virta1 = 90; myservo2.write (90); virta2 = 90; myservo3.write (90); virta3 = 90; myservo4.write (90); virta4 = 90; myservo5.write (90); virta5 = 90; myservo6.write (90); virta6 = 90; delay (delayBetweenSteps); }}}

Käsittelykoodi:

tuonti käsittely. sarja.*; tuonnin valvontaP5.*; // Tuo ControlP5 -kirjasto Sarjaportti; ControlP5 cp5; // luoda ControlP5 -objektin PFont -fontti; void setup () {// sama kuin arduino -ohjelman koko (300, 700); // ikkunan koko, (leveys, korkeus) printArray (Serial.list ()); // tulostaa kaikki käytettävissä olevat sarjaportit // Jos sinulla on ongelma, se tulee todennäköisesti täältä String portName = Serial.list () [0]; portti = uusi sarja (tämä, portin_nimi, 9600); // olen liittänyt arduinon com3: een, se olisi erilainen Linuxissa ja mac osissa // lisäämme butonin tyhjään ikkunaan cp5 = new ControlP5 (this); font = createFont ("Arial", 13); // painikkeiden ja otsikoiden mukautetut fontit // Nopeuden säätöpainikkeet cp5.addButton ("One") // "One" on painikkeen nimi.setPosition (50, 50) // painikkeen vasemman yläkulman x- ja y -koordinaatit.setSize (55, 25) // (leveys, korkeus).setFont (fontti); cp5.addButton ("Five").setPosition (110, 50).setSize (55, 25).setFont (fontti); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (fontti); cp5.addButton ("Kaksikymmentä").setPosition (230, 50).setSize (55, 25).setFont (fontti); cp5.addButton ("Reset").setPosition (110, 2).setSize (55, 25).setFont (fontti); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (fontti); // Moottorin ohjauspainikkeet cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (fontti); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (fontti); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (fontti); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (fontti); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (leveys, korkeus).setFont (fontti); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (fontti); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (leveys, korkeus).setFont (fontti); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (fontti); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (fontti); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (fontti); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (fontti); } void draw () {// sama kuin silmukka arduino -taustalla (192, 215, 249); // ikkunan taustaväri (r, g, b) tai (0 - 255) // Lisää teksti sanomalla, että nopeudensäätö on nopeudensäätö (0, 10, 25); // tekstin väri (r, g, b) textFont (fontti); teksti ("Nopeuden säätö", 50, 40); // ("teksti", x koordinaatti, y -koordinaatti)} // lisäämme joitain toimintoja painikkeisiimme // joten kun painat mitä tahansa painiketta, se lähettää erityistä merkkiä sarjaportin kautta // Olen varma, että merkkijonoja voidaan lähettää merkkien sijaan, ja se olisi järkevämpää, mutta en tiedä miten se tehdään // Nopeudenhallintakomennot void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Moottorin ohjauskomennot 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 Reset () {port.write ('r'); }

Vaihe 31: Lisää kuvia

Suositeltava: