Conectarea la senzori în punctele finale IoT utilizând comunicația 1-Wire

by donpedro

Deși este obișnuit ca punctele finale ale Internetului Lucrurilor (IoT) și ale Internetului Industrial al Lucrurilor (IIoT) să aibă zone de control localizate, unele trebuie să se conecteze la senzori simpli care se află la mai mult de un metru distanță față de locația microcontrolerului gazdă. În mod tradițional, interfețele seriale SPI sau I²C sunt utilizate pentru a comunica ușor cu acești senzori. Totuși, pe măsură ce algoritmii de control devin mai complicați și trebuie să fie implementați mai mulți senzori, microcontrolerul trebuie să utilizeze mai multe linii SPI și I²C pentru a ajunge la astfel de senzori. Acest lucru sporește complexitatea cablajului, ceea ce crește costurile de configurare și întreținere, mai ales atunci când distanțele se măresc.

Acest articol va explica dezvoltatorilor cum să utilizeze protocolul 1-Wire de la Maxim Integrated (acum parte a Analog
Devices) pentru a se conecta în mod rentabil la senzorii IoT folosind un singur fir plus masa. Se vor discuta avantajele protocolului 1-Wire, inclusiv extinderea semnificativă a razei de acțiune a senzorilor și furnizarea de alimentare și date prin aceleași fire. Apoi, va prezenta un dispozitiv punte (bridge) care convertește semnalele 1-Wire în SPI sau I²C și un kit de dezvoltare cu software pentru a ajuta proiectanții să înceapă lucrul.

Creșterea gradului de utilizare a senzorilor IoT și IIoT

Extinderea rețelelor IoT și IIoT are ca scop eficientizarea sistemelor și a proceselor de producție, extinzând în același timp funcționalitatea. Acest lucru presupune colectarea de date cu ajutorul senzorilor. În timp ce o locuință poate avea un termostat într-o cameră care conține un senzor de temperatură, o clădire automatizată sau o rețea IIoT poate amplasa mai mulți senzori de temperatură și umiditate într-o cameră și în întreaga clădire sau instalație. De exemplu, pot fi plasați senzori suplimentari în conductele de încălzire, ventilație și aer condiționat (HVAC), alături de senzori de presiune. Sistemele de securitate pot utiliza, de asemenea, diferite tipuri de senzori, iar aceștia pot fi plasați în mai multe zone.

Industria prelucrătoare și sistemele de benzi transportoare înregistrează, de asemenea, o creștere a utilizării senzorilor pentru monitorizarea proceselor și înregistrarea datelor în vederea analizării modului în care se poate, de exemplu, economisi energie prin eficientizarea sistemelor, îmbunătățind în același timp siguranța.

Cei mai răspândiți senzori pentru aceste aplicații sunt senzorii de mediu, inclusiv cei de temperatură, umiditate și de presiune; senzorii de imagine, inclusiv senzorii de lumină și senzorii capacitivi de proximitate; și senzorii de poziție, inclusiv accelerometrele MEMS, giroscoapele MEMS și senzorii de vibrații. Miniaturizarea și progresele în tehnologiile MEMS au dus la apariția unor senzori în capsule mai mici decât unghia de la degetul mare, care consumă doar câteva sute de miliamperi (mA). Majoritatea acestor senzori sunt ușor de accesat prin intermediul unei interfețe de comunicație SPI sau I²C, ambele prezente pe aproape orice microcontroler. Atunci când se realizează o interfață cu acești senzori simpli, nu ar fi deloc fezabil să se construiască un întreg punct final IoT sau IIoT sau un nod secundar doar pentru a eșantiona temperatura, astfel încât este adesea mai simplu și mai rapid să se utilizeze doar liniile de comunicație SPI sau I²C direct către aceștia.

În unele cazuri, încă se folosesc senzori analogici, cum ar fi termocuplele de temperatură înaltă și unii senzori de presiune. În aceste situații, microcontrolerul se interfațează cu un convertor analog-digital (ADC) SPI sau I²C la locația senzorului, care eșantionează local senzorul analogic. Acest lucru evită căderile de tensiune pe liniile senzorului analogic și îmbunătățește astfel precizia.

Interfațarea cu senzori SPI și I²C aflați la distanță

Un microcontroler comunică cu acești senzori prin prelungirea razei de acțiune a liniilor de date SPI și I²C. Totuși, I²C este limitat la o rază de acțiune de un metru sau mai puțin, iar SPI are limitări similare. În plus, SPI full-duplex necesită patru pini, inclusiv un selector individual pentru fiecare periferic. În consecință, accesarea a patru periferice SPI pe un bus necesită șapte pini, plus alimentarea și masa, adică un total de nouă pini. I²C half-duplex necesită doi pini, plus alimentare și masă, pentru periferic, totalizând patru linii. În același timp, numeroasele semnale de mare viteză sporesc interferențele electromagnetice (EMI), care pot genera diafonie, ceea ce duce la reducerea integrității semnalului și la scăderea fiabilității sistemului.

Este nevoie de o soluție care să reducă la minimum conexiunile de alimentare și de date și să simplifice operarea, menținând în același timp compatibilitatea cu senzorii I²C și SPI existenți.

Pentru a rezolva problema conectării senzorilor izolați aflați la distanțe mai mari, reducând în același timp numărul de fire, Maxim Integrated a dezvoltat protocolul 1-Wire care conectează majoritatea senzorilor SPI sau I²C folosind un singur fir, plus un fir de masă. Protocolul reduce numărul de șase fire utilizate pentru SPI sau patru pentru I²C, la doar două fire care transportă atât datele cât și alimentarea la o distanță de până la 100 de metri.

Aplicarea 1-Wire

Figura 1: Puntea 1-Wire-to-I²C/SPI DS28E18Q+T cu secvențiator de comenzi se interfațează cu un bus 1-Wire IO și pinii GND. (© Maxim Integrated – parte a Analog Devices)

Atunci când se utilizează 1-Wire, senzorul aflat la distanță dispune de o punte de comunicație 1-Wire capabilă să convertească protocolul 1-Wire în semnale compatibile cu SPI sau I²C care se interfațează cu senzorul. Atât puntea 1-Wire, cât și senzorul folosesc modul de alimentare parazit, prin semnalul 1-Wire plus o linie de masă. Acest lucru permite ca semnalele 1-Wire să fie dirijate în zone mici, economisind costuri datorită utilizării unui număr mai mic de cabluri.

În timp ce SPI și I²C utilizează un semnal de ceas dedicat, 1-Wire încorporează ceasul în semnalul de date. SPI adresează un anumit periferic utilizând un semnal de selectare separat pentru fiecare periferic, iar I²C utilizează o adresă de bus de 7-biți transmisă de-a lungul liniei de date; în comparație, 1-Wire utilizează o adresă de 56-biți transmisă printr-un cablu fizic în fiecare punte de comunicație individuală. Această gamă mai largă de adresare nu numai că mărește numărul de periferice unice pe o magistrală, dar sporește și securitatea, îngreunând sarcina unui atacator de a ‘ghici’ adresa unui periferic de pe magistrala 1-Wire.

Dimensiunea cuvântului pe un bus periferic 1-Wire este de 8 biți. Un microcontroler gazdă conectat la magistrala 1-Wire poate să transmită protocolul 1-Wire (printr-o metodă de tip “bit-bang”), acțiune ce poate fi suportată de un simplu driver UART. Acest lucru permite chiar și unui microcontroler pe 8-biți să fie o gazdă de magistrală de 1-bit. O asemenea magistrală poate conține periferice SPI sau I²C, dar nu ambele. Această logică previne conflictele și coliziunile de pe magistrală și simplifică programarea cu acest protocol.

Soluții 1-Wire în lumea reală

Pentru proiectanții care doresc să conecteze un periferic SPI sau I²C pe o magistrală 1-Wire, Maxim Integrated oferă puntea 1-Wire-to-I²C/SPI DS28E18Q+T cu secvențiator de comenzi (Figura 1).

Referindu-ne la figura 1, alimentarea parazită este extrasă din magistrală atunci când IO este la nivel ridicat și este pusă la dispoziție pe pinul SENS_VDD pentru a alimenta perifericul. Puntea stochează și convertește comenzile 1-Wire în comenzi I²C sau SPI corespunzătoare.

Pinul IO împreună cu GND se conectează la magistrala 1-Wire, datele aferente fiind transferate către front-end-ul cu mașina de stare corespunzătoare. Fiecare dispozitiv este identificat printr-un ID ROM de 56-biți, prefixat cu un cod de familie 1-Wire de 8-biți, care desemnează versiunea modelului DS28E18Q+T. Acest lucru permite identificarea unică a unui anumit DS28E18Q+T de către firmware-ul microcontrolerului, permițându-i acestuia să fie suficient de flexibil pentru a răspunde la orice modificări în cadrul familiei de dispozitive. Există un număr de serie unic pentru dispozitiv, de 48-biți, cu un cod de verificare redundanță ciclică (CRC) de 8-biți.

Figura 2: Placa de evaluare Maxim DS28E18EVKIT# permite unui dezvoltator să conecteze cu ușurință un periferic SPI sau I²C la bus-ul 1-Wire. Software-ul inclus poate fi utilizat pentru a programa și monitoriza comportamentul magistralei și al perifericului, precum și pentru a ajuta la generarea driverelor de dispozitiv ale microcontrolerului. (© Maxim Integrated – parte a Analog Devices)

Front-end-ul trimite datele ‘traduse’ către secvențiatorul de comenzi folosind un buffer de comandă de 144-octeți care include 128 de octeți de date de la magistrala IO și 16 octeți pentru uz intern. Secvențiatorul de comenzi procesează comenzile și poate stoca până la 512 octeți de comenzi I²C sau SPI în memoria sa tampon pentru a fi trimise ulterior perifericului, în loc ca magistrala 1-Wire să proceseze comenzile una câte una.

Această memorie tampon de 512 octeți permite, de asemenea, DS28E18Q+T să își coordoneze propriul comportament de alimentare internă, astfel încât sincronizarea pentru comunicația cu perifericul să permită menținerea alimentării parazite. Secvențiatorul de comenzi menține această sincronizare atunci când trimite instrucțiuni către masterul I²C/SPI și controlerul GPIO care procesează datele astfel încât să fie conforme cu standardele I²C și SPI.

Un condensator extern de 470 nF este conectat la pinul CEXT, care acționează ca rezervă de energie pentru DS28E18Q+T în timpul operării bus-ului 1-Wire. Alimentarea parazită este disponibilă pentru perifericul conectat la pinul SENS_VDD. Pentru operare SPI, cei patru pini SS#, MISO, MOSI și SCLK asigură comunicația full-duplex cu perifericul conectat. Operarea I²C utilizează doar doi pini cu funcție alternativă, SDA și SCL. Pinii SS# și MISO pentru operare SPI sunt nefolosiți în cazul operării I²C și, prin urmare, pot fi folosiți ca intrări/ieșiri de uz general (GPIO) cu funcție alternativă GPIOA și GPIOB. Acest lucru oferă o mai mare flexibilitate care poate fi utilizată pentru a aprinde LED-uri de diagnosticare la locația senzorului sau pentru a gestiona pinii de configurare pe un senzor sau ADC pentru a schimba comportamentul dispozitivului.

Figura 3: Software-ul de evaluare DS28E18EVKIT# permite unui dezvoltator să configureze dispozitivul DS28E18Q+T de pe placă prin intermediul adaptorului USB și să monitorizeze comportamentul acestuia. Memoria secvențiatorului de comenzi de 512 octeți poate fi încărcată cu date și apoi transmisă perifericului pentru operarea senzorului. (© Maxim Integrated – parte a Analog Devices)

Utilizând dispozitivul DS28E18Q+T de la Maxim Integrated, un singur UART de pe un microcontroler poate comunica cu mai mulți senzori pe aceeași magistrală 1-Wire plus masă folosind doar două fire; fiecare senzor este conectat la un DS28E18Q+T care poate fi la o distanță de până la 100 m. Acest lucru poate fi deosebit de util pentru sistemele HVAC, unde pot fi introduse doar două fire printr-o conductă de aer pentru a monitoriza temperatura și umiditatea pe toată lungimea acesteia, la fiecare gură de aerisire. Acest lucru îmbunătățește eficiența sistemului prin monitorizarea punctelor calde sau reci care pot fi generate de anumite blocaje.

Dezvoltare cu 1-Wire

Pentru a începe dezvoltarea cu protocolul 1-Wire, Maxim Integrated (acum parte a Analog Devices) oferă sistemul de evaluare DS28E18EVKIT#. Acesta este alcătuit dintr-o placă de dezvoltare hardware (figura 2) și software.

Placa de evaluare permite unui dezvoltator să programeze și să monitorizeze DS28E18Q+T. Pentru dezvoltare, placa este însoțită de un adaptor USB care conectează placa la un port USB al unui computer cu Windows. Dezvoltatorul trebuie să descarce și să ruleze software-ul kitului de evaluare DS28E18EVKIT# pentru a facilita dezvoltarea. După cum se observă în figura 3, software-ul de evaluare permite programarea și monitorizarea DS28E18Q+T și a perifericelor atașate acestuia.

Software-ul poate trimite comenzi către placa de evaluare DS28E18Q+T și o poate configura pentru perifericul țintă SPI sau I²C. Acesta poate selecta intervalul de adrese al perifericului și poate încărca memoria secvențiatorului de comenzi de 512 octeți cu comenzile perifericului care urmează să fie executate. De asemenea, software-ul poate ajuta la configurarea driverelor UART pentru microcontrolerul țintă, economisind efortul de a învăța toate detaliile protocolului de comunicație 1-Wire. De asemenea, un dezvoltator poate utiliza placa de evaluare în propria aplicație, economisind timpul și efortul de a construi și configura un nod de senzori.


Autor: Rolf Horn – Inginer de aplicații

Rolf Horn, face parte din grupul European de Asistență Tehnică din 2014, având responsabilitatea principală de a răspunde la întrebările venite din partea clienților finali din EMEA referitoare la Dezvoltare și Inginerie, precum și la scrierea și corectarea articolelor și postărilor de pe platformele TechForum și https://maker.io ale firmei Digi-Key pentru cititorii din Germania. Înainte de Digi-Key, el a lucrat la mai mulți producători din zona semiconductorilor, cu accent pe sistemele embedded ce conțin FPGA-uri, microcontrolere și procesoare pentru aplicații industriale și auto. Rolf este licențiat în inginerie electrică și electronică la Universitatea de Științe Aplicate din Munchen, Bavaria. Și-a început cariera profesională la un distribuitor local de produse electronice în calitate de Arhitect pentru Soluții de Sistem pentru a-și împărtăși expertiza și cunoștințele în calitate de consilier de încredere.

Hobby-uri: petrecerea timpului cu familia + prietenii, călătoriile (cu rulota familiei VW-California) și motociclismul (pe un BMW GS din 1988).

Digi-Key Electronics   |   https://www.digikey.ro

S-ar putea să vă placă și