- Оптички модул сензора брзине ЛМ-393 са инфрацрвеним прорезима
- Мерење брзине и пређеног пута ради израчунавања цене путовања
Данас дигитална бројила замењују аналогна бројила у сваком сектору, било да се ради о бројилима електричне енергије или бројилима такси. Главни разлог за то су аналогни бројила која имају механичке делове који се често троше када се користе дуже време и нису толико прецизни као дигитални бројила.
Добар пример за то су аналогни брзинометар и одометар који се користе код старих моторних бицикала за мерење брзине и пређеног пута. Имају посебне делове зване зупчаник и аранжман у којима се кабл користи за ротирање осовинице брзиномера када се ротира точак. Ово ће се трошити током дуже употребе, а такође треба замену и одржавање.
У дигиталном мерачу, уместо да користе механичке делове, неки сензори попут оптичког прекидача или Халловог сензора користе се за израчунавање брзине и удаљености. Ово је тачније од аналогних бројила и не захтева одржавање током дужег временског периода. Претходно смо изградили многе пројекте дигиталног брзиномера користећи различите сензоре:
- Уради сам брзинометар користећи Ардуино и обраду Андроид апликације
- Круг дигиталног брзиномера и бројача километара помоћу ПИЦ микроконтролера
- Мерење брзине, удаљености и угла за мобилне роботе помоћу сензора ЛМ393 (Х206)
Данас ћемо у овом упутству направити прототип дигиталног таксиметра користећи Ардуино. Овај пројекат израчунава брзину и удаљеност коју је прешао точак таксија и континуирано га приказује на ЛЦД дисплеју 16к2. А на основу пређене удаљености генерише износ цене када притиснемо тастер.
Испод слике је приказано комплетно подешавање пројекта Дигитал Таки Метер
Овај прототип има РЦ шасију аутомобила са модулом сензора брзине и точком кодера причвршћеним за мотор. Једном када се измери брзина, можемо измерити пређено путовање и притиском на тастер пронаћи вредност износа карте. Брзину точка можемо подесити помоћу потенциометра. Да бисте сазнали више о коришћењу модула ЛМ-393 сензора брзине са Ардуином, следите везу. Погледајмо кратко представљање модула сензора брзине.
Оптички модул сензора брзине ЛМ-393 са инфрацрвеним прорезима
Ово је модул типа слота који се може користити за мерење брзине ротације точкова кодера. Овај модул сензора брзине ради на основу оптичког прекидача типа слота, познатог и као сензор оптичког извора. Овај модул захтева напон од 3,3 В до 5 В и производи дигитални излаз. Тако се може повезати са било којим микроконтролером.
Сензор инфрацрвене светлости састоји се од извора светлости (ИР-ЛЕД) и фототрансисторског сензора. Обе су постављене са малим размаком између њих. Када се објекат постави између празнине ИР ЛЕД-а и фото-транзистора, он ће прекинути сноп светлости узрокујући да фото-транзистор заустави пропуштање струје.
Тако се са овим сензором користи диск са прорезима (точкић енкодера) који се може причврстити на мотор, а када се точак окреће мотором, прекида сноп светлости између ИР ЛЕД-а и фото-транзистора који чини излаз укљученим и искљученим (стварање импулса).
Тако он производи ХИГХ излаз кад постоји прекид између извора и сензора (Када се било који објект постави између) и производи ЛОВ излаз када нема постављеног објекта. У модулу имамо ЛЕД лампицу која означава узроковани оптички прекид.
Овај модул долази са ЛМ393 ИЦ упоређивача који се користи за стварање тачних ВИСОКИХ И НИСКИХ сигнала на ИЗЛАЗУ. Стога се овај модул понекад назива и ЛМ393 сензор брзине.
Мерење брзине и пређеног пута ради израчунавања цене путовања
Да бисмо измерили брзину ротације, морамо знати број прореза присутних у точкићу кодера. Имам точкић енкодера са 20 утора. Када ротирају једну потпуну ротацију на излазу имамо 20 импулса. Дакле, за израчунавање брзине потребан нам је број импулса произведених у секунди.
На пример
Ако има 40 импулса у једној секунди, онда
Брзина = Не. Од импулса / број слотова = 40/20 = 2РПС (револуција у секунди)
За израчунавање брзине у РПМ (обртаја у минути) помножите са 60.
Брзина у мин-1 = 2 Кс 60 = 120 РПМ (број обртаја у минути)
Мерна удаљеност
Мерење пута пређеног точком је тако једноставно. Пре израчунавања удаљености треба знати обим точка.
Обим точка = π * д
Где је д пречник точка.
Вредност π је 3,14.
Имам точак (РЦ точак за аутомобил) пречника 6,60 цм, тако да је обим (20,7 цм).
Дакле, да бисте израчунали пређену удаљеност, само помножите број импулса откривених са обимом.
Пређена раздаљина = Обим точка к (број импулса / број прореза)
Дакле, када точак са опсегом 20,7 цм узима 20 импулса, што је једна ротација точка енкодера, тада се пут који точак пређе израчунава по
Пређени пут = 20,7 к (20/20) = 20,7 цм
Да бисте израчунали растојање у метру, поделите растојање у цм вредност са 100.
Напомена: Ово је мали РЦ точак аутомобила, ау стварном времену аутомобили имају веће точкове од овог. Дакле, претпостављам да би у овом упутству обим точка био 230 цм.
Израчунавање цене превоза на основу пређене удаљености
Да бисте добили укупан износ карте, помножите пређени пут са тарифом карте (износ / метар).
Тимер1.инициализе (1000000); Тимер1.аттацхИнтеррупт (тимерИср);
Затим приложите два спољна прекида. Први прекид чини Ардуино пин 2 као пин за прекидање и позива ИСР (цоунт) када је на пину 2 откривен РИСИНГ (ЛОВ ТО ХИГХ). Овај пин 2 повезан је на Д0 излаз модула сензора брзине.
А други чини Ардуино пин 3 прекидним пином и позива ИСР (генеришите фаре) када се на пин3 детектује ХИГХ. Овај клин је повезан са дугметом помоћу спуштајућег отпора.
аттацхИнтеррупт (дигиталПинТоИнтеррупт (2), цоунт, РИСИНГ); аттацхИнтеррупт (дигиталПинТоИнтеррупт (3), генератедфаре , ХИГХ);
5. Следеће да погледамо ИСР који смо овде користили:
ИСР1- цоунт () ИСР се позива када се на пин 2 (спојен на сензор брзине) деси РИСИНГ (ЛОВ ТО ХИГХ).
воид цоунт () // ИСР за бројања од сензора брзине { цоунтер ++; // повећање бројача за једну ротацију ++; // Повећајмо вредност ротације за једно кашњење (10); }
ИСР2- тимерИср () ИСР се позива сваке секунде и извршава оне линије присутне унутар ИСР-а.
воид тимерИср () { детацхИнтеррупт (дигиталПинТоИнтеррупт (2)); Тимер1.детацхИнтеррупт (); лцд.цлеар (); брзина пловка = (бројач / 20,0) * 60,0; ротације пловка = 230 * (ротација / 20); ротацијам = ротације / 100; лцд.сетЦурсор (0,0); лцд.принт ("Дист (м):"); лцд.принт (ротација); лцд.сетЦурсор (0,1); лцд.принт ("Брзина (РПМ):"); лцд.принт (брзина); бројач = 0; инт аналогип = аналогРеад (А0); инт моторспеед = мап (аналогип, 0,1023,0,255); аналогВрите (5, брзина мотора); Тимер1.аттацхИнтеррупт (тимерИср); аттацхИнтеррупт (дигиталПинТоИнтеррупт (2), цоунт, РИСИНГ); }
Ова функција садржи редове који прво прво одвоје тимер1 и прекидни пин2, јер у ИСР-у имамо изјаве за ЛЦД испис.
За израчунавање СПЕЕД-а у РПМ користимо доњи код где је 20,0 број утора унапред подешен на точкићу кодера.
брзина пловка = (бројач / 20,0) * 60,0;
А за израчунавање удаљености користи се код:
ротације пловка = 230 * (ротација / 20);
Овде се претпоставља обим точка од 230 цм (као што је то нормално за аутомобиле у стварном времену)
Затим претворите растојање у м дељењем растојања са 100
ротацијам = ротације / 100;
Након тога приказујемо БРЗИНУ и ДАЉИНУ на ЛЦД дисплеју
лцд.сетЦурсор (0,0); лцд.принт ("Дист (м):"); лцд.принт (ротација); лцд.сетЦурсор (0,1); лцд.принт ("Брзина (РПМ):"); лцд.принт (брзина);
ВАЖНО: Бројач морамо ресетовати на 0, јер морамо добити број детектованих плусева у секунди, па користимо овај ред
бројач = 0;
Затим прочитајте аналогни пин А0 и претворите га у дигиталну вредност (0 до 1023) и даље те вредности мапирајте на 0-255 за ПВМ излаз (подешавање брзине мотора) и на крају запишите те вредности ПВМ користећи функцију аналогВрите која је повезана на УЛН2003 ИЦ ИЦ.
инт аналогип = аналогРеад (А0); инт моторспеед = мап (аналогип, 0,1023,0,255); аналогВрите (5, брзина мотора);
ИСР3: генеришите цену () ИСР се користи за генерисање износа цене превоза на основу пређеног пута. Овај ИСР се позива када се препозна прекидни пин 3 ВИСОКО (Када се притисне тастер). Ова функција одваја прекид на пину 2 и тајмер прекида, а затим брише ЛЦД.
воид генеришите фаре () { детацхИнтеррупт (дигиталПинТоИнтеррупт (2)); закачите на 2 Тимер1.детацхИнтеррупт (); лцд.цлеар (); лцд.сетЦурсор (0,0); лцд.принт ("ФАРЕ Рс:"); плутајуће рупије = ротација * 5; лцд.принт (рупије); лцд.сетЦурсор (0,1); лцд.принт („Рс 5 по метру“); }
Након тога се пређена раздаљина помножи са 5 (користила сам 5 за ИНР 5 / метар). Можете се променити према својој жељи.
плутајуће рупије = ротација * 5;
Након израчунавања вредности износа, прикажите је на ЛЦД дисплеју повезаном са Ардуином.
лцд.сетЦурсор (0,0); лцд.принт ("ФАРЕ Рс:"); лцд.принт (рупије); лцд.сетЦурсор (0,1); лцд.принт („Рс 5 по метру“);
Комплетни код и демонстрацијски видео је дат у наставку.
Овај прототип можете даље побољшати повећањем тачности, робусности и додавањем више функција попут Андроид апликације, дигиталног плаћања итд. И развити га као производ.