Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программный АЦП
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Вопросы аналоговой техники
lavrik
Понадобилось заняться таким извращением, как программный АЦП (тестовое задание для трудоустройства). Нашел такой вариант решения проблемы

http://www.bytecraft.com/Low_Cost%2C_Low_S...mbedded_Systems

Но не могу разобраться как работает, даже после перевода статьи...уже и схему в протеусе собрал, в надежде там на осциллографе что-то увидеть, но ничего так и не понял...говорю сразу, что со схемотехникой плоховато, поэтому не судите sad.gif
Tanya
Цитата(lavrik @ Dec 20 2015, 15:12) *
Но не могу разобраться как работает, даже после перевода статьи...уже и схему в протеусе собрал, в надежде там на осциллографе что-то увидеть, но ничего так и не понял...говорю сразу, что со схемотехникой плоховато, поэтому не судите sad.gif

Там же написано -
This mode is actually using the microcomputer as a high gain operational amplifier, that attempts to keep the voltage at the summing junction at the threshold of the low-to-high sense voltage of Pi. The voltage Vi through the input resistance Ri is directly balanced by the average current from the port pin Pf through Rf.
Если плохо видно в симуляторе добавьте компаратор с гистерезисом на вход. Почитайте про сигма-дельта АЦП...
lavrik
Цитата(Tanya @ Dec 20 2015, 15:29) *
Там же написано -
This mode is actually using the microcomputer as a high gain operational amplifier, that attempts to keep the voltage at the summing junction at the threshold of the low-to-high sense voltage of Pi. The voltage Vi through the input resistance Ri is directly balanced by the average current from the port pin Pf through Rf.
Если плохо видно в симуляторе добавьте компаратор с гистерезисом на вход. Почитайте про сигма-дельта АЦП...


Там просто говорится, что для расчета действующего значения нужно пользоваться формулой, которая содержит количество посланных и полученных единиц. А вот как фиксировать эти единицы не понятно...


Цитата
The value of Vmin occurs when Pi is always just at the sense threshold, and the processor is always feeding back a 1 to the Pf pin. At an input of Vmax a 0 is always being fed back from Pf. The A/D value is linear, scaled between Vmin and Vmax, and is determined from the ratio of 1's read on Pi (N1) to the total tests in a sample. The accuracy of the systems is a linear function of test sample size (N). Vi can be calculated from the following relationship:

Vi = (N1 / N) * (Vmax - Vmin)]


Я правильно понял?
Tanya
Цитата(lavrik @ Dec 20 2015, 16:02) *
Там просто говорится, что для расчета действующего значения нужно пользоваться формулой, которая содержит количество посланных и полученных единиц. А вот как фиксировать эти единицы не понятно...

Ну... Придумайте...

Цитата(lavrik @ Dec 20 2015, 16:02) *
Я правильно понял?

Вы привели цитату, но я не могу понять, поняли ли Вы ее смысл...
lavrik
Цитата(Tanya @ Dec 20 2015, 16:35) *
Ну... Придумайте...


Вы привели цитату, но я не могу понять, поняли ли Вы ее смысл...


Хм, по условию задания, в используемом гипотетическом микроконтроллере есть SPI. Можно ли использовать для этого его следующим образом: настраивается в режиме Master, выводы MOSI и MISO замыкаются и контроллер начинает на MOSI посылать по восходящему фронту CLK число 0b11111111. Т.к. это эхо (пины входа и выхода замкнуты), то на MISO будет по нисходящему фронту приходить мгновенно ответ, в котором, как утверждает автор схемы, не все биты будут равны "1". И таких посылок должно быть такое количество, чтобы обеспечивалась достаточная точность, я правильно понимаю?
Сергей Борщ
Цитата(lavrik @ Dec 20 2015, 15:12) *
тестовое задание для трудоустройства
...
говорю сразу, что со схемотехникой плоховато
Так может вы не подходите для этой работы? Сначала вы принесли на форум тестовое задание, потом будете предлагать делать за вас и остальную работу?
lavrik
Цитата(Сергей Борщ @ Dec 20 2015, 19:30) *
Так может вы не подходите для этой работы? Сначала вы принесли на форум тестовое задание, потом будете предлагать делать за вас и остальную работу?

Уважаемый модератор! Я у меня были на выбор и другие задачи, но так сложилось что более реализуемой показалась эта. Я не думаю, что здесь нужно описывать всю ситуацию почему я пытаюсь куда-то трудоустроиться, почему моей квалификации недостаточно (потому что опыта можно сказать нет, а он приходит со стажем). Я всего лишь попросил совета, и не просто сижу и высиживаю время в ожидании ответа, а предлагаю свое понимание данного вопроса и прошу его подкорректировать, если оно не верно. Тем более что задача не особо тривиальная, ладно бы я тут не мог диодом поморгать или разобраться в полностью документированном интерфейсе....

Вы бы лучше подсказали, если знаете, а не ставили бы очевидные вопросы. Если бы я все понял - я бы не писал сюда.
TSerg
Форумы - это не место для получения образования (С)
lavrik
Цитата(TSerg @ Dec 20 2015, 20:37) *
Форумы - это не место для получения образования (С)


А вы знаете как сделать АЦП на двух ножках контроллера? Если знаете - подскажите, не знаете - пройдите, пожалуйста, мимо.
Если вас так беспокоит характер этого задания - рассматриваете его в вакууме. Просто возникла задача и ее нужно решить.
Plain
Вообще-то, найденное Вами решение изначально было одноногим.
lavrik
Цитата(Plain @ Dec 20 2015, 21:59) *
Вообще-то, найденное Вами решение изначально было одноногим.


Одноногим? Расскажите пожалуйста.
Plain
Чего ж непонятного — МК попеременно подаёт на конденсатор ШИМ-пилу и ловит порог на нём.
lavrik
Цитата(Plain @ Dec 20 2015, 22:34) *
Чего ж непонятного — МК попеременно подаёт на конденсатор ШИМ-пилу и ловит порог на нём.


А, понял. Так ШИМ пилу я находил в сети, очень много годных, чуть ли не пошаговых инструкций.

У меня по условию есть 8-битный параллельный порт (читай GPIO) и SPI. Вот на базе этого и надо сварганить....

Но за внимание к проблеме спасибо! sm.gif
Alexashka
Пояснение: ножка контроллера аналогична D-триггеру на моей схеме: как ножка контрооллера с определенной частотой опрашивается в программном цикле, так и триггер тактовым генератором G_KF "опрашивает" состояние своего входа D1, функция
Код
Pf = ~Pi
реализуется тем что мы берем с триггера инвертированный сигнал trig_neg. Если не вдаваться в интегралы и сложные формулы, то по простому данная схема - есть "цифровой операционный усилитель" включенный по схеме инвертирующего усилителя, где отрицательная обратная связь получается за счет фильтрации импульсного сигнала RC цепочкой. Получаемый цифровой сигнал (импульсы различной длительности на trig_out) -если его отфильтровать (выход out) -повторяет с некоторой точностью входной сигнал. Это же значение можно получить так: если за 1000 тактов выход trig_pos находился в состоянии "1" 400 раз, то напряжение на выходе out (а значит и на измеряемом входе) равно 400/1000*5 = 2 В (5 это Vmax-Vmin). В контроллере же это делается просто -в цикле от 1 до 1000 считаем сколько раз входная ножка была в "единице", потом делим на 1000 и умножаем на 5 (или проще говоря на напряжение питания контроллера).
Нажмите для просмотра прикрепленного файла
Aner
В контролере используется два цифровых порта, один на вход, другой на выход. Соединены и поданы на RC - цепку (конденсатор естественно на землю, хотя есть варианты). Далее все програмно делается. При нормировке надо не забыть учесть входное сопротивление входа. Удавалость получить ацп разрядностью до 12 бит, но и тактовая была высокая. Есть эти решения для кучи контролеров в их AN_ах, начиная с восьмибитников атмела, микрочипа и далее. С появлением в контроллерах ацп надобность в программном решении отпала. Вот это был где-то конец 90 годов, начало ... ищите старые ANы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.