Hvis der er uklarheder i denne artikel, bedes du se den originale engelske version.

Sådan oprettes effektiv forbindelse til sensorer i IoT-endpoints ved hjælp af 1-wire-kommunikation

Af Bill Giovino

Bidraget af DigiKeys nordamerikanske redaktører

Mens det er almindeligt for IoT- og Industrial IoT-endpoints (Internet of Things) at have lokaliserede kontrolområder, skal nogle af dem forbinde til enkle sensorer, der er mere end en meter væk fra host-mikrocontrollerens placering. Traditionelt anvendes SPI- eller I²C-serielle grænseflader til at kommunikere med disse sensorer. Men efterhånden som kontrolalgoritmerne bliver mere komplicerede, og der skal anvendes flere sensorer, skal mikrocontrolleren bruge flere SPI- og I²C-linjer for at nå disse sensorer. Dette øger kompleksiteten af ledningerne, hvilket øger konfigurations- og og omkostninger til vedligeholdelses, især når afstandene øges.

Denne artikel viser udviklere, hvordan de kan bruge 1-Wire-protokollen fra Maxim Integrated til omkostningseffektivt at oprette forbindelse til IoT-sensorer ved hjælp af kun én ledning plus jord. Der vil blive talt om fordelene ved 1-Wire-protokollen, herunder en betydelig udvidelse af sensorernes rækkevidde og levering af strøm og data via de samme ledninger. Derefter introduceres en broenhed, der konverterer 1-Wire-signaler til enten SPI eller I²C, og et udviklingssæt med software, der hjælper designere i gang.

Øget brug af IoT- og IIoT-sensorer

Udvidelsen af IoT- og IIoT-netværk handler om at gøre systemer og fremstillingsprocesser mere effektive og samtidig udvide funktionaliteten. Dette indebærer indsamling af data ved hjælp af sensorer. Mens et hjem måske har én termostat i et rum med en temperatursensor, kan en automatiseret bygning eller et IIoT-netværk placere mange temperatur- og fugtighedssensorer i et rum og i hele bygningen eller anlægget. Der kan f.eks. placeres yderligere sensorer i varme-, ventilations- og klimakanaler (HVAC) sammen med tryksensorer. Sikkerhedssystemer kan også anvende forskellige typer sensorer, og de kan også være placeret flere steder.

I produktions- og transportbåndssystemer ses også en stigning i brugen af sensorer til procesovervågning og datalogning med henblik på analyse af, hvordan man f.eks. kan spare energi ved at gøre systemerne mere effektive og samtidig forbedre sikkerheden.

De mest almindelige sensorer til disse applikationer er miljøsensorer, herunder temperatur, fugtighed og tryk, visuelle sensorer, herunder visuelle lys- og kapacitiv nærhedssensorer, og positionssensorer, herunder MEMS-accelerometre (mikroelektromekaniske systemer), MEMS-gyroskoper og vibrationssensorer. Miniaturisering og fremskridt inden for MEMS-teknologier har resulteret i sensorer i pakninger, der er mindre end en tommelfingernegl, og som kun bruger nogle få hundrede milliampere (mA). De fleste af disse sensorer er let tilgængelige via en SPI- eller I²C-kommunikationsgrænseflade, som begge findes på næsten alle mikrocontrollere. Ved grænseflade til disse enkle sensorer kan det være upraktisk at bygge et helt IoT- eller IIoT-endpoints eller en underliggende node til blot at prøve temperaturen, så det er ofte enklere og hurtigere blot at køre SPI- eller I²C-kommunikationslinjer direkte til dem.

I nogle tilfælde anvendes der stadig analoge sensorer, f.eks. termokobler til høje temperaturer og visse tryksensorer. I disse tilfælde har mikrocontrolleren grænseflade med en SPI- eller I²C-analog-til-digital-konverter (ADC) på sensorplaceringen, som lokalt prøver den analoge sensor. Herved undgås spændingsfald på tværs af analoge sensorledninger, hvilket forbedrer nøjagtigheden.

Grænseflader til eksterne SPI- og I²C-sensorer

En mikrocontroller kommunikerer med disse sensorer ved at udvide rækkevidden af SPI- og I²C-datalinjerne. I²C er dog begrænset til en rækkevidde på en meter eller mindre, og SPI har lignende begrænsninger. Desuden kræver fuld-duplex SPI fire ben, herunder et individuelt periferisk valg for hver ben. Som følge heraf kræver fire SPI-periferier på en bus syv ben plus strøm og jord, hvilket giver i alt ni ben. Halv-duplex I²C kræver to ben plus strøm og jord til periferien, i alt fire linjer. Samtidig øger de mange højhastighedssignaler den elektromagnetiske interferens (EMI), som kan generere overspænding, hvilket resulterer i nedsat signalintegritet og lavere pålidelighed af systemet.

Der er behov for en løsning, der minimerer strøm- og datakobling og forenkler driften, samtidig med at kompatibiliteten med eksisterende I²C- og SPI-sensorer opretholdes.

For at løse problemet med at forbinde til fjernsensorer over længere afstande og samtidig reducere antallet af ledninger har Maxim Integrated udviklet en 1-Wire-protokol, der forbinder til de fleste SPI- eller I²C-sensorer ved hjælp af én ledning plus en jordledning. Protokollen reducerer antallet af seks ledninger fra SPI og de fire, der bruges af I²C, til kun to ledninger, der transporterer både data og strøm op til 100 meter (m).

Anvendelse af 1-wire

Når du bruger 1-Wire, har fjernsensoren en 1-Wire kommunikationsbro, der konverterer 1-Wire-protokollen til kompatible SPI- eller I²C-signaler, der fungerer som grænseflade til sensoren. Både 1-Wire-broen og sensoren får parasitært strøm fra kun 1-Wire-signalet plus en jordledning. Dette gør det muligt at føre 1-Wire-signaler i små områder, hvilket sparer omkostninger ved at bruge færre ledninger.

Mens både SPI og I²C bruger et dedikeret clock-signal, integrerer 1-Wire uret med datasignalet. SPI adresserer en bestemt periferi ved hjælp af et separat valg-signal for hver periferi, mens I²C bruger en 7-bit busadresse, der transmitteres langs datalinjen; til sammenligning bruger 1-Wire en 56-bit adresse, der er fast forbundet i hver enkelt kommunikationsbro. Dette bredere adresseringsområde øger ikke blot antallet af unikke periferier på en bus, men øger også sikkerheden ved at gøre det sværere for en angriber at gætte adressen på en periferi på 1-Wire-bussen.

Ordstørrelsen på en 1-Wire periferibus er 8 bit. En mikrocontroller 1-Wire-bushost kan bit-bangge 1-Wire-protokollen, men den understøttes også af en simpel UART-driver. Dette gør det muligt for selv en 8-bit mikrocontroller at være en 1-bit bushost. En 1-bit bus kan indeholde SPI- eller I²C-periferiudstyr, men ikke begge dele. Denne konsistens forhindrer konflikter og kollisioner på bussen og forenkler programmeringen med protokollen.

1-Wire-løsninger i den virkelige verden

For designere, der ønsker at skabe interface til en SPI- eller I²C-periferi over en 1-Wire-bus, tilbyder Maxim Integrated DS28E18Q+T 1-Wire-to-I²C/SPI-broen med kommandosekvenser (Figur 1).

Diagram over Maxim Integrated DS28E18Q+T 1-Wire-to-I²C/SPI-bro med kommandosekvenser (klik for at forstørre)Figur 1: DS28E18Q+T 1-Wire-to-I²C/SPI-broen med kommandosekvenser har grænseflader til en 1-Wire-bus IO- og GND-ben. (Billedkilde: Maxim Integrated)

I henhold til figur 1 fjernes parasitstrøm fra bussen, når IO er høj og stilles til rådighed på SENS_VDD-ben til at forsyne periferien med strøm. Broen buffer og oversætter 1-Wire-kommandoer til de relevante I²C- eller SPI-kommandoer.

IO-benet og GND forbindes til 1-Wire-bussen og sendes til front-end'en med dens tilstandsmaskine. Hver enhed identificeres ved hjælp af et 56-bit ROM-ID, som indledes med en 8-bit 1-Wire-familiekode, der angiver revisionen af DS28E18Q+T. Dette giver mulighed for unik identifikation af en specifik DS28E18Q+T i mikrocontrollerens firmware, hvilket gør det muligt at være fleksibel nok til at imødegå eventuelle ændringer i enhedsfamilien. Der er et 48-bit unikt serienummer for enheden med en 8-bit CRC-kode (cyclic redundancy check).

Front-end'en sender de oversatte data til kommandosekvensen ved hjælp af en 144-byte kommandobuffer, som omfatter 128 byte data fra IO-bussen og 16 byte til intern brug. Kommandosekvenseren behandler kommandoerne og kan gemme op til 512 bytes I²C- eller SPI-kommandoer i sin buffer, som senere sendes til periferien, i stedet for at 1-Wire-bussen behandler kommandoerne en ad gangen.

Denne 512-byte buffer gør det også muligt for DS28E18Q+T at koordinere sin egen interne strømadfærd, så timingen for kommunikation med periferien gør det muligt at bevare parasitstrømmen. Kommandosekvensen opretholder denne timing, når den sender instruktioner til I²C/SPI-masteren og GPIO-controlleren, som behandler dataene, så de er i overensstemmelse med I²C- og SPI-standarderne.

En ekstern kondensator på 470 nanofarad (nF) er tilsluttet CEXT-ben, som fungerer som en strømreserve for DS28E18Q+T under 1-Wire-busdrift. Parasitstrøm er tilgængelig for det tilsluttede periferiudstyr på SENS_VDD-benet. Ved SPI-drift giver de fire ben SS#, MISO, MOSI og SCLK fuld-duplex-kommunikation til det tilsluttede periferiudstyr. I²C-drift bruger kun to bed med alternative funktionsstifter, SDA og SCL. Ben SS# og MISO til SPI-drift er ubrugte til I²C-drift og kan derfor bruges som general-purpose I/O (GPIO) med alternativ funktion GPIOA og GPIOB. Dette giver større fleksibilitet, som kan bruges til at tænde diagnostiske lysdioder på sensorplaceringen eller til at administrere konfigurations-ben på en sensor eller ADC for at ændre enhedens adfærd.

Ved hjælp af Maxim Integrated DS28E18Q+T kan en enkelt UART på en mikrocontroller kommunikere ved hjælp af kun to ledninger med mange sensorer på den samme 1-Wire plus jordbus; hver sensor er forbundet til en DS28E18Q+T, der kan være op til 100 m væk. Dette kan især være nyttigt for HVAC-systemer, hvor der kun kan føres to ledninger gennem en luftkanal for at overvåge temperatur og fugtighed langs dens længde ved hver udluftning. Dette forbedrer systemets effektivitet ved at overvåge varme eller kolde punkter, der kan skyldes forhindringer.

Udvikling af 1-wire

For at komme i gang med at udvikle med 1-Wire-protokollen tilbyder Maxim Integrated evalueringssystemet DS28E18EVKIT#. Den består af et hardwareudviklingskort (figur 2) og software.

Billede af Maxim DS28E18EVKIT# evalueringskortFigur 2: Maxim DS28E18EVKIT#-evalueringskortet giver udvikleren mulighed for nemt at tilslutte et SPI- eller I²C-periferiudstyr til 1-Wire-bussen. Den medfølgende software kan bruges til at programmere og overvåge bus- og periferiudstyrets adfærd samt til at generere mikrocontroller-enhedsdrivere. (Billedkilde: Maxim Integrated)

Evalueringskortet giver udvikleren mulighed for at programmere og overvåge DS28E18Q+T. Til udviklingsformål leveres kortet med en USB-adapter, der forbinder kortet med en USB-port på en Windows-computer. Udvikleren skal downloade og køre DS28E18EVKIT#-evalueringssoftwaren for at hjælpe med udviklingen. Som det fremgår af figur 3, giver evalueringssoftwaren mulighed for programmering og overvågning af DS28E18Q+T og den tilknyttede periferiudstyr.

Billede af Maxim Integrated DS28E18EVKIT# evalueringssoftware (klik for at forstørre)Figur 3: DS28E18EVKIT#-evalueringssoftwaren giver udvikleren mulighed for at konfigurere den indbyggede DS28E18Q+T ved hjælp af USB-adapteren og overvåge dens adfærd. Den 512-byte store kommandosekvenshukommelse kan fyldes med data og derefter sendes til periferien for at udføre sensoroperationen. (Billedkilde: Maxim Integrated)

Softwaren kan sende kommandoer til DS28E18Q+T-evalueringskortet og konfigurere det til målets SPI- eller I²C-periferiudstyr. Den kan vælge periferiens adresseområde og fylde den 512-byte store kommandosekvenshukommelse med periferikommandoer, der skal udføres. Softwaren kan også hjælpe med at konfigurere UART-driverne til målmikrocontrolleren, så du slipper for at skulle lære alle detaljerne i 1-Wire-kommunikationsprotokollen. En udvikler kan også bruge evalueringskortet i sin egen applikation, hvilket sparer tid og kræfter på at bygge og konfigurere en sensorknude.

Konklusion

Efterhånden som IoT- og IIoT-systemer tilføjer flere sensorer, bliver ledningerne til sensorerne mere komplekse og dyrere, især når afstandene øges. At sende strøm til sensorerne er også et andet problem, som kan komplicere oprettelsen af et sensor-netværk. Som vist kan 1-Wire-protokollen og den tilhørende hardware fra Maxim Integrated gøre grænsefladen til sensornetværket nemmere og mere effektiv ved at levere data og strøm via kun én ledning plus 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 denne forfatter

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 udgiveren

DigiKeys nordamerikanske redaktører