Тестер на ардуино своими руками

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024


На AliExpress можно купить уже готовый тестер, выполненный по схеме Маркуса, или его клоны. Но это не интересно. Кроме того не думаю, что Китайцы подбирали резисторы с небольшим отклонением. Самому спаять куда интереснее.

Итак, возможности прибора:

Определение элемента с указанием порядка подключенных выводов.

  • NPN транзисторы
  • PNP транзисторы
  • N-канальные-обогащенные MOSFET - N-E-MOS
  • P-канальные-обогащенные MOSFET- P -E-MOS
  • N-канальные-обедненные MOSFET - N-D-MOS
  • P-канальные-обедненные MOSFET - P -D-MOS
  • N-канальные JFET
  • P-канальные JFET
  • Тиристоры
  • Симисторы
  • Диоды
  • Двухкатодные сборки диодов
  • Двуханодные сборки диодов
  • Два последовательно соединенных диода
  • Диоды симметричные
  • Резисторы
  • Конденсаторы
  • Индуктивности
  • H21e (коэффициент усиления по току) — диапазон до 10000
  • Обнаружение защитного диода в биполярных и MOSFET транзисторах
  • Прямое напряжение – Uf [mV]
  • Напряжение открытия (для MOSFET) — Vt [mV]
  • Емкость затвора (для MOSFET) — C= [nF]
  • Разрешение измерения сопротивления до 0.01 Ω, величина измерения - до 50 МΩ.(на экране отображаются 4 знака)
  • Измеряемая емкость конденсаторов 25pF - 10000uF.
  • ESR конденсатора измеряется с разрешением 0.01 Ω для конденсаторов ёмкостью более 0.18 uF
  • Для конденсаторов ёмкостью выше 5000 pF может быть определена потеря напряжения после воздействия импульса зарядки. Потеря напряжения дает оценку добротности (качества) конденсатора.
  • Стабилитроны могут быть определены, если их обратное напряжение пробоя ниже 4.5V.
  • Для резисторов сопротивлением ниже 2100 Ω измеряется индуктивность. Диапазон измерений от 0.01 mH до 20 H.

Официальный сайт с прошивкой, схемами, описанием.

  • Микроконтроллер ATMEGA328P-PU DIP-28 - 1 шт- куплен на Али за 90р;
  • Высокоточные резисторы на 680 Ом и 470кОм - 3 шт каждого номинала;
  • Кварц на 8 МГц;
  • LCD экран 2х16;
  • Остальную мелочевку найти легко.


Я собирал тестер по упрощенной схеме. Выкинул всю левую часть. Она отвечает за автоотключение-включение. Сначала схема была собрана на беспаечной макетке. Проверена работоспособность прошивки микроконтроллера. Тестер просто дико пи%дел был немного не точен. Иногда отказывался калиброваться. Я списал все на резисторы, которые воткнул нужного номинала, не подбирая одинаковое сопротивление. Потом выяснил первый косяк. На макетной плате почему-то было сильное падение напряжения питания. В точке подсоединения питания на макетку было 5,1В, а к противоположному концу макетки падало до 4,6В. Может в китайских макетках используют металл с большим сопротивлением. Решил проблему подключением питания параллельно к обеим сторонам макетки. Стало лучше. Остальное списал на резисторы. На Али купил по 100 резисторов номиналами 680 Ом и 470 кОм. От этих резисторов зависит точность измерения. У тестера есть режим самотестирования. В этом режиме тестер калибруется с учетом неточности этих резисторов, напряжения питания и сопротивления проводов, идущих к щупам. Мультиметром Agilent U1251B (внесен в Госреестр средств измерения и поверен) с погрешностью измерения сопротивления 0,08% выбрал наиболее подходящие резисторы. Из сотни резисторов оказались всего 3 одинаковых (в пределах точности прибора) сопротивлением 680 Ом и из другой сотни 4 резистора 470 кОм. остальные резисторы и конденсаторы измерял и наиболее подходящие использовал в схеме, хотя это не так важно. Желательно поточнее выбрать резисторы R11 и R12 (достаточно точности обычного мультиметра). На этих резисторах собран делитель для измерения напряжения на батарее питания. Внимательно отнеситесь к блокировочному конденсатору С4. Его наличие обязательно. В начале я его не припаял, подумал, что он не очень нужен, так как после стабилизатора L7805 стоит конденсатор на 47uF. Измерения были не точны. Погрешность была небольшой, порядка 3-5 Ом на 100 измеряемых. Вспомнив статью о полезности и необходимости блокировочных конденсаторов, которую читал полгодика назад, решил надо ставить. После подпайки конденсатора тестер стал показывать 100,1 Ом. Погрешность в 0,1% меня устраивает. Единственное, что осталось доделать по электрической части, - это установить кварц по частоте наиболее близкий к 8 МГц (пока точно частоту измерять нечем) и установить источник опорного напряжения на 27 ногу микроконтроллера. Без ИОН 27 ногу необходимо притянуть к VCC через резистор 47кОм. В этом случае тестер будет калиброваться относительно внутреннего ИОН 1,1В.

В конечном варианте схема собрана на плате для прототипирования. С печатной платой решил не заморачиваться. На плате распаян разъем ISP для программирования МК. Через него залил программу и данные EEPROM. Использовал программатор USBasp и программу для заливки SinaProg 2.1.1.


Бутерброд из платы и экрана


Плата с подключенным SPI

Запускаем программу SinaProg. Выставляем тип программатора и микроконтроллера и нажимаем Search. Если программа увидела МК в правой части будет написано AVR device initialized. Если напишет Error. ищите ошибку в подключении, распайке, драйверах.


Далее нажимаем кнопку Открыть файл, указываем на hex-файл прошивки и нажимаем Program в блоке Flash


Ждем пока зальется прошивка.


Далее снова нажимаем Открыть и выбираем eep-файл и жмем Program в блоке EEPROM


Теперь необходимо откалибровать тестер. Для этого нужно замкнуть все три вывода тестера. Тестер спросит о калибровке. Нажимаем кнопку. Запустится процесс калибровки. Когда тестер попросит, размыкаем выводы. Потом для калибровки попросит подключить между 1 и 3 выводом конденсатор емкостью от 100nF до 20uF. Калибровка на этом завершена.

Примеры работы тестера




Еще одного транзистора





конденсатора на 10000uF

Корпус уже заказан и находится во власти Почты России. Когда приедет не знает никто.

0

Очень хороший тестер. Многофункциональность делает его бесценным. Да и точность показаний, наверняка, не подводит. Здорово! А в корпусе будет прямо-таки супер-прибор!
Удачи в разработках!

Сегодня я бы хотел поговорить о тестере деталей на ардуино. Я сделал себе такой прибор и в принципе он меня устраивает хотя все равно, при прозвонке деталей, привирает показания. Но для меня это не совсем критично, мне главное знать маркировку. Что же, начинаю описание как и что я сделал.Прежде всего хочу обратить ваше внимание на то что в интернете предлагают схему на Ардуино Нано, у меня Нано на тот момент не было в наличии и я решил использовать Про-Мини, т.к. контроллеры в них стоят совершенно одинаковые. После продолжительных поисков я решил сделать вот такую схему:

Схема тестера на Ардуино

Схема тестера на Ардуино

Схема элементарная, прошивок в интернете вообще море и написано как прошивать, но прошивать именно Нано а не Про. Я сделал отдельно плату со всеми деталями, присоединил плату к индикатору 1602 и припаялся напрямую к выводам ардуино про-мини. Как оказалось позже надо было бы вставить в панельку и подгонять прошивку но я уже запаял и перепаивать что то дико ломает. Я же рассудил так- чем лучше контакт тем точнее показания. Вы можете развести плату самостоятельно, но я приведу и свой вариант Плата тестера , для тех кто захочет повторить мой проект. Прошивка тестера, которой прошил я свой аппарат, тоже можете скачать у меня. Теперь переходим непосредственно к прошивке контроллера. Для того чтобы прошить Ардуино Про-Мини я использовал Ардуино Уно в режиме программатора ISP. Для этого сделайте следующее: откройте консоль управления Ардуино, откройте следующий скетч:

Ардуино в режиме программатора ISP

Ардуино в режиме программатора ISP

Залейте его в Ардуино Уно. Теперь Уно является программатором для внешних устройств! Вставляем Про-Мини в макетную доску и подсоединяем к Уно таким образом:

UNO ProMini
+5v Vcc
GND GND
D10 RST
D11 D11
D12 D12
D13 D13

Китайская версияPro Mini

Китайская версияPro Mini

Официальная распиновка Pro Mini

Официальная распиновка Pro Mini

Вот такие танцы с бубном проделал я при сборке тестера Маркуса. Если кому помогла данная информация то я буду только рад. Спасибо за внимание.


Я уже неоднократно находил упоминания об использовании Ардуино в качестве измерителя параметров резисторов, конденсаторов и т.п. Но никак не решался подступиться к этому интересному вопросу. А тут случайно наткнулся на любопытный проект ArduTester . Задумка действительно достаточно интересная: универсальный тестер электронных компонентов, а именно резисторов, конденсаторов, индуктивности, транзисторов, диодов и т.д. Причем с автоопределением что за компонент подвергается тестированию и главное, как Вы его подключили к тестовой колодке. Вдобавок, автор трудится над некой десктопной версией универсальной базы, которая, получив результаты тестирования по СОМ-порту, сможет автоматически определять марку транзистора. Оригинальное описание автора:



Для повторения, из деталей нам понадобится:
— 3 резистора 680 Ом
— 3 резистора по 470kOm
— конденсатор 100nF (маркировка 104)
— кнопка
— кусок панельки для микросхемы (от нее откусить три контакта) — для колодки под тестируемые элементы
— полоски штырьков для стыковки с Ардуино

Резисторы я отбирал ОЧЕНЬ тщательно (по крайне мере, китайский, но не самый дешевый тестер на всех отобранных резисторах показывал одинаковые значения.). Из имеющихся на руках лент (по 10шт.) резисторов с большим трудом удалось выбрать по три одинаковых резистора :(


Запаял:


После компиляции и заливки скетча, в СОМ-порт выдаются следующие строки:



Вроде как все просто и лаконично. Вставляем тестируемый компонент в панельку (для двухвыводный элементов все равно в какие) и делаем короткое нажатие кнопки для запуска теста. Длительное нажатие кнопки выводит основное меню

Желающие попробовать/потестит/улучшить, могут взять все нужное для повторения тут .

А пока ниже приведу картинки моих измерений:

Пробуем биполярный транзистор А733

Тип определился верно, цоколевка — тоже определилась правильно. Коэффициент усиления — ну не знаю… Решил проверить обычным китайским тестером: получилось около 639… Кому верить.


Ставим полевик IRF640

Тип определился верно, цоколевка тоже. Про остальное не скажу :(


Резистор (судя по цветным полоскам — 100 Ом, тестер показывает 99.8 Ом):

А Ardutester полностью (причем многократно) утверждает, что около 40 Ом :)


Диод:

Схема включение (анод -катод) определил правильно, а вот значение Vf вызывает сомнения…

Очень часто, после проверки самопроизвольно переходит в свое основное меню… и далее только перезапуск Ардуино :(
Так, что вот такая игрушка :)

Когда речь заходит о создании аккумуляторных батарей, литий-ионные элементы являются, без сомнения, одними из самых лучших. Но если вы используете старые батареи, например, от старого ноутбука, то, возможно, захотите провести тест емкости перед сборкой батарейного блока.

Поэтому сегодня мы покажем вам, как сделать Li-ion измеритель емкости, используя микроконтроллер Ардуино.

Шаг 1. Всё, что нам нужно


Ниже перечислим комплектующие для проекта:

  1. PCB (печатная плата);
  2. Силовой резистор;
  3. Резистор 10К;
  4. OLED (светодиодный дисплей)
  5. Ардуино
  6. Зуммер
  7. Разъемы для подключения винтовых клемм
  8. 40-контактный разъем/коннектор (или меньше)
  9. Транзистор IRFZ44N

Шаг 2. Что такое емкость?




Прежде чем делать наш Ардуино тестер, мы должны немного разобраться в том, что такое емкость. Единица для емкости - мАч или Ач.

Если вы посмотрите на любую литий-ионную емкость (см. фото выше), то на неё будет упомянута ее емкость - на рисунке 2600 мАч.

В основном, это означает, что если мы подключим нагрузку на нее, которая составит 2.6A, эта батарея будет работать в течение часа. Точно так же, если у меня есть аккумулятор емкостью 1000 мАч и нагрузка 2A, то он длительность составит 30 минут. Примерно это означают мАч или Ач.

Шаг 3. Практически невозможно





Но вычисление таким образом практически невозможно, потому что все мы знаем V = IR. Первоначально, напряжение батареи будет 4,2 В, если мы будем поддерживать постоянное сопротивление, будет протекать некоторый ток, протекающий через нагрузку. Но с течением времени напряжение батареи будет уменьшаться, а также наш ток. Это сделает наши вычисления намного сложнее, чем ожидалось, потому что нам нужно будет измерить ток и время для каждого раза.

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

Шаг 4. Наша схема


У нас был SPI OLED, который валялся без дела, поэтому мы преобразовали его в I2C и использовали. Если вы хотите узнать, как преобразовать SPI в OLED, то мы обязательно это разберем в ближайших уроках.

Схему проекта смотрите выше. И вот как работает эта схема. Сначала Arduino измеряет падение напряжения, создаваемое резистором 10 Ом, если выше 4,3 В, тогда она отключит высокое напряжение дисплея MOSFET, если оно меньше 2,9 В, оно отображает низкое напряжение и выключает MOSFET, а если находится между 4,3 В и 2,9 В, то она включит MOSFET. Батарея начнет разряжаться через резистор, начнется измерение тока, используя закон Ома. Ардуино также использует функцию Миллиса для измерения времени, а произведение тока и времени дает нам пропускную способность.

Шаг 5. Скетч для Ардуино

Вы можете взять код или скачать его ниже:

Шаг 6. Финальный результат


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

После пайки, когда вы подключаете мощность, всё может работать не так, как ожидалось. Возможно, потому что мы забыли добавить, так называемые, Pull Up резисторы на интерфейсе шины I2C, поэтому мы вернулись к коду и использовали встроенные резисторы Ардуино.


Теперь Ардуино тестер литий-ионных батарей работает отлично.

Всем привет! Сегодня на обзоре самодельный тестер радиодеталей на базе arduino mini pro.

Тестер так же имеет клещи токовые, авометр, тестер ТСМ датчиков, тест термопар, омметр и все это в одном флаконе! На базе одной arduino! .


Сообщество Ремонтёров

6.2K поста 35.9K подписчиков

Правила сообщества

ЕСЛИ НЕ ХОТИТЕ, ЧТОБЫ ВАС ЗАМИНУСИЛИ НЕ ПУБЛИКУЙТЕ В ЭТОМ СООБЩЕСТВЕ ПРОСЬБЫ О ПОМОЩИ В РЕМОНТЕ, ДЛЯ ЭТОГО ЕСТЬ ВТОРОЕ СООБЩЕСТВО:

К публикации допускаются только тематические статьи с тегом "Ремонт техники".

В сообществе строго запрещено и карается баном всего две вещи:

В остальном действуют базовые правила Пикабу.

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

Видео. Странно представить, что человек, способный выполнить такую кропотливую работу снял видео, а не написал ворклог.

>Радиодиталей

Интересный вы человек, давно таких не "слышал" . Но при всем уважении, мерять сопротивление между руками, давно отучился от этого.

Вопрос точности.. я свой юнит хрен на что поменяю, цена 20 баксов у китайцев, погрешности от 0.01 до 1%, что было подтверждено на поверке на заводе. одно в нем хреново, самовыключающаяся подсветка экрана, хочу доработать, да руки никак не доходят..

Вторая жизнь старому стрелочному мультиметру

Бывает, что у радиолюбителей есть старый стрелочный мультиметр советских времен, лежит где-то далеко на полке. По прямому назначению его уже использовать не хочется, а выкинуть жалко. Так и лежит. В этой статье мы сделаем его модернизацию, а именно – добавим USB, для возможности анализа данных и построения графиков.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Выбираем провод с более резким наклоном прямой. В моем случае получилось что при максимальном отклонении стрелки напряжение равно 96,4 мВ. Для оцифровки микроконтроллером мало, но ничего страшного, это напряжение можно усилить операционным усилителем. Подойдет любой ОУ, я взял LM2904, просто потому что у меня такой был. Смотрим документ на микросхему – два ОУ в одном корпусе, максимальное выходное напряжение Vcc-1.5v. Запитывать будем от 3.3 вольт, значит надо подобрать коэффициенты усиления так, чтобы при зашкаливающей стрелке ОУ выдавал максимально возможное напряжение.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

На борту у нее микроконтроллер STM32F103C8T6. Есть АЦП и USB. Подходит. Для первоначальной настройки предлагаю воспользоваться STM32CubeMX. Включаем тактирование, настраиваем кварцевые резонаторы.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Включаем и настраиваем АЦП, не забываем про прерывание по готовности.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

АЦП будет запускаться по событию таймера, настраиваем таймер.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Таймер тактируется частотой 48 МГц, с предделителем 24 и периодом 2000 получится, что он будет запускать АЦП каждую 1 мс. В принципе так часто нет смысла, но мы будем использовать усреднение значений, поэтому пусть будет. Включаем USB, выбираем Custom HID.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

/* USER CODE BEGIN PV */

volatile uint16_t x;

/* USER CODE END PV */

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

В прерывании прибавляем к переменной значение с АЦП и увеличиваем счетчик. Когда счетчик достигнет 200, усредняем значение и перекладываем в буфер для отправки по USB. Поднимем флаг, что пора отправлять.

/* USER CODE BEGIN 4 */

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)

adc_sum+=HAL_ADC_GetValue(hadc);

adc_counter++;

HAL_GPIO_TogglePin(LD_1_GPIO_Port,LD_1_Pin);

adc_to_send=adc_sum/ADC_MAX_CONVERSATIONS;

adc_counter=0;

/* USER CODE END 4 */

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

/* USER CODE BEGIN WHILE */

// HAL_GPIO_TogglePin(LD_1_GPIO_Port,LD_1_Pin);

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

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

0x07, /* bLength: Endpoint Descriptor size */

USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: */

CUSTOM_HID_EPOUT_ADDR, /*bEndpointAddress: Endpoint Address (OUT)*/

0x03, /* bmAttributes: Interrupt endpoint */

CUSTOM_HID_EPOUT_SIZE, /* wMaxPacketSize: 2 Bytes max */

0x20, /* bInterval: Polling Interval (20 ms) */

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Тут мы говорим, что наше устройство сообщает температуру в комнате (Usage). Report Size=8 и Report Count=4 означают, что 32 бита посылается от устройства к компьютеру (Input) и столько же от компьютера к устройству (Output). Нам из этого всего понадобится только 2 байта, остальное на будущее. Сохраняем как заголовочный файл, и копируем в наш код (куб там оставил место в файле usbd_custom_hid_if.c). Так же надо проверить соответствие размеров репорт дескриптора 35 байт и размер буфера под отправку (тут должно быть 5 байт, потому что мы еще указали Report ID – это еще 1 байт в самом начале). Прошьем и проверим, что устройство правильно определилось в системе.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

/* USER CODE BEGIN 7 */

* @brief Send the report to the Host

* @Param report: The report to be sent

* @Param len: The report length

* @retval USBD_OK if all operations are OK else USBD_FAIL

static uint8_t USBD_CUSTOM_HID_SendReport_FS(uint8_t *report, uint16_t len)

return USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, report, len);

uint8_t USB_Send_report(uint16_t data)

Rep_buffer[0]=0x01;//report id

Rep_buffer[1]=data>>8;

Rep_buffer[2]=data;

Rep_buffer[3]=0xFF;

Rep_buffer[4]=0xFF;

return USBD_CUSTOM_HID_SendReport_FS(Rep_buffer,5);

/* USER CODE END 7 */

Проверяем в какой-нибудь утилитке что пакеты действительно идут.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

function TUSBMeter.HidControllerEnumerate(HidDev: TJvHidDevice; const Idx: Integer): Boolean;

if (IntToHex(HidDev.Attributes.VendorID,4)=VID)and

(IntToHex(HidDev.Attributes.ProductID,4)=PID) then

if (HidDev.Caps.OutputReportByteLength=OUT_REPORT_COUNT_AMPERAGE) then

Result := True;

procedure TUSBMeter.HidControllerDeviceData(HidDev: TJvHidDevice; ReportID: Byte; const Data: Pointer; Size: Word);

if (IntToHex(HidDev.Attributes.VendorID,4)<>VID)or((IntToHex(HidDev.Attributes.ProductID,4)<>PID)) then exit;

buf:=Data; // rep

adc_abs:= adc_abs shl 8;

adc_abs:=adc_abs+(buf^);

Теперь надо сделать пересчет, добавим на форму RadioGroup и настроим как на переключателе мультиметра. Я не стал добавлять шкалу сопротивлений, не нужна.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Заведем так же масштабирующий массив для пересчета и массив с единицами измерений.

scale_arr: array[1..18] of real = (600,300,150,60,30,15,6,3,0.75,1500,300,60,15,3,0.6,0.12,0.000012,1);

procedure TMainForm.HID_Callback;

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Большая часть готова, теперь надо прикрутить запись в файл, страницу настроек с сохранением и красивый GUI. Формат файла я взял CSV, так как из него будет легко строить графики в Экселе.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Все, готово. Осталось собрать все в корпус мультиметра, свободного места там полно. Прорезать отверстие под USB шнурок и убрать обратно на самую дальнюю полку до тех пор, пока не понадобится снять долгий график разряда аккумулятора или график потребления тока каким-нибудь устройством.

Читайте также: