Мазмұны:

Айналу осі бар объектілерді бақылау камерасы сырғытпасы. RoboClaw DC қозғалтқышы мен Arduino -да 3D басып шығарылған және салынған: 5 қадам (суреттермен)
Айналу осі бар объектілерді бақылау камерасы сырғытпасы. RoboClaw DC қозғалтқышы мен Arduino -да 3D басып шығарылған және салынған: 5 қадам (суреттермен)

Бейне: Айналу осі бар объектілерді бақылау камерасы сырғытпасы. RoboClaw DC қозғалтқышы мен Arduino -да 3D басып шығарылған және салынған: 5 қадам (суреттермен)

Бейне: Айналу осі бар объектілерді бақылау камерасы сырғытпасы. RoboClaw DC қозғалтқышы мен Arduino -да 3D басып шығарылған және салынған: 5 қадам (суреттермен)
Бейне: ЕҢ АРЗАН 2IN1 БАҚЫЛАУ КАМЕРАСЫ ANBIUX!!! 2024, Шілде
Anonim
Image
Image
Жабдықтың дизайны + құрастыру + 3D басып шығару
Жабдықтың дизайны + құрастыру + 3D басып шығару

Fusion 360 жобалары »

Бұл жоба мен DIY жасауға деген қызығушылығымды біріктіре бастағалы бері менің сүйікті жобаларымның бірі болды. Мен әрқашан кинематографиялық түсірілімдерді қарадым және соларды елестеткім келді, онда камера объектіні қадағалау үшін экранды айналдырады. Бұл басқаша 2D бейнеге өте қызықты тереңдік әсерін қосады. Мұны Голливуд құралдарына мыңдаған доллар жұмсамай қайталағым келіп, мен өзім осындай камера сырғытпасын жасауға шешім қабылдадым.

Бүкіл жоба 3D басып шығаруға болатын бөліктерге негізделген және код танымал Arduino тақтасында жұмыс істейді. CAD файлдары мен коды сияқты барлық жоба файлдары төменде жүктеу үшін қол жетімді.

CAD/ 3D басып шығару файлдары осында қол жетімді

Arduino Code файлы осында қол жетімді

Жоба екі берілісті щеткалы тұрақты ток қозғалтқыштары мен Basic Micro Roboclaw қозғалтқышының айналасында жүреді. Бұл қозғалтқышты реттегіш щеткамен тұрақты ток қозғалтқыштарын керемет позициялық дәлдікпен, тонна моментпен және толық 360 градус айналуымен жоғары сапалы серво түріне айналдыра алады. Бұл туралы толығырақ кейінірек.

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

Материалдар-

  • Ұзындығы 2х 1 метр m10 бұрандалы шыбықтар барлық бөлшектерді қосу үшін қолданылады
  • Бөлшектерді бұрандалы штангаларға бекіту үшін 8x M10 гайкалары
  • Ұзындығы 2х 95 см 8мм тегіс болат шыбықтар сырғытпаны сырғыту үшін
  • Болат шыбықтарда тегіс сырғанау үшін жүгірткіге арналған 4x lm8uu мойынтіректері
  • Қозғалтқышты орнатуға арналған ұзындығы 4х 10 мм м3 гайкалар
  • Айналу осі үшін 2 x скейтборд мойынтіректері (сыртқы диаметрі 22 мм, ішкі диаметрі 8 мм)
  • 1х 15 мм бос тұруға арналған мойынтірек
  • 1х 4 см ұзындықтағы m4 болт, бос жүрісті мойынтіректің 3d басылған бөлігіне бекітуге арналған m4 құлыптау гайкасымен.
  • Сырғымалы қозғалтқыш үшін 4 мм ішкі диаметрі бар 20 тісті беріліс. Нақты шығыр өте маңызды емес, өйткені сіздің тұрақты ток қозғалтқышы жеткілікті моментке бағытталуы керек. Бұл сіздің белбеуіңізбен бірдей екеніне көз жеткізіңіз
  • Ұзындығы 2 метр GT2 белбеуі. Тағы да кез келген белбеуді қолдануға болады, егер ол шкивтің тістеріне сәйкес келсе.

Электроника

  • 2 * Кодерлері бар редукторлы тұрақты ток қозғалтқыштары (біреуі бүйірлік қозғалысты басқарады, ал екіншісі айналу осін басқарады). Міне, мен қолдандым. Бұл туралы толығырақ нұсқаулықтың Электроника бөлімінде
  • RoboClaw тұрақты ток қозғалтқышы. (Мен қосарланған 15Amp контроллерін қолдандым, себебі бұл екі қозғалтқышты бір контроллермен басқаруға мүмкіндік берді)
  • Кез келген Arduino. Мен Arduino UNO қолдандым
  • Батарея/ қуат көзі. (Мен 7.4V 2 ұялы LiPo батареясын қолдандым)
  • Экран (Мәзірді көрсету үшін. Кез келген U8G үйлесімді экран жұмыс істейді, мен 1.3 дюймдік OLED экранды қолдандым)
  • Rotatry кодтаушысы (мәзірде параметрлерді шарлау және конфигурациялау үшін)
  • Физикалық басу түймесі (жүгірткінің қозғалысын іске қосу үшін)

1 -қадам: Жабдықты жобалау + Құру + 3D басып шығару

Электроника
Электроника

Содан кейін электроникаға көшейік. Электроника - бұл жобаның икемділігі жоғары.

Бұл жобаның өзегінен бастайық- 2 щеткалы тұрақты ток қозғалтқышы.

Мен бірнеше себептерге байланысты тұрақты қозғалтқышты таңдадым.

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

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

Бұл бізді RoboClaw қозғалыс контроллеріне әкеледі. Roboclaw қозғалтқышының тұрақты ток қозғалтқышының қос реттегіші Arduino -дан қарапайым код командалары арқылы қарапайым нұсқауларды алады және сіздің моторыңыздың функционалдығын қамтамасыз ету үшін барлық ауыр өңдеу мен қуатты жеткізеді. Arduino сигналдарды Roboclaw -қа PWM, аналогтық кернеу, қарапайым серия немесе пакеттік серия арқылы жібере алады. Пакеттік серия - бұл ең жақсы әдіс, себебі ол сізге позициялық бақылау үшін қажет Roboclaw -дан ақпарат алуға мүмкіндік береді. Мен келесі қадамда Roboclaw бағдарламалық қамтамасыз ету/бағдарламалау бөлігіне тереңірек енемін (бағдарламалау).

Шын мәнінде, Roboclaw RoboClaw -тың позициялық бақылауды жүзеге асыру қабілетінің арқасында кодері бар тұрақты қозғалтқышты қозғалтқышты сервоға айналдыра алады. Дәстүрлі серводан айырмашылығы, енді сіздің тұрақты қозғалтқышыңыздың моменті әлдеқайда жоғары, мотордың жоғары берілуіне байланысты позициялық дәлдігі жоғары, және ең бастысы, сіздің тұрақты ток қозғалтқышы 360 градусқа үздіксіз айнала алады, оны дәстүрлі серво жасай алмайды.

Электрониканың келесі бөлігі - экран. Менің экраным үшін мен бұл OLED тақтасын өлшемі мен жоғары контрастына байланысты таңдадым. Бұл жоғары қарама -қарсылық керемет және қараңғы камераның түсірілуіне кедергі келтіруі мүмкін шамадан тыс жарық түсірмей, экранды тікелей күн сәулесінде қолдануды жеңілдетеді. Бұл экранды U8G үйлесімді басқа экранға оңай ауыстыруға болады. Үйлесімді экрандардың толық тізімі мына жерде. Шын мәнінде, бұл жоба U8G кітапханасының айналасында әдейі кодталған, сондықтан сіз сияқты DIY құрылысшылар олардың бөліктерінде икемділікке ие болды.

Бұл жобаның электрониканың соңғы бөлшектері айналмалы кодер мен жүгірткі қозғалысын бастау түймешігі болды. Кодер экран мәзірін шарлауға және жүгірткі мәзірінің барлығын бір терумен реттеуге мүмкіндік береді. Айналмалы кодердің дәстүрлі потенциометр сияқты «соңғы» позициясы жоқ, және бұл әсіресе экрандағы объектілерді бақылаудың x және y координаттарын өзгерту үшін пайдалы. Басу түймесі тек айналмалы кодермен сырғанаусыз жүгірткінің қозғалысын бастау үшін қолданылады.

3 -қадам: камера сырғытпасын бағдарламалау

Камера сырғытпасын бағдарламалау
Камера сырғытпасын бағдарламалау
Камера сырғытпасын бағдарламалау
Камера сырғытпасын бағдарламалау

Кодтау бұл жобаның ең қиын сынағы болды. Көрдіңіз бе, мен басынан бастап жүгірткіні экраннан басқаруға болатынын қалаймын. Бұл жобаны мүмкіндігінше көп экрандармен үйлесімді ету үшін маған Arduino үшін U8Glib кітапханасын пайдалану керек болды. Бұл кітапхана 32 -ден астам экранға қолдау көрсетеді. Алайда, U8Glib кітапханасы экрандағы мәзірді салу үшін сурет ілмегін қолданды және бұл Arduino -ның камераның орналасуы туралы ақпаратты бір мезгілде жинау қабілетіне қайшы келді, ол камераның бұрышын есептеу функциясы үшін қажет болды (Бұл келесі параграфтардың екеуінде қарастырылған).). U8Glib2 толық беттің буферлік опциясы деп аталатын нәрсені қолдану арқылы сурет циклінің баламасына ие, бірақ кітапхана тым көп жадты тұтынды және Arduino Uno жадының шектеулерін ескере отырып, қалған кодты орнатуды қиындатты. Бұл менің U8G -мен байланыста екенімді және жүгірткі қозғалыста болған кезде экранды жаңартуға жол бермеу арқылы мәселені шешуге мәжбүр болды және Arduino Roboclaw -дан позициялық деректерді жинауға қажет болды. Мен сондай-ақ мәзір циклінің сыртында жылжуды бастау үшін жүгірткіні іске қосуға мәжбүр болдым, себебі мен ішкі мәзірге кіргенде, мен сурет ілмегінің ішінде боламын, ал жүгірткі ойдағыдай жұмыс істемейді. Мен сонымен қатар жүгірткінің қозғалысын іске қосатын жеке түйменің көмегімен бұл мәселені айналып өттім.

Келесі, айналмалы бақылау элементі туралы сөйлесейік. Бұл бөлікті біріктіру өте күрделі болып көрінеді, бірақ бұл өте қарапайым. Бұл іске асыру менің Arduino кодымдағы 'motor ()' функциясында. Бірінші қадам - 2 өлшемді тор жасау және сіз бақылағыңыз келетін объектінің қайда орналасатынын анықтау. Осыған сүйене отырып, сіз орналасқан жеріңізге үшбұрыш салуға болады. Сіз қозғалтқыштың кодер мәнінен ағымдағы орналасқан жеріңізді ала аласыз. Егер сіз қадағаланатын объектінің орнын см/мм -ге теңшегіңіз келсе, сізге кодер мәнін см/мм мәніне аудару қажет болады. Мұны камера сырғытпасын 1 см жылжыту және кодер мәнінің өсуін өлшеу арқылы жасауға болады. Бұл мәнді encoder_mm айнымалы мәнінің астына кодтың жоғарғы жағына енгізуге болады.

Әрі қарай, енді біз камераға сіздің объектіге қарайтын бұрышты алу үшін кері жанама функциясын қолданамыз. Кері тангенс үшбұрыштың қарама -қарсы және іргелес жағын алады. Үшбұрыштың қарама -қарсы жағы ешқашан өзгермейді, себебі бұл жүгірткіден объектке дейінгі қашықтық. Камера сырғытпасының іргелес жағы өзгереді. Бұл іргелес жағын объектінің x позициясын алып, одан сіздің ағымдағы орныңызды алып тастау арқылы есептеуге болады. Жүгірткі қозғалыс ауқымы бойынша қозғалғанда, ол кодер мәнінде Arduino -ны жаңартып отырады. Arduino бұл кодер мәнін бірнеше рет см/мм х позициялық мәнге түрлендіреді, содан кейін іргелес бүйірлік ұзындығын есептейді, және ақырында объектіні көрсету үшін камера әрқашан қарауы керек бұрышты есептейді.

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

Робоклавты белгілі бір орынға жылжыту үшін Arduino коды келесідей:

roboclaw. SpeedAccelDeccelPositionM1 (мекен -жай, «жылдамдық», «үдеу», «баяулау», «барғыңыз келетін позиция», 1);

Қозғалтқыштың позициялық мәнін камераның бұрышына сәйкес келтіру үшін камера тақтасын қолмен 180 градусқа жылжыту қажет. Содан кейін камера тақтасын 0 градустан 180 градусқа жылжытудан кодер мәні қаншалықты өзгергенін қараңыз. Бұл сізге кодер ауқымын береді. Сіз бұл диапазонды Arduino камерасының бұрышын позициялық мәнмен салыстыратын қозғалтқыш функциясына енгізе аласыз. Бұл кодта да түсіндірілген, сондықтан оны табу оңай болуы керек *****

RoboClaw маған сонымен қатар үдеу, баяулау және PID мәндері сияқты басқа факторларды реттеу мүмкіндігін берді. Бұл маған айналу осінің қозғалысын тегістеуге мүмкіндік берді, әсіресе бұрыштар кішкентай болған кезде және «D» PID мәні жоқ бұрылыстар қосылған кезде. Сіз PID мәндерін Roboclaw жұмыс үстелі қосымшасы арқылы автоматты түрде реттей аласыз.

4 -қадам: камера сырғытпасын басқару

Камера сырғытпасын басқару
Камера сырғытпасын басқару

Енді біз жүгірткіні басқаратын қызықты бөлімге келеміз Мәзірде 4 негізгі қойынды бар. Жоғарғы қойынды жылдамдықты басқаруға арналған. Мәзірдің ортаңғы қатарында бақыланатын объектінің X & Y орнын мм -ге теңшеуге арналған қойындылар бар, сонымен қатар жүгірткі біздің объектіні айналдыруды және қадағалауды немесе айналдырусыз қарапайым сырғымалы қозғалысты қалайтындығымызды реттейді. Айналмалы кодерді айналдыру мәзірлердің әр түрлі нұсқаларын шарлауға мүмкіндік береді. Кез келген опцияны конфигурациялау үшін опцияға өтіңіз және айналмалы кодерді басыңыз. Басылғаннан кейін айналмалы кодерді айналдыру мәзірді скрабтаудың орнына бөлінген ішкі мәзірдің мәнін өзгертеді. Қажетті мәнге жеткеннен кейін айналмалы кодерді қайтадан шертуге болады. Енді сіз негізгі мәзірге оралдыңыз және әр түрлі қойындылар арасында шарлауға болады. Дайын болғаннан кейін, экранның жанындағы өту түймесін бассаңыз болғаны, жүгірткі өз жұмысын жасайды!

Камера сырғытпасын пайдалануды аяқтағаннан кейін, камераның «үй» күйінде екеніне көз жеткізіңіз: жүгірткі басталған жақ. Мұның себебі - моторлы кодер абсолютті кодер емес, яғни Roboclaw/Arduino кодердің қайда екенін айта алмайды. Олар кодер соңғы рет қосылғаннан бері қаншалықты өзгергенін ғана айта алады. Бұл дегеніміз, сіз камераның сырғытпасын өшіргенде, жүгірткі сырғытпаның орнын «ұмытады» және кодерді 0 қалпына келтіреді. Сондықтан, егер сіз жүгірткіні екінші жағынан өшірсеңіз, оны қосқанда, жүгірткі сөнеді. шетінен әрі қарай жылжып, сырғытпа қабырғаға соғылуға тырысыңыз. Бұл кодердің әрекеті камераның жылжуынан кейін камера бұрылу бұрышын қалпына келтіреді. Айналмалы ось сонымен қатар қозғалыс диапазонының соңына құлап кетуден қорғайды.

Сіз мұны жүктеу кезінде тоқтау мен қосылу процедурасын қосу арқылы түзете аласыз. Бұл 3D принтерлерде қолданылады.

5 -қадам: Қорытынды ойлар + Болашақ жақсартулар

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

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

Ақырында, егер мен 2.0 нұсқасын жасасам, онда мен кейбір жақсартуларды енгізер едім

  1. Айналмалы осьті қозғалтқыш үшін беріліс коэффициенті жоғары. Редуктордың жоғары коэффициенті мен дәлірек кішігірім қозғалыстар жасай алатынымды білдіреді. Бұл, әсіресе, камера сіздің объектіңізден алыс орналасқан кезде және камераның бұрышы өте баяу өзгерген кезде өте маңызды. Қазіргі уақытта менің қозғалтқышым тым жоғары берілмеген және ол камераның сырғытпасы тым баяу жұмыс істегенде немесе бұрылу бұрышы өте аз өзгергенде сәл қозғалуға әкелуі мүмкін. Жоғары 'D' PID мәнін қосу маған одан құтылуға көмектесті, бірақ объектілерді бақылау дәлдігі сәл төмен болды.
  2. Модульдік ұзындық. Бұл алыс мақсат, бірақ мен камера сырғытпасының модульдік ұзындығына ие болғанын қалаймын, яғни сіз камераның сырғып кетуі үшін ұзынырақ жолдарды қоса аласыз. Бұл өте қиын, өйткені екі жолды теңестіріп, белбеу жүйесінің қалай жұмыс істеу керектігін анықтау керек. Дегенмен, бұл керемет жаңарту болар еді!
  3. Арнаулы қозғалыс пернелер тіркесімі. Мен камераның сырғытпасына негізгі кадрлық қозғалыстар ұғымын енгізгім келеді. Пернетақта - бұл бейне және аудио өндірісінде жиі қолданылатын әдіс. Бұл камераның сызықты емес қозғалысына мүмкіндік береді, онда камера позицияға өтеді, күтеді, содан кейін басқа позицияға басқа жылдамдықпен ауысады, күтеді, содан кейін үшінші позицияға өтеді.
  4. Bluetooth/ сымсыз телефонды басқару. Камера жүгірткісінің параметрлерін сымсыз конфигурациялау және камера жүгірткісін кіру қиын жерлерде орналастыру өте жақсы болар еді. Телефон қосымшасы соңғы абзацта айтылғандай негізгі кадрларды біріктіру мүмкіндіктерін ашуы мүмкін.

Бұл оқулыққа арналған. Кез келген сұрақтарды төмендегі түсініктеме бөлімінде қалдыруға болады.

Қосымша мазмұн мен электроникаға арналған оқулықтар үшін сіз менің YouTube каналыма кіре аласыз.

Ұсынылған: