|
делитель напряжения для Vref АЦП |
|
|
|
Dec 19 2008, 18:25
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(@Ark @ Dec 19 2008, 14:31)  Все, больше ничего не нужно. Измеряя количество команд от начала до конца импульса, получите значение с разрешением примерно 300нс (3 команды). То есть, с точностью примерно 1% даже без усреднения... P.S. Вряд ли другими способами получите на много лучший результат... Хм. Используя timer capture, можно иметь разрешение, равное частоте тактирования таймера. Всяко лучше, чем делать это программно... Ну, а переводить это в аналог, а потом оцифровывать - помнится, читал я где-то хохму (из нашей российской реальности), где одни печатали документы, а другие эти же документы потом OCRрили. Автоматизация, так сказать...
|
|
|
|
|
Dec 19 2008, 21:44
|
Группа: Участник
Сообщений: 14
Регистрация: 16-06-08
Из: Москва
Пользователь №: 38 319

|
Цитата(Microwatt @ Dec 19 2008, 16:10)  Трудно решать любую задачу, если она не сформулирована. Или сформулирована неверно. Вначале говорится о внешнем опорном, потом выясняется, что это не опорное, а просто ШИМ - сигнал.... Пропустите этот ШИМ через простейший ФНЧ (RC-цепочку), поделите и меряйте штатным АЦП. Аккуратнее было бы в фильтре использовать масштабирующий ОУ. Программеры всех стран и народов, настойчиво овладевайте азбукой схемотехники! Прошу всех простить, если запутал  Я так и собирался делать: ШИМ -> ФНЧ -> ДелительНапряжения -> АЦП.Но на АЦП помимо этого преобразованного ШИМ нужно ведь еще и опорное напряжение падать, которое равно: Vref+=6.25В, Vref-=0 В. Вот я и спрашивал как все это дело привести к уровням 0В и 5В  Цитата(rx3apf @ Dec 19 2008, 21:25)  Хм. Используя timer capture, можно иметь разрешение, равное частоте тактирования таймера. Всяко лучше, чем делать это программно... Ну, а переводить это в аналог, а потом оцифровывать - помнится, читал я где-то хохму (из нашей российской реальности), где одни печатали документы, а другие эти же документы потом OCRрили. Автоматизация, так сказать... Эээх сам понимаю что левой ногой правое ухо...
|
|
|
|
|
Dec 20 2008, 01:08
|
Гуру
     
Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802

|
Цитата(Nebel @ Dec 20 2008, 01:44)  Я так и собирался делать: ШИМ -> ФНЧ -> ДелительНапряжения -> АЦП.Но на АЦП помимо этого преобразованного ШИМ нужно ведь еще и опорное напряжение падать, которое равно: Vref+=6.25В, Vref-=0 В. Вот я и спрашивал как все это дело привести к уровням 0В и 5В  ... Хм.. так в АЦП СВОЕ ОПОРНОЕ есть. АЦП без опорного напряжения не бывает в природе. Вход АЦП инвариантен к значению внутреннего опорного. Вы можете даже не знать его конкретное значение. Насколько можно понять Вашу проблему, Вам нужно всего лишь измерить напряжение амплитудой 0-6.25вольта, имея в контроллере АЦП с диапазоном 0-5 вольт. Положение усложняется тем, что входной сигнал не постоянное напряжение, а ШИМ с амплитудой 6.25 вольта? Если параметр меняется не очень быстро, то просто пропустить ШИМ через RC-цепочку с постоянной времени раз в 100 больше периода ШИМ. Получите среднее значение ШИМ с пульсацией в 1%. Этого более чем достаточно для скоростей электропривода. Поделите выход в соотношении 5/6.25 чтобы промасштабировать шкалу. (Ну, резисторы 10 и 2.5 кОм, грубо говоря). С 10 кОм подайте на вход АЦП. Вот и все. Конечно, нужно учесть выходное сопротивление источника сигнала, входное сопротивление АЦП и разброс номиналов. Но, раз в условии задачи этого нет, значит Вы хорошо в этом ориентируетесь самостоятельно. 3-5% ошибка для такой задачи вполне приемлема. Если что-то не так - сформулируйте саму задачу внятно.
|
|
|
|
Guest_@Ark_*
|
Dec 20 2008, 01:58
|
Guests

|
Цитата(Microwatt @ Dec 19 2008, 21:12)  Нравится кодом - решайте кодом. Поделите в столбик 6.25 вольта на 1.25, возьмите среднее арифметическое за 128 прериодов и дело с концом. Ну, можно еще поиск экстремумов или еще что... На листинге работать будет желе... программно, пардон. Ну, у Вас это ни на листинге не будет работать, ни железно, ни как... Раз собираетесь делить напряжения в столбик, вместо того, чтобы измерить временные интервалы. Когда задача, просто решается "в лоб" программно, Вы предпочитаете схемотехническое решение... Ну-ну, никто не может Вам запретить "чесать левой ногой правое ухо"... Цитата(rx3apf @ Dec 19 2008, 21:25)  Хм. Используя timer capture, можно иметь разрешение, равное частоте тактирования таймера. Всяко лучше, чем делать это программно... Период ШИМ таким способом понятно как измерить. А длительность импульса? Поясните, если не сложно.
|
|
|
|
|
Dec 20 2008, 09:47
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(@Ark @ Dec 20 2008, 04:58)  Период ШИМ таким способом понятно как измерить. А длительность импульса? Поясните, если не сложно. В PIC18F452 два 16-битных регистра захвата. Один настраивается на 0/1, другой наоборот. Пара арифметических операций - вуаля. С 40 МГц Fosc получается ~8.5 бит/период ШИМ (при частоте ШИМ 25 кГц). Если допустимо усреднение, то можно включить прескейлеры по CCPx (1:4 или 1:16) и соответственно поднять разрешение. Т.к. с прескейлерами модули CCP в PIC18F452 работают только по 0/1, придется снаружи поставить инвертор на один из входов CCP.
|
|
|
|
|
Dec 20 2008, 10:31
|
Группа: Участник
Сообщений: 14
Регистрация: 16-06-08
Из: Москва
Пользователь №: 38 319

|
Цитата(Microwatt @ Dec 20 2008, 04:08)  Хм.. так в АЦП СВОЕ ОПОРНОЕ есть. АЦП без опорного напряжения не бывает в природе. Вход АЦП инвариантен к значению внутреннего опорного. Вы можете даже не знать его конкретное значение. Насколько можно понять Вашу проблему, Вам нужно всего лишь измерить напряжение амплитудой 0-6.25вольта, имея в контроллере АЦП с диапазоном 0-5 вольт. Положение усложняется тем, что входной сигнал не постоянное напряжение, а ШИМ с амплитудой 6.25 вольта? Если параметр меняется не очень быстро, то просто пропустить ШИМ через RC-цепочку с постоянной времени раз в 100 больше периода ШИМ. Получите среднее значение ШИМ с пульсацией в 1%. Этого более чем достаточно для скоростей электропривода. Поделите выход в соотношении 5/6.25 чтобы промасштабировать шкалу. (Ну, резисторы 10 и 2.5 кОм, грубо говоря). С 10 кОм подайте на вход АЦП. Вот и все. Конечно, нужно учесть выходное сопротивление источника сигнала, входное сопротивление АЦП и разброс номиналов. Но, раз в условии задачи этого нет, значит Вы хорошо в этом ориентируетесь самостоятельно. 3-5% ошибка для такой задачи вполне приемлема. Если что-то не так - сформулируйте саму задачу внятно. Если мы измеряем напряжение, то мы же его измеряем относительно опорного, а в моем случае опорное, которое уже есть в АЦП, развязано с измеряемым сигналом. Если бы я подключил потенциометр и запитал его тем же Vss и Vdd что и PIC то все понятно: ADCON в PICе настраиваю так чтобы использовалось внутреннее напряжение, а на вход АЦП подаю сам сигнал. Но у меня же другой случай, плата с MC33035 MC33039 имеют свое питание, 33039 (та что генерит ШИМ) питается от 8-й ноги 33035 (там 6.25В). Соответственно мне нужно подавать внешнее опорное напряжение (оно как раз таки и равно 0 и 6.25В). Я не прав в своих рассуждениях? Вот схема подключения к АЦП PIC18Fxx2 (стр 174 русского мануала):
Цитата(xemul @ Dec 20 2008, 12:47)  В PIC18F452 два 16-битных регистра захвата. Один настраивается на 0/1, другой наоборот. Пара арифметических операций - вуаля. С 40 МГц Fosc получается ~8.5 бит/период ШИМ (при частоте ШИМ 25 кГц). Если допустимо усреднение, то можно включить прескейлеры по CCPx (1:4 или 1:16) и соответственно поднять разрешение. Т.к. с прескейлерами модули CCP в PIC18F452 работают только по 0/1, придется снаружи поставить инвертор на один из входов CCP. а вот про это я даже не подумал :-( P.S. спасибо Всем кто принимает участие в обсуждении
Сообщение отредактировал Nebel - Dec 20 2008, 10:32
|
|
|
|
Guest_@Ark_*
|
Dec 20 2008, 10:45
|
Guests

|
Цитата(rx3apf @ Dec 20 2008, 09:29)  Если скважность PWM ограничена, можно ведь и перекинуть полярность детектирования фронта. Или - брать кристалл с двумя захватами. Как вариант, если допускается усрединение - можно просто разрешать счет таймера по наличию входного сигнала, а дальше скважность считается простым делением. Цитата(xemul @ Dec 20 2008, 12:47)  В PIC18F452 два 16-битных регистра захвата. Один настраивается на 0/1, другой наоборот. Пара арифметических операций - вуаля. С 40 МГц Fosc получается ~8.5 бит/период ШИМ (при частоте ШИМ 25 кГц). Если допустимо усреднение, то можно включить прескейлеры по CCPx (1:4 или 1:16) и соответственно поднять разрешение. Т.к. с прескейлерами модули CCP в PIC18F452 работают только по 0/1, придется снаружи поставить инвертор на один из входов CCP. Понятно. Спасибо за пояснения. Хотя, даже моим методом, получается минимум 7-битный результат. Предлагаемыми схемотехническими методами его еще надо достичь... По моему, для автора темы, выбор методов должен быть очевиден...
|
|
|
|
|
Dec 20 2008, 11:11
|
Группа: Участник
Сообщений: 14
Регистрация: 16-06-08
Из: Москва
Пользователь №: 38 319

|
Цитата(@Ark @ Dec 20 2008, 13:45)  По моему, для автора темы, выбор методов должен быть очевиден... Да, очевиден  Спасибо большое за предложенные варианты решения. Но, я не зря рассматриваю вариант только с АЦП (т.е. ШИМ->ФНЧ->АЦП) - у меня ограничения со схемотехникой: приходится работать на готовой плате, где часть выходов с PICа разведена так что к ним не подобраться (я понимаю что изврат и что чесание левой ногой правого уха)...
|
|
|
|
|
Dec 20 2008, 15:13
|
Гуру
     
Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802

|
Цитата(@Ark @ Dec 20 2008, 05:58)  Ну, у Вас это ни на листинге не будет работать, ни железно, ни как... У меня - да. А у программеров работает. Чтобы получить 100 вольт они на вход подают 5, умножают на 20 и- готово! Никаких аппаратных излишеств! А если без шуток, то, конечно же этот ШИМ можно и программно померять. Нужно привести эти 6.25 вольта к логическому уровню, определять моменты перепада сигнала и мерять времена достаточно точно. Далее - чистая арифметика. Но вопрос-то был сформулирован про АЦП?
|
|
|
|
Guest_@Ark_*
|
Dec 20 2008, 16:40
|
Guests

|
Цитата(Microwatt @ Dec 20 2008, 18:13)  Но вопрос-то был сформулирован про АЦП? Можно и через АЦП, если настаиваете. Нужно измерить напряжение сигнала (ШИМ, пропущенный через ФНЧ) через делитель. А затем измерить напряжение опорных 6,25В через точно такой же делитель. Затем взять их соотношение. В качестве опоры для внутреннего АЦП нужно использовать напряжение питания PIC-а, а делители нужно взять не 5/6.25, а например 3/4, чтобы не работать на краю диапазона (для 6.25В). При таком методе точность результата не будет зависеть от значений напряжений питания PIC и MC33035 и их допустимых отклонений. P.S. Только, для этой задачи, это все равно извращение. Напрямую измерить временные параметры ШИМ проще и эффективнее...
|
|
|
|
|
Dec 20 2008, 18:37
|
Гуру
     
Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802

|
Цитата(@Ark @ Dec 20 2008, 20:40)  Напрямую измерить временные параметры ШИМ проще и эффективнее... Если есть вычислительные ресурсы, и контроллеру больше нечем заниматься - да, можно и так.. Правильно почтовые марки отклеивать в холодной воде. Еще правильнее - в теплой. А особо тонкие ценители собирают прямо с конвертами
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|