Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров18K
Дамы и господа, здравствуйте.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Характеристики shDRO:

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

  • плата 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, опишу доступные на данный момент команды консоли, и так же выложу первую версию прошивки.

Вторая часть.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 14: ↑14 и ↓0+14
Комментарии27

Публикации