Страница 1 из 2

научите работать с ЦАП

Добавлено: Вт июл 30, 2013 18:29:12
foton6
Покопался вообщем на просторах интернета, почитал.
Все что прочел было на тему "железа".
Не нашел статеек по программной части.
Точнее меня интересует реализация ЦАП, допустим на Atmega8.
Почтила про R 2R. тут все понятно. Отдаленно начал представлять что происходит в МК.
Хотелось бы точнее знать, что и как писать.
Поделитесь информацией пожалуйста.(пойдут любые статьи и т.п. на русском языке)

Re: научите работать с ЦАП

Добавлено: Вт июл 30, 2013 18:32:40
eess9
Аппаратного ЦАП в mega8 нет.
Я решал эту проблему ШИМ-ом + интегрирующая цепочка.

Re: научите работать с ЦАП

Добавлено: Вт июл 30, 2013 18:34:25
foton6
Тоесть ты хочешь сказать что нельзя при помощи R2R реализовать ЦАП?)

Re: научите работать с ЦАП

Добавлено: Вт июл 30, 2013 18:36:58
eess9
При помощи R2R реализовать ЦАП можно, но внутри mega8 его нет. Вот это я и хочу сказать. Хотите городите внешний на резуках (если есть большое желание), но, по моему, это того не стоит. Легче купить внешний готовый.

Re: научите работать с ЦАП

Добавлено: Вт июл 30, 2013 18:43:04
foton6
Мне интересно на данный момент как на осциллографе рисуют разную "ахинею" (программная часть)
http://cxem.net/beginner/beginner90-21.png к примеру.

Re: научите работать с ЦАП

Добавлено: Вт июл 30, 2013 18:45:14
foton6

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 09:45:37
eess9
Минусы:
1. Используется количество ног контроллера равное разрядности ЦАП. Если вы хотите получить хорошую разрядность (к примеру, восемь) надо отдать весь порт на отступление ЦАП. Не всегда это возможно.
2. Во второй ссылке, автор ясно говорит что точность так себе. Надо 1% резисторы. От себя могу сказать, что 0.1% еще лучше.
3. Сопротивление резисторов ЦАП надо согласовывать с нагрузкой. Это легко решается буфером на операционнике, но +1 корпус.
Плюсы:
1. Дешевезна.

P.S. Может кто-то что-то добавит к выше перечисленному.

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 09:52:08
Gudd-Head
Есть разные виды ЦАП с разными характеристиками. Определитесь что вам надо.
Вот ещё: http://radiokot.ru/circuit/digital/game/03/

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 12:16:23
Аlex
eess9 писал(а):Плюсы:
1. Дешевезна.
2. Скорость вывода значительно выше, чем у PWM+RC.

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 12:17:42
Gudd-Head
Аlex писал(а):PWM+RC.
ШИМ+ФНЧ.

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 19:53:50
foton6
Пока задача довольна банальна, управлять напряжением от 0 до 5в. (предположительно)
Портов достаточно, ценовой вопрос играет роль.
Управление 2 кнопки + и - , и еще автоматическая поддержка выбранного уровня исходя из сигнала поступающего с датчика управляемого устройства.

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 20:01:34
foton6
Да и тут не так важно решение по железу. Мне сейчас важнее освоить сам ЦАП, попутно и АЦП ))))
Все таки в первую очередь я этим занимаюсь для себя нежеле для кого то))
Я вроде уже додумался как надо организовывать программу, но еще не на столько что бы пытаться реализовать что-то.

Тема создана с целью найти хотя бы 1 простенькую программу , желательно для работы с R2R. ибо на подобной проге понятно будет все до безобразия.
Может у кого то есть простенькая прога или хотя бы какой нибудь алгоритм. в GCC ибо АСМ не знаю, пока что))))
А статье в которой разбиралась бы прога и вовсе очень рад был бы)

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 20:20:06
uk8amk
R2R ЦАП бывают не только самодельные. К572ПА1 к примеру тоже содержит такую матрицу. Помню также отдельно выпускались и сборки резисторов для построения преобразователей. Но сейчас это уже как динозавры.
foton6 писал(а):Может у кого то есть простенькая прога или хотя бы какой нибудь алгоритм.
Прога, делающая пилу через ЦАП с периодом 256 мс.
На PORTA висит сам ЦАП.

Код: Выделить всё

uint16_t i;

while( 1 )
{
 for(i=0; i<256; i++)
  {
  PORTA = i;
  delay_ms( 1 );
  };
};

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 20:25:23
foton6
Да ладно)

у меня весь вопрос шол в выстроении единичек в порту последовательно от меньшей к большей))))
неужто они соответствуют значениям в десятичной виде?)))))

А я уж начал выдумывать как бы побитными операциями двигать нолики и единички по порту)

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 20:27:09
foton6
тоесть чем больше десятичное число тем соответственно больше напряжение?))))))
А если прогнать с 1 до 256 через синус а получаемое число "втыкать в таймер" то можно получить рисунок синусойды????

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 20:51:51
uk8amk
Напряжение выхода обычно пропорционально коду.
0x00 = 0V
0x7F = 2.5V
0xFF = 5V.

Если требуется двухполярный выход(-U...+U), то часто используется дополнительный код. Но это не ваш случай.

Следовательно синусоида для 8-битного значения:
PORTA = sin( x ) * 0xFF;
x=[-1...+1]

Поскольку вычисление синусов для простых микроконтроллеров - сложная и долгая задача, то для ускорения помещают заранее посчитанный массив значений в ПЗУ.

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 20:58:29
uk8amk
foton6 писал(а):тоесть чем больше десятичное число тем соответственно больше напряжение?))))))
Хочу отметить, что процессор ничего не знает о десятичных числах. Все представляется в двоичном коде, он же идет в ЦАП.

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 21:02:44
foton6
Всем огромное спасибо)))))
Особенно за это:

Спойлер
uk8amk писал(а):R2R ЦАП бывают не только самодельные. К572ПА1 к примеру тоже содержит такую матрицу. Помню также отдельно выпускались и сборки резисторов для построения преобразователей. Но сейчас это уже как динозавры.
foton6 писал(а):Может у кого то есть простенькая прога или хотя бы какой нибудь алгоритм.
Прога, делающая пилу через ЦАП с периодом 256 мс.
На PORTA висит сам ЦАП.

Код: Выделить всё

uint16_t i;

while( 1 )
{
 for(i=0; i<256; i++)
  {
  PORTA = i;
  delay_ms( 1 );
  };
};
Теперь все стало ясно до нельзя))))
Дальше будем разгадывать осциллограмму обратно в цифру))))

Re: научите работать с ЦАП

Добавлено: Ср июл 31, 2013 21:14:38
foton6
Оу и вопрос на последок)

А ведь проще шимом регулировать от 0 до 5 вольт? (что-то типо автоматического потенциометра)

Re: научите работать с ЦАП

Добавлено: Чт авг 01, 2013 08:17:47
eess9
Gudd-Head писал(а):ШИМ+ФНЧ.
Аналог ЦАПа.