Съдържание:
- Етап 1:
- Стъпка 2: Конфигурационен регистър
- Стъпка 3: Регистър на данните
- Стъпка 4: Единичен ADC режим
- Стъпка 5:
- Стъпка 6: Режим на диференциален ADC
Видео: Arduino и TI ADS1110 16-битов ADC: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В този урок разглеждаме използването на 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 режим
В този режим можете да прочетете напрежение, което пада между нула и 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
В този режим можете да прочетете разликата между две напрежения, всяко от които пада между нула и 5 V. Примерната схема е проста (от информационния лист).
Трябва да отбележим тук (и в информационния лист), че ADS1110 не може да приеме отрицателни напрежения на нито един от входовете. Можете да използвате предишната скица за същите резултати- и полученото напрежение ще бъде стойността на Vin- извадена от Vin+. Например, ако имате 2 V на Vin+ и 1 V на Vin- полученото напрежение ще бъде 1 V (с усилване, зададено на 1).
Още веднъж се надяваме, че това ви е представлявало интерес и вероятно е било полезно. Тази публикация ви е предоставена от pmdway.com - всичко за производители и ентусиасти на електрониката, с безплатна доставка по целия свят.
Препоръчано:
Как да направим ADC текущо усещане: 5 стъпки
Как да направим ADC текущо усещане: В тази инструкция ще опишем как да внедрим 8-битов аналогово-цифров преобразувател (ADC) в SLG46855V, който може да усети тока на натоварване и интерфейс с MCU чрез I2C. Този дизайн може да се използва за различни текущи сензорни приложения като
7 сегмента за показване на ADC #Arduino стойности, #Arduino: 4 стъпки
7-сегмент за показване на ADC #Arduino ценности, #Arduino: В тази статия ще направя проект, който все още е свързан с предишната статия. А именно обработка на ADC данни. Така че не се нуждаете от сериен монитор, за да видите стойността на ADC данните. в тази статия ще направя дисплей за преглед на ADC стойност. така че не
Прочетете стойностите на ADC от потенциометри: 4 стъпки
Прочетете стойностите на ADC от потенциометри: В тази статия ще ви покажа как да четете стойностите на ADC от потенциометър. Това е основата на програмирането на Arduino. който чете аналогови стойности с помощта на аналоговия щифт, предоставен от Arduino. освен използването на potentio, има няколко сензора, които
Arduino и PCF8591 ADC DAC IC: 7 стъпки
Arduino и PCF8591 ADC DAC IC: Искали ли сте някога повече аналогови входни щифтове във вашия Arduino проект, но не сте искали да се отдадете за Mega? Или искате да генерирате аналогови сигнали? След това проверете темата на нашия урок - IC NXP PCF8591, който решава и двата проблема
Пускайте песни с Arduino, използвайки ADC към PWM на Flyback трансформатор или високоговорител: 4 стъпки
Пускайте песни с Arduino, използвайки ADC към PWM на Flyback Transformer или високоговорител: Здравейте момчета, Това е втората част от другата ми инструкция (това беше много трудно). По принцип в този проект използвах ADC и ТАЙМЕРИ на моя Arduino, за да преобразуване на аудио сигнал в PWM сигнал. Това е много по -лесно от предишния ми Instructa