Съдържание:

Arduino и TI ADS1110 16-битов ADC: 6 стъпки
Arduino и TI ADS1110 16-битов ADC: 6 стъпки

Видео: Arduino и TI ADS1110 16-битов ADC: 6 стъпки

Видео: Arduino и TI ADS1110 16-битов ADC: 6 стъпки
Видео: Conversor ADS1110 EVM TEXAS INSTRUMENTS 2024, Ноември
Anonim
Arduino и 16-битовият ADC на TI ADS1110
Arduino и 16-битовият ADC на TI ADS1110

В този урок разглеждаме използването на Arduino за работа с Texas Instruments ADS1110-невероятно малка, но полезна 16-битова аналогово-цифрова преобразуваща интегрална схема.

Той може да работи между 2,7 и 5,5 V, така че е подходящ и за Arduino Due и други платки за развитие с ниско напрежение. Преди да продължите, моля, изтеглете информационния лист (pdf), тъй като той ще бъде полезен и ще бъде споменат по време на този урок. ADS1110 ви дава възможност за по-точен ADC, отколкото се предлага от 10-битовите ADC на Arduino-и е сравнително лесен за използване. Той обаче се предлага само като гола част в SOT23-6.

Етап 1:

Образ
Образ

Добрата новина е, че можете да поръчате ADS1110, монтиран на много удобна платка. ADS1110 използва I2C шина за комуникация. И тъй като има само шест пина, не можете да зададете адреса на шината - вместо това можете да избирате от шест варианта на ADS1110 - всеки със собствен адрес (вижте страница втора от информационния лист).

Както можете да видите на снимката по -горе, нашата е маркирана с „EDO“, която съответства на адреса на автобуса 1001000 или 0x48h. А с примерните схеми сме използвали 10 kΩ издърпващи се резистори на I2C шината.

Можете да използвате ADS1110 като единичен или диференциален ADC-Но първо трябва да разгледаме конфигурационния регистър, който се използва за управление на различни атрибути, и регистъра на данните.

Стъпка 2: Конфигурационен регистър

Обърнете се към единадесета страница от информационния лист. Конфигурационният регистър е с размер на един байт и тъй като ADS1110 се нулира при цикъл на захранване-трябва да нулирате регистъра, ако вашите нужди са различни от настройките по подразбиране. Информационният лист го изписва доста добре … битове 0 и 1 определят настройката за усилване за PGA (програмируем усилвател за усилване).

Ако просто измервате напрежения или експериментирате, оставете ги като нула за усилване от 1V/V. След това скоростта на данни за ADS1110 се контролира с битове 2 и 3. Ако сте включили непрекъснато вземане на проби, това определя броя на пробите в секунда, взети от ADC.

След някои експерименти с Arduino Uno установихме, че стойностите, върнати от ADC, са били малко отслабени при използване на най -бързата скорост, така че го оставете като 15 SPS, освен ако не се изисква друго. Бит 4 задава или непрекъснато вземане на проби (0), или еднократно вземане на проби (1). Игнорирайте битове 5 и 6, но те винаги са зададени като 0.

И накрая бит 7-ако сте в режим на еднократна извадка, настройването му на 1 изисква проба-и четенето му ще ви каже дали върнатите данни са нови (0) или стари (1). Можете да проверите дали измерената стойност е нова стойност - ако първият бит от конфигурационния байт, който идва след данните, е 0, той е нов. Ако връща 1, преобразуването на ADC не е завършило.

Стъпка 3: Регистър на данните

Тъй като ADS1110 е 16-битов ADC, той връща данните за два байта-и след това следва стойността на конфигурационния регистър. Така че, ако поискате три байта, цялата партида се връща. Данните са под формата на „two’s complement“, което е метод за използване на подписани числа с двоичен код.

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

Стъпка 4: Единичен ADC режим

Единичен ADC режим
Единичен ADC режим

В този режим можете да прочетете напрежение, което пада между нула и 2.048 V (което също е вграденото референтно напрежение за ADS1110). Примерната схема е проста (от информационния лист).

Не забравяйте 10 kΩ издърпващи се резистори на I2C шината. Следващата скица използва ADS1110 в режим по подразбиране и просто връща измереното напрежение:

// Пример 53.1 - Едностранен волтметър ADS1110 (0 ~ 2.048VDC) #включва "Wire.h" #дефинира ads1110 0x48 плаващо напрежение, данни; байт 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:

Образ
Образ

След като бъде качен, свържете сигнала за измерване и отворете серийния монитор - ще ви бъде представено нещо подобно на изображението на серийния монитор, показано в тази стъпка.

Ако трябва да промените усилването на вътрешния програмируем усилвател на усилвателя на ADC - ще трябва да запишете нов байт в регистъра за конфигурация, като използвате:

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

преди да поискате ADC данни. Това би било 0x8D, 0x8E или 0x8F за стойности на усилване съответно 2, 4 и 8 - и използвайте 0x8C за нулиране на ADS1110 обратно по подразбиране.

Стъпка 6: Режим на диференциален ADC

Режим на диференциален ADC
Режим на диференциален ADC

В този режим можете да прочетете разликата между две напрежения, всяко от които пада между нула и 5 V. Примерната схема е проста (от информационния лист).

Трябва да отбележим тук (и в информационния лист), че ADS1110 не може да приеме отрицателни напрежения на нито един от входовете. Можете да използвате предишната скица за същите резултати- и полученото напрежение ще бъде стойността на Vin- извадена от Vin+. Например, ако имате 2 V на Vin+ и 1 V на Vin- полученото напрежение ще бъде 1 V (с усилване, зададено на 1).

Още веднъж се надяваме, че това ви е представлявало интерес и вероятно е било полезно. Тази публикация ви е предоставена от pmdway.com - всичко за производители и ентусиасти на електрониката, с безплатна доставка по целия свят.

Препоръчано: