АЦП, делитель с малым током

Обсуждаем контроллеры компании Atmel.
Ответить
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

не нужно.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

[uquote="xido",url="/forum/viewtopic.php?p=4041596#p4041596"]Вау, я несколько раз прочиталд перед тем как осознать ;) Идея супер, спасибо![/uquote]
Идея давно известная. Странно что вчера не заметили, когда вам тоже самое GoldenAndy сразу написал. В инете есть примеры по данной методике, если что.
Последний раз редактировалось NStorm Чт июн 03, 2021 07:04:33, всего редактировалось 1 раз.
Реклама
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Сообщение parovoZZ »

А нужно ли подключать конденсатор к AREF для этой схемы?
Как настроишь. В 861 не помню - настраивается или нет, а в даташит смотреть лень.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18676
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

[uquote="parovoZZ",url="/forum/viewtopic.php?p=4041637#p4041637"]
А нужно ли подключать конденсатор к AREF для этой схемы?
Как настроишь. В 861 не помню - настраивается или нет, а в даташит смотреть лень.[/uquote]
Как настраивать, было сказано конкретно, и для этого случая кондер не нужен. Для чего писать не имеющее отношения к делу?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

xido, достаточно старый трюк, который позволяет мерять батарейку, используя встроенный в атмегу опорник. Главное, что для экономии батарейки когда не меряем, можно отключать АЦП.
И нужно помнить, что при включении АЦП надо подождать не помню сколько микросекунд (надо даташит читать), что бы включившийся опорник "разогнался" до своего напряжения. Я обычно жду порядка 500 мкс, потом выполняю холостое измерение. После чего суммирую 16 измерений и беру среднее.
Единственное, примененный метод дает не очень высокую точность, поскольку используется где то треть диапазона АЦП.
Но померять батарейку с точностью до 0.1-0.05 вольта - вполне.
Под катом - расчеты для бортового ИОН 1.1 вольта. Значения АЦП в диапазоне от 200 до 500 соответствуют диапазону питания от 2.25 до 5.6 вольт.
Единственное, поскольку тут обратная зависимость, соответствие напряжения питания значениям АЦП нелинейное.
Для напряжений в районе 5 вольт единица АЦП будет в районе 25 мВ, в районе 2.5 вольт - уже в районе 5 мВ.
СпойлерИзображение
Есть в этом методе подводный камушек. Напряжение встроенного ИОН, особенно в старых мегах, не всегда соответствует даташиту.
Из опыта - для МЕГА8 - достаточно непредсказуемо, +/-0,2в. Для МЕГА328 - достаточно близко к заявленному в ДШ.
Но этот вопрос, в принципе, решается одноразовой калибровкой - измерением, расчетом и сохранением значения ИОН при подаче заведомо известного напряжения питания.
В этом случае, помня, что ADC = Ux * 1023 / Vref и зная, что Ux у нас точно известно, а Vref - встроенный ИОН, можно рассчитать напряжение этого ИОН: Vref = Ux * ADC / 1023

Касательно вывода Aref - просто прицепите его к питанию. Если мне не изменяет память, после сброса АВРки конфигурируются на использование внешнего опорника - вот вы ему батарейку туда и скормите.
Вложения
adc.jpg
(127.02 КБ) 262 скачивания
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Пт ноя 16, 2012 18:53:40

Сообщение xido »

Спасибо ))
Я даже нашёл апноут про это http://ww1.microchip.com/downloads/en/A ... 02447A.pdf
Там правда написано что схема с транзистором вообще не работает и ест питание. Почему так может быть? Особенность мосфета?

Такс, это я прочитал неправильно, там так не написано))
Последний раз редактировалось xido Чт июн 03, 2021 08:20:22, всего редактировалось 1 раз.
Реклама
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

GoldenAndy писал(а):В этом случае, помня, что ADC = Ux * 1023 / Vref и зная, что Ux у нас точно известно, а Vref - встроенный ИОН, можно рассчитать напряжение этого ИОН: Vref = Ux * ADC / 1023
1024 тут должно быть, а не 1023.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Пт ноя 16, 2012 18:53:40

Сообщение xido »

У меня кстати кусочек от 4 до 3, и судя по графику он почти линейный. Можно убрать деление
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

обман зрения, нет там линейности, даже близко.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

Starichok51 писал(а):1024 тут должно быть, а не 1023.
а если быть еще точнее - 2^10
разрядность дака
ohmycode!
primuss3.com
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Starichok51, slav0n, в даташите написано 1024, согласен. Но почему то все этому верят и не включают голову.
если взять 1024, то при подаче Ux = Vref результат АЦП, согласно формуле, должен быть 1024 = 0x400, а по факту 10 бит - это максимально 0x3FF = 1023. У АЦП 1024 градации, но начиная с нуля. Поэтому я считаю, что в формуле таки должно быть 1023 - максимальное значение, которое может отдать АЦП. Это же обычная пропорция...

Код: Выделить всё

 Ux     ADC
---- = ----
Vref   1023
xido, теоретически да, можно попробовать тот кусочек линеаризовать. Погрешность там будет небольшая. Но стоит ли овчинка выделки?
Да, если вы пишете на ассемблере и у вас расчет батарейного питания - единственное деление, то его можно и убрать. А если на Си и деление на не-константу уже где то есть, то выигрыша вы не получите, ибо подпрограмма деления уже будет в коде.
Как вариант - берете эксель, значение внутреннего опорника из даташита, строите себе табличку значений АЦП, соответствующую нужным вам точкам и сохраняете эти 5-10-20 отчек в константном массиве в памяти программ. Тогда вообще никакой математики - получить значение АЦП, в цикле сравнить его со значениями из массива, определить напряжение батареи. Всё.

Ну и традиционно, кусочек графика для вашего диапазона
СпойлерИзображение

Тут дельта в начале и в конце диапазона тоже есть, это тараканы округления.
Вложения
adc2.jpg
(100.08 КБ) 149 скачиваний
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Сообщение parovoZZ »

Встроенный ИОН необходимо калибровать - это да. Но у встроенного ИОН выходное напряжение зависит от напряжения питания. Поэтому говорить про точность в 0.05 вольта - как-то очень смело. 0.2-0.3 - гораздо ближе к истине.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

GoldenAndy, шо-то это мне напомнило проблему 2000, когда все комповое хозяйство должно было навернуться, но нет...
а 10 бит это именно 1024, а не 1023

Добавлено after 18 minutes 42 seconds:
просто 1024 относительно большое число, а вот если бы ты начал делить, к примеру, вместо 10 на 9, то...

Добавлено after 1 minute 23 seconds:
логарифмическая линейка не врет
ohmycode!
primuss3.com
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

GoldenAndy писал(а):Поэтому я считаю, что в формуле таки должно быть 1023 - максимальное значение, которое может отдать АЦП.
да, это максимальное значение, но максимальное значение равно 1023/1024 от опорного напряжения. поэтому, чтобы привести к опорному напряжению, нужно умножать (или делить) на 1024.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

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

Добавлено after 55 minutes 43 seconds:
float adc = Ux * 1023.0 / Vref;
return adc - Ux * 1024.0 / Vref;
ohmycode!
primuss3.com
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Starichok51, согласен.
ДШ говорит, что
The ADC converts an analog input voltage to a 10-bit digital value through successive approximation.
The minimum value represents GND and the maximum value represents the voltage on the AREF pin minus 1 LSB.
Т.е. да, 1024, сорри.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Ответить

Вернуться в «AVR»