Миландр
http://forum.milandr.ru/

Микросхема преобразователь угол-код для СКВТ
http://forum.milandr.ru/viewtopic.php?f=17&t=2431
Страница 11 из 14

Автор:  Alex1 [ 2018-мар-26 12:36 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Ivan44 писал(а):
Микросхема вроде заработала, значения координаты получилось считать. Показания понравились.... Только как избавится от переполнения буфера ? через отчетов 100 000 примерно перестает давать данные... Есть способ перегрузить через nReset и переписать регистры... Есть проще и быстрее способ ?


Вероятно, имеется ввиду переполнение буфера в блоке SPI микроконтроллера, т.к. в 1310НМ025 буфера нет.
Скорее всего, не успеваете вычитывать данные из него. Я бы рекомендовал понизить скорость чтения по SPI (частоту SPI).

Автор:  Ivan44 [ 2018-мар-31 12:57 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

При снятии сигнала с ЦАП заметил, что синус ступенчатый. Сильно ли влияет ступенчатость на измерения преобразователя? Можно ли оставить ступенчатость или ее рекоминдуется сгладить фильтром?

И еще вопрос по поводу ФНЧ на обмотку возбуждения, какого порядка лучше фильтр ставить 1 или 2. В даташите рекоминдуется активный фильтр на частоту среза 40 кГц первого порядка. частота сигнала будет в пределах от 400 до 2000 Гц. Если фильтр даст фазовый сдвиг, сдвиг как я понял можно будет программно востановить.
Как я понял, усилитель на Вашей отладочной плате построен очень грамотно и не дает фазового сдвига.

Автор:  Alex1 [ 2018-апр-02 11:01 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Лучше сгладить фильтром, теоретически может давать дополнительную погрешность, хотя нам и не удалось ее увидеть в реальности. В любом случае, после прохождения через датчик, ступенек уже не будет (скорее всего). В новой ревизии сигнал будет намного более сглаженным.

Фазовый сдвиг на фильтре или датчике не проблема, и можно об этом не думать, если включен 13й бит в регистре C_Cntrl. Если по каким то причинам отключен, то будет влиять и значительно. Также фазовый сдвиг зависит от температуры. Если сигнал не больше 2кГц то можно поставить срез значительно ниже 40кГц.

Автор:  Ivan44 [ 2018-апр-02 19:07 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Какие требования к усилителю: шум, нелинейные искажения , какой предел смещения входного напряжении?

Автор:  Alex1 [ 2018-апр-03 14:27 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Ivan44 писал(а):
Какие требования к усилителю: шум, нелинейные искажения , какой предел смещения входного напряжении?


Если речь про усилитель сигнала на датчик, то со стороны микросхемы никаких нет, все требования только со стороны датчика (в его документации).
Нелинейность в районе пересечения нуля может давать некоторую доп. ошибку. Шум, скорее всего, не важен.

Автор:  Lab221 [ 2018-апр-25 19:26 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

У микросхемы ревизии 1738, периодически, при включении возникает проблема с каналом C2.
Оба канала настроены в режиме СКВТ. ЦАП канала С1 формирует опорный сигнал. Для C1 включен режим восстановления опорной частоты. Канал С2 работает как ведомый, его опора - Ex_ref канала C1. В нескольких попытках включения из десяти канал С2 не запускается, содержимое регистра C2Stat при этом сначала равняется 0x8320, затем переходит в 0x8120. На входы C1 и C2 поступает один и тот же (!) сигнал. И С1 работает корректно всегда. Проблема решается только сбросом или выключением питания. Так же в регистре ModeStat постоянно установлен бит ECC_err.

Автор:  Alex1 [ 2018-апр-26 10:58 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Lab221 писал(а):
У микросхемы ревизии 1738, периодически, при включении возникает проблема с каналом C2.
Оба канала настроены в режиме СКВТ. ЦАП канала С1 формирует опорный сигнал. Для C1 включен режим восстановления опорной частоты. Канал С2 работает как ведомый, его опора - Ex_ref канала C1. В нескольких попытках включения из десяти канал С2 не запускается, содержимое регистра C2Stat при этом сначала равняется 0x8320, затем переходит в 0x8120. На входы C1 и C2 поступает один и тот же (!) сигнал. И С1 работает корректно всегда. Проблема решается только сбросом или выключением питания. Так же в регистре ModeStat постоянно установлен бит ECC_err.


Попробуйте сначала настроить каналы, а потом их включить, битами CONVx_en. Если не поможет, то пришлите пожалуйста регистры.
ECC_err, скорее всего, нужно сбросить после настройки PLL. После этого не должен больше устанавливаться.

Автор:  Lab221 [ 2018-апр-27 09:53 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Alex1 писал(а):
Lab221 писал(а):
У микросхемы ревизии 1738, периодически, при включении возникает проблема с каналом C2.
Оба канала настроены в режиме СКВТ. ЦАП канала С1 формирует опорный сигнал. Для C1 включен режим восстановления опорной частоты. Канал С2 работает как ведомый, его опора - Ex_ref канала C1. В нескольких попытках включения из десяти канал С2 не запускается, содержимое регистра C2Stat при этом сначала равняется 0x8320, затем переходит в 0x8120. На входы C1 и C2 поступает один и тот же (!) сигнал. И С1 работает корректно всегда. Проблема решается только сбросом или выключением питания. Так же в регистре ModeStat постоянно установлен бит ECC_err.


Попробуйте сначала настроить каналы, а потом их включить, битами CONVx_en. Если не поможет, то пришлите пожалуйста регистры.
ECC_err, скорее всего, нужно сбросить после настройки PLL. После этого не должен больше устанавливаться.


Включение каналов отдельно от настроек не помогло.
Настройки микросхемы:

void init_1310(void)
{
uint16_t tempReg = 0;

PORT_ResetBits(PORTA, PORT_Pin_5); //nRST = 0
for(i=0; i<100; i++) {;}
PORT_SetBits(PORTA, PORT_Pin_5); //nRST = 1

WriteReg(ADR_AFE_CONFIG, (Bit_6 | Bit_5 | Bit_4 | Bit_3 | Bit_0));
for(i=0; i<1000; i++) {;}

WriteReg(ADR_C1EXINC, 2000);
WriteReg(ADR_MODE_STAT, (Bit_15 | Bit_9));
WriteReg(ADR_C1CNTRL, (Bit_15 | Bit_14 | Bit_13 | Bit_9 | (14)));
WriteReg(ADR_C2CNTRL, (Bit_14 | Bit_13 | Bit_12 | Bit_9 |(14)));
WriteReg(ADR_C1RESCNTRL, ((3 << 8) | (2)));
WriteReg(ADR_C2RESCNTRL, 2);

// Загрузка коэффициентов из памяти
if(*(unsigned int*)(ADR_COEF+8)==__KEY)
WriteReg(ADR_C1KAMPC, *(unsigned int*)(ADR_COEF+0)); // C1KampC

if(*(unsigned int*)(ADR_COEF+12)==__KEY)
WriteReg(ADR_C2KAMPC, *(unsigned int*)(ADR_COEF+4)); // C2KampC

// Enable ch1
tempReg = ReadReg(ADR_MODE_STAT);
tempReg |= Bit_10;
WriteReg(ADR_MODE_STAT, tempReg);

// Wait for stable ch1
for(i=0; i<10; i++) {;}

// Enable ch2
tempReg = ReadReg(ADR_MODE_STAT);
tempReg |= Bit_11;
WriteReg(ADR_MODE_STAT, tempReg);
}

Напряжение питания 3,3 - 3,4 В. Частота генератора 10 МГц. Инициализация проводится спустя 50 мс после подачи питания. Этого времени достаточно?

Автор:  Alex1 [ 2018-апр-27 13:39 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

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

В программе смущает возможная запись C1KampC, C2KampC откуда то из памяти, надеюсь они проинициализированы и одинаковые.
Также, проверьте осциллографом сигналы после усилителей - выводы IOCA1, IOCA2 или IOSA1, IOSA2 - совпадают ли.

50мс должно быть более чем нормально, но это сильно зависит от конденсаторов в питании. Можно проконтролировать когда появляется напряжение 1,8В на VDD_CORE.

Автор:  Lab221 [ 2018-апр-27 13:56 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Alex1 писал(а):
Программа у меня работает в симуляторе без проблем. Попробуем повторить еще у себя на отладочной плате.

В программе смущает возможная запись C1KampC, C2KampC откуда то из памяти, надеюсь они проинициализированы и одинаковые.
Также, проверьте осциллографом сигналы после усилителей - выводы IOCA1, IOCA2 или IOSA1, IOSA2 - совпадают ли.

50мс должно быть более чем нормально, но это сильно зависит от конденсаторов в питании. Можно проконтролировать когда появляется напряжение 1,8В на VDD_CORE.


С коэффициентами все в порядке. Они действительно берутся из памяти. Сигналы на выходах усилителей тоже в норме, но они у нас не должны совпадать для C1 и С2. У них общее возбуждение, но разные углы. Напряжения питания 1,8В, 2,5В, 1,25В тоже успевают установиться.
Есть вопрос о необходимости записи бита ECC_err каждый раз при записи в регистр MODE_STAT. Это действительно нужно делать. Какова логика формирования этого бита?
Мы заметили, что он устанавливается при включении очень часто и это является предвестником повышенной погрешности определения координаты. Помогает лишь сброс при включенном питании и реинициализация микросхемы.
У нас довольно жесткое требование по времени готовности устройства - 250 мс. За это время нужно удостовериться, что все параметры микросхемы в норме.

Автор:  Alex1 [ 2018-апр-28 11:12 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Lab221 писал(а):
Есть вопрос о необходимости записи бита ECC_err каждый раз при записи в регистр MODE_STAT. Это действительно нужно делать. Какова логика формирования этого бита?
Мы заметили, что он устанавливается при включении очень часто и это является предвестником повышенной погрешности определения координаты. Помогает лишь сброс при включенном питании и реинициализация микросхемы.

ECC_err выставляется, если контрольная сумма в каком либо из регистров настроек не совпала. Новая контрольная сумма считается при записи нового значения в регистры. Бит ECC_err держится в 1 до сброса его пользователем при записи в MODE_STAT.
Даже если контрольные суммы в данный момент совпадают, но в прошлом не совпадали - бит может быть выставлен.

В этой ревизии бит часто выставляться при старте микросхемы. Предположительно, это происходит из за некорректного старта PLL. В следующей ревизи (сейчас в производстве) эта проблема должна уйти.

Если ECC_err выставляется после сброса пользователем повторно это свидетельствует о каких то серьезных сбоях в микросхеме - плохое питание, плохой клок, помехи, брак микросхемы или что то сгорело. Можно еще проконтроллировать диаграмму SPI, нет ли там каких глитчей.

Автор:  Алексей-М [ 2018-май-15 19:19 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Здравствуйте,
У нас на предприятии имеется отладочный комплект и несколько экземпляров этой микросхемы. Возникло несколько вопросов:
1) Возможен ли режим работы микросхемы с двух отчетным трансформатором, то есть с двумя обмотками, точной и грубой.
2) Если да, то итоговый угол будет выдавать микросхема либо нужно вычислять другим способом.
3) Возможно ли получить исходный код программы микроконтроллера (1986ВЕ92), расположенной на отладочной плате, либо часть кода, отвечающий за связь МК с микросхемой 1310НМ025?

Автор:  Ekaterina [ 2018-май-16 11:07 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Первые 2 вопроса я оставлю Alex1.
По поводу 3го, напишите, пожалуйста, на support@milandr.ru. (в письме, укажите, пожалуйста, организацию и контактные данные)
Программу предоставить можем, но "как есть", без дальнейшей поддержки.

Автор:  Alex1 [ 2018-май-16 13:25 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Добрый день,

Можно двухотсчетный, но микросхема не считает. На мой взгляд, это не большое неудобство, т.к. микросхема все равно подключается к микроконтроллеру.

Вроде бы, существует несколько теорий, как нужно правильно соединять отсчеты, с учетом того, как обмотки расположены друг относительно друга и какие возникают погрешности их позиционирования. Честно говоря, у меня нет опыта с реальными двухотсчетными датчиками, могу только высказать тут свое мнение. На мой взгляд, задача состоит в том, что бы по соотношению точного и грубого отсчета найти наиболее вероятный грубый, и потом уже соединять их показания вместе. В лоб это можно сделать так:
Код:
const M=7;   // количество полюсов обмотки ГО (грубый отсчет)
const N=55; // количество полюсов обмотки ТО (точный отсчет)

double get_angle (unsigned short GO, unsigned short TO) //GO и TO - 16 битные значения угла
{         
   unsigned short intGO    = 0;
   unsigned long  reminder = 65535;           
   int  i;
   
   for(i=0; i<M; i++)                            //перебираем полюсы грубого отсчета
   {
          double         GO_i    = (i*65536 + GO)/M;  //рассчитываем ГО для полюса i   
          unsigned short exp_TO  = GO_i*N;            //рассчитываем TO по ГО для полюса i
       
          if(abs(TO-exp_TO)<reminder)                   //находим ближайший ТО к ГО
          {
                reminder = abs(TO-exp_TO);              //запоминаем минимальное на текущем шаге алгоритма расстояние
                intGO    = GO_i;                                //запоминаем полюс   
          }   
   }
   return (360*(double)intGO/65536) + (double)TO*360/(N*65536); //значение угла в градусах
}

Автор:  Алексей-М [ 2018-май-16 19:25 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Всем спасибо за помощь, будем пробовать…

Страница 11 из 14 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/