SEK | EUR | USD

Lägg enkelt och effektivt till kostnadseffektiva barnnoder till IIoT-ändpunkter med portexpanders

Av Bill Giovino

Bidraget med av Digi-Keys nordamerikanska redaktörer

För tillämpningar inom industriellt sakernas internet (IIoT), har prestandan och flexibiliteten i IIoT-ändpunkterna växt, inte bara i funktionaliteten utan även genom att det fysiskt styrbara området har utökats med ett antal meter från värdmicrocontrollern i ändpunkten. Även om vissa I/O-pinnar från IIoT-ändpunktens värdmicrocontroller kan användas för att nå fram över dessa större avstånd, blir I/O-ledningar mer mottagliga för elektromagnetisk interferens (EMI) som ökar med avståndet, vilket resulterar i lägre tillförlitlighet. Även om en annan microcontroller kan användas. som en barnnod till IIoT-ändpunktens värdmicrocontroller, kan detta öka komplexiteten onödigt när data endast används för enkla digitala I/O-signaler.

Istället för att förlänga I/O-ledningar för större styrbart område, kan utvecklare använda portexpanders som kostnadseffektiva barnnoder till IIoT-ändpunkten.

Denna artikel beskriver rollen av portexpanders och går sedan igenom två sådana produkter från Maxim Integrated. Dessa expanders kopplas enkelt ihop med värdmicrocontrollern med seriella gränssnitt som avsevärt ökar den digitala I/O-funktionaliteten hos IIoT-noden. Samtidigt behåller de den allmänna I/O-funktionaliteten (GPIO), såsom att generera pulsbreddsmodulerade signaler (PWM) och interrupt-detektering.

Varför portexpanders behövs för ett IIoT-nätverk

När du planerar ett IIoT-nätverk, är ett av de första stegen att bestämma antalet ändpunkter. Varje del av utrustningen som behöver synkronisera sitt beteende med resten av anläggningen kommer att behöva minst en ändpunkt. Ett bra exempel på detta skulle kunna vara en monteringslinje i en fabrik. Varje station måste synkroniseras till takten i hela monteringslinjen för att utföra rätt monteringsprocedur vid rätt tidpunkt.

Emellertid kanske en IIoT-ändpunkt i en fabriksmonteringslinje inte kan lokaliseras till ett visst fysiskt område, utan istället används ledningar eller kablar för att placera GPIO-portarna till IIoT-ändpunktens värdmicrocontroller ett par meter längre bort, ungefär som en stjärnkoppling med värdmicrocontrollern som nav. Termineringen av varje udd på stjärnan kan ha tillräcklig komplexitet för att fungera som en barnnod till huvud-IIoT-ändpunkten men kanske inte är sofistikerad nog för att konfigureras som en egen IIoT-ändpunkt med egen nätverksanslutning. Även om barnnoden kan konstrueras så att den styrs av sin egen microcontroller, medför detta - för enkel GPIO-användning - onödig komplexitet och extra kostnader.

Ett exempel från verkliga världen kan exempelvis vara en IIoT-ändpunkt som styr motorer med PWM-signaler. Om motorerna finns ett par meter bort, skulle flera PWM-signaler behöva skickas till motorn, vilket ökar EMI:n i det omgivande området. En skärmad kabel kan användas för att sända PWM-signaler, men skulle höja kostnaderna för systemet, och eliminerar inte fel till följd av avståndsberoende fasfördröjningar och överhörning. Istället kan en seriell buss som I2C eller SPI kan användas för att skicka kommandon till ett programmerbart system nära motorerna, vilket kan generera PWM-signalerna. Elektronikmässigt skulle detta bestå i en barnnod som programmeras att generera erforderliga PWM-signaler.

En praktisk lösning för barnnoden kan vara att använda en portexpander via ett seriellt gränssnitt till värdmicrocontrollern. Portexpanders är enklare att konfigurera än en microcontroller och ökar räckvidden för värdmicrocontrollerns GPIO. Istället för att köra åtta eller fler GPIO-ledningar till en barnnod, kan en portexpander på barnnoden enkelt kommas åt av värdmicrocontrollern via ett enkelt I2C- eller SPI-gränssnitt. Genom att skriva till ett register i en portexpander ställs eller nollas GPIO:erna och en avläsning returnerar tillståndet på GPIO:erna, samma som att styra GPIO:erna på värdmicrocontrollern. Portexpanders behåller även mycket av funktionaliteten hos GPIO på microcontrollers, inklusive PWM-signalgenerering och interrupt-ingångar.

Ett exempel på en lättanvänd portexpander är Maxim Integrateds MAX7315AUE+T med åtta GPIO:er och ett I2C-gränssnitt (figur 1).

Diagram av Maxim Integrateds portexpander MAX7315AFigur 1: Maxim Integrateds portexpander MAX7315A erbjuder upp till åtta GPIO:er och kan generera ett interrupt till värdmicrocontrollern vid en tillståndsförändring hos någon GPIO. Den nås med ett I2C-gränssnitt med två ledare. (Bildkälla: Maxim Integrated)

MAX7315A stödjer åtta GPIO:er, var och en av vilka kan konfigureras självständigt som ingång eller open-drain-utgång En värdmicrocontroller kommunicerar med MAX7315A:an över ett I2C-gränssnitt med två ledare som fungerar med upp till 400 kHz. Adressen till enheten på I2C-bussen konfigureras med de tre adresspinnarna AD [0:2], enligt figur 1. Enheten kan även generera ett interrupt till värdmicrocontrollern.

MAX7315A gör det möjligt att enkelt styra åtta GPIO:er med endast tre pinnar: två I2C-pinnar och interruptpinne. Enheten kan placeras på valfritt avstånd från värdmicrocontrollern så länge som förhållandena möjliggör stabil I2C-kommunikation. Beroende på kortlayout och omgivande EMI, och med den seriella klockan (SCL) tickandes på 400 kHz, är normalt en meter ett pålitligt avstånd. Med en SCL på 100 kHz når man 3 meter eller mer.

Dock är det viktigt att testa detta i en aktiv miljö för att säkerställa att omgivningsförhållanden eller EMI inte har en betydande påverkan vid ett visst avstånd.

Interrupt-detektering på barnnoden

Enheten stödjer aktiv låg interrupt-utgång på pinne 13, men om interruptfunktionen inte behövs kan denna pinne konfigureras som en nionde GPIO. Interruptet kan konfigureras till att gå lågt vid valfri övergång på en ingångspinne. Detta gör det möjligt för värdmicrocontrollern att göras medveten om aktivitet på barnnoden utan att polla MAX7315A:an. När interruptfunktionen är aktiverad, kommer en GPIO som är konfigurerad som en ingång och har ett interrupt aktiverat att fungera en interrupt-ingång. Vid en tillståndsförändring för en GPIO konfigurerad som ett interrupt, går pinne 13 låg för att signalera förändringen till värdmicrocontrollern. Värdmicrocontrollern läser sedan av status på MAX7315A för att fastställa vilken GPIO som har ändrat tillstånd.

Denna process förhindrar eventuell förlust av interruptfunktionalitet vid användning av en portexpander för GPIO, vilket är kritiskt inte bara inom IIoT utan även i microcontrollersystem som behöver interrupt för effektiv firmware-användning

Interruptfunktionen ska inaktiveras innan konfigurationen ändras för MAX7315A, för att undvika att generera falska interrupt.

Även om MAX7315A kan köras med 2 till 3,6 V spänningsmatning, klarar GPIO:erna 5,5 V. Detta gör GPIO:erna kompatibla med standardiserade logiknivåer, såsom digitalsystem med 2,0, 3,6 eller 5,0 V. Varje GPIO som är konfigurerad som en open-drain-utgång kan mata upp till 50 mA som logisk hög-nivå. Utgångar kan kopplas ihop för att öka den utgående strömstyrkan. Detta gör MAX7315A:an lämplig för LED-indikatorer för hög ström och bakgrundsbelysning i tangentbord.

PWM-generering på barnnoden

MAX7315A möjliggör även programmerbara PWM-utgångar utan ingripande från värdmicrocontrollern. En intern 32 kHz-oscillator används som tidbas för PWM-vågformer. En 4-bitars inställning för masterintensiteten konfigurerar den tillgängliga 32 kHz PWM-intensiteten för alla utgångar från 0 till 15, på liknande vis som en frekvensdelare. Varje PWM-utgångsvågform för varje GPIO delas upp i 15 tidfack. Inställningen för masterintensiteten avgör hur många fack som är tillgängliga för PWM-signalgenerering. Varje enskild GPIO har sitt eget individuella intensitetsregister som används för att ställa in driftcykeln för vågformen i de aktiva facken. Detta förklaras bäst med ett exempel som använder utgångsvågformen hos en enskild GPIO-pinne (figur 2).

Graf av utgångsvågformen för Maxim MAX7315A på en enskild GPIO-pinneFigur 2: MAX7315A har en programmerbar PWM-generator som körs från en internt genererad 32 kHz-klocka. Denna PWM har masterintensitet på 2 och en individuell GPIO-driftcykelintensitet på 2. (Bildkälla: Maxim Integrated)

Masterintensiteten är satt till 2, så endast fack 1 och 2 av 15 fack är tillgängliga för PWM-generering, medan fack 3 till 15 är på logisk noll-nivå. Den individuella driftcykelintensiteten för denna GPIO är satt till 2, så vågformerna i fack 1 och 2 får en driftcykel på 2/16 = 12,5 %.

PWM-masterintensiteten kan ställas in från 0 till 15, där 15 innebär att alla 15 fack är tillgängliga. En masterintensitet på 0 innebär att PWM-genereringen är inaktiverad för alla GPIO:er, och då stängs 32 kHz-klockan av för att spara ström.

Varje enskild GPIO kan konfigurera en PWM-driftcykelintensitet på 1 till 16, där 16 innebär en driftcykel på 100 procent, vilket sätter facket till logisk hög.

För ytterligare flexibilitet har varje GPIO en polaritetsbit som kan invertera PWM-vågformen. Figur 2 visar vågformen med polaritetsbiten för denna GPIO satt till 1. PWM-vågformen i figur 3 visar samma GPIO med samma masterintensitet och driftcykelintensitet som i figur 2, men polaritetsbiten är nollad.

Graf över Maxim Integrateds MAX7215A med en polaritetsbit som inverterar vågformenFigur 3: Varje PWM GPIO på Maxim Integrated MAX7215A har en polaritetsbit som inverterar vågformen. Denna PWM har en masterintensitet på 2 och en individuell driftcykelintensitet på 2 med polaritetsbiten på 0, vilket inverterar vågformen. (Bildkälla: Maxim Integrated)

Med denna flexibilitet i genereringen av PWM-vågformen, kan MAX7315A användas i en barnnod till en IIoT-ändpunkt för att styra dimningen av LED-indikatorer, driva effekttransistorer för likströmsmotorer och styra elektromagneter och manöverdon. Så istället för att låta åtta digitala ledningar bära PWM-vågformera genom en brusig industrimiljö, behöver värdmicrocontrollern bara konfigurera MAX7315A:an och låta den köras självständigt.

Utöka funktionaliteten i barnnoderna

För mer komplexa barnnoder erbjuder Maxim Integrateds portexpander MAX7301AAX+T upp till 28 GPIO. MAX7301AAX har gränssnitt till värdmicrocontrollern i IIoT-ändpunkten i form av ett konventionellt 4-pinnars SPI-gränssnitt (Figur 4). Den stödjer även en interruptfunktion med aktiv hög som en alternativ funktion för P31. MAX7315AAX kan konfigureras till att generera ett interrupt tillbaka till värdmicrocontrollern vid förändring av tillståndet på en eller flera GPIO:er. Detta gör det möjligt att styra 27 GPIO i en barnnod i ett interruptdrivet system med hjälp av endast fem styrledningar: de fyra SPI-styrledningarna och en interruptledning.

Diagram över Maxim Integrateds MAX7301-portexpanders SPI-gränssnittFigur 4: Maxim Integrateds portexpander MAX7301 har ett SPI-gränssnitt och stödjer upp till 28 GPIO-pinnar som är tillgängliga för in- eller utgångar Pinne 31 stödjer en alternativ funktion som aktiv hög interrupt, vilket låter 27 GPIO-ledningar styras med fem styrsignaler. (Bildkälla: Maxim Integrated)

MAX7301AAX fungerar över ett brett matningsomfång på 2,25 till 5,5 V, vilket gör den kompatibel med de flesta digitala logiksystem. GPIO:n kan konfigureras som Schmitt-triggeringångar med eller utan ett internt pullup-motstånd. GPIO kan även konfigureras som push-pull-utgångar som kan sänka upp till 10 mA ström. Detta gör MAX7301AAX lämplig för gränssnitt till logiknivåkretsar som används för att styra annan utrustning, såsom industriella styrenheter, systemövervaknings- och larmkretsar.

Slutsatser

Vartefter att utvecklare utökar IIoT-ändpunkters fysiska räckvidd, kan det bli en utmaning av styra barnnoderna, eftersom om många styrledningar förlängs metervis skapar detta problem med EMI, layout och kretskomplexitet. Genom att använda portexpanders för att styra barnnoder i interrupt-drivna system, kan utvecklare förenkla kretskortslayouten och förbättra tillförlitligheten, samtidigt som funktionaliteten i IIoT-ändpunkten ökar avsevärt.

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 Digi-Key Electronics or official policies of Digi-Key Electronics.

Om skribenten

Bill Giovino

Bill Giovino arbetar som elektronikingenjör och har kandidatexamen i elektroteknik från Syracuse University. Han är en av få personer som med framgång har bytt karriär från konstruktör via fältapplikationsingenjör till att arbeta med marknadsföring av teknik.

I mer än 25 år har Bill arbetat med att marknadsföra ny teknik för en publik både med och utan tekniska kunskaper för många företag (bland dem kan nämnas STMicroelectronics, Intel och Maxim Integrated). På STMicroelectronics var Bill en av de drivande personerna i att leda företagets framgångar på den nya branschen för mikrostyrenheter. På Infineon drev Bill konstruktionen av prisvinnande mikrostyrenheter för bilindustrin i USA. I sin roll som marknadsföringskonsult för CPU Technologies har Bill hjälpt många företag att omvandla mindre framgångsrika produkter till framgångshistorier.

Bill var tidig med att använda sakernas internet, bland annat genom att placera den första kompletta TCP/IP-stacken på en mikrostyrenhet. Bill tror mycket på att försäljning ska bedrivas genom utbildning och att det är allt viktigare med tydlig, välskriven kommunikation för att marknadsföra produkter online. Han är moderator för den populära gruppen Linkedin Semiconductor Sales & Marketing och kan allt om B2E.

Om utgivaren

Digi-Keys nordamerikanska redaktörer