Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ADE7758 баги или ... ?
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
Desenix
купили кит с этой МС, подключили к МК и начали ее мучать.

Почти сразу вылез первый баг.
При циклическом чтении регистров IRMS VRMS одного канала, их значение читается не правильно (скачет на порядки), изменение задержек и частоты обмена, не привели к положительному результату, при этом регистр температуры читался нормально. Было применено двойное чтение регистров, т.е. два раза подряд читался один и тот же регистр, в результате брался второй результат чтения, который всегда был стабилен.

Второй баг вылез чуть позже.
Подключил я активную нагрузку к киту, и давай подбирать PHCAL приводя реактивную энергию к нулю, и вот тут началось самое интересное, да, читаю регистры энергии в режиме со сбросом 2-3 раза в секунду,
регистр реактивной энергии постоял около нуля и вдруг началось 0 -> 255 -> -256 -> 0 -> 255 -> -256 .....
естественно накопленная реактивная энергия тутже скакать начала.
Увожу в любую сторону выравнивание фаз тока и напряжения, как тут же эти скачки пропадают и колебания регистра сводятся к амплитуде 1-2 единицы.

Кто с подобным сталкивался.
В AD написал, пока до них еще не дошло, вопросы наводящие задают, типа где купил, что купил итд, пытаются понять не китайское ли smile.gif
VadimPlotnikov
По признакам очень похоже на некорректную работу цифрового интерфейса. Так что нет смысла нечего мерить и устанавливать, будет читается ерунда. Проверяй как всегда времянку, количество тактовых импульсов, последовательность работы, инверсию байт и т.д.
Desenix
проверял и не раз, паузы не ставил разве что между битами, т.к. SPI аппаратный. Скорость менял, фронты крутил, связь только пропадала.
И почему-то глюк чтения только у двух регистров одного канала, если читать разные, то глюка нет, т.е. AVRMS и BIRMS.
Это говорит о глюке именно AD.
Кстати, этот глюк вылез и в ADE7753.

А вот с энергиями глюк ни чем не объяснить, кроме как глюком AD.
Alex03
Использовали ADE7758, никаких глюков в чтении/записи не замечено.
Если с чем и пришлось немного повозиться то это с вычислением/пониманием масштабных коэффициентов на путях_следования_сиглалов. smile.gif
Desenix
Alex03 т.е. если читать регистры IRMS VRMS одного канала поочереди, то глюков не наблюдается с непонятными скачками их значений от выборки к выборке ? Или вы их не используете ?
Мне например надо выводить на дисплей текущее значение тока и напряжения, а не только энергию считать.
А вот если читать регистры каналов вперемешку, то проблемы нет.

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

Кстати, а Вы калибровали МС, например PHCAL ? и каким образом ? я контролировал реактивку в режиме чтения со сбросом, о результате сообщил в начале темы.
Alex03
При отладке я одни и теже регистры не читал по очереди, читал скопом несколько. smile.gif
потом в штатном режиме читались активные мощности и ещё читалось/писалось только то, что запрошено извне (отладочно настроечный УАРТ). Задача была упрощённая - только активная мощность, небольшой разбег фаз был не критичен. Калибровали только напряжение и токи отдельно по фазам, т.е. приводили их к какимто попугаям Вольт и Ампер на ед. младшего разряда. Ну а масштаб мощности по документации - как произведение этих попугаев на масштабные коэффициенты цепочек блоков микросхемы - цифра она и есть цифра.

Вопрос: а Вы минимум 1.1мкс между посылкой байта команды и чтением данных выдерживаете (t9 с figure 4)?
Desenix
я пробовал задержки между байтами вставлять, и между посылками.
Толку ноль, ошибка повторяется.
Вот осциллограмма обмена с счетчиком, если что разглядите smile.gif
наглядно видно что второе и третье чтение отличаются, хотя читается один и тот же регистр практически без задержек.
суть такая 1(чтение)=ошибка, 2(чтение и последующие)=норм
Alex03
Да в принципе видно, сначала читаеца AIRMS потом 2 раза AVRMS.

Времена какие не этом рисунке? Или хотябы какая частота SPI?
Что на входе напряжения фазы А? Напряжение и частота.
Какие конфигурационные регистры?
Мож переполнение гденить?



да и полярность клока в неактивном состоянии я бы сделал как в датише
Desenix
какие напряжение, ток и частота, уже не помню, т.к. это с кита снималось, и уже давно. Ток снимали через трансформатор 1:1000 и был он около 0.47А, резистор шутна 24Ом, напряжение было 6В, но делитель доработан, вместо 1К стоял 24Ом, а вместо 499к было вроде 1К. Могу ошибаться.

Частота клоков, была вроде 1мбит. в принципе время реальное на диаграмме. Можно посчитать.

Этот же глюк с чтением проявился и на 7753.
В результате читаю первый раз в мусор значение, второй и последующие суммирую и считаю среднее арифметическое. Читаю регистры при переходе через ноль 50раз/сек, и раз в секунду обсчитываю результирующее значение.
Если при таком раскладе не выкидывать первый отсчет при каждом чтении регистра, то ошибка накапливается и потом на выходе получаю левый ошибочный рез-тат. Долго не мог понять почему I/VRMSOS-ом не могу занулить значения.

Самое интересное, что если читать так AIRMS - BIRMS - AVRMS - BVRMS то ошибки не наблюдается, но т.к. мне нужен был только один канал, то пришлось городить огород.

вот такие у меня регистры
cmd_adc(0x93, 0x00, 1); // ADE7758 (0x13) OPMODE
cmd_adc(0x94, 0x24, 1); // ADE7758 (0x14) MMODE
cmd_adc(0x95, 0x00, 1); // ADE7758 (0x15) WAVMODE
cmd_adc(0x96, 0x04, 1); // ADE7758 (0x16) COMPMODE
cmd_adc(0x97, 0x48, 1); // ADE7758 (0x17) LCYCMODE
cmd_adc(0x98, 0x00, 3); // ADE7758 (0x18) IMR
cmd_adc(0xA3, 0x00, 1); // ADE7758 (0x23) GAIN

другие по дефолту, не трогал.

Alex03 у меня к вам вопрос, могли бы вы проверить данный глюк у себя в железке, почитать в цикле AIRMS - AVRMS - AVRMS и сравнить результаты первого и последующего чтения подряд одного регистра ?
а так же AVRMS - AIRMS - AIRMS
интересует повторяемость.
Alex03
Если частота клока 1МГц, то при Вашей полярности клока в неактивном состоянии - t9 в любом случае около 500нс, т.е. требование t9 > 1.1мкс Вы не выполняете.
Чтобы это проверить снизте скорость клока до 250кГц.
Desenix
уже говорил и не раз, снижал как частоту клоков, так и паузы между байтами делал километровыми, не помогло.
Если есть возможность, повторите эксперимент.
И потом, почему этот глюк проявляется только в той комбинации что я указал ?
на счет клоков, давно пробовал другие режимы МК, в них не получал ответа от МС счетчика. Хотя завтра еще попробую, но сомневаюсь что это решит проблему. Ведь при чтении регистров в другой последовательности глюка не наблюдал.
Alex03
Цитата(Desenix @ Jan 16 2008, 21:06) *
уже говорил и не раз, снижал как частоту клоков, так и паузы между байтами делал километровыми, не помогло.

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

Мне на это надо потратить пол дня (поиск всего железа и само тестирование) поэтому можно сказать нет возможности. smile.gif
Цитата
И потом, почему этот глюк проявляется только в той комбинации что я указал ?

Ни Вы ни я не знаем как врутри микросхемы реализован SPI интерфейс, так что нечего тут гадать, а обмен по SPI должен соответствовать документации. При этом если у вас чтото не работало при другой полягности клока, то ищите в этом ошибку.
Desenix
повторил эксперимент вечером в ПТ, т.к не было времени отписаться пишу сегодня.
Схему для кита на ADE7758 собирать не стал, провел эксперимент на ADE7753.
Перевернул клоки, сдвинул фазу, обмен заработал, хотя в прошлый раз не получилось. После установки задержки между командой и данными в более чем 5мкс глюк с обменом пропал. Странно что он проявляется только с этими двумя регистрами.
Если задержку уменьшать, до 2.5мкс, то проявляется эффект смешивания каналов, когда подаю на вход 220В, а ток 0, то в измерениях виден рост тока до 5А в пересчете(в норме показывает 0.05), а напряжение занижено 180В.
Если же задержку между командой и данными убрать, то каналы путаются, т.е. напряжение около нуля, а ток очень большой, показания не помню, важна суть. Прям аналоговый регулятор выходит.

Остался баг с реактивной энергией при чтении со сбросом и переходе ее через ноль. Он решением проблемы чтения, не решается, поглядим что будет на новой МС.
Alex03
Цитата(Desenix @ Jan 21 2008, 11:56) *
Схему для кита на ADE7758 собирать не стал, провел эксперимент на ADE7753.
Перевернул клоки, сдвинул фазу, обмен заработал, хотя в прошлый раз не получилось. После установки задержки между командой и данными в более чем 5мкс глюк с обменом пропал. Странно что он проявляется только с этими двумя регистрами.
Если задержку уменьшать, до 2.5мкс, то проявляется эффект смешивания каналов, когда подаю на вход 220В, а ток 0, то в измерениях виден рост тока до 5А в пересчете(в норме показывает 0.05), а напряжение занижено 180В.
Если же задержку между командой и данными убрать, то каналы путаются, т.е. напряжение около нуля, а ток очень большой, показания не помню, важна суть. Прям аналоговый регулятор выходит.

Ну так для 7753 t9 >= 4мкс, так что Ваш опыт лишь подтверждает инфу из датиша. smile.gif
(для 7758 >= 1.1мкс)
Sergu
Цитата(Desenix @ Jan 16 2008, 13:36) *
я пробовал задержки между байтами вставлять, и между посылками.
Толку ноль, ошибка повторяется.
Вот осциллограмма обмена с счетчиком, если что разглядите smile.gif
наглядно видно что второе и третье чтение отличаются, хотя читается один и тот же регистр практически без задержек.
суть такая 1(чтение)=ошибка, 2(чтение и последующие)=норм


вроде - как-то была такая же ситуация с первым неправильным чтением, если при начале работы с ADE7758 в момент установки CS в "0" сигнал SCLK в этот момент находился в "1" (а не в "0" как на рисунках в даташите)....
Роджер
Уважаемые спецы,помогите разобраться в одном вопросе.Я по образованию метролог(Одесский техникум измерений),но так вышло,что работаю и работал в энергетике-от простого электрика до энергетика,счетчики часто ремонтирую сам.По сути-приходит знакомый электрик и просит собрать мультивибратор с прерывателем на 1 МГц,я спросил зачем-он долго мялся в результате сказал,что надо снизить показания в электронном счетчике,мол два конца на какую то микру и он в обратку считает,подробностей не выдал,даже за beer.gif .Счетчик насколько знаю на ADE 7758+микроконтроллер,по-моему типа AT90.Понимаю,что не совсем в тему,но может кто-то раскроет секрет?Интерес чисто спортивный,Даташит на ADE смотрел,но уровень не тот,не разобрался,думаю секрет именно в ней.Заранее благодарен за помощь
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.