VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Počítačové systémy
Te s t o v a c í ro z h r a n í p ro v e r i f i k a c i ř í d i c í c h jednotek systému vstřikování Common rail bakalářská práce
Autor: Radek Váňa Vedoucí práce: Ing. Ladislav Vítek Jihlava 2015
Abstrakt Cílem bakalářské práce je navrhnout testovací jednotku pro řídicí jednotky systému Common rail. Testovací jednotka, která je ovládaná z PC přes rozhraní USB, testuje všechny vstupy a výstupy řídicí jednotky. Tato bakalářská práce popisuje návrh elektrického schématu, desky plošných spojů a firmwaru testovací jednotky.
Klíčová slova Common rail, firmware, MCU, DPS, ECU, ULN2503A
Abstract The aim of the submitted thesis is to design a test unit for the control units of Common rail system. The designed test unit will test all inputs and outputs of the control unit. The test unit will be controlled with a PC via USB. This thesis describes the design of electrical diagram, PCB and firmware for the test unit.
Key words Common rail, firmware, MCU, PCB, ECU, ULN2503A
Prohlášení Prohlašuji, že předložená bakalářská práce je původní a zpracoval jsem ji samostatně. Prohlašuji, že citace použitých pramenů je úplná, že jsem v práci neporušil autorská práva (ve smyslu zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů, v platném znění, dále též „AZ“). Souhlasím s umístěním bakalářské práce v knihovně VŠPJ a s jejím užitím k výuce nebo k vlastní vnitřní potřebě VŠPJ. Byl jsem seznámen s tím, že na mou bakalářskou práci se plně vztahuje AZ, zejména § 60 (školní dílo). Beru na vědomí, že VŠPJ má právo na uzavření licenční smlouvy o užití mé bakalářské práce a prohlašuji, že s o u h l a s í m s případným užitím mé bakalářské práce (prodej, zapůjčení apod.). Jsem si vědom toho, že užít své bakalářské práce či poskytnout licenci k jejímu využití mohu jen se souhlasem VŠPJ, která má právo ode mne požadovat přiměřený příspěvek na úhradu nákladů, vynaložených vysokou školou na vytvoření díla (až do jejich skutečné výše), z výdělku dosaženého v souvislosti s užitím díla či poskytnutí licence. V Jihlavě dne
............................................... Podpis
Poděkování Na tomto místě bych rád poděkoval svému vedoucímu práce Ing. Ladislavu Vítkovi za poskytnutí tématu a možnost vytvářet ho pod jeho vedením.
Obsah 1
Úvod.......................................................................................................................... 8
2
Cíle práce ................................................................................................................ 10
3
2.1
Popis řešeného problému ................................................................................. 10
2.2
Vymezení cílů .................................................................................................. 10
2.3
Popis struktury bakalářské práce ve vztahu k vytyčeným cílům ..................... 11
2.3.1
Návrh elektrického schématu.................................................................... 11
2.3.2
Návrh desky plošných spojů ..................................................................... 12
2.3.3
Firmware ................................................................................................... 12
Návrh elektrického schématu.................................................................................. 13 3.1
Mikrokontrolér UPD70F3377A z řady V850 od firmy RENESAS................. 13
3.2
Návrh USB rozhraní přes FTDI ....................................................................... 15
3.3
Výběr a zapojení konektorů ............................................................................. 15
3.3.1
Konektor pro komunikaci s PC ................................................................. 15
3.3.2
Konektor pro připojení testované řídicí jednotky ..................................... 16
3.3.3
Konektor pro připojení pomocných zařízení ............................................ 16
3.4
Návrh napájecích obvodů ................................................................................. 18
3.5
Návrh digitálních výstupů ................................................................................ 19
3.6
Návrh analogových výstupů............................................................................. 21
3.7
Návrh digitálních vstupů .................................................................................. 22
3.7.1
Návrh digitálních vstupů DI_01–DI_04 ................................................... 23
3.7.2
Zatížení vstupů DI_01–DI_04 .................................................................. 24
3.7.3
Návrh vstupů pro PWM signály ............................................................... 25
3.7.4
Zatížení vstupů pro PWM signály ............................................................ 26
3.8
Návrh obvodů pro měření analogových signálů .............................................. 28
3.8.1
Návrh obvodů pro měření napětí .............................................................. 28
3.8.2 4
5
Návrh desky plošných spojů ................................................................................... 31 4.1
Přiřazení pouzder jednotlivým součástkám ..................................................... 31
4.2
Rozmístění součástek a routování .................................................................... 32
4.3
Rozlití mědi a umístění prokovů ...................................................................... 32
Firmware ................................................................................................................. 34 5.1
Generování kódu pomocí Applilet2 ................................................................. 34
5.1.1
Tvorba nového projektu v Applilet2 ......................................................... 34
5.1.2
Nastavení "System" .................................................................................. 34
5.1.3
Nastavení "Port"........................................................................................ 36
5.1.4
Nastavení "Interrupt Controller" (INT) .................................................... 40
5.1.5
Nastavení "Serial" ..................................................................................... 43
5.1.6
Nastavení "A/D Converter" ...................................................................... 45
5.1.7
Nastavení "Timer" .................................................................................... 46
5.2
6
Návrh obvodů pro měření proudů vstřikovači .......................................... 30
Použité algoritmy ............................................................................................. 49
5.2.1
Komunikace s PC...................................................................................... 50
5.2.2
Generování signálů EPS a ESS ................................................................. 51
5.2.3
Generování analogových signálů .............................................................. 52
5.2.4
Analogové vstupy mikrokontroléru .......................................................... 53
5.2.5
Měření PWM signálů ................................................................................ 54
Závěr ....................................................................................................................... 56
Seznam použité literatury ............................................................................................... 58 Seznam obrázků .............................................................................................................. 60 Seznam použitých zkratek .............................................................................................. 62 Přílohy – obsah přiloženého CD ..................................................................................... 64
1 Úvod Výběr tématu své bakalářské práce jsem konzultoval se svým nadřízeným ve společnosti Motorpal, a.s. Ing. Vítkem a na základě toho jsme se domluvili, že v rámci své bakalářské práce vytvořím testovací rozhraní pro verifikaci řídicích jednotek vznětových motorů se systémem vstřikování Common rail v sériové produkci. S návrhem podobného zařízení mám již zkušenosti, navrhoval jsem totiž testovací zařízení pro mnohem jednodušší řídící jednotku řadového mechanického čerpadla s elektronickým regulátorem. Mým úkolem bude navrhnout elektrické schéma, plošný spoj a naprogramovat firmware pro zařízení, které bude ovládané z PC pomocí domluveného protokolu, a které bude testovat všechny vstupy a výstupy řídících jednotek Motorpal CR ECU verze 4.X a jejich budoucích kompatibilních verzí. Plošný spoj navrhnu v programu KiCad, což je software, který je pod open-source GNU GPL v2 licencí, tedy zdarma i pro komerční použití. Při návrhu testovací jednotky použiji verzi KiCadu "(2013-07-07 BZR 4022)-stable". Na oddělení elektroniky ve společnosti Motorpal, a.s. používáme pro návrh plošných spojů téměř výhradně tento software, to znamená, že máme vytvořeno mnoho knihoven i k nestandardním součástkám, z nichž mnohé použiji v této bakalářské práci. Z toho důvodu se moje bakalářská práce nebude zaobírat návrhem pouzder těchto součástek, protože jsou již součástí výše zmíněných knihoven. Srdcem testovací jednotky bude 32 bitový mikrokontrolér UPD70F3377A z řady V850 od firmy RENESAS, který na oddělení elektroniky společnosti Motorpal, a.s. běžně využíváme, a pro který máme zakoupené programátory MINICUBE2 a vývojové prostředí IAR Embended Workbench V850. Programovat ho budu pomocí výše zmíněného programátoru MINICUBE2. Vývojové prostředí použiji IAR Embended Workbench V850 ve verzi "EWV850-4103". Toto vývojové prostředí je možné použít zdarma, je však nutné se zaregistrovat a při registraci si zvolit jednu ze dvou verzí 8
licenčního klíče. Na výběr jsou verze "Code size limited: 64K Kickstart Edition" a "Time limited (30 days): Evaluation version". Vzhledem k mému předpokladu, že program pro mikrokontrolér bude menší než 64 kB, licence "code size limited" by měla být postačující. Programovat budu v jazyce Extended embended C++. Část kódu si vygeneruji pomocí programu Applilet2 ve verzi "V2.43 for V850ES/Fx3" a následně jej použiji ve zvoleném vývojovém prostředí. Mikrokontrolér bude komunikovat s PC pomocí obvodu FTDI, který se připojí k PC přes USB rozhraní. Toto zařízení bude vyrobeno v několika kusech a bude použito při sériové výrobě pro kontrolu vyrobených řídících jednotek Motorpal CR ECU verze 4.X. Každá z řídících jednotek musí být takto otestována, aby se zaručila kvalita výroby. Tuto práci napíši, tak aby byla publikovatelná a nezveřejňovala žádné citlivé informace. K práci budou přiložena dvě CD. Přiložené CD bude ve dvou verzích, jedna z nich bude obsahovat práci v plném rozsahu, druhé pouze zveřejnitelnou část.
9
2 Cíle práce 2.1 Popis řešeného problému Společnost Motorpal, a.s. vyvíjí systém vstřikování pro vznětové motory Common rail. Součástí tohoto systému je i řídící jednotka Motorpal CR ECU verze 4.X. Tuto jednotku a vše s ní spojené má v rámci společnosti na starost oddělení elektroniky, kde jsem zaměstnán na pozici elektronik. Jedním z úkolů oddělení elektroniky je zajistit testování řídících jednotek v sériové produkci, aby se odhalily případné vadné kusy. Je třeba otestovat vstupy a výstupy řídících jednotek, to znamená přivést odpovídající logické úrovně na digitální vstupy, na analogové vstupy přivádět napětí ve správném rozsahu a zatěžovat a měřit jednotlivé výstupy. Dále je potřeba simulovat signály od některých senzorů, jako jsou například EPS a ESS.
2.2 Vymezení cílů Cílem této bakalářské práce je navrhnout a naprogramovat testovací jednotku pro řídicí jednotky vstřikovacího systému Common rail Motorpal CR ECU verze 4.X. Prvním cílem je navrhnout schéma tak, aby umožňovalo otestovat všechny vstupy a výstupy řídicí jednotky. Testovací jednotka bude:
testovat všech jedenáct digitálních vstupů řídicí jednotky připojením napětí 0 V a 5 V, generovat PWM signál a signály od senzorů EPS a ESS, testovat všech dvanáct analogových vstupů řídicí jednotky napětím 0–5 V, zatěžovat a měřit výstupní napětí řídicí jednotky o velikosti 12 V a 5 V, zatěžovat všech šest výstupů pro vstřikovače a měřit jejich proud, zatěžovat všechny čtyři výkonové PWM výstupy a měřit na nich periodu a střídu PWM signálu, zatěžovat všechny čtyři výkonové digitální výstupy a detekovat na nich signál, komunikovat přes rozhranní USB s PC, 10
obsahovat mikrokontrolér UPD70F3377A z řady V850 od firmy RENESAS, obsahovat hardware pro komunikaci po sběrnici CAN.
Druhým cílem je navrhnout DPS, vygenerovat podklady pro výrobu, vybrat součástky a nechat DPS vyrobit a osadit. DPS bude:
pinově kompatibilní s řídicí jednotkou, mít konektor TYCO_1241434-1, jako má řídící jednotka, mít konektor USB typu B pro připojení kabelu k PC, mít vhodně rozlitou zem, tak aby se minimalizovalo rušení.
Posledním z cílů je naprogramovat firmware. Firmware bude:
přijímat povely od řídící jednotky a odpovídat na ně, vše podle domluveného komunikačního protokolu, umožňovat generování signálů pro všechny digitální i analogové vstupy řídící jednotky, umožňovat zatěžování a měření všech výstupů řídicí jednotky, naprogramován ve vývojovém prostředí IAR V850.
2.3 Popis struktury bakalářské práce ve vztahu k vytyčeným cílům Samotná práce se skládá ze tří hlavních částí. První část bude obsahovat návrh elektrického schématu, druhá část návrh DPS a třetí popis mnou naprogramovaného firmwaru.
2.3.1 Návrh elektrického schématu Návrh elektrického schématu se skládá z těchto částí:
mikrokontrolér UPD70F3377A z řady V850 od firmy RENESAS, návrh USB rozhraní přes FTDI, výběr a zapojení konektorů, návrh napájecích obvodů, návrh digitálních výstupů, 11
návrh analogových výstupů, návrh digitálních vstupů, návrh obvodů pro měření analogových signálů.
2.3.2 Návrh desky plošných spojů Návrh desky plošných spojů se skládá z těchto částí:
přiřazení pouzder jednotlivým součástkám, základní rozmístění součástek a routování, rozlití mědi a umístění prokovů.
2.3.3 Firmware Tvorba FW je rozdělena do těchto částí:
generování kódu pomocí Applilet2, použité algoritmy.
12
3 Návrh elektrického schématu K návrhu elektrického schématu použiji program eeschema z balíku programů KiCad. Jednou z mnoha výhod KiCadu je, že pro tvorbu schématu není třeba znát pouzdra součástek, pouze je vhodné později přiřadit součástkám pouzdra se stejným počtem pinů.
3.1 Mikrokontrolér UPD70F3377A z řady V850 od firmy RENESAS Při tvorbě elektrického schématu začnu tedy od mikrokontroléru. V datasheetu mikrokontroléru(1) jsou uvedena doporučená schémata zapojení krystalového oscilátoru. Zapojení programovacího hřebínku je naopak možné vyčíst z datasheetu programátoru MINICUBE2(2), ale na oddělení elektroniky společnosti Motorpal, a.s. používáme u všech zařízení s tímto mikrokontrolérem modifikovanou verzi pro sedmipinovou kolíkovou lištu. Výše zmíněná zapojení, jsem nehledal ve zmíněných datasheetech, ale po konzultaci s vedoucím práce jsem je spolu s budiči sběrnice CAN SN65HVD1050 a indikační LED použil ozkoušené schéma, které využíváme v rámci našeho oddělení. Vymýšlet ho znovu by bylo zbytečné a navíc náchylné na chybu. Budiče sběrnice CAN jsou navíc opatřeny terminačními rezistory o velikosti 120 ohmů a elektrický proud indikační LED je omezen rezistorem o velikosti 470 ohmů. Výsledné
schéma
mikrokontroléru
s blokovacími
kondenzátory
a krystalovým
oscilátorem je spolu s programovacím rozhranním, budiči sběrnice CAN a indikační LED zobrazeno na obrázku "Obrázek 1: Schéma zapojení mikrokontroléru.".
13
Obrázek 1: Schéma zapojení mikrokontroléru.
14
3.2 Návrh USB rozhraní přes FTDI Při návrh USB rozhraní jsem vyšel z datasheetu obvodu FT232RL (3) a z datasheetu obvodu pro optické oddělení HCPL-300(4). HCPL . Tyto obvody mám již prakticky ozkoušené z jiné testovací jednotky. Optické oddělení je nutné, protože řídicí jednotka by mohla mít zem spolu s testovací jednotkou na jiném potenciálu než PC a moh mohlo by tedy dojít k poškození PC, testovací jednotky nebo obou. K optickému oddělení se pak přip připojí přímo UART ART mikrokontroléru. Elektrické schéma je na obrázku ""Obrázek 2: FT232RL".
Obrázek 2: FT232RL
3.3 Výběr a zapojení konektorů Testovací jednotka má tři konektory. Konektor pro komunikaci s PC, konektor pro připojení testované řídicí jednotky jednot a konektor pro připojení pomocných zařízení.
3.3.1 Konektor pro komunikaci s PC Pro komunikaci s PC byl zvolen standardní USB 2.0 konektor typ typu B. Problematika zapojení USB konektoru je popsána v kapitole 3.2.
15
3.3.2 Konektor pro připojení testované řídicí jednotky Pro připojení testované řídicí jednotky je použit konektor TYCO_1241434-1. Jde o totožný konektor, jako má řídicí jednotka. K propojení testovací a řídicí jednotky bude sloužit kabeláž. Pro jednoduchost je zvolen systém propojení kabeláže 1:1. Aby bylo možné tuto bakalářskou práci zveřejnit, musel jsem pojmenovat vstupní a výstupní piny na konektoru testovací jednotky obecně. Piny číslo 4 a 5, které slouží v řídicí jednotce jako napájecí vstupy, a jsou připojeny ke kladnému pólu autobaterie, nejsou u testovací jednotky zapojeny. Zapojení konektoru je vidět na obrázku "Obrázek 3: Konektor TYCO_1241434-1". Napájení testovací jednotky je řešeno přes jiný konektor. Viz kapitolu 3.3.3.
Obrázek 3: Konektor TYCO_1241434-1
3.3.3 Konektor pro připojení pomocných zařízení Na tomto konektoru jsou umístěny napájecí vstupy testovací jednotky označené jako 12VCC. Také jsou zde výstupy řídicí jednotky +12V, které jsou vedeny skrz testovací jednotku. Výstupy +12V slouží u řídicí jednotky k napájení senzorů. Na tomto konektoru jsou vyvedeny, aby je bylo možné připojit na napájecí vstupy testovací jednotky 12VCC. Jestli bude testovací jednotka napájena z externího napájecího zdroje, 16
nebo bude napájena z výstupů řídicí jednotky pro napájení senzorů, zatím není známo, důležité je, že toto zapojení umožňuje obě možnosti napájení. Dále jsou zde umístěny výstupy testovací jednotky INJP a INJ1OUT–INJ6OUT pro zapojení šesti vstřikovačů nebo šesti obvodů simulujících vstřikovače. Obvod simulující vstřikovač by byl nejspíše výkonový induktor. Každý takový obvod nebo vstřikovač se připojí mezi výstupy testovací jednotky INJP a odpovídající výstupy INJxOUT. Vstřikovače jsou zatím stále ve fázi vývoje, a tak není upřesněno, co přesně bude na tyto výstupy připojeno. Obvody simulující vstřikovače by bylo nutné chladit, ale jejich ztrátový výkon zatím není známý. Jako poslední jsou zde umístěny čtyři výstupy PWM_IN_01–PWM_IN_04. Testovací jednotka tyto výstupy zatěžuje, ale maximálně proudem kolem 1 A. Toto zatížení by mělo být dostatečné, ale kdyby se ukázalo, že nedostačuje, je možné připojit přídavnou zátěž. Tato přídavná zátěž by potřebovala i přídavné chlazení, a proto musí být mimo testovací jednotku. Konektor byl zvolen AMPSEAL35, protože tyto konektory běžně používáme a máme k nim skladem protikusy. Jak je vidět na zapojení konektoru, viz "Obrázek 4: Zapojení konektoru pro připojení pomocných zařízení", na každý signál jsou použity dva až tři piny konektoru a to z důvodu snížení proudového zatížení jednotlivých pinů.
17
Obrázek 4: Zapojení konektoru pro připojení pomocných zařízení
3.4 Návrh napájecích obvodů Pro napájení celé testovací jednotky používám dva pětivoltové napájecí zdroje. Napájecí zdroj LP2981 je přesný (5) a je určený pro napájení D/A převodníků. Hlavní napájecí zdroj s označením LM2576S-5.0(6) je výkonový a slouží k napájení celé testovací jednotky, s výjimkou již zmíněných D/A převodníků a obvodu FT232RL, který je napájen z PC. Jak je vidět obrázku "Obrázek 5: Napájecí zdroje", oba zdroje jsou na vstupu chráněny Shottkyho diodou MBRS340T3G a transilem SMA6J18A-TR. Transil chrání testovací jednotku před přepětím. Testovací jednotka ale nemá vlastní pojistku, což znamená, že pojistka musí být vně testovací jednotky a může být společná s pojistkou pro řídicí jednotku. Shottkyho dioda chrání napájecí zdroje testovací jednotky při náhlém zkratu vstupního napájení a při jeho přepólování.
18
Obrázek 5: Napájecí zdroje
3.5 Návrh digitálních výstupů Pro
realizaci
digitálních
výstupů
používám
tranzistorová
pole
ULN2803A.
Tranzistorové pole obsahuje osm Darlingtonových tranzistorů a má na všech vstupech integrované rezistory napočítané pro TTL a pětivoltovou CMOS logiku, dále je vybaveno výstupními clamp diodami, které snesou stejně jako každý z výstupních tranzistorů poměrně velký proud 0,5A (7). Vnitřní zapojení tranzistorového pole je zobrazeno na obrázku "Obrázek 6: ULN2803A".
19
Obrázek 6: ULN2803A(7)
Jak je vidět na obrázku "Obrázek 6: ULN2803A" výstupy jsou invertované. Ke vstupům je připojený mikrokontrolér, pro který nepředstavuje inverze problém. Stejně jako běžné digitální výstupy testovací jednotky jsou zapojeny i PWM výstup a výstupy EPS a ESS simulující signály ze senzorů EPS a ESS. V testovací jednotce jsou digitální výstupy zapojeny podle schématu zobrazeném na obrázku "Obrázek 7: Schéma zapojení digitálních výstupů". Rezistory připojené k napětí 5 V slouží k definici úrovně logické jedničky a jsou napočítány tak, aby se při logické nule nehřály a nemohlo dojít k poškození. Výstupní rezistory jsou při správném zapojení zbytečné. Pokud by bylo zapojení chybné a výstup byl spojen s jiným výstupem, nebo s napájením, vydrží takto navržené výstupy necelých 10 V trvale. Při vyšším napětí by se mohl rezistor poškodit, ale tranzistorové pole by zůstalo 20
nepoškozeno a výměna rezistoru by v takovémto nepravděpodobném případě nebyla problémem. Seznam všech digitálních výstupů testovací jednotky je: DO_01–DO_11, PWM_OUT a simulované signály EPS a ESS. Digitální výstupy, které nejsou na obrázku "Obrázek 7: Schéma zapojení digitálních výstupů" znázorněny, jsou zapojeny stejným způsobem a lze je nalézt ve schématu zapojení testovací jednotky na přiloženém CD. Signály PWM_OUT, EPS a ESS jsou u mikrokontroléru připojeny k pinům, na kterých mají své výstupy čítače/časovače, u ostatních výstupů nezáleží na tom, ke kterým pinům jsou připojeny.
Obrázek 7: Schéma zapojení digitálních výstupů
3.6 Návrh analogových výstupů Použitý mikrokontrolér UPD70F3377A nemá analogové výstupy. Použiji tedy externí D/A převodníky. Vybral jsem převodníky DAC124S085. Každý obvod DAC124S08 obsahuje čtyři dvanáctibitové rail-to-rail převodníky a s mikrokontrolérem komunikuje pomocí rozhraní SPI(8). Výstupy DAC124S085 vydrží zkrat nejen na zem, ale 21
i k napájecímu napětí. Jednotlivé výstupy chráním před přepětím transilem a Zenerovou diodou. Viz "Obrázek 8: Zapojení analogových výstupů". Podle tohoto schématu jsou zapojeny všechny analogové výstupy. Názvy analogových výstupů jsou AO_01– AO_11. Testovací jednotka analogovými výstupy simuluje údaje jednotlivých analogových senzorů. Jediná informace o těchto senzorech, která je pro tuto práci důležitá, je ta, že jsou všechny v rozsahu 0–5 V. Výstupní rezistory jsou půlwattové o velikosti 470 ohmů, to znamená, že trvale snesou úbytek napětí 15 V, což odpovídá proudu 30 mA. Tento proud poteče díky stoohmovému rezistoru převážně transilem, přitom bude úbytek napětí na transilu vyšší než 6,4 V. To znamená, že tyto analogové výstupy testovací jednotky bezpečně vydrží připojení napětí o velikosti 20 V.
Obrázek 8: Zapojení analogových výstupů
3.7 Návrh digitálních vstupů Na digitální vstupy testovací jednotky jsou připojeny výkonové digitální výstupy řídicí jednotky. Tyto výstupy jsou připojeny ke čtyřem vstupům pro PWM signály PWM_IN_01–PWM_IN_04 a dále ke čtyřem obecným digitálním vstupům DI_01– DI_04.
22
3.7.1 Návrh digitálních vstupů DI_01–DI_04 Pro připojení digitálních výstupů řídicí jednotky na digitální výstupy testovací jednotky jsem použil stejně jako při návrhu digitálních výstupů testovací jednotky tranzistorové pole ULN2803A, jehož schéma bylo popsáno na obrázku "Obrázek 6: ULN2803A". Tranzistorové pole ULN2803A zde souží jako ochrana mikrokontroléru před přepětím. Samo je velice odolné a na vstupech vydrží 30V (7), což bohatě postačuje. Signály DI_01–DI_04 připojím ke vstupům tranzistorového pole. Výstupy tranzistorového pole připojím přes rezistor o velikosti 1 kΩ k pětivoltovému napájecímu zdroji, který definuje napěťovou úroveň logické jedničky. Poté připojím výstupy tranzistorového pole k mikrokontroléru přes rezistory 2,2 kΩ. Tyto rezistory chrání mikrokontrolér. V případě, že by byly vstupy mikrokontroléru vlivem chyby přepnuty do režimu výstupů, mohlo by dojít k jeho zničení. V budoucnu by mohlo být užitečné generovat v mikrokontroléru přerušení na hranu od těchto signálů. K tomu ale nemám dostatečné množství volných pinů mikrokontroléru, které by to umožňovaly. Mám ale volných osm pinů, umožňující key-interrupt, který se generuje při sestupné hraně na minimálně jednom z těchto pinů. Vzhledem k tomu, že jsem použil pouze jednu polovinu tranzistorového pole, a že tranzistorové pole neguje signály, jsem se rozhodl, že by bylo dobré přivést signály z výstupů tranzistorového pole na jeho vstupy a podruhé je znegovat, čímž získám neznegované signály. Nyní mám signály a jejich negace, což znamená, že když je všechny připojím ke keyinterruptům, můžu tak vyvolat přerušení na obě hrany, sestupnou i náběžnou. Zpoždění signálu procházejících tranzistorovým polem je 20 až 130 ns. Tak rychlé signály, u kterých by toto zpoždění mohlo hrát roli zcela jistě měřit nebudu. Viz "Obrázek 9: Připojení signálů DI_01–DI_04 k mikrokontroléru".
23
Obrázek 9: Připojení signálů DI_01–DI_04 k mikrokontroléru
3.7.2 Zatížení vstupů DI_01–DI_04 Ke vstupům testovací jednotky DI_01–DI_04 připojíme ještě výkonové zatěžovací rezistory. Tyto rezistory jsou v pouzdře TO220 a mají tři vývody. Třetím vývodem je zadní strana pouzdra, která není připojena, "visí ve vzduchu" a slouží pouze jako chladící plocha, proto ji uzemním. Tyto rezistory by sice mohly být připojeny trvale, ale rozhodl jsem se je připojit přes tranzistorové pole ULN2803A, aby je bylo možné odpojit a negenerovat tak zbytečné teplo. V případě že by bylo na vstupech DI_01– DI_04 vyšší napětí než 12 V, tak by se mohly rezistory poškodit. Tranzistorové pole ULN2803A bylo popsáno na obrázku "Obrázek 6: ULN2803A". Vstupy tranzistorového pole jsou připojeny přímo k mikrokontroléru a výstupy přímo k rezistorům, viz "Obrázek 10: Připojení zatěžovacích rezistorů k DI_01–DI_04". Z tohoto obrázku je
24
patrné, že jsem použil pouze polovinu tranzistorového pole. Zapojení první poloviny tranzistorového pole je popsáno v kapitole 3.7.3.
Obrázek 10: Připojení zatěžovacích rezistorů k DI_01–DI_04
Na vstupech testovací jednotky DI_01–DI_04 je možné měřit i napětí. Důležitý by mohl být rozdíl při zatíženém a nezatíženém výstupu. Je tak totiž možné změřit výstupní odpor. Měření napětí je popsáno v kapitole 3.8.1.
3.7.3 Návrh vstupů pro PWM signály Na tyto vstupy testovací jednotky jsou přivedeny čtyři PWM signály PWM_IN_01– PWM_IN_04. Tyto PWM signály jsou přivedeny k mikrokontroléru přes tranzistorové pole ULN2503A. Zapojení tranzistorového pole je zobrazeno na obrázku "Obrázek 6: ULN2803A".
Obrázek 11: Měření PWM vstupů
Schéma je popsáno na obrázku "Obrázek 11: Měření PWM vstupů". Na výstupech tranzistorového pole jsou pull-up rezistory o velikosti 1 kΩ připojené k pětivoltovému zdroji. Tyto rezistory definují napěťovou úroveň logické jedničky. Dále jsou k výstupům tranzistorového pole připojeny rezistory o velikosti 2,2 kΩ, které chrání mikrokontrolér před poškozením. Kdyby byly piny mikrokontroléru vlivem chyby ve FW nastaveny jako výstupy, mohlo by je tranzistorové pole připojit k zemi. To by vedlo 25
k poškození mikrokontroléru. Na vstupech tranzistorového pole jsou RC články jako dolní propust. Mají dvě funkce. Filtrují případné zákmity a omezují proudy do vstupů tranzistorového pole. Rozdílné hodnoty rezistorů jsou způsobeny rozdílnými hodnotami napětí. Vstupy PWM_IN_02 a PWM_IN_03 jsou dvacetivoltové, zatímco PWM_IN_01 a PWM_IN_04 jsou pouze dvanáctivoltové. U větších rezistorů jsou menší kapacitory, tak aby RC konstanta zůstala stejná. Zapojení druhé poloviny tranzistorového pole je popsáno v kapitole 3.7.2. Frekvence PWM signálů není zatím stanovena, a proto je RC konstanta pouze odhadnutá. Vzhledem k tomu, že testovací jednotka bude vyrobena pouze v několika málo kusech, nebyl by problém kapacitory odpájet a nahradit jinými.
3.7.4 Zatížení vstupů pro PWM signály Cílem návrhu zatěžovacích obvodů je zatížit všechny čtyři PWM vstupy PWM_IN_01– PWM_IN_04 proudem minimálně 1 A. Dále je zde možnost i externí zátěže, viz kapitolu 3.3.3. K zatěžování se používá operační zesilovač, který porovnává napětí z D/A převodníku s úbytkem napětí na rezistoru a podle toho otevírá tranzistor a reguluje tak elektrický proud protékající snímacím rezistorem. Na neinvertujícím vstupu operačního zesilovače je rezistorový dělič, který dělí napětí z A/D převodníku na jednu pětinu, to znamená, že maximální vstupní napětí operačního zesilovače je 1 V. Invertující vstup operačního zesilovače je zapojený ve zpětné vazbě, napětí tohoto vstupu bude tedy odpovídat napětí neinvertujícího vstupu. To znamená, že na snímacím rezistoru bude také maximálně napětí 1 V. Snímací rezistor má velikost 0,5 Ω. Takto velkým rezistorem poteče při napětí 1 V proud 2 A, což mi dává oproti požadovanému proudu 1 A dostatečnou rezervu. Mezi bázi tranzistoru a výstup operačního zesilovače je vložený stoohmový rezistor, který omezuje proud do báze tranzistoru. Tranzistor TIP122 vydrží maximální bázový proud 100 mA(9). Je zřejmé, že operační zesilovač nemůže mít na výstupu vyšší napětí než 5 V, a i kdyby těchto 5 V bylo přímo na rezistoru, tak toto napětí „protlačí“ proud ve výši 50 mA. To znamená, že proud protékající bází tranzistoru bude určitě nižší. Tranzistor TIP122 je darlingtonova typu a zesiluje bázový proud minimálně tisíckrát(9). To znamená, že pro nastavení proudu 2 A potřebuje, aby operační zesilovač dokázal dodat proud alespoň 2 mA, což pro 26
použitý operační zesilovač TLC272 nepředstavuje problém(10). Schéma je zobrazeno na obrázku "Obrázek 12: Zatížení vstupů pro PWM signály".
Obrázek 12: Zatížení vstupů pro PWM signály
V tomto zapojení není tranzistor plně otevřen a má velké tepelné ztráty. Tranzistor TIP122 má při pulzním zatížení velkými výkony velké nároky na chlazení. Proto jsem vybral náhradu ve formě tranzistoru BD911. Tento tranzistor vydrží vyšší ztrátový výkon a má i menší tepelný odpor. Bohužel, ale nemá zaručené dostatečné zesílení (11). Pokud se použije tranzistor BD911, bude nutné nejdříve každou testovací jednotku ozkoušet, jestli je schopná zatížit PWM vstupy dostatečným proudem a případně některé tranzistory vyměnit. V tomto zapojení může být bázový rezistor na škodu (kvůli úbytku napětí a tím snížení bázového proudu), ale zatím jej kvůli kompatibilitě s TIP122 ponechám. Prakticky mám na několika kusech ozkoušeno, že BD911 v tomto zapojení funguje i s bázovým rezistorem. 27
Z každého operačního zesilovače je vedena zpětná vazba na analogové vstupy mikrokontroléru. Na obrázku "Obrázek 12: Zatížení vstupů pro PWM signály" je označena jako FB_01–FB_04. Měříme úbytky napětí na půlohmových rezistorech. Proud je zjevně dvojnásobkem těchto úbytků napětí. Měření proudu pomocí zpětné vazby má pouze orientační charakter. A je zde implementováno, aby bylo možné rozpoznat, zda není zničený některý z tranzistorů. Na obrázku "Obrázek 12: Zatížení vstupů pro PWM signály" je vidět i chladič. Ten je nutný. Při proudu 1 A všemi tranzistory bude jejich ztrátový výkon roven úbytku napětí na nich. Tedy pro dva dvacetivoltové a dva dvanáctivoltové vstupy to je dvakrát 19,5 W a dvakrát 11,5 W, což dohromady dává 62 W. Chladič na takovýto výkon by byl velice drahý, proto použiji obyčejný chladič OS518-100-B a jednotlivé vstupy budu zatěžovat pouze samostatně a vždy pouze na několik sekund. Pro trvalé zatížení má testovací jednotka zatěžovací výstupy. Viz kapitolu 3.3.3. V levém horním rohu obrázku "Obrázek 12: Zatížení vstupů pro PWM signály" jsou zobrazeny blokovací kapacitory pro napájení operačních zesilovačů.
3.8 Návrh obvodů pro měření analogových signálů Mikrokontrolér UPD70F3377A je vybaven šestnácti pětivoltovými analogovými vstupy. Čtyři analogové vstupy jsou použity pro kontrolu funkce tranzistorů zatěžujících PWM výstupy řídící jednotky, viz kapitolu 3.7.4. Použití zbývajících dvanácti analogových vstupů je popsáno v této kapitole. Dva analogové vstupy jsou určeny k měření výstupních napětí řídicí jednotky pro napájení senzorů, čtyři analogové vstupy měří napětí digitálních vstupů DI_01–DI_04 a zbylých šest analogových vstupů měří proudy procházející jednotlivými vstřikovači.
3.8.1 Návrh obvodů pro měření napětí Kdyby bylo jisté, že žádné z měřených napětí nepřesáhne hodnotu 5 V, bylo by možné je měřit přímo, avšak to není tento případ. Proto jsou analogové vstupy vybaveny 28
rezistorovými děliči,, které vydělí měřená napětí na přibližně 4 V. Za vstupním děličem se nachází přepěťová ťová ochrana ve formě transilu transil SMAJ5.0A, Zenerovy diody BZX_5V1 a rezistoru.. Před vstupy mikrokontroléru jsou kapacitory, které vyfiltrují případné zákmity vstupních napětí. Vše je vidět na obrázku "Obrázek Obrázek 13: Napěťové vstupy", ze kterého je také patrné, že maximální vstupní napětí je limitováno ztrátovým výkonem 12kΩ Ω rezistorů. rezistor Rezistory jsou v pouzdře 0805 a přípustný ztrátový výkon tedy bude minimálně ně 100 mW. Takový ztrátový výkon by nastal při úbytku napětí 34 V, přitom na transilu by byl úbytek minimálně 6 V(12).. To znamená, že tyto vstupy testovací jednotky vydrží v závislosti na použitých rezistorech minimálně 40 V, což bohatě postačuje a při volbě rezistorů se nemusí na ztrátový výkon brát zřetel zřetel.
Obrázek 13: Napěťové vstupy
Všechny vstupy jsou zatížitelné připojitelným rezistorem. Zatěžování vstupů testovací jednotky DI_01–DI_04 je popsáno v kapitole 3.7.2 a vstupy pro měření napájecího napětí pro senzory jsou zatíženy naprosto stejným způsobem.
29
3.8.2 Návrh obvodů pro měření proudů vstřikovači Testovací jednotka umožňuje měřit proud až šesti vstřikovači. Pro měření proudů vstřikovači byly použity Hallovy senzory proudu ACS756SCA-050B. Tyto senzory proudu měří proud o velikosti od -50 A do 50 A. Výstup senzorů proudu je napěťový a lineární. Při napájení 5 V odpovídá napětí na výstupu 0 V proudu -50 A a napětí na výstupu 5 V proudu 50 A(13). Schéma zapojení jednoho Hallova senzoru je na obrázku "Obrázek 14: ACS756SCA-050B".
Obrázek 14: ACS756SCA-050B
Použil jsem zapojení, které máme na oddělení elektroniky ozkoušené. Oproti doporučenému schématu v datasheetu je zde navíc rezistor R140 a kapacitor C47. Kapacitor je zde jako blokovací pro případ, že by se na vodičích mezi mikrokontrolérem a výstupem senzoru proudu naindukovalo rušení. Rezistor je zde z důvodu, aby Hallův senzor neměl výstup na prázdno.
30
4 Návrh desky plošných spojů Pro návrh použiji programy CvPcb a Pcbnew z balíku programů KiCad. Program CvPcb slouží k přiřazení pouzder součástkám a programem Pcbnew se navrhuje vlastní deska plošných spojů. Nejprve bylo nutné vybrat všechny součástky. Vybíral jsem na webu http://cz.farnell.com. Na tomto webu ale nebyly dostupné konektory TYCO40/81 a hlavně D/A převodníky DAC124S085. Tyto součástky byly dostupné z webu http://cz.mouser.com. Mikrokontroléry UPD70F3377A dodala společnost Motorpal, a.s., ze svých skladových zásob. Seznam použitých součástek je na přiloženém CD. Rezistory a kapacitory si výrobce může vybrat jiné. Výrobce ovšem musí dodržet vybrané pouzdro a hodnotu elektrického odporu či kapacity. Rezistory navíc nemohou mít horší přesnost a nemohou být na nižší výkon. Kapacitory nemohou být na nižší napětí a keramické kapacitory nemohou mít horší dielektrikum. Výkonové rezistory a elektrolytické kapacitory stejně jako všechny ostatní součástky nemůže výrobce zaměnit bez předchozí konzultace.
4.1 Přiřazení pouzder jednotlivým součástkám Při přiřazování pouzder jednotlivým součástkám vycházím z datasheetů těchto součástek. Výjimkou jsou rezistory, kapacitory a diody (Shottkyho diody, transily, Zenerovy diody), které jsou v běžných pouzdrech. Při výběru vhodného pouzdra je nutné dát si pozor nejen na rozměry, ale i na pořadí jednotlivých pinů. KiCad nabízí možnost editovat stávající pouzdra. To nedoporučuji. Lepší řešení je editované pouzdro uložit jako nové a stávající ponechat. Důležité je, aby pouzdro mělo unikátní název. Pokud se název shoduje se stávajícím názvem, není možné nové pouzdro přiřadit. Já jsem žádná pouzdra vytvářet, ani editovat nemusel, protože jsme již dříve všechny součástky v nestandardních pouzdrech použili, takže jsem použil již dříve vytvořená pouzdra užívaná v rámci oddělení elektroniky společnosti Motorpal, a.s.
31
4.2 Rozmístění součástek a routování Pro rozmisťování součástek potřebuji vědět, kolik vrstev bude deska plošných spojů mít. Vzhledem k počtu součástek volím čtyři vrstvy. Nejprve umístím konektor TYCO40/81, mikrokontrolér UPD70F3377A a konektor AMPSEAL35. Dále umisťuji součástky směrem od konektoru TYCO40/81 k mikrokontroléru. Také umístím Hallovy senzory proudu ACS756SCA-050B. Postupně umisťuji součástky a částečně routuji, ale pouze minimálně, abych zjistil, zda nejsou součástky umístěny příliš blízko u sebe. Desku plošných spojů navrhuji tak, aby se mi jednotlivé součástky nepřekrývaly, snažím se nevést společně výkonové a signálové spoje. Všechny spoje se snažím dělat co nejkratší s minimem změn vrstev. Blokovací kapacitory umisťuji vždy co nejblíže příslušným součástkám. Výkonové spoje dimenzuji na dané proudy. KiCad obsahuje program Pcb calculator, který po zadání protékajícího proudu, délky spoje, šířky mědi a dovoleného oteplení, vypočítá minimální šířku spoje. Některé piny konektorů a integrovaných obvodů, převážně pak u mikrokontroléru, lze zaměnit s jinými a zjednodušit tak vedení některých spojů. Spoje určené pro vstřikovače jsou obrovským zdrojem rušení, proto přes ně nevedu žádné signály. Pro minimalizaci elektrického odporu příslušných cest ke vstřikovačům vedu tyto spoje ve všech vrstvách a vzájemně je pospojuji prokovy.
4.3 Rozlití mědi a umístění prokovů Po zaroutování všech spojů je potřeba "rozlít" země, sníží se tak jejich elektrický odpor a rušení(14). Testovací jednotka má dvě země, které se nesmí spojit. Zem označená GND je společná s řídicí jednotkou a druhá zem označená GND2 je společná s PC. Propojení testovací jednotky s PC popisuje kapitola 3.2, ze které je patrné, že zem GND2 bude rozlita na velmi malém prostoru pouze okolo obvodu FT232RL ve všech čtyřech vrstvách. Na zbytku plošného spoje je rozlita zem GND, výjimku tvoří část plošného spoje, kde jsou vedeny přívody ke vstřikovačům. Zde není rozlita žádná zem, protože by zde vznikaly pouze úzké dlouhé "ostrůvky". Tyto "ostrůvky" by se mohly 32
chovat jako antény a byly by spíše na škodu. Rozlitou zem je potřeba prokovit mezi vrstvami. Zamezí se tak vzniku některých "ostrůvků" visících ve vzduchu a sníží se tak elektrický odpor země. Tam, kde jsem předpokládal, že by se měď nerozlila dobře, jsem přidal "keepout areas". V této části návrhu přidám montážní otvory. Je jich celkem pět. Všechny musí být na stejném potenciálu, proto jsou spojeny se zemí GND. Jeden z montážních otvorů se mi spojit se zemí nepodařilo, takže "visí ve vzduchu", naštěstí je to v místě, kudy nevede žádný signálový spoj, takže to nepředstavuje problém. Nakonec provedu kontrolu návrhových pravidel DRC a nechám testovací jednotku vyrobit. Viz obrázek "Obrázek 15: Testovací jednotka".
Obrázek 15: Testovací jednotka
33
5 Firmware Jak již bylo naznačeno v úvodu, nejprve použiji generátor kódu Applilet2. Pomocí něj provedu základní nastavení hodin, portů a dalších periférií. Výsledný projekt dokončím ve vývojovém prostředí IAR Embended Workbench V850. Pro debug a finální nahrání firmwaru do mikrokontroléru použiji programátor MINICUBE2.
5.1 Generování kódu pomocí Applilet2 Aplikace Applilet2 je stažitelná přímo na stránkách výrobce mikrokontroléru UPD70F3377A společnosti RENESAS. Existuje mnoho verzí této aplikace a je nutné si vybrat takovou, která podporuje zvolený mikrokontrolér. Při návrhu této práce byla nejnovější verzí podporující mikrokontrolér UPD70F3377A verze Applilet2 "V2.43 for V850ES/Fx3". Velkou výhodou této aplikace je podpora IAR kompilátoru.
5.1.1 Tvorba nového projektu v Applilet2 Při tvorbě nového projektu je důležité dávat pozor, na správný výběr následujících položek: v seznamu "Series Name" položku V850ES/FG3, v seznamu "Chip Name" položku uPD70F3377 a v seznamu "Compiler or Assembler Name" položku IAR Compiler. Pokud by bylo například "Chip Name" chybně zvolené, mohlo by být při programování obtížné chybu odhalit.
5.1.2 Nastavení "System" Nejdůležitější nastavení je na záložce "Clock settings" na vnořené záložce "Main system clock". Vzhledem k tomu, že používám 12MHz externí krystalový oscilátor, musím vybrat volbu "MainOSC clock(fX)" a do příslušného pole "Frequency(MHz)" vepsat hodnotu 12. Nyní zaškrtnu checkbox "Use PLL/SSCG mode" a Applilet2 si automaticky nastaví PPL tak, aby výsledný hodinový signál byl 48 MHz. To je maximální dovolená frekvence. Výrobce udává u řady V850 přepočet 1,9 DMIPS na
34
1 MHz. Mikrokontrolér tedy dosahuje výkonu 91,2 DMIPS. Nastavení hodin je zobrazeno na obrázku "Obrázek 16: Main system clock".
Obrázek 16: Main system clock
Záložka "Clock settings" má ještě druhou vnořenou záložku "CPU system clock/Peripheral clock/Sub clock". Na této záložce nebudu nic měnit, protože je zde pouze nastavení nízkofrekvenčního oscilátoru, který nepoužívám. Dále je zde nastavení hodin pro periférie, to nastaví Applilet na 24MHz a jiný kmitočet nepovolí nastavit. Periférie mohou být taktovány maximálně na 32 MHz, a pokud má hodinový signál vyšší kmitočet, tak ho Applilet2 automaticky vydělí dvěma. Na záložce "Stand-by" jsou tři checkboxy. Zruším jejich zaškrtnutí, protože stand-by mód nebudu používat. Kdybych je nezrušil, nic by se nestalo, akorát by se vygeneroval kód navíc.
35
Na záložce "On chip debug settings" je defaultně nastaveno "On chip debug settings" na "Unused". Toto nastavení ponechám, protože debug si nastavím až ve vývojovém prostředí IAR Embended Workbench V850. Na záložce "Watchdogtimer 2" je defaultně nastaveno "Watchdogtimer 2 settings" na "Used". Zatím žádný Watchdogtimer používat nechci. Že by program zbloudil, se mi ještě nestalo. Navíc testovací jednotku bude používat pouze řádně proškolená obsluha, která bude mít na pracovišti k dispozici manuál k řídícímu programu pro PC, který ale není předmětem této práce. Pokud bych v budoucnu chtěl Watchdogtimer použít, můžu dogenerovat jeho nastavení do již hotového programu. To by ovšem vyžadovalo i změnu komunikačního protokolu s PC. Nyní je testovací jednotka čistě slave zařízení a nikdy nezahajuje komunikaci, pouze odpovídá. Po resetu by bylo ovšem záhodno dát tuto skutečnost PC najevo. Watchdogtimer tedy přináší akorát zbytečné komplikace, a proto položku "Watchdogtimer 2 settings" nastavím na "Unused". Na záložce "Power-on-Clear settings" je pouze nastavení funkce výstupů po připojení napájení, nechám ji ve výchozím stavu.
5.1.3 Nastavení "Port" V nastavení "Port" se nastavují piny jednotlivých portů jako vstupy nebo výstupy (po případě obojí, ale to nepoužívám). Pokud má na nějakém pinu svůj vstup či výstup některá integrovaná periferie (např. čítač/časovač či A/D převodník), musím daný pin nechat nastaven jako "Unused" a jeho chování nastavit v nastavení příslušné periferie. Na záložce "Port9H" nastavím čtyři piny. Pin P913 ovládá digitální výstup DO_02, nastavím jej tedy jako výstup. Piny P910, P911 a P912 slouží k výběru zařízení pro komunikaci po SPI rozhraní, nastavím je tedy jako digitální výstupy, a protože se zařízení na SPI vybírá pomocí logické nuly, nastavím výstupní hodnotu těchto pinů na "1". Viz obrázek "Obrázek 17: Port9H".
36
Obrázek 17: Port9H
Na záložce "PortCM" nastavím všechny čtyři piny jako výstupy. Piny PCM2 a PCM3 ovládají digitální výstupy DO_03 a DO_01. Piny PCM0 a PCM1 ovládají zatěžování napájecích výstupů řídicí jednotky. Piny PCM0 a PCM1 nesmějí být při inicializaci nastaveny na "1", protože v tomto případě by po zapnutí testovací ovací jednotka zatížila napájecí výstupy řídicí jednotky a generovalo by se tak zbytečné teplo. Vše je zobrazeno na obrázku "Obrázek Obrázek 18: PortCM". Na záložce "PortCS" nastavím nastavím pin PCS0 jako výstup. Tento pin slouží k výběru zařízení pro komunikaci po SPI rozhraní, rozhran a proto jeho hodnotu na "1", aby příslušné zařízení nebylo vybráno. Viz obrázek "Obrázek " 19: PortCS".
37
Obrázek 18: PortCM
Obrázek 19: PortCS
38
Na záložkách "PortDLL" a "PortDLH" nastavím piny PDL0–PDL3, PDL6 a PDL13 jako výstupy. Piny PDL0–PDL3 ovládají zatěžování digitálních vstupů testovací jednotky DI_01–DI_04, a proto nesmějí být při inicializaci nastaveny na "1", aby se předešlo tvorbě zbytečného tepla. Piny PLD6 a PLD13 ovládají digitální výstupy testovací jednotky DO_04 a DO_11. Viz obrázky "Obrázek 20: PortDLL" a "Obrázek 21: PortDLH".
Obrázek 20: PortDLL
39
Obrázek 21: PortDLH
5.1.4 Nastavení "Interrupt Controller" (INT) V tomto natavení se povolují externí přerušení "na hranu". Mikrokontrolér UPD70F3377A má tři typy přerušení na hranu: NMI, INTP a "Key return interrupt". Přerušení NMI se používá pro ošetření kritické chyby signalizované na příslušném pinu. Testovací jednotka neobsahuje žádné zařízení, u kterého by se dalo toto přerušení smysluplně využít. Přerušení
INTP
jsou
obecná externí přerušení "na hranu".
Mikrokontrolér
UPD70F3377A má celkem dvanáct těchto přerušení označených INTP0–INTP10 a INTP14.
40
Obrázek 22: External Interrupt 1
Na záložce "External Interrupt 1" povolím přerušení INTP5 a INTP6 na obě hrany. Na tyto piny je přiveden PWM signál ze vstupů testovací jednotky PWM_IN_01 a PWM_IN_02. Viz obrázek "Obrázek 22: External Interrupt 1". Na záložce "External Interrupt 2" povolím přerušení INTP9 a INTP10 na obě hrany. Na tyto piny je přiveden PWM signál ze vstupů testovací jednotky PWM_IN_04 a PWM_IN_03. Viz obrázek "Obrázek 23: External Interrupt 2".
41
Obrázek 23: External Interrupt 2
Posledním typem externích přerušení je "Key return interrupt". Toto přerušení je vyvoláno, dojde-li k sestupné hraně na alespoň jednom z osmi příslušných pinů. Na tyto vstupy jsou přivedeny signály DI_01–DI_04 a jejich negace. To by se mohlo zdát zbytečné, protože na obrázcích "Obrázek 22: External Interrupt 1" a "Obrázek 23: External Interrupt 2" jsou vidět volná obecná přerušení INTP0–INTP3, INTP7 a INTP8. Ale INTP7 použít nelze, protože je vyvedeno na programovacím hřebínku a přerušení INTP1–INTP3 jsou spojeny s jedním z budičů sběrnice CAN. Takže zbývají pouze INTP0 a INTP8 a to je pro čtyři signály málo.
42
Obrázek 24: Key Return Interrupt
Na záložce "Key Return Interrupt" povolím všechny piny a u prvních tří pinů lze zvolit, zda budou na portu číslo 4 nebo na portu číslo 5, nastavím port číslo 5. Ostatní piny jsou na portu číslo 5 pevně. Viz obrázek "Obrázek 24: Key Return Interrupt".
5.1.5 Nastavení "Serial" Co se sériové komunikace týče, má mikrokontrolér UPD70F3377A k dispozici pět rozhraní UART, dvě rozhraní CSIB (SPI) a jedno rozhraní IIC (I2C). Použil jsem UARTD3 a CSIB1. Parametry komunikace pomocí UART jsou: 8 datových bitů, LSB, bez parity, 1 stop bit a přenosová rychlost 115 200 bps. Viz obrázek "Obrázek 25: UART".
43
Obrázek 25: UART
Parametry komunikace po rozhranní SPI jsou následující: rychlost 375 000 bps, 16 datových bitů a MSB. Mikrokontrolér řídí komunikaci, je tedy master. Zprávy budu vysílat po jedné, a proto vyberu "Single transfer mode". Smysl hodinového signálu je takový, že jednotlivé bity se vzorkují na sestupnou hranu hodinového signálu, a pokud se nevysílá, musí být hodinový signál v logické nule (8). Nastavení je zobrazeno na obrázku "Obrázek 26: SPI". Z tohoto obrázku je patrné, že smysl hodinového signálu se volí výběrem jedné z ilustrací "Type 1"–"Type 4", našemu případu odpovídá ilustrace "Type 3". Tyto ilustrace mají i v originále špatnou kvalitu a texty v nich obsažené jsou nečitelné.
44
Obrázek 26: SPI
5.1.6 Nastavení "A/D Converter" Mikrokontrolér
UPD70F3377A
obsahuje
jeden
pětivoltový
šestnáctikanálový
desetibitový A/D převodník. Použito je všech šestnáct kanálů. Na šesti kanálech jsou připojeny Hallovy senzory proudu, které měří proudy procházející vstřikovači. Na čtyřech kanálech jsou připojeny zpětné vazby od obvodů zatěžujících PWM vstupy. Pomocí dvou kanálů se měří výstupy řídicí jednotky pro napájení senzorů. Zbylé čtyři kanály měří napětí na digitálních vstupech testovací jednotky. Nastavím rozsah kanálů AIN0–AIN15 a "Continuous scan mode", aby A/D převodník cyklicky měřil všechny kanály. Čas konverze zvolím 17 us, to odpovídá maximální možné přesnosti. Viz obrázek "Obrázek 27: A/D Converter".
45
Obrázek 27: A/D Converter
5.1.7 Nastavení "Timer" V nastavení "Timer" se nastavují všechny čítače/časovače. Čítám pouze signál odvozený z hodin procesoru, takže budu používat termín časovač. Mikrokontrolér UPD70F3377A má celkem osm šestnáctibitových časovačů. Potřebuji minimálně čtyři časovače: časovač pro generování signálů EPS a ESS, časovač pro generování signálu PWM_OUT, časovač pro měření PWM vstupů a časovač pro generování časových prodlev. Jako časovač pro generování signálů EPS a ESS musím použít TAA0, protože jsem tak navrhnul HW. Tento časovač musím použít v režimu interval timer. Důležité je pouze nastavit režim časovače "Internal clock" a povolit výstupy a přerušení. Viz obrázek "Obrázek 28: TAA0". Zbylé nastavení nebude "pevné", ale bude modifikováno ve FW. 46
Obrázek 28: TAA0
Obrázek 29: TAA1
47
Pro generování signálu PWM_OUT musím použít časovač TAA1 v režimu "PWM output", opět z HW důvodů. Nastavím si periodu 2 ms a povolím výstup na pinu "TOAA10". Na velikosti střídy nezáleží, bude se měnit podle pokynů z PC. Přerušení není potřeba. Viz obrázek "Obrázek 29: TAA1". Pro měření PWM vstupů mohu použít libovolný časovač mimo TMM0, který je pro tento úkol příliš jednoduchý. Volím časovač TAA2 a vyberu "free-running mode". Ve firmwaru budu pouze číst jeho hodnotu a vypočítávat z ní uplynulý čas. Proto nezáleží na nastavení compare registrů. Nejdelší časový úsek, který budu měřit je 2 ms neboli 500 Hz. Při maximální frekvenci hodinového signálu (24 MHz) je frekvence přetékání šestnáctibitového časovače 366 Hz. To znamená, že nemusím generovat přerušení a hodinový signál můžu nastavit na 24 MHz. Viz obrázek "Obrázek 30: TAA2".
Obrázek 30: TAA2
48
Posledním použitým časovačem je TMM0. Je to nejjednodušší z časovačů a lze jej použít pouze pro generování časových intervalů. Ve FW je občas nutné vygenerovat časové zpoždění a k tomu je tento časovač ideální Délku intervalu nastavím 10 us. Přerušení generovat nepotřebuji, budu si cyklicky kontrolovat interrupt flag. Nastavení je na obrázku "Obrázek 31: TMM0".
Obrázek 31: TMM0
5.2 Použité algoritmy Firmware je velice rozsáhlý, a proto nebudu popisovat vše, navíc velkou část kódu vytvořil generátor kódu Applilet2. Samotný kód vepisuji do vygenerovaného kódu mezi komentáře: /* Start user code. Do not edit comment generated here */ a /* End user code. Do not edit comment generated here */. Díky tomu je možné se vždy vrátit do fáze generování kódu a do stávajícího kódu vygenerovat další nebo pozměnit stávající. Popis věcí typu „digitální výstupy se ovládají nastavením či snulováním jednotlivých pinů“ a „střída PWM signálu se mění zápisem hodnoty do příslušného komparačního registru“ je nejspíš zbytečný. Proto v následujících kapitolách popíši jen vybrané složitější funkce a algoritmy:
komunikace s PC, generování signálů EPS a ESS, generování analogových signálů, analogové vstupy mikrokontroléru, měření PWM signálů. 49
5.2.1 Komunikace s PC Pro komunikaci s PC je z historických důvodů použit následující textový protokol (čísla se posílají jako znaky): STX STX STX STX parametr data ETX checksum '255'. Parametr je jednobajtový, data mají běžně 1–5 bajtů a většinou se jedná o textový zápis čísla. Úspěšný příjem zprávy se potvrdí ACK, je-li něco v nepořádku, vyšle se NAK a protistrana vysílání zprávy zopakuje. Kontrolní součet checksum se spočítá jako XOR parametru a všech bajtů dat. Je-li checksum menší než 32, přičte se k němu 32, pokud vyjde checksum 255, použije se hodnota 254. Výjimkou je pouze počáteční komunikace. Protokol je sice stejný, ale testovací jednotka čeká čtyři znaky STX a na pozici parametru určený znak ve FW označený jako „TEST“. Zpráva musí být opět ukončena znakem '255'. Jakmile testovací jednotka obdrží takovouto zprávu, ihned ji nezměněnou odešle zpět, v tomto režimu testovací jednotka ACK neposílá. Kontrola ETX a checksum není nutná, protože případná chyba by byla ihned odhalena na straně PC. Pokud PC obdrží totožnou zprávu, jakou vyslalo, odešle ACK a obě zařízení již budou komunikovat standardně. Jinak odešle NAK a novou zprávu s parametrem TEST. V normálním režimu testovací jednotka nikdy nezačne komunikovat, pouze odpovídá. Příjme-li testovací jednotka požadavek, aby něco nastavila, tak to nenastaví, ale uloží si, co má nastavit. Pokud testovací jednotka přijme zprávu s parametrem START_G, tak nastaví všechny dříve uložené hodnoty. Stejně tak si testovací jednotka poznamenává, co má změřit. Po příjmu zprávy s parametrem START_M zpracuje vstupní data a odešle je. Vyšle-li PC zprávu s parametrem FIRMWARE, pak testovací jednotka odešle jako data svoji verzi FW. Testovací jednotka ignoruje zprávy s neznámým parametrem (pouze odpoví ACK nebo NAK). Všechny parametry jsou jednobajtové a jejich číselná hodnota musí být větší než 31 a menší než 255. Testovací jednotka přijímá zprávy délky 9–13 bajtů v závislosti na délce dat. Odeslané zprávy mají také délku 9–13 bajtů, jedinou výjimku tvoří zpráva s parametrem FIRMWARE, tato zprava může mít celkem 50
až 255 bajtů. Přijímaná a vysílaná data jsou většinou čísla zapsaná jako text. Například číslo 10 se skládá ze 2 znaků 1 a 0. Princip rozkladu čísla na znaky a zpětného složení čísla ze znaků je velice jednoduchý. Využívá se toho, že každé číslo je složeno z číslic násobených příslušnou mocninou čísla 10. 10 Číslice se převede na znak přičtením čísla 48, což je pořadí znaku nula v ASCII. Znak se tedy převede na číslici odečtením čísla 48. Při skládání čísla pouze posčítám jednotlivé číslice vynásobené ásobené příslušnými mocninami čísla 10. Při rozkladu opakovaně celočíselně dělím číslem 10 a jednotlivé číslice jsou vždy zbytkem po tomto dělení.
5.2.2 Generování signálů EPS a ESS Signály EPS a ESS jsou simulované si signály od čidel EPS a ESS. Tyto signály moho mohou být různé. Pro tuto aplikaci budu uvažovat, že signál ESS je jednou za otáčku motoru a má N zubů, z počtu N jsou 2 zuby vynechané. A signál EPS budu uvažovat jako jeden pulz za dvě otáčky motoru. Viz obrázek "Obrázek 32:: Signály ESS a EPS EPS".
Obrázek 32: Signály ESS a EPS
Na tomto obrázku je počet zubů ESS 10 a z toho jsou 2 zuby vynechány. Šířka EPS pulzu je zvolena trojnásobná oproti ESS pulzu. Červeně označené pomyslné hrany vynechaných zubů značí úhel motoru 0 stupňů. Signál EPS může být posunu posunutý, zde je posunutí o 0 stupňů. Pro zjednodušení ení volím, že pulzy ESS budou symetrické sy a pulz EPS bude začínat vždy na náběžnou nou nebo sestupnou hranu některého z ESS pulzů. Šířka EPS pulzu bude trojnásobná oproti šířce ESS pulzu. zu. Tyto signály generuji pomocí časovače TAA0 v režimu interval timer. Jednotlivá přetečení časovače znamenají hrany ESS pulzů. Nyní stačí pouze si hlídat, v jaké fázi se nacházím a měnit režimy výstupů časovače. Výstupy mají čtyři režimy: "toggle", "force 0", "force 1" a "freeze". Výstup pro EPS nastavím ve 51
správné fázi na "force 1" a po třech přetečeních zpět na "force 0". Výstup pro EPS je celou dobu v režimu "toggle", jen po dobu vynechaných pulzů je v režimu "force 0". Tyto výstupy je možné i jednoduše znegovat (např. v Applilet2), ale zatím nevím, zda FW řídicí jednotky bude potřebovat přímý nebo negovaný signál.
5.2.3 Generování analogových signálů Všechny analogové signály jsou generovány pomocí externích D/A převodníků DAC124S085, protože mikrokontrolér UPD70F3377A žádné D/A převodníky nemá. Zapojení D/A převodníků je popsáno v kapitolách 3.6 a 3.7.4. Všechny D/A převodníky komunikují po rozhraní SPI, nastavení SPI je popsáno v kapitole 5.1.5. Je třeba napsat podprogramy, které poskládají zprávy, tak aby jim D/A převodník porozuměl. Viz obrázek "Obrázek 33: Komunikace s D/A převodníky".
Obrázek 33: Komunikace s D/A převodníky(8)
Zprávu vytvořím tak, že nejdříve snuluji horní 4 bity dat určených k vysílání. Používám pouze příkaz k zápisu do registru s aktualizací výstupu, takže nastavím bit OP0. Volbou bitů A0 a A1 vyberu správný kanál. Výslednou zprávu uložím do bufferu, z kterého se automaticky vysílá. Data ovšem nepřijímám ve správném formátu. Pro zatěžovací výstupy přijímám data v jednotkách mA a pro napěťové výstupy přijímám data v desetinách procent maxima,
52
což je 5 V. Ihned po příjmu data přepočítám a uložím. Zprávu ale netvořím, nejprve musí přijít příkaz k aktualizaci (generování) výstupů. Viz kapitolu 5.2.1. Samotný přepočet je jednoduchý. Uložená dat nejprve vynásobím novou maximální hodnotou, což je 4095. Poté podělím předešlou maximální hodnotou, což je u desetin procenta 1000 a u proudu 2000 mA. Proč lze nastavit maximálně proud 2 A je popsáno v kapitole 3.7.4.
5.2.4 Analogové vstupy mikrokontroléru Mikrokontrolér UPD70F3377A má jeden pětivoltový šestnáctikanálový desetibitový A/D převodník. Nastavení A/D převodníku je popsáno v kapitole 5.1.6 a to i se stručným seznamem, co je k jednotlivým vstupům připojeno. Z tohoto nastavení je patrné, že A/D převodník měří neustále všechny vstupy. Výsledkem tohoto měření je pole hodnot. Získané pole hodnot zapíši do pole rotačních polí. Pole polí si lze pro jednoduchost představit jako dvojrozměrné pole(15). Do tohoto pole zapisuji naměřené hodnoty řádek po řádku. V momentě kdy jsem již zapsal na poslední řádek a potřebuji zapsat na další, zapíši tuto hodnotu na první řádek. Pozice na kterou budu zapisovat tedy "rotuje". Zápis dat je podobný jako zápis do fronty realizované vektorem (16), viz obrázek "Obrázek 34: Kruhové (rotační) pole". Čtení dat je ale jiné. Čtu vždy všechna data a žádná data neodebírám, stará data jsou totiž automaticky přepsána.
Obrázek 34: Kruhové (rotační) pole(16)
53
Pokud řádky reprezentují jednotlivé zápisy, pak sloupce reprezentují jednotlivé kanály. Před odesláním změřených dat musím tato data nejprve zprůměrovat a přepočítat. Naměřená data mohou obsahovat i náhodné zákmity a průměr by byl nepřesný. Proto jsem se rozhodl, že z naměřených hodnot nejdříve vyloučím extrémy. Naměřených hodnot je 25 a vyloučím 5 největších a 5 nejmenších čísel. Počet naměřených i vyloučených hodnot je dán konstantami a lze jej tedy snadno pozměnit. Naměřené hodnoty si zkopíruji do pole a začnu toto pole řadit dvojitým bublesortem. To znamená, že při každé iteraci řazení mi "vybublá" jeden nejmenší a jeden největší prvek. V tomto případě tedy provedu 5 iterací. Zbylých 15 hodnot ve středu pole by bylo zbytečné řadit, protože z nich udělám průměr. Tento průměr převedu do požadovaného rozsahu tak, že jej vynásobím novým maximálním rozsahem a podělím stávajícím. Stávající maximální rozsah je 1024, ale hodnoty jsou ukládány jako šestnáctibitové, posunuté o 6 bitů do leva. Dělení číslem 1024 odpovídá posuvu o deset bitů doprava, takže po vynásobení novým maximálním rozsahem již dělit nemusím, stačí mi pouze bitový posuv o 16 míst doprava. Pak již postupuji podle protokolu popsaného v kapitole 5.2.1.
5.2.5 Měření PWM signálů Pro měření PWM signálů používám volně běžící časovač TAA2, jehož nastavení je popsané v kapitole 5.1.7. Jednotlivé PWM signály jsou přivedeny na vstupy externích přerušení. Nastavení externích přerušení je popsáno v kapitole 5.1.4. V obslužných rutinách jednotlivých přerušení měřím vždy uplynulý čas od poslední náběžné hrany. K měření používám zmíněný volně běžící časovač TAA2. Ten sice může přetéci, ale pokud přeteče, tak maximálně jednou a hodnota v registru časovače bude v tomto případě menší, než hodnota změřená při poslední náběžné hraně, takže přetečení poznám. Tento problém je vysvětlen v kapitole 5.1.7. Pokud při přerušení detekuji sestupnou hranu, měřím šířku pulzu nebo-li dobu trvání logické 1. Detekuji-li náběžnou hranu, měřím periodu pulzu. Doba trvání logické 1 je na obrázku "Obrázek 35: Měření PWM signálu" označena jako "a" a perioda odpovídá součtu dob "a" 54
a "b"(17). Střídu PWM signálu nepočítám záměrně, doba trvání logické 1 je pro mě lepší.
Obrázek 35: Měření PWM signálu(17)
Při měření vždy odečtu aktuální stav časovače od stavu při poslední náběžné hraně, pokud by byl výsledek záporný, musím přičíst hodnotu 65 536, protože mi přetekl šestnáctibitový časovač. Výsledek přepočítám na mikrosekundy vydělením číslem 24. Takt hodin je sice 48 MHz, ale periférie jsou taktovány pouze na 24 MHz, viz kapitolu 5.1.2. Naměřená data ukládám do pole. Před odesláním dat si spočítám jejich medián. Pole má patnáct prvků, lichý počet prvků je zvolen záměrně, abych si usnadnil práci. Pole seřadím a medián je prostřední prvek. Použiji bublesort, to znamená, že nemusím řadit celé pole. V tomto případě mi stačí seřadit osm prvků. Pak již postupuji podle protokolu popsaného v kapitole 5.2.1.
55
6 Závěr Během tvorby této práce jsem navrhnul, nechal vyrobit a naprogramoval zařízení pro testování řídicích jednotek Motorpal CR ECU verze 4.X a jejich budoucích kompatibilních verzí. Tato testovací jednotka dokáže simulovat signály na všech vstupech řídicí jednotky a dokáže měřit a zatěžovat všechny její výstupy. Před výrobou bylo elektrické schéma zkontrolováno a schváleno vedoucím práce. Při návrhu HW jsem kladl důraz na spolehlivost a odolnost. Digitální vstupy a výstupy testovací jednotky včetně signálových jsem vyřešil pomocí tranzistorových polí ULN2803A, které jsou k tomuto úkolu určeny. Takže jsou odolné a mikrokontrolér je velice dobře chráněn před vnějšími vlivy. Tranzistorová pole ULN2803A jsem použil také k jednoduchému připínání odporové zátěže. Komunikace s PC byla vyřešena pomocí obvodu FT232RL, který jsem z důvodu bezpečnosti opticky oddělil. Mikrokontrolér nedisponuje D/A převodníky, proto jsem použil externí převodníky DAC124S085. Analogové výstupy testovací jednotky chráním Zenerovými diodami a transily. Výstupy PWM signálů řídicí jednotky umožňuje testovací jednotka zatěžovat proudem teoreticky až do 2 A, ale předpokládaná maximální zátěž je do 1 A. Díky šesti Hallovým senzorům proudu ACS756SCA-050B je možné měřit proud protékající vstřikovači v rozsahu od -50 A do 50 A. Testovací jednotka má 2 budiče sběrnice CAN SN65HVD1050. Navíc oproti zadání je možné měřit napětí digitálních výstupů řídicí jednotky a případně na nich detekovat i signály, ty ale nejsou doposud definovány. Při návrhu DPS jsem si vystačil se čtyřmi vrstvami. Šířky všech spojů jsem řádně naddimenzoval. Pro minimalizaci rušení jsem rozlil země. Spoje určené pro vstřikovače jsem umístil daleko od všech signálových spojů, aby je nemohly zarušit. Při návrhu DPS jsem se dopustil jedné drobné chyby. Pouzdro pro krystal se překrývá s pouzdry dvou kapacitorů a krystal nemohl být strojově osazen. Tento typ chyby neumí návrhový SW KiCad odhalit. Naštěstí ruční zapájení krystalu bylo bez problému možné a vzhledem k tomu, že se jedná o kusovou výrobu, zabrala oprava všech testovacích jednotek pouze několik minut. Dále nebyl osazen chladič, protože nebyl dostupný. 56
Všechny ostatní komponenty mohly být bez problému osazeny. Výroba testovacích jednotek tedy dopadla úspěšně. Firmware jsem si nejdříve vygeneroval programem Applilet2. To mi značně usnadnilo práci,
protože
Applilet2
přednastavil
prakticky
veškeré
potřebné
registry
mikrokontroléru a já jsem se nemusel zabývat jejich vyhledávání v datasheetu. Navíc se tak minimalizovala šance, že zapomenu nějaký registr nastavit. Vygenerovaný kód samozřejmě není dostatečný, jedná se spíše o nastavení periferií mikrokontroléru. Do vygenerovaných částí kódu jsem nijak nezasahoval, pouze jsem kód přidával na místech označených dvojicí komentářů: /* Start user code. Do not edit comment generated here */ a /* End user code. Do not edit comment generated here */. To má výhodu v tom, že je možno do již hotového kódu dovygenerovat další kód, po případě změnit generovaný kód pomocí Applilet2. V popisu zdrojového kódu jsem popsal pouze některé vybrané algoritmy, protože pokud bych popisoval vše, byla by práce příliš rozsáhlá. Testovací jednotka nefunguje samostatně, je řízena pomocí ovládacího SW z PC a testuje řídicí jednotku, která má k tomu uzpůsobený testovací FW. Na začátku práce jsem předpokládal, že bude testovací jednotka dokončena současně s ovládacím SW pro PC a testovacím FW pro řídicí jednotku. Objevil se ale důležitější projekt, který dostal za úkol kolega odpovědný za vývoj ovládacího SW. Z tohoto důvodu se nemohl věnovat vývoji ovládacího SW a ten neexistuje. Ovládací SW sice není součástí této práce, ale bez něj nelze otestovat plnou funkčnost testovací jednotky. Firmware testovací jednotky je rozšiřitelný a modifikovatelný. Testovací jednotka dokáže navíc oproti zadání detekovat signály na digitálních výstupech řídicí jednotky. Zatím ale není jisté, zda bude tato funkce potřeba a případné signály nejsou definovány. Testovací jednotka dále obsahuje HW pro komunikaci po sběrnici CAN, ale FW ho nepoužívá, protože komunikaci s řídicí jednotkou po sběrnici CAN má na starost PC. Takže například v těchto oblastech může být kód rozšířen.
57
Seznam použité literatury 1. Renesas. V850FG3. [Online] 2008. [Citace: 19. 5 2015.] Dostupné z WWW:
. 2. —. QB-MINI2. [Online] 2011. [Citace: 19. 5 2015.] Dostupné z WWW: . 3. Future Technology Devices International Limited. FT232RL. [Online] 2010. [Citace:
19.
5
2015.]
Dostupné
z WWW:
. 4. Avago Technologies. HCPL-2300, HCPL-0300. [Online] 2007. [Citace: 19. 5 2015.] Dostupné z WWW: . 5. Texas Instruments. LP2981. [Online] 2008. [Citace: 19. 5 2015.] Dostupné z WWW: . 6. —. LM2576, LM2576HV. [Online] 2013. [Citace: 19. 5 2015.] Dostupné z WWW: . 7. —. ULN2803A. [Online] 2015. [Citace: 19. 5 2015.] Dostupné z WWW: . 8. —. DAC124S085. [Online] 2013. [Citace: 19. 5 2015.] Dostupné z WWW: . 9. Multicomp. Darlington Transistors. [Online] 2012. [Citace: 19. 5 2015.] Dostupné z WWW: . 10. Texas Instruments. TLC272... [Online] 2002. [Citace: 19. 5 2015.] Dostupné z WWW: . 11. STMicroelectronics. BD909/911 BD910/912. [Online] 1999. [Citace: 19. 5 2015.] Dostupné z WWW: . 58
12. —. SMAJ. [Online] 2010. [Citace: 19. 5 2015.] Dostupné z WWW: . 13. Allegro Microsystems. ACS756. [Online] 2015. [Citace: 19. 5 2015.] Dostupné z WWW: . 14. Návrh elektroniky v programu KiCAD. www.hw.cz. [Online] [Citace: 19. 5 2015.] Dostupné
z WWW:
. 15. Virius, Miroslav. Jazyky C a C++ kompletní kapesní průvodce programátora. Praha : Grada publishing, a.s., 2006. ISBN 80-247-1494-9. 16. Matoušek, David. Objektové programování v C++ v příkladech. Praha : BEN technická literatura, 2011. ISBN 978-80-7300-421-7. 17. Matoušek, David a Brtník, Bohumil. Programování mikrokontrolérů s jádrem 8051 v jazyce C. Praha : BEN - technická literatura, 2010. ISBN 978-80-7300-264-0.
59
Seznam obrázků Obrázek 1: Schéma zapojení mikrokontroléru. .............................................................. 14 Obrázek 2: FT232RL ...................................................................................................... 15 Obrázek 3: Konektor TYCO_1241434-1 ....................................................................... 16 Obrázek 4: Zapojení konektoru pro připojení pomocných zařízení ............................... 18 Obrázek 5: Napájecí zdroje............................................................................................. 19 Obrázek 6: ULN2803A(7) .............................................................................................. 20 Obrázek 7: Schéma zapojení digitálních výstupů ........................................................... 21 Obrázek 8: Zapojení analogových výstupů .................................................................... 22 Obrázek 9: Připojení signálů DI_01–DI_04 k mikrokontroléru ..................................... 24 Obrázek 10: Připojení zatěžovacích rezistorů k DI_01–DI_04 ...................................... 25 Obrázek 11: Měření PWM vstupů .................................................................................. 25 Obrázek 12: Zatížení vstupů pro PWM signály.............................................................. 27 Obrázek 13: Napěťové vstupy ........................................................................................ 29 Obrázek 14: ACS756SCA-050B .................................................................................... 30 Obrázek 15: Testovací jednotka ..................................................................................... 33 Obrázek 16: Main system clock...................................................................................... 35 Obrázek 17: Port9H ........................................................................................................ 37 Obrázek 18: PortCM ....................................................................................................... 38 Obrázek 19: PortCS ........................................................................................................ 38 Obrázek 20: PortDLL ..................................................................................................... 39 60
Obrázek 21: PortDLH ..................................................................................................... 40 Obrázek 22: External Interrupt 1 .................................................................................... 41 Obrázek 23: External Interrupt 2 .................................................................................... 42 Obrázek 24: Key Return Interrupt .................................................................................. 43 Obrázek 25: UART ......................................................................................................... 44 Obrázek 26: SPI .............................................................................................................. 45 Obrázek 27: A/D Converter ............................................................................................ 46 Obrázek 28: TAA0.......................................................................................................... 47 Obrázek 29: TAA1.......................................................................................................... 47 Obrázek 30: TAA2.......................................................................................................... 48 Obrázek 31: TMM0 ........................................................................................................ 49 Obrázek 32: Signály ESS a EPS ..................................................................................... 51 Obrázek 33: Komunikace s D/A převodníky(8) ............................................................. 52 Obrázek 34: Kruhové (rotační) pole(16) ........................................................................ 53 Obrázek 35: Měření PWM signálu(17) .......................................................................... 55
61
Seznam použitých zkratek A/D – analogově digitální převodník ACK – acknowledgement (potvrzovací znak znamenající souhlas) ASCII – American Standard Code for Information Interchange (tabulka znaků) CD – Compact Disc, česky kompaktní disk CMOS
–
Complementary
Metal–Oxide–Semiconductor
(technologie
výroby
integrovaných obvodů) CR – Common rail (systém vstřikování) CSIB – Clocked Serial Interface (zkratka, kterou Renesas označuje sběrnici SPI) DPS – deska plošných spojů DMIPS – Dhrystone MIPS (jednotka výkonu podle benchmarku "Dhrystone") DRC – Design Rule Checking, česky kontrola návrhových pravidel D/A – digitálně analogový převodník ECU – Engine Control Unit, česky řídicí jednotka motoru EPS – Engine Position Sensor, česky senzor polohy motoru ESS – Engine Speed Sensor, česky senzor rychlosti motoru ETX – End of Text (znak značící konec textu) FW – firmware (software vestavěného zařízení) HW – hardware (fyzicky existující technické vybavení) I2C – Inter-Integrated Circuit (počítačová sběrnice) IIC – Inter-Integrated Circuit (počítačová sběrnice) 62
LED – Light Emitting Diode, česky elektroluminiscenční dioda LSB – Least Significant Bit, česky nejméně významný bit MCU – Micro Controller Unit, česky mikrokontrolér MIPS – Million Instruction Per Second, česky milion instrukcí za sekundu MSB – Most Significant Bit, česky nejvýznamnější bit NAK – Negative-Acknowledge (potvrzovací znak znamenající nesouhlas) NMI – Non-Maskable Interrupt, česky nemaskovatelné přerušení PC – Personal Computer, česky osobní počítač PCB – Printed Circuit Board, česky deska plošných spojů PPL – Phase-Locked Loop, česky fázový závěs PWM – Pulz Width Modulation, česky pulzně šířková modulace SPI – Serial Peripheral Interface, česky sériové periferní rozhraní STX – Start of Text (znak značící začátek textu) SW – software (programové vybavení) TTL – Transistor-Transistor Logic (integrované obvody založené na bipolárních tranzistorech) UART – Universal Asynchronous Receiver and Transmitter, česky univerzální asynchronní přijímač a vysílač USB – Universal Serial Bus, česky univerzální sériová sběrnice XOR – exclusive or (logická operace)
63
Přílohy – obsah přiloženého CD Všechny přílohy jsou na přiloženém CD, které je vytvořeno ve dvou verzích. První verze je veřejná, neobsahuje žádné citlivé informace a může být uložena například v knihovně školy. Druhá verze je neveřejná, tato verze nesmí být zveřejněna, protože obsahuje citlivé informace. V kořenovém adresáři veřejné verze CD se nachází:
text bakalářské práce v souboru "bakalarska_prace.pdf", adresář Datasheety s datasheety vybraných elektronických součástek, elektrické schéma testovací jednotky v souboru "schema.pdf".
V kořenovém adresáři neveřejné verze CD se nachází:
text bakalářské práce v souboru "bakalarska_prace.pdf", adresář Datasheety s datasheety vybraných elektronických součástek, elektrické schéma testovací jednotky v souboru "schema.pdf", adresář Firmware obsahující zdrojové kódy k FW testovací jednotky, adresář DPS obsahující zdrojové soubory k tvorbě DPS a kompletní podklady pro její výrobu.
64