[recovery mode] Проект электронного мультитула QUARK
Еще в 2018 наткнулся на довольно известный в своих кругах проект Пультоскоп. Если кратко, то это крайне примитивный осциллограф, построенный на arduino 328 серии. Учитывая его простоту, я его повторил за несколько часов на макетке и тут меня понесло… Но обо всем по порядку.
Итак. Повторенное устройство оказалось настолько нужным и удобным, что сама-собой возникла идея дополнить его базовыми функциями мультиметра, в том числе измеритель емкости конденсаторов и индуктивности катушек. В результате я начал работу над созданием идеального «под себя» устройства. Эмпирически прикинув функционал, который так или иначе задействую при проектировании своих устройств, я исключил ненужные мне функции и определил обязательные. В первую очередь, исходил из того, что в большинстве своем я не использую напряжения свыше 24 вольт и токи свыше 3 ампер. Обычно это низковольтное оборудование, IoT, ESP32, arduino и схожие по идеологии устройства. Соответственно и при измерении сопротивлений, емкостей и индуктивностей важна не столько точность, сколько понимание номинала и, желательно, автоматическое определение цветовой и кодовой маркировки. Обычно измерение этих параметров требуется при проектировании питающих схем устройств. Обязательна хотя бы минимальная проверка наличия данных на порту UART, а в идеале и их чтение. Здесь же я стал размышлять над формфактором устройства.
Собственно список того, к чему я пришел в итоге:
Вольтметр с точностью измерения не выше 0.01 вольта. Обычно достаточно даже десятых долей. При этом, обязательно необходимо отображение значений логических уровней для CMOS1.8, TTL и CMOS5.0 вольт.
Амперметр до 3 ампер с возможностью отображать график изменения значений.
Измерение номиналов пассивных элементов. Одна из наиболее необходимых для меня вещей, оказалась возможность на лету отображать цветовую и SMD маркировку деталей. То же самое при измерении индуктивности и емкости, за исключением цветовой маркировки. Разумеется автовыбор диапазонов.
Осциллограф обязателен. Как правило используется для измерения ШИМ сигналов, при проектировании питающих частей схем и при работе с данными для АЦП/ЦАП. Частоты как правило не выше 100кГц. Желательно что бы устройство само определяло триггер и настраивало масштаб графика.
UART логгер с автоопределением скорости.
Формфактор пробника. В одной руке устройство, в другой щуп. Вывод данных на цветной дисплей. Переключение режимов одним пальцем. Возможность подключения к смартфону.
Это обязательные ключевые особенности. Идеальный сценарий работы, как я это видел у себя в голове, примерно такой:
В одной руке щуп, в другой устройство, бегло пробегая по схеме, и выбирая одним пальцем режим работы, я тыкаю куда попало надо и снимаю нужный параметр.
Звучит слишком идеально, но это хотя бы обозначенная цель.
ПРОЕКТИРОВАНИЕ
После того как с функциями устройства стало более-менее понятно, я сосредоточился на его внешнем виде. Буквально брал в руки модельный пластилин и лепил то, что должно удобно лежать в руке, отображать информацию и при этом легко управляться. В результате я пришел к такому дизайну:
Это рендер. Первая игла щупа торчит из кончика корпуса, второй щуп втыкается в «попку» — любой подходящий с бананом.
Что касается железной части, то здесь пришлось сильно поломать голову. Первые версии были построены на ATMEGA32U4. Его выбрал из-за в встроенного USB и достаточной скорости. Но самым главным критерием была arduino совместимость. Я принципиально хотел использовать платформу arduino, поскольку сразу зародилась мысль выложить ПО в открытый доступ и при этом оно должно было быть понятным ардуинщику. В качестве датчика тока решил использовать ACS712. Остальное на резистивных делителях, там ничего интересного.
Одна из последних тестовых версий плат, собранных на коленке:
В правом нижнем углу видна микрорелешка, которая замыкает щупы между собой через датчик тока.
А это уже первый заводской прототип:
Виден не распаянный в верхней части блютуз модуль JDY-08. Использовал его потому, что был. В качестве встроенного зонда, использовал иглы для тестирования плат методом летающего щупа. Сам зонд выглядит так:
Игла немного подпружинена и не дает поцарапать медь или лак на плате.
Косяков было не так много, все довольно легко смог исправить кинув «соплю», но пришлось отложить проектирование из-за нехватки времени. Собственно это позитивно сказалось на проекте, поскольку удалось много поработать с ESP32, на него я и перевел устройство. Попутно заменил старый, 0,96 дюймовый дисплей с разрешением 80×160, на 1,14 дюймовую матрицу 135×240 пикселей.
Должен сказать, что я не сторонник сенсорных кнопок, и в первой версии устройства у меня были физически нажимаемые 3 кнопки, но пришлось себе изменить. Шутки ради собрал прототип с 3-х контактным сенсорным интерфейсом и воткнул его в отпечатанный на 3D принтере корпус. Оказалось, что проще и быстрее не искать пальцем нужную кнопку, а банальными свайпами переходить в нужный режим. Сразу возник соблазн использовать встроенные в ESP32 пины емкостного сенсора, однако их чувствительности оказалось недостаточно для работы в корпусе. Потому пришлось перейти на использование букашек от ttp223. Из-за катастрофической нехватки пинов, три сенсора я подключил через резистивный делитель на один аналоговый вход. Еще один пришлось вешать на отдельный пин для реализации выхода из сна по прерыванию. С аналоговым входом, на котором висят 3 сенсора возникла неожиданная проблема. Оказалось, что при включении режима bluetooth или WiFi, некоторые пины не могут читать аналоговые данные. На практике, при подключении к смартфону, устройство просто переставало реагировать на сенсоры. И все бы ничего если бы я хотя бы мог переразвести, но функции были раскиданы по пинам с учетом их специфики, и получалось, что любой пин к которому можно подключить сенсоры, оказывался именно тем, который не мог работать при включении радиомодуля. Но интернеты, таки помогли.
Немного пораскинув мозгами, пришел к выводу, что вместо ACS712, лучше использовать INA219. Во-первых управление по I2С, во-вторых возможность измерять напряжение до 26 вольт. При измерении сопротивления, обычно используют коммутируемые резистивные делители для разных диапазонов, эта же функция необходима при измерении ёмкости конденсаторов. Вариант использовать ограниченное число пинов для коммутации резисторов такой себе, вместо этого я поставил цифровой потенциометр на 100К AD5245. Таких в устройстве два. Второй регулирует чувствительность ОУ на входе. Второй щуп перенес в разъем для зарядки TYPE-C и несколько видоизменил корпус.
Внеся все эти изменения я заказываю плату на JLCPCB и сходу понимаю, что уже есть косяки. Но не смертельно. Вот что у меня получилось на этом этапе:
Ниже небольшой видеообзор:
Тут важно понимать, что этот прибор даже не пытается претендовать на высокую точность измерений. Речь идет о тех параметрах, которые минимально необходимы без упрощения до уровня пробника. Для меня здесь принципиальна простота и возможность кастомизации на уже готовом железе. Даже приложение для смартфона я собрал в App Inventor.
На сегодняшний день, у меня написан основной базис ПО. Пришлось повозиться с корпусом, зато смог максимально удешевить стоимость пресс-формы. Для понимания порядка цен, стоимость матрицы $5600, ресурс 300к отливок. Стоимость 1 отливки, включая заглушку на дисплей и подсветку рабочей зоны $1,53. Размеры ~120×22 мм. Корпус цельнолитой из ABS с SoftTouch покрытием.
Но даже это для меня довольно дорого. возможно попробую обратиться к краудфандингу. Если тема будет интересна, готов периодически выкладывать статьи.