|
|
  |
ADC Mega168. Измерение напряжения "наоборот". |
|
|
|
Jun 29 2009, 10:53
|

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

|
Есть устройство с автономным питанием. Для того ,Чтоб не использовать ключей, делителей и прочей обвязки - измеряю напряжение на аккумуляторе по сл. алгоритму:
AREF = AVCC = Vbat Данные АЦП: N = 1024*Vop/Vbat т.е. Vbat = Vop*1024/N
вот инициализация ADC: void adc_init(void) { ADMUX = (1<<REFS0)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1); ADCSRB = 0x00; ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS0); }
Вот прерывание: #pragma vector= ADC_vect __interrupt void ADC_vect_isr (void) { //conversion complete, read value (int) using... value_ADC=ADCL; //Read 8 low bits first (important) value_ADC|=(int)ADCH << 8; //read 2 high bits and shift into top byte }
В тексте программы: ... __disable_interrupt();adc_init();ADCSRA |= (1<<ADEN); __enable_interrupt(); DelayMs(5); f_bat=(1.22*1024/value_ADC); V_BAT=(f_bat*100); __disable_interrupt();ADCSRA &= ~(1<<ADEN); __enable_interrupt(); ...
не могу понять, почему иногда считает ADC неверно!? Где ошибка? Я не использую никакой обвязки. То есть, на ногах проца имеющих отношение к преобразованию ничего не "висит". Может быть в этом проблема? AVСС тоже в воздухе. Если измерять напряжение на этом выводе, то там меньше, чем на питании проца. Сори за очередные глупые вопросы, но оч. нужна помощь. Спасибо.
Сообщение отредактировал Буратино - Jun 29 2009, 11:06
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jun 29 2009, 13:49
|

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

|
Цитата(rezident @ Jun 29 2009, 16:14)  Все неиспользуемые пины должны быть настроены как GPIO с функцией вывода лог.0. AVCC нельзя отставлять неподключенным ни в коем случае! Либо напрямую к питанию подключить, либо через LC или RC-фильтр. Присоединил AVCC напрямую к батарее. ADC стал завышать напряжение (что в принципе можно и устранить вычитанием константы), но временами, проскакивают ошибки.  Вот еще что: если делать несколько циклов "ацепирования", ну например через одну секунду десять раз, то ошибка появляется на первом, втором измерении, а все последующие - ок.
Сообщение отредактировал Буратино - Jun 29 2009, 14:14
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jun 29 2009, 15:12
|

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

|
Цитата(Буратино @ Jun 29 2009, 16:49)  Присоединил AVCC напрямую к батарее. ADC стал завышать напряжение (что в принципе можно и устранить вычитанием константы), но временами, проскакивают ошибки. Завышает напряжение, наверное, потому, что согласно DS при MUX3..0=1110 к АЦП подключается 1.1V (Vbg). У Вас же в формуле 1.22 Цитата(Буратино @ Jun 29 2009, 16:49)  если делать несколько циклов "ацепирования", ну например через одну секунду десять раз, то ошибка появляется на первом, втором измерении, а все последующие - ок. То, что в первом измерении неверный результат - ему верить нельзя (в DS об этом прямо сказано: "The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result."). Со вторым неверным - хуже... У Вас REFS10=01 (т.е. "AVCC with external capacitor at AREF pin"). Про конденсатор в первом посте нет ни слова...
|
|
|
|
|
Jun 29 2009, 17:21
|

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

|
Цитата(rezident @ Jun 29 2009, 19:02)  А в чем заключается ошибка "ацепирования"? Результат измерения "скачет": то 3,96В (правильно), то 2,78В (ошибка) Цитата(rezident @ Jun 29 2009, 19:02)  А можно схему посмотреть? Нет никакой схемы! Вообще ничего (ну конденсатор 100н на питании проца, 1мкФ+10к на ресете, кварц и два по 27пФ это все). По идее АЦП измеряет напряжение питания относительно внутренней опоры. Цитата(Палыч @ Jun 29 2009, 19:12)  Завышает напряжение, наверное, потому, что согласно DS при MUX3..0=1110 к АЦП подключается 1.1V (Vbg). У Вас же в формуле 1.22
То, что в первом измерении неверный результат - ему верить нельзя (в DS об этом прямо сказано: "The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result."). Со вторым неверным - хуже... У Вас REFS10=01 (т.е. "AVCC with external capacitor at AREF pin"). Про конденсатор в первом посте нет ни слова... Поставил в формулу 1,1В, Припаял к AREF электролит на 10мкФ, потом 100н. Теперь меряет так: Показания прибора: 3,87В Результат преобразования: 3,96В Однако ошибка остается. Мне кажется, что она появляется после перехода из энергосберегающего режима (Power Down) в активный режим. Результат ошибочного преобразования: 2,72-2,99В
Сообщение отредактировал Буратино - Jun 29 2009, 17:27
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jun 30 2009, 00:41
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Палыч @ Jun 29 2009, 19:12)  То, что в первом измерении неверный результат - ему верить нельзя (в DS об этом прямо сказано: "The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result."). Как надоело читать эту глупость...  Вам перевести "в предпоследний раз" что там написано ? Перевод почти дословный: "Если между преобразованиями сменилось опорное напряжение, то следующее измерение после такого изменения может быть не точным, и пользователь должен это иметь в виду." Хде Вы тут увидели смену опоры ?
|
|
|
|
|
Jun 30 2009, 05:36
|

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

|
Цитата(singlskv @ Jun 30 2009, 03:41)  "Если между преобразованиями сменилось опорное напряжение, то следующее измерение после такого изменения может быть не точным,и пользователь должен это иметь в виду." Хде Вы тут увидели смену опоры ?  Точнее, наверное, перевести так: "Первое измерение после смены опорного напряжения может быть неточным..." А вот - и смена опоры: Цитата ADMUX = (1<<REFS0)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1);
|
|
|
|
|
Jun 30 2009, 07:31
|

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

|
Код AREF = AVCC = Vbat Тут уже говорилось автору, что он вот так ничего не измерит. То, что у него есть какой-т там результат, говорит о том, что автор неизвестно чего измеряет на самом деле. И ни о каких энергосберегающих режимах речи не идет. Тем более с конденсатором в 10 микрофарад на AREF. Это выход опорника, мкротоковый и заряжать 10 микрфарад он будет очень долго. Если уж экономить на резистивных делителях, то стоит замерять собственный уровень логической единицы поданный на измерительный вход через делитель. Тогда этот делитель можно отключать для экономии.
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Jun 30 2009, 07:54
|

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

|
Цитата(DpInRock @ Jun 30 2009, 10:31)  Тут уже говорилось автору, что он вот так ничего не измерит. То, что у него есть какой-т там результат, говорит о том, что автор неизвестно чего измеряет на самом деле. Ну, почему же? Автор измеряет внутреннее напряжение 1.1В, используя в качестве опорного AVCC. Кстати, для точности измерения Vбат (которое равно VCC) индуктивность между VCC и AVCC, наверное, ставить не нужно. Цитата(DpInRock @ Jun 30 2009, 10:31)  И ни о каких энергосберегающих режимах речи не идет. Выше автор говорил: "Мне кажется, что она появляется после перехода из энергосберегающего режима (Power Down) в активный режим." Цитата(DpInRock @ Jun 30 2009, 10:31)  Тем более с конденсатором в 10 микрофарад на AREF. Это выход опорника, мкротоковый и заряжать 10 микрфарад он будет очень долго. Об этом уже сказали выше, и, надеюсь, автор вопроса этому внял... Может быть, измерения неверные ещё и из-за того, что напряжение на батарее проседает при увеличении потребляемого тока в момент просыпания? Не лучше ли проверить измерения, запитав устройство от хорошего источника питания?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|