Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
![image](https://habrastorage.org/webt/d9/7b/4h/d97b4htc0q8si0hr27zn2vrppre.jpeg)
В первой части мы описали процесс разработки тестового варианта модуля подводного дальномера. Пришло время поделиться информацией о второй версии модуля, поскольку заявленные в первой статье предполагаемые изменения мы реализовали.
Изменение №1: Временная автоматическая регулировка усиления (ВАРУ).
В процессе тестирования первой версии модуля чётко вырисовывалась проблема зашкаливания отражённого сигнала от препятствий, находящихся близко к излучателю. Некоторые комментаторы к предыдущей заметке рекомендовали ВАРУ. Да, применение ВАРУ оказалось очень уместным. Теперь, в первые мгновения после посылки зондирующего импульса, есть возможность сделать коэффициент усиления минимальным и увеличивать его с течением времени.
Реализация ВАРУ показана на схеме №1.
ЦАП микроконтроллера генерирует напряжение, подающееся на затвор транзистора Q4.
Для применённого транзистора экспериментально получена характеристика вносимого затухания, в зависимости от напряжения на затворе. На основе этой характеристики, и указанной пользователем параметров среды, рассчитывается таблица значений, которая посредством DMA отправляется в ЦАП микроконтроллера.
Фактически, транзистор, работая в линейном режиме, частично замыкает полезный сигнал с выхода первого каскада усилителя на «землю», тем самым регулируя амплитуду сигнала, идущего в последующие каскады усилителя.
![image](https://habrastorage.org/webt/yx/vz/zp/yxvzzpgvi9eywsnkb-geehi9oi8.jpeg)
Изменение №2: Повышающий преобразователь для питания выходного каскада.
Схема №2. Тут всё просто. Повышающий преобразователь позволяет сделать наш излучатель чуть «громче». Можно регулировать напряжение питания выходного каскада с 5 до 16 Вольт. Полезная штука для дальних измерений.
Изменение №3: MEMS гироскоп/акселерометр.
Схема №3. Встроили микросхему ICM20602. Это позволит получать не только информацию об уровнях отражения от объектов на пути луча, но и направление (угол) куда в этот момент смотрит модуль. Сделав простейшую развёртку модуля (хоть покрутив модуль рукой) можно получить реалистичную картинку объекта сканирования по принципу формирования изображения лидаром.
К изменениям стоит ещё отнести применение более дешёвого, но не худшего усилителя MCP669-E/ML. Драйверы затворов тоже выбраны самые дешёвые из доступных TPS51604DSGR.
Форма печатных плат сделана круглой, для более рационального размещения внутри металлического корпуса.
Для компактности и постоянства характеристик от экземпляра к экземпляру, трансформатор изготавливается по планарной технологии.
Железо готово. Что дальше? Наступает звёздный час программистов!
Хоть основной низкоуровневый функционал уже проверен в работе (управление драйвером, работа с АЦП, ЦАП и т.п.), необходимо ещё реализовать удобное взаимодействие с хостом, создать и подробно описать API, дающий доступ ко всем возможностям модуля. Напомню, в качестве физического интерфейса для этих целей мы выбрали UART. И тут стоит упомянуть, что в команде появилось разногласие, на каком виде протокола стоит пока остановиться: на текстовом, или бинарном. С одной стороны, бинарный протокол – это быстродействие, простота обработки на стороне хоста. С другой стороны, текстовый протокол позволяет проще анализировать обмен данными (даже в «Гипертерминале»), и использовать осмысленные команды/ответы модуля. Вот небольшой пример взаимодействия с модулем используя текстовые команды в терминале Putty:
![image](https://habrastorage.org/webt/n8/r7/w0/n8r7w0oeu7ktm9fsixenvxnehh4.png)
По нажатию клавиши TAB выводится список всех команд.
Приведён пример использования команды YPR, которая возвращает текущее значение направления модуля по трём осям (углы Эйлера).
Команда CHART возвращает значение отражённого сигнала от объектов на пути зондирующего импульса. Можно задать дискретность измерения (пока в сантиметрах) и количество измерений.
Конечно, идеальный случай – поддержка обоих вариантов протокола, и текстового и бинарного. Но мы, к сожалению, во времени ограничены, и хотелось бы сразу направить усилия на более приемлемый для пользователей вариант. Отсюда скромная просьба: отметьте в голосовалке вариант, который был бы вам более удобен.
К следующей статье попытаемся задействовать весь функционал модуля, чтобы иметь возможность сканировать подводные объекты и получать картинку с очертаниями этих объектов.
P.S.
Мнения по поводу контента для второй статьи внутри коллектива разделились: сухо, немного, но сейчас, либо ёмко, красиво, но потом… «Сейчас» победило.
Сухость текста разбавлю немного фотками, которые делались в процессе изготовления второй версии модуля.
Сборка излучателей
![image](https://habrastorage.org/webt/bq/ys/_w/bqys_wbo6llkxofuhazh9p5e_fk.jpeg)
Обработанные металлические корпуса
![image](https://habrastorage.org/webt/cf/fu/rg/cffurgdkwliqlkkpt1uzjrqmbxg.jpeg)
Корпуса с нанесённой лазером маркировкой
![image](https://habrastorage.org/webt/4h/ad/wh/4hadwhlgc_fzieveuqwdcjwpvru.jpeg)
Сборка плат модулей
![image](https://habrastorage.org/webt/we/5n/ac/we5nacjpf_orb_ibfjlxft4ez6m.jpeg)
Сухость текста разбавлю немного фотками, которые делались в процессе изготовления второй версии модуля.
Сборка излучателей
![image](https://habrastorage.org/webt/bq/ys/_w/bqys_wbo6llkxofuhazh9p5e_fk.jpeg)
Обработанные металлические корпуса
![image](https://habrastorage.org/webt/cf/fu/rg/cffurgdkwliqlkkpt1uzjrqmbxg.jpeg)
Корпуса с нанесённой лазером маркировкой
![image](https://habrastorage.org/webt/4h/ad/wh/4hadwhlgc_fzieveuqwdcjwpvru.jpeg)
Сборка плат модулей
![image](https://habrastorage.org/webt/we/5n/ac/we5nacjpf_orb_ibfjlxft4ez6m.jpeg)