ЦАП. Максимальное напряжение - половина Vref

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Родился
Сообщения: 8
Зарегистрирован: Чт июл 07, 2011 22:26:31

Сообщение rrrrrrrrrr »

День добрый.
Осваиваю ЦАП DAC8501 http://www.ti.com/lit/ds/sbas212a/sbas212a.pdf
Выводы Vout и Vfb соединил между собой и все это через резистор 2,2кОм на землю. На Vref подал напряжение с опорника REF195 (5V). Питание от USB. Управляю ЦАПом через At90USB162.
Все работает. Но странно. При отправке в ЦАП 0 на выходе появляется 14,8 mV. При отправке 65535 на выходе 2,5V (половина от Vref). Меняется линейно.
Экспериментировал с выводом Vfb. Пробовал оставить его неподсоединенным. При этом на выходе появилось напряжение питания (5,08V), не зависящее от команд.
Хотелось бы иметь Vref на выходе.

Помогите, пожалуйста, разобраться, что за ерунда.

Спасибо :)
Реклама
YAA
Говорящий с текстолитом
Сообщения: 1627
Зарегистрирован: Чт авг 06, 2009 20:34:52
Откуда: Новосибирск

Сообщение YAA »

Как засылали данные?
Реклама
Родился
Сообщения: 8
Зарегистрирован: Чт июл 07, 2011 22:26:31

Сообщение rrrrrrrrrr »

YAA, засылал так:
//настройка SPI
SPCR = 0b01011111;
SPSR = 0b00000001;

//получение из USB
dacMSB = Usb_read_byte();
dacLSB = Usb_read_byte();

//отсылка по SPI
PORTB &= ~(1<<4);
SPDR = 0; //normal operation mode
while(!(SPSR & (1<<7)));
SPDR = dacMSB; //DAC msb
while(!(SPSR & (1<<7)));
SPDR = dacLSB; //DAC lsb
while(!(SPSR & (1<<7)));
PORTB |= (1<<4);
Родился
Сообщения: 8
Зарегистрирован: Чт июл 07, 2011 22:26:31

Сообщение rrrrrrrrrr »

Пока ЦАП не работает, доделываю Устройство. )
В Устройстве ЦАП (DAC8501 http://www.ti.com/lit/ds/sbas212a/sbas212a.pdf ), АЦП (ADS8320 http://www.ti.com/lit/ds/symlink/ads8320.pdf ) и опорное напряжение (REF195 http://www.analog.com/static/imported-f ... Series.pdf ). ЦАП выдает напряжение на клемму. Вторая клемма ведет к земле через сопротивление (2,2 кОм), с которого снимает напряжение АЦП. Клеммы пока замкнуты перемычкой.
Опорное напряжение подсоединено выходом к ЦАП и АЦП.

Списался с АЦП:

SPCR = 0b01011011;


PORTB &= ~(1<<0);
SPDR = 0;
while(!(SPSR & (1<<7)));//junk byte
SPDR = 0;
while(!(SPSR & (1<<7)));// msb
adcMSB = SPDR;
SPDR = 0;
while(!(SPSR & (1<<7)));// lsb
adcLSB = SPDR;
PORTB |= (1<<0);


АЦП тоже работает. Тоже странно )
Когда я отправляю 0хFF на ЦАП (на сопротивлении появляется 2,5V), АЦП также показывает примерно 0xFF (при опорных 5V!! о_О).
Я уже и за осциллографом сходил. Напряжения ровные. Ровно 2,5V на ЦАП; ровно 2,5V на сопротивлении, ровно 5V на опорном.

Показания АЦП очень линейно связаны с посылками в ЦАП. Все работает хорошо. Только кто-то украл полнаряжения...

В качестве жеста отчаяния попробовал повысить скорость SPI. Не помогло. :)
Реклама
Эиком - электронные компоненты и радиодетали
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Схему в студию. Без нее сложно что-то сказать.

И желательно фото платы.

Питание чипов - 5В? Подается надежно?
Когда я отправляю 0хFF на ЦАП (на сопротивлении появляется 2,5V)
Таки 0xFF или 0xFFFF? Он же шестнадцатибитный. Если убрать резистор, что-то меняется?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Родился
Сообщения: 8
Зарегистрирован: Чт июл 07, 2011 22:26:31

Сообщение rrrrrrrrrr »

Да, конечно 0xFFFF :))

Вооружился макетником и феном. Упростил схему. Полностью :)
Контроллер соединен только с ЦАП. Питание и опорное напряжение из USB.
В цикле засылаю 00-FF-FF.
Посмотрел осциллографом информационные линии. CS почти постоянно 0 (короткие единички между актами общения). CLK - равномерная дробь. Dout: 1/3 ноль, 2/3 единица, (по даташиту первый из трех байт посылки должен быть нулевой).
Посмотрел осциллографом питание и выход ЦАП. Все ровное. Питание - 5,08V. Выход 2,54V.
Пробовал слать 00-00-00. На выходе 14,4mV.

Поменял ЦАП. Все осталось прежним, только напряжение после посылки 00-00-00 стало 9,9mV.
Поменял контроллер. Не изменилось ничего.

Грохнул все об пол. Растоптал. Врезал головой по стене. Взял отпуск. Уехал.

Большое спасибо всем, кто попытался мне помочь :))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

rrrrrrrrrr писал(а)://настройка SPI
SPCR = 0b01011111;
DAC8501 защелкивает данные по спаду, поэтому нужно SPCR = 0b01011011;
Контактная информация:
Родился
Сообщения: 8
Зарегистрирован: Чт июл 07, 2011 22:26:31

Сообщение rrrrrrrrrr »

Леонид Иванович писал(а):
rrrrrrrrrr писал(а)://настройка SPI
SPCR = 0b01011111;
DAC8501 защелкивает данные по спаду, поэтому нужно SPCR = 0b01011011;
Да, верно! Забыл, что CLK - от единицы вниз падает. Большое спасибо. Буду внимательнее. Вернусь из отпуска, неприменно еще раз попробую.
Вместе с тем, пробовал засылать в ЦАП 0b10000000 в старшем байте, чтобы проверить, приходит ли первая единичка и она таки приходила - ЦАП выдавал половину своей урезанной нормы...

Раз уж все буду делать заново, не посоветуете ли типовую схему для моей задачки - подавать во внешний контур напряжение и измерять ток, прошедший через контур. Что-то вроде источника напряжения и USB осциллографа в одном флаконе. Для управления ЦАП-АЦП и связи с компьютером я использую такую макетку http://microsin.net/programming/AVR/avr-usb162.html
Мне хотелось бы, по возможности уменьшить шумы, так как устройство будет употребляться для научных измерений. Если я правильно понимаю, нужно поставить развязку по питанию и сигналам между макеткой и ЦАП-АЦП модулем, развести аналоговую и цифровую земли на ЦАП-АЦП модуле, соединив их непосредственно около развязки. И поставить конденсаторы (0,1 и 10 мФ?) сразу после ЦАП.

Большое спасибо за помощь
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Вопрос слишком общий, лучше покажите свой вариант схемы, чтобы было что обсуждать.
Контактная информация:
Ответить

Вернуться в «Практика»