bychkov77
Участник-
Постов
6 -
Зарегистрирован
-
Посещение
Репутация
0 Обычный-
премного благодарю, помогло, как баран на новые ворота после 10 лет совместной жизни с лайоутом.
-
Добрый день уважаемые форумчане. Перехожу с Orcad Layout на Orcad PCB editor, на данный момент использую версию 16.5, и литература есть в электронном виде, но застрял на одном моменте: сделал схему, указал футпринты, сделал лист связи, открылся PCB editor, набросал компоненты на плату, "развёл" плату, всё вроде хорошо, хотел изучать дальше. Но, попробовал добавить компонент в схеме и обновить листвязи с платой, появляется ошибка на стадии обновления платы, читаю из netrev.lst: "ERROR: File "777.brd" was locked on date "Wed Mar 26 12:33:28 2014" by user "Àëåêñàíäð" on system "BAAW7". Resolve lock file and re-run netrev." 777.brd - это файл платы (file - properties - loc database - галки нет), почему то он не хочет обновляться, уж и с настройками играл и погуглил... Помогите, может кто знает в чем проблема
-
да, вы правы, но эту конструкцию мой компилятор проглатывает без вопросов, поэтому и не замарачивался, но спасибо :-) Сделал как посоветовал Ruslan1, разница в показаниях двух АЦП составила 3 дискрета (вместо 60), проверил показания ещё на 2-х таких же АЦП разница в показаниях не превысила 7 дискрет, меня это более чем устраивает, УРА :w00t: !!! Ещё раз большая благодарность, Руслану! Жаль что с внутренней калибровкой не получилось разобраться, ещё потыкаюсь немного и если ни чего не получится оставлю как есть. нагрел феном, точно не знаю на сколько возможно с 25 до 50 градусов, и показания уплыли аж на 20 дискрет, но феном грел всю плату, локально не получилось, Rref тоже грелся, нужно будет это учитывать. У меня коэфициент усиления 1 и 2 в зависимоти от диапазона измерения "For gains of 1, 2, and 4, an internal full-scale calibration can be performed at any update rate" - это из даташита, Татьяна это я читал, но спасибо :-) P.S. Да ещё, резистор 1000 Ом подсоединенный вместо RTD тоже нагревался со всей платой, по этому не удивительно что показания изменились на 20 дискрет
-
Калибровка второго канала АЦП (Измерение RTD на втором канале у меня) соответственно калибрую только его. Значения калибровочных регистров читаю сразу после окончания калибровок. У меня всегда читается 0x8000 и 0x5555 //************************************************** // Interal Zero and Full-scale calibration //************************************************** void internal__calibration(BYTE Ch) { WORD* Zr; WORD* Fs; if (Ch==1) // Set CS pin of AD9972 {ADC_CS2 = 1; ADC_CS1 = 0; Zr = &Zero_reg1; Fs = &Full_Sc1;} // First ADC is enabled else {ADC_CS2 = 0; ADC_CS1 = 1; Zr = &Zero_reg2; Fs = &Full_Sc2;} // Second ADC is enabled // set IO register Spi2_Write(0x28); // Write to COMMUNICATIONS register for select IO register writing Spi2_Write(0x02); // Write to IO register. Current Source Value = 210uA, // Current Source IEXC1 connected to Pin IOUT1, Current Source IEXC2 connected to Pin IOUT2. //set CONFIG register. Here, select ADC channel for calibration Spi2_Write(0x10); // Write to COMMUNICATIONS register for select CONFIG register writing Spi2_Write(0x11); // Write high byte to CONFIG register Spi2_Write(0x81); // Write low byte to CONFIG register. Channel AIN2(+) – AIN2(–), // Internal Reference Selected, unbuffered mode, Gain 1, Bias voltage connected to AIN2(-) // Zero internal calibration Spi2_Write(0x08); // Write to COMMUNICATIONS register for select MODE register writing Spi2_Write(0x80); // Write high byte to MODE register. Set Zero calibration start bit Spi2_Write(0x0F); // Write low byte to MODE register. Set update rate 4 Hz while(DOUT == 1); // wait while calibration performing // get OFFSET register value Spi2_Write(0x70); // Write to COMMUNICATIONS register for select OFFSET register reading buf1 = Spi2_Read(buffer); // Reading high byte to OFFSET register buf2 = Spi2_Read(buffer); // Reading low byte to OFFSET register *Zr = (WORD) ((WORD) (buf1<<8) | (WORD) (buf2)); // OFFSET register value //Full-scale internal calibration Spi2_Write(0x08); // Write to COMMUNICATIONS register for select MODE register writing Spi2_Write(0xA0); // Write high byte to MODE register. Set Zero calibration start bit Spi2_Write(0x0F); // Write low byte to MODE register. Set update rate 4 Hz while(DOUT == 1); // wait while calibration performing // get FULL SCALE register value Spi2_Write(0x78); // Write to COMMUNICATIONS register for select FULL SCALE register reading buf1 = Spi2_Read(buffer); // Reading high byte to FULL SCALE register buf2 = Spi2_Read(buffer); // Reading low byte to FULL SCALE register *Fs = (WORD) ((WORD) (buf1<<8) | (WORD) (buf2)); // FULL SCALE register value ADC_CS1 = 1; ADC_CS2 = 1; // Disable both CSs }
-
Ruslan1, Благодарю за совет , сегодня переделаю схему и скорректирую софт для проверки. Я подозревал что это из за несбалансированности источников тока, все таки +-0,5% это много... по результатам отпишусь.
-
Внутренняя Калибровка AD7792
bychkov77 опубликовал тема в Метрология, датчики, измерительная техника
Добрый день! Борюсь с чипом АЦП AD7792. Точнее сразу с двумя, они у меня подключены на один SPI канал процессора и выбираются поочерёдно подачей нуля на CS входы чипов. АЦП используются для измерения сопротивления RTD элементов (PT100 и PT1000). Для теста подключил резистор 1000 Ом 1% на вход первой АЦП, и затем на вход второй АЦП, и снимаю показания. Одна стабильно выдаёт 13022-13023 дискрет, вторая - 13083-13084. Разница 61 дискрет - это много Затем брал другой резистор того же номинала и точности - показания отличаются в пределах точности резистора, и получаем ту же разницу в 61 дискрет между первой и второй АЦП. При подключении резистора 500 Ом поочерёдно, разность между каналами становится 30..31 дискрет, при нулевом сопротивлении оба АЦП выдают нули. Мультипликативная погрешность(отличие между АЦП) на лицо. Исходные условия: - схема подключения термоэлемента - трёхпроводная, взята из даташита. - External reference mode, референтный резистор Rref 4.99 КОм, 0.1%. - Для обоих чипов применён один и тот же программный код. Начал искать. Поменял местами Rref, перепаяв их, всё тоже самое, один в один. Я думаю что хардварным проблемам больше негде быть и вероятно, что-то не так либо с самими АЦП, либо с их настройками. Начал копатья с калибровками. На мой взгляд внутренние калибровки (internal calibrations) могут решить проблему, но тут непонятки с ней. 1. После калибровки значения регистров OFFSET и FULL SCALE (калибровочной пары)не меняются (в них установлены значения по умолчанию - 0x8000 и 0x5555 соответственно). 2. Калибровка никак не влияет на результаты измерений. 3. Мне не понятно что физически означают цифры в калибровочной паре. В даташите читаем, что из результата АЦП, вычитается значание OFFSET и помножается на FULL SCALE. То есть ADC_out = (-OFFSET +ADC_raw ) * FULL_SCALE. В моём случае мы получаем: ADC_out = (-0x8000+13023)*0x5555. Бред какой-та... братья, кто разобрался с калибровкой - нужна ваша помощь!!! 4. Вопрос-утверждение. Int калибровку полезно проводить периодически, раз в 5 мин например, с целью компенсировать возможное изменение температуры самой AD7792. Я прав?