Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Контроль за питанием ATmega32
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
B_Sergey_N
Всем привет!
Задача следующая. Необходимо контролировать питание контроллера, индикация светодиодами: ну например при нормальном питании - один цвет, при падающем - свечение меняется. Решил использовать внутренний АЦП, но не знаю как, какой, к примеру, лучше использовать Aref. Читал здесь на форуме, но так и не нашел нормального ответа.

Изначально все было так: AVcc соединялся с AREF; к AVcc, ADC0 и земле припаял переменник; и теперь на ADC0 подавалось половина AVcc. Ну запустил AЦП, вроде все заработало, при изменении переменником напряжения на ADC0 измнялась и индикация, вот, но потом понял, что ступил, так как при изменении самого напряжения питания контроллера ничего не работало, уровень на ADC0 относительно AVcc не менялся.

Короче, народ, подскажите плиз, как лучше сделать такую штуковину.
VDG
Нормальное питание у него одно: 5V.
Как к примеру будете контроллировать питание 2V, когда сам контролллер уже после 4V не соображает и выключен BOD-ом?
B_Sergey_N
Цитата(VDG @ Aug 9 2008, 02:23) *
Нормальное питание у него одно: 5V.
Как к примеру будете контроллировать питание 2V, когда сам контролллер уже после 4V не соображает и выключен BOD-ом?


По даташиту питание у контроллера 4,5 - 5,5В
Я подаю 5В, при снижении ниже 4,5В должен показать это диодами
VDG
Цитата(B_Sergey_N @ Aug 9 2008, 02:27) *
Я подаю 5В, при снижении ниже 4,5В должен показать это диодами
Тогда все проще. Хватит встроенного компаратора и делителя на дополнительном стабилизаторе, например на 3V.
B_Sergey_N
Цитата(VDG @ Aug 9 2008, 02:44) *
Тогда все проще. Хватит встроенного компаратора и делителя на дополнительном стабилизаторе, например на 3V.


На самом деле питание от 3-х батареек, т.е. 4,5В, затем повышающий стабилизатор до 5В.

А можно чуть поподробнее насчет компаратора и делителя, зачем стабилизатор на 3В? Схематично как это будет выглядить.

Спасибо.
defunct
Цитата
уровень на ADC0 относительно AVcc не менялся

Ничего никуда подавать не нужно. У вас и так питание уже подано на AVCC а значит его уже можно измерить. Просто используйте канал не ADC0, а канал 30.

Цитата(B_Sergey_N @ Aug 9 2008, 01:27) *
Короче, народ, подскажите плиз, как лучше сделать такую штуковину.

У АЦП есть калибровочный канал 1.22V (Vbg). С помощью него и определяйте питание.

Aref = 1024 * 1.22V / ADC

По этой формуле вы найдете Reference, если референс поставить на AVCC (как оно у вас и стоит) == VCC - то и получите искомое питание.
domowoj
Цитата(defunct @ Aug 9 2008, 08:00) *
Ничего никуда подавать не нужно. У вас и так питание уже подано на AVCC а значит его уже можно измерить. Просто используйте канал не ADC0, а канал 30.
У АЦП есть калибровочный канал 1.22V (Vbg). С помощью него и определяйте питание.

Aref = 1024 * 1.22V / ADC

По этой формуле вы найдете Reference, если референс поставить на AVCC (как оно у вас и стоит) == VCC - то и получите искомое питание.

defunct просвети, разве 1.22В не жестко связано с внутренним опорным, кот. подается на АЦП
(хотя судя по структурной схеме - ты прав).
Но разброс 1.22В - те же самые +-10%!!!?
defunct
Цитата(domowoj @ Aug 9 2008, 05:32) *
defunct просвети, разве 1.22В не жестко связано с внутренним опорным, кот. подается на АЦП
Жестко связано, но никто не заставляет использовать внутреннее опорное. Если надо мерять VCC в MUX выбираем AVCC в качестве опорного.

Цитата
Но разброс 1.22В - те же самые +-10%!!!?
Да, разброс есть все верно +/-10%, надо будет калибровать.
VDG
Цитата(B_Sergey_N @ Aug 9 2008, 03:10) *
На самом деле питание от 3-х батареек, т.е. 4,5В, затем повышающий стабилизатор до 5В.
А можно чуть поподробнее насчет компаратора и делителя, зачем стабилизатор на 3В?

Если стоит повышающий DC/DC, то дополнительное опорное не нужно. И АЦП тогда можно использовать. REF АЦП заводите на Vcc (+5V). Вход АЦП напрямую подцепляете к батарее - входу DC/DC. Тогда можно отслеживать уровень от 3,6V до 4,5V.

Путаница в том, что, как выяснилось, контроллировать Вам надо не питание контроллера, как было написано в теме, а уровень батарей _до_ стабилизатора. Питание контроллера от DC/DC у Вас _всегда_ будет +5V, пока уровень батарей не упадет ниже 3,0V (и питание контроллера пропадет).
zhevak
Цитата(domowoj @ Aug 9 2008, 08:32) *
Но разброс 1.22В - те же самые +-10%!!!?

Хочу напомнить про резисторы в делителе -- у них тоже есть разброс.
Резисторы изготавливаются с различной точностью: и 10%, и 5%. Есть и прецезионные одно-процентные и более точные. Всякие есть. Не ошибитесь!
B_Sergey_N
Всем огромное спасибо, пойду пробовать. Отпишусь позже о проделанном!!
Боинг749
Цитата(defunct @ Aug 9 2008, 05:00) *
У АЦП есть калибровочный канал 1.22V (Vbg). С помощью него и определяйте питание.

Чёта я не понял 07.gif

Мне всегда казалось, что "1,22V" - это стабилизированное напряжение, которое от Vcc никак не зависит (в определённых пределах конечно.. Например в диапозоне 2...5,5В)
Syberian
Цитата(Боинг749 @ Aug 25 2008, 15:29) *
Чёта я не понял 07.gif

Мне всегда казалось, что "1,22V" - это стабилизированное напряжение, которое от Vcc никак не зависит (в определённых пределах конечно.. Например в диапозоне 2...5,5В)


Тоже ничего не понял smile.gif

Схема, по моему разумению, такова:
AVCC = VCC, работа АЦП от internal reference.
На любой ADCx вешается делитель: на землю 1 кОм, на цепь измерения - 10 кОм.

Результирующее напряжение будет: 0.013105 * ADCx (в вольтах). Максимальное измеряемое напряжение 13.42В. Точность 10 мВ.

Пишешь на С? считай на флоатах smile.gif
sysel
Внутри есть встроенный источник опорного напряжения (примерно 2.5В).
Этот источник выбирается в управляющем регистре АЦП. При этом нога Vref через конденсатор вешается на землю и всё.
Можно использовать также ATmega32L, который можно питать напряжением от 3 вольт (а может даже и ниже, не помню) до 5.5В
defunct
Цитата(Боинг749 @ Aug 25 2008, 15:29) *
Чёта я не понял 07.gif
Мне всегда казалось, что "1,22V" - это стабилизированное напряжение, которое от Vcc никак не зависит

Именно. Никак не зависит от VCC.
Именно поэтому с помощью Vbg и можно измерить VCC без доп. компонентов снаружи.
Внимательно посмотрите на приведенную выше формулу.
Qwertty
А откуда 10% разброс у Bandgap? Я все время считал что он раз в 10 меньше. На какой странице ДШ приведена эта цифра?
Syberian
Цитата(defunct @ Aug 26 2008, 15:31) *
Именно. Никак не зависит от VCC.
Именно поэтому с помощью Vbg и можно измерить VCC без доп. компонентов снаружи.
Внимательно посмотрите на приведенную выше формулу.


Дополнительные компоненты нужны! Как минимум потому, что подача на вход АЦП напряжения, больше AVCC на 0.7В приведет к выгоранию меги. Так что лучше перестраховаться делителем. И ток, если что, ограничит, и диапазон расширит...

Цитата
А откуда 10% разброс у Bandgap? Я все время считал что он раз в 10 меньше. На какой странице ДШ приведена эта цифра?


Погрешность измерения АЦП = +-1 LSB. Учитывая, что АЦП 10-битный, получаем 0.1% погрешность измерения.
Но величина выхода АЦП напрямую зависит от Vref, и поэтому точность будет зависеть от стабилизации Vref.
В свое время интересовался пределами этой стабилизации.
ATmega8 при работе в качестве "напряжометра" с запиткой от Vref в термокамере держала погрешность менее 1% почти во всем темп. диапазоне! (от -35 до +65). Единственно, жутко плавала тактовая RC-генератора - процентов на 30....
От -35 и ниже мега резко начинала "врать" в большую сторону. А Vref уменьшался.
Maik-vs
Цитата(Qwertty @ Aug 27 2008, 01:16) *
А откуда 10% разброс у Bandgap? Я все время считал что он раз в 10 меньше. На какой странице ДШ приведена эта цифра?


Да поищите по даташиту. Вот для меги16.
Кстати, "ATmega16 features an internal bandgap reference. This reference is used for Brownout
Detection, and it can be used as an input to the Analog Comparator or the ADC. The
2.56V reference to the ADC is generated from the internal bandgap reference."
defunct
Цитата(Syberian @ Aug 27 2008, 05:18) *
Дополнительные компоненты нужны! Как минимум потому, что подача на вход АЦП напряжения, больше AVCC на 0.7В приведет к выгоранию меги. Так что лучше перестраховаться делителем. И ток, если что, ограничит, и диапазон расширит...

Вы поняли о чем я говорю?

Напряжение питания чипа можно измерить без внешних компонентов внутренним каналом Vbg. Для это нужно:
1. выбрать reference - AVCC;
2. снять показания канала Vbg;
3. расчитать по формуле (приведенной ниже) напряжение питания.

VCC = 1.22 * 1024 / ADC

Куда тут делитель подключать? И ток где ограничивать собирались?
war4one
Можно еще поставить между питанием и МК прокладку из диода и толстого кондера. Мерять напрягу ДО прокладки. Тогда при падении напряжения прокладка даст МК возможность осуществить какие-нибудь осмысленные действия, например, сохранить текущие переменные в EEPROM.
B_Sergey_N
Цитата(defunct @ Aug 30 2008, 05:46) *
Вы поняли о чем я говорю?

Напряжение питания чипа можно измерить без внешних компонентов внутренним каналом Vbg. Для это нужно:
1. выбрать reference - AVCC;
2. снять показания канала Vbg;
3. расчитать по формуле (приведенной ниже) напряжение питания.

VCC = 1.22 * 1024 / ADC

Куда тут делитель подключать? И ток где ограничивать собирались?



Получается, что мне надо будет снимать показания с двух каналов, первый - это канал Vbg, второй канал ADC0, на который приходит измеряемый сигнал. Как это программно реализовать, одновременное считывание каналов, переключаться просто в ADMUX?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.