Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.98/118: Рейтинг темы: голосов - 118, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 74

Прерывание по определенному уровню напряжения

06.11.2013, 13:11. Показов 22139. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Решаю задачу отслеживания момента заводки двигателя в автомобиле контроллером ATMEGA168P (вежливая подсветка).
Для этого буду мерять напряжение в бортсети - до 13.7 Вольт - работаем на аккумуляторе, свыше 13.7 Вольт - завелся двигатель.

Изначально планировал делать так - МК постоянно в глубокой спячке, ватчдог раз в 1-2 секунды, измерение напряжения на аналоговом входе через делитель напряжения 3 к 1 (т.е. дипазон от 0 до 20 Вольт).

Точка измерения будет после цепочки диод - дроссель - трансил 18 Вольт - электролит где-нить на 100-500 uF - керамика на 1uF т.е. вроде бы все неприятные выбрыки электросети автомобиля должны быть уже порезаны и сглажены.

Еще одна нога отслеживает концевик двери - тут однозначно прерывание по падению напряжения в ноль.

Не нравится то, что придется часто просыпаться для измерения. Кажется более красивым решение, при котором МК будет просыпаться только в момент события, на которое надо реагировать.

Нашел альтернативный вариант отслеживания уровня напряжением - прерыванием на встроенном в МК аналоговом компараторе.
Одну ного компаратора цепляем на внутреннее опорное напряжение МК (1.2 Вольт), вторую - на делитель напряжения, но уже не 3 к 1, а где-нить 10.416 к 1.

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

Насколько такая схема жизненна? Стоит ли с ней заморачиваться? Или измерения раз в секунду надежнее?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.11.2013, 13:11
Ответы с готовыми решениями:

Прерывание в ATXMEGA32E5 по изменению уровня напряжения на ноге МК
Здравствуйте. Надо заставить микроконтроллер ATXMEGA32E5 входить в прерывание по изменению уровня напряжения, но у меня что-то не...

Присвоения стиля определенному уровню
Предположим, что я пишу реферат. После создания текста, я разбиваю его на части, используя структуру. Главным разделам, я присваиваю 1...

Как можно сделать квантование функции по УРОВНЮ и по УРОВНЮ И ПО ВРЕМЕНИ
Подскажите кто нибудь как в маткаде можно сделать квантование функции по УРОВНЮ и по УРОВНЮ И ПО ВРЕМЕНИ? Встроенная функция quantize...

28
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
07.11.2013, 12:24
Студворк — интернет-сервис помощи студентам
А чем вочдог-то плох? Сколько вам времени на замер напряжения надо? Ну,миллисекунды всяко хватит. Допустим, потребляете вы при этом 3мА, прерывания раз в секунду. Итого среднее потребление - 3мкА, чтобы разрядить таким током автомобильный аккумулятор - вам понадобится пара тысяч лет :-).
0
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 74
07.11.2013, 12:46
Цитата Сообщение от Johmmy0007
>>ATMEGA-то про прерыванию от компаратора не просыпается!

это смотря какие режимы сна используете. в Idle должен работать.
по вачдогу просыпаться можно, но это изврат всё-таки

да и я не очень понимаю - какие проблемы в машине с питанием-то? у аккумулятора саморазряд, наверно в сотни раз выше, чем мк потребляет
Ну собственно Idle и есть единственный режим, в котором атмега просыпается от компаратора. При этом она еще каждую мс просыпается от таймера.
А главное, потребляет порядка 15 мА, в отличии от какого-нибудь PowerDown с его 0.35 мА.

Насколько я смог быстро найти, саморазряд современного аккумулятора считается нормальным, если составляет 1% в день.
Т.е. (грубо) для аккума 40 Ач полный разряд произодет за 100 дней = 2400 часов.
Делим 40 Ач на 2400 часов, получаем средний ток саморазряда 17 мА.

Т.е. очень даже сопоставимо с потреблением атмеги.

И, к примеру, одна из сигнализация StartLine (с постоянным контролем канала связи, т.е. на самом деле с периодической посылкой радоипакетов) жрет порядка 26 мА.

Как-то неспортивно делать существенно более тупое устройство с почти таким же потреблением...

А почему просыпаться по ватчдогу изврат?

Насколько я понимаю это "золотой стандарт" энергоэффективности атмег.
Принцип "спать всегда", в идеале просыпаться только по прерываням, а если требуется что-то делать периодически - по ватчдогу. Причем по ватчдогу ровно потому, что это самый "длинный" таймер, до 8 сек.
0
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 74
07.11.2013, 12:48
Цитата Сообщение от oomomstir
А чем вочдог-то плох? Сколько вам времени на замер напряжения надо? Ну,миллисекунды всяко хватит. Допустим, потребляете вы при этом 3мА, прерывания раз в секунду. Итого среднее потребление - 3мкА, чтобы разрядить таким током автомобильный аккумулятор - вам понадобится пара тысяч лет :-).
Ну, изначально так и хотел.
А потом вспомнил про компаратор и решил, что это будет более изящным решением. Типа вообще не просыпаться.
И вот увы...
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
07.11.2013, 12:57
Цитата Сообщение от dymys_vyshmyokov
Цитата Сообщение от Johmmy0007
>>ATMEGA-то про прерыванию от компаратора не просыпается!

это смотря какие режимы сна используете. в Idle должен работать.
по вачдогу просыпаться можно, но это изврат всё-таки

да и я не очень понимаю - какие проблемы в машине с питанием-то? у аккумулятора саморазряд, наверно в сотни раз выше, чем мк потребляет
Ну собственно Idle и есть единственный режим, в котором атмега просыпается от компаратора. При этом она еще каждую мс просыпается от таймера.
А главное, потребляет порядка 15 мА, в отличии от какого-нибудь PowerDown с его 0.35 мА.

Насколько я смог быстро найти, саморазряд современного аккумулятора считается нормальным, если составляет 1% в день.
Т.е. (грубо) для аккума 40 Ач полный разряд произодет за 100 дней = 2400 часов.
Делим 40 Ач на 2400 часов, получаем средний ток саморазряда 17 мА.

Т.е. очень даже сопоставимо с потреблением атмеги.

И, к примеру, одна из сигнализация StartLine (с постоянным контролем канала связи, т.е. на самом деле с периодической посылкой радоипакетов) жрет порядка 26 мА.

Как-то неспортивно делать существенно более тупое устройство с почти таким же потреблением...

А почему просыпаться по ватчдогу изврат?

Насколько я понимаю это "золотой стандарт" энергоэффективности атмег.
Принцип "спать всегда", в идеале просыпаться только по прерываням, а если требуется что-то делать периодически - по ватчдогу. Причем по ватчдогу ровно потому, что это самый "длинный" таймер, до 8 сек.
Ну так вы ж на машине ездить-то собираетесь и аккмулятор будет подзаряжатся, что за проблема, не пойму. 15ма - это смех

>>А почему просыпаться по ватчдогу изврат?

ну как-то сброс мк постоянный... можно, конечно, просто чисто некрасиво, на мой взгляд.
и состояния портов будут сбрасываться - вы ж чем-то управлять ими будете?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
07.11.2013, 13:22
Цитата Сообщение от dymys_vyshmyokov
Насколько я понимаю это "золотой стандарт" энергоэффективности атмег.
Принцип "спать всегда", в идеале просыпаться только по прерываням, а если требуется что-то делать периодически - по ватчдогу. Причем по ватчдогу ровно потому, что это самый "длинный" таймер, до 8 сек.
Вот вам другой путь:
ATmega...P... (с индексом "P" - PicoPower) имеет режим Power-save, который потребляет такие же микроамперы, как Power-down, только ещё RTC разрешён. И от асинхронного таймера RTC полУчите те же самые 8 секунд, что от watchdogа. Только это будут точные 8 секунд, а главное - не будет сброса портов.
0
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 74
07.11.2013, 13:46
Не-не-не, какой сброс.

Это такой режим ватчдога настраивается на вызов прерывания, без сброса МК.
А прерывание - это повод проснуться, не более того.

Соответственно все переменные, весь конткст, все живо.

И в программе резет ватчдога тоже делаеть не нужно.

Как-то вот так:

volatile unsykned int wdt_count = 0;

ISR(WDT_vect) {
wdt_count++; // считаем периоды бодрствования
}

void init_energy_safe() { // это вызываем в setup()
// устанавливаем таймер
MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = (1<<WDP1 | 1<<WDP2); /* 1.0 секунда */
WDTCSR |= _BV(WDIE);
}

Теперь если заснуть, то проснемся через 8 секунд...
0
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 74
07.11.2013, 13:50
Цитата Сообщение от OtyxPM
Цитата Сообщение от dymys_vyshmyokov
Насколько я понимаю это "золотой стандарт" энергоэффективности атмег.
Принцип "спать всегда", в идеале просыпаться только по прерываням, а если требуется что-то делать периодически - по ватчдогу. Причем по ватчдогу ровно потому, что это самый "длинный" таймер, до 8 сек.
Вот вам другой путь:
ATmega...P... (с индексом "P" - PicoPower) имеет режим Power-save, который потребляет такие же микроамперы, как Power-down, только ещё RTC разрешён. И от асинхронного таймера RTC полУчите те же самые 8 секунд, что от watchdogа. Только это будут точные 8 секунд, а главное - не будет сброса портов.

Да я с ватчдогом тоже не получаю сброса портов :-)

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

А для RTC это вроде еще надо как-то ухитриться часовой кварц поставить? Ухитриться, потому что куда его, на какие ноги?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
07.11.2013, 14:14
Цитата Сообщение от dymys_vyshmyokov
Да я с ватчдогом тоже не получаю сброса портов :-)
Такое возможно не на всех AVR, а только в тех, где у WDT имеется прерывание.

Кстати, по поводу
Цитата Сообщение от dymys_vyshmyokov
Соответственно все переменные, весь конткст, все живо.
- даже если дать WDT сбросить МК, всё равно всё содержимое ОЗУ останется тем же, что до сброса. Так что глобальные переменные могут сохраняться при ресете на любом AVR.

Цитата Сообщение от dymys_vyshmyokov
А для RTC это вроде еще надо как-то ухитриться часовой кварц поставить? Ухитриться, потому что куда его, на какие ноги?
Datasheet -> Async.Timer2 ;-)
Если с выбором МК повезло (нет RTCшных проблем по Errata), то часовой кварц вешается на определённые пины даже без дополнительных конденсаторов. Так что с этим всё просто.
0
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
07.11.2013, 15:42
Цитата Сообщение от dymys_vyshmyokov
Так возвращаемся к исходной проблеме с подбором резисторов или использованием точного подстроечного резистора. Т.к. нужно отлавливать разницу между 12.0 и 13.7 Вольт, а разброс в номинала резисторов делителя даст неточный коэффициент деления...
1.7/12? Да это же 10%. Попробуйте купить сейчас резисторы хуже 5%. А однопроцентные по цене почти не отличаются.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.11.2013, 15:42

Чем отличается измерение мультиметром напряжения постоянного от напряжения переменного тока?
Чем отличается процедура измерения напряжения мультиметром при установке на его панели опций для переменного и постоянного напряжения? ...

Как зарядить одиночную пластину до выходного напряжения умножителя напряжения
Все знают классическую схему умножителя напряжения, который повышает его. Так вот, мне нужно зарядить одиночную пластину из...

Подскажите формулу расчета напряжения, зная амплитудное значения напряжения
Подскажите формулу расчета напряжения зная амплитудное значения напряжения. чет по гуглу не получается (

Квантование сигналов по уровню
На сколько (в дБ) и как изменится отношение мощности случайного сигнала к мощности шума квантования при изменении разрядности АЦП на один...

Вопросы по уровню домена
Скажите, почему называю домен первого уровня,второго, третьего?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru