Növényházi adatgyűjtő- és vezérlőrendszer tervezése



Hasonló dokumentumok
Növényházi adatgyűjtő- és vezérlőrendszer tervezése

I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

Mérő- és vezérlőberendezés megvalósítása ARM alapú mikrovezérlővel és Linux-szal

Növényházi adatgyűjtő- és vezérlőrendszer tervezése

ARM mikrovezérlők programozása

IRIS.base beépítési útmutató ON.GUARD felhasználók részére

VEZETÉKNÉLKÜLI RENDSZERVEZÉRLŐ ACU-100

20 kva 60 kva UPS PÁRHUZAMOS REDUNDÁNS RENDSZER HASZNÁLATI UTASÍTÁSA

5 Egyéb alkalmazások. 5.1 Akkumulátorok töltése és kivizsgálása Akkumulátor típusok

FPGA áramkörök alkalmazásainak vizsgálata

V. FEJEZET MÓDOSÍTOTT MŰSZAKI LEÍRÁS

Hardver leírás Klasszikus kontroller v.3.2.2

Robotkocsi mikrovezérlővel

S324 vezérlőmodul szennyvízátemelők villamosításhoz.

STEADYPRES frekvenciaváltó ismertető

IRIS.base beépítési útmutató ON.GUARD felhasználók részére

A CAN mint ipari kommunikációs protokoll CAN as industrial communication protocol

MICROCHIP PIC DEMO PANEL

Joint Test Action Group (JTAG)

SATEL. CA-64 RIASZTÓKÖZPONT ( es szoftver verzió) Telepítési útmutató

Beléptető rendszer. Felhasználói kézikönyv

VERTESZ Fázisazonosító Felhasználói Leírás

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

ELEKTROMECHANIKUS és ELEKTROMOS VEZÉRLŐPANELEK

Jármû-elektronika ELEKTRONIKAI-INFORMATIKAI SZAKFOLYÓIRAT november. 890 Ft. XII. évfolyam 7. szám

ZC3. vezérlőpanel. Általános jellemzők. A vezérlőpanel leírása

ems2.cp04d [18010] Keriterv Mérnök Kft Programozható Automatikai állomás 14 multifunkcionális bemenet, 6 relé kimenet, 4 analóg kimenet DIGICONTROL

Robotot vezérlő szoftverek fejlesztése Developing robot controller softwares

Időjárásfüggő napellenző vezérlő, MS555WR Megrend. szám:

Üzembe helyezési és telepítési kézikönyv. S Sorozat Duplasugár

A stabil üzemű berendezések tápfeszültségét a hálózati feszültségből a hálózati tápegység állítja elő (1.ábra).

MOVER-KIT Q36S vezérléssel Felszerelési és használati utasítás Elektromechanikus motorral mozgatott tolóajtók nyitásához és záráshoz.

A mikroszámítógép felépítése.

MV4 megfigyelővevő. Czigány Sándor, valószínűleg jóval több IC-ből fog állni, mint modern társai, és gyengébbek

Mérési útmutató a Mobil Kommunikáció és Kvantumtechnológiák Laboratórium méréseihez

DGSZV-EP DIGITÁLIS GALVANIKUS SZAKASZVÉDELEM. Alkalmazási terület

Tervezői segédlet. Vezérlő egység

Konfigurálható digitális műszerfal Bosch MonoMotronic befecskendezőrendszerhez

GC1C / GC2C Zár, kapu és sorompó vezérlő. Használati utasítás Magyar

Gáti Tamás. EASYBUS tűzvédelmi és légtechnikai vezérlő rendszer


CAN BUSZ ÁLTALÁNOS ISMERTETŐ

Telepítési és Üzemeltetési kézikönyv

Felhasználói kézikönyv

Használati útmutató az MT-1210 digitális műszerhez

KÉZIKÖNYV. Digitális Multi Control Panel (DMC)

11. Haladó ismeretek: személyi számítógépek

S7021 ADATGYŰJTŐ. 2-csatornás adatgyűjtő számláló és bináris bemenettel. Kezelési leírás

BEACon TM. Verzió 2.0

PQRM Ux Ix xx xx (PS) Háromfázisú multifunkciós teljesítmény távadó. Kezelési útmutató

OTTHONI FELHASZNÁLÁSRA TERVEZETT NYITÓ SZETT

Szükséges ismeretek: C programozási nyelv; mikrokontrollerek; méréstechnika; analóg és digitális elektronika; LabView

1. BEVEZETÉS A RENDSZER ELEMEI, ARCHITEKTÚRÁJA... 5

Programozható logikai vezérlõk

Powador 12.0 TL3 - INT 14.0 TL3 - INT 18.0 TL3 - INT 20.0 TL3 - INT. Kezelési útmutató. A német eredeti változat fordítása

Új módszerek egyfázisú aszinkron motorok jelfeldolgozó kontrolleres vezérléséhez

Villamos jelek mintavételezése, feldolgozása. Mérésadatgyűjtés, jelfeldolgozás 9. előadás

Telepítési és kezelési útmutató

Elektronikus dobókocka

FEDÉLZETI INERCIÁLIS ADATGYŰJTŐ RENDSZER ALKALMAZÁSA PILÓTA NÉLKÜLI REPÜLŐGÉPEKBEN BEVEZETÉS

Door-System Kft Újpest IPARI PARK Almakerék u. 4. T : info@door-system.hu

SYS700-R ROUTER modul DDC rendszerelemek, DIALOG-III család

7. A csatlakozóérintkezők és a kijelzések áttekintése A 16 csatornás futófényvezérlőnek a következő csatlakozóérintkezői vannak:

Access Modular Controller

PR402EN.doc. PR402 v1.0 Egyajtós beléptetõ rendszer FIRMWARE VERZIÓ Telepítési útmutató

2 - ELEKTROMOS BEKÖTÉSEK

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Elektrotechnikai-Elektronikai Intézeti Tanszék

A megfelelő IP védelem biztosításával, alkalmasak a kültéri alkalmazások kialakítására.

H-2040 Budaörs, Komáromi u. 22. Pf Telefon: , Fax:

Colin Hargis Elektromágneses összeférhetõség - útmutató erõsáramú mérnökök részére

ProxerBoard System. Termékismertető

Felhasználói kézikönyv

ENIGMA II. Távfelügyeleti Vevő

Az EuroProt készülékcsalád

Intelligens és összetett szenzorok

NMT (D) MAX (C) Beépítési és kezelési kézikönyv. változat a v6 dokumentum alapján. 1 / 15 Tel.: 1/ Fax: 1/

A HV-PCI6 VIDEODIGITALIZÁLÓ KÁRTYA ÉS ALKALMAZÁSAI (HV-PCI6 Video Digitizing Card and its Applications)

Mielıtt használná termékünket Az eltérı környezeti körülmény elektromos áramütést, tüzet, hibás mőködést vagy. okozhat.

VLT Micro Drive. Kis frekvenciaváltó maximális terherbírás és megbízhatóság

ThinkCentre Hardverelemek beszerelése és cseréje

TI TMDSEVM6472 rövid bemutatása

Üzemeltetési utasítás

Felhasználói kézikönyv

PD2 PowerDrive központi egység. Használati utasítás Magyar

MultiCONT TÖBBCSATORNÁS FOLYAMATVEZÉRLŐ

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

Érzékelők és beavatkozók I.

Scherer Balázs: Mikrovezérlők fejlődési trendjei

AVR-Duino Eth Shield / AVR-Duino EthMAX Shield

Nagyteljesítményű mikrovezérlők

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

V A C O N A L K A L M A Z Á S I K É Z I K Ö N Y V

ARM Cortex magú mikrovezérlők

2 - ELEKTROMOS BEKÖTÉSEK

Univerzális modul. RF-alapú univerzális modul - Maximum 2 helyiségcsoport előszabályozásához - Maximum 3-fokozatú szellőztetés szabályozásához

TELL AMR-08. Távfelügyeleti Vevő

BlueDSO összeszerelési útmutató

A DDS áramkörök használata.

Átírás:

Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai kar Méréstechnika és Információs Rendszerek Tanszéke Holcsik Tamás Növényházi adatgyűjtő- és vezérlőrendszer tervezése KONZULENS EREDICS PÉTER BUDAPEST, 2013

2 Hallgatói nyilatkozat Alulírott Holcsik Tamás, szigorló hallgató kijelentem, hogy ezt a diplomatervet meg nem engedett segítség nélkül, saját magam készítettem, csak a megadott forrásokat (szakirodalom, eszközök stb.) használtam fel. Minden olyan részt, melyet szó szerint, vagy azonos értelemben, de átfogalmazva más forrásból átvettem, egyértelműen, a forrás megadásával megjelöltem. Hozzájárulok, hogy a jelen munkám alapadatait (szerző(k), cím, angol és magyar nyelvű tartalmi kivonat, készítés éve, konzulens(ek) neve) a BME VIK nyilvánosan hozzáférhető elektronikus formában, a munka teljes szövegét pedig az egyetem belső hálózatán keresztül (vagy autentikált felhasználók számára) közzétegye. Kijelentem, hogy a benyújtott munka és annak elektronikus verziója megegyezik. Dékáni engedéllyel titkosított diplomatervek esetén a dolgozat szövege csak 3 év eltelte után válik hozzáférhetővé. Kelt: Budapest, 2013. 12. 16.... Holcsik Tamás

3 Kivonat Diplomatervem témája egy olyan növényház vezérlés készítése amely korszerű eszközökkel, szenzorok által mért mennyiségek alapján, beállítható határértékek szerint végzi egy növényház ajtajainak vezérlését. Első részében létező megoldásokat tekintek át amelyből következtetéseket levonva felállítok egy követelményrendszert amelyet teljesítenie kell a megtervezendő rendszernek. A továbbiakban megvizsgálom hogy ezekre a követelményekre milyen lehetőségek közül lehet választani, majd felvázolom az egész rendszer tervét és az egyes alkotó elemeinek a szerepét. A következőekben ezeknek a komponenseknek a hardveres megvalósításához szükséges alkatrészek kiválasztási szempontjait és tervezési folyamatát mutatom be. Végül a megvalósított rendszerre írt szoftvert mutatom be. Kitérek működtető program funkcióira és komponenseire, és az egyes hardvereket működtető programrészekre.

4 Abstract The topic of my thesis is to design a greenhouse controller capable of controlling a greenhouse s doors by the measured values from it s sensors. In the first section I will introduce some existing solutions from that I can draw conclusions to make a set of requirements to my system, then I can design a system which mets these requiremenst. Next I will examine what options to choose from to fulfill the requirements above, and then outline the plan of the whole system and specify the role of each component. After that I will introduce the process of selecting the proper hardware components and designing each circuit in the system. Finally the controlling software will be introduced. I will mention the functions and components that operate the system, and each hardware module.

5 Tartalomjegyzék 1. Bevezetés... 6 2. Gyári megoldások... 7 2.1 Wadsworth EnviroSTEP... 7 2.2 Growtronix... 7 2.3 Szenzorok... 8 3. A rendszer felépítése... 8 3.1 A modulok közötti kommunikáció... 10 3.1.1 RS-485... 11 3.1.2 CAN busz... 11 3.2 Hőmérsékletmérő... 13 3.3 Páratartalom érzékelő... 14 3.4 Szélerősségmérés... 14 4. Hardver... 15 4.1 Mikrovezérlő-család kiválasztása... 15 4.2 Az STM32-es mikrovezérlő... 16 5. A modulok részletes bemutatása... 18 5.1 Vezérlőmodul... 18 5.1.1 Tápegység... 19 5.1.2 SD kártya... 20 5.1.3 Ethernet-illesztő... 20 5.1.4 Kijelző illesztés... 21 5.1.5 CAN busz illesztés... 22 5.2 Szenzormodul... 24 5.3 Kiegészítő modulok... 26 5.4 IO modul... 29 5.4.1 Kimeneti fokozat... 29 5.4.2 A modul tápegysége... 31 5.5 Tápegység és akkutöltő... 32 6. Megvalósítás... 32 6.1 A nyomtatott áramköri lapok megtervezése... 32 6.2 Modulok élesztése... 33 7. Szoftver... 34 7.1 Fejlesztőkörnyezet... 34 7.2 Programozó hardver... 35 7.3 Operációs rendszer... 35 7.3.1 Control_Task... 36 7.3.2 Communication task... 36 7.3.3 uip_task... 36 7.3.4 uip_periodic_task... 36 7.4 Fájlkezelés... 36 7.5 Ethernet kezelés... 38 7.5.1 uip TCP/IP stack... 38 7.5.2 Weboldal... 39 7.5.3 Webszerver funkciók... 40 7.6 Grafikus kijelző... 40 7.7 Menürendszer... 42 7.8 CAN busz kezelés... 45 8. Összefoglalás... 48 9. Irodalomjegyzék... 49 10. Függelék... 51

6 1. Bevezetés A mai kor megköveteli, hogy a növényházakban termesztett növényeknek minél optimálisabb körülményeket teremtsünk. A termés optimalizálására a körülmények biztosításának egyik lehetősége a növényház automatizálása. A megépítendő rendszer egy valós alkalmazási célra készül, egy jelenleg is működő (szobatermosztátokkal vezérelt) növényház ajtóinak nyitását és zárását fogja végezni a különböző szenzorok által mért adatok szerint. A megtervezése során elsősorban a megbízhatóságot illetve az univerzalitást tartottam a kiemelt szempontokként. A növényház kifejezés takarja mind az üvegház, illetve mind a fóliasátor kivitelezést, a dokumentációban a könnyebb érthetőség érdekében általában üvegházként hivatkozok a növényházra.

7 2. Gyári megoldások Munkámat gyári megoldások áttekintésével kezdtem, hogy képet kapjak arról hogy milyen fizikai mennyiségeket szoktak mérni az eszközök, illetve a felépítésükről szerezzek információt. 2.1 Wadsworth EnviroSTEP Ez egy egyszerűbb és kisebb tudású üvegházvezérlő [1]. Önálló működésű, mikrokontroller vezérlésű, hálózatba nem köthető. Főbb jellemzői: 1. ábra - Wadsworth EnviroSTEP Csak analóg szenzorokat tud kezelni, illetve rendelkezik 4 digitális bemenettel egyéb kapcsolók érzékelésére. 12 relés, illetve 2 darab 0-10 V-os analóg kimenettel rendelkezik, az adatokat 15 percenként képes menteni, és 7 napra visszamenőleg tárolja azokat. Bővíthetősége annyiban merül ki, hogy kapható hozzá szélsebességmérő modul, illetve egy olyan modul amelyen keresztül egy számítógéppel tud kommunikálni. 2.2 Growtronix Számítógép alapú rendszer [2], egyszerűbb vezérlések megvalósítására. A vezérlést maga a PC-n futó szoftver végzi, a számítógéphez RS232 porton csatlakozik, maga az eszköz tápegysége. A tápegység modulra lehet felfűzni az összes eszközt, szabványos CAT5 kábelekkel működik a rendszer, de nem ethernet alapon. Egyszerre maximum 29 eszközt kezel, lánc struktúrát megvalósítva.

8 2. ábra - Growtronix rendszer 2.3 Szenzorok Kutatásom során, illetve az eddig megismert rendszerek alapján az alábbi mennyiségek függvényében működnek a szabályzók - hőmérsékletérzékelés (hűtés, fűtés, szellőztetés) - páratartalom mérés (szellőztetés) - talajnedvesség mérés (locsolás) - fényerősség mérés (árnyékolás) - CO 2 szint mérés (CO 2 befúvatás) - szélerősség mérés (védelem) Ezek közül a jelenlegi alkalmazás szempontjából első közelítésben a hőmérsékletmérést, páratartalommérést, illetve a szélerősségmérést tartom fontosnak megvalósítani, de meghagyom a lehetőséget későbbi bővítés során a többi beépítésére. A piacon kapható szenzorok egy része vagy komplett egységként kapható (pl.: termosztát), vagy valamilyen rendszerhez csatlakoztathatóan. Ezek lehetnek ipari szabványt használó (pl.: analóg, RS-485 ) komplett modulok, vagy önmagában álló integrált áramkör. 3. A rendszer felépítése A családi házunknál található a kertben egy fóliasátor, amelyben dísznövényeket termesztünk, így a növények számára ideális hőmérsékletet kell biztosítani, amelyet az ajtók nyitásával lehet megoldani. Öt darab ajtó található a fóliasátron, de ezek három kategóriába esnek, a végeken lévő alsó illetve fölső ajtók, illetve középen a tetőajtó.

9 Ezek nyitása elektromos úton történik házilag épített lineáris egységek által. Ezek 24 V egyenfeszültségről működnek, polaritás váltással lehet az ajtókat nyitni illetve zárni, a lenyitott illetve bezárt állapotot egyszerű végálláskapcsolók érzékelik, illetve szakítják meg az áramot. Mivel a jelenlegi vezérlés hagyományos szobatemosztátokkal van megvalósítva, így fennáll az a probléma, hogy nem lehet tetszőleges nyitási is zárási hőmérséklet tartományokat beállítani, illetve különböző kényelmi funkciókat nem tud megvalósítani a rendszer. 3. ábra - A fóliasátor felépítésének rajza A helyi adottságok alapján össze tudtam állítani a követelményeket amelyeket teljesítenie kell a rendszernek. A fent említett fóliasátor ajtajainak a vezérlését kell megoldania. Rendelkeznie kell megfelelő kimenetekkel amelyek meg tudják hajtani az ajtókat kapcsoló reléket. Minden ajtó kategóriát külön kell tudnia vezérelnie egymástól függetlenül. Egy központi egységnek kell az egész rendszert felügyelni és vezérelni. A központi egység rendelkezzen grafikus LCD-vel amelyen láthatóak legyenek az érzékelők által mért értékek, illetve a hozzájuk tartozó határértékek. A határértékek legyenek állíthatóak, a grafikus LCD-ről kezelőszervekkel. Kényelmi funkcióként rendelkezzen távoli menedzselési lehetőséggel, amelyen ugyanazokat a beállításokat el lehessen végezni, mint a kezelőszervekkel. Szenzorok tekintetében levegő hőmérséklet, páratartalom, és szélerősséget kell mérnie, a vezérléshez a belső hőmérsékletet kell figyelembe vennie. Az ajtók manuális nyitásához illetve zárásához a fóliasátorban biztosítani kell nyomógombokat arra az esetre, ha valamilyen okból szükséges az ajtók külön vezérlése. Ezek alapján az elképzelt rendszer felépítése az alábbiak szerint alakul: az egész rendszert a vezérlőmodul szolgálja ki. Ez felel a szenzorok kiolvasásának ütemezésért,

10 és a beolvasott értékek alapján történő működtetésért. A vezérlő rendelkezik kijelzővel, így grafikus felhasználói felületet nyújt a felhasználónak, aki így a különféle beállításokat illetve az aktuális fontos paraméterek értékét nyomon követheti. 4. ábra - A rendszer felépítésének terve Szenzor modulok feladata a szenzorok buszra illesztése. Ezekre azért van szükség, mert az egyes szenzorok kommunikációs interfésze teljesen más lehet, illetve a nagyobb távolság miatt nem lehetne biztosítani a zavarmentes működést. Az IO modul szerepe a fizikai beavatkozók kapcsolása, ez a busz topológia miatt tetszőlegesen helyen állhat, illetve több darabot is tartalmazhatna ha az üvegház felépítése megkövetelné. Az egyes modulok között egy busz tart kapcsolatot. A típusának kiválasztása során figyelembe kell venni hogy nagyobb távolságot kell áthidalni hibamentesen, és az esetleges bővíthetőség lehetőségéről sem szabad megfeledkezni. A tápegység látja el az egyes szenzorokat illetve vezérlő egységet tápfeszültséggel. Az alkalmazandó 24 V-os feszültség kellően magas ahhoz hogy a kábelen lévő veszteség miatt probléma legyen, illetve a 24 V törpefeszültségnek minősül, így nincs érintésvédelmi probléma a használata során. A tápfeszültséget az egyes modulok a busznak használt többeres kábel erre fenntartott szálain kapják. 3.1 A modulok közötti kommunikáció A modulok egymással való kapcsolatát valamilyen nagy távolság áthidalására képes vezetékes összeköttetésnek kell biztosítania. Nagyobb távolságra csakis differenciálisan vitt jelekkel lehet biztosítani a hibamentes nagyobb sebességű kommunikációt, ezért ilyen elven működő buszok közül választottam ki két jellemző típust, amelyet összehasonlítottam

11 3.1.1 RS-485 Az RS-485 manapság [3] az ipari irányítástechnikában széleskörűen elterjedt kommunikációs busz típus. A szabványt az EIA/TIA vezette be. A TIA/EIA-485 szabvány csak a busz fizikai felépítését, meghajtó áramkörök felépítését definiálja, miközben a buszon megvalósított kommunikációs protokollt nem. A hálózatot csavart érpárral lehet kialakítani, és ajánlott csakis lánc alakzatban felépíteni, a reflexiók kiküszöbölése érdekében. A busz végein található 1-1 darab a vezeték hullámimpedanciájával megegyező lezáró ellenállás. 5. ábra - RS485 busz felépítése (forrás: [3]) Az RS-485 hálózat szabvány szerint maximum 32 eszközt tartalmazhat egy buszon, illetve hátrányként említhető meg az is, hogy semmilyen hardveres támogatás nincs a buszon való kommunikáció lebonyolítására. A busz egyik végén található meg az az ellenállásosztó, amely a busz közösmódusú előfeszítését valósítja meg. Ez azért szükséges hogy a feszültségszintek a vevők komparálási szintjéhez megfelelően illeszkedjenek. 3.1.2 CAN busz A CAN buszt [4] a Bosch cég fejlesztette ki, és a nyolcvanas évek végére lett belőle ipari szabvány. Eredetileg autóipari alkalmazások céljára készült, mivel ekkor kezdtek megszaporodni az autókba épített különböző elektronikus segédberendezések (ECU, ABS, stb) és a köztük lévő gyors kommunikációt biztosítani kellett. Fizikai felépítését az ISO11898 as szabvány ismerteti. A buszt felépítését tekintve egy csavart vezetékpár alkotja, amelyet differenciálisan hajtanak meg az eszközök. A csavart érpár biztosítja a külső elektromágneses tér elleni zavarvédelmet, a differenciális jelvezetés pedig a közösmódú zavarok elleni védelmet biztosítja.

12 6. ábra - CAN busz felépítése (forrás: [4]) A busz a végein találhatóak azok az ellenállások, amelyek biztosítják a vezetékre jellemző hullámimpedanciás lezárást a reflexiók minimalizálására. A szabvány szerint a buszokra csatlakozó eszközöket node-oknak nevezik, melyek a buszra láncszerűen csatlakoznak közvetlenül, hozzávezetések nélkül. (Hosszú hozzávezető kábelek reflexiókat okoznának). A CAN busz multimasteres, a busz arbitrálás hardveres úton van megoldva minden CAN üzenet elején. Későbbi fejlesztés során így lehetőség van arra, hogy akár több vezérlőegység legyen egy buszon (pl. ha több fóliasátron keresztül van vezetve a busz, és néhány szenzormodul, illetve IO modul közös). Alapkiépítésben ez nincs kihasználva, mert a vezérlő egyszerre csak egy modullal kommunikál, és a kérés után vár a válaszra. Az összeköttetés maximális hosszát elsősorban az átviteli sebesség határozza meg, a korlátozás oka a kábelen történő jelterjedés véges sebessége. 1 Mbit sebességgel kb. 40 m az áthidalható sebesség, de a sebesség drasztikus csökkentésével több mint 1000 métert át lehet vele hidalni. 7. ábra -CAN keret felépítése (forrás: [5]) Egy CAN adatcsomag felépítése a 7. ábrán látható [5]. A csomag elején található meg a csomag azonosítója, amely segítségével az arbitrálás végrehajtódik. Minél kisebb

13 a cím annál nagyobb a prioritása, mivel a buszon a 0 szint dominál. A cím küldésekor a küldő node figyeli hogy a kiadott jelszintnek megfelelő adatbit található-e a buszon. Abban az esetben ha ez nem stimmel, akkor csomag ütközés jönne létre, emiatt felfüggeszti a csomag küldését, és vár addig amíg fel nem szabadul a busz. Az azonosító után követeznek a vezérlőbitek, illetve a csomag hosszát jelölő DLC bájt. A DLC jelentése az, hogy az utána következő adatbitek közül mennyi jelenti az adatmezőt. Az adatmező után következik a 15 bites ellenőrző összeg, amely segítségével el lehet dönteni a csomagról hogy keletkezett-e valamilyen sérülése. A fentiek alapján arra a következtetésre jutottam, hogy az én célomra a CAN busz lesz az ideálisabb. Fő előnyei a hardveres kommunikációs támogatás, és a nagy átvihető távolság, továbbá mivel manapság ez egyre jobban elterjedő szabvány, ezért a hasznos ismeretekre tudok szert tenni a fejlesztés folyamán A busz fizikai megvalósítása hagyományos CAT5 UTP kábellel fog történni, ennek a hullámimpedanciája megfelelő a CAN busz számára is. Mivel a kábel 8 eres, a fennálló szabad vezetékeken át lehet vinni a modulok számára a 24 V-os tápfeszültség. 3.2 Hőmérsékletmérő Jelen alkalmazásban a levegő hőmérsékletét kell mérni, ezért egy egyszerű hőmérsékletmérő integrált áramkört elegendő használni. Abban az esetben ha talajhőmérsékletet kellene mérni akkor már célszerűbb lenne egy gyárilag erre felkészített szenzort használni, a megfelelő szigetelés miatt szenzor Növényházi alkalmazás céljára általában elegendő a 0,5 C felbontás is, így a kiválasztását leszűkítettem az ilyen pontosságú eszközökre. A levegő hőmérsékletének mérésére megfelelő egy hagyományosan tokozott integrált áramkör. Általában minden nagyobb félvezetőgyárnak létezik saját hőmérsékletmérő integrált áramköre, többféle interfésszel, így érdemes rászánni az időt a megfelelő kiválasztására. Típus Felbontás( C) Pontosság Interfész Tokozás Ár(Ft) max ( C) LM75 0,50000 ±2 I2C SO8 229 ADT7301 0,03125 ±1 SPI SOT23, MSOP8 1066 DS18B20 0,06250 ±0,5 1-Wire TO92, usop8 1500 TMP100 0,06250 ±2 I2C SOT23 990 1. táblázat A célra alkalmas hőmérsékletmérő IC-k (forrás:[6]) A szóba jöhető integrált áramkörök az 1. táblázatban találhatóak. Összehasonlításom alapja a maximális felbontásuk, pontosságuk, a kommunikációs protokoll típusa, tokozás és az áruk volt. A táblázat alapján látható hogy a legpontosabb

14 IC-nek a DS18B20 IC kínálkozik, viszont ez a legdrágább. Ha egy kicsit lejjebb adunk a pontosságból, akkor a következő az ADT7301. Ennek az ára már alacsonyabb, és a pontossága is, de az alkalmazás szempontjából még megfelelő. A DS18B20 egyvezetékes kommunikációt használ, amivel könnyebb megoldani azt, hogy ne a NYÁK-on helyezkedjen el, hanem egy 1-2 méteres vezetéken, viszont a kommunikációs protokoll jóval bonyolultabb az SPI-t használó ADT7301 IC-nél. Megemlítendő, hogy a felbontásuk a kitűzött célt jóval felülteljesítik, de ilyen pontossági osztályban ilyeneket lehet találni. 3.3 Páratartalom érzékelő A páratartalom érzékelőből léteznek ipari szabvány analóg kimenettel ellátott szenzorok, illetve léteznek csak félvezető alapú szenzor IC-k is. Jelen alkalmazásban a digitális kimenettel rendelkező szenzorokat részesítem előnyben, a digitális környezetbe való könnyebb illeszthetőség érdekében. Mivel a pontosságuk függ a hőmérséklettől, ezért kompenzálásként általában tartalmazzák a hőmérsékletérzékelőt is, így akár meg lehetne spórolni a hőmérsékletszenzort a rendszerből, viszont ezek pontossága alacsonyabb a komolyabb, kifejezetten hőmérsékletmérésre gyártott IC-knél. Típus Felbontás % Pontosság % Interfész Tokozás Ár (Ft) HIH6131 0,04 ±4 I2C SO8 5600 SHT11 0,05 ±3 I2C LCC 8600 SHT25 0,04 ±1,8 I2C LCC 9400 2. Táblázat Páratartalom érzékelők (forrás:[6]) Páratartalom érzékelő IC-kből kisebb a kínálat, valamint az áruk is egy nagyságrenddel magasabb tartományban mozog. Pontosság szempontjából a legjobb a Sensirion gyártmányú SHT25-ös IC, és ennek a legmagasabb az ára is. Ilyen komoly pontossági követelmény viszont nem szükséges, így költségkímélés céljából a Honeywell gyártmányú HIH6130-as lesz beépítve. 3.4 Szélerősségmérés Üvegházi alkalmazásnál fontos lehet hogy figyelje a külső időjárást, és megfelelően reagáljon rá. Ilyen esetre jó példa az, hogy vihar esetén a növények és maga az üvegház védelme érdekben az ajtókat, szellőztetőket becsukja, hogy az erős szél ne tegyen bennük kárt.

15 A szélerősség mérésére legegyszerűbb esetben használhatunk kanalas szélerősségmérőket, amiből érkező sebességgel arányos impulzusokat lehet dolgozni. Pontosabb illetve gyorsabb mérésre képesek az ultrahangos szélsebességmérők, de jelenlegi alkalmazás nem követel meg ilyen pontosságot. 4. Hardver 4.1 Mikrovezérlő-család kiválasztása A megfelelő mikrovezérlő kiválasztása egy nagyon fontos lépés a rendszer szempontjából. A kapcsolástechnikát meghatározza a mikrovezérlő családja, illetve előre kell gondolkozni, hogy később a szoftverfejlesztést milyen eszközökkel lehet megoldani. Az első fontos döntési kérdés az volt, hogy 8 bites vagy 32 bites mikrovezérlő kerüljön beépítésre. A 8 bites mikrovezérlők jellemzően maximum 20 MHz-es sebességgel működnek, amely itt a szenzor modulnál bőven elegendő lett volna, viszont általában CAN interfészt nem tartalmaznak, vagy amelyekben megtalálható, azok jellemzően olyan áron beszerezhetőek, mint egy 32 bites mikrovezérlő. Továbbiakban a jövőre gondolva célszerű, ha ugyanaz a fejlesztőkörnyezet van használva és ugyanazt a szoftveres library-t használja a rendszerbe épített összes mikrovezérlő, ami különösen hasznos abban az esetben, ha a később debuggolni kell. A vezérlőmodulba egy LCD kijelző kerül beépítésre, ezért célszerű olyan típust használni, amely tartalmaz valamennyi hardveres gyorsítást, hogy lehetőleg minél gyorsabban lehessen frissíteni a kijelző tartalmát. Ezzel a felhasználói élményt nem rontja el, és készülék egy gyorsan működő rendszer benyomását kelti. Az alkalmazott kijelzővel párhuzamos 16 bites buszon lehet kommunikálni, tehát olyan vezérlő kell amely erre képes. A 32 bites mikrovezérlők közül egyre jobban elterjednek a Cortex-M mag alapú mikrovezérlők, ebből jelenleg a legkönnyebben talán a Cortex-M3 mikrovezérlőkkel lehet megbarátkozni, mert sok dokumentáció fellelhető hozzá. Fejlesztőkörnyezetből létezik hozzá nyílt forráskódú, ingyenesen hozzáférhető, programozó illetve debugger eszközből is hasonló a helyzet. A jelenleg beszerezhető családok közül az NXP, ST, illetve az ATMEL gyártmányúak jöhettek szóba, de ebből kiestek számomra az NXP gyártmányúak mert azokon nincs párhuzamos kimenet, emiatt a kijelző frissítési sebessége nagyon lassú

16 lenne. Végül az ST gyártmányú mikrovezérlők mellett döntöttem, mert ez rendelkezik a fentebb a kijelző meghajtásához alkalmas memória interfésszel [7]. 4.2 Az STM32-es mikrovezérlő Az áramkörökbe az ST Microelectronics által gyártott STM32-es 32bites családba tartozó mikrokontrollereket építettem be. Közös jellemzőjük, hogy mindegyikben az ARM által kifejlesztett Cortex-M3 maggal rendelkeznek. Ez a mag egy viszonylag új fejlesztés, elsősorban a 8bites mikrovezérlők konkurenciájaként lett kifejlesztve. Alacsony tápfeszültségűek és áramfelvételűek, de komolyabb számítási teljesítménnyel rendelkeznek a 8bites változatokhoz képest. Órajelüket tekintve 100 MHz felett változatuk is létezik, az ár és teljesítmény arányuk sokkal kedvezőbb a 8 bites változatokhoz képest. 8. ábra - STM32F1 sorozat blokkvázlata (forrás:[8]) A mikrovezérlő belső felépítése a 8. ábrán látható. Megfigyelhető hogy nagyobb sebességű eszközök egy busz mátrixon keresztül kapcsolódnak egymáshoz és az AHB

17 buszhoz. Ennek a busz mátrixnak az a lényege hogy közvetlenül tudnak egymással kommunikálni a magasabb sebességű eszközök, és nem az AHB buszt használják. Így meg lehet valósítani azt, hogy míg a DMA periféria adatokat másol valamilyen periféria felől a belső SRAM-ba, addig CPU a Flash memóriából hozhatja fel a következő utasításokat. Az alacsonyabb sebességű perifériák az APB1 és APB2 buszokon találhatóak meg. A legtöbb perifériához lehet DMA-t rendelni, így sokat lehet gyorsítani, illetve automatizálni a megoldandó feladatot főleg hogy képes periféria-periféria közötti adatátvitelre is. Így például megoldható egy AD konvertálás eredményét felhasználva közvetlenül kitöltési tényezőt állítani egy Timer PWM modulján. Az egyes perifériák energiatakarékos módját úgy biztosítják a mikrovezérlőben, hogy a meghajtó órajelüket le lehet tiltani. Ilyenkor a beépített CMOS tranzisztorokra jellemzően megszűnik a dinamikus áramfogyasztás, és csak a nagyon alacsony statikus áramfogyasztás marad meg. Mivel alaphelyzetben minden periféria kikapcsolt állapotban van, inicializálásuk előtt be kell kapcsolni a hozzájuk tartozó órajelvezetéket az órajelmodulban. Az órajel ellátást az alábbi ábra szemlélteti 9. ábra - STM32F1 sorozat órajel modul (forrás:[8])

18 A mikrovezérlőben alapvetően 4 db oszcillátor található. Egy 40 khz-es LSI, amely csak a watchdog illetve a belső Real-time clock-ot tudja meghajtani. A real-time clock meghajtására megtalálható az LSE oszcillátor amely az elterjedt pontos külső 32.768 khz-es kvarc kristály meghajtására használható. Maga a processzor járhat a belső 8 MHz-es (HSI) oszcillátorról, vagy külső 4-16 MHz-es kvarc kristályról (HSE). Ezekhez az oszcillátorokhoz lehet rendelni PLL-t is, amellyel a külső kvarc frekvenciáját fel lehet szorozni. A felhasznált STM32F103C6T6 illetve STM32F104VC mikrovezérlők maximum 72 MHz-en működtethetők, de a szenzormodulokban csak 12 MHz-en járnak, a központi vezérlőpanelba épített pedig 48 MHz-en. A PLL által felszorozott órajel hajtja a processzor magot, illetve az AHB buszra tartozó perifériákat. Az APB perifériákra kerülő órajelet akár osztani is lehet, ha szükséges, de az APB1 perifériánál maximum 36 MHz-en működhetnek az eszközök. 5. A modulok részletes bemutatása Mivel a modulok kapcsolási rajza A4-es méretű, ezért ezek a jelen beszámoló függelékében találhatóak meg, itt alább csak a modulokra jellemző lényeges kapcsolási részleteket emelem ki és mutatom be. Az egyes modulok kapcsolása között bizonyos áramköri részletek megegyeznek, ezáltal gyorsabb volt a fejlesztés, és kevesebb fajta alkatrészt kellett beépíteni. 5.1 Vezérlőmodul A vezérlőmodul szolgál a szenzormoduloktól való adat lekérdezésére, illetve ezek alapján az IO modul(ok) vezérlésére. Követelményként tartalmaznia kell ethernet interfészt hogy távolról menedzselhető lehessen, rendelkezzen megfelelő méretű LCD kijelzővel, illetve megfelelő memóriával, ahol a kijelzőre kerülő grafikákat tudja tárolni. A modulba egy STM32F103VCT6 típusú [8] mikrovezérlő került beépítésre.

19 10. ábra - Vezérlőmodul blokkvázlata 5.1.1 Tápegység A tápegységnek kell előállítania a mikrovezérlő, illetve a különféle egyéb perifériák 3.3 V-os tápfeszültségét az egész rendszer 24 V-os feszültségéből. Ismerve azt, hogy a kijelző háttérvilágítása illetve az ethernet vezérlő fogyasztja a legtöbbet összesen (kb. 300 ma) ezért csakis valamilyen kapcsolóüzemű feszültségszabályzó jöhet szóba, hogy kicsi legyen a veszteség. Erre a célra a Microchip MCP16301-es, viszonylag új integrált áramkörét [9] használtam fel. A dokumentációja szerint képes akár 96 %-os hatásfokkal működni, kisméretű SOT23-6 tokozással rendelkezik, magas a kapcsolási frekvenciája, emiatt kisméretű és értékű induktivitást lehet beépíteni. 600 ma áram leadására képes, tehát így az áramkör céljait teljes mértékben kielégíti. 11. ábra - 3.3V-os tápegység A tápegység sorkapcsokon kapja meg a 24V-os tápfeszültséget, védelemként található rajta egy SMJ33A típusú 33 V-os túlfeszültség-levezető, az IC védelme céljából. Az IC hagyományos step-down elven működik, a kimenőfeszültséget az R7 és R8-ból felépített feszültségosztóval lehet beállítani a kívánt tápfeszültségre, amely itt a

20 jelen esetben 3.3 V. Érdekességképpen a kapcsoláson szereplő D2 és C6 által alkotott kapcsolás szolgáltatja a beépített N-csatornás kapcsolótranzisztor számára a Gate feszültséget. 5.1.2 SD kártya A kijelzőn használandó grafikák tárolására szükség van valamilyen nagyobb kapacitású memóriára. Ez lehet valamilyen Flash alapú memória IC, vagy lehet használni SD kártyát. Manapság az SD kártyák ára nagyon alacsony, illetve könnyű őket kezelni, valamint cserélhető, ezért ezt terveztem bele. 12. ábra - SD kárya illesztése Az SD kártyákat lehet az egyszerű SPI interfészen keresztül kezelni, illetve létezik egy gyorsabb, 4bites párhuzamos kommunikációs módja is, de annak nincsen hozzáférhető dokumentációja, így a jelenlegi alkalmazásban SPI módos kezelés szerint van bekötve. A mikrovezérlőhöz a MISO, MOSI, SCK jeleken csatlakozik, illetve még az M_CS kiválasztó jellel. Ezen a buszon található meg az ethernet vezérlő is így ezen osztozkodva egyszerre csak az egyik eszközzel lehet kommunikálni. 5.1.3 Ethernet-illesztő A specifikáció szerint az áramkörnek rendelkeznie kell ethernet interfésszel, a távoli számítógépes kapcsolat biztosítására. A mikrovezérlő kiválasztásánál az egyik nagy dilemma volt a beépített ethernet vezérlő, vagy a kijelzőhöz való memória interfész, mivel ebben a családban nem volt olyan típus, amelyik mindegyiket támogatta volna. Végül az a típus lett felhasználva, amelyikben nincs ethernet interfész, így ezt egy külső megoldással kellett megvalósítani. Ennek összesen annyi hátránya van, hogy valamennyivel lassabb mintha beépített vezérlő lenne. Választásom a Microchip

21 ENC28J60-as típusára esett [10]. Ezt elterjedten használják beágyazott rendszerekben, így kellő támogatás is rendelkezésre állt a szoftver fejlesztéséhez. 13. ábra - Ethernet illesztő Az ethernet vezérlő SPI buszon kommunikál a mikrovezérlővel, ugyanarra a buszra van kötve mint az SD kártya, továbbá rendelkezik egy interrupt kimenettel a mikrovezérlő felé, amelyet elsősorban a beérkező ethernet csomag jelzésére használ. Az IC-hez szükséges még csatlakoztatni az ethernet kábel meghajtásához szükséges illesztő transzformátort, ebből létezik RJ45-ös csatlakozóba épített változat, így ilyen lett beépítve, helytakarékossági célból. 5.1.4 Kijelző illesztés A kijelzőben található egy SSD1289-es vezérlő IC [11], aminek köszönhetően a kijelző saját memóriával rendelkezik, elegendő csak akkor képet feltölteni a kijelzőre, amikor valami változás történt, nem kell egyfolytában frissíteni. A kijelzővezérlő párhuzamos 16 bites buszon kommunikál a mikrovezérlővel. A mikrovezérlő rendelkezik párhuzamos kimenettel is, ezért akár közvetlenül is meg lehetne oldani a vezérlést, de ennél sokkal kifinomultabb, ha a beépített FSMC 1 modulon [12] keresztül kommunikálunk a kijelzővel. Ennek köszönhetően a kijelző egy bizonyos memóriacímen lesz elérhető, így DMA műveletekkel gyorsan és automatikusan lehet frissíteni a képernyő tartalmát. 1 Flexible Static Memory Controller

22 A vezérlőmodul kezelését alapértelmezetten a kijelzőbe beépített érintőképernyővel lehet végezni. Lényegét tekintve két elektromosan vezető műanyag rétegből áll, amelyek alaphelyzetben egymástó elszigetelve vannak egymástól. Érintés esetén ezek egy ponton érintkeznek, így egy-egy ellenállásosztó alakul ki. 14. ábra - Rezisztív érintőképernyő illesztése Ha erre a két-két ellenállásosztóra feszültséget kapcsolunk, és a másikból olvasunk, majd megfordítva ugyanezt végigcsináljuk, akkor megkapunk két feszültséget, amelyek az X és az Y koordinátával arányos. Ezt a műveletet a mikrovezérlő GPIO kimeneteivel, illetve AD konverterével meg lehet oldani, de maga a kijelzőmodul tartalmaz egy ADS7843 típusú [13] érintőkijelző vezérlő IC-t. Ez önmagában elvégzi a mérést, így csak az ADC értékeket kell kiolvasni. Rendelkezik egy TP_IRQ kimenettel, amely abban az esetben aktív, ha éppen meg van érintve a kijelző, ezt így megszakítással le lehet kezelni, és a megfelelő koordinátákat ismerve műveleteket lehet végezni a grafikus felületen 5.1.5 CAN busz illesztés A CAN buszhoz való vezérlőt beépítve tartalmazza a mikrovezérlő, így csak a buszmeghajtót, a fizikai réteget kell hozzátervezni. Ilyen meghajtó a Texas Instruments SN65HVD230-as integrált áramköre [14], amely biztosítja a megfelelő teljesítményt a busz meghajtásához, illetve a sebessége is elegendő jelen alkalmazáshoz.

23 15. ábra - CAN busz meghajtó Az IC mikrovezérlővel a TXD és az RXD lábon csatlakozik. Küldés során, ha a TXD alacsony szinten van, akkor a kimeneten a CANH és CANL vezeték domináns 2 állapotban van, magas TXD szint esetén recesszív állapotban. Az RXD láb ehhez megfelelően, akkor van magas szinten, ha recesszív szint van a CAN buszon. Az IC képes 3.3 V-os tápfeszültségről működni, kialakítását és feszültségszintjeinek határát tekintve az 5 V-os tápfeszültségről működő CAN buszokkal is kompatibilis. Bár a meghajtó IC a dokumentáció szerint rendelkezik busz felőli túlfeszültségvédelemmel, a biztonság kedvéért beépítésre került egy NXP gyártmányú PESD1CAN típusú, kifejezetten CAN buszra kifejlesztett túlfeszültség levezető dióda. A kapcsoláson található R11 és R12 ellenállás valósítja meg a hullámimpedanciás lezárását a kábel felé. Az értéküket a kábel hullámimpedanciája határozza meg, de célszerű a végleges beszerelés után ellenőrizni a jelalakokat a buszon, szükség esetén korrigálni rajta. Nem minden modulba kell beépíteni a lezáró ellenállásokat, csak a busz két végén lévő eszközbe. 2 Domináns állapot: a CANH láb magas szinten van, a CANL lába alacsonyan, a recesszív állapot esetén magas impedanciás állapotban vannak a kimenetek. Ilyenkor a buszon a CANH és CANL lábak ugyanazon a feszültégen vannak, jellemzően VDD/2

24 16. ábra - A megvalósított vezérlőmodul, kijelző nélkül A modul egy 104x65 mm méretű NYHL lemezre fért rá. A méretét elsősorban a beépített kijelző modul méretei határozták meg. A kijelző távtartókkal van rögzítve a vezérlőmodulhoz, és hosszú tüskesorral csatlakozik az alatta lévő áramkörhöz. A távtartó hossza akkora hogy a kijelző alá befér az Ethernet csatlakozó. A modul sorkapcsokon keresztül kapja meg a tápfeszültséget, illetve a CAN busz felé is ezen keresztül csatlakozik. 5.2 Szenzormodul A szenzormodulok kisméretű áramkörök, feladatuk jellemzően a különböző interfésszel rendelkező szenzorok illesztése a CAN buszra, így egységes felületet biztosítva a vezérlőmodul számára, ezáltal a vezérlőmodulnak sokkal egyszerűbb lekérdezni a szenzorok által mért adatokat.

25 17. ábra - A szenzormodul blokkvázlata A szenzormodulba egy STM32F103C6 típusú [15] mikrovezérlő van beépítve, ez rendelkezik 32 kbyte FLASH memóriával 8 kbyte RAM-mal, CAN, SPI, I2C interfésszel, illetve AD konverterrel, így a célnak tökéletesen megfelel, könnyen beszerezhető és olcsó mikrovezérlő. A modult tápfeszültséggel a fentebb megismert MCP16301-el felépített tápegység látja el. Ide szintén szükséges volt a kapcsolóüzemű tápegység, a hatásfok biztosítása és a hőtermelés minimalizálása miatt. A szenzormodul szintén az SN65HVD230-as CAN illesztővel tart kapcsolatot a busszal, és itt is megtalálható a túlfeszültség védelem. 18. ábra A modul csatlakozó kiosztása a 18. ábrán látható, rendelkezik I 2 C és SPI lábakkal, illetve mindegyik láb használható analóg bemenetnek, így csak a szükséges kisméretű NYÁK lemezt kell elkészíteni és hozzácsatlakoztatni. A szenzormodul a szenzoroktól való adatgyűjtésen kívül másra is alkalmas. Ilyen alkalmazás lehet például LED-ek meghajtása, vagy nyomógombok olvasása, illetve egyszerűbb kijelző vezérlése

26 is. A jelenlegi fóliasátorban is mutatnia kell majd aktuális hőmérsékletet, ellenőrzés céljából.

27 21. ábra - A szenzormodulhoz csatlakoztatva További kiegészítő a távirányító modulnak nevezett áramkör, amely a szenzormodulhoz csatlakozik. Ennek a feladata a rajta lévő energiatakarékos LCD-vel a növényházban a hőmérséklet kijelzése, továbbá a kezelőgombok segítségével az ajtók állásának a manipulálása. A segítségével lehet üzemközben az ajtókat kinyitni vagy becsukni például karbantartás céljából. úgy hogy ne kelljen a vezérlőmodulon állítgatni. 22. ábra - Távirányító panel Az utolsó kiegészítő modul, a szélerősségmérőhöz tartozó illesztő áramkör. A szélerősséget egy egyszerű kínai forrásból származó kézi szélsebességmérő átalakításával készítettem.

28 23. ábra - Szélerősségmérő illesztése a szenzormodulhoz A működési elve azon alapszik, hogy található benne egy propeller, amelynek a forgó részén elhelyeztek egy apró mágnest, és a készülékházban pedig egy érzékelő tekercset. Ebből az eszközből csak a műanyag ház van felhasználva, és külső elektronika végzi a feldolgozást. Forgás során feszültség indukálódik a tekercsben, és ennek a frekvenciáját méri az eszköz. 24. ábra - Szélerősségmérő illesztő kapcsolási rajza Ugyanezt az elvet felhasználva, egy kis áramfelvételű rail-to-rail műveleti erősítővel a tekercsen keletkező feszültséget felerősítem kb. 100x erősítéssel, majd a műveleti erősítő kimenetét kapacitív csatolással egy Schmitt trigger inverter bemenetére kötöm, amelynek a bemenetét fél tápfeszültségre húztam ellenállásosztóval, ennek eredményeképp négyszögesíti a műveleti erősítő jelét. Ezt felhasználva a szenzormodul

29 csatlakozóján a mikrovezérlő megkapja interrupt jelként, amelyet frekvencia méréssel vissza tud alakítani szélsebesség értékké. 5.4 IO modul Az IO modul szerepe a rendszerben a különféle végrehajtóegységek vezérlése, illetve néhány általános IO kimenetet biztosítani a külvilág irányába. Így későbbi fejlesztések esetén fel lehet ezeket használni, mielőtt új modult kellene tervezni. A modulból egy rendszerbe több is beépíthető, abban az esetben, ha a növényház felépítése megköveteli. 25. ábra - Az IO modul blokkvázlata Felépítését tekintve a mikrovezérlő ugyanaz, mint a szenzormodulban, mivel itt sincs túl nagy követelmény a beépített perifériákkal szemben, itt is tartalmaznia kell a CAN modult, illetve mivel szükséges mérnie a 24 V-os tápfeszültséget, ezért rendelkeznie kell AD konverterrel. 5.4.1 Kimeneti fokozat A fóliasátor ajtóit 24 V-os DC motorral rendelkező lineáris egységek mozgatják. A mozgás irányát a motorokra adott feszültség polaritásával lehet megváltoztatni, a lineáris egység mozgási tartományait végállás-kapcsolók érzékelik, amelyek megszakítják a motor áramellátását végálláshoz érés esetén.

30 26. ábra - Relés motor vezérlés Az irányváltást a jelenlegi felépítésben nagyáramú relék végzik, mivel ezek az eddigi évek során bizonyították alkalmasságukat, ezért ezek továbbra is beépítve maradnak. Az áramkörnek ezek meghajtását kell megoldania. A relék az autóelektronikában használatos szabványos váltó relék, 12 V-os meghúzó tekerccsel rendelkeznek, és maximum 200 ma-t vesznek fel, és 30 A-t képesek kapcsolni. 27. ábra - Kimeneti fokozat Mivel biztosítani kell azt, hogy a jelenlegi felépítéssel kompatibilis legyen az új áramkör, ezért a reléket felülről kell meghajtani, tehát +12 V-ot kell szolgáltatni a kimeneten a relék kapcsolásához. Ezt áramköri szempontból P csatornás FET-ekkel lehet a legkönnyebben megvalósítani. A kapcsolás szerint a mikrovezérlő az SW vezetéken keresztül hajtja az N csatornás FET-et, aminek hatására, ha H szintet kap, akkor a P csatornás FET Gate-jét lehúzza a földre, így az vezetni kezd és megjelenik a kimeneten a 12 V. Az alkalmazott FET IRFR5505 típusú, amely képes leadni 18 A-t így a feladat szempontjából többszörösen túl van biztosítva, de cserébe olcsón beszerezhető típus. A kimenet üvegcsöves biztosítóval túláram ellen védve van, illetve a kimeneten még található egy védődióda, amely a relé kikapcsolásakor keletkező feszültséglökés ellen véd a megfelelő polaritással.

31 5.4.2 A modul tápegysége Mivel az egész rendszer 24 V feszültségről működik és a relék 12 V működtető feszültségűek, biztosítani kell működtető feszültséget a megfelelő terhelhetőséggel, ezért kapcsolóüzemű tápegységet építettem az áramkörbe. A tápegység egy LM2576-12 típusú IC-vel [17] van felépítve, ez akár 3 A-rel is terhelhető, ha a megfelelő terhelhetőségű induktivitás van mellé építve. A jelenlegi alkalmazásban maximum 1Aes terhelés alatt kell teljesítenie, ezért ide tökéletesen megfelel. 28. ábra - 12V-os tápegység A 3.3 V-os tápfeszültség egy egyszerű lineáris feszültség stabilizátorral van előállítva abból az okból kifolyólag, hogy a mikrovezérlőn kívül csak a CAN transceiver található a 3.3 V-os ágon. Az összes fogyasztás az adatlapok alapján kb. 15mA környékén alakul, így bőven elegendő hőtermelés és áramfelvétel szempontjából egy 100mA-es stabilizátor, a választásom az egyszerű 78L33-ra eset 29. ábra - Megvalósított IO modul

32 Befoglaló méretei 68x80mm, a modul szélén találhatóak meg a sorkapcsos csatlakozókon tápfeszültség bemenetek, illetve a vezérelt kimenetek, a tüskesorok közül az egyik a működtető program feltöltésére szolgáló JTAG csatlakozó, illetve a bővítő csatlakozó. A tápfeszültség ág és a kimenetek túláram védelmét 5x20mm-es biztosítók végzik. A panel sarkain furathelyek találhatóak a későbbi dobozolás megkönnyítése érdekében. 5.5 Tápegység és akkutöltő A tápegység modul célja az egész rendszer tápfeszültségének előállítása. Biztosítania kell a központi vezérlő, a szenzorok, továbbá az IO modul tápfeszültségét. Biztonsági szempontok szerint hálózati feszültség megszűnése esetére is szolgáltatnia kell a tápfeszültséget az ajtók bezárására (például egy komolyabb vihar esetére, amikor áramszünet lép fel), így a szükséges hogy akkumulátorok legyenek beépítve a rendszerbe. Továbbá akkumulátorok alkalmazásával kisebb teljesítményű tápegység beépítése elegendő, mert az ajtók mozgatásához szükséges magasabb áramerősséget ilyenkor az akkumulátorok biztosítják erre az időre. 30. ábra - Tápegység és akkutöltő A jelenlegi megoldásban kettő autóakkumulátor soros kapcsolásával van biztosítva a 24 V feszültség a rendszer számára. Az akkumulátorok töltését egy egyszerű akkumulátortöltő végzi amelynek a felügyeletét az IO modul biztosítja. 6. Megvalósítás 6.1 A nyomtatott áramköri lapok megtervezése A kapcsolási rajzok letisztázása után lehetett nekiállni a NYÁK lapok megtervezésének, a fő szempont az volt, hogy csak a szükséges legkisebb méretűek, és könnyen szerelhetőek legyenek az elkészült áramkörök. A felhasznált tervező szoftver az elterjedten használt Altium Designer 10-es verziója volt.

33 Az alkatrészekből amit csak lehetett, SMD kivitelben terveztem a modulokra, passzív alkatrészek a szenzor és az IO modulon 1206-os méretűek, a vezérlő modulon a nagyobb alkatrészsűrűség miatt 0805-ös méretűek, így kényelmesen elférnek. A huzalozás és a furatátmérőket úgy választottam meg, hogy ne számoljanak fel rajzolatfinomsági felárat az áramkör legyártása során. A legvékonyabb vezetősáv szélesség 10 mil és a legkisebb furatátmérő 0.6 mm. Az egyes moduloknál a kapcsolóüzemű tápegységeknél ügyeltem az alkatrészek elhelyezésénél és a vezetősávok rajzolásánál az ide vonatkozó irányelvekre. Az alkatrészeket úgy helyeztem el, hogy a magasabb alkatrészek a felső rétegre kerüljenek, így később a dobozolás egyszerűsödik. Az áramkörök tervezése során hasznosnak bizonyult a NYÁK tervező 3D megjelenítési képessége, így képet lehetett kapni arról, hogy minden alkatrész megfelelően elfér-e. 31. ábra - Az IO modul 3D terve 6.2 Modulok élesztése Az áramkörök összeforrasztása és szemrevételezés után áramkorláttal ellátott tápegységgel ráadtam a tápfeszültséget, és közben mértem a felvett áramerősséget. Normál esetben mindegyik modulnak 50 ma alatti áramot kell felvenniük, el nem indított szoftverrel.

34 Az áramerősség megmérése után ellenőriztem a 3.3 V-os tápfeszültség meglétét és helyességét, majd, ezek után a mikrovezérlőhöz tartozó programozó hardver csatlakoztatása után ellenőriztem hogy él-e a mikrovezérlő. Mivel a működtető szoftver a hardverek elkészülésekor még nem állt rendelkezésre, emiatt a különféle perifériákat lépésről-lépésre lehetett csak tesztelni a szoftver írásával párhuzamosan. A szoftver fejlesztésének előrehaladásával sikerült megállapítanom, hogy minden beépített periféria és hardveres funkció a terveknek megfelelően működőképes. 7. Szoftver 7.1 Fejlesztőkörnyezet A felhasznált mikrovezérlő szoftverének a fejlesztéséhez szükséges a megfelelő fejlesztőkörnyezet kiválasztása, feltelepítése. Az STM32-höz léteznek fizetős, gyári szoftvercsomagok, csak ezek próba verzióban érhetőek el szabadon letöltésre, így általában néhány fontos funkciójuk nem érhető el, illetve csak erőteljes méretbeli korlátozással hajlandóak fordítani. Ezen okokból maradtam ingyenesen használható megoldásnál. A Cortex-M3-mas mikrovezérlőkhöz többféle ARM-ra portolt GCC fordító található. Az én választásom az általánosan elterjedt, a Mentor Graphics által gondozott Codesourcery G++ Lite verziójára esett [18]. A fejlesztés elején, így a szenzormodulokat működtető szoftvert ebben írtam meg, és ebben lett elkezdve a vezérlőmodul is. Később találkoztam a Coocox IDE nevezetű fejlesztőkörnyezettel [19], és próbaképpen átportoltam a projectet. Használata során kiderült hogy bár néha vannak benne még kiforratlan funkciók, alapjában véve nagyon jól használható és kényelmes fejlesztőkörnyezet. A legnagyobb előnyét akkor láttam meg, amikor bármilyen különféle speciális beállítás nélkül sikerült a Debug üzemmódot használni. A mikrovezérlőre írt szoftvert C nyelven írtam meg, a fejlesztés során próbáltam minél modulárisabb módon szervezni, hogy később könnyen lehessen módosítani, illetve az általam megírt kódot később máshol is fel tudjam használni. Amiből már létezett előre megírt függvény könyvtár, azt próbáltam felhasználni, hogy gyorsabban lehessen haladni a fejlesztéssel. A fájlkezelésnél illetve az ethernet vezérlőnél használtam fel előre megírt könyvtárat. A grafikus kijelzőhöz egy nagyrészt saját magam által írt könyvtárat használok. Az egyes szoftvermodulokat alább foglalom össze, komponensenként bemutatva. Az egyes szoftvermodulokat alább foglalom össze, komponensenként bemutatva.

35 7.2 Programozó hardver Fejlesztés során a futtatható kód feltöltésére több lehetőség kínálkozik ezeknél a mikrovezérlőknél. Az egyik lehetőség a beépített bootloader segítségével UART-on vagy CAN buszon felmásolni, de ilyenkor nagyon korlátozottak a debuggolási lehetőségek. A fejlesztési célokra ilyenkor a célszerű eljárás JTAG-et használni, vagy újabban SWD 3 portot. A fejlesztés során eleinte az OpenOCD szoftver csomaggal használtam egy FT2232-es IC-vel épített USB-s JTAG programozót, de később mikor áttértem a Coocox fejlesztőkörnyezetre, akkor ott már egy olcsó STM32F0Discovery fejlesztőpanelt használtam [20], amellyel lehetőség van külső áramkört programozni. Szerencsére az STM32-es mikrovezérlőknél a JTAG lábakra kivezetve megtalálható az SWD programozáshoz használható kivezetések, így csak egy átalakító szalagkábelt kellett készítenem a használatához. 32. ábra STM32F0 Discovery board (forrás: [21]) 7.3 Operációs rendszer Komolyabb beágyazott rendszerek esetén célszerű használni valamilyen beágyazott operációs rendszert a különféle feladatok ütemezésére, segítségével nagyon leegyszerűsödik a rendszer feladatok szervezése. Jelen esetben a választásom az ingyenesen hozzáférhető FreeRTOS operációs rendszerre esett. Az egész rendszerben csak a vezérlőmodulon található operációs rendszer, a szenzormodulokon az egyszerűségük miatt felesleges lenne operációs rendszert használni. Az operációs rendszert jellemzi a moduláris felépítés és a testreszabhatóság, sok mikrovezérlőre készült már el a portolt változata [22]. Jelen esetben STM32-es processzorra már készen 3 Serial wire debug

36 megtalálható volt a működőképest változata. Az elindításához szükséges hogy néhány interrupt vektort átirányítsunk az operációs rendszer számára, majd a megfelelő fordítási paraméterek beállítása után meg kellet írni az egyes taszkokat, és elindítani a feladatütemezőt. A működést alapvetően a következő négy taszk végzi. 7.3.1 Control_Task Feladata a vezérlőmodul fő funkcióinak a működtetése. Ez végzi a többi modul vezérlését a szenzoroktól kapott adatok és a beállított értékek szerint. Működése során ellenőrzi először hogy az érintőképernyő megvan-e nyomva, ha igen, akkor elindítja a menürendszer kezelő függvényt. Továbbiakban, a CAN buszon beérkezett adatoknak megfelelően vezérli az IO modult. Ez a taszk felel grafikus felület működtetetéséért. 7.3.2 Communication task Ez a taszk felel az adatok küldéséért és fogadásáért a CAN buszon. Mivel az egyes modulok úgy működnek, hogy különféle lekérdezésekre válaszolnak csak, maguktól adatokat nem küldenek, ezért ennek a taszknak a feladata az, hogy periodikusan lekérdezgesse a modulokat. További feladata kimenő adat esetén, hogy megfelelő írás parancs kiküldése a szenzor számára az adatokkal. Ennek akkor van szerepe például, amikor az IO modulnak küldi ki az ajtók nyitását vagy zárását, illetve az akkumulátor töltés engedélyezést. 7.3.3 uip_task Ez a taszk felel az ethernet csomagok kiolvasásáért az ethernet vezérlőből. Ha volt beérkező csomag, akkor eldönti hogy IP vagy ARP csomag jött, majd ezeket feldolgozza. Abban az esetben ha keletkezett válasz akkor az ethernet vezérlőnek továbbadja a csomagot, amely elküldi a hálózat felé. 7.3.4 uip_periodic_task A taszk feladata nyitott TCP kapcsolatok esetén ARP csomagok küldése a hálózatra 500ms ismétlődéssel (TCP keep-alive), illetve 10 másodpercenként az ARP tábla frissítése. 7.4 Fájlkezelés A kijelzőn megjelenített grafikák tárolása a beépített SD kártyán történik, mivel mikrovezérlős környezetben ilyen memória típuson lehet legegyszerűbben nagyobb adatmennyiséget tárolni.

37 A kártyán az elterjedt FAT32-es fájlrendszer található, mivel mikrovezérlővel ez egy viszonylag kis erőforrás igénnyel kezelhető megoldás, és megvan az előnye, hogy fájlokat lehessen kívülről számítógépről rámásolni, ha nincs arra szükség hogy mikrovezérlő írjon a kártyára. A fájlrendszer kezelését a mikrovezérlős körökben a jól elterjedt és bevált FatFS könyvtár végzi [23]. A driver C nyelven íródott, réteges szervezésű. Az adott rendszerhez való portolásához elegendő csak az alacsonyszintű függvényeket a hozzáigazítani az alkalmazáshoz, ebből adódólag gyakorlatilag tetszőleges háttértár típuson működőképes. Konfigurációs lehetőséget biztosít arra, hogy ha kevesebb erőforrással rendelkező mikrovezérlőn alkalmazzák, akkor a nem használt funkciókat, függvényeket ki lehet kapcsolni, ezáltal memóriát lehet spórolni. A réteges felépítését az alábbi ábra szemlélteti 33. ábra - A FatFS réteges szerkezete (forrás: [23]) Az alsó szinten találhatóak meg az alacsonyszintű driverek, jelen alkalmazásban itt szükséges hozzáigazítani a mikrovezérlő SPI busz kezelő függvényeihez, mivel az SD kártya ezen a buszon található meg. Ez az alacsonyszintű működtetés az alábbi öt alapvető függvényre épül disk_initialize() Háttértár inicializálása disk_status() Háttértár státusz lekérdezése disk_read() Egy blokk olvasása disk_write() Egy blokk írása disk_ioctl() Vezérlő parancsok küldése Ezek a függvények biztosítják az alapvető interfészt a felsőbb szintű funkcióknak, illetve ezek határozzák meg hogy milyen hardvert is kezel a library. Szerencsére STM32-re létezett már előre portolt változat, így elegendő volt a mikrovezérlő kivezetéseit definiáló sorokat hozzáigazítani a jelen áramkörhöz. A driver

38 felasználja a DMA-s átvitelt az SD kártyáról a memóriába történő olvasás során, így használatával nagy sebesség növekedést lehetett észlelni. Az alapszintű driver beállítása után történhet maga a könyvtár használata. A meghajtó inicializálásához elegendő meghívni a disk_initialize(), a fájlrendszer inicializálásához a f_mount() függvényeket. A gyökérkönyvtár megnyitásához lehet használni a f_opendir() függvényt. Mindegyik függvény rendelkezik hibakezeléssel visszatérési értékként, így hiba esetén a megfelelő képet lehet kapni a hibáról és segítséget nyújt az elhárításában. Ezek után tetszőlegesen lehet fájlműveleteket végezni a meghajtón. 7.5 Ethernet kezelés A vezérlőrendszer távoli menedzsmentjét legegyszerűbben ethernet alapú megoldással volt célszerű megoldani. Manapság már nem olyan bonyolult ez a feladat, mivel a sokféle megoldás közül lehet választani. 7.5.1 uip TCP/IP stack Az áramkörbe épített ENC28J60-as ethernet vezérlő meghajtását végzi az uip TCP/IP stack [24]. Ez a stack az Adam Dunkels által kifejleszett LWIP 4 egyszerűsített változata. Sokkal kevesebb RAM memóriát használ fel a működéséhez, cserébe viszont a csomagok összeállítása sokkal bonyolultabban történik, és sok funkció csak korlátozottan működik. A stack működtetéséhez elegendő biztosítani az ethernet vezérlőhöz tartozó csomag küldő és fogadó függvényt. Bejövő adatcsomag esetén ellenőrzi a csomag típusát és annak megfelelően dolgozza fel. Lényegében bejövő csomag esetén meg kell hívni a stack magasabb szintű feldolgozó függvényét. Ennek futása során egyre alacsonyabb szinten feldolgozza, és biztos hogy véges idő múlva visszatért. Visszatérés után az egyetlen feladat azt ellenőrizni, hogy keletkezett-e valamilyen elküldendő ethernetes csomag az adat bufferban, nem nulla adathossz esetén meg kell hívni az ethernet vezérlő csomag küldő függvényét. A jelenlegi alkalmazásban külön operációs rendszer taszk-ként fut az TCP/IP stack. A stack elindításához csak az Ethernet vezérlő alapszintű felkonfigurálása szükséges, ezt minta kód segítségével a C nyelv adottságaiból kifolyólag viszonylag könnyen meg lehetett tenni. Ebben a fázisban van megadva az ethernet illesztőnek a MAC címe, illetve a szükséges IP konfiguráció, mely jelen alkalmazásban statikus IP címet használ, de a stack képes lenne DHCP segítségével saját IP címet kérni is. 4 Lightweight IP