Панель пользователя

Автор Тема: Макрос фильтрации аналогового сигнала  (Прочитано 1251 раз)

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1136
  • Карма: +28/-1
Вход ini - подать лог. 1 после инициализации АЦП контроллера
Вход Ain - фильтруемый параметр, например, температура
Вход Kf - постоянная фильтра. При 0 фильтр отключен. Максимальное значение 100. При максимальном значении происходит максимальное сглаживание входного сигнала. Для температуры постоянную фильтра целесообразно выбирать из диапазона 35-65.

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1136
  • Карма: +28/-1
Re: Макрос фильтрации аналогового сигнала
« Ответ #1 : 27 Октябрь 2015, 14:57:08 »
Написал простой пример использования макроса фильтра.

Код АЦП со всех аналоговых каналов (в данном случае 3 канала) поступает на аналоговый мультиплексор-преобразователь.
После мультиплексора-преобразователя целое значение температуры поступает на вход блоков фильтрации.
С выходов блоков фильтрации получают отфильтрованное и округленное до десятой значение температуры.
« Последнее редактирование: 27 Октябрь 2015, 15:06:03 от mike »

Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1136
  • Карма: +28/-1
Re: Макрос фильтрации аналогового сигнала
« Ответ #2 : 27 Октябрь 2015, 15:46:27 »
Устройство блока мультиплексора-преобразователя.

Мультиплексирование каналов нужно для более рационального использования памяти программ контроллера.
В этом блоке происходит преобразование кода АЦП в температуру и линеаризация показаний каналов. Если не использовать мультиплексор, то потребуется в три раза бо'льший объем памяти программ, т.к. преобразование кода АЦП в температуру производится по таблице, которая "отъедает" значительный объем памяти.

На счетчике и мультиплексоре построен последовательный сканер. Счетчик тактируется от внутреннего цикла контроллера (напомню, что цикл контроллера переменный и в любой момент времени цикл не может быть определен). Тактирование от внутреннего цикла имеет преимущество над тактированием от внешнего генератора: сканирование будет происходить с максимально возможной скоростью в каждый момент исполнения программы.
Далее сигнал со сканера подается на блок линеаризации в котором происходит преобразование кода АЦП в температуру.
Для оптимизации нагрузки на ЦПУ контроллера выбран "щадящий" тип данных выхода - знаковый два байта целый.
Для минимизации потерь значащих данных значения в таблицу заносились с множителем 100 (об этом есть статья на сайте).
С выхода блока линеаризации значение температуры одновременно подается на входы трех триггеров, выполненных на переменных temp1 - temp3.
Сигнал разрешения записи в триггеры формируется магистральным дешифратором, выполненным на основе демультиплексора с логическим типом данных. Дешифратор синхронизирован с мультиплексором каналов.

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


Оффлайн mike

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1136
  • Карма: +28/-1
Re: Макрос фильтрации аналогового сигнала
« Ответ #3 : 27 Октябрь 2015, 15:53:50 »
После преобразований не отфильтрованное значение температуры подается на блок "чистовой" обработки.

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

Фиксация аварии и работа апериодического фильтра разрешается только после инициализации АЦП контроллера (на входе ini присутствует уровень лог. 1)