Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: делитель напряжения для Vref АЦП
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Nebel
Использую PIC18f452. Нужно измерить аналог.сигнал используя внешнее опорное напряжение = 6.25 В. На ПИК в качестве опорного 6,25 В подавать нельзя, поэтому, как я понимаю, нужно использовать делитель напряжения и для опорного напряжения и для измеряемого сигнала и все это подключать к МК.
Подскажите пожалуйста, правильно ли я нарисовал схему? или это бредятина полная:
Нажмите для просмотра прикрепленного файла
Vanёk
Цитата(Nebel @ Dec 18 2008, 16:46) *
Использую PIC18f452. Нужно измерить аналог.сигнал используя внешнее опорное напряжение = 6.25 В. На ПИК в качестве опорного 6,25 В подавать нельзя, поэтому, как я понимаю, нужно использовать делитель напряжения и для опорного напряжения и для измеряемого сигнала и все это подключать к МК.
Подскажите пожалуйста, правильно ли я нарисовал схему? или это бредятина полная:
Нажмите для просмотра прикрепленного файла

Для питания МК лучше поставить понижающий преобразователь с фиксированными 5В на выходе, так будет надёжнее. Иначе, при изменении тока потребления, напряжение питания МК будет скакать, а это не айс.
Nebel
Цитата(Vanёk @ Dec 18 2008, 16:53) *
Для питания МК лучше поставить понижающий преобразователь с фиксированными 5В на выходе, так будет надёжнее. Иначе, при изменении тока потребления, напряжение питания МК будет скакать, а это не айс.

В том-то и дело что это не для питания, для питания именно так и делаю. Просто не могу использовать Vdd и Vss со схемы с МК в качестве опорного напряжения, поэтому беру Vref+- внешние (на самом деле это опорное со схемы с МК MC33035) и завожу на входы AN2, AN3.
Т.е. у меня есть датчик у которого есть выходы: Vref+ = 6.25В, 0.0 В, и аналоговый выход принимающий соответственно значения от 0 до 6.25В, который нужно измерить.
Написал как-то сумбурно, но надеюсь понятно smile.gif
Diusha
Ваш делитель дает 5В = Uпитания. Не уверен, что это хорошо. С ПИКами не работаю, не знаю, а для АВР Vref не должно превышать Uпит, поэтому Vref надо делать с небольшим запасом (ниже Uпит).
Nebel
Цитата(Diusha @ Dec 19 2008, 07:14) *
Ваш делитель дает 5В = Uпитания. Не уверен, что это хорошо. С ПИКами не работаю, не знаю, а для АВР Vref не должно превышать Uпит, поэтому Vref надо делать с небольшим запасом (ниже Uпит).

Поменять резисторы с 1 кОм на 1.3 кОм дело не сложное, меня больше интересует в принципе правильный ли подход? или туда еще что-то нужно добавить для защиты?
DpInRock
Напряжение с переменного резистора не будет равно тому, чему вы хотите.
Ибо выходное сопротивление резистора меняется, а делитель его будет дополнительно искажать.

Если переменный резистор очень низкоомный (сотня ом), то этот эффект заметен не будет. А поробуйте представить, что он == 1 Мегому. На половине движка выход будет полмегома, который нагружается на делитель в 5 ком. Напряжение на измерительном входе будет = 0. Практически.
Tanya
Цитата(Nebel @ Dec 18 2008, 16:46) *
Использую PIC18f452. Нужно измерить аналог.сигнал используя внешнее опорное напряжение = 6.25 В. На ПИК в качестве опорного 6,25 В подавать нельзя, поэтому, как я понимаю, нужно использовать делитель напряжения и для опорного напряжения и для измеряемого сигнала и все это подключать к МК.
Подскажите пожалуйста, правильно ли я нарисовал схему? или это бредятина полная:

А может лучше взять и поставить опорник на 4-5 вольт... Или даже tl431 или клоны...
Nebel
Цитата(DpInRock @ Dec 19 2008, 09:28) *
Напряжение с переменного резистора не будет равно тому, чему вы хотите.
Ибо выходное сопротивление резистора меняется, а делитель его будет дополнительно искажать.

Если переменный резистор очень низкоомный (сотня ом), то этот эффект заметен не будет. А поробуйте представить, что он == 1 Мегому. На половине движка выход будет полмегома, который нагружается на делитель в 5 ком. Напряжение на измерительном входе будет = 0. Практически.

На самом деле схема там другая, переменного резистора нет. Есть ШИМ-сигнал с уровнями 6.25В и 0В, его то мне и надо замерить, ничего лучше чем поставить RC-цепочку и получить аналог. сигнал не придумал angry.gif
Нажмите для просмотра прикрепленного файла
Если кто-то "ткнет носом" в другое более правильное решение буду рад smile.gif
Цитата(Tanya @ Dec 19 2008, 11:20) *
А может лучше взять и поставить опорник на 4-5 вольт... Или даже tl431 или клоны...

нельзя, есть готовое устройство, с выходов которого нужно снять данные.
DpInRock
Хрен редьки не слаще. Пульсации будут неслабые. В том смысле, что программно извращаться надо будет.
От частоты конечно зависит. От деталей.
MrYuran
Если нужно мерить скважность ШИМа, то лучше преобразовать его уровень к питанию каким-либо ключом (например, компаратором), затем ваша RC-цепочка, потом на АЦП. Опора - питание.
Только ключ должен быть с пушпульным выходом.
С резисторами точность будет не выше точности резисторов (обычно 5%)
Tanya
Цитата(Nebel @ Dec 19 2008, 11:31) *
На самом деле схема там другая, переменного резистора нет. Есть ШИМ-сигнал с уровнями 6.25В и 0В, его то мне и надо замерить, ничего лучше чем поставить RC-цепочку и получить аналог. сигнал не придумал angry.gif

Если кто-то "ткнет носом" в другое более правильное решение буду рад smile.gif

нельзя, есть готовое устройство, с выходов которого нужно снять данные.

Вы будете среднее значение измерять... Если устраивает...
А можно транзистор ШИМом открывать и измерять времена честно.
@Ark
Цитата(Nebel @ Dec 19 2008, 11:31) *
На самом деле схема там другая, переменного резистора нет. Есть ШИМ-сигнал с уровнями 6.25В и 0В, его то мне и надо замерить, ничего лучше чем поставить RC-цепочку и получить аналог. сигнал не придумал angry.gif
Если кто-то "ткнет носом" в другое более правильное решение буду рад smile.gif

Небольшой расчет: В ДШ на MC33035 указана номинальная частота ШИМ - 25кГц, То есть период - 40мкс. PIC18F452 может работать на частоте 40 МГц, то есть длительность одной команды - 100нс. Можете измерить программно период и длительность импульса, непосредственно отследив его фронты. Для этого соедините выход PWM вашего устройства со входом PIC-ка через резистор 1K. Все, больше ничего не нужно. Измеряя количество команд от начала до конца импульса, получите значение с разрешением примерно 300нс (3 команды). То есть, с точностью примерно 1% даже без усреднения...
P.S. Вряд ли другими способами получите на много лучший результат...
Microwatt
Цитата(Nebel @ Dec 18 2008, 17:46) *
Использую PIC18f452. Нужно измерить аналог.сигнал используя внешнее опорное напряжение = 6.25 В. На ПИК в качестве опорного 6,25 В подавать нельзя, поэтому, как я понимаю, нужно использовать делитель напряжения и для опорного напряжения и для измеряемого сигнала и все это подключать к МК.

Трудно решать любую задачу, если она не сформулирована. Или сформулирована неверно.
Вначале говорится о внешнем опорном, потом выясняется, что это не опорное, а просто ШИМ - сигнал....
Пропустите этот ШИМ через простейший ФНЧ (RC-цепочку), поделите и меряйте штатным АЦП.
Аккуратнее было бы в фильтре использовать масштабирующий ОУ.
Программеры всех стран и народов, настойчиво овладевайте азбукой схемотехники!
@Ark
Цитата(Microwatt @ Dec 19 2008, 16:10) *
...Программеры всех стран и народов, настойчиво овладевайте азбукой схемотехники!

biggrin.gif Хороший призыв! Нельзя не поддержать:
Железячники всех стран и народов, настойчиво овладевайте азбукой программирования! smile.gif
Не "городите" без надобности схемы, состоящие из ФНЧ, масштабирующего ОУ и АЦП, когда проблема решается одним резистором и десятком строк кода...
Microwatt
Цитата(@Ark @ Dec 19 2008, 17:30) *
biggrin.gif Хороший призыв! Нельзя не поддержать:
Железячники всех стран и народов, настойчиво овладевайте азбукой программирования! smile.gif
Не "городите" без надобности схемы, состоящие из ФНЧ, масштабирующего ОУ и АЦП, когда проблема решается одним резистором и десятком строк кода...

Нравится кодом - решайте кодом.
Поделите в столбик 6.25 вольта на 1.25, возьмите среднее арифметическое за 128 прериодов и дело с концом. Ну, можно еще поиск экстремумов или еще что... На листинге работать будет желе... программно, пардон.
rx3apf
Цитата(@Ark @ Dec 19 2008, 14:31) *
Все, больше ничего не нужно. Измеряя количество команд от начала до конца импульса, получите значение с разрешением примерно 300нс (3 команды). То есть, с точностью примерно 1% даже без усреднения...
P.S. Вряд ли другими способами получите на много лучший результат...

Хм. Используя timer capture, можно иметь разрешение, равное частоте тактирования таймера. Всяко лучше, чем делать это программно... Ну, а переводить это в аналог, а потом оцифровывать - помнится, читал я где-то хохму (из нашей российской реальности), где одни печатали документы, а другие эти же документы потом OCRрили. Автоматизация, так сказать...
Nebel
Цитата(Microwatt @ Dec 19 2008, 16:10) *
Трудно решать любую задачу, если она не сформулирована. Или сформулирована неверно.
Вначале говорится о внешнем опорном, потом выясняется, что это не опорное, а просто ШИМ - сигнал....
Пропустите этот ШИМ через простейший ФНЧ (RC-цепочку), поделите и меряйте штатным АЦП.
Аккуратнее было бы в фильтре использовать масштабирующий ОУ.
Программеры всех стран и народов, настойчиво овладевайте азбукой схемотехники!

Прошу всех простить, если запутал smile.gif
Я так и собирался делать:
ШИМ -> ФНЧ -> ДелительНапряжения -> АЦП.

Но на АЦП помимо этого преобразованного ШИМ нужно ведь еще и опорное напряжение падать, которое равно: Vref+=6.25В, Vref-=0 В. Вот я и спрашивал как все это дело привести к уровням 0В и 5В smile.gif

Цитата(rx3apf @ Dec 19 2008, 21:25) *
Хм. Используя timer capture, можно иметь разрешение, равное частоте тактирования таймера. Всяко лучше, чем делать это программно... Ну, а переводить это в аналог, а потом оцифровывать - помнится, читал я где-то хохму (из нашей российской реальности), где одни печатали документы, а другие эти же документы потом OCRрили. Автоматизация, так сказать...

Эээх сам понимаю что левой ногой правое ухо...
Microwatt
Цитата(Nebel @ Dec 20 2008, 01:44) *
Я так и собирался делать:
ШИМ -> ФНЧ -> ДелительНапряжения -> АЦП.

Но на АЦП помимо этого преобразованного ШИМ нужно ведь еще и опорное напряжение падать, которое равно: Vref+=6.25В, Vref-=0 В. Вот я и спрашивал как все это дело привести к уровням 0В и 5В smile.gif
...

Хм.. так в АЦП СВОЕ ОПОРНОЕ есть. АЦП без опорного напряжения не бывает в природе. Вход АЦП инвариантен к значению внутреннего опорного. Вы можете даже не знать его конкретное значение.
Насколько можно понять Вашу проблему, Вам нужно всего лишь измерить напряжение амплитудой 0-6.25вольта, имея в контроллере АЦП с диапазоном 0-5 вольт. Положение усложняется тем, что входной сигнал не постоянное напряжение, а ШИМ с амплитудой 6.25 вольта?
Если параметр меняется не очень быстро, то просто пропустить ШИМ через RC-цепочку с постоянной времени раз в 100 больше периода ШИМ. Получите среднее значение ШИМ с пульсацией в 1%. Этого более чем достаточно для скоростей электропривода.
Поделите выход в соотношении 5/6.25 чтобы промасштабировать шкалу. (Ну, резисторы 10 и 2.5 кОм, грубо говоря). С 10 кОм подайте на вход АЦП. Вот и все.
Конечно, нужно учесть выходное сопротивление источника сигнала, входное сопротивление АЦП и разброс номиналов. Но, раз в условии задачи этого нет, значит Вы хорошо в этом ориентируетесь самостоятельно. 3-5% ошибка для такой задачи вполне приемлема.
Если что-то не так - сформулируйте саму задачу внятно.
@Ark
Цитата(Microwatt @ Dec 19 2008, 21:12) *
Нравится кодом - решайте кодом.
Поделите в столбик 6.25 вольта на 1.25, возьмите среднее арифметическое за 128 прериодов и дело с концом. Ну, можно еще поиск экстремумов или еще что... На листинге работать будет желе... программно, пардон.

Ну, у Вас это ни на листинге не будет работать, ни железно, ни как... Раз собираетесь делить напряжения в столбик, вместо того, чтобы измерить временные интервалы. Когда задача, просто решается "в лоб" программно, Вы предпочитаете схемотехническое решение... Ну-ну, никто не может Вам запретить "чесать левой ногой правое ухо"...


Цитата(rx3apf @ Dec 19 2008, 21:25) *
Хм. Используя timer capture, можно иметь разрешение, равное частоте тактирования таймера. Всяко лучше, чем делать это программно...

Период ШИМ таким способом понятно как измерить. А длительность импульса? Поясните, если не сложно.
rx3apf
Цитата(@Ark @ Dec 20 2008, 04:58) *
Период ШИМ таким способом понятно как измерить. А длительность импульса? Поясните, если не сложно.

Если скважность PWM ограничена, можно ведь и перекинуть полярность детектирования фронта. Или - брать кристалл с двумя захватами. Как вариант, если допускается усрединение - можно просто разрешать счет таймера по наличию входного сигнала, а дальше скважность считается простым делением.
xemul
Цитата(@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.
Nebel
Цитата(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.
спасибо Всем кто принимает участие в обсуждении smile.gif
@Ark
Цитата(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-битный результат.
Предлагаемыми схемотехническими методами его еще надо достичь...
По моему, для автора темы, выбор методов должен быть очевиден...
Nebel
Цитата(@Ark @ Dec 20 2008, 13:45) *
По моему, для автора темы, выбор методов должен быть очевиден...

Да, очевиден smile.gif Спасибо большое за предложенные варианты решения.
Но, я не зря рассматриваю вариант только с АЦП (т.е. ШИМ->ФНЧ->АЦП) - у меня ограничения со схемотехникой: приходится работать на готовой плате, где часть выходов с PICа разведена так что к ним не подобраться (я понимаю что изврат и что чесание левой ногой правого уха)...
Microwatt
Цитата(@Ark @ Dec 20 2008, 05:58) *
Ну, у Вас это ни на листинге не будет работать, ни железно, ни как...

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

Можно и через АЦП, если настаиваете. smile.gif
Нужно измерить напряжение сигнала (ШИМ, пропущенный через ФНЧ) через делитель. А затем измерить напряжение опорных 6,25В через точно такой же делитель. Затем взять их соотношение.
В качестве опоры для внутреннего АЦП нужно использовать напряжение питания PIC-а, а делители нужно взять не 5/6.25, а например 3/4, чтобы не работать на краю диапазона (для 6.25В). При таком методе точность результата не будет зависеть от значений напряжений питания PIC и MC33035 и их допустимых отклонений.
P.S. Только, для этой задачи, это все равно извращение. Напрямую измерить временные параметры ШИМ проще и эффективнее...
Microwatt
Цитата(@Ark @ Dec 20 2008, 20:40) *
Напрямую измерить временные параметры ШИМ проще и эффективнее...

Если есть вычислительные ресурсы, и контроллеру больше нечем заниматься - да, можно и так..
Правильно почтовые марки отклеивать в холодной воде.
Еще правильнее - в теплой.
А особо тонкие ценители собирают прямо с конвертами smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.