реклама на сайте
подробности

 
 
> PWM в PICе, Аспекты реализации
Саша Z
сообщение Mar 21 2009, 18:03
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Есть задача реализации PWM, т.е считывание PWM при сохранении достаточно высокой точности.
На входе контроллера - PWM датчика, нулевой показатель - 50% (с допуском), весь range +/- 12.5% вокруг 50%.
Требуемая точность считывания контроллером: 0.04375% или лучше.
Полный период длится 10 msec.

После считывания PWM входа - нужно делать не сложные расчеты для получения конечных данных + калибрацию датчика, посему реализация будет - простым 8-битным микроконтроллером типа PICa или Atmel ибо нужно низкое потребление.
Вопрос - как обычно реализуется микроконтролером считывание PWMa учитывая требуемую точность ? Ведь там-же программа, а ее real-time есть понятие весьма относительное....
Есть понятие timerа в такого типа контроллерах, как они могут помочь тут ? Считают ли они в точности по clockу контроллера (т.е. по его crystal/oscillator) ?

Прикидочные PWM вычисления:
предположим 10 MHz клок, не учитываем для простоты его ppm и jitter.
получаем длительность периода датчика = 100 000 клоков, 50% -> 50 000/ 100 000.
Требуемая точность: 0.04375% - т.е. минимальный надежно определяемый шаг = каждые 43.75 клока (скажем 43 клока) что есть 49.957% PWM.
Для чисто hardwareной системы (скажем FPGA) - это не проблема, но тут замешана программа выполения которой не всегда дает real-time относительно клока.

Как оно далется контроллерами ?

Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Mar 21 2009, 18:23
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Саша Z @ Mar 21 2009, 22:03) *
Для чисто hardwareной системы (скажем FPGA) - это не проблема, но тут замешана программа выполения которой не всегда дает real-time относительно клока.


Не совсем ясен смысл фразы, т.к. весь реалтайм ограничен сверху Duty Cycle of  PWM output, и в любом случае промежуточные отсчеты измеряемого датчиком параметра надо обрабатывать(интегрировать, усреднять,сглаживать или фильтровать) для согласования с Duty Cycle. Во -вторых: если кратковрЕменная стабильность внутреннего тактового генератора микроконтроллера Вас устроит, то обработка такого сигнала на стороне прибора представляет собой измерение отдельно длительности низкого уровня, и отдельно - высокого. Это я к тому, что прецизионный тактовый генератор можно и не делать, что не может не радовать.
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Mar 21 2009, 18:51
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(_Pasha @ Mar 21 2009, 21:23) *
Не совсем ясен смысл фразы, т.к. весь реалтайм ограничен сверху Duty Cycle of  PWM output, и в любом случае промежуточные отсчеты измеряемого датчиком параметра надо обрабатывать(интегрировать, усреднять,сглаживать или фильтровать) для согласования с Duty Cycle. Во -вторых: если кратковрЕменная стабильность внутреннего тактового генератора микроконтроллера Вас устроит, то обработка такого сигнала на стороне прибора представляет собой измерение отдельно длительности низкого уровня, и отдельно - высокого. Это я к тому, что прецизионный тактовый генератор можно и не делать, что не может не радовать.


Возможно я не совсем ясно обрисовал картину..
датчик дает уже обработанный PWM который отображает замеряемый параметер после требуемых фильтраций и т.д...это не просто A/D после которого-бы действителчно нужно было-бы фильтровать.
К выходу PWM уже можно относиться как в выходному параметру (про замере PWM нужной точности).
В том то и дело что я не знаком с имплементациями подобного плана контроллерами. Мое сомнение было как-раз в плане точности замера высокого/низкого участков контроллером ибо пока туго представляю как делается так что-бы достичь точности. Т.е. в случае испольования скажем FPGA/CPLD - все просто, счетчики на достаточно высокой частоте считают длительность уровней. Но тут контроллер который управляем бегущей программой...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 21 2009, 19:11
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Саша Z @ Mar 21 2009, 22:51) *
Т.е. в случае испольования скажем FPGA/CPLD - все просто, счетчики на достаточно высокой частоте считают длительность уровней. Но тут контроллер который управляем бегущей программой...

Input capture unit в любом приличном МК делает минимум половину того, что надо- т.е. по rising/falling edge отмечает точные временнЫе метки между срабатываниями. Более совершенное, например, в dsPIC30f2010 - посмотрите, там есть модуль измерения PWM-сигнала от датчиков тока.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016