Az érzékelők és perifériák gyors kiértékelése
Megjelent: 2020. február 25.
A dolgok internetének (IoT) előretörése számos, újszerű megoldásokat kereső, induló vállalkozást ihletett arra, hogy a következő nagy dobáshoz való kapcsolódás útjait keresse. Ezen induló vállalkozások közül soknak létszám és anyagiak terén is szűkölködő tervezőcsapata van, miközben a piaci kényszer miatt egyre szorosabb határidőkkel néznek szembe.
Ennek eredményeképpen az egyes tervezők több műszaki területtel és tervezési feladattal foglalkoznak, beleértve az analóg, a digitális és a rádiófrekvenciás (RF) technikát, valamint a vezeték nélküli és vezetékes hálózatokat. Természetesen állandóan keresik a megoldásokat arra, hogyan gyorsíthatnák fel az integrált áramkörök (IC-k), érzékelők és perifériák fejlesztését és csökkenthetnék azok költségeit.
Az egyik lehetőség az, ha az integrált áramkörök gyártói által a termékeik támogatásaként kínált kiértékelő- és fejlesztőkészleteket használnak. Amennyiben kellő mértékű a terméktámogatás, ez tökéletesen kielégítő módszer. Van azonban egy másik lehetőség is: az Arduino-ökorendszer figyelembevétele. Ez az elektronikával hobbiként foglalkozó amatőrök szórakozásából fejlődött teljes körű tervező és támogató ökorendszerré.
1. ábra A DS1307 jó példa a külső valósidejű órára (RTC). A külső valósidejű óráknak megvan az az előnyük, hogy saját kvarckristályuk és tápsínjük van, valamint hogy nem érintik őket a hibás kódindítások. Ez a valósidejű óra a gazda mikrovezérlővel I2C illesztőfelületen át kommunikál (A kép forrása: Maxim Integrated)
A dolgok internetének (IoT) előretörése
A dolgok internetére (IoT) első igazi példák az 1980-as évek elejéről származnak, amikor például a Carnegie Mellon Egyetemen egy Coca-Cola-automatát úgy alakítottak ki a programozók, hogy az üzemeltetők interneten keresztül ellenőrizni tudják, van-e még ital az automatában, és az elég hideg-e, mielőtt tényleg kiszállnának az automatához. A dolgok internetének 1999-ig hivatalosan nem volt neve, épp ezért vita tárgyát képezi, hogy a dolgok internete pontosan mikortól is létezik. A létrejötte időpontjának általunk ismert talán legjobb meghatározása „Az a pillanat, amikor már több »dolog« vagy »tárgy« kapcsolódott az internetre, mint ember.” Ezt alapul véve úgy becsülik, hogy a dolgok internete valamikor 2008 vagy 2009 táján jött létre, amikor a dolog-ember arány a 2003-as 0,08-ról 2010-re 1,84-re nőtt.
Az Arduino előretörése
A dolgok internetének magzati korszaka egybeesett a gyártók mozgalmának a 2000-es évek eleji előretörésével. Az Arduino első, egész világra kiterjedő alkalmazása 2005-ben következett be, ugyanabban az évben, amikor a Make magazin is indult, és mindössze egy évvel azelőtt, hogy megvalósult az első Maker Faire gyártói kiállítás és vásár.
Az Arduino a kezdetektől fogva kifinomult nyílt forráskódú szoftveres és hardveres ökorendszereket fejlesztett. Arra volt szükség, hogy az Arduino jól támogatott ökorendszereit valahogy megismertessék a hivatásos tervezőkkel, mert az leegyszerűsíti a munkájukat, és felgyorsítja a termék piacra kerülését.
Igazából a megoldás szinte magától jött létre: az Arduino köré nőtt ökorendszer azzal az előre nem látható mellékhatással járt, hogy az Arduino rendszerét a hivatásos mérnökök érzékelők és perifériák saját terveikben való felhasználása előtti kiértékelésére kezdték használni. Erre ma már számos példa van, ezek egyike a valósidejű óra (RTC).
2. ábra A DS3231 belső hőmérséklet-kiegyenlítéses kristályoszcillátorral van ellátva, amelynek pontossága a –40 °C – +85 °C közötti üzemi hőmérséklet-tartományban ±2 perc/év (A kép forrása: Maxim Integrated)
Példa perifériák valósidejű óra (RTC) használatával történő kiértékelésére
Csaknem minden korszerű 32 bites mikrovezérlőben van beépített valósidejű óra, ahogy számos 16 bites és 8 bites mikrovezérlőben is. Bár egyaránt csökkenti a kártya hasznos méretét, a szükséges anyagmennyiséget és a végtermék bekerülési költségeit, a belső valósidejű óra használatának vannak hátrányai is.
Az egyik ilyen hátrány, hogy a mikrovezérlőnek szoftveres vezérléssel kell be- és kikapcsolnia a saját belső valósidejű óráját, ezért ha valami gond történik, például tápfeszültséghiba következik be, és a mikrovezérlő végtelen ciklusba kerül (lefagy), vagy a kódja elszáll a vakvilágba, megeshet, hogy a kód a belső valósidejű órát akaratlanul kikapcsolja. Ha a külső valósidejű órával vetjük össze, azt általában stabilabbnak gondolják, mert saját tápsínje és kvarckristálya van, és kisebb az esélye, hogy véletlenül kikapcsolja a mikrovezérlőben futó kód. Sőt mi több, a külső valósidejű órát általában nagyobb csíkméretű lapkák gyártása során alakítják ki, mint a mikrovezérlőt, és nagyobb szilíciumlapka-mérete következtében kevésbé érzékeny a sugárzás, például a kozmikus sugárzás okozta bithibákra, azaz egyszeri bitátbillentésekre (SEU, single-event upset).
3. ábra Adafruit DS1307 RTC BOB valósidejű órához való diagnosztikai csatlakozókártya (A kép forrása: Adafruit Industries)
Valósidejű óra integrált áramkör például a Maxim Integrated DS1307 és DS3231 eszköze
Két nagyon népszerű valósidejű óra funkciójú integrált áramkör a Maxim Integrated vállalat DS1307 és DS3231 jelű terméke. Mindkét eszköz nyilvántartja a másodperc, perc, óra, nap, dátum, hónap és év adatot, automatikusan vált a 31 napnál rövidebb hónapok esetén, ismeri a szökőéveket, és támogatja a 24 és a 12 órás megjelenítési üzemmódot. Ezenkívül mindkét eszköz soros I2C-sínen át kommunikál a gazda mikrovezérlővel, és tartalmaz tápfeszültséghibákat észlelő érzékelő-áramköröket, amelyek automatikusan átváltanak a tartalék áramforrásra (általában akkumulátorra), és ez esetben is kiesés nélkül folytathatók az időmérési műveletek (1. ábra).
Az eszközök közti eltérések meghatározásához természetesen fontos ellenőrizni az adatlapokat. A DS1307 például 5 V tápfeszültséget, valamint külső kvarckristályt igényel. Összehasonlításképpen, a pontosabb DS3231 2,3–5,5 V közötti tápfeszültségről üzemeltethető, és belső hőmérséklet-kiegyenlített kristályoszcillátor (TCXO), valamint kvarckristály található benne.
A DS1307 esetében az óra pontossága a kvarckristály pontosságától függ, valamint attól, hogy mennyire pontosan egyezik egymással az oszcillátor-áramkör kapacitív terhelése és az a kapacitív terhelés, amelyre a kvarckristály be van hangolva. Összehasonlításképpen, a hőmérséklet-kiegyenlítéssel ellátott DS3231 pontossága egyértelműbben van megadva: -40 °C – +85 °C közötti üzemi hőmérséklet-tartományban ±2 perc/év (2. ábra).
Feltételezve, hogy nincsenek ellehetetlenítő tényezők a két eszköz adatlapján szereplő adatok között, hogyan kezdenének neki a tervezők e két eszköz kiértékelésének a való életben? Az egyik megoldás, hogy egyéni diagnosztikai csatlakozókártyákat (BOB, breakout board) terveznek és építenek, és kifejlesztik a vezérlésükhöz szükséges kódot is, mindent a nulláról. Gyorsabb és költségtakarékosabb megoldás, ha az Arduino hardveres és szoftveres ökorendszerének részeként készen beszerezhető csatlakozókártyát és az ahhoz már kifejlesztett kódot használják.
Példák valósidejű óra diagnosztikai csatlakozókártyájára: az Adafruit vállalat DS1307 és ChronoDot jelű kártyája
Két népszerű csatlakozókártya a DS1307 és DS3231 integrált áramkörhöz az Adafruit vállalat 3296 DS1307 Real-Time Clock BOB jelű, valósidejű órához való diagnosztikai csatlakozókártyája (3. ábra) és 255 ChronoDot Ultra-precise Real-Time Clock V2.1 BOB jelű, valósidejű órához való nagy pontosságú diagnosztikai csatlakozókártyája (4. ábra).
Az eszközt a megfelelő mikrovezérlő-fejlesztő kártyához kapcsolva, amilyen például az Arduino Uno R3, és az internetről letölthető nyílt forráskódú könyvtárakkal és mintakódokkal együtt használva a beágyazott rendszerekkel és a dolgok internetével foglalkozó hivatásos tervezők azonnal készen állnak arra, hogy teljes odaadással és sebességgel belevágjanak a munkába.
Miután a tervezők elkészültek a kiértékeléssel, kiválaszthatják a megfelelő alkatrészeket a diagnosztikai csatlakozókártyához illeszkedő nyílt forráskódú hardverek közül, és közvetlenül beépíthetik ezeket az alkatrészeket a saját terveikbe. Ehhez hasonlóan felhasználhatják a nyílt forráskódú könyvtárakat és a nyílt forráskódú minták alapján készített saját fejlesztésű kódokat saját termékük részeként.
Hardverekkel kapcsolatos tanácsok és trükkök a szoftverfejlesztők számára
Mint korábban már említettem, a DS1307 és a DS3231 valósidejű óra is soros I2C sínen át kommunikál a gazda mikrovezérlővel. A szoftverfejlesztőket fájdalmasan érintő egyik „csapda” az, hogy a sínt alkotó mindkét jel (ezek neve SCL és SDA) előfeszítő ellenállást igényel.
Az Adafruit vállalatnak sem a DS1307, sem a DS3231 (ChronoDot) diagnosztikai csatlakozókártyája nem tartalmaz ilyen ellenállást, bár a ChronoDot esetében vannak olyan, R1 és R2 jelölésű pontok, ahová ez az ellenállás beköthető.
Annak oka, hogy a kártyához nem tartozik előfeszítő ellenállás, az, hogy az I2C sínre több eszköz (integrált áramkör és diagnosztikai csatlakozókártya) is kapcsolódhat. Az I2C sínnek 7 bites címe van, ahol a 27 = 128. A 0000000 azonban egy általános hívási cím, amely a sínre kapcsolódó összes eszköz megcímzésére szolgál, így elméletileg 127 önálló eszközt lehet megcímezni a sínről. A gyakorlatban a megcímezhető eszközök tényleges számát a sín kapacitása szabja meg, beleértve a vezetőcsíkok és terhelések kapacitását is, amelynek az együttes határértéke 400 pF.
Van egy képlet, amelynek segítségével a hardvertervezők kiszámítják a több párhuzamosan kapcsolt ellenállás egyenértékét (eredőjét).
A magyarázathoz most az alábbi egyszerű példát fogjuk használni. Ha két eszköznek ugyanakkora értékű az előfeszítő ellenállása, a kapott eredő ellenállás ennek az értéknek a fele. Ha négy eszköznek ugyanakkora értékű az előfeszítő ellenállása, a kapott eredő ellenállás ennek az értéknek a negyede.
Ha a sínre kapcsolódik már egy valamekkora előfeszítő ellenállással rendelkező I2C-eszköz, akkor nincs további teendő. Ha nincs előfeszítő ellenállás, és a tervező 100%-ig biztos abban, hogy a jövőben sem kapcsolnak a sínre a kártyára szerelt előfeszítő ellenállással ellátott csatlakozókártyát, akkor a legjobb egy 4,7 kΩ-os ellenálláspárt használni előfeszítő ellenállásként. Ha azonban fennáll a lehetősége annak, hogy valamikor a jövőben előfeszítő ellenállással ellátott csatlakozókártyát kapcsolnak a sínre, akkor egy 10 kΩ-os ellenálláspárt kell használni ezen a ponton, mert ez így azelőtt és azután is működni fog, hogy másik kártyát kapcsolnak a sínre.
4. ábra ChronoDot Ultra-precise Real-Time Clock v2.1 BOB valósidejű órához való nagy pontosságú diagnosztikai csatlakozókártya (A kép forrása: Adafruit Industries)
Szoftverekkel kapcsolatos tanácsok és trükkök a hardvertervezők számára
A „vezetékes könyvtár” egy olyan kommunikációs könyvtár, amely megkönnyíti a kétvezetékes jellegű kommunikációt az I2C-eszközökkel. Az Arduino esetében ez a beépített fejlesztőkörnyezet (IDE, integrated development environment) része, így a tervezőnek nincs más dolga, mint az #include <Wire.h> utasítást hozzáadni a program elejéhez.
Az igazi trükk a valósidejű órákat tartalmazó megfelelő könyvtár (RTC library) megkeresése. Egy remek ilyen valósidejű órákat tartalmazó könyvtár az Adafruit vállalat RTClib nevű könyvtára, amely a Github webhelyről tölthető le. Ezután hozzá kell adni az #include "RTClib.h" utasítást a program elejéhez.
Később, általában az állandók értékének megadása után, ideje példányosítani a valósidejű órát (azaz létrehozni belőle egy példányt) az RTC_ DS1307 RTC; vagy az RTC_DS3231 RTC; utasítással, a használt diagnosztikai csatlakozókártyától függően.
Még később, a program minden részének (az Arduino eszközeit használó példánál maradva a setup() függvénnyel való) beállítása során a tervezőnek hozzá kell adnia a Wire.begin(); és az RTC.begin(); utasítást, hogy inicializálja az I2C-kommunikációt és a valósidejű óra (RTC) alrendszert.
A korábban említett Github webhelyen elérhető minták segítségével a tervező gyorsan működővé varázsolhatja a rendszerét, legalábbis ami a napi dátum és a pontos idő lekérését és beállítását illeti. Ami kevésbé nyilvánvaló, hogy hogyan lehet létrehozni a négyszögjel alakú kimenőjelet. Alapértelmezés szerint a kimenet energiatakarékossági okokból ki van kapcsolva. Ennek a lábnak a használatára az egyik módszer, ha bekapcsoljuk és például 1 Hz-en történő működésre állítjuk be, majd ezzel a jellel indítunk egy megszakítást a gazda mikrovezérlőn.
Egy szoftverfejlesztőnek nem okoz nehézséget megkeresni ezt a könyvtár kódjában, egy hardvertervezőnek viszont nagyobb gondot jelenthet átrágni magát ezen a kódon, ezért jöjjön egy kis összefoglaló:
A DS1307 esetén nincs más tennivaló, csak egy vagy több utasítást kell hozzáadni a programhoz RTC Ds1307SqwPinMode (<option>); formában, ahol a használható értékek a következők: ON (Be), OFF (Ki), SquareWave1Hz, SquareWave4kHz, SquareWave8kHz és SquareWave32kHz (négyszöghullám, 1 Hz, 4 kHz, 8 kHz és 32 kHz, értelemszerűen).
A DS3231 esetén ehhez hasonlóan egy vagy több utasítást kell hozzáadni a programhoz RTC.Ds3231SqwPinMod(<option>); formában, ahol a használható értékek a következők: ON (Be), OFF (Ki), DS3231_SquareWave1Hz, DS3231_SquareWave1kHz, DS3231_SquareWave4kHz és DS3231_SquareWave8kHz (négyszöghullám, 1 Hz, 1 kHz, 4 kHz és 8 kHz, értelemszerűen).
Következtetés
A tervezőknek több mérnöki feladatkört és feladatot is fel kell vállalniuk, ha kis csapatokban és a piaci kényszerűségek miatt szoros határidőkkel dolgoznak, miközben állandóan keresniük kell a megoldásokat arra, hogyan gyorsíthatnák fel az integrált áramkörök, érzékelők és perifériák fejlesztését és csökkenthetnék azok költségeit. Amint a cikkben ismertettem, erre jó megoldást jelenthetnek az Arduino termékei érzékelőként, illetve perifériaként kialakított diagnosztikai csatlakozókártyák formájában megvalósított nyílt forráskódú hardvereszközökkel, valamint azokhoz kapcsolódó, könyvtárak és mintaprogramok formájában elérhető nyílt forráskódú szoftverekkel együtt használva.
Szerző: Rich Miron – Digi-Key Electronics
Digi-Key Electronics
Angol/német nyelvű kapcsolat
Hermann W. Reiter
Director, Global Strategic Business Development
Digi-Key Electronics Germany
Tel.: +49 151 6286 5934
E-mail: Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát.
www.digikey.hu
még több Digi-Key Electronics