Мазмұны:

Екі дөңгелекті өзін-өзі теңестіретін робот: 7 қадам
Екі дөңгелекті өзін-өзі теңестіретін робот: 7 қадам

Бейне: Екі дөңгелекті өзін-өзі теңестіретін робот: 7 қадам

Бейне: Екі дөңгелекті өзін-өзі теңестіретін робот: 7 қадам
Бейне: Мұқа-Бұқа🤣🔥🔥 #қызықtimes #shorts #қапқарашымкент 2024, Қараша
Anonim
Екі дөңгелекті өзін-өзі теңестіретін робот
Екі дөңгелекті өзін-өзі теңестіретін робот

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

Өзін-өзі теңестіретін робот дегеніміз не?

Өзін-өзі теңдестіретін робот-инерциялы өлшеу деректерін қолданатын жүйе, ол сенсордан жиналып, тік күйде орналасуын үнемі реттеп отырады.

Бұл қалай жұмыс істейді?

Қарастырылатын қарапайым ұқсастық - бұл инверттелген маятник. Масса центрі айналу нүктесінің үстінде. Алайда, біздің жағдайда, біз бір дөңгелектің осіне, біздің жағдайда екі дөңгелектің айналу осіне ие бола отырып, маятникті 1 дәрежелі еркіндікпен шектейміз. Кез келген бұзылу роботтың құлауына әкелетіндіктен, бізге роботты теңгерімді ұстау әдісі қажет. Бұл жерде біздің жабық контур алгоритмі (PID контроллері) іске қосылады, біздің робот қай бағытқа құлап бара жатқанын біле отырып, біз жүйенің тепе-теңдігін сақтау үшін қозғалтқыштардың айналу бағытын реттей аламыз.

Жабық контурлы алгоритм қалай жұмыс істейді?

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

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

Көлбеу бұрышын қалай өлшейміз?

Көлбеу бұрышын өлшеу үшін біз инерциялық өлшем бірлігін қолданамыз. Бұл модульдерде акселерометр мен гироскоп бар.

  • Акселерометр - бұл дұрыс үдеуді өлшейтін электромагниттік құрылғы, бұл дененің лездік тыныштық шеңберіндегі үдеуі.
  • Гироскоп - бұрыштық жылдамдықты өлшейтін және құрылғының бағытын анықтау үшін қолданылатын электромеханикалық құрылғы.

Дегенмен, мұндай сенсорларды қолданудағы мәселе мынада:

  • Акселерометр өте шулы, бірақ уақыт бойынша тұрақты, бұрышы кенеттен көлденең қозғалыстармен өзгереді
  • Гироскоптың мәні, керісінше, уақыт өте келе өзгереді, бірақ бастапқыда бұл өте дәл

Бұл нұсқаулық үшін мен цифрлық қозғалысты өңдеудің (DMP) көмегімен сүзгіні қолданбаймын. Басқалары тегіс сигнал алу үшін қосымша сүзгіні қолданды, сіз өзіңізге ұнайтын әдісті таңдай аласыз. өйткені робот кез келген іске асырумен теңестіреді.

Жабдықтар

Бөлшектер:

  1. Arduino Pro Mini 3.3V 8, 8 МГц ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI USB - TTL сериялық адаптер модулі
  3. MPU-6050 бар GY-521 модулі
  4. N20 шағын беріліс моторы 6В - 300 айн / мин
  5. L298N мотор жүргізушісі
  6. LM2596S тұрақты токтан тұрақты токқа түрлендіргіші
  7. Батарея (қайта зарядталатын 9,7 В литий-ионды аккумуляторлық батарея)
  8. Батарея белбеуі
  9. ПХД екі прототиптік схемасы
  10. Еркек пен әйелдің бастық түйреуіштері секіргіш сымдар

Құралдар:

  1. Дәнекерлеуіш пен дәнекерлеуіш
  2. Нейлоннан жасалған он алтылық аралық бөлу
  3. Дәл бұрауыштар жиынтығы
  4. 3D принтері

1 -қадам: құрылыс

Мен 3D принтерге қол жеткізе алатындықтан, мен шассиді 3D басып шығаруды шештім және бәрін біріктіру үшін тоқтауды қолдандым.

Робот 4 қабаттан тұрады

  1. Төменгі қабат қозғалтқыштарды қосады және L298N қозғалтқыш модулінің бекіту нүктелері бар
  2. Келесі қабатта Arduino pro mini мен оған дәнекерленген тақырыптары бар прототип тақтасы орналасқан
  3. Үшінші қабат ИМҚ орнатады
  4. Мен «бампер қабаты» деп атайтын жоғарғы қабат батареяны, конвертер мен ақшаны ауыстырады

Менің негізгі дизайн принципім - бәрін модульдік ұстау. Мұның себебі, егер компоненттердің бірінде бірдеңе дұрыс болмаса, мен оны оңай ауыстыра аламын немесе маған басқа жобаның компоненті қажет болса, мен оны жүйені қайта қолдана алмайтыныма алаңдамай -ақ оңай қабылдай аламын.

2 -қадам: Сымдарды жалғау

Сымдар
Сымдар

Мен Arduino pro мини-тақырыптық түйреуіштермен сәйкес келу үшін, кейбір әйел тақырыптық түйреуіштерді тақтаға дәнекерледім. Осыдан кейін мен енгізу -шығару жүйесіне кіруге рұқсат беру үшін ерлердің үстіңгі тақтасын түйістірдім. Қалған компоненттер 3D басып шығарылған жақтауға орнатылды және секіргіш сымдар арқылы қосылды.

3 -қадам: Басқару теориясы

Енді біз жобаның негізгі бөлігіне көшеміз. Робот тепе -теңдігін сақтау үшін біз ротордың тепе -теңдігі мен тұрақтылығын қамтамасыз ету үшін қозғалтқыштарды дұрыс бағытта және дұрыс жылдамдықта жүргізу үшін тиісті басқару сигналын жасауымыз керек. Бұл үшін біз PID контроллері деп аталатын танымал басқару циклінің алгоритмін қолданамыз. Қысқартулар бұл контроллердің үш термині бар деп болжайды, бұл пропорционалды, интегралды және туынды терминдер. Олардың әрқайсысына олардың жүйеге әсерін анықтайтын коэффициенттер қосылады. Көбінесе контроллерді енгізудің ең көп уақытты талап ететін бөлігі-ең оңтайлы жауап алу үшін әр бірегей жүйе бойынша кірісті реттеу.

  • Пропорционалды термин шығару үшін қатені тікелей көбейтеді, сондықтан қате неғұрлым үлкен болса, жауап соғұрлым үлкен болады
  • Интегралды термин тұрақты қатені азайту үшін қатенің жинақталуына негізделген жауап береді. Жүйе теңгерімсіз болған сайын қозғалтқыштар тез жауап береді
  • Туынды термин-бұл болашақ реакцияны болжау үшін пайдаланылатын қатенің туындысы және осылайша ол тұрақты күйден асып түсуіне байланысты тербелісті азайтады.

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

4 -қадам: MPU 6050 пайдалану

MPU6050 кітапханасы

github.com/jrowberg/i2cdevlib/tree/master/…

Барлық датчиктер бір -бірінің көшірмесі емес. Нәтижесінде, егер сіз екі MPU 6050 тестілеуін жүргізсеңіз, бір бетке орналастырылғанда акселерометр мен гироскоптың әр түрлі мәндерін алуға болады. Бұл тұрақты бұрыштық ығысуды жеңу үшін біз қолданатын әр сенсорды атап өтуіміз керек. Бұл сценарийді іске қосу:

www.i2cdevlib.com/forums/topic/96-arduino-…

жазған Луис Роденас, біз есептерді аламыз. Есептеу қателерін setup () тәртібінде ығысу мәндерін анықтау арқылы жоюға болады.

Сандық қозғалыс процессорын қолдану

MPU6050 құрамында DMP (цифрлық қозғалыс процессоры) бар.

DMP дегеніміз не? Сіз DMP-ті mpu6050 бортындағы 3 осьті гироскоп пен 3 осьті акселерометрден күрделі қозғалысты өңдейтін борттық микроконтроллер ретінде қарастыруға болады, ол өзінің жеке термоядролық алгоритмдерін қолданады. Басқа жағдайда Arduino жасайтын өңдеуді жүктеу

Оны қалай қолдануға болады? DMP-ді қалай қолдану керектігін білу үшін MPU6050 кітапханасымен бірге келетін MPU6050_DMP6 эскизін қараңыз (Arduino IDE-де: Файл-> Мысал-> MPU6050-> MPU6050_DMP6). Бұл сенсордың шынымен жұмыс істейтінін және сымның дұрыс екенін тексеруге жақсы мүмкіндік

5 -қадам: кодтау

Arduino pro mini бағдарламалау үшін мен Arduino IDE мен FTDI интерфейсін қолдандым.

Негізгі коды ретінде MPU6050 кітапханасымен бірге келетін мысал эскизін (MPU6050_DMP6) қолдана отырып, мен PID () және MotorDriver () функцияларын қостым.

Кітапхананы қосыңыз

  • MPU6050: MPU6050 сенсорын пайдалану үшін біз I2C әзірлеушілер кітапханасын Джефф Роубергтен жүктеп алып, оны компьютердегі бағдарламалық файлдарда табылған Arduino «кітапханалары» қалтасына қосуымыз керек.
  • Wire: I2C құрылғыларымен байланысуға мүмкіндік беретін Wire кітапханасы да қажет.

Жалған код

Кітапханаларды қосыңыз:

  • Wire.h
  • MPU6050
  • I2Cdev.h

Айнымалыларды, тұрақтыларды және объектілерді инициализациялаңыз

Орнату ()

  • Қозғалтқышты басқару үшін істікшелі режимді орнатыңыз
  • Светодиод күйі үшін түйреуіш режимін орнатыңыз
  • MPU6050 инициализациясын және ығысу мәндерін орнатыңыз

PID ()

PID мәнін есептеңіз

MotorDriver (PID жауабы)

Қозғалтқыштардың жылдамдығы мен бағытын басқару үшін PID мәнін қолданыңыз

Цикл ()

  • DMP -ден деректерді алу
  • MotorDriver () функцияларына PID () шақырыңыз

6 -қадам: PID реттеу процедурасы

Бұл жобаның ең жалықтыратын бөлігі және егер сізге сәттілік болмаса, сәл шыдамдылық қажет. Міне, қадамдар:

  1. I және D терминін 0 -ге орнатыңыз
  2. Роботты ұстап тұрып, Р -ды робот тепе -теңдік позициясында тербеле бастайтындай етіп реттеңіз
  3. P жиынтығымен робот тепе -теңдіктен шыққанда тезірек жылдамдауы үшін I санын арттырыңыз. Р мен мен дұрыс реттелген кезде робот кем дегенде бірнеше секундқа өздігінен тепе-теңдікке ие болуы керек.
  4. Соңында, D жоғарылату тербелісті азайтады

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

7 -қадам: Қорытынды

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

Жақсартуға арналған ұсыныстар:

  • Айналдыру моменті жоғары жылдамдықты қозғалтқыштар, яғни тұрақты ток қозғалтқыштары үшін кернеу көрсеткіші неғұрлым жоғары болса, соғұрлым жоғары момент
  • ауыр батареяны алыңыз немесе массаны сәл жоғары көтеріңіз
  • Көбірек тартымды болу үшін 3D басып шығарылған дөңгелектерді резеңке дөңгелектерге ауыстырыңыз

Ұсынылған: