В этом видео я покажу свой вариант исполнения Вольтметра на Arduino и расскажу, как можно повысить точность показаний Ссылка на архив проекта (скетч, схема, библиотека, файл Excel для калибровки): drive.google.c...
Проделанная работа и видео с пояснениями просто золото. Чётко ясно, без лишнего шума и пыли. Спасибо, буду повторять ваш вольтметр, а затем попробую увеличить, коммутацией аналоговыми ключами, количество каналов и если хватит задора и времени... Пока стоп, сделать бы сперва это.
То что мне нужно. Как хорошо что я вас нашел) Сейчас сам столкнулся с АЦП, и правда- мало инфы в сети про необходимость калибровки. И внутренний источник плавает как гумно в проруби. Оказалось что АЦП не так прост как его рисуют. Вообщем огромное спасибо за видео! Лайк!!! Подписка!
Привет, спасибо за видео. 13:00 почитай про интерполяцию (формулой ньютона или многочленом лагранджа), так ты сможешь сильно повысить точность вольтметра, на худой конец можно линейно интерполировать, а то у тебя в текущей реализации будет скачек на границе точек измерения. В электронике я не силён, но, насколько мне известно, вольтметр должен обладать как можно большим сопротивлением между щупами, так что возможно тут стоило бы применять схемы на операционных усилителях, компараторах ну и всего такого, а то схема с делителем будет сильно влиять на измеряемую схему.
Все так и есть автор однозначно прав только подстовляя опредиленные значения можно добится точных покозаний особенно косается на низких приделах измерения
хм. я делал вольтметр, применяя внутреннее опорное напряжение ардуины с делителем для измерения напряжения до 12.5 вольт, подгоняя коэффициент к значению измеренному мультиметром на одном напряжении, и весь диапазон измеряемых напряжений сразу был абсолютно линейным и совпадал с мультиметром до сотой доли. От постоянных скачков напряжения +/- 0.05 поборолся простейшим способом: проходил циклом в 100 итераций измерения с аналогового входа и получал арифметическое среднее, результат получился просто идеальный, скачки стали +/-0.01 вольт раз в несколько секунд.
Читайте даташит,там написано,что выходное сопротивление источника должно быть не выше 10ком. А вы резисторы по 300ком изначально ставили. Можно,но тогда нужен буферный усилитель. И АЦП Меги врёт в 2х младших разрядах,поэтому,как вы не изгаляйтесь,точных измерений вы не получите с ней без внешнего ацп
Прикольно. В экселе можно было вывести график функций на основе замеренного напряжения вольтметром и значений ацп. Например, линейный y= a*x+b. Где x- ацп, а и б аргументы уравнения. y - напряжение. если график зависимости не на всем протяжении имеет линейный вид то можно его разделить на линейную и логарифмическую часть, где переход расчета будет осуществляться по пороговому значению ацп. Жаль графика зависимости не привел. Есть еще несколько "хитрых" манипуляций... Если заинтересует пиши
Приветствую! Вариант с графиком пробовал. Думал даже уравнение в код подставить. Зависимость в графике нелинейная получилась, подходящее уравнение подобрать мне не удалось. Пришел к выводу, что проще 5-10 интервалов вручную прописать.
@@eandv-diy1631 таким способом плюс использование наборов фильтров. Получилось добиться от термистора чувствительности и стабильности на уровне дс18б20
Со средним можно было сделать проще: double avg = 0; for (int i = 0; i < 50; i++) { avg += measurement_code_here; } avg /= 50; занимает меньше памяти и является более оптимальным
Прикольно, примерно то же самое делал код да же похожий. Только одно но. Надо было 5 устройств так вот у пяти ардуинок чутка разные коэфиценты пришлось подюирать. То чувство что нашел кривой костыль. Потом с ИНКОЙ заморочился, там вроде всё нормально.
Классное видео👍 сейчас тоже голову ламаю с лаболаторником на Ардуино,с этими погрешностями по напряжение особенно в обратной связи я правдо это делаю в flproge хотя там и есть блоки моштабирования,деления итд.но тоже геморрой уже неделю мучаюсь.спасибо за паучающее о
@@eandv-diy1631 спасибо паучительные видео особенно про aref да разных пределах измерения есть погрешности по напряжению,с амперметром почему-то по проще
Я уже написал в теме Касьяна: Нелинейность без проблем убирается корректировкой многочленом, полученным при помощи параболической регресии (например). Сравнивается с эталонным вольтметром, снимается несколько пар точек (я делал 10 пар), загоняется в программу, получаем коэффициенты корректирующего квадратного трехчлена. Есть даже онлайн сервис для этого дела. Я таким образом получил все верные 4 знака, то есть все показания Arduino 100% совпадают с показаниями цифрового вольтметра. И не требуется никаких if-ов, никакой кропотливой ручной подгонки, все делается чисто механически.
У большинства людей, которые из математики в повседневной жизни используют только сложение, вычитание умножение и деление (как например я) после фразы "корректировкой многочленом, полученным при помощи параболической регрессии" мозг взрывается моментально. Лично мне проще 10 строчек с If-ами написать, чем во всём этом разбираться. Возможно всё это конечно от моей лени и нежелания развиваться и копать глубоко, но скорее всего я не один такой.
Классное видео, я шёл примерно по тому же пути, и столкнулся с ещё одним нюансом, это влияние внешней температуры на изменение параметров резисторов делителя и т.д., и при большом разбросе температуры окружающей среды это влияние может быть довольно ощутимо, например производить измерения зимой на улице или летом или в помещении. А у вас как в этом отношении?
А зачем такая сложность с подбором расчетных номиналов резисторов и разбивание на диапазоны ваши данные Vправильное и Value для расширенной выборки можно хорошо аппроксимировать уравнением Y=k*x+b V=0.052*Value+0.129 имеет среднее отклонение 0,0059 а максимальное 0,047 Делается это в том же Excel через построение графика с последующим построением линии тренда
Математика ещё со школы была всегда против меня) А если серьезно, этим путем тоже пробовал идти, адекватное уравнение не смог подобрать, наиболее близкое только где-то на 60% совпадало с линией тренда. Разбить на 8-10 диапазонов в коде и подставлять нужные значения оказалось гораздо проще для меня.
@@eandv-diy1631 я баловался с ним, весьма любопытно, достаточно точно. Цена вопроса 80 ,руб. Измеряет как вольты, так и амперы, правда не более 3х ампер. В интернете полно статей как измерить ток более 3 ампер на данном модуле. Рекомендую Вам! С Вашим подходом к делу на данном модуле можно получить весьма точный прибор!!!
Спасибо! А что если нужно собрать ардуино с 30ю вольтметрами? Это реально? Можно ли использовать цифровые каналы ардуино? Есть ли в природе аналого-цифровые преобразователи? Какой процессор для ардуино можно использовать если нужно иметь 30 аналоговых входов?
Есть модули расширители количества портов, работают через I2c. Для цифровых точно есть, на счет аналоговых, нужно смотреть. На счет 30 вольтметров есть сомнения по скорости обработки данных. Если применять всякие усреднения цифровые калибровки, показанные в видео, то на 30 вольтметрах тормозить будет дико.
В Ардуино Нано 8 Аналоговых портов, поэтому по такой схеме максимум 8 каналов. На Ардуина Мега 15 таких портов. Но при большом числе каналов скорее всего код будет тормозить, если данное решение использовать. При 5 каналах уже задержки есть. Я бы думал в сторону другого решения, например внешние модули АЦП подключаемые через I to C, либо внешние модули серии INA
@@eandv-diy1631 а можно сделать так, чтоб ардуина последовательно измерила все 14 каналов и выдала информацию в текстовый файл или по bluetooth на телефон ?
@@GamerDolphin она и так все порты измеряет последовательно, только очень быстро. По блютус передавать может, для этого нужен отдельный модуль. Насчет текстового файла не в курсе
человек костыль. попробуй использовать епром и отправку через порт точных данных с мультиметра. у тебя достаточно мощный камень а ты какую дич в Эксель делаешь. смотри шире на проект
Мне для моего проекта нужен был 3х канальный вольтметр измеряющий напряжение до 20В. Зачем мне что-то передавать с мультиметра? У меня нет 3х лишних мультиметров. Мультиметр у меня для других целей.
@@eandv-diy1631 ты можешь передать через компор коофециенты которые бы выравнивали значение в определенных диапазонах. опираясь на реальный мульти метор, затем мк вложил их в епром и ты получаешь очень гибкую систему, в любое время скорректировать кофи. если что-то со временем по плывет. а сейчас что бы сделать корректировки надо танцевать с таблицами и снова заливать прошивку.
@@Mark_Familiy_Titan Не знаю... уже год прошёл как всё собрал, один раз настроил и ничего не плывёт, всё нормально работает. Может где-то и имеет смысл постоянная синхронизация, но тут явно не тот случай.
мля., а че так сложно? у тебя же есть микроконтролер!!! и пофиг вообще какие там резисторы.... берем показания с пина и преобразовуем в напряжение напрямую, одной формулой и фсе!!!
Все каменты к видосу не читал и Си лишь читаю со словарём, но: 0. "Библиотеки" - это просто и быстро, но НЕ спортивно, НЕ обучательно ибо НЕ понятно как оно работает = "танцы с бубном" как метод пытаться устранить недостатки псевдослучайного подёргивания органов управления конструёвиной (превращение программиста в эникейщика). Результат - НЕ воспроизводим весьма часто, ибо причинно-следственные связи при таком методе устранения неполадок НЕ нарабатываются, модель реальности НЕ совершенствуется.. 1. Какого хрена на 8 бит мелкопроце используется float вместо Int32 например ? Или фиксированная точка не поддерживается адуриной ? 2. В любом случае (даже если тип данных float) полезно вначале всё умножать, а потом 1 раз делить. Первичные преобразования дробей тем более полезны (там в коде мне показалось что в знаменателе дроби есть дробь, при упрощении её знаменатель должен переехать в числитель). Разрывность показометра (грануляция) при таком порядке вычислений станет наименьшей (50/1024 вольта). Хотя согласен - на видосе ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-ObCJVW7M84c.html грануляция и так близка к 50/1024 = 0,0488 вольта. Младший разряд АЦП всегда будет плясать. 3. Про использование питания как ИОН - странно что это вызвало вопросы. Кроме метода использовать ИОН меньше напруги питания (увеличивает шумы) - чисто теоретически можно делать в 2 этапа (злоупотребить простотой написания мат формул на Си ) - используя внутренний ИОН измерить напругу питания, потом исходя из его значения измерить искомую величину, используя питание как ИОН. В любом случае в коде на экране НЕ хвататет компенсатора погрешности резисторов делителя и выходное сопротивление резистора слишком велико (рекомендация для АЦП в микрочипе ~1 КОм максимум сопротивление источника сигнала) 4. Про оверсэмплинг - ну, почему бы его не сделать ? Или библиотека не позволяет, а самому лень - ибо изначально при использовании библиотеки было сэкономлено время на изучении АЦП как такового ? Прощу прощения, но дальше 5:13 стало не интересно глядеть. Там есть работа над ошибками ?
Приветствую! По поводу библиотек: используются только библиотеки для управления дисплеем, других нет. Вы мне их предлагаете заново с нуля написать? Смысл? И после фразы: "Прощу прощения, но дальше 5:13 стало не интересно глядеть" - лично у меня пропало желание в какую-либо дискуссию с Вами вступать, если Вы посмотрели только 1/3 видео и уже пишете гневный комментарий.
@@eandv-diy1631 Неужели гневный ? Я просто поглядел 5 минут и спросил - есть ли смысл глядеть ещё 10 ? Про библиотеки - не только ЛЦД, но и арифметика с плавающей точкой - они чужие. Смысл их писать ? Для быстрой самоделки "сделал и забыл" - его реально нет. Для самообразования - он возможно и есть. Для любых применений на грани производиловки мелкопроца - он есть однозначно. А желание дискутировать - оно преходяще, согласен. Не с каждым интересно. И да, читать/писать лично меня научили существенно быстрее чем глядеть видос. Так что печатный текст для лично меня - меньшая трата времени и лучшее осмысление.