Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Многофункциональный измерительный инструмент на Arduino

    Многофункциональный измерительный инструмент на Arduino



    Приветствую всех на сайте "В гостях у Самоделкина". В этой статье предлагаю Вам рассмотреть одно интересное многофункциональное измерительное устройство. Автор объединил несколько датчиков вместе, что позволят устройству измерять расстояние с помощью оптических дальномеров, длину с помощью поворотного энкодера и напечатанного для него колеса, измерять уровень с помощью модуля 3-х осевого гироскопа и акселерометра, а также углы, с помощью этого же модуля и, наконец, измерять количество оборотов в минуту (оптический тахометр с другим видом ИК-датчика). Все это располагается в напечатанном на 3D принтере корпусе, который разработал автор, и питается от аккумулятора через зарядный и защитный модуль TP4056. Для управления режимами работы и настроек у устройства есть четыре сенсорные кнопки, чувствительность которых позволяет разместить их непосредственно внутри корпуса не проделывая никаких отверстий. Для вывода значения применяется OLED-дисплей, и напоследок — устройство можно использовать как лазерную указку. Посмотрим, как это сделать. Ниже Вы можете видеть список деталей для этого проекта. Убедитесь, что вы используете те же компоненты.

    Список необходимого:

    1 х 3D файлы STL (архив в конце статьи)
    1 х Arduino NANO
    1 х Лазерный датчик расстояния VL53L0X
    1 х Инфракрасный оптический датчик измерения расстояния SHARP 2Y0A21
    1 х Инфракрасный датчик препятствий
    4 х Сенсорные кнопки
    1 х OLED дисплей 128*64 I2C
    1 х 3-х осевой гироскоп и акселерометр MPU6050
    1 х Лазерный модуль
    1 х 3,7 В LiPo аккумулятор
    1 х поворотный энкодер
    1 х Плата заряда и защиты аккумулятора TP4056
    1 х Ползунковый переключатель
    1 х зуммер активный на 5В
    Резисторы (10 кОм, 20 кОм)
    Провода, припой, паяльник и т. д.


    ЧАСТЬ 1 - Что нам нужно

    Хорошо, ребята, давайте начнем этот урок и сначала посмотрим, что нам нужно. Начнем с того, что рассмотрим используемые датчики, а позже перейдем к корпусу. Итак, устройство будет измерять расстояние. Для этого применено два датчика и тому есть причина. Один имеет сравнительно большой диапазон до 80 см, однако другой датчик имеет высокую точность, но только до 20 см. Поэтому автор использовал датчик SHARP GP2Y0A21 для измерения расстояния до 80 см с разрешением в сантиметр, а для измерения расстояния до 20 см с точностью до миллиметра использован датчик VL53L0X. Работа обоих датчиков основана на инфракрасном излучении, однако основаны они на разных принципах: GP2Y0A21 измеряет угол падения отраженного света на матрицу (заблуждение, что такие датчики работают по принципу эхолокации), VL53L0X же основан на лазере, который пульсирует с заданной частотой, в то время как чувствительная матрица считывает попадание луча на объект. Высчитывая разницу во времени между подачей импульса и фиксацией его матрицей можно с высокой точностью определить расстояние до объекта. К стати, такой же принцип используется в астрономии, в своё время несколько космических аппаратов, как наших так и зарубежных, оставили на поверхности луны специальные отражатели. Направляя на эти отражатели лазерный луч и дождавшись когда он вернется обратно, на данный момент времени, с точностью до одного миллиметра можно определить расстояние до луны. Так ученые выяснили, что каждый год луна отдаляется от земли на 5 см.




    Далее устройство будет измерять угол и уровень. Для этого применен 3-х осевой гироскоп совмещенный с акселерометром MPU6050. Расположить этот датчик необходимо строго в середине корпуса, что бы датчик правильно реагировал на отклонения во всех направлениях. Устройство также позволяет измерить длину (на плоскости), для этого применен поворотный энкодер и напечатанное для него на трехмерном принтере колесо. Диаметр окружности колеса заранее известен, поэтому за один оборот энкодера колесо будет проходить известное расстояние. От себя хочу сказать, что на месте автора я бы взял для этой цели колесико от мышки, которое так же является энкодером, но при этом рассчитано на длительную работу и имеет хорошую обрезиненную поверхность, что в самый раз для этих целей. Разумеется, придется подправить в коде диаметр окружности колеса и, возможно, количество шагов которые энкодер имеет на один оборот. Также устройство будет измерять обороты, и для этого автор использовал другой инфракрасный модуль с ИК-светодиодом и ИК-фототранзистором. Сделав на вращающейся детали или валу белую метку можно фиксировать количество оборотов. Так же автор установил модуль лазерной указки, по его словам, чтобы в режиме измерения угла можно было на стене сделать отметку под нужным углом, указывая на нужную точку лазером.




    Теперь давайте посмотрим на последние части, которые нам нужны. Конечно, нам нужна плата Arduino. Затем нам нужно четыре емкостные сенсорные кнопки. Так же необходим аккумулятор на 3,7 В и зарядный модуль к нему. Наконец, нам нужен OLED dsiplay, ползунковый переключатель для включения и выключения устройства и зуммер для звуковых уведомлений. Помимо этого, конечно, понадобятся провода, припой и паяльник, а так же сам корпус.




    ЧАСТЬ 2 - Схема

    На изображении ниже Вы можете видеть графическое обозначение соединения всех электронных компонентов. OLED-дисплей, MPU6050 и VL5L0X используют шину i2c, они подключаются к аналоговым входам А4 и А5 Arduino для передачи данных и синхронизации. Датчик SHARP имеет делитель напряжения на выходе. Так же необходимо применить внутренний источник опорного напряжения ардуино на 1,1В, что будет логическим уровнем для этого аналогового датчика. Это необходимо в связи с тем, что в качестве источника питания применяется аккумуляторная батарея, и если не использовать внутреннюю привязку 1,1 В для аналогового считывания, значение будет меняться вместе с падением напряжения питания батареи. Измерьте мультиметром значение делителя напряжения и укажите его в коде. Подключите все модули к цифровым контактам. Убедитесь, что лазер имеет резистор для ограничения тока, иначе Вы выведите его из строя.




    ЧАСТЬ 3 - Смонтируйте все в корпус


    3.1 Поворотный энкодер

    Сначала устанавливаем поворотный энкодер, который будет использоваться для измерения расстояния. Для этого на него необходимо установить колесо предварительно напечатанное на трехмерном принтере, либо изготовленное в ручную. Важно знать диаметр колеса, что потребуется для последующих вычислений в коде, поэтому измерьте его. Подпаяйте три провода данных, землю и питание. Установите пластиковое колесо, а затем пропустите провода через отверстие в корпусе и установите энкодер на место. Я бы посоветовал предварительно надеть на колесо отрезок велосипедной камеры или несколько резиновых уплотнительных колечек подходящего диаметра для улучшения сцепления колеса с поверхностью. Приклейте энкодер термоклеем или любым другим.




    3.2 Датчики VL5L0X и SHARP

    Теперь припаяйте провода к модулям VL5L0X и SHARP 2YA021. Один датчик подключается 4 проводами, другой тремя. Установите VL5L0X при помощи винтов с торца корпуса так, чтобы датчик был обращен наружу. Затем привинтите датчик SHARP и убедитесь, что он не выступает за пределы корпуса, так как для работы с устройством в режиме цифрового уровня необходимо, что бы все грани корпуса были ровными и не имели выступов. Если он выступает — просто подложите несколько шайбочек.




    3.3 Уровень и тахометр

    Для определения угла и измерения уровня используется модуль гироскопа и акселерометра (датчик ускорения) MPU6050, который работает по шине i2c. Подпаяйте землю, питание и провода данных к этому модулю и приклейте его в середине корпуса в нижней части и убедитесь, что сделали это ровно, без перекосов в любых плоскостях, это важно. Затем припаяйте 3 провода к ИК-датчику и установите его так, что бы ИК светодиод и фототранзистор выходили наружу корпуса через соответствующие отверстия. Далее подстроечным резистором на этом модуле добейтесь того, что бы датчик уверено срабатывал на проходящую мимо него белую полосу, но при этом не было ложных срабатываний. Возьмите игрушечный моторчик и прикрепите к нему картонный диск темного цвета с белой полосой, или просто помахайте мимо него белой палочкой, в общем я думаю Вы придумаете как это сделать. Этот датчик будет нам показывать RPM (revolution per minute) - обороты в минуту.




    3.4 Аккумулятор и лазер

    Наконец, подключите провода от аккумулятора к клеммам B+ и B- зарядного модуля. Установите в корпус включатель питания и подпаяйте к нему провода в разрыв плюсового провода от аккумулятора. Убедитесь, что модуль зарядного устройства работает и заряжает аккумулятор и установите его в корпус. Установите на своё место лазерную указку, пора подключать всё к ардуино.




    3.5 Аруино

    Наконец подпаяйте провода Vcc, gnd и data к четырём емкостным сенсорным кнопкам. Приклейте их, как показано на фото ниже, в верхней части напечатанного корпуса. Подпаяйте провода к OLED-дисплею и приклейте его туда же. Теперь подключите все провода к Arduino, как указано на схеме. Также по желанию добавьте небольшой активный зуммер, если не хотите его использовать — то и один сенсорный модуль так же не понадобится. Наконец — скачайте код, загрузите его в плату Arduino и протестируйте.




    ЧАСТЬ 4 - Код

    Код длинный, потому что у устройства есть множество режимов. Сначала обязательно скачайте все библиотеки, которые вы также можете найти архивом в конце статьи. Установите библиотеки в среду Arduino IDE, скачайте основной код, скомпилируйте и загрузите в Arduino. В коде мы определяем, что на какие пины подключено, по желанию можете подстроить это под себя, а так создаем переменные. Например каждый раз, когда фиксируется, что кнопка "Mode" нажата, мы меняем режим измерения, и внутри каждого цикла режима мы производим разные вычисления.


    //INPUTS/OUTPUTS
    #define zero_button 4
    #define mode_button 5
    #define plus_button 6
    #define sound_button 7
    #define rot_data 8
    //#define rot_clock 9
    #define battery_in A0
    #define sharp_in A1
    #define IR_rpm_in 10
    #define laser_out 2
    #define buzzer 3


    Внешний вид готового устройства:



    Чтобы увидеть все режимы работы, смотрите полное видео ниже:



    Скачать архив со всем необходимым (файлы для печати, библиотеки, код) Вы можете тут: multiizmerjalka.rar [1.28 Mb] (скачиваний: 61)

    Ну а на этом все, и всем удачи в творчестве!

    Источник (Source)
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Электронная нагрузка под управлением Arduino

    Электронный «Магический» бильярдный шар

    10
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    9.8
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    10
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 9.93 из 10 (голосов: 5 / История оценок)

    Добавить комментарий

    30 комментариев
    Korolev
    R555,
    Ваще-то меня тоже Игорь зовут
    Пора замутить "на троих"!!! drinks xaxa
    R555
    Korolev,
    А вот обращение по имени воспринял в свой адрес:
    Чё-то, кажись, один Игорь не понял шутки другого...И понеслось! xaxa
    А для чего ники придумали? Я тоже относительно недавно к тебе обратился по имени. А мне ino53 пишет. Типа, ты к кому это там обращаешься? Ваще-то меня тоже Игорь зовут. drinks xaxa Будто я не знаю, как вас обоих зовут friends
    Кто не ошибается, тот не делает ничего.
    Korolev
    Валерий,
    Теперь он понял...
    Да я-то сразу понял, что владелец Ситроена договорился с владельцем Опеля, ибо:
    Человек хороший попался! Проникся ситуацией, пошёл навстречу...
    smile А вот обращение по имени воспринял в свой адрес:
    Чё-то, кажись, один Игорь не понял шутки другого...
    И понеслось! xaxa
    ino53
    Валерий,
    Так. Ага. Сначала пойду проверю, не спрятала ли жонка водку , потом еще раз по тексту пройдусь.... ok
    Валерий
    Цитата: Korolev
    Во блииин, старый я тормз! Я только сейчас понял, что ino53 давно уже понял, а Валерий не сразу, а только потом понял, что мы с ino53 - тёзки!!!

    А нихрена!!! ))))
    Я сразу понял!! А Ино тоже понял, но я так понял, что он понял не сразу! ))))
    А Королёв понял, что он с Ино - тёзки, но я так понял, что он тоже это не сразу понял! ))))
    Цитата: ino53
    Цитата: Валерий
    Да я то понял. Это Ино не понял... Или, я, просто, понял, что Ино не понял, а на самом деле он всё понял! И это просто я так понял, что он не понял

    Фильм "Ищите женщину". "Ты сказал что-то настолько умное, что я ничего не поняла... Поясни...(с)" smile

    Да что ж тут не понятного-то!!! )))
    Вот смотри (Постараюсь так объяснить, чтобы ты понял!)))
    Королёв пошутил. (Я так понял). Ты не понял, что он пошутил, а понял, что он не понял, что обе машины мои, и указал ему на это...
    Но я то понял, что он понял, поэтому, понимая, что ты не понял, объяснил ему (так, чтобы он понял), что я всё понял, а ты не понял.
    Но сейчас я понял, что ты тоже тогда понял, но, просто, Королёв не понял, что ты понял!!!
    Поэтому я решил объяснить Королёву, что он просто не понял того, что понял я, и не понял ты.
    Теперь он понял...
    Але нови ностра алис!
    Korolev
    Валерий,
    Да я то понял. Это Ино не понял... Или, я, просто, понял, что Ино не понял, а на самом деле он всё понял! И это просто я так понял, что он не понял. Хотя, он понял!
    Во блииин, старый я тормз! Я только сейчас понял, что ino53 давно уже понял, а Валерий не сразу, а только потом понял, что мы с ino53 - тёзки!!! xaxa
    ino53
    Цитата: Валерий
    Да я то понял. Это Ино не понял... Или, я, просто, понял, что Ино не понял, а на самом деле он всё понял! И это просто я так понял, что он не понял

    Фильм "Ищите женщину". "Ты сказал что-то настолько умное, что я ничего не поняла... Поясни...(с)" smile
    Korolev
    Валерий,
    А его, просто, перед этим стукнули слегка, и он получил очень хорошую сумму по страховке
    Ихто, энта каторый:
    Человек хороший попался! Проникся ситуацией, пошёл навстречу...
    ??? smile
    Валерий
    Цитата: Korolev
    Мужики! Да вы чего? Действительно думаете, что я не понял,

    Да я то понял. Это Ино не понял... Или, я, просто, понял, что Ино не понял, а на самом деле он всё понял! И это просто я так понял, что он не понял. Хотя, он понял!
    xaxa

    feonor12,
    Дык это ж нормально... Когда во дворе кто-то возится возле машины - остальным грех не подойти! ))))
    А его, просто, перед этим стукнули слегка, и он получил очень хорошую сумму по страховке. (На такую и не надеялся! С радостью ещё бы раз так согласился)))). Вот он мне и советовал, типа, вызывай ГАИ, не имеют права не дать страховку - у тебя же на обе машины полисы есть!....
    Но я попробовал на месте договориться!)))))))
    Але нови ностра алис!
    feonor12 Автор
    Цитата: Валерий
    П.С. Опель был тоже мой...)))))))

    Похоже сосед любит совать нос не в свои дела)
    Korolev
    Валерий,
    Чё-то, кажись, один Игорь не понял шутки другого...)
    Мужики! Да вы чего? Действительно думаете, что я не понял, что:
    П.С. Опель был тоже мой...)))))))
    ??? Это вам непонятна моя шутка:
    а то ведь дело-то и до драки могло дойти! xaxa
    Я как раз и имел ввиду драку между хозяином Ситроена (Валерием) и хозяином Опеля (Валерием)!!! xaxa "Умное лицо — это ещё не признак ума, господа. Все глупости на земле делаются именно с этим выражением лица. Улыбайтесь, господа. Улыбайтесь!" (барон Мюнхгаузен) smile
    Korolev
    ino53,
    С самим собой...
    Вот то-то и оно ж! smile
    Валерий
    Чё-то, кажись, один Игорь не понял шутки другого...)))))
    Але нови ностра алис!
    ino53
    Цитата: Korolev
    а то ведь дело-то и до драки могло дойти!

    С самим собой...
    Цитата: Валерий
    П.С. Опель был тоже мой...)))))))
    Korolev
    Валерий,
    попробовать как-то по хорошему договориться...
    Умение договариваться - очень полезный талант, а то ведь дело-то и до драки могло дойти! xaxa
    Валерий
    Цитата: Korolev
    Главное, чтобы всё по честному, по справедливости и без обид!

    Я когда-то, разворачиваясь на Ситроене во дворе девятиэтажки, сдавая задом, чуток тюкнул по бамперу Опеля... Вышел, смотрю, на бампере у Опеля небольшая царапина.... Подошёл сосед... И давай меня уговаривать вызвать ГАИ! Мол, ты дурак! Тебе тогда страховку заплатят!... Но я, зная, что удар задним ходом в неподвижную (это важно!) машину наказывается очень строго (вплоть до лишения), предпочёл этого не делать, а попробовать как-то по хорошему договориться... Так сказать, на месте разрулить ситуацию... Без вызова ГАИ!...
    И получилось! Всё обошлось.... Человек хороший попался! Проникся ситуацией, пошёл навстречу... Мне даже платить ничего не пришлось.

    П.С. Опель был тоже мой...)))))))
    Але нови ностра алис!
    Korolev
    feonor12,
    Думаю мы с собой как-то урегулируем этот вопрос
    Главное, чтобы всё по честному, по справедливости и без обид! smile
    feonor12 Автор
    Korolev,
    Думаю мы с собой как-то урегулируем этот вопрос xaxa
    Korolev
    feonor12,
    А вот двойной ezzak/feonor12 это идея, я подумаю
    С подельником, пардон, соавтором ezzak, придётся делиться гонорарами! scratch smile
    feonor12 Автор
    pogranec,
    Я знаю, но менять уже как-то поздновато. А вот двойной ezzak/feonor12 это идея, я подумаю, спасибо!
    pogranec
    feonor12,
    Можно написать админу и поменять ник. А еще лучше добавить к нынешнему, тот, старый. Будет как двойная фамилия-)))
    Korolev
    feonor12,
    Надо или перерисовать или что-то придумать
    Ждём авторскую самоделку! Я бы задумался о сквозном протравливании медной пластины, типа ажурный брелок, кулон ... yes smile
    feonor12 Автор
    Korolev,
    Тоже были такие мысли, тем более пару логотипов я себе рисовал для блога (второй где-то посеялся).


    Но под ником ezzak меня тут никто не знает, зарегился под старым, а менять уже поздно, раньше думать было надо. Под этим названием думал двигать сайт (у меня был покупной домен ezzak.ru, потом не увидел смысла платить и переехал на бесплатный домен, а потом вообще забросил) и вести канал "рабочий", но дело не пошло. Надо или перерисовать или что-то придумать. Ну и травить буду с освоением какой-то новой технологии, или когда дойдут руки доделать рисовалку печатных плат, или когда решусь освоить фоторезист (решусь тут скорее в смысле когда найду время и деньги купить фоторезист, смывку УФ лампу, пленку, собрать засветочную камеру и т.д.)
    Korolev
    feonor12,
    Не, пока ничего не придумал оригинального
    Выгравируй, ну или вытрави, какой-нибудь красивый вензель! Заодно и опубликуй процесс! yes
    feonor12 Автор
    R555,
    Не, пока ничего не придумал оригинального smiles
    R555
    feonor12,
    Ну это у автора такой прикол, как коробок спичек у R555, у этого банан. Не настоящий, к стати)
    Браво! В точку попал. Я-то догадался, но помалкивал, что афтар так оригинально помечает свои работы (на всякий случай). Кстати, ты говорил, что тоже хочешь придумать некий дополнительный знак авторства. Я его уже подсёк. Или мне померещилось? respekt
    Кто не ошибается, тот не делает ничего.
    feonor12 Автор
    Korolev,
    ino53,
    Ну это у автора такой прикол, как коробок спичек у R555, у этого банан. Не настоящий, к стати)
    ino53
    Цитата: Korolev
    Посмотрел, не понял назначения банана на фото!

    Тезка, у него банан и тут...
    https://usamodelkina.ru/18746-jelektronnyj-magicheskij-biljardnyj-shar.html
    Хорошо ли это...secret
    ino53
    С одной стороны - вызывает уважение, с другой - а это нужно? scratch Хотя, всякая новинка проходит 3 стадии:
    -Зачем это нужно?
    -В этом что то есть...
    -Как мы раньше без этого жили!...
    Korolev
    К стати, такой же принцип используется в астрономии
    И в радиолокации, и по доплеровскому смещению определяется курс и скорость цели. yes
    Теперь давайте посмотрим на последние части, которые нам нужны
    Посмотрел, не понял назначения банана на фото! dontknow

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Опрос
    А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

    Последние комментарии

    Все комментарии