|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||||||||||||
Stm32f303vc + ADC (Dual Mode) + DMA. Оцифровываем синхронно05.04.2017, 10:44. Показов 24146. Ответов 20
Добрый день. Поковырялся немного с АЦП в f303 и решил осилить Dual Mode. Вкратце зачем он нужен: у STMов заожена куча возможностей АЦП : оцифровка регулярных каналов, инжектированных каналов, и того и другого. Оцифровка одного канала или сразу секции с различными приоритетами и временами накопления для каждого канала. Так же есть прерывистый режим, когда секция разбивается на подсекции и они оцифровываются по очереди, по каждому пинку программного или внутреннего триггера. Ну и конечно данные можно вытаскивать с помощью DMA.
У меня появилась необходимость снимать показания с датчика подключенного по трехпроводной линии. Кто не в курсе, объясню: датчик представляет собой сопротивление меняющееся от температуры, казалось бы что сложного, кидаем один конец на землю пропускаем через него постоянный(известный нам) ток, а на верхнем выводе меряем падение напряжения. Но прелесть таких датчиков, в том, что они находятся непосредственно на плате, а могут находиться за углом на длинных проводах. И эти самые провода получаются включены последовательно с самим термосопротивлением. Учитывая, что dR/dT составляет доли Ома на градус, при большой длине проводов, можем обмануться на несколько градусов, что не хорошо. И тут придумали умные люди компенсацию сопротивления проводов. К верхнему или нижнему выводу присоединяется провод, параллельный выводному, и он заводится на второй канал АЦП. Зачем все это нужно: после оцифровки двух каналов мы получаем два падения напряжения : 1 - датчик + паразитные сопротивления, 2 датчик + паразитные сопротивления + паразитное сопротивления доп. провода. Найдем их разность и получим падение на проводе, ну и вычтем из первого значения две эти разности и получим чистое сопротивление датчика. При условии, что провода одной длины, одного сечения и материала. Для большей точности могут применять четырехпроводные схемы. Мое первое решение: настраиваем 2 канала АЦП в одну секцию и оцифровываем по очереди. Инициализация: Кликните здесь для просмотра всего текста
Пинаем АЦП в main: Кликните здесь для просмотра всего текста
Первые грабли: значения АЦП всегда плавают и флуктуируют, при хорошей схемотехнике флуктуации малы, но младшие разряды гуляют вверх да вниз от точного значения, да и черт с ними, потом отфильтруем. Так как преобразование происходит последовательно, между ними есть временной промежуток в который наши любимые шумы могут воздействовать по разному. Получаем картинку номер 1. Очевидно, что U(датчик+провод) должно быть > U(датчик). Но по факту из-за задержки между оцифровками показания хаотичны из за шумов. Возможно после фильтрации Условие выполнится, а вдруг нет? Тогда вся компенсация коту под хвост. И тут вступает в игру режим Dual Mode. Что это такое: в данном камне 4 независимых АЦП, 1 и 2, 3 и 4 мы можем настроить в парную работу где 1 и 3 АЦП мастера, а 2 и 4 их слейвы. В чем прелесть? В том что мы можем настроить по одному канала 1 и 2 АЦП и по пинку мастера они синхронно оцифруют данные. Так же в данном режиме есть куча разных плюшек см. в мануале. Проинициализируем и посмотрим на результаты: Кликните здесь для просмотра всего текста
На графике видно, что все стало гораздо приятнее. На глаз заметна разница между измерениями, эта разница и есть сопротивление провода. Остается только отфильтровать данные и можно считать сопротивление датчика. Данный режим может быть полезен при измерении мощности, чтобы оцифровывать ток и напряжении в один момент времени. Может кому пригодится
4
|
||||||||||||||||
| 05.04.2017, 10:44 | |
|
Ответы с готовыми решениями:
20
Stm32f303vc+ADC(Dual mode)+DMA STM32F4 Dual ADC mode Нет прерывания от DMA в режиме ADC DMA |
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
||||||
| 10.05.2021, 20:45 | ||||||
0
|
||||||
| 10.05.2021, 20:45 | |
|
stm32f407+ADC+DMA. Проблема с DMA STM32F4Discovery - ADC DMA и FSMC DMA ADC->DMA->SDIO (или NAND через FSMC) без остановки в обработчике прерываний DMA на STM32F407VG, реально или нет? ADC +DMA ADC+DMA пример Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|