Инклинометр на базе микроконвертора ADuC845 и акселерометра ADXL103
фирмы Analog Devices
Алексей ВЛАСЕНКО
Данная статья может служить руководством по применению электронных компонентов фирмы Analog Devices: микромеханического акселерометра ADXL103 и микроконвертора ADuC845. Прибор, описанный в статье, измеряет величину отклонения оси чувствительности акселерометра от горизонтали и отображает эту величину на жидкокристаллическом дисплее в градусах.
Уже несколько лет фирмой Analog Devices выпускается довольно популярное среди инженеров семейство микроконверторов ADuC8xx с 8-разрядным процессорным ядром типа 8052. Семейство подразделяется на два основных подкласса: микроконверторы с быстрым 12-разрядным АЦП последовательного приближения и микроконверторы с медленным прецизионным сигма-дельта АЦП. Такие сигма-дельта АЦП предназначены для измерения медленно меняющихся сигналов датчиков температуры (термопары, резистивные датчики RTD), веса, силы, давления (тензомостовые датчики) и т. п.
Два семейства микроконверторов в течение нескольких лет развивались параллельно. Современные микроконверторы имеют модифицированное быстродействующее ядро с производительностью до 20 миллионов 8-разрядных операций в секунду. Такой процессор выполняет одну операцию за один такт. В «классическом» ядре типа 8052 одна операция выполняется за 12 тактов, то есть в 12 раз медленнее при той же частоте ядра.
Микромеханические интегральные акселерометры iMEMS, которые фирма Analog Devices выпускает уже более 15 лет, также являются весьма востребованной продукцией. Объем поставок акселерометров уже превысил 200 млн штук. Изначально акселерометры iMEMS в основном применялись в автомобильных системах безопасности, но затем фирмой ADI были разработаны и стали выпускаться датчики, обладающие более высокой точностью, температурной стабильностью и чувствительностью. Одним из таких современных приборов является ADXL103, используемый в нашем устройстве.
В качестве микроконтроллера применен прибор ADuC845. Это один из наиболее совершенных 8-разрядных микроконверторов
с прецизионным сигма-дельта АЦП. Его основные отличия от микроконверторов предыдущего поколения — это описанное выше «быстрое» ядро, а также многоканальный мультиплексор на входе.
Оцифрованное значение входного сигнала выводится на индикатор WH1202A. Микроконвертор измеряет сигнал на одном из выбранных входов АЦП, переводит цифровое значение в десятичный вид и выводит результат на дисплей.
Данное устройство было разработано на базе платы, входящей в набор разработчика ADuC845 Quick Start. Оно не претендует на звание законченной конструкции, скорее это некий макет-прототип, в котором мы постарались показать некоторые схемотехнические и программные решения, — его можно использовать в качестве основы для дальнейшей работы.
Подключение акселерометра
Акселерометр ADXL103 с точки зрения применения — довольно простое устройство. При поданном напряжении питания 5 В акселерометр выдает выходной сигнал в виде напряжения, соответствующего величине ускорения по оси чувствительности. В нашем приборе датчик реагирует на статическое ускорение, точнее говоря, он выдает сигнал, пропорциональный проекции вектора силы тяжести на ось чувствительности. «Исходное» положение акселерометра в нашем инклинометре — такое, при котором ось чувствительности направлена горизонтально. При этом на датчик действует нулевое ускорение, и прибор выдает напряжение 2,5 В (разумеется, с некоторой погрешностью «смещения нуля», причем эта погрешность зависит от температуры, но об этом ниже). При отклонении оси чувствительности от горизонтали
выходное напряжение изменяется в ту или иную сторону в зависимости от угла наклона. Так как прибор реагирует на проекцию вектора силы тяжести, выходной сигнал соответствует не углу, а синусу угла. При малых значениях угла (в пределах нескольких градусов) расхождение между величиной угла и значением синуса этого угла невелико, оно меньше, чем погрешность акселерометра. Поэтому нет необходимости пересчитывать значение синуса в значение угла (то есть вычислять арксинус), если инклинометр используется только при малых величинах наклона.
Разрешающая способность акселерометра АБХЫ03 составляет 0,1 mg, где mg означает одну тысячную от ускорения силы тяжести ^ то есть 0,0098 м/с2. Таким образом, при работе в качестве инклинометра разрешающая способность по углу составит менее 0,1 при малых значениях угла. Чувствительность акселерометра составляет около 1 В^, значит, измеряемый сигнал будет изменяться в пределах от 1,5 до 3,5 В. Если инклинометр будет применяться только при малых величинах угла, в микроконверторе можно установить более высокий коэффициент усиления, однако это мало что даст, так как точность АЦП микроконвертора при любом коэффициенте усиления гораздо выше точности датчика-акселерометра.
Подключение жидкокристаллического алфавитно-цифрового индикатора
В проекте мы использовали индикатор WH1202A фирмы ”^пЬоп^ Он представляет собой двустрочный алфавитно-цифровой дисплей на базе микроконтроллера 00066, содержащий 12 символов в строке и имеющий светодиодную подсветку. Для подклю-
0,0 22,5 45,0 67,5 90,0
Угол наклона
Рис. 1. Зависимость измеряемого ускорения от угла наклона инклинометра
чения индикатора WH1202A используется 8-разрядный порт Р2 микроконвертора, а также разряды 0, 1 и 2 порта Р0. Обратите внимание, что к линиям Р0.0, Р0.1 и Р0.2 подключены «подтягивающие» резисторы сопротивлением 10 кОм. Эти резисторы необходимы для нормального формирования уровня логической единицы, так как порт Р0 имеет выходы с открытым стоком. Для порта Р2 «подтягивающие» резисторы не нужны. Процесс инициализации индикатора и вывода данных на дисплей описан в руководстве на индикатор WH1202A [5], кроме того, нами использовалось техническое описание процессора 00066.
Микроконтроллер жидкокристаллического 00066 является одним из «клонов» микроконтроллера НБ44780. Многие производимые различными фирмами алфавитно-цифровые жидкокристаллические индикаторы снабжены контроллерами НБ44780 или аналогичными. Поэтому вместо WH1202A можно, очевидно, применить и другой аналогичный индикатор.
Цепи подсветки и настройки контрастности дисплея на схеме (рис. 2) не показаны.
Аналого-цифровой преобразователь
АЦП в данном устройстве запрограммировано для работы в режиме непрерывной оцифровки. Частота обновления выходного сигнала задается с помощью регистра ББ и определяется формулой = 1/3 1/(8 ББ) 32768. Мы выбрали значение ББ = 245 (по графику на рис. 20 технического описания [1]). Таким образом, частота обновления сигнала на выходе АЦП будет равна 5,57 Гц.
Три байта результата размещаются в трех регистрах ADC0L, ADC0M и ADC0H. Вычисления и вывод результата на дисплей занимают немного времени по сравнению с временем преобразования сигнала, несмотря на то, что пересылка каждого байта на индикатор сопровождается задержкой длительностью около 50 мкс (это требования интерфейса индикатора).
Преобразование и вывод результата
АЦП микроконвертора оцифровывает выходной сигнал акселерометра; в программе предусмотрен пересчет величины оцифрованного сигнала таким образом, чтобы отображать на дисплее угол в градусах. Как говорилось выше, акселерометр измеряет не угол наклона, а проекцию вектора силы тяжести на ось чувствительности акселерометра. При малых углах наклона этот сигнал пропорционален значению угла (рис. 1). Если угол наклона находится в пределах ±10°, прибор корректно отображает значение угла наклона; при увеличении значений угла наклона быстро возрастает погрешность пока-
заний, связанная с расхождением величины значения синуса и значения угла.
Во многих случаях акселерометры применяются для измерений малого значения угла или даже просто в качестве «индикатора нуля». Однако если требуется измерять большие углы наклона, то в алгоритме необходимо предусмотреть пересчет значения ускорения в величину угла, то есть вычислять арксинус полученного сигнала. В нашей программе такое не предусмотрено (с целью упрощения), но реализовать функцию арксинуса можно либо с помощью аппроксимирующего полинома, либо табличным способом, либо комбинируя эти два способа.
Когда угол наклона приближается к 90°, возникает другая проблема: теперь ускорение силы тяжести направлено по касательной по отношению к оси чувствительности, поэтому функция зависимости ускорения от угла становится очень пологой (рис. 1). Это не позволяет получить высокую точность измерения угла наклона. В таком случае нужно использовать двухосевой акселерометр, например ADXL203. Этот прибор имеет две оси чувствительности, расположенные под прямым углом друг к другу, и, соответственно, два отдельных сигнальных выхода. С помощью такого прибора можно реализовать инклинометр, дающий точные показания при любой величине поворота датчика относительно направления силы тяжести в пределах 360°. При использовании двухосевого акселерометра совместно с микроконвертором ADuC845 или аналогичным схема практически не будет усложнена, так как этот процессор имеет несколько дифференциальных входов, к которым можно подключить выходы датчика.
Температурный уход параметров
Обращаем внимание разработчиков на тот факт, что акселерометры имеют некоторую зависимость параметров от температуры. Особенно значительным температурным дрейфом параметров обладают акселерометры
предыдущих поколений. Приборы ADXL103 и ADXL203 являются более современными и совершенными, они обладают высокой точностью и значительно сниженным температурным дрейфом таких параметров, как смещение нуля и коэффициент преобразования. Тем не менее, уход чувствительности (то есть коэффициента преобразования) акселерометров ADXL103 и ADXL203 составляет 0,3% во всем температурном диапазоне, и, что гораздо важнее, уход нуля может составлять 0,1 mg/°C [2]. Поэтому, если от этих датчиков требуется максимально возможная точность, необходимо учитывать температурный фактор.
Один из подходов к решению этой проблемы — использование температурного датчика (терморезистор, резистивный датчик RTD или просто полупроводниковый диод), который можно подключить к одному из свободных входов ADuC845. Затем следует откалибровать прибор в термостате при разных температурах и применять соответствующий калибровочный коэффициент при соответствующей температуре.
Другой способ решения температурной проблемы — термостатировать датчик ускорения. Термостатирование дает отличный результат, но требует значительного увеличения энергопотребления. Это ограничивает применимость такого подхода в устройствах с автономным питанием.
Принципиальная схема и программа
На рис. 2 показана принципиальная схема устройства. Инклинометр сконструирован на базе оценочной платы, входящей в набор разработчика ADuC845 Quick Start. На приведенной схеме не показаны имеющиеся на плате ADuC845 Quick Start элементы, не задействованные в нашей конструкции.
Аналоговый вход микроконвертора работает в дифференциальном режиме. В схеме применялся внешний источник опорного напряжения, но это не обязательно, можно
Отладка/загрузка (При нормальной работе разомкнуто) 1 кОи
3x10 кОм
Сброс
(При нормальной работе
разомкнуто) DVqD
№
Интерфейс RS-232
ADM 3202
C1+ V ycc
v+ GND
C1- T10UT
C2+ RUN
C2— R10UT
V- T1IN
T20UT T2IN
R2IN R20UT
Рис. 2. Принципиальная схема инклинометра
обойтись опорным источником, который есть в микроконверторе.
В нижней части схемы, в пунктирной рамке, показано устройство загрузочного кабеля, входящего в набор ADuC845 Quick Start. С помощью этого интерфейса микроконвертор ADuC845 можно программировать, подключив загрузочный кабель к COM-порту персонального компьютера. Программное обеспечение для работы с микроконвертором и загрузчик WSD можно скачать с сайта [4] совершенно бесплатно.
Иногда удобнее скомпоновать преобразователь уровня ADM3202 не в загрузочном кабеле, а на самой плате устройства. Тогда в дальнейшем интерфейс RS-232 можно будет использовать не только для загрузки, но и для обмена данными с компьютером при работе устройства.
С технологией загрузки программы в Flash-память микроконвертора можно ознакомиться в техническом описании микроконтроллера [1].
При самостоятельной разработке платы устройства советуем ознакомиться с рекомендациями фирмы Analog Devices, приведенными в главе 10 материалов семинара по процессорам DSP и микросхемам со смешанными сигналами [3]. В статье описаны методы кон-
струирования печатных плат, позволяющие минимизировать уровень помех и получить максимальную точность при аналого-цифровом преобразовании.
Исходный код программы для загрузки в Flash-память процессора можно скачать с сайта [6]. Код этой программы, готовый для загрузки, находится там же [7]. Эта программа представляет собой вполне законченный функциональный код, однако калибровка в ней не реализована. В общем, данная конструкция — это лишь основа для дальнейшей работы, многие необходимые вещи в ней отсутствуют. Тем не менее, это вполне работающее устройство, и оно демонстрирует основные возможности как акселерометра ADXL103, так и микроконвертора ADuC845. ■
Литература
1. ADuC845/ADuC845/ADuC845 datasheet
2. ADXL103/ADXL203 datasheet
3. w ww .analog.c om.ru/Public/public.h tm
4. w ww.analog.c om/MicroConverter
5. w ww.ga w.r u/ht ml.cgi/txt/lcd/lcm/Winstar/char/ WH1202A.h tm
6. w ww.analog.c om.r u/Public/incl.a sm
7. w ww.analog.c om.r u/Public/incl.hex