Здравствуйте. Есть задача реализовать детектор нуля трех фаз на МК STM32F103C8T6. Реализацию хотел сделать полностью аппаратно. Я настроил Вочдог АЦП на инжектированную группу из трех каналов. Выбрал именно инжектированную группу потому, что у этих каналов есть свои отдельные регистры хранения результата. Срабатывает прерывание по вочдог и я смотрю регистры инжектрованных каналов, в идеале должно быть так, что в двух регистрах должно быть число близкое 4095 а в третьем регистре число близкое к 0. На входы ацп я подаю сгенерированный ШИМ сигнал с другой платы, там на всех каналах высокий уровень и периодические импульсы в 0 сдвинутые между собой на 60град или 3.3мс. Запускаю преобразование инжектированной группы по таймеру 1 аппаратно. Копирую данные из регистров инжектированных каналов по прерыванию вочдог. Проблемма в том, что результат периодически таков, что во всех трех регистрах данные не удовлетроряющие диапазону Вочдог тоесть например 4001 4000 3894. Или 0 3586 0. В идеале должно быть 0 1 1 или 1 0 1 или 1 1 0. Чтобы я мог понять какая фаза вызвала прерывание. Но результат таков. Помогите, пожалуйста разобраться. Кто имел дело с задачей использования аналогового компаратора для нескольких каналов? Использую CubeIDE
Вложения:
Комментарий к файлу: Это нормальная ситуация Снимок2.PNG [193.37 KiB]
Скачиваний: 481
Комментарий к файлу: Так быть не должно Снимок.PNG [193.99 KiB]
Скачиваний: 476
Нельзя поставить. Задача то отследить ноль, чтобы потом с этим что-то делать дальше, а именно открывать тиристоры. Реализация интересует только программная и только на STM32F103
Заголовок сообщения: Re: Как реализовать аналоговый компаратор 3 канала на STM32F
Добавлено: Ср авг 14, 2019 10:12:21
Собутыльник Кота
Карма: 38
Рейтинг сообщений: 268
Зарегистрирован: Пт сен 07, 2018 20:20:02 Сообщений: 2723 Откуда: деревня в Тульской губернии
Рейтинг сообщения:0 Медали: 1
Lihodey, проблема в том, что АЦП в МК только один. Просто вход его коммутируем и преобразование можно запустить на каждом из входов. Потому я и поддержал мнение BOB51. Проще поставить, например, один LM324 в качестве трех аппаратных компараторов.
Lihodey, проблема в том, что АЦП в МК только один. Просто вход его коммутируем и преобразование можно запустить на каждом из входов. Потому я и поддержал мнение BOB51. Проще поставить, например, один LM324 в качестве трех аппаратных компараторов.
Наверное Вы меня не поняли, а я возможно немного выразился неправильно. Аппаратно имеется ввиду периферийно, тоесть средствами МК, а не внешними схемами. Внешняя схема формирования импульса при переходе через ноль к определению этого события в программе не имеет никакого отношения.
Добавлено after 8 minutes 12 seconds: Re: Как реализовать аналоговый компаратор 3 канала на STM32F103 Прилагаю проект конфигурации CubeMX. Замените расширение файла из .jpg в конце имени файла на .ioc разрешение запрещено администратором. и не прикладывался файл. Должно получиться MTP-PRA.ioc
три оптопары, три диодных моста. чуток сопротов на выходе получаем ЦИФРОВОЙ сигнал выплески - твои НУЛИ.
какой нах АЦП?
Складывается впечатление,что вы не в курсе, что такое Вочдог АЦП. АЦП потому что у стм32 нету компаратора на борту. И это типа замена аналог компаратору.
Добавлено after 2 minutes 31 second: Re: Как реализовать аналоговый компаратор 3 канала на STM32F103 Вопрос по программированию, прекратите лепить в эту тему свои схемы аналоговые с оптронами и прочей лабудой. Внешняяя схема доставляет информацию в МК а уже в МК необходимо эту информацию обработать. Проблема в теме именно в обработке, захвате события когда на ножке происходит отрицательный импульс.
Добавлено after 37 minutes 15 seconds: Re: Как реализовать аналоговый компаратор 3 канала на STM32F103 Разобрался. Тему закрыть можно
У тебя диапазон заряжен 2000-4095 , а ловить хочешь 0 ?
Да, прерывание происходит именно когда результат выходит за 2000-4095 тоесть меньше 2000. Все получилось уже. Тема не актуальна. Проблема была в восприятии поочередного измерения каналов. Я своими брекпоинтами сам себя запутал. Просто такое нельзя симулировать шагая по брекпоинту. У меня в одном регистре были старые данные а в другом новые. А так данная реализация полностью справляется с определением нуля именно в той фазе которая вызвала прерывание.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения