Оглавление:

Arduino и 16-битный АЦП TI ADS1110: 6 шагов
Arduino и 16-битный АЦП TI ADS1110: 6 шагов

Видео: Arduino и 16-битный АЦП TI ADS1110: 6 шагов

Видео: Arduino и 16-битный АЦП TI ADS1110: 6 шагов
Видео: Подключаем внешний АЦП, ADS1015 (ADS1115). +4 аналоговых входа! 2024, Ноябрь
Anonim
Arduino и 16-битный АЦП TI ADS1110
Arduino и 16-битный АЦП TI ADS1110

В этом уроке мы рассмотрим использование Arduino для работы с Texas Instruments ADS1110 - невероятно крошечной, но полезной 16-битной ИС аналого-цифрового преобразователя.

Он может работать в диапазоне от 2,7 до 5,5 В, поэтому он также подходит для Arduino Due и других плат для разработки с более низким напряжением. Прежде чем продолжить, загрузите технический паспорт (pdf), так как он будет полезен и упоминается в этом руководстве. ADS1110 дает вам возможность получить более точный АЦП, чем 10-разрядные АЦП Arduino, и он относительно прост в использовании. Однако в SOT23-6 он доступен только как голая деталь.

Шаг 1:

Изображение
Изображение

Хорошей новостью является то, что вы можете заказать ADS1110 установленным на очень удобной коммутационной плате. ADS1110 использует для связи шину I2C. А поскольку имеется только шесть контактов, вы не можете установить адрес шины - вместо этого вы можете выбрать один из шести вариантов ADS1110 - каждый со своим собственным адресом (см. Вторую страницу спецификации).

Как вы можете видеть на фотографии выше, у нас есть маркировка «EDO», которая соответствует адресу шины 1001000 или 0x48h. А в примерах схем мы использовали подтягивающие резисторы 10 кОм на шине I2C.

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

Шаг 2: Регистр конфигурации

Перейдите на одиннадцатую страницу спецификации. Регистр конфигурации имеет размер один байт, и поскольку ADS1110 сбрасывается при выключении питания, вам необходимо сбросить регистр, если ваши потребности отличаются от значений по умолчанию. В технических данных это изложено довольно четко… биты 0 и 1 определяют настройку усиления для PGA (усилителя с программируемым усилением).

Если вы просто измеряете напряжения или экспериментируете, оставьте их равными нулю для усиления 1 В / В. Затем скорость передачи данных для ADS1110 регулируется битами 2 и 3. Если у вас включена непрерывная выборка, это определяет количество выборок в секунду, снимаемых АЦП.

После некоторых экспериментов с Arduino Uno мы обнаружили, что значения, возвращаемые АЦП, были немного неверными при использовании максимальной скорости, поэтому оставьте 15 SPS, если не требуется иное. Бит 4 устанавливает либо непрерывную выборку (0), либо однократную выборку (1). Игнорируйте биты 5 и 6, однако они всегда равны 0.

Наконец, бит 7 - если вы находитесь в режиме одноразовой выборки, установка его в 1 запрашивает выборку - и его чтение сообщит вам, являются ли возвращенные данные новыми (0) или старыми (1). Вы можете проверить, что измеренное значение является новым значением - если первый бит байта конфигурации, который идет после данных, равен 0, он новый. Если возвращается 1, преобразование АЦП не завершено.

Шаг 3: Регистрация данных

Поскольку ADS1110 является 16-битным АЦП, он возвращает данные в двух байтах, а затем следует значение регистра конфигурации. Так что, если вы запросите три байта, все вернется. Данные представлены в форме «дополнения до двух», которая представляет собой метод использования чисел со знаком в двоичном формате.

Преобразование этих двух байтов выполняется простой математикой. При выборке на 15 SPS значение, возвращаемое ADS1110 (не напряжение), находится между -32768 и 32767. Старший байт значения умножается на 256, затем добавляется к младшему байту, который затем умножается на 2,048 и, наконец, делится на 32768. Не паникуйте, так как мы сделаем это в следующем примере скетча.

Шаг 4: режим несимметричного АЦП

Несимметричный режим АЦП
Несимметричный режим АЦП

В этом режиме вы можете считывать напряжение, которое находится в диапазоне от нуля до 2,048 В (что также является встроенным опорным напряжением для ADS1110). Схема примера проста (из техпаспорта).

Не забудьте подтягивающие резисторы 10 кОм на шине I2C. В следующем скетче ADS1110 используется в режиме по умолчанию и просто возвращает измеренное напряжение:

// Пример 53.1 - односторонний вольтметр ADS1110 (0 ~ 2,048 В постоянного тока) #include "Wire.h" #define ads1110 0x48 float Voltage, data; byte highbyte, lowbyte, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // гарантируем, что все данные поступают в {highbyte = Wire.read (); // старший байт * B11111111 lowbyte = Wire.read (); // младший байт configRegister = Wire.read (); }

данные = старший байт * 256;

данные = данные + младший байт; Serial.print («Данные >>»); Serial.println (данные, DEC); Serial.print ("Напряжение >>); напряжение = данные * 2,048; напряжение = напряжение / 32768,0; Serial.print (напряжение, DEC); Serial.println ("V"); задержка (1000); }

Шаг 5:

Изображение
Изображение

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

Если вам нужно изменить коэффициент усиления внутреннего усилителя с программируемым коэффициентом усиления АЦП, вам нужно будет записать новый байт в регистр конфигурации, используя:

Wire.beginTransmission (ads1110); Wire.write (байт конфигурации); Wire.endTransmission ();

перед запросом данных АЦП. Это будет 0x8D, 0x8E или 0x8F для значений усиления 2, 4 и 8 соответственно - и используйте 0x8C для возврата ADS1110 к значениям по умолчанию.

Шаг 6: Дифференциальный режим АЦП

Дифференциальный режим АЦП
Дифференциальный режим АЦП

В этом режиме вы можете прочитать разницу между двумя напряжениями, каждое из которых находится между нулем и 5 В. Схема в качестве примера проста (из таблицы данных).

Мы должны отметить здесь (и в таблице данных), что ADS1110 не может принимать отрицательные напряжения на любом из входов. Вы можете использовать предыдущий эскиз для тех же результатов - и результирующее напряжение будет значением Vin-, вычтенным из Vin +. Например, если у вас было 2 В на Vin + и 1 В на Vin-, результирующее напряжение было бы 1 В (с усилением, установленным на 1).

Еще раз мы надеемся, что вы нашли это интересным и, возможно, полезным. Этот пост предоставлен pmdway.com - все для производителей и любителей электроники с бесплатной доставкой по всему миру.

Рекомендуемые: