Тёмный

Измерение напряжения. Пробуем фильтровать сигнал. Практика с АЦП. STM32L151CBT6A. 

Олег Волков
Подписаться 11 тыс.
Просмотров 4,8 тыс.
50% 1

#stm32#АЦП#вольтметр
АЦП любого микроконтроллера это узел, возможностей которого всегда не хватает. Бывает нужна скорость, бывает нужна точность.
В данном видео я решил пока потренироваться с точностью полученного измерения напряжения. Делитель напряжения будем использовать уже позже, когда оптимизируем код.
На платах, которые использую я, да и Вы, скорее всего вход аналогового питания и цифрового питания подключены от одного источника напряжения. Это вызывает множество помех в измерении. Попробуем отфильтровать сигнал и посмотрим, что получится...
В роли индикатора: 7-сегментный индикатор на MAX7219
Заходи в нашу группу ВК solderi...
Материалы из практического занятия: github.com/Sol...
ЯндексДзен: zen.yandex.ru/...
Ссылки:
Уроки Arduino. Фильтры данных, обработка сигналов: • Уроки Arduino. Фильтры...
UNI-T UT71C: aliexpress.ru/...
STM32L151CBT6A: www.promelec.r...
STM32F401: aliexpress.ru/...
RIGOL DS1054Z: aliexpress.ru/...

Опубликовано:

 

7 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 54   
@ciklomat
@ciklomat 3 года назад
Предполагаю что большие дядьки так не делают :) Я на AVR устанавливаю дроссельный фильтр по питанию ADC и избавляюсь минимум от одного бита с права ,можно просто сдвигом в право потому, что именно младшие разряды шумят. А если ещё и бегущее среднее сделать ,то вообще песня получается!
@Solderingironspb
@Solderingironspb 3 года назад
Ну то, что питание нужно нормальное делать для АЦП - это да).
@user-cz7st3sv9w
@user-cz7st3sv9w 3 года назад
Согласен, у СТМок ацп шумноват, для точных измерений лучше применять специализированные штуковины с цифровым интерфейсом, хотя фильтра тоже решение, тем более - памяти "вагон". Спасибо за видос!
@meg78337
@meg78337 3 года назад
Отличные видео, спасибо! Благодаря вам начал учиться работать с стм32
@ilpd2k436
@ilpd2k436 3 года назад
АЦП шумный, спора нет. Использую оверсемплинг и децимацию для быстрых сигналов - шумы убирает хорошо, на учетверенной частоте добивался шума в один бит максимум. Постоянку фильтрую скользящим средним. Стараюсь с флоат не работать, а фильтровать именно сэмплы АЦП Для жирных контроллеров на м4, м7 можно и на одиночной запятой разные алгоритмы использовать.
@Solderingironspb
@Solderingironspb 3 года назад
ну да, с флоатом работать не надо) это я так....тренился, получил более менее сносные результаты и решил видео заодно записать. Буду пробовать с uint32_t делать алгоритм.
@ilpd2k436
@ilpd2k436 3 года назад
@@Solderingironspb рекомендую посмотреть на скользяще среднее, он очень похож на интегратор в пид, требует всего настоящее и прошлое значение. Для измерения низкочастотного сигнала очень даже подходит. Ну и если в знаменателе ставить 2,4,8 и тд то компилятор будет это представлять как целочисленную логику и все будет очень шустро.
@Solderingironspb
@Solderingironspb 3 года назад
Попробую, спасибо)
@iljsg3390
@iljsg3390 3 года назад
Ура! Новый МК
@AndreyChigisheff
@AndreyChigisheff 2 года назад
Взрослые "дядьки", кроме предложенной фильтрации, пишут на приборе заниженную разрядность. Пару самых младших бит выкидывают(рассматривают как шум). Т.е. если пишут, что АЦП 12 разрядов, то используют 14, а в особо дорогих случаях и все 16. А так да - все правильно.
@edmelectronics4110
@edmelectronics4110 2 года назад
Олег, я сделал твой пример без индикатора, ползую дебагер, но в реалном времени Live expresion и наблюдаю изменение переменые в реалном времени. Я считаю, что в настройке АЦП на внутреное опорное напрежение есть какая ошибка! Когда включить второй канал на ранг Vrf в буфер переменьная отражается за 1.224 В число 1505. Ето значить, что АЦП опят работоеть с опорное напрежения, того на питающие. Надо работать за 1,224 В показания на переменная надо быт 4095. Так что, твое АЦП работоет с разрешение боля маленкое разрешение. Я делол ето в Ардуино и когда поставю внутреный опорный източник, АЦП работоет точно как цифровой компаратор и измеряемое напрежение ограничиваеться до напрежение опорного източника с полном разрядности. Я не нашел, как можно подключит STM32 на внутренное опорное напрежение 1,224 В на АЦП и показание в полном разрядности 4096.
@cybercube7915
@cybercube7915 3 года назад
Делал недавно одну штуку на ad8318 ,тоже шум доставал .Использовал упрощенный Калман с сайта Гайвера ,хорошо работает ,правда адаптировал его для processing .так как все вычисления происходят в ней. Источник эталонного напряжения вроде говорят не плохая штука ,например AD584
@Solderingironspb
@Solderingironspb 3 года назад
А у него выходное напряжение 2.5в, 5в, 7.5в, 10в. Я думаю в будущем попробовать внешний АЦП 24 бит. Посмотрим, как там все будет)
@user-hi5fy6wv5j
@user-hi5fy6wv5j 5 месяцев назад
Что бы что-то откалибровать измеряющее напряжение нужен не мультиметр, а источник образцового напряжения. Их есть: МЭ4700 или Х-480 или кетайские платки на базе AD584. Но это так, для нормальных людей.
@ajdarseidzade688
@ajdarseidzade688 3 года назад
Отличный видеоурок (полезный). но очень странно, что так мало просмотров. Абсолютному большинству людей - такие вещи и не интересны (сегодня с утра пришлось в банке быть и видел это абс. большинство людей в реалии). Успехов каналу и всего хорошего.
@Solderingironspb
@Solderingironspb 3 года назад
Спасибо)
@user-je8oz6lh6w
@user-je8oz6lh6w 3 года назад
В даташите микроконтроллера есть ещё одно величина - код АЦП, снятый при определенном напряжении питания (например - 3В) в заводских условиях. И этот код записан по определенному адресу. Мне лень лезть в даташит - найдите сами. Это сильно "уточнит" результат. А по поводу "болтанки" - надо ставить дроссель и конденсатор на питание АЦП.
@Solderingironspb
@Solderingironspb 3 года назад
Вы наверное про VREFINT_CAL_ADDR_CMSIS…Я чет пробовал разобраться, обратиться к адресу, но пока так и не понял…получал какое-то большое число…определенно делал что-то не так.
@user-je8oz6lh6w
@user-je8oz6lh6w 3 года назад
@@Solderingironspb Всё таки заставил меня даташит открыть. ;-) VREFINT_CAL в микроконтроллере STM32L151CBT6A лежит по адресам 0x1FF8 0078 - 0x1FF8 0079. Я делаю вот как #define VREFINT_ADDR 0x1FF80078 VREF_INT = *(uint16_t *)VREFINT_ADDR; V_ION = ((3
@Solderingironspb
@Solderingironspb 3 года назад
@@user-je8oz6lh6w Спасибо, вот это самая важная строка VREF_INT = *(uint16_t *)VREFINT_ADDR; вот так получил адекватное значение.... Но я все равно не понимаю, зачем два адреса... в 0x1FF8 0078 я получил 1667. а в 0x1FF8 0079 я получил 40198. В файле stm32l151xba.h есть #define VREFINT_CAL_ADDR_CMSIS 0x1FF80078 /*!
@user-je8oz6lh6w
@user-je8oz6lh6w 3 года назад
@@Solderingironspb Это не 2 адреса. Это диапазон адресов - число 2х байтное (uint16_t)
@Solderingironspb
@Solderingironspb 3 года назад
@@user-je8oz6lh6w Поигрался, с этим калибровочным значением...И чего-то не то...появилась нелинейность в измерениях. Делал все по формуле из референс мануала. volt = ((float)(3* VREFINT_CAL * adcValue) / (float)(adcValueVref * ADC_FULL_SCALE)); В итоге, если до этого у меня замеры прям один в один бились с мультиметром +/- 0,002В, то теперь следующая картина: 1) Мультиметр 0,158 В. АЦП МК показывает 0,157 В 2) Мультиметр 1,136 В. АЦП МК показывает 1,132 В 3) Мультиметр 2,431 В. АЦП МК показывает 2,424 В 4) Мультиметр 3,237 В. АЦП МК показывает 3,224 В
@openFrimeTv
@openFrimeTv 3 года назад
да, фильтр это нужная штука. я недавно на работе фильтр АЦП весов делал, это прям жесть как сложно)
@Solderingironspb
@Solderingironspb 3 года назад
Представляю...у нас на работе многие весы с 4 знаками после запятой. Чуть движение воздуха или малая вибрация, а они на тяжеленных плитах стоят, и все полетело.
@openFrimeTv
@openFrimeTv 3 года назад
@@Solderingironspb а на каких микрах АЦП? мы используем cs5532 так как у нее есть встроенный усилитель. еще использовали 7730 на переменке, но у нее разрешение меньше
@Solderingironspb
@Solderingironspb 3 года назад
@@openFrimeTv А вот не знаю...Мне их разбирать нельзя. Много фирм разных... Есть еще весы фирмы Sartorius. Там вообще до 5 знака после запятой.
@openFrimeTv
@openFrimeTv 3 года назад
@@Solderingironspb понял. просто максимум что мы находили в продаже это 32 бита. но там нету усилителя, и это нам вообще не подходит, так как приходится измерять милливольты.
@edmelectronics4110
@edmelectronics4110 2 года назад
АЦП не шумить от брой циклов, а от операционный усилителъ в АЦП, то есть аналоговая апаратная часть. Когда он некачественый, есть многа шумов и на обароть.
@mistudio4456
@mistudio4456 3 года назад
🔥🔥🔥
@avr_stm_pro2955
@avr_stm_pro2955 3 года назад
З..сь.👍👍👍
@avr_stm_pro2955
@avr_stm_pro2955 3 года назад
Хоть я в этом деле новичек, изучаю МК,около двух лет но почему-то к STM 32 нет интереса,.подсел на AVR,
@Solderingironspb
@Solderingironspb 3 года назад
В среде arduino?
@avr_stm_pro2955
@avr_stm_pro2955 3 года назад
@@Solderingironspb да,кстати это мощный инструмент
@Solderingironspb
@Solderingironspb 3 года назад
Ох…ну не знаю…
@avr_stm_pro2955
@avr_stm_pro2955 3 года назад
@@Solderingironspb сейчас она под другим названием : Microchip Studio.. www.microchip.com/en-us/development-tools-tools-and-software/microchip-studio-for-avr-and-sam-devices
@avr_stm_pro2955
@avr_stm_pro2955 3 года назад
@@Solderingironspb не не ардуино . это херня,
@sledleo
@sledleo 2 года назад
Что за программа, в которую передаются измеренные данные? Самописная, читает с COM-порта?
@Solderingironspb
@Solderingironspb 2 года назад
Мультиметр UNI-T UT71C имеет возможность передачи данных по UART. У них есть своя программа, которая определяет мультиметр. Вот на видео она и представлена)
@by0uki
@by0uki 6 месяцев назад
x=(x*(1024-1)+newVal*1)/1024
@user-xw4nh5dv6h
@user-xw4nh5dv6h 3 года назад
А чем 103-й не устроил?
@Solderingironspb
@Solderingironspb 3 года назад
Всем устраивает. Просто сейчас кризис и все такое. Надо как-то показать людям, что мир Stm32 на F103 не заканчивается)
@souris771
@souris771 3 года назад
Как насчёт АЦП ADS1115?
@Solderingironspb
@Solderingironspb 3 года назад
Работал с ним) там даже библиотеку смысла писать нет) все очень просто и доступно)
@souris771
@souris771 3 года назад
@@Solderingironspb, а как насчёт шумов?
@Solderingironspb
@Solderingironspb 3 года назад
Тоже фильтровать нужно. Я еще 24 битный АЦП купил ADS1220IPWR. Потом плату разведу и попробую…
@souris771
@souris771 3 года назад
@@Solderingironspb, будем ожидать видео, если такое планируется.
@Solderingironspb
@Solderingironspb 3 года назад
Да много чего планируется) время бы) ремонт в квартире сейчас занимает 95% свободного времени(
Далее
OG Buda - Сабака (A.D.H.D)
02:19
Просмотров 134 тыс.