|
|
  |
PWM в PICе, Аспекты реализации |
|
|
|
Mar 21 2009, 18:03
|
Знающий
   
Группа: Свой
Сообщений: 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 относительно клока.
Как оно далется контроллерами ?
Спасибо
|
|
|
|
|
Mar 21 2009, 18:23
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Саша Z @ Mar 21 2009, 22:03)  Для чисто hardwareной системы (скажем FPGA) - это не проблема, но тут замешана программа выполения которой не всегда дает real-time относительно клока. Не совсем ясен смысл фразы, т.к. весь реалтайм ограничен сверху Duty Cycle of PWM output, и в любом случае промежуточные отсчеты измеряемого датчиком параметра надо обрабатывать(интегрировать, усреднять,сглаживать или фильтровать) для согласования с Duty Cycle. Во -вторых: если кратковрЕменная стабильность внутреннего тактового генератора микроконтроллера Вас устроит, то обработка такого сигнала на стороне прибора представляет собой измерение отдельно длительности низкого уровня, и отдельно - высокого. Это я к тому, что прецизионный тактовый генератор можно и не делать, что не может не радовать.
|
|
|
|
|
Mar 21 2009, 18:51
|
Знающий
   
Группа: Свой
Сообщений: 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 - все просто, счетчики на достаточно высокой частоте считают длительность уровней. Но тут контроллер который управляем бегущей программой...
|
|
|
|
|
Mar 21 2009, 19:39
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Саша Z @ Mar 21 2009, 21:03)  Есть задача реализации PWM, т.е считывание PWM при сохранении достаточно высокой точности. На входе контроллера - PWM датчика, нулевой показатель - 50% (с допуском), весь range +/- 12.5% вокруг 50%. Требуемая точность считывания контроллером: 0.04375% или лучше. Полный период длится 10 msec. Подаете на вход таймера (внешнюю) опору с частотой и (кратковременной) стабильностью, удовлетворяющими требованиям по точности измерения. Для упрощения жизни удобнее (но необязательно, если период PWM не плавает в разы), чтобы за период PWM счетчик не переполнялся более 1 раза. Фиксируете по прерыванию от каждого фронта PWM состояние счетчика. Остается несложная арифметика типа (a-b )/(a+b ), которая должна выполниться за <10 мс. Если период PWM равен 10 msec с точностью 0.04375% или лучше, то арифметика упрощается за счет обходимости деления. Нутряные RC-генераторы что у ПИКов, что у АВРов в качестве опоры заявленные требования по точности по-любому не удовлетворят. Посмотрите какой-то аппнот AD по обработке акселерометров с выходом в PWM - там все это расписано.
|
|
|
|
|
Mar 22 2009, 13:58
|
Группа: Новичок
Сообщений: 6
Регистрация: 13-07-08
Пользователь №: 38 904

|
Цитата(Саша Z @ Mar 22 2009, 13:31)  считывание PWM при сохранении достаточно высокой точности. выбрать ПИК с модулем ССР, он для этого и предназначен: http://ww1.microchip.com/downloads/en/DeviceDoc/31014a.pdf
|
|
|
|
|
Mar 23 2009, 15:54
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 1-11-06
Пользователь №: 21 855

|
Почитайте "Применение модуля захвата, сравнения, ШИМ" http://www.gamma.spb.ru/articles.php?i=27и оригинал на www.microchip.com ищите по Tips'n Tricks
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|