Перейти к содержанию
    

Ruslan1

Свой
  • Постов

    3 034
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Ruslan1 стал победителем дня 7 июля 2023

Ruslan1 имел наиболее популярный контент!

Репутация

17 Хороший

1 Подписчик

Информация о Ruslan1

  • Звание
    Гуру
    Гуру
  • День рождения 09.01.1973

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

16 145 просмотров профиля
  1. Если повезет его EVB поюзать- расскажу, как оно в реальности и что даёт усреднение. нене, я говорил "не главное", а не "не важно". То есть закладывать дополнительную нелинейность сам не стану. 🙂 И я не про плаванье второго АЦП, а про неодинаковость усилителей (точнеее, задающих элементов).
  2. Тут ключевым является уйти от фильтрации "своими руками". Очень интересны внутренние фильтры, уже сами обеспечивающие низкий выходной семплрейт и полосу пропускания. Причем можно выбирать и сочетания фильтров. Например, 127L18: WB: 0.437*ODR S3: 0.262*ODR S4: 0.227*ODR S4+S1: 0.341*ODR (на Дифф режим не страшен, большие размахи тоже вроде бы не проблема (5Vdiff обычно применяю: мои источники с собственным шумом -150...-160 dB имеют обычно размах 5 или 10 Vdiff). А если про тензометрию с микровольтами - там 20 бит (120 dB SNR) достаточно, это я и с стареньким AD7768 делаю на килосемпле. Хай-спид мода тоже не проблема- у этих АЦП потребление удивительно маленькое (по сравнению с AD для тех же условий). Но само собой, тестировать нужно. Пока что ничего супер-крутого не увидел в этом ES9842. Например, его THD -116dB. И ничего не пишут про частоты ниже 10 Гц. Аудио, одним словом. Да, внутри поддерживается averaging в L18/L14. Впрочем, AD то же самое сейчас предлагают. Но да (выделено мной в цитате из даташита): Глупый вопрос, как добиться "noise between channels is uncorrelated" ? Можно ли этим методом уменьшить собственные шумы АЦП, или только внешних элементов (если, например, один сигнал усиливается двумя усилителями и подеется на два разных канала АЦП) ? Я уже планировал так сделать на 1-канальных 127L11, но вот нашел 8-каналку. Думаете, усреднение скажем двух каналов внутри одного корпуса будет хуже, чем усреднение двух разных АЦП? Они же там физически разные внутри, какая разница в одном пластике или нет. Или тут "бОлший естественный дизеринг" в случае разных корпусов подразумевается? Нене. Плавали знаем. Всё хорошо, пока не нужно их линковать вместе. Так как сложно получить стабильное (или совершенно одинаково меняющееся) усиление на этих двух каналах, которые я хочу использовать как один.
  3. Upd: Тексас, оказывается, разродился-таки такой же по качеству 8-каналкой ADS127L18, как их одноканальный ADS127L11. Пока как превью, но все же. Подозрительно что нет на Дижикеях/Моузерах, может потому что превью, но на сайте Тексаса вроде продают и даже обсуждают уже полгода в форуме. И еще нестрашная цена и не BGA. Если всё так, как в бумажке- то прям крутая машинка получилась для моих нужд, уделали они Аналоговых Девиц: если напрямую поставлю 8-канальный ADS127L18 вместо 4-канального AD4134, то (теоретически, по даташитам) получу примерно прирост SNR +6 dB, а это ого-го!
  4. Помедитировал над документацией. Да, фильтры у них разные, но меня сейчас интересует семплрейт, полоса по уровню -3dB, и SNR. Разочаровался в 32-битках. Переход на 32 бита не дает (пока что) выигрыша в SNR. Так что не вижу смысла, буду думать про 24 бита. Многоканалки лучше у Аналога (AD4134): 1.25 kSPS (BW=433 Hz): 132 dB А одноканалка бодрее выглядит у Тексаса (ADS127L11): 1kSPS (BW=442 Hz): 134.9 dB, 400 SPS (BW=105 Hz) : 140.6 dB. Ну и на борту разные фильтры, очень перспективно. Если сравнить с флагманской 32-биткой LTC2500-32 : у нее подобные 1kSPS(450Hz):133 dB, но цена раз в 6 больше.
  5. ааа.... Базар не обмануть. Но, все-таки для LTC я вижу частоты ниже 10 Гц и величины там неплохие. Нет. Сейсмика.
  6. DC не нужно, а вот 0.1 Гц интересует. Да, фликер важен и становится ключевой проблемой. Уже вступал я в это болото, но успешно всё забыл.
  7. Начал писать ответ, и вспомнил, что уже бодался именно с этим AD7768. И именно в области низких частот (единицы и доли Гц) были проблемы получить нужное. Сейчас я его использую в режиме "Low power (LP)", и имею 123 dB @ 1 ksps (как и в даташите). Но если перейти в Fast Mode (123 dB @ 8 ksps), то лучше, кажется, не получалось. Согласно картинкам из даташита, там поведение на НЧ разное, и для "Fast" оно растет быстрее в области низких частот. Но, к сожалению, ничего не пишут про частоты ниже 10 Гц. P.S. Принесли попробовать EVB LTC2508, погляжу. К сожалению, там единственный фильтр внутри, который дает BW(-3dB) = SPS/8. Но картинки в даташите явно красивее, чем AD7768, причем нарисовано от 0 Гц.
  8. Подскажите, пожалуйста: Если в даташите написано, что АЦП (AD7768) умеет выдать наружу 123 dB @ 8 kSPS (BW = 3500 Hz), то я правильно прогнозирую, что могу достичь дополнительной обработкой в процессоре: 126 dB @ 4000 SPS (BW = 1750 Hz). 129 dB @ 2000 SPS (BW = 875 Hz). 132 dB @ 1000 SPS (BW = 437 Hz). 135 dB @ 500 SPS (BW = 218 Hz) 138 dB @ 250 SPS (BW = 109 Hz) 141 dB @ 125 SPS (BW = 54 Hz) 144 dB @ 62 SPS (BW = 27 Hz) Я прав? или жестоко ошибаюсь?
  9. Очень кривое, согласен. Если захочу выпрямить- то, надеюсь, придумаю, как разное число FF забивать через макрос. Это у меня уже было и работало. Но я не пробовал память размещения кода бить на два сегмента. То есть у меня сначала один сегмент кода, а потом (в конце программного флеша)- сегмент моих данных. Бинарник получается всегда размером с флеш: в начале программа, потом пустота неиспользуемая, потом мой сегмент данных. Неоптимально для программирования: и файл большой, и стирать-записывать каждый раз всю флеш, хотя используется не всё пространство. Так что сунул просто внутрь кода и разрешил линкеру задвигать какк он хочет. Так меньше страницы пустоты в бинарнике имею. Это проще, чем от бинарника отказываться или городить что-то специфическое для программирования. дада. мне кажется, это самый простой (быстрый и предсказуемый и красивый) вариант для того что я хочу.
  10. Наверное, Вы правы. Чтобы без вычислизма то можно наверное и с union. typedef union { myFlashData_t MyData; uint8_t foo[NVMEM_SIZE]; // not used. Just for memory reservation up to full used Flash Memory }FlashMem2_t; Но там появляются вопросы как проиниализировать: мне нужно чтобы первые myFlashData_t величин были заданными мной, а далее 0xFF. Со структурой я просто задаю сначала myFlashData_t данных, а потом через запятую нужное мне количество 0xFF дописываю. А с юнионом как? Я тут "кавалерийским наскоком" попробовал несколько вариантов- не получается красиво: либо мои величины надо в uint8_t переводить и описывать в поле "foo", либо не знаю как добавить 0xFF.
  11. да, так сейчас и делаю. из "заточек" только выравнивание. #define NVMEM_SIZE CPU_INTFLASH_PAGELENGTH*2 typedef struct { myFlashData_t MyData; uint8_t foo[NVMEM_SIZE - sizeof(myFlashData_t)]; // not used. Just for memory reservation up to full used Flash Memory }FlashMem2_t; const FlashMem2_t FactoryResetConstants __ALIGNED(CPU_INTFLASH_PAGELENGTH) = { // here: data as in myFlashData_t };
  12. Большое спасибо! Уже вижу, что подходящих АЦП сильно больше, чем выборка отсортированного по SNR на сайте производителя. Так как нужно в даташите смотреть детали, кого и насколько можно даунсемлить.
  13. Похожий вопрос, но расширенный: А можно заставить размещенную константу занять больше места, чем её sizeof()? Без СМС и регистрации! Без секции в линкере! То есть хочу чтобы оно занимало, например полную страницу флеша. Как разместить в начало страницы- понятно: const MyConsts_t MyConst __ALIGNED(CPU_INTFLASH_PAGELENGTH) = {FACTORY_CONSTS}; Но вот как сказать Кейлу, чтобы он зарезервировал всю область адресов, от конца размещения MyConst до конца страницы? Или: как создать фейковый массив FOO нужного размера и положить его сразу после MyConsts ? Пробовал: static const uint8_t foo1 [FOO_LENGTH] __attribute__((at(FOO_ADDR))); // Compiler v5 Это работает только если FOO_LENGTH и FOO_ADDR константы (0x...). А вот если там вычислизм, содержащий, например, &MyConst или sizeof(MyConsts_t) - то компилятор ругается на использование не-константы в "at()": error: #60: this operator is not allowed in an integral constant expression Пока что просто докидываю этот FOO прямо внутрь MyConsts_t, так конечно работает.
  14. Спасиб! посмотрел ADS126x: вроде красиво. Поищу в том же направлении. (все-таки ног многовато из-за многоканального мультиплексора внутри). AD4030: Очень интересно. судя по графику "Dynamic Range vs. Number of Averages" (fs=2MHz), там вообще нарисовано 148 dB для 10k. А "10к" это 2e6/10e3 = 200 sps Эх блин БГА. Неудобно, но если лучше не найду, то да. Цена тож не фонтан(40 баксов), но зато 148 dB. у меня нелинейность не главное в жизни. вот динамический диапазон да.
  15. Здравствуйте! Посоветуйте, пожалуйста, что-нибудь с параметрами: - SNR 140 dB - sample rate 100 Hz - полоса пропускания (BW) по уровню -3dB близкая к 40 Гц (то есть желательно чтобы цифровой фильтр не резал сильнее чем SPS/2.5) Искал по Аналог Девайсу. У Тексаса даже близко не вижу (лучшее у Тексаса - 250 SPS, 130 dB) Отлично подходит LTC2500-32 (125 SPS, Sinc1: BW = 55 Hz, SNR = 141.4 dB). Ну и вплоть до 145.3 dB при SSINC фильтре (BW = 15.4 Hz). Но цена негуманная у него (мне три или четыре таких нужно). Дальше смотрел LTC2508-32, но у него внутри только SSINC, получается BW примерно SPS/8. ( 250 sps: BW = 30.7 Hz, SNR = 141 dB). И еще LTC2440 почти подходит (94 SPS: BW = 53 Hz, ENOB = 22.9 bit (SNR = 139.6 dB). Думаю, что-то хорошее точно пропустил. Например, какой-то скоростной качественный, который при децимации в нужные мне 100 SPS даст 140 dB ?
×
×
  • Создать...