STM32G4 АЦП Шумы, усреднение, фильтрация

Поделиться
HTML-код
  • Опубликовано: 30 ноя 2024
  • Продолжаю разбираться с хитростями микроконтроллеров G4 серии от ST.
    Я уже говорил, что тут прям очень много всего интересного из периферии и даже вполне обычные блоки идут с некоторыми особенными фишками.
    Сегодня меня будет особенно пристально интересовать вот этот блок аналого-цифрового преобразования, как я уже рассказывал в данном микроконтроллере находиться аж пять АЦП с минимальным временем преобразования до 250нс.
    Для прямой помощи каналу, перевод с банковских карт:
    yoomoney.ru/to...
    Модули производства TDM Lab: vk.link/tdm_lab
    Группа ВК: tdm_lab
    Интересные сайты: Паяльник cxem.net/
    Рекомендуемая литература:
    ***********************************************************
    STM32G4. Периферия и таймеры www.compel.ru/...
    AN2834 How to get the best ADC accuracy in STM32 microcontrollers www.st.com/res...
    Increase Dynamic Range of SAR ADCs Using Oversampling www.analog.com...
    AN4629 ADC hardware oversampling for microcontrollers of the STM32 L0 and L4 series www.st.com/res...
    Использование CCM на STM32F303CC www.terraelect...
    AN4296 CCM SRAM www.st.com/res...
    Богатый набор для неординарных задач: возможности DSP в STM32F4 на ядре Cortex-M4 www.compel.ru/...
    CIC фильтры Хогенауэра и их характеристики www.dsplib.ru/c...
    ***********************************************************
    Алиэкспресс
    **Источники опорного напряжения**
    LM399 2,5В/5В/7,5В/10В alii.pub/4li4xj
    **************STM32**************
    STM32G474 Nucleo-64 alii.pub/5sdxo3
    STM32F103C8T6 alii.pub/5sbhoe
    STM32F103C8T6 Black ali.pub/579d2l
    STM32F401CCU6 ali.pub/56s1yb
    STM32F411CEU6 ali.pub/56s1yb
    STM32F407VET6 alii.pub/5rm368
    Программатор ST-Link V2 ali.pub/56weqg
    ***********ПЛИС/FPGA***********
    Отладочная плата Xilinx FPGA Spartan-7 XC7S15 alii.pub/5rm3ih
    Отладочная плата Xilinx SoC FPGA Zynq7000 XC7Z010 alii.pub/5sbga8
    Отладочная плата Xilinx FPGA Artix-7 XC7A35T DDR3 256MB alii.pub/5sbgk5
    **************Arduino**************
    Arduino Uno ATmega328p ali.pub/56s0bz
    Arduino Nano ATmega328 ali.pub/56weyt
    Arduino Micro ATmega32u4 ali.pub/4m7upw
    Arduino Leonardo ATmega32u4 ali.pub/56weg5
    Arduino Mega ATmega2560 alii.pub/5sbgtv
    *******Шаговые двигатели*******
    NEMA17 Hanpose alii.pub/5sbh9f
    NEMA23 Hanpose alii.pub/5sbhcx
    NEMA34 Hanpose alii.pub/5sbhea
    Драйверы ШД TB6600 alii.pub/5sbhhl
    ***********Наборы SMD************
    Набор резисторов 0805 ali.pub/4o3xz7
    Набор резисторов 1206 ali.pub/4o3x4h
    Набор конденсаторов 0805 ali.pub/4o3y4u
    Набор токовых шунтов 2512 ali.pub/4o3udb
    *************АЦП/ЦАП*************
    АЦП 16 бит I2C ADS1115 ali.pub/56s0mv
    АЦП 18 бит I2C MCP3421 ali.pub/56s17o
    АЦП 24 бит SPI ADS1220 ali.pub/4zlq1x
    MCP4725 ЦАП 12 бит ali.pub/56s2f8
    *********DDS генераторы**********
    AD9833 12,5MHz ali.pub/4ps0xu
    AD9850 40,0MHz ali.pub/56s0yq
    AD9851 70,0MHz alii.pub/5sbivr
    AD9959 4ch 200,0MHz alii.pub/5sbj4b
    *********Дисплеи LCD/TFT*********
    Экран LCD 12864 ali.pub/4o3w5a
    3,5" TFT LCD ali.pub/56w5gl
    1,8" TFT SPI LCD ali.pub/56w4oe
    1,3" OLED I2C LCD ali.pub/56w8vh
    ЖК-экран с клавиатурой, 1602 для Arduino Uno ali.pub/56wau2
    **************Диоды***************
    Диоды Шоттки 100шт [1А, 60В] SR160 alii.pub/5ogndb
    Диоды Шоттки 100шт [2А, 100В] SR2100 ali.pub/4o3s9o
    Диоды Шоттки 100шт [2А, 60В] SR260 ali.pub/4o3swt
    Диоды Шоттки 20шт [5А, 40В] SR540 alii.pub/5ognnm
    Диоды Шоттки 20шт [5А, 200В] SR5200 alii.pub/5ognm2
    Диоды Шоттки 5шт [60А, 100В] MBR60100 alii.pub/5og62w
    Светодиоды SMD 0805 5 цветов ali.pub/4o3tps
    Диодный мост GBJ2510 ali.pub/4o3uvs
    **************Разное****************
    Термоклейкая лента 80x80 мм alii.pub/5m32dc
    DC-DC c 8 ~ 32V до 45 ~ 390V alii.pub/5oav2r
    Компараторы LM393 ali.pub/4o3tzp
    DC/DC 5V/5V ali.pub/4o3w8l
    Тестовые точки ali.pub/4o3wgy
    Реле 5V / 230VAC 10A ali.pub/4o3xi3
    Оптопары PC817 ali.pub/4o3xpa
    ACS712 Датчик тока ali.pub/56s27u
    ***************************************

Комментарии • 89

  • @taichiveron9278
    @taichiveron9278 3 года назад +22

    Блин, ну вроде не тупой, но как только автор начинает весело рассказывать о КИХ, у меня заканчивается оперативка. Слишком много выборок на одну секунду видео и я зависаю. :)

    • @vvdvlas8397
      @vvdvlas8397 3 года назад

      КИХ довольно простая вещь. А вот с БИХ нужно быть осторожным. При определенных условиях, может не хватить динамического диапазона вычислений, особенно для порядков больше двух.

  • @Paltus667
    @Paltus667 3 года назад +3

    Меня прям вдохновило накидать прогу, которая оцифровывает АЦП и отправляет на комп и визуализировать на питоне.

  • @rust_embedded
    @rust_embedded 3 года назад +3

    Ожидаемо отличное видео! Браво!

  • @Редкиевидеороликипрокомпанетнт

    Годный контент хоть я и не любитель STM-мок, уже не успеваю за технологиями но очень интересно смотреть чем всё это закончиться а именно эра PIC & AVR...

    • @Wo_Wang
      @Wo_Wang 3 года назад +4

      "Каменный век закончился не потому что закончились камни"...
      :)

    • @GennPen
      @GennPen 3 года назад

      Для меня эра AVR-ок закончилась как только познакомился с STM32. =)

    • @redcat9444
      @redcat9444 3 года назад

      @@GennPen а я только собрался поближе познакомиться с STM32, посмотрел их наличие в магазинах,
      скорее всего, эра STM32 для меня закончится так и не начавшись. (( Совсем печаль с их дефицитом.

    • @vvdvlas8397
      @vvdvlas8397 3 года назад +1

      STM32, даже самые простые, подорожали в разы. Так что не все так однозначно.

    • @Wo_Wang
      @Wo_Wang 3 года назад

      @@vvdvlas8397 , разве остальные не подорожали?
      :)

  • @Seriyv0lk
    @Seriyv0lk Год назад +1

    Привет! Я недавно стал обладателем такой же отладки. И хочу заметить, что МК на ней прекрасно гонится по частоте (у меня работал на 240 МГц). Так что, в обход куба выставляй такотовую 180 МГц, и будут твои желанные 60 МГц на таймере.

    • @TDMLab
      @TDMLab  Год назад +2

      Да, согласен, почти все STM позволяют некоторый разгон.

  • @muctex
    @muctex 3 года назад +1

    Разжевал и врот положил🔥 супер достойно и понятно расказал🙏

  • @RadioTexnik
    @RadioTexnik 3 года назад +1

    Превосходно! Спасибо за материал! 👍

  • @openFrimeTv
    @openFrimeTv 3 года назад +2

    да, видосы про стм заходят))

  • @artsiomkazlouski5127
    @artsiomkazlouski5127 7 месяцев назад

    очень интересно) пойду поищу видео, поморгаю светодиодиком, напишу на LCD "Hello word"

  • @ВиталийИнюшов
    @ВиталийИнюшов 3 года назад +2

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

    • @virdox
      @virdox 9 месяцев назад

      хоть и прошло много времени, спрошу, есть предложения о продаже БП которые Вы проектируете ?

  • @akvilion7365
    @akvilion7365 3 года назад +3

    Прикольно, оверсемплинг со сдвигом есть даже в младших STM32G0. Сейчас в кубе проверил. Было бы интересно проверить работу этих режимов + разные цифровые фильтры с проверкой на каком нибудь вольтметре с 5+ знаков после запятой. Просто понять - стоит ли тратить ресурсы или остановиться на дефолтных 12 битах.

    • @TDMLab
      @TDMLab  3 года назад +3

      Честно говоря обещать не могу, может позже, следующая тема ЦАП, потом тоже расписано и уже хочу к основному применению прийти как планировал к системе управления АД.

    • @akvilion7365
      @akvilion7365 3 года назад

      @@TDMLab @TDM Lab Тогда ждём ЦАП! Кстати, можно запустить голосовалку - нужно ли прикреплять проекты куба из роликов к видео в качестве примера и "быстрого старта". Мб поможет кому-то освоить и куб и камень.

    • @TDMLab
      @TDMLab  3 года назад

      @@akvilion7365 Думал над этим, но тут прям совсем простой проект, пару раз HAL написал и весь код:))) а настройки инициализации я постоянно менял по ходу пьесы)

    • @vvdvlas8397
      @vvdvlas8397 3 года назад +1

      У STM32 есть единственная серия F373, в которой есть 3 сигма-дельта АЦП на 16бит. Они не очень быстрые, но в районе сигналов килогерц 5-10 вполне годные, особенно в дифференциальном режиме. Вот на них можно сделать примерно "5+".

    • @akvilion7365
      @akvilion7365 3 года назад

      @@vvdvlas8397 STM-щикам пора бы обновить F3xx серию. Следующие с 16 битным АЦП камни уже слишком мощные и дорогие. Добавили бы компараторы, ОУ, USB, пошустрее сделали АЦП, корпуса завезли QFPN - был бы отличный универсальный камень с аналоговым уклоном. А потом можно придумать старшую серию с 18...24 битным АЦП )

  • @playmarket8605
    @playmarket8605 3 года назад +2

    Плату с stm нужно было тоже от батареек запитать для уменьшения помех)

  • @ОлегАсмолов-й5н
    @ОлегАсмолов-й5н 3 года назад +1

    Добрый день! Пилю частотник, подскажите как использовать на практике ускоритель оперативной памяти, чтоб поместить туда таблицу синуса ?

    • @TDMLab
      @TDMLab  3 года назад

      Добрый! А она вам нужна эта ccm sram?
      Тем более если речь идет о таблице.
      Я не работал с ней и пока не собираюсь, но если очень хотите то вот для начала:
      pro-interes.com/wp-content/uploads/2020/12/AN4296-Использование-STM32F3STM32G4-CCM-SRAM-с-IAR-™-EWARM-Keil®-MDK-ARM-и-инструментами-на-основе-GNU.pdf

    • @ОлегАсмолов-й5н
      @ОлегАсмолов-й5н 3 года назад

      @@TDMLab Сегодня досмотрел что кварц на nucleo 24мГЦ, я в настройках по привычке 8 поставил. Когда поменял все полетело. Плюс таймера завёл через LL а не HAL, по итогу синусоида в 1000 Гц без проблем, до этого на 55 мк зависал.

    • @ОлегАсмолов-й5н
      @ОлегАсмолов-й5н 3 года назад

      Так что наверное не нужно пока ccm sram.

    • @TDMLab
      @TDMLab  3 года назад

      @@ОлегАсмолов-й5н ок, понятно, я когда HRTIM заводил забыл вообще внешний кварц включить, работал от внутреннего источника и удивлялся почему частоты ШИМ не совпадают с расчетными. А по поводу LL и HAL все должно заводится одинаково, где то с hal значит ошибка, но если работает то не суть.

    • @ОлегАсмолов-й5н
      @ОлегАсмолов-й5н 3 года назад

      @@TDMLab Я конечно любитель, но даже если посмотреть функцию прерывания от HAL, то она явно больше чем у LL, думаю из-за этого и разница в скорости. Если не прав поправьте.

  • @Googlag
    @Googlag 2 года назад

    Очень интересно несмотря на то ,что ничего по микроэлектронике не понимаю.

  • @ArthurIslamRU
    @ArthurIslamRU 3 года назад

    Спасибо. Подскажите, сколько бит шума добавится в среднем с применением обычного ОУ с коэффициентом усиления 1 ?

    • @TDMLab
      @TDMLab  3 года назад +1

      Если все сделать правильно - нисколько добавится.

    • @ArthurIslamRU
      @ArthurIslamRU 3 года назад

      @@TDMLab Спасибо Большое

  • @MrAndops
    @MrAndops 3 года назад

    Класс

  • @texadmin4749
    @texadmin4749 3 года назад

    Годнота

  • @ОлегАсмолов-й5н
    @ОлегАсмолов-й5н 3 года назад

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

    • @TDMLab
      @TDMLab  3 года назад

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

    • @ОлегАсмолов-й5н
      @ОлегАсмолов-й5н 3 года назад

      @@TDMLab Разобрался: глянул ваш проект, оказалось забыл выставить событие которое генерит таймер(Trigger Event ), сейчас буду с DMA разбираться. Спасибо вам за подсказку .

    • @TDMLab
      @TDMLab  3 года назад

      @@ОлегАсмолов-й5н успехов)

    • @ОлегАсмолов-й5н
      @ОлегАсмолов-й5н 3 года назад

      @@TDMLab С DMA никак.... Запускаю АЦП по таймеру, но в массиве ноль. Инкрементирую счетчик в прерывании по DMA - счетчик стоит, то есть DMA не стартует. До этого на 103м, 407 камне все работало без проблем, а тут.....

    • @TDMLab
      @TDMLab  3 года назад

      @@ОлегАсмолов-й5н стоит посмотреть доступ при запросе DMA к АЦП, должен быть Word
      access в разделе периферия и half word в разделе память, но последнее не обязательно.

  • @ЭлМикро-о4щ
    @ЭлМикро-о4щ 3 года назад

    круто

  • @MK_Electron
    @MK_Electron 3 года назад +4

    В начале понятно , потом какой то эльфийский язык пошел и я перегрузился, пытаясь понять xD

    • @Wo_Wang
      @Wo_Wang 3 года назад

      Это язык R2D2...
      :)

  • @Alex-rw2gy
    @Alex-rw2gy 3 года назад +1

    все это очень круто, но как успеть изучить все эти новые технологии?

    • @TDMLab
      @TDMLab  3 года назад +2

      Все изучить конечно вряд ли, но выбрать несколько направлений и их копать вполне возможно.

    • @CanchezAK
      @CanchezAK 3 года назад

      Будучи догоняющими, программисты всегда будут не успевать, хочешь успевать - создавай сами камни.

  • @101picofarad
    @101picofarad 3 года назад

    Так показали бы уже влияние БИХ и КИХ на форму измеренного сигнала во временной области - чтобы для обычных людей стало понятно зачем все эти четырёхэтажные умножения с накоплениями аппаратные.

    • @TDMLab
      @TDMLab  3 года назад +1

      Как-нибудь покажу, в этот формат уже не вмещалось. Отдельная тема цифровые фильтры будет.

  • @Techn0man1ac
    @Techn0man1ac 3 года назад

    Что такое DSP, если простыми словами?

    • @TDMLab
      @TDMLab  3 года назад

      Цифровая обработка сигналов. Еще проще - сложнее))

  • @ДмитроЯ-я6б
    @ДмитроЯ-я6б 3 года назад +1

    Пошёл я в тини13 колупаться😁

  • @Sanchogus
    @Sanchogus 3 года назад

    И почему мне раньше не попадался этот канал?

  • @suifutors
    @suifutors 2 года назад

    Эм... думаю что стоило подписать график на моменте с передискретизацией.

    • @TDMLab
      @TDMLab  2 года назад

      Так на 10:06 же.
      Пере дискретизация это лишь вожмодность для последующего усреднения, что и позволяет этот микроконтроллер делать аппаратно в самом АЦП.

    • @suifutors
      @suifutors 2 года назад

      @@TDMLab Я про 7:50, просто графики которые ничего не говорят, и никак не подписаны. Видео переделывать смысла нет, это такая ремарка)

    • @TDMLab
      @TDMLab  2 года назад

      @@suifutors Графики на 7:50 иллюстрируют то что я говорю словами. "Отсчеты взятые в соседние моменты времени дополняют друг друга" для получения лучшего соотношения сигнал/шум.

    • @suifutors
      @suifutors 2 года назад

      @@TDMLab Это понятно, но они же не подписаны.)

  • @МихаилСадилов-й1ж
    @МихаилСадилов-й1ж 3 года назад

    Здравствуйте, спасибо за видео. Как всегда, превосходно! Как происходит определение положения ротора "с участием наблюдателя в системе управления"? Встречал этот термин в Motor control sdk от st, но так и не понял, что это. Или кто)?

    • @TDMLab
      @TDMLab  3 года назад +1

      Хороший у Вас вопрос) Скажу то что знаю. Сам системы с наблюдателем не собирал.
      Наблюдателем называется математическая модель объекта управления (двигателя например) которая представляет собой набор уравнений которые описывают его реакцию на внешнее воздействие (напряжение питания, нагрузка на валу), то есть это попытка сделать максимально точную модель управляемого механизма, а значит это позволяет узнать все его характеристики в любой момент времени зная поданные на его вход сигналы.
      Наблюдатель конечно будет всегда иметь ошибку своих предсказаний от реального поведения мотора, но мы можем зная величину ошибки и величину фазных токов корректировать показания наблюдателя в реал тайме.
      Подробнее например здесь: www.st.com/resource/en/application_note/cd00154076-luenberger-state-observer-rotor-position-estimation-simulink-and-software-library-stmicroelectronics.pdf

    • @МихаилСадилов-й1ж
      @МихаилСадилов-й1ж 3 года назад

      @@TDMLab Спасибо. Вам нужно выделить бюджетное финансирование и перенаправить бОльшую часть вашего времени на образовательную деятельность!

  • @viyacheslav.
    @viyacheslav. 11 месяцев назад

    Я сейчас могу купить STM32 дешевле чем Attiny13! Это последний гвоздь для AVR. Прощай такой простой ассемблер...

  • @andreyperov998
    @andreyperov998 3 года назад

    Я ископаемый, но интересно!

  • @MYDIYby
    @MYDIYby 3 года назад

    Империя котиков? Так это у тебя котик на аватарке канала? Я все голову ломал, что это такое там нарисовано.

  • @RenatRkrkaft
    @RenatRkrkaft 3 года назад

    Все ясно, одного маленького конденсатора будет достаточно)))

    • @TDMLab
      @TDMLab  3 года назад

      Часто да.

    • @vvdvlas8397
      @vvdvlas8397 3 года назад

      На сайте Микрочипа, есть статья по поводу "конденсатора" на входе коммутатора АЦП. Не все так однозначно, если используется один АЦП с коммутатором на несколько входов. Этот коммутатор подключает внутреннюю емкость АЦП к разным входам и подзаряжает/подразряжает внешние конды на входах.Это вносит шум в сигналы этих входов. В определенных случаях, входные конды лучше вообще не ставить и фильтрацию алиасов делать на ОУ перед АЦП, хоть это и дороже.

    • @TDMLab
      @TDMLab  3 года назад +1

      @@vvdvlas8397 Да, все так, если используются мультиплексирование каналов одного АЦП то конденсатор запросто даст взаимное проникновение.

  • @clora1136
    @clora1136 3 года назад +1

    Я один увидел бифуркации на ослике?

    • @TDMLab
      @TDMLab  3 года назад

      Ну почти, это псевдорандом средствами ядра.

    • @TDMLab
      @TDMLab  3 года назад

      Хотя блин сейчас пригляделся к началу, а ведь в этом что-то есть, почему похоже?😮

    • @clora1136
      @clora1136 3 года назад

      @@TDMLab так псевдо случайные числа, в данном случае это одна из функций континуума пространств Мандельброта. ruclips.net/video/DH1cv0Rdf2w/видео.html вот тут на пальцах. В целом оно везде, даже оу звенит или компаратор генерит именно так, а параметром будет глубина на которую вы фазу загоните за рабочие параметры).

    • @TDMLab
      @TDMLab  3 года назад

      @@clora1136 да, я конечно смотрел Дерека:) Потрясающе что проявления этого повсюду))

  • @kapitankakao6592
    @kapitankakao6592 3 года назад

    У Автора присутствует явная каша в голове, антиалиасинговый фильтр нужен не для того, о чем идет речь в виде, а для того чтобы избежать наложений копий спектра. Активный фильтр на ОУ или буфер разве не будет иметь собственных шумов? И почему он тогда с точки зрения шума будет пассивных RLC цепей? И каким должен быть оптимальный фильтр для фильтрации DC (0 Гц)? Разве не емкость? Про передискретизация даже писать ничего не хочется. "Эти лишние выборки несут дополнительную информации о сигнале" Это как? Никай дополнительный информации при интерполяции из сигнала Вы явно не получите.

    • @TDMLab
      @TDMLab  3 года назад

      Аналогично я думаю о авторе этого комментария. Если вы хорошо подумаете то поймете, что сказанное мной это лишь подтверждает.
      Понятно что при взятии отсчета неважно где на спектре находилась помеха, она будет перенесена в первую зону Найквиста. Но если вы действительно внимательно послушаете и посмотрите я не говорю что нужно строить антиалиасинговый фильтр, лучше строить аналоговый фильтр с частотой среза не половина fs, а со срезом до нужной полосы и он в том числе будет выполнять роль антиалиасингового фильтра. Андестенд?
      "Активный фильтр на ОУ или буфер разве не будет иметь собственных шумов?" - мы что играем в детский вопрос детский ответ? Читайте SLVA043B просвещайтесь про шумы.
      "И почему он тогда с точки зрения шума будет пассивных RLC цепей?" какой-то незаконченный вопрос:) ну, потому что обеспечит лучшее подавления выше полезной полосы.
      А кто говорит о 0Гц? а идеальный для 2 Гц слабо?
      "Никай дополнительный информации при интерполяции из сигнала Вы явно не получите" - Да вот выходит что получаю:)
      www.analog.com/media/en/technical-documentation/data-sheets/250832fc.pdf
      P.S.
      Только не интерполяции. Не путайте понятия передискретизации и интерполяция, это прям совсем не одно и тоже.
      Под видео я обновил литературу как это работает, и да, есть АЦП построенные на передискретизации, как по ссылке выше.
      RLC плохой подход к фильтрам так как придется забыть о фазовой линейности. Собственно RLC нигде и не применяется, а про RC я рассказал.
      Буферизация нужна если внутреннее сопротивление источника сигнала велико, в видео есть пояснения почему это проблема.

  • @MrDenhard
    @MrDenhard 9 месяцев назад

    Привет, а ты не имел дела с H7 серией?

    • @TDMLab
      @TDMLab  9 месяцев назад

      Что конкретно интересует? Щупал их не углубляясь в спец. фишки.