roboforum.ru

Технический форум по робототехнике.

Измерить напряжение аккумулятора

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

Измерить напряжение аккумулятора

Сообщение gppsoft » 22 апр 2014, 15:35

Пытаюсь замерить напряжение аккумулятора с помощью Atmega168 на внутреннем резонаторе 8Mhz с использованием делителя на резисторах.

Код:
Код: Выделить всёРазвернуть
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 10000.0;
float R2 = 1000.0;
int value = 0;

void setup() {
     analogReference(INTERNAL);// опираемся на 1.1 вольт
}

--------------------------------------------------------
void getBatteryStatus(){
     value = analogRead(analogInput);
     vout = (value * 1.1) / 1023.0;
     vin = vout / (R2/(R1+R2));
     Serial.println(vin);
}


Но почему-то точность хромает очень сильно. В то время когда мой китайский мультиметр DT-830B показывает 12.3 вольта, то МК вычисляет 12.10. Интересно, что если я меряю напряжение за конвертером на котором установлено к примеру 8.48, то показания довольно точные, почти один в один. Объясните пожалуйста природу этих отклонений. Спасибо!
gppsoft
 
Сообщения: 86
Зарегистрирован: 09 апр 2014, 07:56

Re: Измерить напряжение аккумулятора

Сообщение Dmitry__ » 22 апр 2014, 16:28

Чего тут объяснять? У мультиметра разрешение около 20 бит, у авр - 10 бит. Итог: 5/1024 = 0,00488 v. Чтоб мерить 12 вольт, нужен делитель не менее /3. Итог: 0,00488 * 3 = 0,0146 вольт. Это минимальное разрешение ацп. Теперь возьмем гуляние данных 1 разряд (это елси все очень хорошо сделано). Итог: 0,0146 * 2 = 0.03 вольта.

Добавлено спустя 8 минут 5 секунд:
gppsoft писал(а):vout = (value * 1.1) / 1023.0;

Почему делим на 1023 ????
Завязывай с флоат...

Да, я рассчитывал с Vref =5v, у тебя 1.1 т.е. все еще хуже
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Измерить напряжение аккумулятора

Сообщение gppsoft » 22 апр 2014, 17:25

Dmitry__ писал(а):Почему делим на 1023 ????
Завязывай с флоат...

А на что делить? Это же максимальное значение с "аналоговой ноги".

P.S: Что делать? Как быть? :) Когда вчера с этими делителями-ххх разбирался... Сжег одну Raspberry Pi. Фатально. Чертовы провода :)
gppsoft
 
Сообщения: 86
Зарегистрирован: 09 апр 2014, 07:56

Re: Измерить напряжение аккумулятора

Сообщение avr123.nm.ru » 22 апр 2014, 17:52

для успокоения души добавьте 1 и делите спокойно на 1024. компилятор наверно сам преобразует это в операцию сдвига вправо.

Измерять лучше на ножке МК и опорное напр тоже.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Измерить напряжение аккумулятора

Сообщение Andrew S » 22 апр 2014, 17:57

gppsoft писал(а):
Dmitry__ писал(а):Почему делим на 1023 ????
Завязывай с флоат...

А на что делить? Это же максимальное значение с "аналоговой ноги".

P.S: Что делать? Как быть? :) Когда вчера с этими делителями-ххх разбирался... Сжег одну Raspberry Pi. Фатально. Чертовы провода :)

1023 максимальное, но считаем с нуля, поэтому делим на 1024. И прочитай про Vref, у Ардуинки есть AREF, на нее нужно подать образцовое напряжение, как можно выше к максимальному диапазону изм. напряжения.
Аватара пользователя
Andrew S
 
Сообщения: 431
Зарегистрирован: 20 янв 2014, 22:44
Откуда: 21RU
прог. языки: Assembler, Basic, Arduino IDE, PHP и др.
ФИО: Андрей С

Re: Измерить напряжение аккумулятора

Сообщение Dmitry__ » 22 апр 2014, 17:59

gppsoft писал(а):А на что делить? Это же максимальное значение с "аналоговой ноги".

A минимальное "0" будем учитывать, или цифры начинаются с "1". Ну, если у тебя, например, 10-ая система счисления, ты будешь делить на 9 или таки на 10? Так и тут: 2^10 = 1024

gppsoft писал(а):P.S: Что делать? Как быть?

Причеши код, зачем вставлять формулы в расчеты? Компилятор может быть не на столько умным чтоб преобразовать этот блудняк в одно умножение.
Все что тебе надо - получить "value = analogRead(analogInput);" и умножить на константу. И весь флоат идет лесом, получается элементарная математика с фиксир. точкой. Константу брать умноженную на круглое значение (10, 100, 1000), чтоб не потерять соотв. десятые, сотые, тысячные доли.
Дерзай :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Измерить напряжение аккумулятора

Сообщение avr123.nm.ru » 22 апр 2014, 18:11

Dmitry__ писал(а): A минимальное "0" будем учитывать, или цифры начинаются с "1".

а 1/1024 сильно от 0 отличается в данном случае? :shock:
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Измерить напряжение аккумулятора

Сообщение Dmitry__ » 22 апр 2014, 18:16

Извени, ты бредишь :)
(значение +1) /1024 не равно: значение/1023
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Измерить напряжение аккумулятора

Сообщение Andrew S » 22 апр 2014, 18:22

Во флоате все равны!
Аватара пользователя
Andrew S
 
Сообщения: 431
Зарегистрирован: 20 янв 2014, 22:44
Откуда: 21RU
прог. языки: Assembler, Basic, Arduino IDE, PHP и др.
ФИО: Андрей С

Re: Измерить напряжение аккумулятора

Сообщение avr123.nm.ru » 22 апр 2014, 18:23

Dmitry__ писал(а):Извени, ты бредишь :)
(значение +1) /1024 не равно: значение/1023
я и не писал что равно.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Измерить напряжение аккумулятора

Сообщение Dmitry__ » 22 апр 2014, 18:27

avr123.nm.ru писал(а):я и не писал что равно.

1024 - константа разрядной сетки 2-го кода, его нельзя менять на другие числа.
Да, 1/1024 не сильно отличается от нуля, а в верхнем диапазоне значений будет набегать ошибка. Все, проехали, 2^10 и никаких гвоздей :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Измерить напряжение аккумулятора

Сообщение avr123.nm.ru » 22 апр 2014, 18:28

Я и предлагал делить на 1024.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Измерить напряжение аккумулятора

Сообщение Dmitry__ » 22 апр 2014, 18:34

Ну, ты и предлагал +1 к значению ацп, какбэ круто :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Измерить напряжение аккумулятора

Сообщение Myp » 22 апр 2014, 20:58

а так же надо измерить омметром используемые резисторы, и вписать в программу реальные сопротивления, потому что они будут чуток не паспортные, ты ведь не суперточные 0.1% резисторы используешь?
так же надо выяснить какое там реально напряжение, ибо 1.1V это в идеале, а в реале у всех чуток разное.

вот там есть про точность измерений http://hacking.majenko.co.uk/making-acc ... on-arduino
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Измерить напряжение аккумулятора

Сообщение Dmitry__ » 22 апр 2014, 22:28

Myp писал(а):вот там есть про точность измерений

гыг, вон это откуда пошло /1023 :D
Пипец.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

След.

Вернуться в Электроника, электротехника

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 10