Очень точный вольтметр на arduino

mikelari
Offline
Зарегистрирован: 14.05.2015

Похожих тем много, но у меня возникла необходимость измерять постоянное напряжение с высокой точностью. Имеющийся Fluke 17B меня не устраивал, нужный мне прибор стоит дорого. Поэтому покопал интернет и сделал свой. Корпус от китайца. Индикатор 16х2 I2C. Дуина Nano V3. И главная деталь "автомобиля" - 24 битный АЦП с хорошим источником опорного напряжения на борту, куплен с ebay. Название модуля LTC2400 24bit analog to digital converter ADC module temp sensor SPI AVR arduino. Стоимость тысяча рублей. Кому интересны весьма приличные характеристики этого модуля, поиском на ebay, и внизу в описании товара есть ссылка на документацию. Получился вольметр с одним диапазоном измерения от 0 до 17 вольт. При постройке прибора потребовался более менее хороший источник опорного напряжения желательно с невысокой ценой (1000 руб) , и он был найден и куплен там же на ebay. Имеет четыре переключаемых опорных напряжения. Купленый источник опорного напряжения и мой вольтметр были проверены на служебных Fluke с ценниками от самолетов. Я остался доволен. Пять знаков после запятой совпадают. Шестой знак я программно убрал, из за неверного  его измерения связанного с паразитной емкостью измерительного канала. Написание софта не представит сложности для начинающего ардуинщика.

Так выглядит вольтметр.

Вид вольтметра

Замер напряжения на Li-Pol аккуме.

Так выглядит АЦП 24 бит с опорником.

Это китайский источник опорного напряжения на 2.5  5.0  7.5 10.0 вольт. Удобен для настройки всякой всячины.

На тыльной стороне китайца напряжения измерянные на заводе изготовителе.

Ну и конечно же данные можно передавать в компьютер по USB.

Если кому будет полезен мой опыт, то удачных проектов!

 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

если не секрет зачем такая высокая точность? что за прибор такой

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

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

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Тоже уже давно вынашиваю идею подобного девайса, но пока что всё ещё балуюсь:

0..3.3000 В, но всё это несерьёзно, ибо программное растяжение разрядности.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

HWman пишет:

... программное растяжение разрядности.

Поясните, пожалуйста, что это значит?

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Gippopotam пишет:

HWman пишет:

... программное растяжение разрядности.

Поясните, пожалуйста, что это значит?

http://arduino.ru/forum/proekty/mnogokanalnyi-voltmetr-c-lcd-displeem-na...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

К сожалению оверсэмплинг имеет два существенных недостатка:

1. Абсолютно беспомощен против систематической ошибки, уменьшая лишь случайную.

2. Случайную погрешность он тоже снижает гораздо в меньшей степени, чем, как правило, считают те, кто его применяет. Например, по указанной выше ссылке утверждается о "соответствии 14-битному АЦП", что сразу вызывает вопрос: А по какому именно параметру соответствует?

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

[quote=mik.

Так выглядит АЦП 24 бит с опорником.

Это китайский источник опорного напряжения на 2.5  5.0  7.5 10.0 вольт. Удобен для настройки всякой всячины.

На тыльной стороне китайца напряжения измерянные на заводе изготовителе.

.

Если кому будет полезен мой опыт, то удачных проектов!

 

 

[/quote]

Если возможно - адреса магазинов этих девайсов.

 

Dron_S
Offline
Зарегистрирован: 04.10.2016

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

Подчеркивает строчку b0 = SPI_read(); // read 4 bytes adc raw data with SPI

И выдает ошибку Arduino: 1.6.10 (Windows 10), Плата:"Arduino Nano, ATmega328"

C:\Users\Ёжик\Desktop\LTC2400\Arduino sketch\LTC2400_ADC_Serial_out\LTC2400_ADC_Serial_out.ino: In function 'void loop()':

LTC2400_ADC_Serial_out:71: error: 'SPI_read' was not declared in this scope

LTC2400_ADC_Serial_out:98: error: 'printFloat' was not declared in this scope

exit status 1
'SPI_read' was not declared in this scope
Может кто сталкивался ?
 

sls
Offline
Зарегистрирован: 30.05.2016

Dron_S я бы русские буквы из путей убрал, для начала

 

 

slider
Offline
Зарегистрирован: 17.06.2014

Куда такая точнось? неужели последние разряды не бегают при измерении к примеру лития ?

// есть гораздо распространенные варианты точных АЦП , к примеру MCP3421  - 18бит , корпус  sot23-6  ,  3в мериет до 4го знака

стоимость на али за 10шт около 500руб. используют в дешевых точных волтметрах 0-3.0000 здесь 

по форуму много есть по поиску  MCP3421

 

 

Dron_S
Offline
Зарегистрирован: 04.10.2016

Привет всем удалось победить данную проблему установкой Arduino: 1.6.08, может еще винда 10-я забитая всякой хренью. Но возникла другая проблема. После заливки программы в мониторинге порта показывает 2,051343 Вольт, но никакой источник питания не подключен. Если подключить 1,5 вольтовою батарейку то показывает точно 1,5 и т.д. все как бы работает. Но вот от куда  2,051343 ?

vb
Offline
Зарегистрирован: 15.09.2016

Ребятки, может кому-то понадобится, тут есть подробная и очень простая схема вольтметра на Arduino

mikelari
Offline
Зарегистрирован: 14.05.2015

Dron_S, я начинал с кода

Этот код нормально работал у меня.

Из за большого времени преобразования АЦП LTC2400 , я свой вольтметр переделал на ads1115 ( 16 bit I2C ). Сделал два входа, один дифференцияльный  +/- 5.2 вольт с индикацией 4 знака после точки , второй обычный single с делителем напряжения на 11 и диапазоном измерения до 55 вольт с индикацией 2 знака после точки. Питание от двух аккумуляторов 18650 . И добавил вывод на сериал порт  в формате ZeroFormat LogView. Этот вариант вольтметра мне нравиться намного больше.

Также сама ардуина через делитель измеряет напряжение аккумуляторов , и в процентах показывает заряд ,по уравнению полученному при контрольной разрядке аккумуляторов.

 

allabrt
Offline
Зарегистрирован: 02.01.2017

Интересный материал по машиностроению.

allabrt
Offline
Зарегистрирован: 02.01.2017

Интересный материал по машиностроению.

ЮриБас
Offline
Зарегистрирован: 13.01.2012

mikelari пишет:
.. я свой вольтметр переделал на ads1115 ( 16 bit I2C ). Сделал два входа, один дифференцияльный  +/- 5.2 вольт с индикацией 4 знака после точки , второй обычный single с делителем напряжения на 11 и диапазоном измерения до 55 вольт с индикацией 2 знака после точки. Питание от двух аккумуляторов 18650 . И добавил вывод на сериал порт  в формате ZeroFormat LogView. Этот вариант вольтметра мне нравиться намного больше. 

mikelari Если не трудно, не могли бы выложить скетч на ads1115 ?  

Тоже прикупил себе ads1115 (еще INA219),  есть подобная надобность сделать логгер с хорошим разрешением до 50В  на зарядное устройство (либо зарядное с внешним АЦП) ну и ток на шунте мерить, желательно в диф режиме, чтобы мерить в обе стороны (заряд/разряд).  Правда сразу возникли вопросы - как правильно реализовать в коде, чтобы разрешение было по максимуму..  к тому же важно не потерять скорость сэмплирования - 800 сэмплов..   и т.д.  

Хотелось еще спросить,  формат ZeroFormat LogView - это значит можно смотреть в стандартной программе для зарядников  LogView?

MitsuokaOroshi
Offline
Зарегистрирован: 03.01.2017

Поделитесь пожалуйста схемой включения Вашего вольтметра для АЦП LTC2400. И возможно ли сделать вольамперметр на его основе?

mikelari
Offline
Зарегистрирован: 14.05.2015

Вот http://www.dropbox.com/s/tlvosmpspz9b9nb/Adafruit_ADS1X15.zip?dl=0 исправленная библиотека для ADS1115 (860 samples per second) . На 100кГц I2C  у меня измерял 435 раз в секунду . На 400кГц I2C не пробовал. Примеры из библиотеки работают нормально.

Скетч-пожалуйста, но писал его давно, и в нем не самые красивые решения

И да,  можно смотреть в стандартной программе для зарядников  LogView. Нужно только сделать ini файл для вольтметра. Нужно будет, скину свой ini файл.

При написании разных измерялок часто требуется применение различных фильтров. Мне понравился вариант описаный в статье https://geektimes.ru/post/269202/ но в этом измерятеле такой фильтр еще не реализован.

mikelari
Offline
Зарегистрирован: 14.05.2015

По  АЦП LTC2400 включен был по схеме 

Схема модуля http://www.dropbox.com/s/qtsn966we7rpmny/PCB%20schematic.pdf?dl=0

Vin1 измеряет до 4.096 В

Vin2 измеряет до 17 вольт (предварительно замкнуть перемычку JP2)

Можно сделать свой делитель, и измерить сколько нужно.

Вольтамперметр на его основе? Сделать можно всё что угодно, где АЦП можно впихнуть и если устраивает 24bit c Conversion Time 160 mS.

 

MitsuokaOroshi
Offline
Зарегистрирован: 03.01.2017

mikelari пишет:

По  АЦП LTC2400 включен был по схеме 

Схема модуля http://www.dropbox.com/s/qtsn966we7rpmny/PCB%20schematic.pdf?dl=0

Vin1 измеряет до 4.096 В

Vin2 измеряет до 17 вольт (предварительно замкнуть перемычку JP2)

Можно сделать свой делитель, и измерить сколько нужно.

Вольтамперметр на его основе? Сделать можно всё что угодно, где АЦП можно впихнуть и если устраивает 24bit c Conversion Time 160 mS.

 

Благодарю за ответ, Вы встречали такие решения? Хотелось бы точный вольтамперметр для диапазона 30V 10A. Если есть примеры такого применения этого АЦП - было бы здорово увидеть.

mikelari
Offline
Зарегистрирован: 14.05.2015
MitsuokaOroshi
Offline
Зарегистрирован: 03.01.2017

Да я находил этот модуль, но дело в том что уже готова плата будущего двухканального блока питания и трансформатор 2х24х15В 10А. Было опробовано много популярных ВАметров на PIC и Atmega8 и у всех в какой то части диапазона была приличная нелинейность. А по задуму хочется сделать ВАметр с режимом внешнего измерения посредством отключения входа с блока питания и переключения на внешний источник напряжения. Такой себе вольтметр+блок питания. Купил бы готовый модуль если б знал заранее что будет такая возня и плохие результаты ВАметров. Потому увидев возможности Вашего АЦП понадеялся что есть хотя бы фрагмент схемы на пике или атмеге, на той же ардуине нано. 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

MitsuokaOroshi, вам эти 24 бита ни к чему. Совершенно.  Простой расчёт - точность вольтмера в составе БП должна быть чуть лучше, чем уровень помех БП. Если взять среднестатический импульсный БП , то примерный уровень шума у них 100мв. Т.е. нет смысла отображать напряжения после одной цифры за запятой, т.к. там заведомо мусор.  Соответссно минимальная разрядность АЦП должна быть 30 /0.1 = 300 градаций, или с запасом - 9 битное (512 градаций) АЦП. Если БП трансформаторный-линейный, то средний шум у них 10мв. Соответссно нужно не менее 3000 градаций, или 12-битный АЦП.

mikelari
Offline
Зарегистрирован: 14.05.2015

Так же много пробовал ( в том числе строить ваттметр на ads 1115 с нормальными шунтами и также были вопросы с  нелинейностью), поэтому  INA226 http://arduino.ru/forum/proekty/vattmetr-3-kh-kanalnyi-s-perspektivoi и далее смогу наращивать мясо на этот скелет, впрочем уже этим занимаюсь. Возможности/хотелки  ограничиваются деньгами и фантазией. 

MitsuokaOroshi
Offline
Зарегистрирован: 03.01.2017

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

MitsuokaOroshi
Offline
Зарегистрирован: 03.01.2017

mikelari пишет:

Так же много пробовал ( в том числе строить ваттметр на ads 1115 с нормальными шунтами и также были вопросы с  нелинейностью), поэтому  INA226 http://arduino.ru/forum/proekty/vattmetr-3-kh-kanalnyi-s-perspektivoi и далее смогу наращивать мясо на этот скелет, впрочем уже этим занимаюсь. Возможности/хотелки  ограничиваются деньгами и фантазией. 

Интересное решение, буду подглядывать за ходом развития Вашей работы ))

mikelari
Offline
Зарегистрирован: 14.05.2015

Может кому пригодится черновик работа с ads1115 без библиотеки Adafruit. Только биты конфига сами выбираем по даташиту.

 

mikelari
Offline
Зарегистрирован: 14.05.2015

Причесал немного софт, вернее в части работы с ads1115 сильно переделал:

- отказался от библиотеки ads1115

- конфиг теперь 128 SPS

- запускается каждое измерение, а не цикличный режим работы АЦП

- пусто-гон по кругу ожидает окончание каждого измерения

- добавлен фильтр измерений типа как я описывал выше

- переменными Filter_read  и Filter_get   устанавливается настройки фильтра. У меня примерно около 480mS круг и выдача данных на свой дисплей и в порт для LogView

- прилагаю ini файл для LogView

http://www.dropbox.com/s/cgslaod0kjfb74h/LogView_ini.zip?dl=0

Код еще можно чистить и править, но работает нормально на nano

sls
Offline
Зарегистрирован: 30.05.2016

mikelari пишет:

Схема модуля http://www.dropbox.com/s/qtsn966we7rpmny/PCB%20schematic.pdf?dl=0

Vin1 измеряет до 4.096 В

Vin2 измеряет до 17 вольт (предварительно замкнуть перемычку JP2)

тоже брал такую платку. опора там никуда не годится, менял на даташитную lt1021 на проводках, затем стало проще переразвести плату.

на ltc2400 интересный проект милливольтметра есть https://www.youtube.com/watch?v=CiTPUmqE3Yg

mikelari
Offline
Зарегистрирован: 14.05.2015

Купил опору TI LM4040 A41IDBZR 4.096V 0.1%, (дорогие заразы) тоже хочу попробовать поменять на этом модуле, чтоб модуль использовать  для милливольтметра/миллиомметра.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да не так чтобы очень с учетом какая точность требуется

sls
Offline
Зарегистрирован: 30.05.2016

mikelari пишет:
Купил опору TI LM4040 A41IDBZR 4.096V 0.1%, (дорогие заразы) тоже хочу попробовать поменять на этом модуле, чтоб модуль использовать  для милливольтметра/миллиомметра.

по-моему lm4040 не очень сюда годится с ее 100ppm/C

это, конечно, лучше, чем то, что в платку поставили китайцы, но гораздо хуже, чем недорогие (ну, относительно) ref198/lt1021, не говоря уже о lt1027/max6341

dimax как-то Вы пессимистично смотрите на шум линейников.

у наиболее частого случая, древней 7815 Output Noise Voltage B =10Hz to 100KHz TJ = 25°C - max 40 μV/VO, это 600мкВ на 15В выходного напряжения, но никак не десятки миллиВольт.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

sls, это собственный шум голой микрухи, А я имел ввиду средний суммарный уровень помех линейных бп.  Даже если отдельные лабораторники имеет уровень пульсаций не хуже 1мв, то всё равно эта цифра весьма иллюзорная, т.к. касается только клемм выхода при статической нагрузке.

sls
Offline
Зарегистрирован: 30.05.2016

dimax пишет:

sls, это собственный шум голой микрухи, А я имел ввиду средний суммарный уровень помех линейных бп.

в общем-то у линейников основной источник шума и есть ИОН, далее по общему вкладу идет делитель напряжения с него, остальные части схемы шумят мало

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

sls, да я не против, сам люблю попугаев за запятой. Как говорится:  "Ах, обмануть меня не трудно, я сам обманываться рад..."(С) Пушкин  :-)

sls
Offline
Зарегистрирован: 30.05.2016

dimax, я их тоже полюбляю, в особенности стабильные и достоверные :)

nicelight
Offline
Зарегистрирован: 20.09.2016

Добрый день, собрал измеритель напряжения.

Врет при увеличении напряжения, погрешность достигает 0,12 вольта..

На ареф замедены опорные 2,5 В с REF192FS ( пальцем ее обозначил). Подключил по datasheet, опорное напряжение стабильно во всем диапазоне измеряемых напряжений.

в скетче указал, что analogReference ( EXTERNAL )

Питается хозяйство от импульсного стабилизатора. напряжение снимается с делителя 1к  и 14  к ( тоже пальцами указал). До этого пробовал 430 к и 36 к , такой же результат. 

Рассчет происходит тупо умножением измеренного напряжения на экспериментально подобранный коэффициент

Что я могу делать не так?