Slik kan du effektivt koble til sensorer i IoT-endepunkter ved hjelp av 1-Wire-kommunikasjon

Av Bill Giovino

Bidrag fra DigiKeys nordamerikanske redaktører

Selv om det er vanlig at endepunktene til Internet of Things (IoT) og Industrial IoT (IIoT) har lokaliserte kontrollområder, må noen koble til enkle sensorer som er mer enn én meter unna plasseringen til vertens mikrokontroller. Tradisjonelt brukes serielle tilkoblinger av typen SPI eller I²C for enkel kommunikasjon med disse sensorene. Men etter hvert som kontrollalgoritmer blir mer kompliserte og flere sensorer må distribueres, må mikrokontrolleren bruke flere SPI- og I²C-linjer for å nå disse sensorene. Dette øker kompleksiteten i kablene, noe som øker konfigurasjons- og vedlikeholdskostnadene, spesielt når avstandene øker.

Denne artikkelen viser utviklere hvordan 1-Wire-protokollen fra Maxim Integrated benyttes for å koble kostnadseffektivt til IoT-sensorer ved å bruke bare én ledning pluss jord. Det vil diskutere fordelene med 1-Wire-protokollen, inkludert betydelig utvidelse av sensorområdet og tilveiebringelse av strøm og data over de samme ledningene. Den vil deretter introdusere en broenhet som konverterer 1-Wire-signaler til enten SPI eller I²C, samt et utviklingssett med programvare for å hjelpe designere i gang.

Utvidet bruk av IoT- og IIoT-sensorer

Utvidelsen av IoT- og IIoT-nettverk handler om å gjøre systemer og produksjonsprosesser mer virkningsfulle (effektive) og samtidig utvide funksjonaliteten. Dette innebærer innsamling av data ved hjelp av sensorer. Selv om et hjem kan ha én termostat i et rom som inneholder en temperatursensor, kan en automatisert bygning eller IIoT-nettverk plassere mange temperatur- og fuktighetssensorer i et rom, i hele bygningen eller hele anlegget. Ekstra sensorer kan f.eks. plasseres i varme-, ventilasjons- og klimaanleggskanaler (VVS/HVAC-kanaler) ved siden av trykksensorer. Sikkerhetssystemer kan også bruke forskjellige typer sensorer, og de kan også plasseres på flere steder.

Produksjons- og transportbåndsystemer ser også en økning i bruken av sensorer for prosessovervåking og datalogging for analyse av hvordan man for eksempel kan spare energi ved å gjøre systemene mer virkningsfulle, samtidig som sikkerheten også forbedres.

De vanligste sensorene for disse bruksområdene er miljø, inkludert temperatur, fuktighet og trykk; visuelle sensorer inkludert visuell lys og kapasitans nærhetssensorer; og posisjonssensorer inkludert mikroelektromekaniske systemakselerometre (MEMS), MEMS-gyroskop og vibrasjonssensorer. Miniatyrisering og fremskritt innen MEMS-teknologier har resultert i sensorer i kapslinger som er mindre enn en tommelfingernegl og bare trekker noen få hundre milliampere (mA). De fleste av disse sensorene er lett tilgjengelige via et SPI- eller I²C-kommunikasjonstilkobling, begge finnes på nesten hvilken som helst mikrokontroller. Ved grensesnitt mot disse enkle sensorene, kan det være upraktisk å bygge et helt IoT- eller IIoT-endepunkt eller underordnet node for å bare prøve temperaturen, så det er ofte enklere og raskere å bare kjøre SPI- eller I²C-kommunikasjonslinjer direkte til dem.

I noen tilfeller brukes fortsatt analoge sensorer, for eksempel termoelementer med høy temperatur og noen trykksensorer. I disse tilfellene har mikrokontrollerens tilkobling mot en SPI eller I²C A-D-omformer (ADC) på sensorlokasjonen som tar prøver av den analoge sensoren lokalt. Dette unngår spenningsfall på tvers av analoge sensorlinjer og forbedrer dermed nøyaktigheten.

Grensesnitt mot eksterne SPI- og I² C-sensorer

En mikrokontroller kommuniserer med disse sensorene ved å utvide rekkevidden til SPI- og I² C-datalinjene. I²C er imidlertid begrenset til en rekkevidde på én meter eller mindre, og SPI har lignende begrensninger. I tillegg kreves fire pinner for full-dupleks-SPI, samt en individuell seleksjon for hver enhet av periferiutstyr. Som et resultat, å nå fire SPI-periferiutstyr på en buss krever syv pinner, pluss strøm og jord, totalt ni pinner. Halvt dupleks I²C krever to pinner, pluss strøm og jord, til periferiutstyret, for totalt fire linjer. Samtidig øker de mange høyhastighetssignalene elektromagnetisk interferens (EMI), som kan generere krysstale, noe som resulterer i redusert signalintegritet og senket systempålitelighet.

Det som trengs er en løsning som minimerer strøm- og datakabling og forenkler driften, samtidig som kompatibiliteten med eksisterende I²C- og SPI-sensorer opprettholdes.

For å løse problemet med å koble til eksterne sensorer over lengre avstander samtidig som antallet ledninger reduseres, utviklet Maxim Integrated en 1-Wire-protokoll, som kobles til de fleste SPI- eller I²C-sensorer ved hjelp av én ledning, pluss en jording. Protokollen reduserer seks-trådstallet fra SPI og de fire som brukes av I²C, til bare to ledninger som fører både data og strøm opp til 100 meter (m).

Bruk av 1-Wire

Når du bruker 1-Wire har den eksterne sensoren en 1-Wire-kommunikasjonsbro som konverterer 1-Wire-protokollen til kompatible SPI- eller I²C-signaler som bruker tilkobling til sensoren. Både 1-Wire-broen og sensoren er parasittisk drevet av bare 1-Wire-signalet pluss en jordlinje. Dette gjør at 1-Wire-signaler kan dirigeres i små områder, noe som sparer kostnader ved å bruke mindre kabler.

Mens både SPI og I²C bruker et dedikert klokkesignal, integrerer 1-Wire klokken med datasignalet. SPI adresserer et bestemt periferiutstyr ved hjelp av et separat utvalgssignal for hver periferi, mens I²C bruker en 7-bits bussadresse overført langs datalinjen; til sammenligning bruker 1-Wire en 56-biters adresse som er hardt koblet til hver enkelt kommunikasjonsbro. Dette bredere adresseområdet øker ikke bare antall unike periferiutstyr på en buss, men øker også sikkerheten ved å gjøre det vanskeligere for en angriper å gjette adressen til en periferiutstyr på 1-Wire-bussen.

Ordstørrelsen på en 1-Wire-periferibuss er 8 bits. En mikrokontroller 1-Wire-bussvert kan bit-bange (programvare som erstatning for dedikert maskinvare for å generere overførte signaler) 1-Wire-protokollen, men den støttes også av en enkel UART-driver. Dette gjør at selv en 8-bits mikrokontroller kan være en 1-bits bussvert. En 1-bits buss kan inneholde SPI- eller I²C-periferiutstyr, men ikke begge. Denne konsistensen forhindrer konflikter og kollisjoner på bussen og forenkler programmeringen med protokollen.

Ekte 1-Wire-løsninger

For designere som ønsker tilkobling til en SPI- eller I²C-periferiutstyr på tvers av en entråds1-Wire-buss, tilbyr Maxim Integrated DS28E18Q +T 1-tråds 1-Wire-til-I ²C/SPI-bro med kommandosekvenser (figur 1).

Skjema over Maxim Integrated DS28E18Q+T 1-Wire-to-I²C/SPI-bro med kommandosekvenser (klikk for å forstørre)Figur 1:DS28E18Q+T 1-Wire-til-I ²C/SPI-broen med kommandosekvensering har en tilkobling til en 1-Wire-buss med I/O-pinne (inngang/utgang) og GND-pinne. (Bildekilde: Maxim Integrated)

Med henvisning til figur 1, ekstraheres parasittstrøm fra bussen når I/O er høy og gjøres tilgjengelig på SENS_VDD-stiften for å drive periferiutstyret. Broen buffrer og oversetter 1-Wire-kommandoer til de aktuelle I²C- eller SPI-kommandoene.

I/O-pinnen og GND kobles til 1-Wire-bussen og sendes til front-end med sin tilstandsmaskin. Hver enhet identifiseres med en 56-bits rom-ID, prefikset med en 8-bits, 1-Wire-familiekode som betegner revisjonen av DS28E18Q +T. Dette tillater unik identifikasjon av en bestemt DS28E18Q+T av mikrokontrollerens firmware (fastvare), slik at den kan være fleksibel nok til å håndtere eventuelle endringer i enhetsfamilien. Det er et 48-bits unikt serienummer for enheten med en 8-bits syklisk CRC-kode (cyclic redundancy check code).

Fronten sender de oversatte dataene til kommandosekvenseren ved hjelp av en 144 byte kommandobuffer som inkluderer 128 byte data fra I/O-bussen og 16 byte for internt bruk. Kommandosekvenseren behandler kommandoene og kan lagre opptil 512 byte I²C- eller SPI-kommandoer i bufferen som senere skal sendes til periferiutstyret, i stedet for at 1-Wire-buss-prosesskommando skal behandle én om gangen.

Denne bufferen på 512 byte gjør det også mulig for DS28E18Q +T å koordinere sin egen interne strømadferd, slik at timingen for kommunikasjon med periferiutstyret gjør det mulig at parasittkraften blir opprettholdt. Kommandosekvenseren opprettholder denne timingen når den sender instruksjoner til I²C/SPI Master- og GPIO-kontrolleren som behandler dataene slik at de er i samsvar med I²C- og SPI-standardene.

En ekstern 470 nF (nanofarad) kondensator er koblet tilCEXT-pinnen, som fungerer som en strømreserve for DS28E18Q+T under 1-Wire-bussdrift. Parasittstrøm er tilgjengelig for den tilkoblede periferiutstyret på SENS_VDD-pinnen. For SPI-drift gir de fire pinnene SS#, MISO, MOSI og SCLK kommunikasjon med full-dupleks til det tilkoblede periferiutstyret. I²C-driften bruker bare to pinner med alternative funksjonspinner, SDA og SCL. Stift SS# og MISO for SPI-drift er ubrukt for I²C-drift og kan derfor brukes som generell I/O (GPIO) med de alternative funksjonene GPIOA og GPIOB. Dette gir større fleksibilitet som kan brukes til å tenne diagnostiske lysdioder på sensorlokasjonen eller til å administrere konfigurasjonspinner på en sensor eller ADC for å endre oppførselen til enheten.

Ved hjelp av Maxim Integrated DS28E18Q +T kan én enkelt UART på en mikrokontroller kommunisere via bare to ledninger med mange sensorer på den samme 1-Wire-bussen, pluss jord. Hver sensor er koblet til en DS28E18Q +T som kan være opptil 100 meter unna. Dette kan være spesielt nyttig for ventilasjonssystemer (VVS-/HVAC-systemer) der bare to ledninger kan ledes gjennom en luftkanal for å overvåke temperatur og fuktighet langs lengden på hver ventilasjon. Dette forbedrer systemets effektivitet ved å overvåke for varme eller kalde områder som kan være forårsaket av hindringer.

1-Wire-utvikling

For å komme i gang med å utvikle 1-Wire-protokollen, tilbyr Maxim Integrated DS28E18EVKIT#-evalueringssystemet. Dette består av et maskinvareutviklingskort (figur 2) og programvare.

Bilde av Maxim DS28E18EVKIT#-evalueringskortFigur 2: Maxim DS28E18EVKIT# evalueringskort lar en utvikler enkelt koble et periferiutstyr med SPI eller I²C til 1-Wire-bussen. Den medfølgende programvaren kan brukes til å programmere og overvåke bussens og periferiutstyrets oppførsel, samt hjelpe til med å generere driverne til mikrokontrollerenheten. (Bildekilde: Maxim Integrated)

Evalueringskortet lar en utvikler programmere og overvåke DS28E18Q +T. For utviklingsformål leveres kortet med en USB-adapter som tilkobling fra kortet til en USB-port på en Windows-datamaskin. Utvikleren må laste ned og kjøre programvaren for DS28E18EVKIT#-evalueringssett for å hjelpe til i utviklingen. Som vist i figur 3, tillater evalueringsprogramvaren programmering og overvåking av DS28E18Q +T og det tilknyttede periferiutstyret.

Bilde av Maxim Integrated  DS28E18EVKIT#-evalueringsprogramvare (klikk for å forstørre)Figur 3: DS28E18EVKIT#-evalueringsprogramvaren lar en utvikler konfigurere den innebygde DS28E18Q +T ved hjelp av USB-adapteren og overvåke atferden. 512-byte kommandosekvenseringsminnet kan fylles med data og deretter sendes til periferiutstyret for å utføre sensoroperasjonen. (Bildekilde: Maxim Integrated)

Programvaren kan sende kommandoer til DS28E18Q+ T-evalueringskortet og konfigurere det for mål-SPI- eller I²C-periferiutstyret. Den kan velge adresseområdet til periferiutstyret og fylle 512-byte minnet for kommandosekvensering med perifer-kommandoer som skal utføres. Programvaren kan også bidra til å konfigurere UART-driverne for mål-mikrokontrolleren, noe som sparer anstrengelsen med å lære alle detaljene i 1-Wire-kommunikasjonsprotokollen. En utvikler kan også bruke evalueringstavlen i sitt eget program, noe som sparer tid og krefter på å bygge og konfigurere en sensornode.

Konklusjon

Etter hvert som IoT- og IIoT-systemer legger til flere sensorer, blir ledningene til sensorene mer komplekse og kostbare, spesielt når avstandene øker. Å få sendt strøm til sensorene er også en annen bekymring som kan komplisere å sette opp et sensornettverk. Som vist kan 1-Wire-protokollen og tilhørende maskinvare fra Maxim Integrated gjøre tilkoblingen til sensornettverket enklere og mer virkningsfull, ved å levere data og strøm via bare én ledning, pluss jord.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Om skribenten

Image of Bill Giovino

Bill Giovino

Bill Giovino is an Electronics Engineer with a BSEE from Syracuse University, and is one of the few people to successfully jump from design engineer, to field applications engineer, to technology marketing.

For over 25 years Bill has enjoyed promoting new technologies in front of technical and non-technical audiences alike for many companies including STMicroelectronics, Intel, and Maxim Integrated. While at STMicroelectronics, Bill helped spearhead the company’s early successes in the microcontroller industry. At Infineon Bill orchestrated the company’s first microcontroller design wins in U.S. automotive. As a marketing consultant for his company CPU Technologies, Bill has helped many companies turn underperforming products into success stories.

Bill was an early adopter of the Internet of Things, including putting the first full TCP/IP stack on a microcontroller. Bill is devoted to the message of “Sales Through Education” and the increasing importance of clear, well written communications in promoting products online. He is moderator of the popular LinkedIn Semiconductor Sales & Marketing Group and speaks B2E fluently.

Om denne utgiveren

DigiKeys nordamerikanske redaktører