Электронная линейка на ардуино

Фоточувствительная линейка TSL1401

В этой статье речь пойдет о датчике TSL1401. Это устройство мало кому известно из робо-энтузиастов, хотя имеет очень большой потенциал в области DIY робототехники. Датчик TSL1401 представляет собой линейку из 128 фоточувствительных сенсоров, оформленную в виде законченного модуля с объективом. Есть вариант линейки на 256 точек, он имеет маркировку TSL1402. Производит датчик компания AMS-TAOS, базирующаяся в США.

Вариант модуля датчика, приобретенного мной в Китае выглядит так:

Сам датчик находится под объективом и бывает в разных вариантах корпусов: DIP, SOIC, SMD CL. В моем случае был как раз последний вариант, очень тяжело паяющийся. Вот такой:

Особенности:

  • фото-датчиков: 128;
  • плотность фото-датчиков:. 400 на дюйм;
  • хорошая линейность и равномерность сигнала;
  • широкий динамический диапазон: 4000:1 (72 дБ);
  • максимальная частота опроса: до 8 МГц;
  • напряжение питания: 3 — 5 В.

Как правило, вместе с датчиком продавцы предлагают объективы с разным углом обзора. Их можно заменить самостоятельно.

Применение

Есть как минимум две задачи для которых я хочу применить TSL1401. Первая: с помощью такого датчика можно сделать очень качественное распознавании линии для робота-следопыта (он же Line Follower). Представьте себе, что вместо двух, четырех, или даже 16 отдельных сенсоров вы получите сразу 128! Такое разрешение позволит очень чутко реагировать на все нюансы контрастной линии, и даже распознавать определенные шаблоны.

«Но можно же использовать целую видеокамеру для распознавания линии!» — скажет самый умный из читателей. Это действительно так, но только отчасти. С камерой можно сделать очень умного робота, который сможет не просто распознавать элементы трассы прямо под собой, но и сможет планировать маневры заранее. Но как известно, методы машинного зрения, использующие полноразмерную картинку, требуют очень много вычислительных ресурсов. Raspberry Pi 2/3 с трудом справляется с этой задачей. Вообще, обработка данных видео потока — есть не самая быстрая процедура даже на персональных компьютерах. Про слабые AVR и говорить не приходится.

Так вот, чтобы не тратить скудные ресурсы микроконтроллера на обработку большого изображения, которое часто не так уж и необходимо, мы можем использовать всего одну линию пикселей. В результате, даже слабая Ардуино Уно легко справляется с задачей получения данных с TSL1401. С оптимизированным кодом, удается получить частоту обновления данных — 4 КГц.

Наконец, вторая задача заключается в создании быстрого самодельного лидара на основе TSL1401. Собственно, подобный проект уже есть на roboforum.ru. Лидар (или оптический сканирующий дальномер) — это вообще крайне полезная вещь для любого робота. Используя лидар можно реализовать метод одновременной навигации и позиционирования (SLAM).

Но это в будущем, а именно в этой статье мы попробуем просто считать и визуализировать данные с этого незаурядного датчика.

Подключение

Датчик который я испытывал имеет всего пять выводов. Подключаем его к Ардуино Уно по такой схеме:

TSL1401 SI CLK AO Vcc Gnd
Arduino Uno 5 4 A0 +5V GND

Всё, 5-минутное дело. Теперь переходим к программированию.

Программа

Работа с датчиком доступно описана в спецификации. Попробуем в лоб реализовать его диаграмму работы, которая выглядит так:

Датчик TSL1401 интегрирующий, а это значит, что вектор значений будет зависеть от времени экспозиции. Другими словами, если датчик будет находиться в режиме измерения (экспозиции) достаточно долго, то показания яркости всех его точек попросту зашкалят. То же самое произойдет с незакрепленной фотобумагой, если её надолго оставить на свету. Ввиду такой особенности, наша задача заключается в том, чтобы ограничить время экспозиции коротким промежутком времени, и уже потом снять накопленные показания.

Согласно диаграмме, для того чтобы запустить процедуру измерения, мы должны подать положительный импульс на вывод SI, и зафиксировать его синхроимпульсом. Экспозиция будет длиться до тех пор, пока мы не сделаем еще один импульс SI. Снять сигнал с датчика мы сможем только после завершающего импульса SI, во время уже следующего измерения.

Циклический алгоритм получения данных с датчика будет выглядеть следующим образом:

  1. Подаем HIGH на ногу SI, начиная тем самым измерение;
  2. Фиксируем SI синхроимпульсом;
  3. Опускаем SI в LOW;
  4. В цикле посылаем на датчик 128 синхроимпульсов. Этим мы чистим регистр
  5. датчика от накопленных ранее значений;
  6. Ждем N миллисекунд — экспозиция;
  7. Подаем HIGH на ногу SI, начиная сбор данных;
  8. Фиксируем SI синхроимпульсом;
  9. Опускаем SI в LOW;
  10. В цикле снимаем с ноги AO данные, и делаем синхроимпульс для перехода к следующему пикселю.

Этот алгоритм называется one-shot. Так мы сможем в любое нужное нам время получить вектор значений. По сути — это частный случай общего непрерывного алгоритма, который в спецификации описывается такой диаграммой:

Здесь видно, что на самом деле, промежуток между двумя импульсами SI одновременно задает период экспозиции, и открывает доступ к регистру для считывания данных прошлого измерения.

Код программы на Ардуино Уно, которая в лоб, без всяких оптимизаций, реализует диаграмму one-shot представлена ниже.

Если алгоритм покажется вам слишком медленным, его безусловно можно будет ускорить, отказавшись от тяжелых функций стандартной библиотеки Ардуино. Так сделано в одной из программ, которую я нашел в интернете. Код хранится на гитхабе. Когда я выше упоминал про скорость опроса датчика в 4 кГц, я имел ввиду именно эту программу.

Видео

Теперь посмотрим что получилось. Видео теста состоит из нескольких эпизодов. В первом случае вывод данных осуществлялся прямо в терминал последовательного порта, в остальных случаях для визуализации использовался SFMonitor.

Источник

Универсальное DRO на базе Arduino Nano — shDRO

Дамы и господа, здравствуйте.

В данной статье я расскажу о разработке устройства для снятия показаний с цифровых линеек и других датчиков, размещенных на токарных и фрезерных станках.

Разработка ещё не завершена и будет описано то, что сделано на данный момент.

Кому интересно, добро пожаловать под кат.

У меня есть два станка по металлу (китайские): фрезерный и токарный.

Я периодически изготавливаю на них изделия разной степени сложности (я не токарь и не фрезеровщик, это просто хобби). И, если изделие сложное, то приходилось брать в руки калькулятор и просчитывать ход фрезы или резца. И так же, если ход фрезы/резца получался достаточно большим, то приходилось считать обороты ручек суппортов, что откровенно говоря напрягало. В итоге я задумался о DRO (давно были куплены цифровые штангенциркули как раз для этой цели, но нехватка времени постоянно откладывало изготовление).

Прежде чем приступить к разработке своего DRO, мне нужно было ответить на два вопроса, касающихся целесообразности собственной разработки:

  • почему бы не купить готовое изделие?
  • в сети есть много проектов DRO, разного уровня сложности, с подробными описаниями изготовления своими руками. Так почему бы не собрать одно из них?

Отвечаю сам себе.

Да, на рынке представлено множество изделий, как отечественных, так и зарубежных, с разными ценами и с разной функциональностью. Тот же Али предлагает готовые DRO с тремя оптическими линейками по цене порядка 13000 руб. – очень низкая цена для такого устройства. Но мне интересен сам процесс изготовления, поэтому вариант «купил и поставил», отпал.

Отвечая на второй вопрос, я поставил себя на место человека, который сам будет собирать устройство по какому-либо описанию, и что он должен сделать. А именно:

  • приобрести нужные компоненты: процессор, индикацию, кнопки и мелочевку типа резисторов, конденсаторов, стабилизаторов и т.д. (без этого конечно никуда);
  • в зависимости от сложности проекта, изготовить/приобрести печатную плату;
  • затем всё спаять и прошить процессор;
  • после, сделать работу над ошибками;

И только после этих шагов, получится законченное изделие. Каждый шаг занимает какое-то время, а так как человек существо ленивое и нетерпеливое (в хорошем смысле этих слов), то ему хочется как можно быстрее увидеть результат работы устройства, пусть даже промежуточный. И я все же решил разработать своё устройство таким образом, чтобы человек даже в самом начале процесса сборки, видел промежуточные результаты его работы.

Теперь нужно было выбрать плату для реализации.

Выбирал между Arduino на базе Atmega и STM.

Я программист верхнего уровня, но по работе приходилось программировать микроконтроллеры семейства Atmega и MSP-430, с STM я не был знаком. Поэтому выбрал Atmega. Выбрал самую дешевую плату (или нет? просто они у меня были) Arduino Nano на базе микроконтроллера Atmega328.

(зачеркнута функциональность, которая ещё не реализована)

  • плата Arduino Nano, процессор Atmega328;
  • 12 независимых каналов/портов Arduino, к которым подключаются устройства считывания;
  • каждый канал имеет свойства: Type (CLKin, DATAin, Ain, Bin и т.д.), EI (Enable Interrupt), IL (Interrupt Level), Inv (инвентированный сигнал);
  • максимальное количество подключаемых устройств: 6;
  • каждому устройству можно назначить один или более каналов из 12ти доступных;
  • поддержка протоколов: 24BIT, 21BIT, BCD7, BIN6, квадратурный сигнал, периодический сигнал с тахометра (есть возможность добавления новых протоколов);
  • консоль: позволяет при помощи терминальной программы конфигурировать и тестировать shDRO в процессе сборки и эксплуатации;
  • в режиме консоли, реализован «псевдо» логический анализатор, который позволяет считывать уровни заданных в консоли каналов и определить протокол обмена. Максимальное количество выборок 256, минимальное замеряемое время между выборками 8мкс. Хотя бы один анализируемый канал должен быть настроен на прерывание;

Модульная схема:

Устройство состоит из следующих модулей:

  • три стабилизатора напряжения 5в., 3в., 1.5.в. Стабилизаторы на 3в. и 1.5.в. регулируемые. Данные уровни напряжения используются в цифровых штангенциркулях (1.5в.) и в линейках iGAGING (3в.);
  • 4 восьмиразрядных семисегментных индикатора на основе MAX7219, подключенных каскадно к аппаратному SPI;
  • клавиатура. Клавиатура состоит из двух резистивных матриц: 2х4 и 4х4 в этом случае разводка дорожек на плате проще (но можно сделать две матрицы 3х4, кому как удобнее). Каждая матрица подключена к каналу ADC;

Использование резистивных матриц для меня большой минус, т.к. со временем, сопротивление кнопок будет расти, и соответственно будут изменяться уровни напряжения, замеряемые ADC. Но на «честную» матрицу просто не хватило ножек/портов платы (для 24х кнопок нужно 10 портов). Исходя из этого, в прошивке реализована функциональность обучения клавиатуры, обучение можно сделать в любое время, и при этом не нужна связь с терминальной программой (про обучение будет написано ниже).

  • динамик, подключенный к аппаратной ножке таймера 1;
  • плата адаптеров, которые предназначены для согласования уровней между устройствами и портами Arduino;
  • 4 разъема DB9 female (по хорошему нужно ставить 6 разъемов, т.к. shDRO поддерживает до 6 устройств, но я не стал загромождать будущую заднюю панель корпуса, предполагая что три разъема будут использованы для осей, а один разъем будет расшарен между остальными устройствами). Разъемы самые простые, с ножками для пайки проводов. Провода в свою очередь распаиваются на плату адаптеров;

    Выбор такого типа разъема обусловлен следующими причинами: надежность (по сравнению с USB разъемами и RJ-45), большое количество выводов и легкость распайки. И так же у меня есть одна оптическая линейка с разъемом такого типа.

    Принципиальная схема:

    В следующей части я опишу логику работы shDRO, опишу доступные на данный момент команды консоли, и так же выложу первую версию прошивки.

    Источник

    Электронная линейка! на Arduino

    Zobrazit ovladače přehrávání

    • čas přidán 30. 09. 2016
    • Интересное занятие на вечер, создание простого измерительного инструмента.
      Группа ВКонтакте new. virf_live_productions
      Arduino Mini ali.pub/0ju1v
      Arduino Nano (Micro USB, ATmega328) ali.pub/prkz6
      Arduino Nano (MiniUSB, Atmega328) ali.pub/hrvdm
      Arduino Nano (Micro USB, ATmega168) ali.pub/ml67j
      Плата I2C — ali.pub/qhkus
      Дисплей HD44780 — ali.pub/y5bwm
      Беспаечная макетка на 830 точек ali.pub/hbksl
      Беспаечная макетка на 400 точек ali.pub/cyxot
      Беспаечная макетка на 170 точек ali.pub/92bgf
      Модуль питания для макетки ali.pub/4dcit
      Соединительные провода ali.pub/3c7xa
      Металлические контакты «мама» (BLS / BLD) ali.pub/2yxml
      Металлические контакты «папа» (BLS / BLD) ali.pub/1brcx
      Набор пластика для разъемов (BLS / BLD) ali.pub/dmn20
      Ссылка на скетч yadi.sk/d/LjwAwvKPw3S9f
      Библиотека LiquidCrystal_I2C — yadi.sk/d/udxiQTIsrHwBh
    • Věda a technologie

    Komentáře • 79

    Для нуждающихся на схеме для энкодера указаны пины А4 и А6, но было бы не плохо указать А4 и А5. И упомянуть, что не все адреса I2C одинаковые. У кого то может быть и 0x3F например. Но в целом — класс! Спасибо.

    Спасибо автору! Очень интересная сборочка

    Классно, иногда может быть очень полезно такое измерение!.)))

    Просто и интересно автор молоток не нудит и не мусолит в видео как некоторые все доходчиво по больше таких видосов

    РАЗВИТИЕ ПРЕДВЕЩАЕТСЯ! Великолепно! Сделай на этом другое устройство. Подключи шаговый двиг, сделай что бы с увеличением значений увеличивался скорость с уменьшением значений уменьшался скорость. Включи возможность регулировки диапазона скорости шаговика. Исключи отрицательные значения. Такое устройство нужна не только мне. Мой адрес: alesqosim@yandex.ru

    Отличный датчик для технологической лини где нужно считать длинну

    Спасибо! мне такой прибор нужен чтобы считать площадь стен в сложных помещениях

    Просто купи себе готовый прибор. хотя сомневаюсь,что это тебе нужно

    Добрый вечер,классная штука,у меня строительный магазин, в ассортименте много ковровых покрытий на стендах.Так,вот,идея такова,если бы сделать такую штуку с размеров с рулетку,чтобы было два ролика,чтобы можно было быстро и мобильно отмерять определенное количество метров.Заказать можно?

    прикольная штука респект автору лайк

    Круто, брат! Оооочень нужная вещь. Можно ставить на токарные станки. Но там нужны будут сотые доли. Спасибо! Есть ссылка на скечи?

    Вот бы 0,01 мм считала. В машинной металлообработке это было бы полезно. А то надо штангенциркуль ломать.

    Прототип на макетке — это, конечно, интересно.
    Но куда занятнее воплощение изделия в корпусе. Интереснее и труднее. Поэтому, на ютубе, свои ардуино проекты до конца доводят единицы.

    Спасибо за видео. Может кому то понадобится, вместо колесика использовал резистор, ничего не выводилось, пока не перекинул SCL на 5 пин.

    класс! Можно сделать на его основе счётчик для велосипеда!

    будут сложности с примайтстыриванием энкодера к колесу. Уж проще какой-нить датчик Холла коннектить на вилку. Ну или геркон на крайний случай, хотя наличие подвижной части(контакт) снизит надёжность.

    Супер. Красава. С меня подписка Мути ещё что нибудь. И да сделай кнопку чтоб память смотреть последних размеров

    Что нужно поменять в коде? Что бы он смог и в минус уходить

    отличная работа,забрал в закладки+подписка.

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

    Для точности на станке нужно искать линейный энкодер, с кольцевым хорошей точности добиться очень трудно будет.
    Настроить можно что угодно хоть полное управление компьютером (то есть cnc / чпу)

    А можно ли использовать датчик от лазерной мышки в данном устройстве вместо колесика?

    в любой мышке есть енкодер, используй его

    Здравствуйте!подскажите пожалуйста от какой мышки можно взять такое колесико?ну то есть с проводами

    Что нужно поменять в коде? Что бы он смог и в минус уходить

    Электронные линейки очень нужная вещь например для металлообрабатывающих станков, они конечно продаются готовые на али экспрессе но стоят от 14 тр . а если мне нужно такие на три станка то это уже приличная сумма выходит. Так вот проблема в том что я в электронике не бум бум, а те кто в ней соображают используют свои навыки в основном чтобы поиграться подобными вещами и не более.

    ВИДЕО просто в момент мне встретилась.
    ставлю ЛАЙК.
    А можно сделать так, чтобы было два энкодера и с двух энкодеров показания появлялись на экране с одного энкодера показания были на первой строке, а со второго на второй строке?
    Хотел сделать электронную координатную линейку в сотых долях миллиметра на токарный станок с помощью энкодера и ардуино.
    Для индикации положения продольной и поперечной подачи резца на одном экране.
    и на сколько точно и безошибок может работать сие устройство.

    Вы сможите сделать на заказ счетчик нити(канатика) ? На нити метки через метр. Считывать надо будет на убавление и прибавление.

    Цену деления до 1 мм можно сделать? И что нужно для этого, какой энкодер?

    Энкодер на малый шаг и приличную точность скорее всего будет нормально стоить (на халяву не представляю где можно скрутить) а так можно хоть линейки от станков подключить но цена кусается.

    А вот я хотел бы задать вопрос немного не по теме: «Есть ли не подпружиненные к центру джойстики для ардуино и если есть, то где достать их?»

    кстати да, интересный вопрос) я так понял вы хотите какой то пульт сделать?!) вроде как Гайвер делал пульт, он просто взял потенциометр)

    Этот вопрос набирает популярность)))
    Конкретно для ардуино не встречал но джойстики то все одинаковые,
    проще всего и дешевле купить на барахолке пульт от дешевой разбитой игрушки.

    я на что-то подобное сейчас собираю)) взял оптический энкодер на 1000имп\об и буду передавать положение суппорта станка в rs 485 modbus. заменяет уци стоимостью в 30-50к рублей)

    Илья Григорьев ссылку пжлст кинь на энкодер. Как кстати дела обстоят с проектом?

    Внимание ребята! Видео с заложенными ошибками, смотрите внимательно и проверяйте с правильным подключением.

    спасибо очень полезно оказалась штукенция (считает количество витков при намотке не транс) подскажите что дописать чтобы при нажатие на кнопку сбрасывалось на ноль ?

    Источник

  • Электронная линейка на arduino

    Фоточувствительная линейка TSL1401

    В этой статье речь пойдет о датчике TSL1401. Это устройство мало кому известно из робо-энтузиастов, хотя имеет очень большой потенциал в области DIY робототехники. Датчик TSL1401 представляет собой линейку из 128 фоточувствительных сенсоров, оформленную в виде законченного модуля с объективом. Есть вариант линейки на 256 точек, он имеет маркировку TSL1402. Производит датчик компания AMS-TAOS, базирующаяся в США.

    Вариант модуля датчика, приобретенного мной в Китае выглядит так:

    Сам датчик находится под объективом и бывает в разных вариантах корпусов: DIP, SOIC, SMD CL. В моем случае был как раз последний вариант, очень тяжело паяющийся. Вот такой:

    Особенности:

    • фото-датчиков: 128;
    • плотность фото-датчиков:. 400 на дюйм;
    • хорошая линейность и равномерность сигнала;
    • широкий динамический диапазон: 4000:1 (72 дБ);
    • максимальная частота опроса: до 8 МГц;
    • напряжение питания: 3 — 5 В.

    Как правило, вместе с датчиком продавцы предлагают объективы с разным углом обзора. Их можно заменить самостоятельно.

    Применение

    Есть как минимум две задачи для которых я хочу применить TSL1401. Первая: с помощью такого датчика можно сделать очень качественное распознавании линии для робота-следопыта (он же Line Follower). Представьте себе, что вместо двух, четырех, или даже 16 отдельных сенсоров вы получите сразу 128! Такое разрешение позволит очень чутко реагировать на все нюансы контрастной линии, и даже распознавать определенные шаблоны.

    «Но можно же использовать целую видеокамеру для распознавания линии!» — скажет самый умный из читателей. Это действительно так, но только отчасти. С камерой можно сделать очень умного робота, который сможет не просто распознавать элементы трассы прямо под собой, но и сможет планировать маневры заранее. Но как известно, методы машинного зрения, использующие полноразмерную картинку, требуют очень много вычислительных ресурсов. Raspberry Pi 2/3 с трудом справляется с этой задачей. Вообще, обработка данных видео потока — есть не самая быстрая процедура даже на персональных компьютерах. Про слабые AVR и говорить не приходится.

    Так вот, чтобы не тратить скудные ресурсы микроконтроллера на обработку большого изображения, которое часто не так уж и необходимо, мы можем использовать всего одну линию пикселей. В результате, даже слабая Ардуино Уно легко справляется с задачей получения данных с TSL1401. С оптимизированным кодом, удается получить частоту обновления данных — 4 КГц.

    Наконец, вторая задача заключается в создании быстрого самодельного лидара на основе TSL1401. Собственно, подобный проект уже есть на roboforum.ru. Лидар (или оптический сканирующий дальномер) — это вообще крайне полезная вещь для любого робота. Используя лидар можно реализовать метод одновременной навигации и позиционирования (SLAM).

    Но это в будущем, а именно в этой статье мы попробуем просто считать и визуализировать данные с этого незаурядного датчика.

    Подключение

    Датчик который я испытывал имеет всего пять выводов. Подключаем его к Ардуино Уно по такой схеме:

    TSL1401 SI CLK AO Vcc Gnd
    Arduino Uno 5 4 A0 +5V GND

    Всё, 5-минутное дело. Теперь переходим к программированию.

    Программа

    Работа с датчиком доступно описана в спецификации. Попробуем в лоб реализовать его диаграмму работы, которая выглядит так:

    Датчик TSL1401 интегрирующий, а это значит, что вектор значений будет зависеть от времени экспозиции. Другими словами, если датчик будет находиться в режиме измерения (экспозиции) достаточно долго, то показания яркости всех его точек попросту зашкалят. То же самое произойдет с незакрепленной фотобумагой, если её надолго оставить на свету. Ввиду такой особенности, наша задача заключается в том, чтобы ограничить время экспозиции коротким промежутком времени, и уже потом снять накопленные показания.

    Согласно диаграмме, для того чтобы запустить процедуру измерения, мы должны подать положительный импульс на вывод SI, и зафиксировать его синхроимпульсом. Экспозиция будет длиться до тех пор, пока мы не сделаем еще один импульс SI. Снять сигнал с датчика мы сможем только после завершающего импульса SI, во время уже следующего измерения.

    Циклический алгоритм получения данных с датчика будет выглядеть следующим образом:

    1. Подаем HIGH на ногу SI, начиная тем самым измерение;
    2. Фиксируем SI синхроимпульсом;
    3. Опускаем SI в LOW;
    4. В цикле посылаем на датчик 128 синхроимпульсов. Этим мы чистим регистр
    5. датчика от накопленных ранее значений;
    6. Ждем N миллисекунд — экспозиция;
    7. Подаем HIGH на ногу SI, начиная сбор данных;
    8. Фиксируем SI синхроимпульсом;
    9. Опускаем SI в LOW;
    10. В цикле снимаем с ноги AO данные, и делаем синхроимпульс для перехода к следующему пикселю.

    Этот алгоритм называется one-shot. Так мы сможем в любое нужное нам время получить вектор значений. По сути — это частный случай общего непрерывного алгоритма, который в спецификации описывается такой диаграммой:

    Здесь видно, что на самом деле, промежуток между двумя импульсами SI одновременно задает период экспозиции, и открывает доступ к регистру для считывания данных прошлого измерения.

    Код программы на Ардуино Уно, которая в лоб, без всяких оптимизаций, реализует диаграмму one-shot представлена ниже.

    Если алгоритм покажется вам слишком медленным, его безусловно можно будет ускорить, отказавшись от тяжелых функций стандартной библиотеки Ардуино. Так сделано в одной из программ, которую я нашел в интернете. Код хранится на гитхабе. Когда я выше упоминал про скорость опроса датчика в 4 кГц, я имел ввиду именно эту программу.

    Видео

    Теперь посмотрим что получилось. Видео теста состоит из нескольких эпизодов. В первом случае вывод данных осуществлялся прямо в терминал последовательного порта, в остальных случаях для визуализации использовался SFMonitor.

    Источник

    Универсальное DRO на базе Arduino Nano — shDRO

    Дамы и господа, здравствуйте.

    В данной статье я расскажу о разработке устройства для снятия показаний с цифровых линеек и других датчиков, размещенных на токарных и фрезерных станках.

    Разработка ещё не завершена и будет описано то, что сделано на данный момент.

    Кому интересно, добро пожаловать под кат.

    У меня есть два станка по металлу (китайские): фрезерный и токарный.

    Я периодически изготавливаю на них изделия разной степени сложности (я не токарь и не фрезеровщик, это просто хобби). И, если изделие сложное, то приходилось брать в руки калькулятор и просчитывать ход фрезы или резца. И так же, если ход фрезы/резца получался достаточно большим, то приходилось считать обороты ручек суппортов, что откровенно говоря напрягало. В итоге я задумался о DRO (давно были куплены цифровые штангенциркули как раз для этой цели, но нехватка времени постоянно откладывало изготовление).

    Прежде чем приступить к разработке своего DRO, мне нужно было ответить на два вопроса, касающихся целесообразности собственной разработки:

    • почему бы не купить готовое изделие?
    • в сети есть много проектов DRO, разного уровня сложности, с подробными описаниями изготовления своими руками. Так почему бы не собрать одно из них?

    Отвечаю сам себе.

    Да, на рынке представлено множество изделий, как отечественных, так и зарубежных, с разными ценами и с разной функциональностью. Тот же Али предлагает готовые DRO с тремя оптическими линейками по цене порядка 13000 руб. – очень низкая цена для такого устройства. Но мне интересен сам процесс изготовления, поэтому вариант «купил и поставил», отпал.

    Отвечая на второй вопрос, я поставил себя на место человека, который сам будет собирать устройство по какому-либо описанию, и что он должен сделать. А именно:

    • приобрести нужные компоненты: процессор, индикацию, кнопки и мелочевку типа резисторов, конденсаторов, стабилизаторов и т.д. (без этого конечно никуда);
    • в зависимости от сложности проекта, изготовить/приобрести печатную плату;
    • затем всё спаять и прошить процессор;
    • после, сделать работу над ошибками;

    И только после этих шагов, получится законченное изделие. Каждый шаг занимает какое-то время, а так как человек существо ленивое и нетерпеливое (в хорошем смысле этих слов), то ему хочется как можно быстрее увидеть результат работы устройства, пусть даже промежуточный. И я все же решил разработать своё устройство таким образом, чтобы человек даже в самом начале процесса сборки, видел промежуточные результаты его работы.

    Теперь нужно было выбрать плату для реализации.

    Выбирал между Arduino на базе Atmega и STM.

    Я программист верхнего уровня, но по работе приходилось программировать микроконтроллеры семейства Atmega и MSP-430, с STM я не был знаком. Поэтому выбрал Atmega. Выбрал самую дешевую плату (или нет? просто они у меня были) Arduino Nano на базе микроконтроллера Atmega328.

    (зачеркнута функциональность, которая ещё не реализована)

    • плата Arduino Nano, процессор Atmega328;
    • 12 независимых каналов/портов Arduino, к которым подключаются устройства считывания;
    • каждый канал имеет свойства: Type (CLKin, DATAin, Ain, Bin и т.д.), EI (Enable Interrupt), IL (Interrupt Level), Inv (инвентированный сигнал);
    • максимальное количество подключаемых устройств: 6;
    • каждому устройству можно назначить один или более каналов из 12ти доступных;
    • поддержка протоколов: 24BIT, 21BIT, BCD7, BIN6, квадратурный сигнал, периодический сигнал с тахометра (есть возможность добавления новых протоколов);
    • консоль: позволяет при помощи терминальной программы конфигурировать и тестировать shDRO в процессе сборки и эксплуатации;
    • в режиме консоли, реализован «псевдо» логический анализатор, который позволяет считывать уровни заданных в консоли каналов и определить протокол обмена. Максимальное количество выборок 256, минимальное замеряемое время между выборками 8мкс. Хотя бы один анализируемый канал должен быть настроен на прерывание;

    Модульная схема:

    Устройство состоит из следующих модулей:

    • три стабилизатора напряжения 5в., 3в., 1.5.в. Стабилизаторы на 3в. и 1.5.в. регулируемые. Данные уровни напряжения используются в цифровых штангенциркулях (1.5в.) и в линейках iGAGING (3в.);
    • 4 восьмиразрядных семисегментных индикатора на основе MAX7219, подключенных каскадно к аппаратному SPI;
    • клавиатура. Клавиатура состоит из двух резистивных матриц: 2х4 и 4х4 в этом случае разводка дорожек на плате проще (но можно сделать две матрицы 3х4, кому как удобнее). Каждая матрица подключена к каналу ADC;

    Использование резистивных матриц для меня большой минус, т.к. со временем, сопротивление кнопок будет расти, и соответственно будут изменяться уровни напряжения, замеряемые ADC. Но на «честную» матрицу просто не хватило ножек/портов платы (для 24х кнопок нужно 10 портов). Исходя из этого, в прошивке реализована функциональность обучения клавиатуры, обучение можно сделать в любое время, и при этом не нужна связь с терминальной программой (про обучение будет написано ниже).

  • динамик, подключенный к аппаратной ножке таймера 1;
  • плата адаптеров, которые предназначены для согласования уровней между устройствами и портами Arduino;
  • 4 разъема DB9 female (по хорошему нужно ставить 6 разъемов, т.к. shDRO поддерживает до 6 устройств, но я не стал загромождать будущую заднюю панель корпуса, предполагая что три разъема будут использованы для осей, а один разъем будет расшарен между остальными устройствами). Разъемы самые простые, с ножками для пайки проводов. Провода в свою очередь распаиваются на плату адаптеров;

    Выбор такого типа разъема обусловлен следующими причинами: надежность (по сравнению с USB разъемами и RJ-45), большое количество выводов и легкость распайки. И так же у меня есть одна оптическая линейка с разъемом такого типа.

    Принципиальная схема:

    В следующей части я опишу логику работы shDRO, опишу доступные на данный момент команды консоли, и так же выложу первую версию прошивки.

    Источник

    Электронная линейка! на Arduino

    Просмотров: 40 675

    02 октября 2016

    JetMax

    Внимание ребята! Видео с заложенными ошибками, смотрите внимательно и проверяйте с правильным подключением.

    Dmitry Radchenko

    Вы сможите сделать на заказ счетчик нити(канатика) ? На нити метки через метр. Считывать надо будет на убавление и прибавление.

    Клайв Синклер

    джелектро линеджка :) правильнее было бы написать Electro Lineyka

    Дмитрий Костенко

    Спасибо за видео. Может кому то понадобится, вместо колесика использовал резистор, ничего не выводилось, пока не перекинул SCL на 5 пин.

    Вячеслав Большаков

    Помогите собрать контролёр рольганг на ардуино

    Виталий Чекрыгин

    хорошая идея, но у меня почему то не выходит. либо ардуино иде матерится на команду lcd begin. либо не компилируется для нано. замена библтотек вызывает одно из двух. что делать ума не приложу

    Сергей С

    Электронные линейки очень нужная вещь например для металлообрабатывающих станков, они конечно продаются готовые на али экспрессе но стоят от 14 тр . а если мне нужно такие на три станка то это уже приличная сумма выходит. Так вот проблема в том что я в электронике не бум бум, а те кто в ней соображают используют свои навыки в основном чтобы поиграться подобными вещами и не более.

    Николай Еськин

    Вот бы 0,01 мм считала. В машинной металлообработке это было бы полезно. А то надо штангенциркуль ломать.

    Сергей Штеменко

    Наверно Киевлянин. Мер Киева впуклостями прославился, это из второго тома ляпов.

    Источник

    Электронная линейка! на Arduino

    Zobrazit ovladače přehrávání

    • čas přidán 30. 09. 2016
    • Интересное занятие на вечер, создание простого измерительного инструмента.
      Группа ВКонтакте new. virf_live_productions
      Arduino Mini ali.pub/0ju1v
      Arduino Nano (Micro USB, ATmega328) ali.pub/prkz6
      Arduino Nano (MiniUSB, Atmega328) ali.pub/hrvdm
      Arduino Nano (Micro USB, ATmega168) ali.pub/ml67j
      Плата I2C — ali.pub/qhkus
      Дисплей HD44780 — ali.pub/y5bwm
      Беспаечная макетка на 830 точек ali.pub/hbksl
      Беспаечная макетка на 400 точек ali.pub/cyxot
      Беспаечная макетка на 170 точек ali.pub/92bgf
      Модуль питания для макетки ali.pub/4dcit
      Соединительные провода ali.pub/3c7xa
      Металлические контакты «мама» (BLS / BLD) ali.pub/2yxml
      Металлические контакты «папа» (BLS / BLD) ali.pub/1brcx
      Набор пластика для разъемов (BLS / BLD) ali.pub/dmn20
      Ссылка на скетч yadi.sk/d/LjwAwvKPw3S9f
      Библиотека LiquidCrystal_I2C — yadi.sk/d/udxiQTIsrHwBh
    • Věda a technologie

    Komentáře • 79

    Для нуждающихся на схеме для энкодера указаны пины А4 и А6, но было бы не плохо указать А4 и А5. И упомянуть, что не все адреса I2C одинаковые. У кого то может быть и 0x3F например. Но в целом — класс! Спасибо.

    Спасибо автору! Очень интересная сборочка

    Классно, иногда может быть очень полезно такое измерение!.)))

    Просто и интересно автор молоток не нудит и не мусолит в видео как некоторые все доходчиво по больше таких видосов

    РАЗВИТИЕ ПРЕДВЕЩАЕТСЯ! Великолепно! Сделай на этом другое устройство. Подключи шаговый двиг, сделай что бы с увеличением значений увеличивался скорость с уменьшением значений уменьшался скорость. Включи возможность регулировки диапазона скорости шаговика. Исключи отрицательные значения. Такое устройство нужна не только мне. Мой адрес: alesqosim@yandex.ru

    Отличный датчик для технологической лини где нужно считать длинну

    Спасибо! мне такой прибор нужен чтобы считать площадь стен в сложных помещениях

    Просто купи себе готовый прибор. хотя сомневаюсь,что это тебе нужно

    Добрый вечер,классная штука,у меня строительный магазин, в ассортименте много ковровых покрытий на стендах.Так,вот,идея такова,если бы сделать такую штуку с размеров с рулетку,чтобы было два ролика,чтобы можно было быстро и мобильно отмерять определенное количество метров.Заказать можно?

    прикольная штука респект автору лайк

    Круто, брат! Оооочень нужная вещь. Можно ставить на токарные станки. Но там нужны будут сотые доли. Спасибо! Есть ссылка на скечи?

    Вот бы 0,01 мм считала. В машинной металлообработке это было бы полезно. А то надо штангенциркуль ломать.

    Прототип на макетке — это, конечно, интересно.
    Но куда занятнее воплощение изделия в корпусе. Интереснее и труднее. Поэтому, на ютубе, свои ардуино проекты до конца доводят единицы.

    Спасибо за видео. Может кому то понадобится, вместо колесика использовал резистор, ничего не выводилось, пока не перекинул SCL на 5 пин.

    класс! Можно сделать на его основе счётчик для велосипеда!

    будут сложности с примайтстыриванием энкодера к колесу. Уж проще какой-нить датчик Холла коннектить на вилку. Ну или геркон на крайний случай, хотя наличие подвижной части(контакт) снизит надёжность.

    Супер. Красава. С меня подписка Мути ещё что нибудь. И да сделай кнопку чтоб память смотреть последних размеров

    Что нужно поменять в коде? Что бы он смог и в минус уходить

    отличная работа,забрал в закладки+подписка.

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

    Для точности на станке нужно искать линейный энкодер, с кольцевым хорошей точности добиться очень трудно будет.
    Настроить можно что угодно хоть полное управление компьютером (то есть cnc / чпу)

    А можно ли использовать датчик от лазерной мышки в данном устройстве вместо колесика?

    в любой мышке есть енкодер, используй его

    Здравствуйте!подскажите пожалуйста от какой мышки можно взять такое колесико?ну то есть с проводами

    Что нужно поменять в коде? Что бы он смог и в минус уходить

    Электронные линейки очень нужная вещь например для металлообрабатывающих станков, они конечно продаются готовые на али экспрессе но стоят от 14 тр . а если мне нужно такие на три станка то это уже приличная сумма выходит. Так вот проблема в том что я в электронике не бум бум, а те кто в ней соображают используют свои навыки в основном чтобы поиграться подобными вещами и не более.

    ВИДЕО просто в момент мне встретилась.
    ставлю ЛАЙК.
    А можно сделать так, чтобы было два энкодера и с двух энкодеров показания появлялись на экране с одного энкодера показания были на первой строке, а со второго на второй строке?
    Хотел сделать электронную координатную линейку в сотых долях миллиметра на токарный станок с помощью энкодера и ардуино.
    Для индикации положения продольной и поперечной подачи резца на одном экране.
    и на сколько точно и безошибок может работать сие устройство.

    Вы сможите сделать на заказ счетчик нити(канатика) ? На нити метки через метр. Считывать надо будет на убавление и прибавление.

    Цену деления до 1 мм можно сделать? И что нужно для этого, какой энкодер?

    Энкодер на малый шаг и приличную точность скорее всего будет нормально стоить (на халяву не представляю где можно скрутить) а так можно хоть линейки от станков подключить но цена кусается.

    А вот я хотел бы задать вопрос немного не по теме: «Есть ли не подпружиненные к центру джойстики для ардуино и если есть, то где достать их?»

    кстати да, интересный вопрос) я так понял вы хотите какой то пульт сделать?!) вроде как Гайвер делал пульт, он просто взял потенциометр)

    Этот вопрос набирает популярность)))
    Конкретно для ардуино не встречал но джойстики то все одинаковые,
    проще всего и дешевле купить на барахолке пульт от дешевой разбитой игрушки.

    я на что-то подобное сейчас собираю)) взял оптический энкодер на 1000имп\об и буду передавать положение суппорта станка в rs 485 modbus. заменяет уци стоимостью в 30-50к рублей)

    Илья Григорьев ссылку пжлст кинь на энкодер. Как кстати дела обстоят с проектом?

    Внимание ребята! Видео с заложенными ошибками, смотрите внимательно и проверяйте с правильным подключением.

    спасибо очень полезно оказалась штукенция (считает количество витков при намотке не транс) подскажите что дописать чтобы при нажатие на кнопку сбрасывалось на ноль ?

    Источник

  • Adblock
    detector