Нелинейное измерение напряжения на ATmega168

Обсуждаем контроллеры компании Atmel.
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

http://img.radiokot.ru/files/29153/x6o30f36x.jpg
На фото по ссылке выше, видно, что коэффициент нелинейный - квадратичный наверное.
Проблема следующая: вольтметр 10 вольт показывает точно, а вот чем выше напряжение тем разница больше. На фото по ссылке выше это видно.
АЦП 10 битный.

10 10
12 12,4
14 14,6
16 16,8
18 19,1
20 21,4
22 23,8
24 26,1
26 28,4
28 30,6
30 33,2

Вот по этой ссылке есть инфа куда копать, но что то я не пойму как копать: http://www.gaw.ru/html.cgi/txt/doc/micr ... 128/12.htm
Там надо как то компенсировать смещение реальной к идеальной.

Частота АЦП 125 кГц (контроллер работает на частоте 16 мГц) пределитель максимум 128. Но я делал пределитель и 2, то все равно результат та койже!

Где то пишут , что надо как то побайтно работать с младшим и старшим байтом, но что то я не пойму как это и поможет ли мне?!
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Программу пишу в CVAVR

Вот куски кода для измерения АЦП:


interrupt [ADC_INT] void adc_isr(void) //прерывание по окончании преобразования

{
//в ADСW сохраняется результ. 10 битного преобразования
adc_data=ADCW; //результат переносим в ads_data
};


_____


void Voltmetr(void)

{
ADCSRA |= (1<< 6);
while ((ADCSRA & 0X40) == 0X40) { }; // 0100 0000
Srednee_znahenie_ADC = adc_data; // в прерывании в переменную adc_data присваиваем значение АЦП
};

_____

ADMUX=0b00000101; // bit 7,6=1 - внутр. ИОН= 5 в, bit 3,2,1,0 канал АЦП-adc5
ADCSRA=0b10001111; // бит 7 - разрешить, бит 0..2 частота преобразования, 3 бит - разрешить прерывание
Voltmetr (); //измеряем бортовое напряжение
Onkel
Открыл глаза
Сообщения: 68
Зарегистрирован: Вс июн 20, 2010 17:49:47

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Onkel »

Amstron писал(а):http://img.radiokot.ru/files/29153/x6o30f36x.jpg
На фото по ссылке выше, видно, что коэффициент нелинейный - квадратичный наверное.
Проблема следующая: вольтметр 10 вольт показывает точно, а вот чем выше напряжение тем разница больше. На фото по ссылке выше это видно.


Где то пишут , что надо как то побайтно работать с младшим и старшим байтом, но что то я не пойму как это и поможет ли мне?!

имхо проблема не в коде и не в мк, а в схеме приведения входного напряжения в диапазон измеряемых мк. Защита диодная или сапрессоры есть? Подтяжка отключена? Схему можете показать?
Фонтаны на Outlet Village Белая Дача, г Наро- Фоминск
Цех упаковки стройматериалов
Цех пиролиза покрышек с крекингом и ректификацией
Серийные приборы "Умный Дом" Uniel
Премия первой степени "Больше чем профессия" 2016 г
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

http://img.radiokot.ru/files/29153/x71ljg2yd.jpg
http://img.radiokot.ru/files/29153/x71la1ux8.jpg

диодов нет на защите.
Светодиоды подключены к другому порту.. То есть все входные сигналы на одном порту, выходные на другом...

Если на входе стабилизатора 8 вольт , то на резисторе 10 Ом падение напряжение 4,8 мВ
Если на входе стабилизатора 30 вольт, то на резисторе 10 Ом падение напряжение 0,5 мВ

На выходе стабилизатора всегда четко 5,08 Вольта, при любом входном напряжении от 8 до 30 вольт.

Получается, что меняется опорное напряжение ..

Вместо резистора 10 Ом впаял перемычку - напряжение также измеряет , ушло в одну сторону на 0,1 вольт.

Ни какие цепи не влияют на измеряемое напряжение. Цепи как: светодиодный индикатор (изменял его яркость, стоит фотодатчик), светодиод, фотоприемник и также изменял напряжение на других двух входах.
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Пока жду ответа - решил по экспериментировать.
Так как меняется опорное напряжение, то я решил внести в его изменение с ростом напряжения :))

Я поставил резистор (точнее подобрал) на 620 ом от входного напряжения к опорному напряжению, то есть к 22 и 18 ноге. эти ноги запаралены по схеме.
Сейчас только подумал, что надо было подавать только на 20 ногу AREF

Ду да ладно, есть результаты - на 30 вольтах стало показывать 30 вольт, а на 10 вольтах 9,5 Вольт, что уже радует.

Но есть одно но, то что на входе опорное напряжение равно 5.4 вольта и питание АЦП столько же!

Резистор 620 Ом очень сильно греется...

Щас попробую запитать АЦП от 5 Вольт и отдельно подать на 20 ногу смещение.

Вот схема как я подключил доп резистор: http://img.radiokot.ru/files/29153/x79u672jt.jpg
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Запитал отдельно АЦП. Не помогло. История такая же. Резистор сильно греется, что не мудрено.
Тоесть я проверил то что , а вдруг проблема была то что АЦП запитано от источника опорного напряжения?! НЕТ!

Коты - ЖДУ ПОМОЩИ! :kiss:

Я понимаю, что опорное напряжение не может быть равно больше напряжения питания контроллера.
И сейчас только одна идея! Сделать делитель, что бы опорное напряжение было 4,5 вольт и подмешивать входное напряжение, по идеи должно получиться.

Но что то мне это не нравится!!!
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Mishany »

а попробовать использовать внутренний ион на 2,56 ? как изменится картина?
Да и ногу AREF вообще отвязать от питания только керамику на GND повесить, внутренней коммутации достаточно.
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Mishany писал(а):а попробовать использовать внутренний ион на 2,56 ? как изменится картина?
Да и ногу AREF вообще отвязать от питания только керамику на GND повесить, внутренней коммутации достаточно.


В 168 меги опорное внутреннее 1,1 Вольт. Сейчас попробую. Мало очень, но ради интересе.

Сейчас ради интереса сделал следующее: изменил биты на ключь внутри контроллера который подключает питание 5 Вольт на опорное напряжение (тоесть внутри коммутируется).
Снаружи только конденсатор 0,1 н. Дак вот, на 10 вольтах показывает 4,8 вместо 10 как раньше при этом же опрорном напряжении.

В программе изменил коэффициент в 2,08 раза больше ))
Сейчас на 10 показывает 10 Вольт, на при питании 30 вольт показывает 34.9 Вольт.
Это хуже чем было! Но, тут не изменно остается опорное напряжение равное напряжению питания на ноге.
Раньше на резисторе 10 ом было изменение напряжения от 0 до 5 мВ.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Z_h_e »

А Ваш эталонный вольтметр в порядке? Может не с тем боретесь?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Z_h_e писал(а):А Ваш эталонный вольтметр в порядке? Может не с тем боретесь?

На кренки 5 вольтовой показывает 5,04 я и подумал что правильный ...
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Сейчас запитал от опорного внутреннего 1,1 вольта. Результат такой 30 вольтах показывает 34,3 Вольта

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

ЕСТЬ ПРЕДЛОЖЕНИЯ? КУДА КОПАТЬ?
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Re: Нелинейное измерение напряжения на ATmega168

Сообщение pcb »

у микроконтроллерных АЦП есть такая штука:
они около нуля и около верха плохо измеряют, врут то есть.

Нуля у вас точно не будет, т.е. полное отсутствие напряжения, но важна верхняя точка.
Я это к тому, что не обязательно делать соответствие 30В входных = 5 Вольтам на АЦП.
Сделайте соответствие 32Вольта входных = 3.2Вольта на АЦП, для эксперимента не затруднительно поменять номиналы резисторов делителя.

Я много где делал таким образом:
За максимум напряжение питания считается 16 Вольт
После делителя из 16 Вольт, получаем 4 Вольта.
Опорное 5 Вольт.

То есть при максимуме получим: при 4 => 4*1023/5 = 818 АЦП отсчетов.
Последний раз редактировалось pcb Пн мар 28, 2016 20:20:43, всего редактировалось 1 раз.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Ну и наконец ВЫВОДЫ над моей лабораторной работой

Я проверил как может измерять АЦП от разных источников опорного напряжения:

1 - 5 Вольт от стабилизатора подтянутый внешне - напряжение на 30 вольтах было 33,2 Вольта
2 - 5 Вольт подтянуто внутри микроконтроллера при помощи внутреннего ключа - напряжение на 30 вольтах было 34,9 Вольта
3 - 1,1 Вольт от внутреннего опорного напряжения - напряжение на 30 вольтах было 34,2 Вольта

А ВЫВОД такой, завтра проверю свой тестер, так как уж очень значение близкие при разных методах замера!

А У ВАС есть соображения по этому поводу? Как тестер проверить? Есть у меня на работе которому инженер доверяет ))
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

pcb писал(а):у микроконтроллерных АЦП есть такая штука:
они около нуля и около верха плохо измеряют, врут то есть.

Нуля у вас точно не будет, т.е. полное отсутствие напряжения, но важна верхняя точка.
Я это к тому, что не обязательно делать соответствие 30В входных = 5 Вольтам на АЦП.
Сделайте соответствие 32Вольта входных = 3.2Вольта на АЦП, для эксперимента не затруднительно поменять номиналы резисторов делителя.

Да, я про это и говорил, что есть нелинейность чем выше.
У меня после запятой есть еще одно число. По сути как Вы сказали 10 битного АЦП должно хватить даже если треть опорного использовать, ну или половину. Наверное половину.
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Re: Нелинейное измерение напряжения на ATmega168

Сообщение pcb »

Рекомендую посмотреть следующий файл
http://www.atmel.com/images/doc2545.pdf
страница 259, сразу понятно станет, почему такая головоломка :tea:
Хотя у вас в первом сообщении уже есть ссылка на GAW
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Сейчас поставил делитель. При 30 вольтах, напряжение на микроконтроллере 0,2 вольта.
Дискретность до десятых показывает нормально.
А вот при 30 вольтах напряжение показывает 35,8 Вольта. Ни фига не уменьшилось.
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

pcb писал(а):Рекомендую посмотреть следующий файл
http://www.atmel.com/images/doc2545.pdf
страница 259, сразу понятно станет, почему такая головоломка :tea:
Хотя у вас в первом сообщении уже есть ссылка на GAW

Вы мне Америку не открыли. А уже во всех статьях с этими графиками сталкивался. Но ме могут эти графики давать погрешность 5-10 %
Читал как улучшить измерение - надо делать аппроксимацию. Как сделать догадываюсь.

Как же у других работает??? Завтра прибор поверять буду!
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Re: Нелинейное измерение напряжения на ATmega168

Сообщение pcb »

Amstron писал(а):Вы мне Америку не открыли.

Ну-с, простите. :tea:
Статьи я читаю только в Сайнс :)
На микрокнтроллеры только пдфки.

Amstron писал(а):Как же у других работает???

а может код кривоват?

Есть вот такая [url=
http://pcb-admin.ru/nashy-razrabotky/35 ... okanalnaya]измерялка[/url]
при измерении 250В показывает 250В.
при измерении 30В показывает 30В
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Amstron »

Поверил мультиметр. На 35 вольтах есть отличие на 0.2 Вольта.
Дело не в мультиметре.

Подскажите что посмотреть?
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Нелинейное измерение напряжения на ATmega168

Сообщение Z_h_e »

Лично что мне в Вашей схеме не нравится. Это использование в качестве ИОН 7805 - у него ж погрешность стабилизации 2%. Мне слабо верится что на выходе неизменное напряжение при изменении входного. Непонятно на кой ляд включен стабилитрон в цепь опорного напряжения, погрешность обычного стабилитрона будет не лучше, да еще будут бороться 7805 и стабилитрон друг с другом.

1. Внимательно проверьте схему на сопли, грязь и т.д.
2. Измените программу и отображайте код АЦП без преобразования в напряжение. Посчитайте "ручками" линейность.
3. Откиньте по максимуму всю схему от МК. Подайте опорное напряжение с батареи, а на вход АЦП подайте напряжения через потенциометр подключенный к хорошей батарее. Проверьте
4. Поменять МК
5. Показать исходник форумчанам.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

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