Страница 1 из 2

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

Добавлено: Вс мар 27, 2016 07:28:46
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, то все равно результат та койже!

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

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

Добавлено: Вс мар 27, 2016 08:14:19
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 (); //измеряем бортовое напряжение

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

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


Где то пишут , что надо как то побайтно работать с младшим и старшим байтом, но что то я не пойму как это и поможет ли мне?!
имхо проблема не в коде и не в мк, а в схеме приведения входного напряжения в диапазон измеряемых мк. Защита диодная или сапрессоры есть? Подтяжка отключена? Схему можете показать?

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

Добавлено: Вс мар 27, 2016 15:32:37
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 вольт.

Ни какие цепи не влияют на измеряемое напряжение. Цепи как: светодиодный индикатор (изменял его яркость, стоит фотодатчик), светодиод, фотоприемник и также изменял напряжение на других двух входах.

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

Добавлено: Вс мар 27, 2016 20:28:41
Amstron
Пока жду ответа - решил по экспериментировать.
Так как меняется опорное напряжение, то я решил внести в его изменение с ростом напряжения :))

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

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

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

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

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

Вот схема как я подключил доп резистор: http://img.radiokot.ru/files/29153/x79u672jt.jpg

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

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

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

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

Но что то мне это не нравится!!!

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

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

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

Добавлено: Пн мар 28, 2016 19:25:36
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 мВ.

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

Добавлено: Пн мар 28, 2016 19:41:19
Z_h_e
А Ваш эталонный вольтметр в порядке? Может не с тем боретесь?

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

Добавлено: Пн мар 28, 2016 19:58:15
Amstron
Z_h_e писал(а):А Ваш эталонный вольтметр в порядке? Может не с тем боретесь?
На кренки 5 вольтовой показывает 5,04 я и подумал что правильный ...

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

Добавлено: Пн мар 28, 2016 20:08:24
Amstron
Сейчас запитал от опорного внутреннего 1,1 вольта. Результат такой 30 вольтах показывает 34,3 Вольта

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

ЕСТЬ ПРЕДЛОЖЕНИЯ? КУДА КОПАТЬ?

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

Добавлено: Пн мар 28, 2016 20:14:18
pcb
у микроконтроллерных АЦП есть такая штука:
они около нуля и около верха плохо измеряют, врут то есть.

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

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

То есть при максимуме получим: при 4 => 4*1023/5 = 818 АЦП отсчетов.

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

Добавлено: Пн мар 28, 2016 20:17:14
Amstron
Ну и наконец ВЫВОДЫ над моей лабораторной работой

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

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

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

А У ВАС есть соображения по этому поводу? Как тестер проверить? Есть у меня на работе которому инженер доверяет ))

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

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

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

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

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

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

Добавлено: Пн мар 28, 2016 20:40:06
Amstron
Сейчас поставил делитель. При 30 вольтах, напряжение на микроконтроллере 0,2 вольта.
Дискретность до десятых показывает нормально.
А вот при 30 вольтах напряжение показывает 35,8 Вольта. Ни фига не уменьшилось.

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

Добавлено: Пн мар 28, 2016 20:43:45
Amstron
pcb писал(а):Рекомендую посмотреть следующий файл
http://www.atmel.com/images/doc2545.pdf
страница 259, сразу понятно станет, почему такая головоломка :tea:
Хотя у вас в первом сообщении уже есть ссылка на GAW
Вы мне Америку не открыли. А уже во всех статьях с этими графиками сталкивался. Но ме могут эти графики давать погрешность 5-10 %
Читал как улучшить измерение - надо делать аппроксимацию. Как сделать догадываюсь.

Как же у других работает??? Завтра прибор поверять буду!

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

Добавлено: Пн мар 28, 2016 23:30:18
pcb
Amstron писал(а):Вы мне Америку не открыли.
Ну-с, простите. :tea:
Статьи я читаю только в Сайнс :)
На микрокнтроллеры только пдфки.
Amstron писал(а):Как же у других работает???
а может код кривоват?

Есть вот такая [url=
http://pcb-admin.ru/nashy-razrabotky/35 ... okanalnaya]измерялка[/url]
при измерении 250В показывает 250В.
при измерении 30В показывает 30В

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

Добавлено: Вт мар 29, 2016 06:49:22
Amstron
Поверил мультиметр. На 35 вольтах есть отличие на 0.2 Вольта.
Дело не в мультиметре.

Подскажите что посмотреть?

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

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

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