Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 21.01.2014, 11:57  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Вопрос по AD7794 (усиление, уровень VREF)

Что-то не понимаю я, как с этим АЦП работать: не получается менять коэффициент усиления + непонятно, как переводить получаемые единицы в напряжение.

Для повышения точности измерения я хочу повторить статью Henry He "Minimizing errors in multiplexed 3-wire RTD Data-aquisition systems". Для начала я подсоединил IOUT1 к AIN1+, IOUT2 к AIN1-, между ними воткнул переменный резистор на 47к, в качестве Rref воткнул резистор на 15к, соединил VIN1- с REFIN1+.

1) Коэффициент усиления изменяю записью регистра:
Код:
int change_AD7794_gain(uint8_t gain){
	if(gain › 7) return 0;
	ADC_gain = gain;
	uint16_t Conf = read_AD7794_conf();
	check_err();
	Conf &= ~GAIN_MASK; // clear gain bits
	Conf |= (GAIN_MASK & ADC_gain); // update gain
	sendWord(CONF_REGISTER, Conf);
	check_err();
	return 1;
}
а после этого сразу делаю внутреннюю калибровку:
Код:
uint8_t AD7794_calibration(uint8_t channel){
	DBG("AD7794 calibration\n");
	if(ADC_gain == 7){
		DBG("gain = 7, can't calibrate!\n");
		return 0;
	}
	if(!AD7794_set_channel(channel)) return 0;
	sendWord(MODE_REGISTER,
				INT_FS_CAL ); // make a full-scale calibration
	check_err();
	Delay(1);
	DBG("READY!\n");
	return 1;
}
однако, какой бы коэффициент усиления я не выставлял, получаемые данные не меняются.

2) Еще странная вещь: я, конечно, понимаю, что на макетке у меня все шуметь будет, но оно реально шумит так, что по сути только ~7 старших бит являются значимыми!
Где бы вменяемо почитать, как с этим АЦП работать, а то в даташите только описания регистров и элементарщина (непосредственное измерение напряжения) в примере?

3) В даташите на AD7794 написано, что в используемом мною "униполярном" режиме выдаваемый код есть (N = 24):
CODE = (2^N * AIN * GAIN) / VREF
т.е. напряжение на входе есть
AIN = VREF * CODE / (2^N * GAIN).
Как узнать уровень VREF, когда я задаю опорный ток с АЦП, а не опорное напряжение? Сопротивление резистора RREF априори считаем неизвестным и варьируемым. Т.е. перед каждым преобразованием кода в число необходимо узнать, чему равно VREF.
Как это сделать?
Реклама:
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 21.01.2014, 12:09  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

UPD: с коэффициентом усиления у меня самого проблема в коде была:
Код:
Conf |= (GAIN_MASK & ADC_gain);
надо заменить на
Код:
Conf |=  ADC_gain ‹‹ 8;
Но опять какая-то чушь получается. И данные скачут туда-сюда.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 21.01.2014, 12:12  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

У меня вроде была пара устройств с этим чипом. Завтра постараюсь ответить
Gnider вне форума  
Непрочитано 21.01.2014, 12:22  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

Gnider, да мне бы руководство вменяемое. Возможно, после смены коэффициента усиления, нужно не только калибровку сделать, а еще что-то. А в даташите хрен что написали!

Ну, а с VREF вообще непонятно: где ж я возьму резистор с точностью ~6E-6%? Их же в природе тупо не существует! Да и температурные флуктуации явно сопротивление RREF будут сильней менять.

Сейчас глянул внимательней статью Генри Хе: блин, он действительно на RREF рассчитывал!
Я в шоке! Ну и нафига тогда 24 бита, если в самом лучшем случае у нас будет ~10 бит значащих?
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 21.01.2014, 12:34  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

Хорошие резисторы шумят и имеют ткс порядка десятков ппм, а неточность сопротивления можно компенсировать программно

У этого чипа если не ошибаюсь нужно соблюдать тайминги при записи. См даташит
niXto вне форума  
Непрочитано 21.01.2014, 18:13  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

Ничего не понимаю: скорость преобразования уменьшил до минимума. Меняю коэффициент усиления - значения вроде как меняются (но меняются совершенно странно!). Однако, уровень шума все равно очень большой: шумит чуть ли не половина разрядов АЦП!
Вот пример измерений для одного и того же сопротивления (G - коэффициент усиления).
1) опорный ток 1мА
G1 0x0002acc9, 0x0002ac3b, 0x0002ac83, 0x0002acb5, 0x0002ac8d
G2 0x000558fd, 0x0005584f, 0x000558f5, 0x00055903, 0x0005584f
G4 0x0000135d, 0x00003123, 0x00004135, 0x0000223b, 0x00001ba3
G8 0x0000af8, 0x0000f6c1, 0x00004925, 0x000032db, 0x0000aa95
2) опорный ток 210мА
G1 0x000375a3, 0x000374f7, 0x00037559, 0x000374f5, 0x00037571
G2 0x0006e80f, 0x0006e78f, 0x0006e7af, 0x0006e7c1, 0x0006e7c9
G4 0x0000236f, 0x00002c07, 0x00004ef9, 0x000047ad, 0x00004ccb
G8 0x000076bd, 0x0000a455, 0x00009d99, 0x00008665, 0x0000b1b5
G16 0x0000e11d, 0x0000e041, 0x0000efc5, 0x0000d677
3) опорный ток 10мА
G1 0x0009b6dd, 0x0009b4ab, 0x0009b9ad, 0x0009b33f
G2 0x0013a23b, 0x00139abf, 0x00139cff, 0x00139b37
G4 0x002771f5, 0x002774f5, 0x0027709d, 0x00276ce3
G8 0x004e57f5, 0x004f1c49, 0x004f183b, 0x004f1f35
G16 0x009e7ec9, 0x009e7ddd, 0x009e58a3, 0x009e6423

Похоже, что Rref у меня таки не согласован по сопротивлению, поэтому для разных опорных токов получаются разные значения. Может ли такое быть, если Rref › 1к (в моем случае - 47к)?

При росте коэффициента усиления (в последнем случае) шумы тоже растут. Может, это действительно вина макетки? Или опять косяк в коде?

На всякий случай сделал коммит и обновил тарбол для тех, у кого не установлен mercurial.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 21.01.2014, 18:36  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

Сообщение от eddy Посмотреть сообщение
Rref › 1к (в моем случае - 47к)
Не, ну, сами посудите: ток 1мА протекает по Rref = 47кОм, какое при этом будет на опорном резисторе падение напряжения? Причём рабочее напряжение для источника опорного тока не более AVdd-0.65В, а то и меньше.
Единственно рабочий ток в данном случае - это 10мкА. Даже 210мкА слишком много.
Yurkin2014 вне форума  
Непрочитано 21.01.2014, 19:49  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

Сообщение от Yurkin2014 Посмотреть сообщение
какое при этом будет на опорном резисторе падение напряжения?
Ой, дурная моя башка! Что-то я про закон Ома и не вспомнил... Позор на мою седую голову!
Буду завтра сразу пробовать с TRD (1кОм) и резистор Rref поставлю килоомный. Тогда точно можно будет спокойно 1мА загонять.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 22.01.2014, 12:02  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

Итак, поставил Rref = 1.5k и проверил на 100-омном TRD и 150-омном постоянном резисторе. Пока что делал простые измерения без переключения опорных токов. Коэффициенты усиления: от 1 до 16 (т.к. через Rref течет двойной опорный ток, предел сопротивления измеряемого резистора == 2Rref).

С TRD было тяжело, т.к. для постоянства значений нужен термостат. Но примерные результаты такие: относительная погрешность измерений порядка 1E-4, в среднем около 12 значащих разрядов (из 24).

С постоянным резистором попроще: ошибка около 1E-5, 15-16 значащих разрядов. Как ни странно, с ростом коэффициента усиления ошибка росла очень медленно.
Однако, при изменении коэффициента усиления, несмотря на калибровку, нуль таки дрейфовал: вычисленные для разных Gain значения сопротивления составили: 155.96, 155.83, 156.21, 156.32 и 156.23 Ом. Т.о., получилось, что по результатам всех измерений R = 156.1 ± 0.2 Ом и относительная погрешность уже составляет аж 0.13%!!! Что-то я явно не так делаю, раз такая дрянь получается!

Ну, еще проверю метод Генри Хе. Правда, сомневаюсь, что он даст результаты лучше: все равно слабым звеном остается Rref (проверил, как меняются его показания при нагревании рукой: "холодный" показывал R=156.3 Ом, нагретый показал R=156.9 Ом!), из-за его нестабильности реальное разрешение АЦП составляет ~8 разрядов — отсюда и вылезает упомянутая выше погрешность в 0.1%! При нагреве самого резистора показания падают со 156.3 Ом до 155.9 Ом.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 22.01.2014, 18:11  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Вопрос по AD7794 (усиление, уровень VREF)

Написал заметку в ЖЖ по результатам сегодняшних опытов.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Усиление сигнала на ОУ, вопрос насчет питания pavned Электроника - это просто 6 25.06.2013 12:03


Часовой пояс GMT +4, время: 15:54.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot