Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

Вачдог это половина решения, если проблема программная то вачдог не спасёт. Из-за какого-нибудь целочисленного переполнения в специфических условиях контроллер решит что напряжение бортсети слишком мало и будет увеличивать ток обмотки возбуждения до максимума. Могут проявится резонансные явления из-за дискретной природы контроля напряжения, нагрузка которая даёт периодическую просадку напряжения в бортсети(коллекторный двигатель, например)  может войти в резонанс с процессом измерения напряжения контроллером и увеличение амплитуды пульсаций напряжения генератора из-за стробоскопического эффекта.

Поэтому, в частности, не увидел многозвенного НЧ фильтра в ОС по напряжению, который бы срезал спектр ниже частоты найквиста и предотвратил такое явление как стробоскопический эффект. Обычной RC-цепочки мало - придётся или сильно занизить частоту среза(и увеличить время реакции на изменение напряжения) или иметь малую эффективность фильтрации. Вроде бы для этого используют фильтры 3-4 порядка, причём очень важно - до программной обработки иначе это всё не имеет смысла.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Вопрос надежности не рассматриваю, по причине, что подобный регулятор уже был установлен в генератор моего автомобиля и жалоб на его работу нет.

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

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

Поэтому от проекта отказываться не буду. 

Так как же лучше реализовать  алгоритм при котором после включения зажигания мк просыпался и ожидал появления переменки с обмотки статора и после получения данного сигнала, что означает двигатель завелся и раскрутил генератор, начинал осуществлять регулирование напряжения?

Саму процедуру регулирования сделал на прерывании ADC Conversion Complete. Она происходит постоянно, вот не пойму как это все совместить. То ли на отдельных прерываниях, то ли включить процедуру опроса в цикл прерывания по ацп.

 

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

@Dim-k12 организуйте прерывание по импульсам с генератора, и в этом прерывании сбрасывайте сторожевой таймер, время которого больше, чем период приходящих импульсов при минимальных оборотах двигателя. А по прерыванию WDT сбрасываете систему. Задержка после старта тоже должна быть больше, чем время WDT.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Благодарю Вас за ответ.

Уточню. Сигнал с обмотки статора приходит на вход РВ1 тиньки, организую прерывание по изменению уровня сигнала на этой ноге. Когда условия для прерывания возникает запускается программа обработки. В ней сбрасываю сторожевой таймер, естественно раньше чем он сработает.  Если мк завис сторожевой таймер сбросит систему.  Это ясно. А вот задержка после старта должна быть больше, чем время WDT.  О какой задержке идет речь?

 

 Прерывания External Interrupt Request 0 имеют приоритет перед ADC Conversion Complete. Выходит мк только будет обрабатывать изменение сигнала на ножке, сбрасывая таймер.

А как же будет выполняться основной процесс регулирования?

Ссылка на комментарий
Поделиться на другие сайты

56 минут назад, Dim-k12 сказал:

 О какой задержке идет речь?

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

56 минут назад, Dim-k12 сказал:

Выходит мк только будет обрабатывать изменение сигнала на ножке

Подпрограмма обработки прерываний сбросит WDT и завершит работу до следующего прерывания. После этого, спокойно, будет выполняться всё остальное.

Изменено пользователем Григорий Т.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Может в прерывании добавить разрешение на запуск регулирования?

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

 

Ссылка на комментарий
Поделиться на другие сайты

А как собираетесь решить проблему курицы и яйца? Чтобы получить импульсы сброса WDT нужно УЖЕ регулировать напряжение. Или не так?

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, Dim-k12 сказал:

Может в прерывании добавить разрешение на запуск регулирования?

Зачем лишние телодвижения? Пока движок не крутится или обороты малы, у вас всё время срабатывает WDT. Как только обороты вышли на разрешённый минимум, WDT перестаёт отрабатывать и начинает работать программа регулировки. Если обороты опять упали (заглох двигатель), программа опять в ауте. 

 

5 часов назад, Dim-k12 сказал:

запуск прерывания в нем сброс WDT и разрешение на запуск АЦП.

Нет. Может обороты ещё маленькие (стартёр работает) а вы уже нагрузите АКБ обмоткой возбуждения.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

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

Конечно никто не жаловался на работу схемы. У вас статистика ещё очень мала, чтобы судить о реальной надёжности. Вот перестанет работать схема, из-за того что в контроллере пару бит флеша слетело(ох как не любит нагрев флеш-память!) за сотню-другую километров до обитаемых мест...

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

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

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

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

10 часов назад, Alexeyslav сказал:

Конечно никто не жаловался на работу схемы. У вас статистика ещё очень мала, чтобы судить о реальной надёжности. Вот перестанет работать схема, из-за того что в контроллере пару бит флеша слетело(ох как не любит нагрев флеш-память!) за сотню-другую километров до обитаемых мест...

Согласен, статистики  мало. Но достаточно статистики по отказам навороченных специализированных микросхем. Например на наши Вазы стали ставить регуляторы на микросхеме L9911. В ней реализованы все алгоритмы контроля и даже плавная подача тока на обмотку возбуждения после запуска двигателя, и повышение напряжения по температуре, вот только надежностью они не славятся и напряжение в них никак не отрегулируешь. Напряжения в 13.8-14.2в для Са/Са акб особенно зимой мало, но это уже другая тема.

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

Посмотрите на фото, плата заводского изготовления и одного производителя, только разных годов выпускаю В магазине внешний вид и маркировка идентичны. Сейчас перешли на вариант с мк, возможно ценовая политика повлияла или другие факторы.  Естественно мк залочен, а с программистом завода лично не знаком:)

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

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

Жду дальнейших идей о реализации алгоритма контроля и управления.

разное железо.jpg

f09ab3cs-960.jpg

58808f4ef2267_.jpg.8e4f24943bd68b09fbc663c29d6cae74.jpg

Ссылка на комментарий
Поделиться на другие сайты

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

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

Драйвера там нет вероятно потому что частота ШИМ достаточно низкая - может даже не больше килогерца, всеравно ротор железный и довольно инертный. Можно даже подсмотреть на живой платке осциллографом.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

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

Прерывания по переменке будет возникать чаще или реже чеп прерывания от ацп?

 

Ссылка на комментарий
Поделиться на другие сайты

А это, собственно абсолютно неважно. Единственное что тебе НАДО будет обеспечить так это атомарность операции, переменная скорей всего будет не байт а двухбайтное слово а у него будет проблема с атомарностью - ведь в середине операции может возникнуть прерывание и сделать декремент "невалидного" состояния переменной. Возникать это будет крайне редко но метко, отловить такую проблему на тестировании будет нереально - внешне всё будет нормально, но... поэтому перед установкой значения этой переменной НАДО запретить прерывания и сделать как минимум один NOP - после запрета прерываний выполняется как минимум одна инструкция до реального запрета.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Alexeyslav сказал:

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

Прерывание в прерывании может возникнуть?

Основная функция зациклена. Вот кусок кода

sei ;Глобальное разрешение прерываний

main: ;Основной цикл программы
rjmp main ;Конец основного цикла программы

;Начало обработчика прерывания от АЦП

ADC_complete:
cli;запретить прерывания от АЦП
in rab, ADCL ;считываем в регистр rab результат преобразования изм напряж из регистра адцл просто чтобы было, использовать эти данные не будем.
in schet, ADCH ;Копирование в регистр schet результата преобразования из рег адцН эти данные будем сравнивать с заданными.

cpi schet, 150 ;сравнение регистра адсН с константой 

Для наглядности приведу таблицу прерываний.

 

алгоритм.jpg

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Dim-k12 сказал:

Прерывание в прерывании может возникнуть?

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

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Да, в прерывании прерывание не возникнет пока специально его не разрешишь. Тогда можно не беспокоится.

Надо использовать прерывание INT0 а не PCINT. Разница в том что PCINT нельзя настроить на одну грань импульса, прерывание будет возникать на обоих гранях и различить их надёжно не представляется возможным.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Григорий Т. сказал:

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

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

Зачем настраивать на грань импульса, ведь переменка, главное есть и достаточно.

 INT0 условия зависят от битов ISC01 и ISC00 это в регистре MCUCR, их нужно поставить в любое изменение логического уровня?

 

инт.jpg

Изменено пользователем Dim-k12
Ссылка на комментарий
Поделиться на другие сайты

11 минуту назад, Dim-k12 сказал:

по даташиту так заявлено.

По даташиту заявлено, что если прерывание разрешено, то оно будет выполняться.

13 минуты назад, Dim-k12 сказал:

их нужно поставить в любое изменение логического уровня?

Не в любое, а нужное вам.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, Dim-k12 сказал:

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

 

 

При входе в прерывание АВТОМАТИЧЕСКИ гасится глобальное разрешение прерываний, а на выходе из прерывания располагают команду возврата с одновременным взведением глобального разрешения прерываний (reti, если я не ошибаюсь в аббревиатурах АСМа для АВР). Если в самом обработчике взвести глобальное разрешение принудительно, это приведет при наличии соответствующего флага к повторному вызову прямо из обработчика. То есть произойдет вложенное прерывание.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Возможно в обработчике прерывания по ацп сделать контроль переменки? 

После вкл. зажигания проснулись и ждем переменку, пришла, значит двигло завелся, делаем задержку, разрешаем АЦП и выходим. 

АЦП замерил, запустил обработчик и уже в нем мониторим не пропала ли переменка, через команду IN temp, PINB  просто считать данные с порта  и уже дальше действовать. Как то громоздко на прерываниях получается.

В 21.01.2017 в 18:34, Alexeyslav сказал:

Схемотехники вырождаются а программистов полно.

В нашей глубинке ни тех ни других!  Скоро на токарном станке некому работать будет.

Ссылка на комментарий
Поделиться на другие сайты

Нет так не получится. У тебя будет стробоскоп ибо на порту с переменки у тебя сигнал то будет то не будет. А в твоём случае важно лишь одно - интервал между импульсами не должен превышать периода на минимальных оборотах - это условие "работы" генератора. А если ты вместе с АЦП будешь считывать, там проблем будет ещё больше - тебе надо определять в прерывании менялся ли сигнал последние N выборок или нет имея на руках только текущее мгновенное значение.

А АЦП должен работать всегда, только ток подаваться на возбуждение при условии что генератор работает - т.е. счётчик "времени" до очередного импульса не равен нулю.

Цитата

INT0 условия зависят от битов ISC01 и ISC00 это в регистре MCUCR

Их надо ставить в 1 1 - rising edge. если ставить на обе грани - в 2 раза больше прерываний будет на оборот. В этом просто нет смысла.

Изменено пользователем Alexeyslav

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

23 минуты назад, Dim-k12 сказал:

Как то громоздко на прерываниях получается.

Чем вас не устроил вариант с WDT?

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...