Altinkaya: турецкие корпуса для РЭА
РадиоЛоцман - Все об электронике

Микроконверторы ADuC84x: удачное сочетание аналоговой периферии с ядром 8052. Часть 2

Analog Devices ADUC845

Журнал РАДИОЛОЦМАН, июнь 2017

Часть 1

Михаил Русских

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

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

Как уже было отмечено в предыдущей части, микроконвертор ADuC845, являющийся наиболее функциональным представителем серии ADuC84x, представляет собой выгодное с экономической точки зрения объединение в одном корпусе микроконтроллера и многоразрядных АЦП и ЦАП, поскольку набор отдельных компонентов с похожими характеристиками стоил бы дороже и занимал бы больше места на плате. Кроме того, устройства ADuC845 выпускаются в 52-выводных корпусах MQFP с межвыводным шагом 0.65 мм, которые можно достаточно легко запаять на макетную плату, не используя специального дорогостоящего оборудования для пайки, что позволяет использовать эти микроконверторы в радиолюбительских проектах и мелкосерийных устройствах. Пример запаянного на макетной плате ADuC845 с необходимой «обвязкой» можно видеть на Рисунке 6.

Микроконверторы ADuC84x: удачное сочетание аналоговой периферии с ядром 8052
Рисунок 6. Фотография ADuC845 на макетной плате с сопутствующими
компонентами.

Для обеспечения работы микроконвертора требуется небольшое количество недорогих компонентов. На Рисунке 7 представлена принципиальная схема простого устройства измерения веса на основе ADuC845 с «обвязкой». Помимо наличия стандартных блокирующих конденсаторов емкостью 0.1 мкФ, здесь следует отметить некоторые схемотехнические нюансы.

Микроконверторы ADuC84x: удачное сочетание аналоговой периферии с ядром 8052
Рисунок 7. Принципиальная схема простого устройства измерения веса на основе ADuC845.

Для тактирования ядра микроконвертора к выводам XTAL1 и XTAL2 подключается недорогой внешний резонатор 32.768 кГц, который возбуждает внутренний тактовый генератор с ФАПЧ. Но при этом не требуется подключения внешних конденсаторов, поскольку внутри микросхемы на этих линиях уже имеются конденсаторы емкостью 12 пФ. Также при использовании микроконвертора в высокоточных устройствах сбора данных производитель рекомендует разделять питание аналоговых и цифровых цепей, чтобы минимизировать влияние помех этих цепей друг на друга. В противном случае линию питания аналоговой цепи AVDD следует подключать к источнику питания цифровой части через резистор 1.6 Ом, окруженный двумя электролитическими конденсаторами 10 мкФ, как показано на данной схеме. Помимо этого, последовательно с резистором также желательно подключать ферритовую бусинку для лучшего помехоподавления. Само устройство имеет достаточно широкий диапазон питающих напряжений от 2.7 В до 5.25 В. При этом разделение аналоговой и цифровой цепей позволяет микроконвертору оперировать различными уровнями напряжения. Например, цифровая часть может быть запитана напряжением 3.3 В, а аналоговая цепь может работать с сигналами до 5 В.

Устройства серии ADuC8xx также хороши тем, что записывать в них программы можно без использования специального программатора, поскольку в них уже встроен внутрисхемный загрузчик, поддерживающий последовательный интерфейс. Поэтому для программирования микроконтроллера достаточно подключить к линиям UART (в случае с ADuC845 линии 16 и 17 для варианта в корпусе MQFP, и линии 18 и 19 для варианта в корпусе LFCSP) преобразователь интерфейсов UART-USB, например, FT232RL компании FTDI. Для того чтобы загрузить с компьютера hex-файл с машинным кодом написанной программы, необходимо скачать предназначенную для этого программу Windows serial downloader [1], интерфейс которой показан на Рисунке 8.

Микроконверторы ADuC84x: удачное сочетание аналоговой периферии с ядром 8052
Рисунок 8. Интерфейс загрузчика Windows serial downloader.

При работе с этой программой необходимо убедиться, что микроконтроллер переведен в режим внутрисхемного программирования. Для этого вывод PSEN/ должен быть подключить к земле через резистор 1 кОм. Для загрузки кода достаточно нажать кнопку Download, выбрать требуемый hex-файл и дождаться, когда запись завершится. По завершении загрузки для запуска программы следует нажать на кнопку Run. Воспользовавшись вкладкой Configuration, можно выбрать опцию, которая позволяет запускать программу автоматически после ее загрузки в ядро. Помимо этого, в данной конфигурационной вкладке можно выбрать COM-порт, изменить частоту тактового генератора (при этом изменится скорость передачи данных по COM-порту), задать режимы загрузки и верификации.

Микроконверторы серии ADuC84x можно программировать как на ассемблере, так и на языке C. Для тех, кто пишет программы на ассемблере, предлагается простая утилита Metalink 8051 Cross Assembler. Она позволяет скомпилировать листинг программы, сохраненный с расширением asm, и получить два файла – файл с расширением lst, отображающий результаты ассемблерных операций, включая ошибки, допущенные в исходном коде, и файл с расширением hex, который представляет собой машинный код, загружаемый непосредственно в ядро микроконвертора через Windows serial downloader. Hex-файл будет создан, если исходный код программы не будет содержать ошибок. В противном случае будет сформирован только один lst-файл, в котором можно посмотреть сообщения об ошибках.

Впрочем, микроконверторы ADuC84x имеют достаточное быстродействие и приемлемый объем памяти, чтобы писать для них программы на языке высокого уровня C, что может значительно ускорить процесс разработки. На данный момент микроконверторы ADuC84x официально поддерживаются двумя средами разработки – IAR EW51 [2] и Keil µVision C51 [3]. Обе среды имеют бесплатные версии, которые ограничены размером компилируемого кода, что, однако, не так критично при написании несложных программ без элементов обработки сигналов. Бесплатная версия Keil µVision C51 имеет ограничение по коду 2 КБ, в то время как бесплатная версия IAR EW51 ограничена 4 КБ, поэтому для написания более объемных программ без необходимости уплаты немалой суммы денег желательно использовать именно IAR EW51. Впрочем, можно обойтись без покупки дорогой лицензии и писать код без ограничения по объему, если использовать бесплатную среду разработки MCU 8051 IDE [4], распространяемую по принципу open-source, благодаря чему можно скачать не только установщик, но и исходный код данной программы. Для того чтобы писать программы на языке C, для этой среды необходимо установить бесплатно распространяемый компилятор Small Device C Compiler suite [5]. MCU 8051 IDE изначально не рассчитан на работу с микроконверторами ADuC84x, но поддерживает программирование под ядро 8052, поэтому разработчик в данном случае должен позаботиться о наличии заголовочных файлов с описанием регистров микроконвертора, чтобы использовать эту среду для написания программ под ADuC84x.

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

На практике тензорезисторы применяются в составе моста Уитстона, выходное напряжение на измерительной диагонали которого равно нулю при четырех одинаковых сопротивлениях в каждом плече, или при равном соотношении сопротивлений плеч двух делителей напряжения. В этом случае мост называется сбалансированным. Если в плечо моста включить переменное сопротивление, на которое могут влиять внешние силы, то при разбалансировке моста по величине изменения его выходного напряжения можно определить величину внешнего воздействия. В данном примере показано использование ADuC845 в сочетании с мостом Уитстона, который на Рисунке 7 состоит из резисторов R1, R2, R3 и RG. Здесь используется четвертьмостовая схема с одним тензорезистором (RG) типа BF350-3АА (Рисунок 9), как наиболее простой и дешевый вариант. Впрочем, в современных измерительных приборах чаще встречается полномостовая схема, где тензорезисторы задействованы в каждом плече. При этом обеспечивается увеличенная в четыре раза по сравнению с четвертьмостовой схемой чувствительность и лучшая линейность. В качестве компромиссного варианта также может использоваться полумостовая схема, в которой применяются два тензорезистора.

Микроконверторы ADuC84x: удачное сочетание аналоговой периферии с ядром 8052
Рисунок 9. Тензорезистор BF350-3АА.

Поскольку для выполнения измерений с помощью моста Уитстона этот мост должен быть сбалансирован, в случае с тензорезистором BF350-3АА постоянные резисторы выбираются с номиналом, равным сопротивлению BF350-3АА в состоянии покоя, то есть 360 Ом. Для обеспечения более точных измерений желательно использовать прецизионные резисторы. Выходное напряжение моста с одним тензорезистором можно найти по Формуле (6).

  (6)

Изменение сопротивления тензорезистора выражается Формулой (7).

  (7)

Здесь

RG – сопротивление тензорезистора в состоянии покоя;
Kf – коэффициент чувствительности, для металлических тензорезисторов равный 2;
ε –относительная деформация, испытываемая тензорезистором.

Если мост сбалансирован, то есть сопротивления его плеч равны, то на основе Формулы (6) можно получить следующее выражение:

  (8)

Обычно величина относительной деформации представляет собой очень малое значение, выражаемое тысячными долями, поэтому если не преследуется задача получения сверхточных результатов измерения, представленная в скобках часть Формулы (8) попросту убирается. В результате, получив с помощью аналого-цифрового преобразования значение выходного напряжения моста, можно в соответствии с Формулой (9) узнать величину относительной деформации.

  (9)

Теперь, зная величину относительной деформации, можно по Формуле (10) определить силу, приложенную к датчику.

  (10)

Здесь

S – площадь поперечного сечения, в данном случае равная 9.92 мм2;
K –модуль упругости, для меди он равен 100000.

На основе информации о приложенной к датчику силе для устройств измерения веса вроде электронных безменов можно легко вычислить массу тела в соответствии с классической формулой (11).

  (11)

При приложении внешней силы к тензорезистору его размеры изменяются, как правило, не более чем на 2-3%, и, следовательно, изменение относительного сопротивления составляет доли процентов, обычно не выше 0.7%. В связи с этим выходное напряжение моста Уитстона также изменяется на очень малую величину. Но, благодаря высокой разрешающей способности сигма-дельта АЦП микроконвертора и программируемым усилителям в его составе, нет необходимости в применении внешнего каскада усиления сигнала.

Как показано на Рисунке 7, линии выходного сигнала моста подключаются к выводам AIN1 и AIN2, образующим дифференциальный вход 24-разрядного сигма-дельта АЦП в составе ADuC845. В данном случае в качестве опорного напряжения было выбрано напряжение питания. Но следует заметить, что для высокоточных измерений желательно использовать внешний прецизионный источник опорного напряжения или обеспечить высокую стабильность напряжения питания. Поскольку деформация тензорезистора приводит к очень малому изменению напряжения на выходе измерительного моста, то с целью получения наиболее актуальных данных программируемый усилитель в составе АЦП нужно настроить на диапазон ±20 мВ. Для этого биты RN0, RN1 и RN2 (соответственно 0-й, 1-й и 2-й биты) регистра ADC0CON1 должны быть установлены в «0». Также в «0» в этом регистре следует оставить бит UNI (5-й бит), чтобы настроить биполярный вход, и биты BUF0 и BUF1 (соответственно, 6-й и 7-й), чтобы к входам подключить внутренний буфер. С целью минимизации ошибок смещения и шумов следует выбрать режим с автоматическим чередованием входов. Этот режим активен при установленном в «0» бите CHOP/ (3-й бит) регистра ADCMODE. В ADCMODE для настройки непрерывного преобразования биты MD0 и MD1 (соответственно, 0-й и 1-й) следует установить в «1».

В режиме с автоматическим чередованием входов для задания коэффициента децимации цифрового фильтра используется 8-разрядный регистр SF. Выбор значения для записи в регистр SF в данном случае должен происходить в соответствии с формулой (1) из предыдущей части статьи, и с таблицами 10 и 11 на странице 29 документации. Таблицы наглядно показывают, что наименьшего шума (0.31 мкВ) и наибольшей разрешающей способности (14.5 бит) можно достичь при записи в регистр SF значения 255. Однако при этом частота преобразования будет минимальной и составит лишь 5.35 Гц, что, впрочем, не так критично для приложений прецизионного измерения физических величин.

Для назначения каналов основного АЦП и линий источника опорного напряжения предназначен регистр ADC0CON2. Его биты CH0, CH1, CH2 и CH3 (соответственно, 0-й, 1-й, 2-й и 3-й) для выбора входных линий AIN1 и AIN2 должны быть установлены в «0», «1», «0» и «1», а чтобы выбрать в качестве опорного напряжения напряжение на линиях REFIN±, следует биты XREF0 и XREF1 (6-й и 7-й) установить в «1» и «0», соответственно. После проведения всех необходимых настроек для активации АЦП нужно в регистре ADCMODE установить в «1» бит ADC0EN (5-й бит).

Для того чтобы своевременно считывать данные с АЦП необходимо настроить источник прерывания, который будет активировать обработчик прерываний при заполнении регистров данных АЦП (ADC0L, ADC0M и ADC0H). Это осуществляется очень просто путем установки в «1» бита EADC (6-й бит) регистра IE.

Как было отмечено в предыдущей части статьи, микроконверторы серии ADuC84x содержат в себе не только многоразрядные АЦП, но и 12-разрядный ЦАП, который полезно использовать, например, для вывода полученной информации на стрелочный индикаторный прибор или для ее ввода на аналоговый вход другой вычислительной системы. Для демонстрации простоты работы с ЦАП настроим его на вывод преобразованного аналогового сигнала, полученного с АЦП. ЦАП имеет два 8-битных регистра выходных данных: старший DACH и младший DACL. В 8-битном режиме данные полностью помещаются в регистр DACL, а в 12-битном режиме восемь младших бит данных записываются в DACL, а четыре старших – в младшие разряды DACH. При этом обновление выхода ЦАП будет произведено после записи данных в регистр DACL, а перед этим нужно выполнить запись в регистр DACH. Для настройки работы ЦАП служит единственный регистр DACCON. Выбор режима работы осуществляется в бите DAC8 (3-й бит): «1» настраивает ЦАП на 8-разрядный режим, а «0» – на 12-разрядный. Для того чтобы установить выходной диапазон напряжений от 0 В до AVDD, следует записать «1» в бит DACRN (2-й бит). Запись «0» в этот бит установит границы выходного напряжения от 0 В до 2.5 В. Выходная линия ЦАП определяется битом DACPIN (4-й бит): запись «1» назначит в качестве этой линии вывод 14 (DAC), а запись «0» назначит вывод 13 (AINCOM). Также следует отметить бит DACCLR (1-й бит). Для нормальной работы ЦАП его нужно держать в состоянии «1». Сброс этого бита приведет к обнулению регистров DACL и DACH. После завершения настройки ЦАП его активация осуществляется путем записи «1» в бит DACEN (0-й бит).

Упрощенный алгоритм работы микроконвертора ADuC845, используемого в качестве простого измерителя веса, представлен в виде блок-схемы на Рисунке 10. Листинг программы можно найти в репозитории Sourceforge [6].

Микроконверторы ADuC84x: удачное сочетание аналоговой периферии с ядром 8052
Рисунок 10. Блок-схема алгоритма работы простого измерителя веса на
основе микроконвертора ADuC845 и тензорезистора BF350-3АА.

Таким образом, на примере измерителя веса было показано, что микроконверторы серии ADuC84x являются весьма эффективными и простыми в использовании средствами для создания устройств, способных довольно точно обрабатывать аналоговые сигналы. Благодаря высокой степени интеграции, разработчик получает недорогое решение, содержащее в одном корпусе многоразрядные АЦП, ЦАП и ядро 8052, а буферы и программируемые усилители в каналах АЦП позволяют обойтись без внешних схем согласования.

Ресурсы

Литература

Материалы по теме

31 предложений от 24 поставщиков
Многоканальный 8-разрядный АЦП со встроенной флэш-памятью 62кБ и одноцикловым MCU
EIS Components
Весь мир
ADuC845BCP8-3
Analog Devices
74 ₽
ADUC845BSZ62-5
664 ₽
LifeElectronics
Россия
ADUC845BCPZ62-3
Analog Devices
по запросу
Flash-Turtle
Весь мир
ADUC845BCP62-3
Analog Devices
по запросу
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Какая замечательная статья, такой классный кристалл ням-ням, заменяет кучу АЦП и ЦАПов и всего за $10. А вот было бы хорошо если бы к красивым картинкам из теории автор привел реальную выборку с АЦП с закороченным входом. После этого будет понятно почему норм люди используют отдельные АЦП и ЦАП. Причина -шум ядра, который никуда не денешь и который как ни изгаляйся с разводкой накладывается на входные сигналы, а если сигналы микровольты то понятно, что ни о каких 24 бит не стоит и думать. Ну бит 14-16 в лучшем случае можно получить, всё остальное утонет в шумах. Зачем в 17 году потребовалось реанимировать труп из конца 90х да и эта нелепая реклама 8052 ядра, которое уступает в производительности копеешному Cortex M3 ну минимум на порядок....это можно объяснить разве что ностальгией автора