Меню

Attiny2313 измерение напряжения питания



Attiny2313 измерение напряжения питания

Мур Мяу уважаемые форумчане ! =)

Собираю автономную метеостанцию на солнечных батареях. В общем идея такая — солнечные батареи заряжают пару ионисторов на 1F , от ионисторов работает attiny13, которая в свою очередь через определенные промежутки времени, в зависимости от напряжения, включает через транзистор через преобразователь на 5 вольт arduino nano, которая собирает показания с датчиков, и передает по 433 на главное устройство. После успешной передачи ардуинка дает сигнал тиньке на выключение. Дальше сама тинька переходит в спящий режим по ватчдогу, и дальше по кругу.

Так вот, мяу, с ватчдогом и спящим режимом разобрался, а вот с измерением питания бьюсь уже второй день. В интернете для тиньки13 не так уж много информации по этому деянию, но все что я не находил либо не работали, либо мне не подходили, так как программирую я ее на си в arduinoIDE.
Может кто нибудь из достопочтенных котов даст кусочек колбаски рабочего кода или поможет его написать ?
Всем заранее спасибо за ответы =)

Реклама
Мурик
Друг Кота

Карма: 3
Рейтинг сообщений: 120
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3052
Рейтинг сообщения: 0

Не проще вместо attiny13 использовать ATmega328 и отказаться от arduino? Получится примерно тоже самое, но возможно более экономичное решение (зависит от схемы и программы в МК) что существенно в виду типа источника питания.

Изменять напряжение можно так. Подключить вывод АЦП через резисторный делитель к источнику питания и измерять напряжение относительно ИОН. Для большей экономичности нужно включать этот делитель и ИОН только на время измерения.

Реклама

JLCPCB, всего $2 за прототип печатной платы! Цвет — любой!

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

maix
Родился

Зарегистрирован: Чт авг 20, 2015 11:28:51
Сообщений: 3
Рейтинг сообщения: 0

Мурик, тинька уже имеется, покупал как то пяток из китая =) 328 можно, но ее у меня нет, покупать у нас жаба душит, да и не 20руб стоит, из китая долго ждать, потом ее прошивать, запаивать, фьюзы выставлять, с nano это все дело значительно упрощается и естественно в наличии есть =)
Да и расширяемость быстрая, захочу я например контролировать ворон на крыше =), подцепил датчик движения по быстрому, воткнул кабель внес 7 строк кода, вуаля =)

Там от тиньки то пара несложных операций нужно, как раз для нее подходит идеально, плюс в глубоком сне почти не потребляет =)

С АЦП пробовал кусочек кода, у меня не заработал..

Реклама

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

pyzhman
Друг Кота

Карма: 49
Рейтинг сообщений: 386
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 6886
Откуда: Ижевск
Рейтинг сообщения: 0

Реклама

Помимо стабильности основных технических характеристик карбид-кремниевых транзисторов линейки CoolSiC, компания Infineon довела до значений, соответствующих кремниевым аналогам, такие параметры, как устойчивость к временной деградации кристаллов и воздействию космического излучения. В процессе исследований были применены уникальные комплексные тесты, который могут в ближайшем будущем стать промышленным стандартом для испытаний SiC-приборов.

maix
Родился

Зарегистрирован: Чт авг 20, 2015 11:28:51
Сообщений: 3
Рейтинг сообщения: 0

Реклама
Реклама

Компания Panasonic представила новую серию конденсаторов SVT с низким уровнем ESR и другими преимуществами. Новейшая серия конденсаторов, входящая в состав семейства OS-CON алюминиевых твердотельных конденсаторов с высокопроводящим полимером, предназначена для поверхностного монтажа.

Страница 1 из 1 [ Сообщений: 5 ]

Часовой пояс: UTC + 3 часа

Кто сейчас на форуме

Сейчас этот форум просматривают: Riniy и гости: 21

Источник

AVR: мониторинг напряжения питания

Ibrahim Kamal (IKALOGIC)

Примечание. Выборки исходного кода, размещенные в тексте описания, использовать в своих проектах не рекомендуется. В конце описания имеется ссылка на архив с полным исходным кодом к проекту.

Данная статья преследует учебные цели. Мы рассмотрим аппаратное решение и программную реализацию в задаче измерения уровня напряжения батареи (аккумулятора) с помощью микроконтроллера, который питается от этого же источника. Предполагается, что пользователи знакомы с программированием микроконтроллеров AVR и имеют базовые знания языка Си. Используемый компилятор – WinAVR.

Очевидно, будучи очень простой, задача измерения напряжение питания микроконтроллера может быть очень важной и серьезной, особенно в устройствах и приложениях с батарейным питанием.

Существует множество способов и решений для отслеживания уровня напряжения батареи питания, многие из них требуют использования внешних компонентов и узлов. Рассматриваемое нами решение не требует внешних компонентов, мы будем использовать лишь ресурсы и периферию микроконтроллера – встроенный АЦП.

Использовать будем микроконтроллер компании Atmel ATMEGA48, но программный код полностью совместим с микроконтроллерами ATMEGA88, ATMEGA168, ATMEGA328. Кроме того, немного исправив исходный код, можно применить данное решение для микроконтроллеров AVR со встроенным АЦП.

Пользователи, наверное задаются вопросом: «Неужели настолько сложен процесс измерения напряжения питания микроконтроллера?» Для решения этой задачи у нас есть микроконтроллер, и нам необходимо преобразовать аналоговую величину напряжения в цифровое значение, которое может использоваться микроконтроллером для дальнейших вычислений и действий.

Вы, наверное, скажете: «Так в чем же дело. Мы подключим положительный вывод батареи, от которой питается микроконтроллер, к входу АЦП и преобразуем величину напряжения в цифровое значение!».

Однако в этом случае вы будете не правы, это не так просто. Проблема в том, что источник напряжения используется для питания самого микроконтроллера (Vcc), а также в качестве источника опорного напряжения АЦП.

Если рассмотреть данную проблему с математической точки зрения, если вы понимаете проблему. В общем случае соотношение между измеренным напряжением и величиной в цифровой форме, преобразованной 8-разрядным АЦП, следующее:

ADC_VALUE = V_measure * 255/V_REF ,

где ADC_VALUE – значение полученное при аналого-цифровом преобразовании,
V_measure – измеренная величина напряжения, V_REF – опорное напряжение для АЦП.

Теперь, по условиям нашей задачи, мы знаем что V_measure = V_REF = Vcc и в итоге результатом уравнения всегда будет значение равное 255 и оно не будет изменяться при изменении напряжения батареи. Такая ситуация всегда будет иметь место при измерении напряжение батареи, которое также используется в качестве источника опорного напряжения.

Для решения задачи без использования каких-либо внешних компонентов, AVR микроконтроллер имеет очень полезный встроенный узел, называемый внутренний Band Gap источник опорного напряжения (Band Gap Reference Voltage). Выходное напряжение этого источника около 1.1 В, и оно остается неизменным при изменении температуры и напряжения питания микроконтроллера. Это напряжение может подаваться на вход АЦП, как и любое внешнее напряжение, с единственным исключением, что делается это программно, без включения дополнительных внешних компонентов.

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

Рассмотрим наше уравнение

ADC_VALUE = V_measure * 255/V_REF ,

Но, решая измерить опорное напряжение V_BG, мы получим следующее выражение

ADC_VALUE = V_BG * 255/V_REF

И так как в нашем случае опорное напряжение АЦП равно Vcc (основной момент нашей задачи), то уравнение примет вид

ADC_VALUE = V_BG * 255/Vcc

Зная, что V_BG=1.1 В, из уравнения мы можем вычислить напряжение питания микроконтроллера

Vcc = 1.1 * 255/ADC_VALUE

Благодаря последнему выражению вы сможете вычислить фактическую величину напряжения источника питания вашего устройства на микроконтроллере без использования каких-либо внешних компонентов.

Рассмотрим пример реализации.

Принципиальная схема

Мы используем три NiCad аккумулятора для питания микроконтроллера. Напряжение питания, при полностью заряженных аккумуляторах, составит 4.2 В. Нам необходимо включить светодиод, подключенный к порту PB0, если напряжение будет ниже 3.2 В.

Листинг

Следует учитывать, что напряжение V_BG будет разное у разных микроконтроллеров, особенно из разных партий, и может находиться в пределах 1.01 В – 1.2 В, следовательно необходима будет калибровка. Таким образом, если вычисленное значение Vcc с использованием данного кода неправильное, необходимо проделать следующие действия: измерить вольтметром напряжение питания Vсс и, используя уравнение ниже и зная значение ADC_VALUE, вычислить значение V_BG

ADC_VALUE = V_BG * 255/Vcc

И затем в исходном коде изменить значение напряжения V_BG «1.1» на вычисленное вами значение.

Загрузки

Перевод: Vadim по заказу РадиоЛоцман

Источник

Читайте также:  Проект правильное питание 2 класс окружающий мир

Все о питании © 2021
Внимание! Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению.