Мазмұны:

Сымды басқарылатын робот қолы: 31 қадам
Сымды басқарылатын робот қолы: 31 қадам

Бейне: Сымды басқарылатын робот қолы: 31 қадам

Бейне: Сымды басқарылатын робот қолы: 31 қадам
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 2024, Қараша
Anonim
Сымды басқарылатын робот қолы
Сымды басқарылатын робот қолы

Бұл сымдармен басқарылатын робот қолын жасау туралы оқулық. Сымдарды қолданудың артықшылығы - сіздің қолыңыз жеңіл және сіз барлық қозғалтқыштарды қолыңыздың түбінде ұстай аласыз, бұл құрылыс пен қызмет көрсетуді жеңілдетеді. Қолдың қимылдағы бейнесі. Мен болашақта тырнақ қосуды жоспарлап отырмын, сонда ол заттарды итеріп қана қоймайды.

3D басып шығару:

Мұнда және мұнда

Жабдықтар

6 Servo Motors (MG995)

Ардуино Уно

Шамамен 6 метр пластикалық қапталған болат сым (0,5 мм)

23x33x10 қорап (тар болуы мүмкін, қысқа болмауы керек)

Ағаш тақтай 33x10

Гайкалар мен болттар

14 см құбыр (бұл жіптерді бағыттау үшін қажет)

4 L-жақшалар

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 -қадам: Сымдарды терминалдық блоктарға бекітіңіз, осылайша барлық + сервистік сымдар мен қуат сымының + сымы қосылады, сымдар үшін де солай болады

Сымдарды терминал блоктарына бекітіңіз, осылайша барлық + сервистік сымдар мен + қуат сымынан + сымдар қосылады, сымдар үшін де солай болады
Сымдарды терминал блоктарына бекітіңіз, осылайша барлық + сервистік сымдар мен + қуат сымынан + сымдар қосылады, сымдар үшін де солай болады

14 -қадам: Бас тақтасының сымын кесіңіз

Нан тақтасының сымын басынан кесіңіз
Нан тақтасының сымын басынан кесіңіз

Нан тақтасының сымының үзілген ұшын минус терминал блогына, ал түйреуішті ардуинодағы жерге түйреуішке бекітіңіз. Егер сіз мұны жасамасаңыз, қозғалтқыштар ешқандай кіріссіз тұрақсыз қозғалады.

15 -қадам: Қораптың түбінде қолыңыздан шығатын сымдар үшін үш тесік бұрғылаңыз

Тесіктер негізгі қосқыштағы тесіктерге сәйкес келуі керек.

16 -қадам: Негізгі коннекторды қорапқа бекітіңіз

Негізгі коннекторды қорапқа бекітіңіз
Негізгі коннекторды қорапқа бекітіңіз

17 -қадам: Сым ойықтарын тереңдету үшін пышақ немесе тырнақ файлын қолданыңыз

Сым ойықтарын тереңдету үшін пышақ немесе тырнақ файлын қолданыңыз
Сым ойықтарын тереңдету үшін пышақ немесе тырнақ файлын қолданыңыз

2 және 3 -элементтерге арналған сымдық ойықтар тым таяз.

18 -қадам: қолды жасаңыз

Қол жасау
Қол жасау

Қолды мұнда берілген нұсқауларға сәйкес құрастырыңыз, сізге бөлшектерді сәйкес келетін етіп салу қажет болуы мүмкін

19 -қадам: Processing және Arduino орнатыңыз

Өңдеу және Arduino

20 -қадам: Кодтық бағдарламаларды қойыңыз

Код осы беттің төменгі жағында

21 -қадам: Servo басқару түйреуіштерін Arduino -ға қосыңыз

Servo басқару түйреуіштерін Arduino -ға қосыңыз
Servo басқару түйреуіштерін Arduino -ға қосыңыз

Мен бірінші қозғалтқышты үшінші цифрлық түйреуішке, екінші қозғалтқышты төртінші цифрлық істікке және т.б. Жер штырының терминал блогына әлі де қосылғанын тексеріңіз.

22 -қадам: Өңдеу кезінде қалпына келтіру түймесін басыңыз, бұл барлық қолдарды 90 градусқа орнатады

23 -қадам: Серво қолдарын қозғалтқышқа көлденеңінен бекітіңіз

24 -қадам: Сымдарды бос қалмайтындай етіп қару -жарақпен өткізіңіз

Сымды мүмкіндігінше көптеген тесіктерден өткізгеніңізге көз жеткізіңіз, бұл оны уақытша ұстайды және алып тастау оңай болады.

25 -қадам: Қолды тексеріңіз және сымдарды қажетінше қатайтыңыз немесе босатыңыз

26 -қадам: Сымды тұрақты болу үшін сымдарды қару -жараққа ыстық желіммен жабыстырыңыз

27 -қадам: Ескертулер

Ескертулер
Ескертулер

Мен 0,5 мм зергерлік сымды қолдандым, бірақ 0,4 мм жақсы болуы керек. Түпнұсқа дизайнда ПВХ сымы қолданылған, бірақ ол өте оңай үзілген және онымен жұмыс істеу қиын болған.

Егер сіз автокөлікте немесе велосипедте қолыңызды жылжытқыңыз келсе, олардың шығып кетпеуін қамтамасыз ету үшін қолдың буындарын таспамен ораңыз. Бұл әсіресе бірінші элемент үшін маңызды.

Мен бұл жобаны бастаған кезде мен неге сыммен басқарылатын қолды жасау туралы бір ғана оқулықты таба аламын деп ойладым. Енді мен түсінемін, бұл неліктен хобби роботын жасаудың ең кең таралған әдісі емес. Сымдар кейде олардың ойықтарынан түсіп кетеді, және бәрі біршама нәзік. Білмеймін, бұл проблемалар менің тәжірибем аз болғандықтан ба, әлде барлық идея проблемалы ма, білмеймін, бірақ егер мен не істеп жатқанымды білсем, бұл сенімді болатынына сенімдімін.

28 -қадам: ақауларды жою

Сым тесіктері 3D басып шығарылған элементтерде жабылады:

Сіз болт тесіктерінің орнына бүкіл элементке қолдау қостыңыз. Немесе элементті қайта басып шығарыңыз немесе шынымен ыстық инемен тесіктерді ашыңыз.

COM порты жабық, сіз arduino -мен байланыса алмайсыз:

Сіздің arduino USB 3 портын қабылдамауы мүмкін (менікі емес), сіз USB 2 ұзартқыш кабелін сатып ала аласыз немесе USB 2 порты бар компьютерді қолдана аласыз.

Код жұмыс істемейді:

Осы оқулықты орындаңыз және оны өзіңіздің кодты жасау үшін өзгертіңіз

Қолдың бір бөлігі қозғалмайды:

Сымдар шиеленіскен болуы мүмкін, мұны тексеру үшін серво қолын серводан шығарып, сымдарды қолмен тартып көріңіз. Сымдарды шешіңіз, егер сымдарды тарту әлі қиын болса, қозғалысты жеңілдету үшін WD-40 немесе майлағышты қолданып көріңіз.

29 -қадам: Сілтемелер

Роботсыз қол:

3D 3D басып шығарылатын құралдар:

Менің қолым 3D басып шығарылады:

Arduino және өңдеу:

30 -қадам: код

Осы кодтан өзгертілді

Arduino коды:

#қосу // Қозғалтқыштарды Servo myservo1 деп жариялау; Сервис myservo2; Сервис myservo3; Сервис myservo4; Сервис myservo5; Сервис 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 DereceFoward = 5; // Кешіктіру екі функция қате ретпен орын алмайтындай етіп, int delayBetweenSteps = 100; void setup () {// myservo1.attach әр қозғалтқышы үшін басқару түйреуіштерін орнатыңыз (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Барлық қозғалтқыштарды myservo1.write (current1) әдепкі параметріне орнатыңыз; myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // тізбекті байланысты бастау @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// егер деректер char val = Serial.read () оқу үшін қол жетімді болса; // оны осы таңбаға салыңыз // Мотор басқару элементтері, егер (val == 'a' && current1 + градусFoward mini1) {myservo1.write (current1 - градусFoward); ағымдағы1 = ағымдағы1 - градусҚарсы; кешігу (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - dərəcəFoward); ағымдық2 = ағымдық2 - градусҚарсы; кешігу (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - градусFoward); ағымдағы3 = ағымдағы3 - градусҚарсы; кешігу (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - dərəcəFoward); ағымдық4 = ағымдық4 - градусҚарсы; кешігу (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - dərəcəFoward); ағымдық5 = ағымдық5 - градусҚарсы; кешігу (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - градусFoward); ток6 = ток6 - градусҚарсы; кешігу (delayBetweenSteps); } // Жылдамдықты басқарады if (val == 'w') {// Егер жылдамдық 1 батырмасы градусқа басылсаFoward = 1; кешігу (delayBetweenSteps); } if (val == 'x') {// Егер жылдамдық 5 батырмасы градусқа басылсаFoward = 5; кешігу (delayBetweenSteps); } if (val == 'y') {// Егер жылдамдық 10 батырмасы градусқа басылсаFoward = 10; кешігу (delayBetweenSteps); } if (val == 'z') {// Егер жылдамдық 20 түймешігі градусқа басылсаFoward = 20; кешігу (delayBetweenSteps); } if (val == 'r') {// Егер жылдамдық 20 түймесі басылса myservo1.write (90); ток1 = 90; myservo2.write (90); ток2 = 90; myservo3.write (90); ағымдағы3 = 90; myservo4.write (90); ағымдағы4 = 90; myservo5.write (90); ток5 = 90; myservo6.write (90); ток6 = 90; кешігу (delayBetweenSteps); }}}

Өңдеу коды:

импортты өңдеу.сериал.*; импортты бақылауP5.*; // ControlP5 кітапханасының сериялық портын импорттау; ControlP5 cp5; // ControlP5 объектісінің PFont шрифтін құру; void setup () {// arduino бағдарламасының өлшемімен бірдей (300, 700); // терезенің өлшемі, (ені, биіктігі) printArray (Serial.list ()); // барлық қол жетімді сериялық порттарды басып шығарады // Егер сізде мәселе туындаса, String portName = Serial.list () [0]; port = new Serial (this, portName, 9600); // мен arduino -ны com3 -ке қостым, бұл linux пен mac os -те басқаша болады // cp5 бос терезесіне buton қосуға мүмкіндік береді = жаңа 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 координаты, у координаты)} // біздің функцияларға кейбір функцияларды қосуға мүмкіндік береді // сондықтан кез келген түймені басқанда, ол белгілі бір таңбаны сериялық портқа жібереді // жолдарды жіберуге болатынына сенімдімін таңбалардың орнына, және бұл мағыналы болар еді, бірақ мен мұны қалай жасау керектігін білмеймін // Жылдамдықты басқару командалары void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } жарамсыз Twenty () {port.write ('z'); } // Қозғалтқышты басқару командалары жарамсыз Servo_1_Foward () {port.write ('a'); } жарамсыз Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } жарамсыз Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } жарамсыз 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'); } жарамсыз 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'); }

31 -қадам: Қосымша суреттер

Ұсынылған: