- МПУ6050 Жироскопски сензор и акцелерометар
- Флек Сенсор
- Припрема 3Д штампаног роботског АРМ-а:
- Компоненте потребне:
- Кружни дијаграм:
- Монтирање МПУ6050 и Флек сензора на рукавице
- Програмирање Ардуино Нано за роботску руку
- Рад роботизоване руке контролисане гестом помоћу Ардуина
Роботско оружје једно је од фасцинантних инжењерских креација и увек је фасцинантно гледати како се те ствари нагињу и померају како би се сложене ствари урадиле баш као што би то урадила људска рука. Ове роботске руке могу се често наћи у индустрији на монтажној линији и изводе интензивне механичке радове попут заваривања, бушења, фарбања итд. Недавно су напредне роботске руке са великом прецизношћу такође развијене за извођење сложених хируршких операција. Претходно смо 3Д одштампали роботску руку и направили „уради сам“ одабери и постави роботску руку користећи АРМ7 микроконтролер. Поново ћемо користити исту 3Д штампану роботску руку за израду роботског АРМ-а контролисаног гестама помоћу Ардуино Нано-а, МПУ6050 жироскопа и флекс сензора.
Овим 3Д штампаним роботским положајем руке контролише се ручна рукавица која је причвршћена МПУ6050 жироскопом и флекс сензором. Флек сензор се користи за управљање серво хватаљком Роботиц Арм, а МПУ6050 се користи за кретање роботског у Кс и И оси. Ако немате штампач, руку такође можете израдити једноставним картоном као што смо направили за наш пројекат Ардуино Роботиц Арм Пројецт. Као инспирацију можете се позвати и на Рецорд анд Плаи Роботиц Арм који смо раније направили користећи Ардуино.
Пре него што улазимо у детаље, прво, научимо о МПУ6050 сензору и флек сензору.
МПУ6050 Жироскопски сензор и акцелерометар
МПУ6050 заснован је на технологији микро-механичких система (МЕМС). Овај сензор има 3-осни акцелерометар, 3-осни жироскоп и уграђени сензор температуре. Може се користити за мерење параметара као што су убрзање, брзина, оријентација, помицање итд. Претходно смо повезали МПУ6050 са Ардуином и Распберри пи, а такође смо направили неколико пројеката користећи га, попут робота за самобалансирање, Ардуино Дигитал Протрацтор и Ардуино Инцлинометер.
Карактеристике сензора МПУ6050:
- Комуникација: И2Ц протокол са подесивом И2Ц адресом
- Улазно напајање: 3-5В
- Уграђени 16-битни АДЦ пружа високу тачност
- Уграђени ДМП пружа велику рачунску снагу
- Може се користити за повезивање са другим И2Ц уређајима попут магнетометра
- Уграђени сензор температуре
Детаљи о пин-оуту за МПУ6050:
Пин | Употреба |
Вцц | Обезбеђује напајање модула, може бити од + 3В до + 5В. Типично се користи + 5В |
Приземље | Повезано са земљом система |
Серијски сат (СЦЛ) | Користи се за пружање импулса такта за И2Ц комуникацију |
Серијски подаци (СДА) | Користи се за пренос података путем И2Ц комуникације |
Помоћни серијски подаци (КСДА) | Може се користити за повезивање осталих И2Ц модула са МПУ6050 |
Помоћни серијски сат (КСЦЛ) | Може се користити за повезивање осталих И2Ц модула са МПУ6050 |
АД0 | Ако се више МЦУ6050 користи са једним МЦУ, онда се овај пин може користити за варирање адресе |
Прекид (ИНТ) | Прекидни пин означава да су подаци доступни МЦУ за читање |
Флек Сенсор
Флек сензори нису ништа друго до променљиви отпорници. Отпор флекс сензора се мења када је сензор савијен. Обично су доступни у две величине од 2,2 инча и 4,5 инча.
Зашто у нашем пројекту користимо флекс сензоре?
У овој роботској руци која се контролише покретом, флекс сензор се користи за управљање хватаљком роботске руке. Када је савијени флекс сензор на ручној рукавици, серво мотор причвршћен за хватаљку се окреће и хватаљка се отвара.
Флек сензори могу бити корисни у многим апликацијама, а ми смо направили неколико пројеката користећи Флек сензор попут контролера игре, генератора тона итд.
Припрема 3Д штампаног роботског АРМ-а:
3Д одштампана роботска рука коришћена у овом упутству направљена је следећи дизајн који је дао ЕЕЗИботАРМ који је доступан у Тхингиверсе-у. Комплетна процедура израде 3Д штампане роботске руке и детаља о састављању са видео записом присутна је у Тхингиверсе линку, који је горе подељен.
Изнад је слика моје 3Д штампане роботске руке након склапања са 4 серво мотора.
Компоненте потребне:
- Ардуино Нано
- Флек Сенсор
- 10к отпорник
- МПУ6050
- Рукавице
- Повезивање жица
- Бреадбоард
Кружни дијаграм:
Следећа слика приказује везе круга за роботску руку засновану на Ардуино покретима.
Кружна веза између МПУ6050 и Ардуино Нано:
МПУ6050 |
Ардуино Нано |
ВЦЦ |
+ 5В |
ГНД |
ГНД |
СДА |
А4 |
СЦЛ |
А5 |
Кружна веза између серво мотора и Ардуино Нано:
Ардуино Нано |
СЕРВО МОТОР |
Адаптер за напајање |
Д2 |
Серво 1 наранџасти (ПВМ пин) |
- |
Д3 |
Серво 2 наранџаста (ПВМ пин) |
- |
Д4 |
Серво 3 наранџаста (ПВМ пин) |
- |
Д5 |
Серво 4 наранџаста (ПВМ пин) |
- |
ГНД |
Серво 1,2,3,4 браон (ГНД прибадача) |
ГНД |
- |
Серво 1,2,3,4 Црвена (+ 5В пин) |
+ 5В |
Флек сензор садржи две игле. Не садржи поларизоване терминале. Дакле, пин један П1 повезан је на аналогни пин А0 Ардуино Нано-а са пулл-уп отпорником од 10к, а пин два П2 је уземљен на Ардуино.
Монтирање МПУ6050 и Флек сензора на рукавице
Монтирали смо МПУ6050 и Флек Сенсор на ручну рукавицу. Овде се жичана веза користи за повезивање Рукавице и роботске руке, али се може учинити бежичном помоћу РФ везе или Блуетоотх везе.
После сваке везе, коначно подешавање роботске руке контролисане покретима изгледа као на слици испод:
Програмирање Ардуино Нано за роботску руку
Као и обично, комплетни код заједно са видео записом дат је на крају овог водича. Овде је објашњено неколико важних редова кода.
1. Прво, укључите потребне библиотечке датотеке. Библиотека Вире.х се користи за И2Ц комуникацију између Ардуино Нано и МПУ6050 и серво.х за управљање серво мотором.
#инцлуде
2. Затим се декларишу објекти за серво класе. Како користимо четири серво мотора, креирају се четири објекта као што су серво_1, серво_2, серво_3, серво_4.
Серво серво_1; Серво серво_2; Серво серво_3; Серво серво_4;
3. Затим се декларише И2Ц адреса МПУ6050 и променљиве које ће се користити.
цонст инт МПУ_аддр = 0к68; // МПУ6050 И2Ц Адреса инт16_т оси_Кс, оси_И, оси_З; инт минВал = 265; инт макВал = 402; доубле к; доубле и; доубле з;
4. Следеће у воид подешавању , брзина преноса од 9600 је постављена за серијску комуникацију.
Сериал.бегин (9600);
Успостављена је И2Ц комуникација између Ардуино Нано и МПУ6050:
Вире.бегин (); // Иницирајте И2Ц Цоммуницатион Вире.бегинТрансмиссион (МПУ_аддр); // Започните комуникацију са МПУ6050 Вире.врите (0к6Б); // Записује у регистар 6Б Вире.врите (0); // уписује 0 у 6Б Регистар за ресетовање Вире.ендТрансмиссион (тачно); // Завршава И2Ц пренос
Такође су дефинисана четири ПВМ пина за везе серво мотора.
серво_1.аттацх (2); // Напред / Обрнуто_Мотор серво_2.аттацх (3); // Горе / Доље_Мотор серво_3.аттацх (4); // Гриппер_Мотор серво_4.аттацх (5); // Леви / Десни_Мотор
5. Следеће у функцији воид лооп , поново успоставите И2Ц везу између МПУ6050 и Ардуино Нано, а затим почните да читате податке Кс, И, З-Акис из регистра МПУ6050 и складиштите их у одговарајуће променљиве.
Вире.бегинТрансмиссион (МПУ_аддр); Вире.врите (0к3Б); // Почните са регситер 0к3Б Вире.ендТрансмиссион (фалсе); Вире.рекуестФром (МПУ_аддр, 14, тачно); // Читање 14 регистара акис_Кс = Вире.реад () << 8-Вире.реад (); оси_И = Вире.реад () << 8-Вире.реад (); акис_З = Вире.реад () << 8-Вире.реад ();
Након тога, мапирајте минималну и максималну вредност података оси са сензора МПУ6050 у опсегу од -90 до 90.
инт кАнг = мапа (оса_Кс, минВал, макВал, -90,90); инт иАнг = мапа (ос_И, минВал, макВал, -90,90); инт зАнг = мапа (оса_З, минВал, макВал, -90,90);
Затим користите следећу формулу за израчунавање вредности к, и, з у терминима од 0 до 360.
к = РАД_ТО_ДЕГ * (атан2 (-иАнг, -зАнг) + ПИ); и = РАД_ТО_ДЕГ * (атан2 (-кАнг, -зАнг) + ПИ); з = РАД_ТО_ДЕГ * (атан2 (-иАнг, -кАнг) + ПИ);
Затим прочитајте аналогне излазне податке флекс сензора на пину Ар0ино Нано А0 и према дигиталној вредности флекс сензора подесите угао серво хватаљке. Дакле, ако су подаци флекс сензора већи од 750, угао серво мотора хватаљке је 0 степени, а ако је мањи од 750, то је 180 степени.
инт гриппер; инт флек_сенсорип = аналогРеад (А0); иф (флек_сенсорип> 750) { гриппер = 0; } елсе { захват = 180; } серво_3.врите (гриппер);
Тада се кретање МПУ6050 на Кс-оси од 0 до 60 пресликава у смислу 0 до 90 степени за кретање серво-мотора напред / назад Роботска рука.
иф (к> = 0 && к <= 60) { инт мов1 = мап (к, 0,60,0,90); Сериал.принт ("Покрет у Ф / Р ="); Сериал.принт (мов1); Сериал.принтлн ((цхар) 176); серво_1.врите (мов1); }
А кретање МПУ6050 на Кс-оси од 250 до 360 мапирано је у смислу 0 до 90 степени за роботску руку кретања серво мотора горе / доле.
иначе ако (к> = 300 && к <= 360) { инт мов2 = мапа (к, 360.250,0,90); Сериал.принт ("Покрет горе / доле ="); Сериал.принт (мов2); Сериал.принтлн ((цхар) 176); серво_2.врите (мов2); }
Кретање МПУ6050 на И-оси од 0 до 60 мапирано је у смислу 90 до 180 степени за Лево кретање роботске руке серво мотора.
иф (и> = 0 && и <= 60) { инт мов3 = мап (и, 0,60,90,180); Сериал.принт ("Покрет лево ="); Сериал.принт (мов3); Сериал.принтлн ((цхар) 176); серво_4.врите (мов3); }
Кретање МПУ6050 у И-оси од 300 до 360 мапирано је у смислу 0 до 90 степени за десно кретање роботске руке серво мотора.
иначе иф (и> = 300 && и <= 360) { инт мов3 = мап (и, 360.300,90,0); Сериал.принт ("Покрет удесно ="); Сериал.принт (мов3); Сериал.принтлн ((цхар) 176); серво_4.врите (мов3); }
Рад роботизоване руке контролисане гестом помоћу Ардуина
На крају, отпремите код на Ардуино Нано и носите ручну рукавицу монтирану са МПУ6050 и Флек сензором.
1. Сада померите руку надоле да бисте померили роботску руку напред, а горе да бисте померили роботску руку горе.
2. Затим нагните руку лево или десно да бисте окренули роботску руку лево или десно.
3. Савијте флексибилни кабл причвршћен прстом ручне рукавице да бисте отворили хватаљку, а затим је отпустите да бисте је затворили.
Комплетан рад је приказан у видеу датом у наставку.