Мазмұны:

Arduino және TI ADS1110 16 биттік ADC: 6 қадам
Arduino және TI ADS1110 16 биттік ADC: 6 қадам

Бейне: Arduino және TI ADS1110 16 биттік ADC: 6 қадам

Бейне: Arduino және TI ADS1110 16 биттік ADC: 6 қадам
Бейне: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Қараша
Anonim
Arduino және TI ADS1110 16 биттік ADC
Arduino және TI ADS1110 16 биттік ADC

Бұл оқулықта Texas Instruments ADS1110-өте ұсақ, бірақ пайдалы 16-биттік аналогты-цифрлық түрлендіргіш IC-мен жұмыс істеу үшін Arduino-ны қолдануды қарастырамыз.

Ол 2,7-ден 5,5 В-қа дейін жұмыс істей алады, сондықтан Arduino Due және басқа да төмен кернеулі даму тақталары үшін жақсы. Әрі қарай жалғастырмас бұрын, деректер парағын (pdf) жүктеп алыңыз, себебі бұл нұсқаулықта пайдалы болады. ADS1110 сізге Arduino 10-биттік ADC ұсынғаннан гөрі дәлірек ADC опциясын ұсынады-және оны қолдану салыстырмалы түрде оңай. Алайда, ол SOT23-6-де ғана қол жетімді.

1 -қадам:

Кескін
Кескін

Жақсы жаңалық - сіз ADS1110 -ге өте ыңғайлы тақтаға тапсырыс бере аласыз. ADS1110 байланыс үшін I2C шинасын пайдаланады. Ал тек алты түйреуіш бар болғандықтан, сіз автобустың адресін орната алмайсыз - оның орнына ADS1110 -ның алты нұсқасын таңдауға болады - әрқайсысының өз мекен -жайы бар (деректер парағының екінші бетін қараңыз).

Жоғарыдағы суретте көріп тұрғандай, біздікі 1001000 немесе 0x48h автобус мекен -жайына сәйкес келетін «EDO» деп белгіленген. Мысал схемалармен біз I2C шинасында 10 кОм тартылатын резисторларды қолдандық.

Сіз ADS1110-ды бір жақты немесе дифференциалды ADC ретінде қолдана аласыз-Бірақ алдымен біз әр түрлі атрибуттарды басқару үшін пайдаланылатын конфигурация регистрін және деректер регистрін қарауымыз керек.

2 -қадам: конфигурация тізілімі

Мәліметтер парағының он бірінші бетіне өтіңіз. Конфигурация регистрінің көлемі бір байт, және ADS1110 қуат циклінде қалпына келтірілгенде-сіздің қажеттіліктеріңіз әдепкіден өзгеше болса, тізілімді қалпына келтіру қажет. Деректер парағы оны ұқыпты жазады … 0 және 1 биттер PGA (бағдарламаланатын күшейткіш күшейткіш) үшін кіріс параметрін анықтайды.

Егер сіз тек кернеулерді өлшеп жатсаңыз немесе эксперимент жасасаңыз, оларды 1 В/В жоғарылату үшін нөлге қалдырыңыз. Содан кейін 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 болғандықтан, ол деректерді екі байттан қайтарады-содан кейін конфигурация регистрінің мәнімен жүреді. Егер сіз үш байтты сұрасаңыз, лоттың бәрі қайтарылады. Деректер екілік таңбалы сандарды қолдану әдісі болып табылатын «екіге қосымша» түрінде болады.

Бұл екі байтты түрлендіру бірнеше қарапайым математикамен жүзеге асады. 15 SPS кезінде іріктеу кезінде ADS1110 қайтаратын мән (кернеу емес) -32768 мен 32767 аралығында болады. Мәннің жоғары байты 256 -ға көбейтіледі, содан кейін төменгі байтқа қосылады -ол 2.048 -ге көбейтіледі және соңында 32768 -ге бөлінеді. Үрейленбеңіз, өйткені біз мұны алдағы мысал эскизінде жасаймыз.

4-қадам: біржолғы ADC режимі

Біржолғы ADC режимі
Біржолғы ADC режимі

Бұл режимде нөлден 2,048 В дейінгі кернеуді оқи аласыз (бұл ADS1110 үшін кіріктірілген тірек кернеуі де болады). Мысал схемасы қарапайым (деректер парағынан).

I2C шинасындағы 10 кОм тартылатын резисторларды ұмытпаңыз. Келесі эскизде ADS1110 әдепкі режимде қолданылады және өлшенген кернеуді қайтарады:

// Мысал 53.1 - ADS1110 бір жақты вольтметр (0 ~ 2.048VDC) #«Wire.h» қосу #жарнамаларды анықтау1110 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 (); }

деректер = highbyte * 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 деректерін сұрамас бұрын. Бұл сәйкесінше 2, 4 және 8 мәндері үшін 0x8D, 0x8E немесе 0x8F болады - және ADS1110 әдепкіге қайтару үшін 0x8C пайдаланыңыз.

6 -қадам: ADC дифференциалды режимі

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

Бұл режимде әрқайсысы нөлден 5 В аралығында болатын екі кернеудің арасындағы айырмашылықты оқи аласыз. Мысал схемасы қарапайым (деректер парағынан).

Біз ADS1110 кіріс кернеуді қабылдай алмайтынын (және деректер парағында) ескеруіміз керек. Алдыңғы эскизді дәл осындай нәтижелер үшін қолдануға болады- нәтижесінде алынған кернеу Vin+мәнінен алынған Vin мәніне тең болады. Мысалы, егер сізде Вин+ -да 2 В және В-да 1 В болса- нәтижесінде кернеу 1 В болады (күшейту 1-ге қойылған).

Тағы да біз сізге бұл қызықты және пайдалы деп таптыңыз деп үміттенеміз. Бұл хабарламаны pmdway.com сізге жеткізді - бұл өндірушілер мен электроникаға әуесқойлар үшін, бүкіл әлем бойынша ақысыз жеткізу.

Ұсынылған: