- MPU6050-gyroskooppi- ja kiihtyvyysanturi
- Joustava anturi
- 3D-tulostetun robotti-ARM: n valmistelu:
- Vaaditut komponentit:
- Piirikaavio:
- MPU6050 & Flex-anturin kiinnittäminen käsineisiin
- Arduino Nano -ohjelmointi robottiosalle
- Eleohjatun robottivarren työskentely Arduinolla
Robotti-aseet ovat yksi kiehtovista tekniikan luomuksista, ja on aina kiehtovaa katsella näiden asioiden kallistumista ja panorointia saadaksesi monimutkaisia asioita aivan kuten ihmisen käsivarsi tekisi. Nämä robottivarret löytyvät yleisesti kokoonpanolinjan toimialoilta, jotka suorittavat voimakasta mekaanista työtä, kuten hitsaus, poraus, maalaus jne., Äskettäin kehittyneitä, erittäin tarkkoja robottivarret kehitetään myös monimutkaisten kirurgisten toimenpiteiden suorittamiseksi. Aikaisemmin 3D-tulostimme robottivarren ja rakensimme DIY Pick and Place -robotinvarren ARM7-mikrokontrollerilla. Käytämme jälleen samaa 3D-tulostettua robottihaaraa käsin eleohjatun robotti-ARM: n tekemiseen Arduino Nano-, MPU6050-gyroskoopilla ja flex-anturilla.
Tätä 3D-tulostettua robottivarren asentoa ohjataan käsineellä, joka on kiinnitetty MPU6050-gyroskoopilla ja taipuisalla anturilla. Flex-anturia käytetään ohjaamaan robottivarren tarttujaservoa ja MPU6050: tä käytetään robotin liikkumiseen X- ja Y-akselilla. Jos sinulla ei ole tulostinta, voit myös rakentaa käsivartesi yksinkertaisella pahvilla, kuten rakennimme Arduino-robottivarren projektiin. Inspiraatiota varten voit myös viitata Record and Play Robotic Arm -sarjaan, jonka rakennimme aiemmin Arduinolla.
Ennen kuin ryhdymme yksityiskohtiin, tutustu ensin MPU6050-anturiin ja joustavaan anturiin.
MPU6050-gyroskooppi- ja kiihtyvyysanturi
MPU6050 perustuu MEMS-tekniikkaan. Tässä anturissa on 3-akselinen kiihtyvyysanturi, 3-akselinen gyroskooppi ja sisäänrakennettu lämpötila-anturi. Sitä voidaan käyttää mittaamaan parametreja, kuten kiihtyvyys, nopeus, suunta, siirtymä jne. Olemme aiemmin liittäneet MPU6050: n Arduino- ja Raspberry pi -laitteisiin ja rakentaneet myös muutaman projektin, kuten - Itsetasapainottava robotti, Arduino Digital Protractor ja Arduino Inclinometer.
MPU6050-anturin ominaisuudet:
- Tiedonsiirto: I2C-protokolla konfiguroitavalla I2C-osoitteella
- Syöttöjännite: 3-5 V
- Sisäänrakennettu 16-bittinen ADC tarjoaa korkean tarkkuuden
- Sisäänrakennettu DMP tarjoaa korkean laskentatehon
- Voidaan käyttää liitäntään muiden I2C-laitteiden, kuten magnetometrin, kanssa
- Sisäänrakennettu lämpötila-anturi
MPU6050: n kiinnitystiedot:
Tappi | Käyttö |
Vcc | Tarjoaa virtaa moduulille, voi olla + 3 V - + 5 V. Tyypillisesti käytetään + 5V |
Maa | Yhdistetty järjestelmän maahan |
Sarjakello (SCL) | Käytetään kellopulssin tarjoamiseen I2C-tiedonsiirtoa varten |
Sarjatiedot (SDA) | Käytetään tietojen siirtämiseen I2C-tiedonsiirron kautta |
Lisäsarjatiedot (XDA) | Voidaan käyttää muiden I2C-moduulien liittämiseen MPU6050: n kanssa |
Sarjalisäkello (XCL) | Voidaan käyttää muiden I2C-moduulien liittämiseen MPU6050: n kanssa |
AD0 | Jos yhtä MCU: ta käytetään useammalla kuin yhdellä MPU6050: lla, osoitinta voidaan muuttaa tällä tapilla |
Keskeytys (INT) | Keskeytä tappi osoittamaan, että tietoja on käytettävissä MCU: n lukemiseen |
Joustava anturi
Flex-anturit eivät ole muuta kuin muuttuva vastus. Joustavan anturin vastus muuttuu, kun anturi taivutetaan. Niitä on yleensä saatavana kahdessa koossa 2,2 tuumaa ja 4,5 tuumaa.
Miksi projektissamme käytetään joustavia antureita?
Tässä eleohjatussa robottivarressa joustavaa anturia käytetään ohjaamaan robottivarren tarttujaa. Kun käsineiden joustotunnistin taipuu, tarttujaan kiinnitetty servomoottori pyörii ja tarttuja avautuu.
Flex-antureista voi olla hyötyä monissa sovelluksissa, ja olemme rakentaneet muutaman projektin, joka käyttää Flex-anturia, kuten peliohjainta, äänigeneraattoria jne.
3D-tulostetun robotti-ARM: n valmistelu:
Tässä opetusohjelmassa käytetty 3D-tulostettu robottivarsi tehtiin seuraamalla EEZYbotARMin antamaa mallia, joka on saatavana Thingiversessa. Täydellinen menettely 3D-tulostetun robottivarren valmistamiseksi ja kokoonpanon yksityiskohdat videon kanssa ovat edellä jaetussa Thingiverse-linkissä.
Yläpuolella on kuva 3D-tulostetusta robotti-käsivarrestani, kun se on koottu 4 Servo-moottorilla.
Vaaditut komponentit:
- Arduino Nano
- Joustava anturi
- 10k vastus
- MPU6050
- Käsineet
- Johtojen liittäminen
- Leipälauta
Piirikaavio:
Seuraava kuva näyttää piiriliitännät Arduino- pohjaiselle eleohjatulle robottivarrelle.
Piiriliitäntä MPU6050: n ja Arduino Nano: n välillä:
MPU6050 |
Arduino Nano |
VCC |
+ 5 V |
GND |
GND |
SDA |
A4 |
SCL |
A5 |
Piiriyhteys servomoottoreiden ja Arduino Nanon välillä:
Arduino Nano |
SERVO MOOTTORI |
Muuntaja |
D2 |
Servo 1 oranssi (PWM-tappi) |
- |
D3 |
Servo 2 oranssi (PWM-tappi) |
- |
D4 |
Servo 3 oranssi (PWM-tappi) |
- |
D5 |
Servo 4 oranssi (PWM-tappi) |
- |
GND |
Servo 1,2,3,4 Ruskea (GND-tappi) |
GND |
- |
Servo 1,2,3,4 Punainen (+ 5 V nasta) |
+ 5 V |
Flex anturi sisältää kaksi tappia. Se ei sisällä polarisoituja päätteitä. Joten nasta yksi P1 on kytketty Arduino nanon analogiseen nastaan A0 10 k: n vetovastuksella ja nasta kaksi P2 maadoitetaan Arduinoon.
MPU6050 & Flex-anturin kiinnittäminen käsineisiin
Olemme asentaneet MPU6050: n ja Flex-anturin käsineeseen. Tässä käytetään kiinteää yhteyttä käsineen ja robottivarren liittämiseen, mutta se voidaan tehdä langattomaksi käyttämällä RF-yhteyttä tai Bluetooth-yhteyttä.
Jokaisen yhteyden jälkeen eleohjatun robottivarren lopullinen määritys näyttää alla olevalta kuvalta:
Arduino Nano -ohjelmointi robottiosalle
Kuten tavallista, täydellinen koodi ja toimiva video annetaan tämän opetusohjelman lopussa. Tässä selitetään muutama tärkeä koodirivi.
1. Liitä ensin tarvittavat kirjastotiedostot. Wire.h- kirjastoa käytetään I2C-viestintään Arduino Nano & MPU6050: n ja servo.h : n välillä servomoottorin ohjaamiseksi.
#sisältää
2. Seuraavaksi ilmoitetaan luokan servo objektit. Kun käytämme neljää servomoottoria, luodaan neljä objektia, kuten servo_1, servo_2, servo_3, servo_4.
Servo-servo_1; Servo-servo_2; Servo-servo_3; Servo-servo_4;
3. Seuraavaksi ilmoitetaan MPU6050: n I2C-osoite ja käytettävät muuttujat.
const int MPU_addr = 0x68; // MPU6050 I2C Osoite int16_t axis_X, axis_Y, axis_Z; int minVal = 265; int maxVal = 402; kaksinkertainen x; kaksinkertainen y; kaksinkertainen z;
4. Seuraavaksi tyhjässä asetuksessa asetetaan 9600: n siirtonopeus sarjaliikenteelle.
Sarjan alku (9600);
Ja I2C-tiedonsiirto Arduino Nano & MPU6050: n välillä on muodostettu:
Wire.begin (); // Initialize I2C Communication Wire.beginTransmission (MPU_addr); // Aloita viestintä MPU6050 Wire.write (0x6B): n kanssa; // Kirjoittaa rekisteröidäkseen 6B Wire.write (0); // Kirjoittaa 0 6B-rekisteriin palauttaakseen Wire.endTransmission (true); // Lopettaa I2C-lähetyksen
Lisäksi on määritetty neljä PWM-nastaa servomoottoriliitäntöjä varten.
servo_1.attach (2); // eteenpäin / taaksepäin_moottori servo_2.attach (3); // Ylös / Alas_Moottorin servo_3.kytke (4); // Gripper_Motor servo_4.attach (5); // Vasen / Oikea_Moottori
5. Muodosta seuraavaksi void loop -toiminnossa jälleen I2C-yhteys MPU6050: n ja Arduino Nano: n välille ja aloita sitten X, Y, Z-Axis-tietojen lukeminen MPU6050-rekisteristä ja tallenna ne vastaaviin muuttujiin.
Wire.beginTransmission (MPU_addr); Wire.write (0x3B); // Aloita regsiterillä 0x3B Wire.endTransmission (false); Wire.requestFrom (MPU_addr, 14, tosi); // Lue 14 rekisteriä akseli_X = Wire.read () << 8-Wire.read (); axis_Y = Wire.read () << 8-Wire.read (); axis_Z = Wire.read () << 8-Wire.read ();
Sen jälkeen kartoita MPU6050-anturin akselidatan minimi- ja maksimiarvo välillä -90-90.
int xAng = kartta (akseli_X, minVal, maxVal, -90,90); int yAng = kartta (akseli_Y, minVal, maxVal, -90,90); int zAng = kartta (akseli_Z, minVal, maxVal, -90,90);
Käytä sitten seuraavaa kaavaa laskeaksesi x-, y-, z-arvot välillä 0-360.
x = RAD_TO_DEG * (atan2 (-yAng, -zAng) + PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng) + PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng) + PI);
Lue sitten joustotunnistimen analogiset lähtötiedot Arduino nanon A0-nastasta ja aseta joustunnistimen digitaalisen arvon mukaan tarttujan servokulma. Joten jos taipumistunnistimen tiedot ovat yli 750, tarttujan servomoottorin kulma on 0 astetta ja jos alle 750 se on 180 astetta.
int tarttuja; int flex_sensorip = analoginenLue (A0); if (flex_sensorip> 750) { tarttuja = 0; } else { tarttuja = 180; } servo_3.write (tarttuja);
Sitten MPU6050: n liike X-akselilla 0: sta 60: een kartoitetaan 0-90 asteen suhteen servomoottorin Robotti-käsivarren eteen- / taaksepäin -liikkeelle.
if (x> = 0 && x <= 60) { int mov1 = kartta (x, 0,60,0,90); Sarja.tulos ("liike F / R ="); Sarjaprintti (mov1); Sarjaprintln ((hiili) 176); servo_1.write (mov1); }
Ja MPU6050: n liike X-akselilla 250: stä 360: een kartoitetaan 0-90 astetta servomoottorin YLÖS / ALAS-liikerobottivarrelle.
muuten if (x> = 300 && x <= 360) { int mov2 = kartta (x, 360,250,0,90); Serial.print ("liike ylös / alas ="); Sarjaprintti (mov2); Sarjaprintln ((hiili) 176); servo_2.write (mov2); }
MPU6050: n liike Y-akselilla 0: sta 60: een on kartoitettu 90-180 astetta servomoottorin robotin varren vasemmalle liikkeelle.
if (y> = 0 && y <= 60) { int mov3 = kartta (y, 0,60,90,180); Sarja.tulos ("liike vasemmalla ="); Sarjaprintti (mov3); Sarjaprintln ((hiili) 176); servo_4.write (mov3); }
MPU6050: n liike Y-akselilla 300: sta 360: een on kartoitettu 0-90 asteen suhteen servomoottorin oikeanpuoleiselle liikkumiselle.
else if (y> = 300 && y <= 360) { int mov3 = kartta (y, 360,300,90,0); Serial.print ("Movement in Right ="); Sarjaprintti (mov3); Sarjaprintln ((hiili) 176); servo_4.write (mov3); }
Eleohjatun robottivarren työskentely Arduinolla
Lataa lopuksi koodi Arduino Nanoon ja käytä MPU6050 & Flex -anturilla kiinnitettyä käsineitä.
1. Siirrä nyt kättä alaspäin robotin käsivarren eteenpäin siirtämiseksi ja ylöspäin robotin käsivarren ylöspäin siirtämiseksi.
2. Käännä sitten kättä vasemmalle tai oikealle kääntääksesi robottiosaa vasemmalle tai oikealle.
3. Taivuta käsineiden sormella kiinnitetty joustokaapeli tarttujan avaamiseksi ja vapauta se sitten sulkemaan se.
Täydellinen työskentely on esitetty alla olevassa videossa.