Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
АЦП, делитель с малым током
не нужно.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- Реклама
- Сообщения: 1978
- Зарегистрирован: Ср июл 17, 2013 13:55:57
[uquote="xido",url="/forum/viewtopic.php?p=4041596#p4041596"]Вау, я несколько раз прочиталд перед тем как осознать
Идея супер, спасибо![/uquote]
Идея давно известная. Странно что вчера не заметили, когда вам тоже самое GoldenAndy сразу написал. В инете есть примеры по данной методике, если что.
Идея давно известная. Странно что вчера не заметили, когда вам тоже самое GoldenAndy сразу написал. В инете есть примеры по данной методике, если что.
Последний раз редактировалось NStorm Чт июн 03, 2021 07:04:33, всего редактировалось 1 раз.
- Сообщения: 1759
- Зарегистрирован: Пт июн 01, 2018 07:28:45
Как настроишь. В 861 не помню - настраивается или нет, а в даташит смотреть лень.А нужно ли подключать конденсатор к AREF для этой схемы?
[uquote="parovoZZ",url="/forum/viewtopic.php?p=4041637#p4041637"]
Как настраивать, было сказано конкретно, и для этого случая кондер не нужен. Для чего писать не имеющее отношения к делу?
Как настроишь. В 861 не помню - настраивается или нет, а в даташит смотреть лень.[/uquote]А нужно ли подключать конденсатор к AREF для этой схемы?
Как настраивать, было сказано конкретно, и для этого случая кондер не нужен. Для чего писать не имеющее отношения к делу?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
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 - просто прицепите его к питанию. Если мне не изменяет память, после сброса АВРки конфигурируются на использование внешнего опорника - вот вы ему батарейку туда и скормите.
И нужно помнить, что при включении АЦП надо подождать не помню сколько микросекунд (надо даташит читать), что бы включившийся опорник "разогнался" до своего напряжения. Я обычно жду порядка 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 КБ) 263 скачивания
- Реклама
- Сообщения: 171
- Зарегистрирован: Пт ноя 16, 2012 18:53:40
Спасибо ))
Я даже нашёл апноут про это http://ww1.microchip.com/downloads/en/A ... 02447A.pdf
Там правда написано что схема с транзистором вообще не работает и ест питание. Почему так может быть? Особенность мосфета?
Такс, это я прочитал неправильно, там так не написано))
Я даже нашёл апноут про это http://ww1.microchip.com/downloads/en/A ... 02447A.pdf
Там правда написано что схема с транзистором вообще не работает и ест питание. Почему так может быть? Особенность мосфета?
Такс, это я прочитал неправильно, там так не написано))
Последний раз редактировалось xido Чт июн 03, 2021 08:20:22, всего редактировалось 1 раз.
1024 тут должно быть, а не 1023.GoldenAndy писал(а):В этом случае, помня, что ADC = Ux * 1023 / Vref и зная, что Ux у нас точно известно, а Vref - встроенный ИОН, можно рассчитать напряжение этого ИОН: Vref = Ux * ADC / 1023
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- Сообщения: 171
- Зарегистрирован: Пт ноя 16, 2012 18:53:40
У меня кстати кусочек от 4 до 3, и судя по графику он почти линейный. Можно убрать деление
обман зрения, нет там линейности, даже близко.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
а если быть еще точнее - 2^10Starichok51 писал(а):1024 тут должно быть, а не 1023.
разрядность дака
ohmycode!
primuss3.com
primuss3.com
Starichok51, slav0n, в даташите написано 1024, согласен. Но почему то все этому верят и не включают голову.
если взять 1024, то при подаче Ux = Vref результат АЦП, согласно формуле, должен быть 1024 = 0x400, а по факту 10 бит - это максимально 0x3FF = 1023. У АЦП 1024 градации, но начиная с нуля. Поэтому я считаю, что в формуле таки должно быть 1023 - максимальное значение, которое может отдать АЦП. Это же обычная пропорция...
xido, теоретически да, можно попробовать тот кусочек линеаризовать. Погрешность там будет небольшая. Но стоит ли овчинка выделки?
Да, если вы пишете на ассемблере и у вас расчет батарейного питания - единственное деление, то его можно и убрать. А если на Си и деление на не-константу уже где то есть, то выигрыша вы не получите, ибо подпрограмма деления уже будет в коде.
Как вариант - берете эксель, значение внутреннего опорника из даташита, строите себе табличку значений АЦП, соответствующую нужным вам точкам и сохраняете эти 5-10-20 отчек в константном массиве в памяти программ. Тогда вообще никакой математики - получить значение АЦП, в цикле сравнить его со значениями из массива, определить напряжение батареи. Всё.
Ну и традиционно, кусочек графика для вашего диапазона
Тут дельта в начале и в конце диапазона тоже есть, это тараканы округления.
если взять 1024, то при подаче Ux = Vref результат АЦП, согласно формуле, должен быть 1024 = 0x400, а по факту 10 бит - это максимально 0x3FF = 1023. У АЦП 1024 градации, но начиная с нуля. Поэтому я считаю, что в формуле таки должно быть 1023 - максимальное значение, которое может отдать АЦП. Это же обычная пропорция...
Код: Выделить всё
Ux ADC
---- = ----
Vref 1023
Да, если вы пишете на ассемблере и у вас расчет батарейного питания - единственное деление, то его можно и убрать. А если на Си и деление на не-константу уже где то есть, то выигрыша вы не получите, ибо подпрограмма деления уже будет в коде.
Как вариант - берете эксель, значение внутреннего опорника из даташита, строите себе табличку значений АЦП, соответствующую нужным вам точкам и сохраняете эти 5-10-20 отчек в константном массиве в памяти программ. Тогда вообще никакой математики - получить значение АЦП, в цикле сравнить его со значениями из массива, определить напряжение батареи. Всё.
Ну и традиционно, кусочек графика для вашего диапазона
Спойлер
Тут дельта в начале и в конце диапазона тоже есть, это тараканы округления.
- Вложения
-
- adc2.jpg
- (100.08 КБ) 149 скачиваний
- Сообщения: 1759
- Зарегистрирован: Пт июн 01, 2018 07:28:45
Встроенный ИОН необходимо калибровать - это да. Но у встроенного ИОН выходное напряжение зависит от напряжения питания. Поэтому говорить про точность в 0.05 вольта - как-то очень смело. 0.2-0.3 - гораздо ближе к истине.
GoldenAndy, шо-то это мне напомнило проблему 2000, когда все комповое хозяйство должно было навернуться, но нет...
а 10 бит это именно 1024, а не 1023
Добавлено after 18 minutes 42 seconds:
просто 1024 относительно большое число, а вот если бы ты начал делить, к примеру, вместо 10 на 9, то...
Добавлено after 1 minute 23 seconds:
логарифмическая линейка не врет
а 10 бит это именно 1024, а не 1023
Добавлено after 18 minutes 42 seconds:
просто 1024 относительно большое число, а вот если бы ты начал делить, к примеру, вместо 10 на 9, то...
Добавлено after 1 minute 23 seconds:
логарифмическая линейка не врет
ohmycode!
primuss3.com
primuss3.com
да, это максимальное значение, но максимальное значение равно 1023/1024 от опорного напряжения. поэтому, чтобы привести к опорному напряжению, нужно умножать (или делить) на 1024.GoldenAndy писал(а):Поэтому я считаю, что в формуле таки должно быть 1023 - максимальное значение, которое может отдать АЦП.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
как же ж нас запутали эти системы исчисления
даже даташиты оспаривают
Добавлено after 55 minutes 43 seconds:
float adc = Ux * 1023.0 / Vref;
return adc - Ux * 1024.0 / Vref;
даже даташиты оспаривают
Добавлено after 55 minutes 43 seconds:
float adc = Ux * 1023.0 / Vref;
return adc - Ux * 1024.0 / Vref;
ohmycode!
primuss3.com
primuss3.com
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, сорри.
ДШ говорит, что
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, сорри.





