Измерительный пинцет DIY YCHEV001 на Arduino

Измерительные пинцеты FNIRSI LCR-ST1 и DIY YCHEV001

Сегодня мы с Вами соберём бюджетный вариант Китайского измерительного пинцета FNIRSI LCR-ST1.

В качестве базы я выбрал Arduino, так как целью проекта стало сделать схему, как можно проще, что бы повторяемость измерительного пинцета среди зрителей канала https://www.youtube.com/@chevichelov была на уровне “Контролька на Arduino”, по этому я упростил схему насколько это возможно, а в качестве измерительных алгоритмов выбрал самые простые, но в то же время самые надёжные из них. По предложению Хабралчан дал измерительному пинцету название YCHEV001.

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

Вес измерительного пинцета

Вес измерительного пинцета DIY YCHEV001

Вес DIY YCHEV001 составляет 80 грамм против 40 грамм FNIRSI LCR-ST1, причина этому проста, DIY проект имеет аккумулятор в три раза большей ёмкости и пластиковые прокладки, для лучшей изоляции компонентов от короткого замыкания, однако если использовать аккумулятор такой же ёмкости, как у FNIRSI, а пластиковую изоляцию заменить на термоскотч, можно добиться уменьшения габаритов измерительного пинцета и веса.

Режим авто и ориентация экрана:

Режим авто и ориентация экрана измерительного пинцета DIY YCHEV001

В режиме “Авто” пинцет может измерять сопротивление резисторов и ёмкость конденсаторов без переключения режимов измерения, при одинарном нажатии кнопки Hold (на схеме SB2) показания на приборе замораживаются, а при удержании кнопки Hold (на схеме SB2) изменяется ориентацию экрана, для удобства держания его в правой или левой руке.

Режим измерения сопротивления резисторов

Режим измерения сопротивления резисторов измерительного пинцета DIY YCHEV001

Диапазон измерения сопротивления резисторов составляет от 0 Ом, до 3МОм (ограничено программно, для борьбы против наводок)

Режим измерения ёмкости конденсаторов

Режим измерения ёмкости конденсатора измерительного пинцета DIY YCHEV001

Диапазон измерений в этом режиме составляет от 10 пФ до 10000 мкФ.

Режим измерения диодов

Режим измерения диодов измерительного пинцета DIY YCHEV001

В данном режиме мы можем посмотреть работоспособность, направление и падение напряжения на диоде.

Режим измерения напряжения

Режим измерения напряжения измерительного пинцета DIY YCHEV001

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

Режим осциллограф

Режим осциллограф измерительного пинцета DIY YCHEV001

Данный режим эволюционировал из проекта “Контролька на Arduino”, однако интерфейс был переделан, а алгоритмы подсчёта оптимизированы, теперь Вы сможете посмотреть на сам сигнал без лагов и тормозов графика, узнать минимальное и максимальное напряжение сигнала, а так же его частоту.

Режим измерения частоты сигнала

Режим измерения частоты сигнала измерительного пинцета DIY YCHEV001

Если Вы не хотите смотреть на сигнал, я вынес режим измерения частоты сигнала в отдельный режим.

Режим генератора частоты

Режим генератора частоты измерительного пинцета DIY YCHEV001

Иногда при работе с макетной платой не хватает генератора сигнала, поэтому я добавил его в измерительный пинцет, однако мои амбиции сделать так, чтобы можно было задавать любую частоту на пинцете, упёрлись в размеры скетча и ресурсы самой Arduino поэтому пришлось пойти по простому пути и задать частоту для генератора в массиве. Я выбрал популярные для Arduino частоты: 30Гц, 61Гц, 122Гц, 244Гц, 488Гц, 976Гц, 4000Гц, 7800Гц, 31400Гц, 62500Гц, 1000000Гц (Вы же можете изменить их в скетче на свои).

Схема измерительного пинцета DIY YCHEV001

Схема измерительного пинцета DIY YCHEV001

Схема измерительного пинцета невероятно проста, я представил её в двух видах: в классическом для данного канала схеме и в виде принципиальной схемы. Предлагаю в комментариях устроить голосование, напишите какая схема Вам больше нравится, какую их двух схем мне лучше использовать в будущих проектах? Пинцет состоит из Arduino Nano, обратите внимание, на плате требуется выпаять резистор светодиода L иначе кнопка SB3 не будет работать. Дисплея SSD1306, одного конденсатора на 100 нФ и 11 резисторов. Модуль TP4056 DIY Kit я вынес отдельно за схему, так как для контроля заряда-разряда аккумулятора Вы можете использовать любой контроллер. Однако данная плата способна выдавать 5 вольт, а АЦП Arduino Nano не может измерять напряжение выше напряжения АЦП, поэтому 5 вольт на входе Arduino Nano желательно.

SCL файлы и печатная плата измерительного пинцета DIY YCHEV001

SCL файлы измерительного пинцета DIY YCHEV001

Плата в Sprint-Layout измерительного пинцета DIY YCHEV001

Как всегда, я для Вас подготовил плату в Sprint-Layout и конвертировал её в PDF, что бы Вы смогли сразу распечатать шаблон и изготовить плату без дополнительных программ.

[Библиотеки и скетч]
Для скачивание не требуется регистрация или оплата, просто жмите на зелёную кнопку “CODE”, затем “Download ZIP”

[Детали]
SSD1306 https://aliexpress.ru/item/32896971385.html
Arduino Nano https://aliexpress.ru/item/1005002966043359.html
SMD Резисторы 1206 https://aliexpress.ru/item/1005002753179336.html
SMD Конденсаторы 1206 https://aliexpress.ru/item/1005006888588435.html

Спасибо, что дочитали статью до конца, внизу полная видео инструкция, если у Вас ещё остались вопросы:
https://youtu.be/co7q47WMKG8

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

1 лайк

Почему гайвер, а не AKA KASYAN? У ака я хотя бы смотрю обзоры на модули, а у гайвера только поливалку видел на attiny, повторил, а она не работает нормально.

Ну, Вы бы хоть смотрели на проект, который передираете, тут же ошибка на ошибке, ужас! Не стыдно такой выкладывать?

О чём хоть речь?

О “Вашем” коде, которыё лежит по приведённой ссылке на гитхабе. А Вы думали о чём?

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

Всё просто. если проект на основе чужого источник указывать надо. Если с нуля, авторский , не стесняться - якать… я то, я это, я тут, я там.

Нам всем много чего хотелось бы, только у Вас там очень много ошибок и выискивать их все … Пару-тройку, которые сразу в глаза бросились, я могу здесь показать, а рыться по всему коду и вылавливать всё, что найду в тысяче строк …, простите, но это работа – хотите мне её заказать, давайте обсудим условия.

Ну, а пока, для примера.

Ляп №1

Посмотрите на второй параметр функции drawBitmap в строке №273 файла MEASURING_TWEEZER_YCHEV001.ino. там выбирается какую иконку батарейки рисовать в зависимости от напряжения питания.
Ну, и что она у Вас нарисует, если напряжение питания, скажем, ровно четыре вольта? Я скопипастил Ваше условие, только заменил массивы иконок на текстовые слова и структуру TO. убрал, а так - в точности Ваше условие, проверьте:

void setup(){
	Serial.begin(9600);

	float DEFAULT_VOLT = 4;
	const char *batt = DEFAULT_VOLT > 4 ? "BATTERY_FULL" : DEFAULT_VOLT < 4 && DEFAULT_VOLT > 3 ? "BATTERY_MIDDLE" : DEFAULT_VOLT < 3 && DEFAULT_VOLT > 2.5 ? "BATTERY_LOW" : "BATTERY_EMPTY";
	Serial.println(batt);
 }       

void loop(){}
//
// Результат:
//
// BATTERY_EMPTY

Это точно то, чего Вы хотели?

Надеюсь, природа ляпа понятна? Объяснять не надо?

Ляп №2

См. строку №38 файла TO.h. Здесь Вы, совершенно на ровном месте, привезли себе в измерения систематическую погрешность ±10%. Причём, совершенно на ровном месте – ничто не предвещало беды.

Вы взяли и использовали голимую константу 1.1. А ведь, если открыть даташит, то легко выяснить, что величина 1.1 на самом деле гуляет от экземпляра МК к экземпляру от 1.0 до 1.2. Это и есть те самые ±10%, о которых я говорил. Т.е. совсем на ровном месте Вы сделали себе аж 10%-ую погрешность, хотя её совершенно нетрудно избежать.

Ну, хватит на пока. Так-то с первого беглого взгляда я вижу ещё с пяток ляпов, но судя по “общей грамотности кода”, там их не менее, чем по ляпу на каждые 10-20 строк.

const char *batt = DEFAULT_VOLT >= 4 ? "BATTERY_FULL" : DEFAULT_VOLT < 4 && DEFAULT_VOLT >= 3 ? "BATTERY_MIDDLE" : DEFAULT_VOLT < 3 && DEFAULT_VOLT >= 2.5 ? "BATTERY_LOW" : "BATTERY_EMPTY";

Ошибку понял, спасибо, насчёт:

Вы взяли и использовали голимую константу 1.1. А ведь, если открыть даташит, то легко выяснить, что величина 1.1 на самом деле гуляет от экземпляра МК к экземпляру от 1.0 до 1.2. Это и есть те самые ±10%, о которых я говорил. Т.е. совсем на ровном месте Вы сделали себе аж 10%-ую погрешность, хотя её совершенно нетрудно избежать.

Где об этом можно почитать подробно кроме даташита? Может есть статья которую Вы посоветуете?

Нигде. Именно в нем всё и написано.

Кстати, в ключевых словах указано UNO, в схеме - Nano. Но по фото - uno туда (в корпус) точно не влезет. Так что там за ардуина используется? И почему ключевое слово UNO?

Не нашёл в тегах Nano, как и Arduino, поменял на AVR

Да, хоть у Гэммона, начиная с заголовка “Detecting low voltage”.

Но лучше возьмите оригинальный код, с которого Вы это “сами писали”. Там остался комментарий из которого следует, что автор-то всё нормально делал. То ли Вы выкинули, то ли был ещё один “промежуточный автор”, вроде Вас. Но комментарий там правильный!

Добавь свой. Ты серьезно???!!

не благодари)

2 лайка

Зря ты так, он и потом не сможет. Будешь ему постоянно редактировать?))

да ладно, а то будет мучится, всю ночь не спать)
так я не понял, он сплагиатил это откуда то или с нуля сам все сделал?

Спасибо за интересную статью,

void setup ()
{
  ADMUX = bit (REFS0) | bit (REFS1);
}
void loop () { }

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

Это философский вопрос, еще в прошлой теме (вроде бы) обсуждали. Короче, смотря с какой стороны посмотреть и под каким углом. Если выбрать «правильный», то бесконечно будешь должен )))

А ты догадливый))