Talaan ng mga Nilalaman:

Arduino at ang TI ADS1110 16-bit ADC: 6 Hakbang
Arduino at ang TI ADS1110 16-bit ADC: 6 Hakbang

Video: Arduino at ang TI ADS1110 16-bit ADC: 6 Hakbang

Video: Arduino at ang TI ADS1110 16-bit ADC: 6 Hakbang
Video: Getting Started with ADC Functionality of ESP32 using MicroPython 2024, Nobyembre
Anonim
Arduino at ang TI ADS1110 16-bit ADC
Arduino at ang TI ADS1110 16-bit ADC

Sa tutorial na ito sinusuri namin ang paggamit ng Arduino upang gumana sa Texas Instruments ADS1110 - isang napakalaking maliit ngunit kapaki-pakinabang na 16-bit analogue-to-digital converter IC.

Maaari itong gumana sa pagitan ng 2.7 at 5.5 V kaya't mabuti rin para sa Arduino Dahil at iba pang mga board ng pag-unlad na may boltahe na mas mababa. Bago magpatuloy sa anumang karagdagang, mangyaring i-download ang data sheet (pdf) dahil ito ay magiging kapaki-pakinabang at tinutukoy sa panahon ng tutorial na ito. Binibigyan ka ng ADS1110 ng pagpipilian ng isang mas tumpak na ADC kaysa inaalok ng 10-bit ADC ng Arduino - at medyo madali itong gamitin. Gayunpaman magagamit lamang ito bilang isang hubad na bahagi sa SOT23-6.

Hakbang 1:

Larawan
Larawan

Ang magandang balita ay maaari kang mag-order ng ADS1110 na naka-mount sa isang napaka-maginhawang breakout board. Gumagamit ang ADS1110 ng I2C bus para sa komunikasyon. At dahil anim na mga pin lamang ang hindi mo maitatakda ang address ng bus - sa halip, maaari kang pumili mula sa anim na variant ng ADS1110 - bawat isa ay may kani-kanilang address (tingnan ang pahina ng dalawang sheet ng data).

Tulad ng nakikita mo sa larawan sa itaas, minarkahan ang "EDO" na tumutugma sa address ng bus na 1001000 o 0x48h. At sa mga halimbawang circuit ay nagamit namin ang 10kΩ pull-up resistors sa I2C bus.

Maaari mong gamitin ang ADS1110 bilang alinman sa isang solong natapos o kaugalian na ADC - Ngunit kailangan muna nating suriin ang rehistro ng pagsasaayos na ginagamit upang makontrol ang iba't ibang mga katangian, at ang rehistro ng data.

Hakbang 2: Rehistro ng Pag-configure

Lumiko sa pahina labing-isang ng sheet ng data. Ang rehistro ng pagsasaayos ay isang byte sa laki, at sa pag-reset ng ADS1110 sa isang power-cycle - kailangan mong i-reset ang rehistro kung ang iyong mga pangangailangan ay naiiba sa mga default. Ang sheet ng data ay binabaybay nang maayos … bits 0 at 1 matukoy ang setting ng makakuha para sa PGA (programmable gain amplifier).

Kung sinusukat mo lang ang mga voltages o eksperimento, iwanan ang mga ito bilang zero para sa isang pakinabang na 1V / V. Susunod, ang rate ng data para sa ADS1110 ay kinokontrol ng mga bit 2 at 3. Kung mayroon kang patuloy na pag-sample na naka-on, tinutukoy nito ang bilang ng mga sample bawat segundo na kinunan ng ADC.

Matapos ang ilang pag-eksperimento sa isang Arduino Uno nalaman namin na ang mga halagang ibinalik mula sa ADC ay medyo naka-off kapag gumagamit ng pinakamabilis na rate, kaya iwanan ito bilang 15 SPS maliban kung kinakailangan sa ibang paraan. Ang Bit 4 ay nagtatakda ng alinman sa tuluy-tuloy na pag-sample (0) o one-off sampling (1). Huwag pansinin ang mga piraso ng 5 at 6, subalit laging itinakda silang 0.

Panghuli bit 7 - kung nasa one-off na mode ng pag-sample ka, ang pagtatakda nito sa 1 ay humihiling ng isang sample - at ang pagbabasa nito ay sasabihin sa iyo kung ang naibalik na data ay bago (0) o luma (1). Maaari mong suriin na ang sinusukat na halaga ay isang bagong halaga - kung ang unang piraso ng byte ng pagsasaayos na darating pagkatapos ng data ay 0, bago ito. Kung nagbabalik ito ng 1 ang ADC conversion ay hindi pa tapos.

Hakbang 3: Pagrehistro sa Data

Tulad ng ADS1110 ay isang 16-bit ADC, ibinabalik nito ang data sa loob ng dalawang byte - at pagkatapos ay sinusundan ang halaga ng rehistro ng pagsasaayos. Kaya kung humiling ka ng tatlong byte ay babalik ang buong lote. Ang data ay nasa form na "magkakompleto", na kung saan ay isang paraan ng paggamit ng mga naka-sign na numero na may binary.

Ang pag-convert sa dalawang byte na iyon ay ginagawa ng ilang simpleng matematika. Kapag ang pag-sample sa 15 SPS, ang halagang ibinalik ng ADS1110 (hindi ang boltahe) ay nahuhulog sa pagitan ng -32768 at 32767. Ang mas mataas na byte ng halaga ay pinarami ng 256, pagkatapos ay idinagdag sa mas mababang byte - na pagkatapos ay pinarami ng 2.048 at sa wakas hinati ng 32768. Huwag panic, tulad ng ginagawa namin ito sa paparating na halimbawa ng sketch.

Hakbang 4: Single-tapos na ADC Mode

Single-tapos na ADC Mode
Single-tapos na ADC Mode

Sa mode na ito maaari mong basahin ang isang boltahe na nahuhulog sa pagitan ng zero at 2.048 V (na mangyayari ring maging built-in na boltahe ng sanggunian para sa ADS1110). Ang halimbawa ng circuit ay simple (mula sa sheet ng data).

Huwag kalimutan ang 10kΩ pull-up resistors sa I2C bus. Ang sumusunod na sketch ay gumagamit ng ADS1110 sa default mode, at ibabalik lamang ang boltahe na sinusukat:

// Halimbawa 53.1 - ADS1110 solong panig na voltmeter (0 ~ 2.048VDC) # isama ang "Wire.h" # tukuyin ang mga ad1110 0x48 float boltahe, data; byte highbyte, lowbyte, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); habang (Wire.available ()) // matiyak na ang lahat ng data ay dumating sa {highbyte = Wire.read (); // high byte * B11111111 lowbyte = Wire.read (); // low byte configRegister = Wire.read (); }

data = highbyte * 256;

data = data + lowbyte; Serial.print ("Data >>"); Serial.println (data, DEC); Serial.print ("Boltahe >>"); boltahe = data * 2.048; boltahe = boltahe / 32768.0; Serial.print (boltahe, DEC); Serial.println ("V"); pagkaantala (1000); }

Hakbang 5:

Larawan
Larawan

Kapag na-upload, ikonekta ang signal upang sukatin at buksan ang serial monitor - bibigyan ka ng isang bagay na katulad ng imaheng serial monitor na ipinapakita sa hakbang na ito.

Kung kailangan mong baguhin ang nakuha ng panloob na ma-programmable na gain amplifier ng ADC - kakailanganin mong magsulat ng isang bagong byte sa rehistro ng pagsasaayos gamit ang:

Wire.beginTransmission (ads1110); Wire.write (pagsasaayos ng byte); Wire.endTransmission ();

bago humiling ng data ng ADC. Ito ay magiging 0x8D, 0x8E o 0x8F para sa mga halaga ng makakuha ng 2, 4 at 8 ayon sa pagkakabanggit - at gamitin ang 0x8C upang i-reset ang ADS1110 pabalik sa default.

Hakbang 6: Pagkakaiba ng ADC Mode

Pagkakaiba ng ADC Mode
Pagkakaiba ng ADC Mode

Sa mode na ito maaari mong basahin ang pagkakaiba sa pagitan ng dalawang voltages na bawat pagkahulog sa pagitan ng zero at 5 V. Ang halimbawa ng circuit ay simple (mula sa sheet ng data).

Dapat nating tandaan dito (at sa sheet ng data) na ang ADS1110 ay hindi maaaring tanggapin ang mga negatibong boltahe sa alinman sa mga input. Maaari mong gamitin ang nakaraang sketch para sa parehong mga resulta - at ang magresultang boltahe ay ang halaga ng Vin na binawas mula sa Vin +. Halimbawa, kung mayroon kang 2 V sa Vin + at 1 V sa Vin- ang nagreresultang boltahe ay magiging 1 V (na ang pakinabang ay itinakda sa 1).

Muli kaming umaasa na natagpuan mo ito ng interes, at posibleng kapaki-pakinabang. Ang post na ito ay dinala sa iyo ng pmdway.com - lahat para sa mga tagagawa ng tagahanga at electronics, na may libreng paghahatid sa buong mundo.

Inirerekumendang: