Как подключить ацп к микроконтроллеру

AVR Урок 29. SPI. Внешний АЦП MCP 3201

Урок 29

SPI. Внешний АЦП MCP 3201

Продолжаем цикл уроков по шине SPI. И сегодня мы впервые поработаем с данной шиной на приём данных от устройства. Я думаю этого уже многие ждут с нетерпением.

Для этого мы возьмём микросхему MCP3201. Эта микросхема является внешним аналого-цифровым преобразователем. Разработчиком данной микросхемы является компания Microchip Technology.

Данная микросхема не такая крутая, как может показаться на первый взгляд, скорость у неё не очень велика, но сигнал даже динамический в пределах 100 кГц она отследить может.

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

Давайте изучим для начала основные технические характеристики данного преобразоавтеля.

Частота тактирования по шине SPI может достигать 1,6 МГц при условии, что питаться микросхема будет от 5 вольт, а если она будет питаться от 2,7 вольт — то 0,8 МГц.

Если нам будут нужны какие-то ещё характеристики, то мы к ним вернёмся в процессе написания кода.

Данные от данной микросхемы принимаются с выхода Dout

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

И приниматься данные будут на входе MISO нашего контроллера.

Как только мы запустим тактовые импульсы и опустим шину выбора, данные — начнут передаваться в виде двух байтов, один старший, другой младший, так как АЦП у нас 12 битный и вся информация в рамках одного байта не уместится. И формат такой: в старшем байте идут пустые первые три бита, а в младшем пустой будет последний младший бит.

Вот распиновка нашей микросхемы

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Здесь мы видим, что данная микросхема АЦП является 8-контактной, существует в корпусе DIP, а также в других различных корпусах. Мне, например, в руки данная микросхема попала в корпусе SOIC, поэтому пришлось применить недорогой и незатейливый переходничок, который мы увидим несколько позже, и сделать что-то наподобие DIP, чтобы воткнуть её в макетную плату, то есть получилось что-то наподобие маленькой табуретки.

Vref — это контакт для подачи опорного напряжения. То есть, подадим мы, например сюда пять вольт — и это будет наше максимальное напряжение.

In+ — это у нас аналоговый вход. На нём мы и измеряем наше напряжение.

Vss — общий провод.

CS/SHDN — ножка для выбора и отключения микросхемы.

Dout — ножка цифровых данных измеренного напряжения.

CLK — ножка синхронизации или тактирования.

Vdd — ножка питания от 2,7 вольт до 5,5 вольт.

Вот так вот рассчитывается цена градаций напряжения

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

А вот так само наряжение, вернее наоборот, по измеряемому и опорному напряжению расчитывается информационная величина, которую мы получим из шины

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

То есть, чтобы расчитать напряжение, то нам соответственно нужно будет его выразить из формулы и применить необходимый расчёт в коде. Для этого мы научимся включать плавающую точку в настройках Atmel Studio, так как по умолчанию она у микроконтроллера отключена для экономии энергии.

Также микросхема поддерживает два режима передачи данных по SPI — режим 0:0 и режим 1:1. Данные режимы мы изучали в уроке по знакомству с шиной SPI.

Первый режим (нажмите на картинку для увеличения изображения)

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Второй режим (нажмите на картинку для увеличения изображения)

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Также здесь мы и видим, как именно у нас передаются полезные биты информации.

Ну, можно сказать, с микросхемой мы немного познакомились.

Проект я по славной традиции взял из прошлого занятия, а назвал его по имени нашей микросхемы ADC3201.

Из главного файла я удалил всё ненужное, оставил только функции SPI_init, SPI_SendByte и main.

Также была удалена библиотека led и подключена библиотека для символьного дисплея lcd.

Поэтому файл main.h приобрёл теперь вот такой вид

#define F_CPU 8000000UL

#include «lcd.h«

Библиотека LCD, состоящая из файлов lcd.h и lcd.c, была взята из проекта одного из прошлых уроков.

Функия main() после очистки приняла следующий вид

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

void port_ini ( void )

PORTD =0x00;

DDRD =0xFF;

И также вызовем её в main()

port_ini (); //Инициализируем порты

Ну и для полной инициализации дисплея мы вызовем функцию его инициализации и заодно очистим его

port_ini (); //Инициализируем порты

LCD_ini (); //Инициализируем дисплей

clearlcd (); //Очистим дисплей

Ну, а в бесконечном цикле мы пока установим дисплей на начало координат и применим задержку

setpos (0,0);

_delay_ms (500);

Ну и теперь, прежде чем писать дальнейший код, нам надо ознакомиться со схемой подключения внешнего АЦП к контроллеру. Для этого пока посмотрим её в протеусе (нажмите на картинку для увеличения изображения)

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Всё довольно-таки просто. используется у нас уже шина MISO, остальное собственно без изменений. Для иммитации изменения напряжения мы собрали небольшой делител, состоящий из одного переменного резистора.

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

unsigned char SPI_ChangeByte ( char byte )

SPDR = byte ;

while (!( SPSR & (1 SPIF ))); //подождем пока данные передадутся (обменяются)

return SPDR ;

Как мы видим, функция-то не очень изменилась. Мы всего лишь после окончания приёма-передачи считываем регистр данных и возвращаем его. Но так как у нас по схеме с контроллера ничего не передаётся, но в силу технологии устройства SPI нам ведомое устройство тем не менее байт отдаст, оно никуда не денется.

Теперь нам нужно вышенаписанную функцию как-то использовать и всё-таки запросить что-то. Для этого напишем ещё одну функцию ниже. Данная функция будет принимать байты, обрабатывать их и возвращать нам уже величину, очищенную от ненужных битов

unsigned int Read_3201 ( void )

В данной функции мы объявим две переменных для двух байтов, затем мы опустим шину выбора микросхемы, так как активный уровень у нас низкий, тем самым мы заставим микросхему начинать отправку байтов

unsigned int Read_3201 ( void )

(1 PORTB2 ); //низкий уровень

Считаем два байта из микросхемы, воспользовавшись вышенаписанной функцией

(1 PORTB2 ); //низкий уровень

b1 = SPI_ChangeByte (0); //первый байт

b2 = SPI_ChangeByte (0); //второй байт

Соберём наши два байта в единую величину и уберём ненужный мусор

b2 = SPI_ChangeByte (0); //второй байт

b1 =( b1 b2 ; //собираем два байта в двухбайтовую величину

b1 //убираем ненужные биты (3 слева и 1 справа

b1 >>=4;

Затем поднимем шину выбора, заставив микросхему перестать нам отправлять данные, пусть немного отдохнёт, и возвратим нашу величину из функции

PORTB |= (1 PORTB2 ); //высокий уровень

return b1 ;

Ну, и теперь мы добавим ещё одну функцию ниже, которая преобразует нам нашу сырую двухбайтовую величину в результат с плавающей точкой, который будет в себе уже нести измеряемое напряжение

float Convert_3201 ( unsigned int dt )

float dt1 ;

dt1 =(( float ) dt *5)/4096;

return dt1 ;

Тут также всё просто. мы, применяя явное преобразование типов умножаем нашу величину на 5, так как это опорное напряжение, и разделим на 4096 согласно разрешающей способности нашего внешнего АЦП.

Функция-то у нас написана. Но чтобы она коректно и быстро работала, нам неоходимо включить работу с плавающей точкой средствами Atmel Studio.

Для этого идём по меню

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Теперь, когда мы всё настроили и написали все служебные функции, идём в функцию main() в бесконечный цикл и попробуем, вызвав функцию конвертации, отобразить на дисплее наше измеряемое напряжение.

Добавим сначала локальную переменную для временного хранения нашей величины с плавающей точкой

float dt =0;

Сначала получим напряжение от внешнего АЦП

dt = Convert_3201 ( Read_3201 ());

И, наконец-то настал час использования функции sprinf, давно обещанной, так как с посимвольным выводом числовых величин мы уже вдоволь наигрались.

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

char str [10];

Ну и теперь вызовем функцию sprinf в бесконечном цикле, которая нам преобразует нашу величину с плавающей точкой в строку

dt = Convert_3201 ( Read_3201 ());

Вторым входным параметром функции является строка, в которой находится только лишь строка форматирования и пробел. Данная строка форматирования означает, что бы будем преобразовывать именно величину с плавающей точкой, причём после точки мы будем использовать две цифры.

В дальнейшем мы теперь постоянно будем обращаться к функции sprintf, которая значительно облегчает код преобразования различных величин в строку.

Дальше мы отобразим нашу полученную в результате преобразования с помощью функции sprintf строку на дисплее

str_lcd ( str );

Теперь проверим работу кода в протеусе, перед этим собрав код

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Прежде чем прошить контроллер, посмотрим практическую схему подключения

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Мы видим нашу микросхемку на отладочной плате, вставленную в макетную плату благодаря нехитрому переходнику.

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

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Мы видим, что с помощью внешнего АЦП мы измерили напряжение 4,96, а прибор показывает чуть меньше — 4,91.

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

Можно его измерить и выяснить. Оно у нас именно 4,95 вольт.

Поэтому в функции конвертации мы должны умножать на 4,95, а не на 5. Исправим это

dt1 =(( float ) dt *(4.95))/4096;

Скобки здесь не обязательны, но с ними как-то поспокойнее.

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

Вообщем, если подать точное стабильное опорное напряжение, то можно добиться отчень точных результатов с такой разрешающей способностью.

Но дело даже не в этом. Дело в том, что сегодня мы лишний раз поигрались с шиной SPI и смогли добиться результатов уже исользуя её для приёма данных.

А на следующем занятии мы подключим дисплей к другому контроллеру, чтобы его впоследствии по шине SPI подключить к нашей отладочной плате с контроллером ATmega8.

Программатор, микросхему MCP3201 и дисплей можно приобрести здесь:

Смотреть ВИДЕОУРОК (нажмите на картинку)

Источник

AVR Урок 22. Изучаем АЦП. часть 1

Урок 22

Изучаем АЦП

Сегодня мы начнем изучать очень интересную технологию, а для микроконтроллера — периферию — это аналго-цифровой преобразователь или как его называют АЦП. В английской аббревиатуре, гораздо чаще встречающейся в технической документации — ADC (Analog-to-Digital Converter). Это такая штука, которая преобразует величину электрического сигнала в цифровой код. Затем данный код мы уже используем для обработки или для отображения тем или иным образом данной электрической величины. Это очень распространённая периферия или технология. АЦП активно используется в звукозаписи, измерительной технике, видеозаписи и во многих других случаях. Поэтому нас обойти данную вещь стороной никак не получится, тем более АЦП поддерживается аппаратно в контроллерах AVR.

В контроллере Atmega8 АЦП имеет следующие характеристики

Есть ещё масса различных характеристик, с которыми мы, возможно, познакомимся в дальнейшем.

Как вообще работает цифровое преобразование?

Берётся опорное напряжение и сравнивается с измеряемым. Соответственно, опорное напряжение всегда должно быть больше измеряемого. Если это не так, то нужно будет применять делители напряжения.

Изобразим схематично процесс измерения

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Отрезок — это диапазон измерений. Он находится между нулём и опорным напряжением. А стрелка — это измеряемое напряжение.

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

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Если оно находится в стороне нуля, то в самый старший бит результата записывается 0, а если в стороне максимального напряжения, то единица. У нас будет единица. Затем та половина отрезка, на которой находится измеряемое напряжение делится ещё пополам, и АЦП опять измеряет, в какой половинке уже данного отрезка у нас находится измеряемое напряжение

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Оценка идёт по тому же принципу — в какой стороне отрезок. В нашем случае будет 0. И этот ноль записывается в следующий более младший бит

Затем та четвертинка опять делится пополам и АЦП опять оценивает,где находится отрезок

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

И АЦП так и продолжает такой процесс до тех пор, пока не кончатся ячейки для битов. То есть если мы используем 10-битный режим, то. соответственно, и будет 10 подобных измерений и заполнятся 10 бит величины. Чем больше бит, тем точнее результат, но уже потребуется на это больше времени и более серьёзный и точный АЦП. Имея данный результат, нам несложно будет посчитать величину измеренного напряжения. Мы знаем. что если у нас АЦП 10-битный, то данный результат у нас лежит в промежутке от 0 до 1024, получаемтся всего у нас 1023 отрезка. И мы затем наш результат делим на 1023 и умножаем на величину опорного напряжения.

Посмотрим блок-схему АЦП в контроллере Atmega8

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Мы видим, что у нас есть мультиплексор, имеющий 8 каналов, вход для опрного напряжения AREF. Также существует 8-разрядная шина данных, значения с которых записываются в определённый регистр. Есть регистр данных, регистр управления и состояния, а также регистр управления мультиплексором.

Мы будем использовать самый первый вход ADC0 и в качестве источника измеряемого напряжения будем использовать центральную ножку переменного резистора, подлключенного к контактам питания

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Работать будем сначала в протеусе. Также мы видим, что у нас подключен дисплей самым обычным образом.

Также мы всё подключим и на живом контроллере

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Существует несколько вариантов опорных напряжений, которые мы можем использовать.в нашем АЦП. Мы будем использовать внутреннее опорное напряжение на 2,56 вольт, оно проще, не нужно ничего подключать. Возможно, при таком варианте не очень сильная точность, но перед нами не стоит задача создать точный измерительный прибор. У нас есть задача — изучить возможность использования АЦП в контроллере AVR.

А вот и таблица вариантов опорных напряжений для АЦП

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Перечислим данные варианты сверху вних по таблице. 1 вариант — это внутреннее опорное напряжение, равное напряжению питания, 2 вариант — опорное напряжение подаётся на вход AREF извне, 3 вариант — внутреннее 2,56 вольт с использованием внешнего конденсатора, которы у нас уже припаян к отладочной плате к определённым ножкам контроллера.

Также в АЦП есть делитель частоты на величину от 2 до 128. Делитель этот для того, чтобы мы добивались частоты работы АЦП не больше 200 кГц, иначе точность измерений будет очень малой и мы просто растеряем самые младшие биты. Если у нас возникнет требование имено к скорости измерений и нам уже точность будет на так важна, то мы сможем использовать и более высокие частоты измерений.

Теперь немного поближе познакомимся с регистрами АЦП.

Регистр ADCSRA — управляющий и статусный регистр

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

ADEN — данный бит включает АЦП.

ADSC — при установке в 1 заставляет АЦП начинать преобразование.

ADFR — используется в режиме с использованием прерываний. При установке в 1 включает круговой режим, при котором измерения автоматически следуют одно за другим.

ADIF — бит, также используемый только в режиме прерываний. Это флаг прерываний, который устанавливается в определённых условиях.

ADIE — бит, включающий режим прерываний.

ADPS2-ADPS0 — биты, от комбинации которых зависит величина делителя

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Регистр ADMUX — это регистр для управления каналами мультиплексора АЦП

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Но, помимо непосредственно битов управления каналами у данного регистра есть ещё некоторые управляющие биты

REFS1-REFS0 — биты, включающие определённый режим использования опорного напряжения. Таблица была размещена на данной странице выше.

ADLAR — это бит организации расположения измеренных 10 битов в двух байтах регистровой пары данных. Поближе мы с этим расположением познакомимся чуть позже.

MUX3-MUX0 — биты, включающие определённый канал мультиплексора

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

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

Ну и, наконец, регистровая пара ADCH и ADCL, состоящая из старшего и младшего байта в которую и заносится измеряемый результат. А как именно он туда укладывается, этот результат, зависит от состояния бита ADLAR, рассмотренного выше в регистре ADMUX

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

То есть, если бит ADLAR не выставлен, то младшие 8 бит результата находятся в младшем байте регистровой пары, а 2 старших бита — в младших битах старшего байта. Если же бит ADLAR у нас выставлен, то 8 самых старших бит результата находятся в сатршем байте, а 2 младших в 2 старших битах младшего байта регистровой пары. Второй вариант нам интересен при исользовании 8-битного режима. В данном случае мы читаем только старший байт.

Проект был создан полностью из проекта урока по изучению 4-битного режима подключения LCD Test09 и был назван MyADCLCD.

Также для выноса кода для реализации периферии АЦП были созданы стандартным образом два файла adc.h и adc.c. Соответственно файл adc.h был подключен и в файле main.h и в adc.c.

В файл MyADCLCD.c код был также полностью скопирован из главного файла проекта Test09, всё лишнее было удалено. Код в данном файле после данной операции принял следующий вид

Источник

Как подключить ацп к микроконтроллеру

Рассматривается код программного SPI микроконтроллера AVR и подключение через него внешнего 12-битного ADC (АЦП) MCP3202.

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Цоколевка АЦП MCP3202 (аналог ADC0832)

У АЦП два мультиплексируемых входа CH0 и CH1, которые могут быть выбраны программно. В качестве эталонного напряжения (reference voltage) для АЦП MCP3202 служит напряжение питания VDD/VREF.

Используемый протокол обмена данными максимально прост. Сначала по шине DI идут 4 бита команды, потом по шине DO выдвигаются из АЦП 12 бит данных (каждый бит команды DI и каждый бит данных DO тактируется фронтом сигнала CLK). Данные передаются в порядке, когда самый старший бит идет первым (MSBF, Most Significant Bit First).

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Для реализации обмена данными использовался программно формируемый интерфейс SPI. За основу взят код для подключения MCP3202 к микроконтроллеру MCS51 (см. [2]). Код испытывался на чипе AVR USB AT90USB162, но он будет работать на любом микроконтроллере семейства AVR компании Atmel, и может быть портирован на другие микроконтроллеры.

При подключении АЦП к измеряемым цепям нужно иметь в виду, что входы CH0 и CH1 у MCP3202 имеют низкое и нелинейное сопротивление (которое меняется в зависимости от состояния процесса аналого-цифрового преобразования). Поэтому напрямую подключать MCP3202 в большинстве случаев нельзя, нужен буферный усилитель, иначе результат измерения напряжения будет неверным. На рисунке показан пример простой схемы такого буферного усилителя вместе с антиалиазинговым фильтром низкой частоты на операционном усилителе MCP601.

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

После изготовления клона AVRISP-MkII (см. [1]) выяснилось, что желательно было бы иметь возможность измерять напряжение питания программируемого микроконтроллера. Так как в микроконтроллере AT90USB162 внутреннего АЦП нету, то возникла идея подключить внешний АЦП.

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

Как подключить ацп к микроконтроллеру. Смотреть фото Как подключить ацп к микроконтроллеру. Смотреть картинку Как подключить ацп к микроконтроллеру. Картинка про Как подключить ацп к микроконтроллеру. Фото Как подключить ацп к микроконтроллеру

После такой доработки в утилите программатора AVR Studio на закладке HW Settings стало правильно измеряться и отображаться напряжение питания программируемого чипа VTarget.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *