Мазмұны:
- 1 -қадам:
- 2 -қадам: конфигурация тізілімі
- 3 -қадам: мәліметтерді тіркеу
- 4-қадам: біржолғы ADC режимі
- 5 -қадам:
- 6 -қадам: ADC дифференциалды режимі
Бейне: Arduino және TI ADS1110 16 биттік ADC: 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Бұл оқулықта 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 режимі
Бұл режимде нөлден 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 дифференциалды режимі
Бұл режимде әрқайсысы нөлден 5 В аралығында болатын екі кернеудің арасындағы айырмашылықты оқи аласыз. Мысал схемасы қарапайым (деректер парағынан).
Біз ADS1110 кіріс кернеуді қабылдай алмайтынын (және деректер парағында) ескеруіміз керек. Алдыңғы эскизді дәл осындай нәтижелер үшін қолдануға болады- нәтижесінде алынған кернеу Vin+мәнінен алынған Vin мәніне тең болады. Мысалы, егер сізде Вин+ -да 2 В және В-да 1 В болса- нәтижесінде кернеу 1 В болады (күшейту 1-ге қойылған).
Тағы да біз сізге бұл қызықты және пайдалы деп таптыңыз деп үміттенеміз. Бұл хабарламаны pmdway.com сізге жеткізді - бұл өндірушілер мен электроникаға әуесқойлар үшін, бүкіл әлем бойынша ақысыз жеткізу.
Ұсынылған:
Arduino Nano-MMA8452Q 3 осьтік 12 биттік/8 биттік цифрлық акселерометр оқулығы: 4 қадам
Arduino Nano-MMA8452Q 3 осьтік 12 биттік/8 биттік сандық акселерометр оқулығы: MMA8452Q-бұл ақылды, қуаты аз, үш осьті, сыйымдылығы бар, микромахинді акселерометр, рұқсаты 12 бит. Қолданбалы бағдарламаланатын икемді опциялар акселерометрге ендірілген функциялардың көмегімен қамтамасыз етілген, екі үзіліспен реттеледі
Raspberry Pi MMA8452Q 3 осьтік 12 биттік/8 биттік цифрлық акселерометр Python оқулығы: 4 қадам
Raspberry Pi MMA8452Q 3-осьтік 12-биттік/8-биттік цифрлық акселерометр Python оқулығы: MMA8452Q-ақылды, қуаты аз, үш осьті, сыйымдылығы, микромашиналы акселерометр, рұқсаты 12 бит. Қолданбалы бағдарламаланатын икемді опциялар акселерометрге ендірілген функциялардың көмегімен қамтамасыз етілген, екі үзіліспен реттеледі
Желдің жылдамдығын микро: биттік және жылдамдық схемалары арқылы өлшеңіз: 10 қадам
Желдің жылдамдығын микро: биттік және жылдам схемалармен өлшеңіз: әңгіме Қызым екеуміз ауа райы жобасының анемометрінде жұмыс істеп жүргендіктен, біз бағдарламалау арқылы көңілді кеңейтуді шештік. Анемометр дегеніміз не? Мүмкін сіз " анемометр " болып табылады. Бұл желді өлшейтін құрылғы
Raspberry Pi MMA8452Q 3 осьтік 12 биттік/8 биттік сандық акселерометр Java оқулығы: 4 қадам
Raspberry Pi MMA8452Q 3-осьтік 12-биттік/8-биттік сандық акселерометр Java оқулығы: MMA8452Q-ақылды, қуаты аз, үш осьті, сыйымдылығы бар, микромахинді акселерометр, ажыратымдылығы 12 бит. Қолданбалы бағдарламаланатын икемді опциялар акселерометрге ендірілген функциялардың көмегімен қамтамасыз етілген, екі үзіліспен реттеледі
DIY MusiLED, Windows және Linux бір рет басу арқылы синхронды музыкалық жарықдиодты шамдар (32 биттік және 64 биттік). Қайта құру оңай, пайдалану оңай, портқа оңай: 3 қадам
DIY MusiLED, Windows және Linux бір рет басу арқылы синхронды музыкалық жарықдиодты шамдар (32 биттік және 64 биттік). Қайта құру, пайдалану оңай, портқа оңай. Бұл жоба Arduino тақтасына 18 жарықдиодты (6 қызыл + 6 көк + 6 сары) қосуға және компьютердің дыбыстық картасының нақты уақыттағы сигналдарын талдауға және оларды таратуға көмектеседі. жарық диодтары оларды соққы әсеріне қарай жарықтандырады (тұзақ, биік қалпақ, соққы)