на главную
Карта сайта
English version
Вы читаете:

Сопряжение АЦП с микроконтроллерами AVR

Р/л технология
7 лет назад

Сопряжение АЦП с микроконтроллерами AVR


Микроконтроллеры AVR семейств tiny и mega имеют встроенные десятиразрядные аналого-цифровые преобразователи, что в целом очень удобно для создания различных измерительных устройств на основе микроконтроллеров. Но нередко требуется выполнять аналого-цифровое преобразование с более высокой разрядностью, точностью или скоростью. Для этого нужно подключить к микроконтроллеру внешний АЦП с соответствующими параметрами. В статье приведены примеры сопряжения трёх различных АЦП с микроконтроллером ATmega8.

Для экспериментов с различными внешними АЦП был изготовлен по схеме, изображённой на рис. 1, модуль, содержащий микроконтроллер ATmega8L-8PI и буквенно-цифровой ЖКИ MT-10S1, позволяющий отобразить на своём экране строку из десяти символов. К этому модулю подключались для исследования различные микросхемы АЦП, для работы с каждой из которых в программную память микроконтроллера загружалась специально разработанная демонстрационная программа, превращающая устройство в простой цифровой милливольтметр постоянного тока.

Схема устройства

Рис. 1. Схема устройства

 

Схема подключения к микроконтроллерному модулю 12-разрядного АЦП AD7896AN [1] показана на рис. 2. Особенность этого АЦП - использование напряжения питания в качестве образцового. Поэтому здесь он питается от параллельного стабилизатора на микросхеме TL431. При напряжении питания 4,096 В цена младшего разряда выходного кода АЦП равна 1 мВ.

Схема подключения к микроконтроллерному модулю 12-разрядного АЦП AD7896AN

Рис. 2. Схема подключения к микроконтроллерному модулю 12-разрядного АЦП AD7896AN

 

Точное значение напряжения питания устанавливают подстроечным резистором R1. Результат преобразования поступает в микроконтроллер по последовательному интерфейсу, образованному линиями PB5 (SCK) и PB4 (MISO). Микроконтроллер подаёт АЦП команду запуска преобразования по линии PB0 и принимает сигнал о его завершении по линии PB1.

Демонстрационная программа Vmeter_AD7896 запускает АЦП и выводит полученный результат в виде десятичного числа на ЖКИ HG1 микроконтроллерного модуля. Для исключения миганий индикатора предусмотрена секундная задержка между измерениями. Последовательный интерфейс реализован программно, поскольку обнаружилось, что принятые от АЦП аппаратным модулем SPI микроконтроллера данные некорректны - результат измерения удвоен. Причина этого ещё подлежит выяснению.

Схема подключения к микроконтроллерному модулю 12-разрядного АЦП MCP3201 [2] показана на рис. 3. Он имеет дифференциальный вход преобразуемого напряжения, что не исключает возможности работы в однополярном режиме при соединении входа IN- с общим проводом.

Схема подключения к микроконтроллерному модулю 12-разрядного АЦП MCP3201

Рис. 3. Схема подключения к микроконтроллерному модулю 12-разрядного АЦП MCP3201

 

Этому АЦП требуется отдельный источник образцового напряжения, которым в рассматриваемом случае служит микросхема REF3030 с типовым значением выходного напряжения 3 В. Более удобным было бы применить аналогичную микросхему REF3040, дающую образцовое напряжение 4,096 В, как в предыдущем случае, но найти такую микросхему не удалось.

Если перемычка S1 установлена в положение 2-3, входное напряжение поступает на вход АЦП напрямую с Входа 1. Когда она в положении 1 -2, напряжение на вход АЦП проходит с Входа 2 через ФНЧ с частотой среза 10 Гци коэффициентом передачи 1 на ОУ DA1. Устанавливать на входе АЦП фильтр или повторитель напряжения на ОУ рекомендуется, если источник сигнала "шумит" или имеет высокое выходное сопротивление.

Передача информации из АЦП в микроконтроллер организована по последовательному интерфейсу, использующему линии PB5 (SCK), PB4 (MISO) и PB2 (CS). Низкий уровень сигнала CS, устанавливаемый микроконтроллером, разрешает АЦП приём и передачу информации по последовательному интерфейсу.

Демонстрационная программа Vmeter_MCP3201 запускает преобразование, вычисляет значение входного напряжения в вольтах и выводит полученный результат на ЖКИ микроконтроллерного модуля.

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

В программе учтено, что для получения от АЦП MCP3201 правильного результата преобразования два старших разряда его старшего байта необходимо обнулить, а затем сдвинуть весь двухбайтовый результат на один разряд вправо.

При образцовом напряжении 3 В цена младшего разряда результата преобразования 3/4096 " 0,7324 мВ. Чтобы для получения результата в милливольтах использовать только целочисленные вычисления, программа умножает принятый от АЦП код на в 10000 раз большее число 7324, а затем делит произведение на 10000. Целая часть частного выводится на ЖКИ с незначащими нулями, причём десятичная запятая устанавливается после разряда целых вольт.

Наиболее просто подключить к микроконтроллерному модулю 16-разрядный АЦП ADS1110 [3]. Для этого требуются всего два резистора, два конденсатора и две линии ввода/вывода микроконтроллера. Схема подключения показана на рис. 4. АЦП имеет интерфейс I2C, аппаратный адаптер которого имеется в большинстве микроконтроллеров. Адрес ведомого АЦП ADS1110 на шине I2C зашифрован в нанесённой на корпус микросхемы маркировке. Всего возможны восемь вариантов: ED0 - 1001000, ED1 - 1001001... ED7 - 1001111. Если в разрабатываемом устройстве предполагается использовать несколько таких АЦП, нужно выбирать их с разными адресами ведомого.

Схема подключения

Рис. 4. Схема подключения

 

Интервал допустимого синфазного входного напряжения у этого АЦП - 0...2,048 В, дифференциального входного напряжения - от -2,048 до +2,048 В. При этом потенциал каждого входа должен быть положительным или нулевым относительно общего провода.

В АЦП ADS1110 имеется конфигурационный регистр, в котором значениями двух младших разрядов PGA0 и PGA1 устанавливают коэффициент усиления встроенного усилителя, следующими двумя разрядами DR0 и DR1 задают скорость преобразования и передачи информации. Однако с увеличением скорости преобразования уменьшается его разрядность. В прилагаемой демонстрационной программе Vmeter_ ADS1110 оставлены заводские установки: 16 разрядов, 15 выборок в секунду (DR0=1, DR1 = 1).

Следующий разряд SC позволяет выбрать режим преобразования: 1 - однократное, 0 - непрерывное (по умолчанию). Ещё два разряда не используются, а старший разряд ST/DRDY в программе оставлен без изменения.

В самом начале своей работы программа Vmeter_ADS1110 настраивает АЦП, записывая нужные значения в разряды его конфигурационного регистра. В основном цикле она запускает аналого-цифровое преобразование, вычисляет измеренное напряжение и отображает результат на ЖКИ микроконтроллерного модуля, повторяя эти операции каждую секунду.

Подпрограмма вычисления напряжения аналогична рассмотренной выше для АЦП MCP3201. Но поскольку цена младшего разряда АЦП ADS1110 равна 62,5 мкВ, результат преобразования программа умножает на 625 и делит на 1000. Измеренное значение напряжения выводится на экран со знаком плюс или минус и с точностью до десятых долей милливольта. Но верными можно считать только четыре старшие десятичные цифры результата, поскольку именно с такой точностью задана цена младшего двоичного разряда кода АЦП.

Измерения можно проводить в однополярном режиме, подавая измеряемое положительное напряжение на Вход+ или Вход-, а неиспользуемый вход - соединив с общим проводом. Если напряжение подано на Вход-, результат работы АЦП будет отрицательным числом, представленным дополнительным кодом. Программа распознаёт его по единице в старшем разряде старшего байта и для дальнейших вычислений инвертирует. Аналогично работает программа в дифференциальном режиме измерения. В этом случае результат преобразования получается отрицательным, когда напряжение на Входе- больше, чем на Входе+. Знаки плюс или минус на экране ЖКИ информируют о том, на какой вход подано измеряемое напряжение, или о том, на каком входе оно больше.

Программы микроконтроллера имеются здесь.

Литература

1. AD7896 2.7V to 5.5V, 12-Bit, 8 ms ADC in 8-Pin SO/DIP. - URL: https://lib.chipdip.ru/ 143/DOC000143743.pdf (29.05.17).

2. MCP3201 2.7V 12-Bit A/D Converter with SPI Serial Interface. - URL: https://lib. chipdip.ru/2 51 /DOC000251218.pdf (29.05.17).

3. ADS1110 16-Bit Analog-to-Digital Converter with Onboard Reference. - URL: http:// www.farnell.com/datasheets/1863612.pdf (29.05.17).

Автор: Н. Салимов, г. Ревда Свердловской обл.