реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> ADC Mega168. Измерение напряжения "наоборот".
Буратино
сообщение Jun 30 2009, 08:48
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



поставил 10н на AREF, попробовал отключить вообще энергосберегающий режим, запитал схему от стабилизированного источника питания - результат один и тот-же: Первое измерение - результат не верный. Спустя секунду - встречаются правильные данные, спустя две секунды - ок.
Все последующие измерения - ок.

между AREF и землей-10н
AVCC замкнуто с питанием VBAT
100н на питании процессора.

Может быть есть у вас возможность в железе посмотреть?

Провел серию измерений: первые два - ошибочны, 300 последующих - точные.

Сообщение отредактировал Буратино - Jun 30 2009, 09:02


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 30 2009, 09:18
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Буратино @ Jun 30 2009, 11:48) *
Первое измерение - результат не верный. Спустя секунду - встречаются правильные данные, спустя две секунды - ок.
Все последующие измерения - ок.

Провел серию измерений: первые два - ошибочны, 300 последующих - точные.
Вы измерение делаете один раз в секунду? Или в цикле - подряд? Или каждую секунду - серию измерений? "Первые два - ошибочны" - это какие два?
Go to the top of the page
 
+Quote Post
Буратино
сообщение Jun 30 2009, 09:50
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Цитата(Палыч @ Jun 30 2009, 13:18) *
Вы измерение делаете один раз в секунду? Или в цикле - подряд? Или каждую секунду - серию измерений? "Первые два - ошибочны" - это какие два?


Ну например так: есть в устройстве кнопка, когда ее нажимаете, запускается одиночный процесс преобразования. Если кнопку нажимать один раз в секунду то получается:

первый раз - ошибка
второй раз - ошибка (иногда правильно)
все последующие - точно.

если сделать паузу в несколько секунд - все повторяется:

первый раз - ошибка
второй раз - ошибка (иногда правильно)
все последующие - точно.

Сообщение отредактировал Буратино - Jun 30 2009, 10:01


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jun 30 2009, 09:59
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Относительно чего ПЕРВЫЙ РАЗ? Например, после сброса, после выхода из слипа?
Вообще - первое преобразование практически всегда неточно.
И "ПЕРВЫМ" называется такое преобразование, перед которым трогали ADMUX, выключали питание ADC.

Также имеет значение емкость на AREF. Чтобы что-то быстро замерить и уйти в слип эту емкость надо делать как можно меньше. Иначе после переключения мультиплексора эта емкость будет очень долго заряжаться. И результат будет неверным, пока емкость не зарядится до конца.

Проверьте напряжение на рефе перед ПЕРВЫМ нажатием (то, которое дает ошибку).


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 30 2009, 10:10
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А может кто-то наконец внятно объяснить что и относительно чего измеряется? А то из datasheet мне это как-то неочевидно.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 30 2009, 10:25
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(rezident @ Jun 30 2009, 13:10) *
А может кто-то наконец внятно объяснить что и относительно чего измеряется? А то из datasheet мне это как-то неочевидно.
Измеряется Bandgap Reference (в m168 Vbg=1.1V) относительно AVCC. Это измерение - такая фича: нужно, собственно, измерить AVCC (оно же VCC) - поэтому измерение "наоборот". Интересное решение для измерения питающего напряжения, когда жесткая нехватка ног на МК...
Go to the top of the page
 
+Quote Post
Буратино
сообщение Jun 30 2009, 10:26
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Цитата(DpInRock @ Jun 30 2009, 13:59) *
Относительно чего ПЕРВЫЙ РАЗ? Например, после сброса, после выхода из слипа?
Вообще - первое преобразование практически всегда неточно.
И "ПЕРВЫМ" называется такое преобразование, перед которым трогали ADMUX, выключали питание ADC.

Также имеет значение емкость на AREF. Чтобы что-то быстро замерить и уйти в слип эту емкость надо делать как можно меньше. Иначе после переключения мультиплексора эта емкость будет очень долго заряжаться. И результат будет неверным, пока емкость не зарядится до конца.

Проверьте напряжение на рефе перед ПЕРВЫМ нажатием (то, которое дает ошибку).


Один раз в секунду проссыпаюсь из режима Power Down, и делаю вот так:
__disable_interrupt();adc_init();ADCSRA |= (1<<ADEN); __enable_interrupt();
DelayMs(5);
f_bat=(1.1*1024/value_ADC);
V_BAT=(f_bat*100);
__disable_interrupt();ADCSRA &= ~(1<<ADEN); __enable_interrupt();
и снова в спячку

Напряжение на AREF всегда равно питанию.

Сообщение отредактировал Буратино - Jun 30 2009, 10:33


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
dimka76
сообщение Jun 30 2009, 10:34
Сообщение #23


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(rezident @ Jun 30 2009, 14:10) *
А может кто-то наконец внятно объяснить что и относительно чего измеряется? А то из datasheet мне это как-то неочевидно.


Схема я думаю примерно такая
Прикрепленное изображение


И меряется Bandgap Reference.
При изменении AVCC (которое и опорное) изменяются значения АЦП. Ведь Bandgap Reference = const


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 30 2009, 10:35
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Палыч @ Jun 30 2009, 16:25) *
Измеряется Bandgap Reference (в m168 Vbg=1.1V) относительно AVCC.
ОК. Теперь понятно. Судя из названия, это напряжение подается только на момент измерения? Или присутствует на (внутреннем) входе мультиплексора постоянно (и в режиме энергосбережения тоже)?
Go to the top of the page
 
+Quote Post
dimka76
сообщение Jun 30 2009, 10:39
Сообщение #25


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(Буратино @ Jun 30 2009, 14:26) *
первый раз - ошибка
второй раз - ошибка (иногда правильно)
все последующие - точно.


ну так и делайте серию например из 5-10 измерений, первые три отбрасывать, остальные усреднять и в спячку.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 30 2009, 10:51
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(rezident @ Jun 30 2009, 13:35) *
Судя из названия, это напряжение подается только на момент измерения? Или присутствует на (внутреннем) входе мультиплексора постоянно (и в режиме энергосбережения тоже)?
Кстати! Bandgap Reference включен, если 1) включен BOD или 2) включен компаратор или 3) включен АЦП. После включения ADEN нужно дождаться выхода на рабочий режим Bandgap Reference (это, наверное, десятки мкс - под рукой нет DS чтобы проверить). Поэтому нельзя выставлять ADEN и ADSC вместе!
Go to the top of the page
 
+Quote Post
Буратино
сообщение Jun 30 2009, 13:29
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Цитата(Палыч @ Jun 30 2009, 14:51) *
Кстати! Bandgap Reference включен, если 1) включен BOD или 2) включен компаратор или 3) включен АЦП. После включения ADEN нужно дождаться выхода на рабочий режим Bandgap Reference (это, наверное, десятки мкс - под рукой нет DS чтобы проверить). Поэтому нельзя выставлять ADEN и ADSC вместе!


все что понял попробовал. BOD у меня включен, после инициализации АЦП делаю паузу, потом запускаю преобразование, но на первых измерениях всегда ошибка. Блин, ну что в ADC может давать такой "фифект"?

Сообщение отредактировал Буратино - Jun 30 2009, 13:30


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 30 2009, 14:18
Сообщение #28


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(singlskv @ Jun 30 2009, 03:41) *
Перевод почти дословный:
"Если между преобразованиями сменилось опорное напряжение, то следующее измерение после такого изменения может быть не точным,
и пользователь должен это иметь в виду."

Неточный у вас перевод. Не должен иметь в виду, а рекомендуется выбрасывать этот (первый после смены reference) результат измерения.

Цитата(Буратино @ Jun 30 2009, 16:29) *
все что понял попробовал. BOD у меня включен, после инициализации АЦП делаю паузу, потом запускаю преобразование, но на первых измерениях всегда ошибка. Блин, ну что в ADC может давать такой "фифект"?

После выхода из спячки (включения АЦП) сделайте последовательно два измерения, первое выбрасывайте, второе оставляйте. Будет всегда правильно.

ADCSRA = (1 < ADEN);
ADCSRA |= (1 << ADSC) | (1 << ADIF);
while( !(ADCSRA & ADIF)); // <-- дождаться первого результата и выбросить его
ADCSRA |= (1 << ADSC) | (1 << ADIF); <<-- еще раз оцифровать
while( !(ADCSRA & ADIF)); // <-- дождаться второго результата преобразования

result = ADC; <-- пользовать этот результат второго преобразования
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 30 2009, 14:52
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Буратино @ Jun 30 2009, 16:29) *
все что понял попробовал. BOD у меня включен, после инициализации АЦП делаю паузу, потом запускаю преобразование, но на первых измерениях всегда ошибка. Блин, ну что в ADC может давать такой "фифект"?
Вы бы программу привели: что у Вас получилось после переделок? И потом: "на первых измерения" - как понимать? Вы делаете после просыпания из спячки серию измерений и первое измерение в серии - неверное? Или первое измерение после подачи питания на устройство?
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jun 30 2009, 17:00
Сообщение #30


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Замечание по ходу. Использование ADC_isr в данном случае ничего не дает, кроме увеличения размера программы.
Алгоритм такой.
Выход из слипа.
Замер.
Отброс первого.
Замер.
Слип.

И никаких прерываний.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 19:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01503 секунд с 7
ELECTRONIX ©2004-2016