ukr823f

АЦП STM32 + мультиплексор

7 сообщений в этой теме

ukr823f    3

Приветствую! Товарищи, требуется консультация по АЦП. Собственно процессор STM32F103RET6. Требуется проводить измерения ряда датчиков. датчики делятся на "быстрые"  - основные датчики двигателя мотора - MAP, MAF и им подобные сенсоры ,  а также медленные  - типа датчики температур (резистивные) и прочие датчики, которые медленно меняют свои значения. Собственно так как одних датчиков температур до 12 штук, то повесить всё напрямую на АЦП не выйдет, то для "медленных" каналов хочу использовать мультиплексор типа 74HC4051. Вопрос в том - как сделать вариант чтения каналов мультиплексора. В стм немного не такой АЦП как в АВР.

В AVR я делал просто  - конструкция switch, и дёргаем один канал АЦП, переключая мультиплексор,  а потом меряем остальные каналы. Для этого вызываю функцию типа adc_read в которой все эти измерения написаны. А вот в STM32, как данное реализовать что то не пойму никак. То есть измерения должны производится так

1)измеряем 12 быстрых каналов через регулярные каналы (используя DMA)

2)измеряем 13й канал к которому подключен мультиплексор ( производим 8 измерений данного канала) каждое измерение соответствует новому каналу мультиплексора) измерение производим через DMA

3)измеряем 14й канал к которому подключен мультиплексор ( производим 8 измерений данного канала) каждое измерение соответствует новому каналу мультиплексора) измерение производим через DMA

Подскажите пожалуйста, как реализовать данный функционал?

 

 

Изменено пользователем ukr823f

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
mail_robot    1 193

ну можно использовать механизм регулярных и инжектированных канлов. Регулярная группа может непрерывно опрашиваться DMA и обрабатываться как независимая группа. А инжектированный канал подключаете к мультиплексору и спокойно читаете его по необходимости, не мешая основной группе. У инжектированных каналов даже свои отдельные регистры данных (до 4-х по моему на один АЦП)

Получится ровно то, что вы задумали. Я кстати использовал мультиплексоры из серии 74HC40хх и весьма успешно. Нормально работают. Только на выходе мультиплексора поставьте повторитель на ОУ. У АЦП STM_ки УВХ емкостное и просит источника с низким выходным импедансом для более точной работы.

почитайте, будет полезно http://leoniv.livejournal.com/194681.html

и не задирайте частоту опроса без необходимости. 71,5 цикла обычно более чем достаточно

Изменено пользователем mail_robot

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ukr823f    3
2 минуты назад, mail_robot сказал:

ну можно использовать механизм регулярных и инжектированных канлов

То есть я например два мультиплексора вешаю на два инжектированных канала и читаю их грубо говоря раз в секунду, а остальные каналы использую как регулярные через ДМА (то есть в автоматическом режиме)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 193

совершенно так. Именно для этого и предусмотрены эти каналы. ЕМНИП до 4-х на один АЦП

В принципе можно вашу задачу решить и на регулярных каналах, но не так красиво. Опрос может быть как по запросам DMA, так и по софтовым запросам. Правда это не так быстро и нужен поллинг результатов. Так что это грубый и не очень хороший вариант, хотя и возможный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все очень и очень запутано. Почему нельзя просто опрашивать каналы и писать через пдп в массив. А когда надо, нужный элемент массива взяли и все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    157

Почему нельзя? Можно, конечно. Только если есть специально созданный автоматический режим, глупо им не воспользоваться. Все что для этого необходимо - немного разобраться в режимах работы АЦП. Суть выше изложили - остальное в референсном мануале на семейство.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ukr823f    3

А ещё - Напрмиер если в МК два АЦП. ADC0 и ADC1.

Можно например ADC0 - использовать 15 каналов для измерения регулярных каналов, а ADC1 настроить только на инжектированные каналы для работы с мультиплексорами (2-3 штуки).  Итого  - получается мы не будем мешать работать модулей и т.д и код обработки уменьшиться .

Так получиться сделать?

И ещё - часть подключаемых датчиков - 0-5Вольт сигнал выдают (тот же дад и т.д). я так понимаю нужно ставить ОУ в качестве повторителя напряжения и на выходе ОУ ставить резистивный делитель, чтобы преобразовать сигнал из 0-5В в 0-3.3Вольт.

Сейчас стою перед выбором МК. Или STM32F103R8xx использовать с их 3.3вольтами, или Atmega64 с 5 вольтами и более удобным использованием АЦП.

Изменено пользователем ukr823f

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Сообщения

    • @colorad Я скачал программу Digital Osciloscope последней версии. Если честно - не впечатлила. Во-первых у меня встроенный аудиочип, но он на самом деле не такой фиговый, в микрофоне, по входу я могу поставить дискретизацию 96000 Гц 24 Бит максимум, а на выходе 192 кГц 24 Бит. Да, может быть реальная дискретизация немного меньше, ведь на таких частотах работает не каждая внешняя аудиокарта, но я когда-то читал про этот аудиочип - писали не такой он и паршивый, точно способен работать выше чем на 44.1 кГц. Так вот, я поставил максимальную частоту дискретизации на микрофон и на аудиовыход, но эта  программа упорно работает на 44.1 кГц . Нигде в настройках я не нашел как поменять частоту дискретизации. Пусть, да, втроенное аудио не будет выдавать корректно 96 и 192 кГц. Но это будет лучше 44.1 - однако она так не настраивается, что не радует... И даже на 44.1 кГц она работает паршиво. Я подал на вход микрофона синусоиду с выхода усилителя через резистор не помню какого номинала. Частота синусоиды - 16.5 Гц. Амплитуда мультиметром - 35 мВ. И вот что она показывает (см. скриншот) - дикие зигзаги. А ведь сигнал 16.5 Гц. Меньше у меня мобильный телефон не генерирует. Я его использую как генератор синусоиды. Увеличение амплитуды до 200 мВ - такие же зигзаги только в другом масштабе. При 44.1 кГц можно было бы хотя бы до 100 Гц более-менее гладно показывать, так просто нереально ничео понять, клиппинг там или нет. Расстраивает она конечно, ожидал большего все таки, даже на 44.1 кГц. Подскажите, есть ли какое-то продвинутое максимально ПО, программный осцилограф, который может работать выше чем на 44.1 кГц, если аудиокарта позволяет и не рисует такие зигзаги а сглаживает их, и считает быстрее. У меня ЦП был загружен на 15%. У меня интел четыреядерный. Оно могло бы грузить его хоть на 100%, ресурсы есть, оно их не использует... И рисует загогулины.
    • 5126,20 - это если без каких либо своих запасов. Да и текстолит у Вас вряд ли весь ушел. Это если на коммерческую основу, тогда ещё и припой считать надо...
    • Мой предыдущий пост неверен - мои заблуждения не имеют место, были проблемы с микрокапом. Моделировал в микрокапе чтобы разобраться полностью в схеме, но сначала с плохими моделями, была дефектная библиотека моделей, поменял на нормальные модели и схема в микрокапе заработала.  Вообще, если кто-то столкнется с заменой микросборки, то эту схему можно смело собирать, нужно только в эмиттер VT3 поставить резистор 750-1000 Ом, емкость c4 увеличить до 470 нФ, резисторы в делителе  R12, R13 8.2 кОм и 13 кОм соответственно - нужно для более полного диапазона регулирования. Транзисторы я использовал MMBT3904 и MMBT3906 в SOT23, такие были. Заработала сразу. Печатную плату сборки развел свою, но чуть больше чем сборка по размерам (22х18), в 17х15 вписать не удалось. Если у кого-то есть вопросы - пишите в личку или на емэйл alexguy gaw tut.by. Спасибо Еlectr0nics за тему, привод снова в работе!
    • Формула успеха - вставай пораньше, работай допоздна, найди нефть. Если долго сидеть на берегу, то рано или поздно мимо тебя проплывёт яхта твоего, разбогатевшего за эти годы, врага. — Вот скажите, почему внутренние органы не чешутся? — Это у Вас вопрос юридический или анатомический?
    • Микрометр хоть рабочий..?

      И стрелка почему-то не на нуле.. Точность измерений тогда не волновала..?

       
    • да , все правильно. А что смущает? при 20мА нагрузке на R1 выделится всего 0,9Вт мощности , у вас реле столько же потреблять будет .