У овом упутству ћемо развити склоп који користи ФЛЕКС сензор, Ардуино Уно и серво мотор. Овај пројекат је систем серво управљања где се положај осовине серво погона одређује савијањем или савијањем или одступањем ФЛЕКС сензора.
Хајде да прво поразговарамо о серво моторима. Серво мотори се користе тамо где постоји потреба за тачним кретањем или положајем осовине. Они нису предложени за велике брзине. Они су предложени за малу брзину, средњи обртни моменат и тачну примену положаја. Ови мотори се користе у роботским машинама за управљање рукама, контролама лета и системима управљања. Серво мотори се користе у уграђеним системима попут аутомата итд.
Серво мотори су доступни у различитим облицима и величинама. Серво мотор ће углавном имати жице, једна је за позитивни напон, друга је за масу, а последња за подешавање положаја. ЦРВЕНА жица је повезана на напајање, црна жица је повезана на масу, а ЖУТА жица је повезана на сигнал.
Серво мотор је комбинација једносмерног мотора, система за контролу положаја, брзина. Положај осовине једносмерног мотора подешава се помоћу управљачке електронике у серво-у, на основу односа радне снаге ПВМ сигнала СИГНАЛ пин.
Једноставно речено, управљачка електроника подешава положај вратила управљајући једносмерним мотором. Ови подаци о положају осовине шаљу се кроз СИГНАЛ пин. Подаци о положају на команду треба да се шаљу у облику ПВМ сигнала кроз сигналну иглу серво мотора.
Фреквенција ПВМ (Пулсе Видтх Модулатед) сигнала може се разликовати у зависности од врсте серво мотора. Овде је најважнији ОДНОС ДУЖНОСТИ ПВМ сигнала. На основу овог ДУЖНОГ ОДНОСА управљачка електроника подешава вратило. Да би се осовина померила на сат од 9 °, ОДНОС УКЉУЧИВАЊА мора бити 1/18. 1 милли секунда „времена укључења“ и 17 мили секунди секунде „времена искључења“ у сигналу од 18 мс.
Да би се осовина помакнула на сат од 12 °, УКЉУЧЕНО вријеме сигнала мора бити 1,5 мс, а искључено 16,5 мс. Овај однос се декодира управљачким системом у серво систему и на основу њега подешава положај.
Овај ПВМ овде је генерисан коришћењем АРДУИНО УНО. Дакле, за сада то знамо, можемо да контролишемо осовину серво мотора варирајући однос дужине ПВМ сигнала који генерише Ардуино Уно. УНО има посебну функцију која нам омогућава да пружимо положај СЕРВО-а без ометања ПВМ-сигнала. Међутим, важно је знати однос ПВМ дужине - однос серво положаја. О томе ћемо више говорити у опису.
Сада да разговарамо о ФЛЕКС СЕНЗОРУ. Да бисмо повезали ФЛЕКС сензор са АРДУИНО УНО, користићемо 8-битну АДЦ (аналогну у дигиталну конверзију) функцију да обавимо посао. ФЛЕКС сензор је претварач који мења свој отпор када се промени његов облик. ФЛЕКС сензор је дугачак 2,2 инча или дужине прста. То је приказано на слици.
Флек сензор је претварач који мења свој отпор када је линеарна површина савијена. Отуда и назив флекс сензор. Једноставно речено, отпор на прикључку сензора се повећава када је савијен. Ово је приказано на доњој слици.
Ова промена отпора не може донети ништа ако их не прочитамо. Приручни контролер може очитати шансе само у напону и ништа мање, зато ћемо користити коло делитеља напона, с тим што ћемо промену отпора извести као промену напона.
Раздјелник напона је отпорни круг и приказан је на слици. У овој отпорној мрежи имамо један стални отпор и други променљиви отпор. Као што је приказано на слици, Р1 је овде стални отпор, а Р2 је ФЛЕКС сензор који делује као отпор.
Средња тачка гране узима се за мерење. Са променом Р2, имамо промену у Воут-у. Дакле, са овим имамо напон који се мења са тежином.
Овде је сада важно напоменути да је улаз који контролер узима за АДЦ конверзију низак од 50µАмп. Овај ефекат оптерећења дјелитеља напона заснован на отпору је важан јер струја повучена из Воут дјелитеља напона повећава проценат повећања процента грешке, за сада не морамо бринути о ефекту оптерећења.
ФЛЕКС СЕНЗОР када се савије његов отпор се промени. Са овим претварачем повезаним на коло делитеља напона, на ФД-у ће се мењати напон са претварачем. Овај променљиви напон је ФЕД за један од АДЦ канала, имаћемо дигиталну вредност која се односи на ФЛЕКС.
Упоредићемо ову дигиталну вредност са позицијом серво-серва, с тим ћемо имати серво контролу флексом.
Компоненте
Хардвер: Ардуино Уно , напајање (5в), кондензатор 1000 уФ, кондензатор 100нФ (3 комада), отпорник 100КΩ, СЕРВО МОТОР (СГ 90), отпорник 220Ω, ФЛЕКС сензор.
Софтвер: Атмел студио 6.2 или Аурдино сваке ноћи.
Шема и објашњење
Цирцуит диаграм фор Серво мотор контрола од стране ФЛЕКС сензора је приказано у наставку слици.
Напон на сензору није потпуно линеаран; биће то бучно. Да би филтрирали буку, кондензатори се постављају преко сваког отпорника у преградном колу, као што је приказано на слици.
Овде ћемо узети напон који даје разделник (напон који линеарно представља тежину) и напојити га у један од АДЦ канала Ардуино УНО. За ово ћемо користити А0. Након иницијализације АДЦ-а, имаћемо дигиталну вредност која представља савијени сензор. Узећемо ову вредност и упоредити је са серво положајем.
Да би се ово догодило, морамо да успоставимо неколико упутстава у програму и о њима ћемо детаљно говорити у наставку.
АРДУИНО има шест АДЦ канала, као што је приказано на слици. У њима се било који или сви могу користити као улази за аналогни напон. УНО АДЦ има 10-битну резолуцију (дакле целобројне вредности из (0- (2 ^ 10) 1023)). То значи да ће мапирати улазне напоне између 0 и 5 волти у целобројне вредности између 0 и 1023. Дакле, за сваки (5/1024 = 4,9мВ) по јединици.
Овде ћемо користити А0 УНО.
Морамо знати неколико ствари.
|
Пре свега, УНО АДЦ канали имају подразумевану референтну вредност од 5В. То значи да можемо дати максимални улазни напон од 5В за АДЦ конверзију на било ком улазном каналу. Будући да неки сензори пружају напоне од 0-2,5В, са референцом од 5В добијамо мању тачност, па имамо упутство које нам омогућава да променимо ову референтну вредност. Дакле, за промену референтне вредности имамо („аналогРеференце ();“) За сада је остављамо као.
Подразумевано добијамо максималну АДЦ резолуцију плоче од 10 бита, ова резолуција се може променити помоћу упутстава („аналогРеадРесолутион (битови);“). Ова промена резолуције може добро доћи у неким случајевима. За сада то остављамо као.
Ако су горњи услови постављени на подразумеване, вредност можемо да очитамо из АДЦ-а канала '0' директним позивом функције „аналогРеад (пин);“, овде „пин“ представља пин на који смо повезали аналогни сигнал, у овом случају то је би било „А0“.
Вредност из АДЦ-а може се претворити у цео број као „инт СЕНСОРВАЛУЕ = аналогРеад (А0); “, Овим упутством вредност након АДЦ-а се чува у целом броју„ СЕНСОРВАЛУЕ “.
Сада да разговарамо о СЕРВО-у, УНО има функцију која нам омогућава да контролишемо положај серво-а само давањем вредности степена. Рецимо да ако желимо да серво буде на 30, можемо директно представити вредност у програму. Датотека заглавља СЕРВО интерно брине о свим прорачунима омјера.
#инцлуде
Серво серво; серво.аттацх (3); серво.врите (степени); |
Прва изјава представља датотеку заглавља за контролу СЕРВО МОТОРА.
Друга изјава је именовање серва; остављамо као сам серво.
Трећа изјава наводи где је повезан серво сигнални пин; ово мора бити ПВМ пин. Овде користимо ПИН3.
Четврта изјава даје наредбе за позиционирање серво мотора и изражена је у степенима. Ако му је дато 30, серво мотор се окреће за 30 степени.
Сада се сг90 може померати од 0-180 степени, имамо АДЦ резултат 0-1024
Дакле, АДЦ је приближно шест пута већи од СЕРВО ПОЗИЦИЈЕ. Дакле, дељењем резултата АДЦ са 6 добићемо приближни положај СЕРВО руке.
Овим ћемо добити вредност положаја серво мотора која се доводи на серво мотор, што је пропорционално савијању или савијању. Када је овај флекс сензор постављен на рукавицу, можемо да контролишемо положај сервоа кретањем руке.