proporcionálny servopohon bez snímača polohydiplom.utc.sk/wan/656.pdfmarián dutko, duel...

61
Proporcionálny servopohon bez snímača polohy DIPLOMOVÁ PRÁCA Bc. JOZEF HUTIRA ŽILINSKÁ UNIVERZITA V ŽILINE Elektrotechnická fakulta Katedra telekomunikácií Študijný odbor: TELEKOMUNIKÁCIE Vedúci diplomovej práce: Ing. Marián Dutko, DUEL Námestovo, s.r.o Stupeň kvalifikácie: inžinier (Ing.) Dátum odovzdania diplomovej práce: 19. 5. 2006 ŽILINA 2006

Upload: others

Post on 03-Jan-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Proporcionálny servopohon bez snímača polohy

DIPLOMOVÁ PRÁCA

Bc. JOZEF HUTIRA

ŽILINSKÁ UNIVERZITA V ŽILINE Elektrotechnická fakulta Katedra telekomunikácií

Študijný odbor: TELEKOMUNIKÁCIE

Vedúci diplomovej práce: Ing. Marián Dutko, DUEL Námestovo, s.r.o

Stupeň kvalifikácie: inžinier (Ing.) Dátum odovzdania diplomovej práce: 19. 5. 2006

ŽILINA 2006

Abstrakt

V dnešnej dobe hrá veľkú úlohu aj regulácia a automatizácia. Medzi jednu z oblastí

patrí aj regulácia tepelnovodného vykurovania objektov. Súčasťou takýchto regulačných

systémov je veľa komponentov, medzi ktoré patria aj regulačné ventily. Ako výhodný

spôsob riadenia týchto ventilov sa ukazuje riadenie pomocou servopohonu. Práve návrh

riadiacej jednotky takéhoto servopohonu je predmetom tejto práce.

Práce sa zaoberá návrhom riadiacej jednotky servopohonu umožňujúcej

proporcionálne ovládanie na základe vstupného analógového riadiaceho signálu. Návrh je

rozdelený do niekoľkých častí. Prvá časť je zameraná na analýzu požiadaviek na riadiacu

jednotku a opisu jej základných častí. Ďalšie časti sa zaoberajú samotným návrhom

jednotlivých blokov, výsledkom ktorých je skutočné obvodové riešenie jednotky.

Posledná časť je venovaná niekoľkým verziám modifikácií jednotky, ktoré by mali

pokryť širokú oblasť použitia.

2

Žilinská univerzita v Žiline, Elektrotechnická fakulta,

Katedra telekomunikácií ________________________________________________________________________

ANOTAČNÝ ZÁZNAM - DIPLOMOVÁ PRÁCA

Priezvisko, meno: Hutira Jozef školský rok: 2005/2006

Názov práce: Proporcionálny servopohon bez snímača polohy

Počet strán: 42 Počet obrázkov: 25 Počet tabuliek: 3

Počet grafov: 0 Počet príloh: 3 Použitá lit.: 7

Anotácia (slov resp. český jazyk): Práca sa zaoberá návrhom riadiacej jednotky

servopohonu umožňujúcej proporcionálne ovládanie na základe vstupného analógového

riadiaceho signálu. Práca obsahuje analýzu požiadaviek na jednotku, popis a návrh jej

blokov a riadiaceho programu. Výsledkom je skutočné obvodové riešenie jednotky.

Anotácia v cudzom jazyku (anglický resp. nemecký): Master Thesis concern about

design control unit servodrive enabling proporcional control dependent on input analog

control signal. This theme includes analysis of request on unit, specification and

designing blocks and control program. As a result is real electric circuit.

Kľúčové slová: servopohon, riadenie, mikrokontrolér, program , kalibrácia, riadiaca

jednotka

....................................................................................................................................

Vedúci práce: Ing. Marián Dutko, DUEL Námestovo, s.r.o

Recenzent práce : Ing. Ján Lach, STU Bratislava, strojnícka fakulta

Dátum odovzdania práce: 19.05.2006

3

OBSAH

OBSAH................................................................................................................................4 Zoznam obrázkov a tabuliek ................................................................................................6

Zoznam skratiek a symbolov ............................................................................................7

Úvod ....................................................................................................................................8

1 Základný popis ...............................................................................................................9

2 Blok spínačov napätia..................................................................................................11 2.1 Relé ako spínač .......................................................................................................12 2.2 Bipolárny tranzistor ako spínač ..............................................................................12 2.3 Unipolárny tranzistor ako spínač ............................................................................13 2.4 Realizácia................................................................................................................13

3 Prúdový snímač ............................................................................................................15

4 Napájací zdroj ..............................................................................................................17

5 Mikrokontrolér ATtiny 15L........................................................................................19 5.1 Základné vlastnosti .................................................................................................20 5.2 Analógovo – digitálny prevodník ...........................................................................22 5.3 I/O port B ................................................................................................................24

6 Riadiaci program .........................................................................................................25 6.1 Inicializácia periférií mikrokontroléra ....................................................................25 6.2 Kalibrácia................................................................................................................26

6.2.1 Posuv do smeru „Otvorené“.............................................................................28 6.2.2 Posuv do smeru „Zatvorené“ ...........................................................................28 6.2.3 Meranie uplynutého času .................................................................................29

6.3 Výpočet novej polohy servopohonu .......................................................................31 6.3.1 Násobenie dvoch 16 bitových čísel..................................................................33 6.3.2 Delenie 32 bitového čísla 16 bitovým číslom..................................................35

6.4 Aktualizácia súčasnej polohy..................................................................................37 6.5 Vývojový diagram celého riadiaceho programu.....................................................38

7 Praktická realizácia Riadiacej jednotky servopohonu.............................................39

7.1 Popis zapojenia .......................................................................................................39 7.2 Schéma zapojenia....................................................................................................41

8 Modifikácie ...................................................................................................................42 8.1 Verzia 1.1 - Proporcionálne riadenie polohy, riad. signál 0–5V, napájanie 5V ....42

8.1.1 Zdroj.................................................................................................................42 8.1.2 Delič riadiaceho signálu...................................................................................43 8.1.3 Prepojka JP2.....................................................................................................43

8.2 Verzia 1.2 - Proporcionálne riadenie polohy, riad. signál 0–10V, napájanie 12V .44 8.2.1 Zdroj.................................................................................................................44 8.2.2 Delič riadiaceho signálu...................................................................................44 8.1.3 Prepojka JP2.....................................................................................................44

8.3 Verzia 1.3 - Proporcionálne riadenie polohy, riad. signál 0–10V, napájanie 24V .45 8.4 Verzia 2.1 a 2.2 – Dvojstav. riadenie (Otvorený - Zatvorený), nap. 12V a 24V....45

4

8.4.1 Riadiaci program...............................................................................................46

Záver .................................................................................................................................48

Zoznam použitej literatúry .............................................................................................49

PRÍLOHOVÁ ČASŤ .......................................................................................................52

5

Zoznam obrázkov a tabuliek Obr. 1.1 Bloková schéma Riadiacej jednotky servopohonu .............................................10 Obr. 2.1 Principiálna schéma Bloku spínačov napätia .....................................................11 Obr. 2.2 Blok spínačov s relé............................................................................................12 Obr. 2.3 Blok spínačov s bipolárnymi tranzistormi ..........................................................12 Obr. 2.4 Blok spínačov s unipolárnymi tranzistormi ........................................................13 Obr. 2.5 Blok spínačov napätia.........................................................................................14 Obr. 3.1 Schéma prúdového snímača ...............................................................................15 Obr. 4.1 Bloková schéma stabilizátora zo spätnou väzbou ..............................................17 Obr. 4.2 Doporučené zapojenie 78L05 .............................................................................18 Obr. 4.3 Schéma napájacieho zdroja.................................................................................18 Obr. 5.1 Bloková schéma ATtiny 15L..............................................................................21 Obr. 5.2 Bloková schéma AD prevodníka ........................................................................23 Obr. 5.3 Principiálna schéma jedného pinu portu.............................................................24 Obr. 6.1 Vývojový diagram kalibrácie .............................................................................27 Obr. 6.2 Posuv do smeru „Otvorené“ ...............................................................................28 Obr. 6.3 Posuv do smeru „Zatvorené“ ..............................................................................28 Obr. 6.4 Vývojový diagram násobenia dvoch 16b čísel ...................................................34 Obr. 6.5 Vývojový diagram delenia 32b čísla 16b číslom...............................................36 Obr. 6.6 Vývojový diagram Aktualizácia polohy servopohonu .......................................37 Obr. 6.7 Vývojový diagram riadiaceho programu ............................................................38 Obr. 7.1 Schéma zapojenia Riadiacej jednotky servopohonu...........................................41 Obr. 8.1 Schéma prvej úpravy zdroja ...............................................................................42 Obr. 8.2 Delič riadiaceho signálu .....................................................................................43 Obr. 8.3 Schéma druhej úpravy zdroja .............................................................................44 Obr. 8.4 Vývojový diagram riadiaceho programu ............................................................47 Tabuľka 2.1 - Funkčná tabuľka Bloku spínačov napätia .................................................11 Tabuľka 2.2 - Elektrické parametre IRF 7343.................................................................14 Tabuľka 4.1 - Elektrické parametre 78L05......................................................................18

6

Zoznam skratiek a symbolov

MCU Microcontroller Unit

Mikrokontrolér

RISC Reduced instruction set computer

Počítač s redukovanou inštrukčnou sadou

CISC Complex instruction set computer

Počítač s úplnou inštrukčnou sadou

ALU Arithmetic Logic Unit

Aritmeticko-logicka jednotka

FLASH Flash-EEPROM

Zrýchlená EEPROM

EEPROM Electrically Erasable Programmable Read-Only Memory

Elektricky mazateľná pamäť ROM

ISP In-System Programming

Programovanie priamo v systéme

SPI Serial Peripheral Interface

Sériové rozhranie

PWM Pulse Width Modulation

Pulzne šírkovú modulácia

ADC Analog to Digital Converter

Analógovo digitálny prevodník

7

Úvod

V dnešnej dobe hrá veľkú úlohu aj regulácia a automatizácia. Medzi jednu z oblastí

patrí aj regulácia tepelnovodného vykurovania objektov.

Používa sa veľa princípov regulácie, z ktorých každá má svoje výhody a nevýhody.

Najčastejšie sa používa termostatová regulácia.

Termostatová regulácia je založená na princípe teplotného čidla umiestneného v tzv.

referenčnej miestnosti a na nastavenej teplote, ktorá by v tejto miestnosti mala byť.

Termostat porovnáva, či je teplota vyššia alebo nižšia. Na základe tohto údaju sa aktivuje

zdroj tepla. Medzi výhody termostatovej regulácie patrí predovšetkým udržovanie stálej

teploty v miestnosti. V nej sa odráža aj vplyv poveternostných podmienok, slnečné

žiarenie a ďalšie faktory. Na druhej strane je ale ovplyvňovaná teplota celého objektu,

a tak napríklad vetranie v referenčnej miestnosti spôsobí vykurovanie v celom objekte,

prípadne zasvietenie slnka do tejto miestnosti, spôsobí, že sa tu síce bude udržovať

stabilná teplota, ale ostatné miestnosti budú chladnúť.

Vhodným riešením tohto nedostatku je použitie regulačných ventilov pred samotným

vykurovacím telesom (radiátorom) a ich regulácia podľa aktuálnej teploty miestnosti.

Tým sa odstránia teplotné rozdiely jednotlivých miestností, spôsobené tepelnými

stratami.

Na automatické regulovanie je vhodne použiť regulačný ventil so servopohonom, ktorý

na základe riadenia od vhodného regulátora prestavuje svoju polohu. Práve pre takýto

servopohon bola navrhnutá riadiaca jednotka popísaná v tejto práci. V jej záverečnej časti

je popísaných niekoľko verzií modifikácií, ktoré by mali pokryť širokú oblasť použitia.

8

Proporcionálny servopohon bez snímača polohy

1 Základný popis

Ako už napovedá samotný názov, úlohou je navrhnúť riadiacu jednotku pre

servopohon, ktorá by umožňovala proporcionálne ovládanie na základe vstupného

analógového riadiaceho signálu 0 – 5V. Koncové polohy servopohonu (otvorené -

zatvorené) sú determinované dvoma signálmi. Koncovú polohu „Otvorené“ ohraničuje

signál, ktorý generuje koncový spínač a koncovú polohu „Zatvorené“ ohraničuje signál

generujúci snímač prúdu elektromotora. Keďže nie je k dispozícii žiadny údaj o aktuálnej

polohe servopohonu, je nutné ho vypočítať na základe času, ktorý uplynie počas presunu

z jednej koncovej polohy do druhej. Kvôli odstráneniu integrovanej chyby polohy je

potrebné servopohon periodicky automaticky kalibrovať.

Celková koncepcia riešenia by sa dala rozdeliť do niekoľký funkčných blokov:

Blok spracovania riadiaceho signálu – jeho úlohou je spracovanie vstupného

signálu do formy vhodnej pre ďalšie spracovanie.

Blok spínačov napätia – na základe riadiacich signálov ovláda napájacie napätie

elektromotora.

Koncový spínač – generuje vhodný signál pri dosiahnutí koncovej polohy

Prúdový snímač – jeho výstupom je signál informujúci o aktuálnej hodnote

prúdu prechádzajúceho elektromotorom.

Riadiaca logika – zabezpečuje na základe vstupných údajov výpočet a zmenu

polohy servopohonu pomocou riadiacich signálov.

Napájací zdroj – poskytuje vhodné napájacie napätia pre ostatné funkčné bloky.

9

Bloková schéma:

Obr. 1.1 Bloková schéma Riadiacej jednotky servopohonu

V ďalších častiach bude uvedený popis návrhu jednotlivých blokov jednotky.

10

2 Blok spínačov napätia Na blok spínačov napätia elektromotora je kladených niekoľko požiadaviek:

• Jednoduché napájacie napätie +5V

• Zmena veľkosti a polarity výstupného napätia na základe riadiacich signálov

• Riadenie dvomi signálmi s napäťovými úrovňami TTL

• Minimálne straty pri spínaní

• Jednoduchá realizácia

Po analýze týchto požiadaviek je možné blok spínačov popísať nasledujúcou

principiálnou schémou:

Obr. 2.1 Principiálna schéma Bloku spínačov napätia

Funkčná tabuľka

ON – zopnutý spínač

OFF – rozopnutý spínač

R1 R2 S1 S2 S3 S4 UM0 0 ON OFF ON OFF 0 V0 1 ON OFF OFF ON + 5 V1 0 OFF ON ON OFF - 5 V1 1 OFF ON OFF ON 0 V

Tabuľka 2.1 - Funkčná tabuľka Bloku spínačov napätia

Ďalším krokom pri návrhu je výber vhodných spínacích prvkov. Do úvahy pripadajú

nasledovné tri druhy:

• Relé

• Bipolárny tranzistor

• Unipolárny tranzistor

11

2.1 Relé ako spínač

Blok spínačov s použitím relé by vyzeral nasledovne:

Obr. 2.2 Blok spínačov s relé

Výhody: - veľmi malý odpor v zopnutom stave => minimálne straty

- jednoduchá realizácia

Nevýhody: - životnosť kontaktov relé

- vyššia cena

2.2 Bipolárny tranzistor ako spínač

Obr. 2.3 Blok spínačov s bipolárnymi tranzistormi

12

Výhody: - životnosť

- jednoduchá realizácia

Nevýhody: - veľké napäťové úbytky na tranzistoroch => vyššie straty

2.3 Unipolárny tranzistor ako spínač

Obr. 2.4 Blok spínačov s unipolárnymi tranzistormi

Výhody: - malý odpor v zopnutom stave => minimálne straty

- jednoduchá realizácia

2.4 Realizácia

Najvhodnejším riešením bloku spínačov napätia vychádza zapojenie s unipolárnymi

tranzistormi.

Doplnením koncového spínača a snímacieho rezistora, potrebného pre blok prúdového

snímača, dostávame výsledné zapojenie:

13

Obr. 2.5 Blok spínačov napätia

Pri výbere vhodných typov tranzistorov je potrebné zohľadniť viacero elektrických

parametrov a veľkosť puzdra, vzhľadom na stiesnenú montáž.

Vhodným typom je dvojica N-MOSFET + P-MOSFET tranzistorov v jednom puzdre pod

typovým označením IRF 7343 [4].

Elektrické parametre IRF 7343

SO-8

Parameter N-MOSFET P-MOSFET

VDS Max. napätie Drain - Source 55 V - 55 VID @ TA = 25oC Max. prúd cez Drain 4,7 A - 3,4 AID @ TA = 70oC Max. prúd cez Drain 3,8 A - 2,7 APD @ TA = 25oC Max. výkonová strataPD @ TA = 70oC Max. výkonová strataVGS Max. napätie Gate - SourceRDS(on) @ VGS=10V Odpor Drain - Source v zopnutom stave 0,050 Ω 0,105 Ω

2,0 W1,3 W± 20 V

Tabuľka 2.2 - Elektrické parametre IRF 7343

14

3 Prúdový snímač

Prúdový snímač by mal zabezpečiť snímanie prúdu, ktorý prechádza

elektromotorom, jeho prevod na napätie, ktoré následne upraví a zosilní na úroveň

vhodnú pre ďalšie spracovanie.

Uvedené požiadavky splňuje nasledujúci obvod:

IS

Obr. 3.1 Schéma prúdového snímača

Snímaný prúd prechádza snímacím rezistorom RS, vplyvom ktorého vznikne napäťový

úbytok, ktorý je následne filtrovaný RC členom R1C1 a privedený na vstup zosilňovača.

Tento pozostáva z operačného zosilňovača IC1 a rezistorov R2 a R3, ktoré určujú jeho

zosilnenie. Po zosilnení signál prechádza filtračným členom R4C2 na výstupnú svorku

Usen.

Meraní bolo zistené, že prúd prechádzajúci elektromotorom sa pohybuje v normálnej

prevádzke okolo hodnoty IS ≅ 20mA. Na základe tohto zistenia je zvolená hodnota

snímacieho rezistora RS na 6,8Ω.

Potom sa bude napätie na snímacom rezistore R1 pohybovať okolo hodnoty:

mVAIRSU SRS 13610208,6 3 ≅⋅⋅Ω=⋅= −

Toto napätie je následne zosilňované zosilňovačom, ktorého zosilnenie je vzhľadom na

nasledujúce obvody za ním, ktoré vyžadujú napätie v rozsahu 0 až 2,56V, nastavené na

hodnotu 11x. Určujú ho rezistory R2 a R3, podľa vzťahu:

15

1110110101

231 3

3

=⋅⋅

+=+=RRA

Zosilnené napätie na výstupe prúdového snímača sa bude pohybovať okolo hodnoty:

VVAUUsen RS 496,11110136 3 ≅⋅⋅=⋅= −

Z predchádzajúcich úvah je možné popísať prevodovú charakteristiku prúdového snímača

rovnicou:

SIUsen ⋅⋅= 118,6

Usen – výstupné napätie [V]

IS – snímaný prúd [A]

Ako vhodný typ operačného zosilňovača bol vybratí obvod LMC6482 [3]. Je to

CMOS dvojitý operačný zosilňovač typu „Rail to Rail“ pre vstupný napäťový rozsah ,

schopný spracovať signály blízke napájaciemu napätiu. Toto je dôležité vzhľadom na

použité nesymetrické napájanie.

16

4 Napájací zdroj

Úlohou napájacieho zdroja je zabezpečiť konštantné napájacie napätie pre ostatné

obvody, bez ohľadu na meniace sa vstupné napätie.

Základné požiadavky:

• Výstupné napätie: +5V

• Vstupné napätie: +10 až 25V

• Prúdová zaťažiteľnosť: min. 50mA

• Ochrana proti opačnej polarite vstupného napätia

Na stavbu takéhoto zdroja je vhodný dnes už štandardný monolitický lineárny stabilizátor

78L05 [5]. Vyrába ho s malými obmenami väčšina firiem (Texas Instruments, SGS

Thomson, Motorola, National Semiconductor, Linear Technology), ktorí ho prevzali od

firmy Fairchild.

Vyznačuje sa tým, že používa iba tri svorky: vstupnú, výstupnú a spoločnú, a k svojej

činnosti potrebuje minimum externých súčiastok.

Pracuje v spojitom režime ako sériový regulátor so spätnou väzbou. Princíp takéhoto

regulátora môžeme popísať jednoduchou blokovou schémou:

RČ – regulačný člen

RZ – rozdielový zosilňovač

Obr. 4.1 Bloková schéma stabilizátora zo spätnou väzbou

17

Elektrické parametre 78L05

VOUT Výstupné napätie 5 V

IOUT Max. výstupný prúd 100 mA

Iq Kľudový prúd 6 mA

Udrop Dropout 1,7 V

VIN Max. vstupné napätie 30 V

Parameter

TO-92

Tabuľka 4.1 - Elektrické parametre 78L05

Doporučené zapojenie

Obr. 4.2 Doporučené zapojenie 78L05

Doplnením ďalších externých súčiastok, potrebných pre filtráciu a ochranu proti opačnej

polarite vstupného napätia dostávame definitívne zapojenie zdroja:

Obr. 4.3 Schéma napájacieho zdroja

Ochrana proti skratu na výstupe a tepelná ochrana je realizovaná internými ochrannými

obvodmi 78L05.

18

5 Mikrokontrolér ATtiny 15L

ATtiny15L je nízkopríkonový CMOS 8-bitový mikrokontrolér , založený na AVR

RISC architektúre vyrábaný firmou ATMEL[1]. Je schopný vykonať náročné inštrukcie v

rámci jedného hodinového cyklu, čím sa jeho výpočtový výkon blíži až k 1MIPS za MHz,

čo umožňuje optimalizáciu spotreby energie voči pracovnej frekvencii.

AVR jadro kombinuje bohatú inštrukčnú sadu s 32 univerzálnymi pracovnými registrami.

Všetkých 32 registrov je priamo pripojených na Aritmeticko-Logickú jednotku (ALU-

Arithmetic Logic Unit), čo umožňuje jednej inštrukcii behom jedného hodinového cyklu

prístup do dvoch registrov súčasne. Výsledná architektúra je výrazne efektívnejšia

a poskytuje až desaťkrát vyšší výkon ako konvenčné CISC mikrokontroléry.

Obvod je vyrobený s použitím Atmelom vyvinutej technológie stálych pamätí s vysokou

hustotou. ISP Flash pamäť integrovaná v čipe umožňuje preprogramovanie pamäte cez

SPI interface pomocou konvenčného programátora.

ATtiny 15L poskytuje 1kB Flash, 64 B EEPROM, šesť univerzálne použiteľných I/O

liniek, 32 univerzálnych pracovných registrov, dva 8-bitové Časovace/Čítače, jeden

s vysoko-rýchlostným PWM výstupom, interný oscilátor, interné a externé prerušenia,

programovateľný Watchdog časovač, 4-kanálový 10-bitový AD prevodník s jedným

diferenčným napäťovým vstupom, a tri softwarovo voliteľné úsporné režimy.

Pre obvod je možné použiť množstvo programových a systémových prostriedkov ako

napríklad: Macro Assembler, Program Debuggery/Simulátory, In-Circuit emulátory.

19

5.1 Základné vlastnosti

Pokročilá RISC architektúra

o 90 inštrukcií, väčšina vykonateľná v jednom hodinovom cykle

o 32 x 8 univerzálnych pracovných registrov

o Plne statická prevádzka

Stála (non-volatile) programová a dátová pamäť

o 1 KB Flash programová pamäť, programovateľná „In-System“

o 64 B EEPROM

o Programovatelné zámky pre utajenie dát Flash a EEPROM

Periféria

o Prerušenie pri zmene úrovne na pine

o Dva 8-bitové Čítače/Časovače s oddeleným preddeličom

o Jeden 150 kHz, 8-bitový vysoko-rýchlostný PWM výstup

o 4-kanálový 10-bitový ADC

o On-chip analógový komparátor

o Programovateľný Watchdog timer

Špeciálne vlastnosti MCU

o Programovanie „In-System“ cez SPI port

o Vylepšený Power-on-Reset obvod

o Programovateľný Brown-out obvod

o Interný kalibrovaný 1.6 MHz oscilátor

o Externé a interné prerušenia

o Low-power Idle a Power-down mód

6 programovateľných I/O liniek

20

Bloková schéma:

Obr. 5.1 Bloková schéma ATtiny 15L

21

5.2 Analógovo – digitálny prevodník

Vlastnosti:

• 10-bit rozlíšenie • ±2 LSB absolútna presnosť • 0,5 LSB nelinearita prevodu • 65 – 260 µs čas konverzie • 4 multiplexované vstupné kanály • 1 diferenčný vstupný kanál s voliteľným zosilnením 20x • 2,56V interné referenčné napätie • 0 – VCC rozsah vstupných napätí

AD prevodník (ADC) mikrokontroléra ATtiny15 je realizovaný ako 10-bitový AD

prevodník s postupnou aproximáciou.

ADC je pripojený k 4-kanálovému analógovému multiplexoru, ktorý dovoľuje výber

jedného diferenčného vstupu a štyroch jednoduchý napäťových vstupov, pripojených na

piny Portu B. Diferenčný vstup je vybavený zosilňovacím stupňom zo zosilnením 26 dB

(20x). ADC obsahuje vzorkovací a pamäťový obvod (Sample and Hold), ktorý zaistí, že

vstupné napätie do AD prevodníka bude počas konverzie konštantné.

Na čipe sa taktiež nachádza zdroj referenčného napätia s menovitou hodnotou 2,56V, ku

ktorému je možné pripojiť externý filtračný kondenzátor na účinnejšie potlačenie šumu,

prípadne použiť externý zdroj referenčného napätia.

ADC môže pracovať v dvoch režimoch – Single Conversion a Free Running. V Single

Conversion (jednoduchá konverzia), musí byť každá konverzia inicializovaná

užívateľom. V Free Running (voľne bežiacom) režime, ADC neustále vzorkuje

a aktualizuje ADC dátové registre.

Počas prevodu je možné povoliť špeciálny režim spánku CPU, tzv. „noise canceler“, čím

sa zredukuje rušenie z jadra CPU a iných I/O periférií.

22

Bloková schéma ADC:

Obr. 5.2 Bloková schéma AD prevodníka

23

5.3 I/O port B

Port B je 6-bitový obojsmerný vstupno/výstupný port. Každý pin portu môže byť

bez ohľadu na iný konfigurovaný buď ako vstupný, alebo ako výstupný.

Pri konfigurácii ako vstup je možné pre všetky piny portu zvlášť povoliť, alebo zakázať

interné zdvíhacie (pull-up) rezistory.

Pri konfigurácii ako výstup, umožňujú výstupné budiče prijať prúd 20mA, čo dovoľuje

priamo budiť LED displej.

Všetky I/O piny majú ochranné diódy pripojené na VCC a GND potenciál.

Principiálna bloková schéma jedného pinu portu:

Obr. 5.3 Principiálna schéma jedného pinu portu

Bližšie informácie o mikrokontroléry ATtiny15 a jeho perifériách je možné nájsť

v datasheete obvodu [2].

24

6 Riadiaci program

Riadiaci program nachádzajúci sa programovej FLASH pamäti mikrokontroléra

ATtiny15L zabezpečuje vykonávanie nasledujúcich úloh:

• Inicializáciu periférií mikrokontroléra ATtiny15

• Kalibráciu servopohonu

• Meranie riadiaceho napätia

• Výpočet novej polohy servopohonu

• Aktualizáciu súčasnej polohy

6.1 Inicializácia periférií mikrokontroléra Nachádza sa v úvodnej sekvencii programu. Zabezpečuje inicializáciu portov

(definovanie vstupných, výstupných, nastavenie počiatočných stavov), AD prevodníka a

nastavenie režimov interných časovačov.

25

6.2 Kalibrácia

Úlohou kalibrácie je odmeranie času, potrebného na presun servopohonu z jednej

koncovej polohy do druhej.

Táto operácia prebieha v niekoľkých krokoch:

1. Aktivovanie posuvu do smeru „otvorene“.

2. Čakanie na dosiahnutie koncovej polohy.

3. Deaktivovanie pohybu.

4. Aktivovanie posuvu do smeru „zatvorené“.

5. Odštartovanie merania času.

6. Čakanie na dosiahnutie koncovej polohy.

7. Deaktivovanie pohybu.

8. Zastavenie merania času.

9. Uloženie výsledku merania.

26

Vývojový diagram:

Obr. 6.1 Vývojový diagram kalibrácie

27

Aktivovanie posuvu servopohonu do konkrétneho smeru je realizované riadiacimi

signálmi, ktoré zabezpečia zopnutie príslušných spínacích prvkov.

6.2.1 Posuv do smeru „Otvorené“

Obr. 6.2 Posuv do smeru „Otvorené“

Pre posuv do tohto smeru je potrebné zabezpečiť zopnutie spínačov S2, S3

a koncového spínača KS. Vplyvom pretekajúceho prúdu vzniká napätie na snímacom

rezistore RS, ktorý je súčasťou prúdového snímača. Ten generuje na svojom výstupe

napätie priamo úmerné pretekajúcemu prúdu.

Po dosiahnutí koncovej polohy dochádza k rozopnutiu koncového spínača. To má za

následok zaniknutie prúdu a pokles napätia na výstupe prúdového snímača. Tento stav

vyhodnotí riadiaca logika ako dosiahnutie koncovej polohy.

6.2.2 Posuv do smeru „Zatvorené“

Obr. 6.3 Posuv do smeru „Zatvorené“

28

Pre posuv do smeru „Zatvorené“ je potrebné zabezpečiť zopnutie spínačov S1, S4.

Taktiež vplyvom pretekajúceho prúdu vzniká napätie na snímacom rezistore RS, ktoré

spôsobí generovanie napätia na výstupe prúdového snímača.

Pri dosiahnutí koncovej polohy dochádza väčšiemu mechanickému zaťaženiu

elektromotora, čo má za následok zvýšenie prúdu odoberaného elektromotorom. To

spôsobí zmenu aj na výstupe prúdového snímača, Ak dôjde k prekročeniu rozhodovacej

úrovne pre vypnutie, riadiaca logika to vyhodnotí ako dosiahnutie koncovej polohy.

Vplyvom záberového prúdu pri rozbehu motora nie je možné vyhodnocovať túto zmenu

prúdu ihneď pri štarte, ale s určitým časovým oneskorením potrebným pre jeho

spoľahlivý rozbeh.

6.2.3 Meranie uplynutého času

Meranie uplynutého času nie je nutné prevádzať v základných jednotkách sekundách,

prípadne milisekundách.

Z tohto dôvodu sa meranie realizuje nasledovným spôsobom:

Použitý mikrokontrolér generuje pomocou interného časovača každých 81,92 ms

prerušenie. V obsluhe prerušenia sa inkrementuje počítadlo týchto časových značiek.

Pred samotným meraním je preto nutné toto počítadlo vynulovať. Počas merania potom

dochádza k inkrementovaniu jeho stavu od nuly. Po skončení merania stačí prečítať stav

tohto počítadla, ktorý zodpovedá uplynutému času.

Ak chceme vyjadriť tento čas v sekundách potom:

UplynutýČas [s] = 81.92 . 10-3 s . StavPočítadla

Automatické vykonávanie kalibrácie sa uskutočňuje podobným spôsobom. Používajú

sa tu dve počítadla, ktoré sú na začiatku nastavené na hodnoty: Prvé počítadlo (počítadlo

časových značiek) na hodnotu 44032 a druhé na hodnotu, rovnajúcu sa konštante

automatickej kalibrácie (určuje čas medzi dvoma kalibráciami). V obsluhe prerušenia

dochádza k dekrementovaniu týchto dvoch počítadiel. Prvé počítadlo (počítadlo časových

značiek) je dekrementované pri každom prerušení. Po dosiahnutí nulovej hodnoty, čo

29

zodpovedá uplynutiu času cca 1hodina, je prvé počítadlo znova nastavené na hodnotu

44032 a zároveň dekrementované druhé počítadlo, počítadlo uplynutých hodín.

ssst 36001092,8144032][ 31 ≅⋅⋅= −

Po dosiahnutí nulovej hodnoty počítadla uplynutých hodín, dochádza k nastaveniu

príznaku pre vykonanie kalibrácie, ktorá je následne v najbližšom možnom čase

vykonaná.

30

6.3 Výpočet novej polohy servopohonu

Pre výpočet novej polohy sú potrebné tieto štyri vstupné údaje:

Kalibračný čas – Cal_Time - čas, potrebný pre presun pohonu z jednej koncovej

polohy do druhej, zmeraný v režime kalibrácie.

Aktuálna hodnota riadiaceho signálu – Akt_Ur – hodnota zmeraná pred

samotným výpočtom.

Predchádzajúca hodnota riadiaceho signálu – Last_Ur – naposledy použitá

hodnota pri výpočte polohy.

Maximálna hodnota riadiaceho signálu – Max_Ur – maximálna hodnota, ktorú

je možné namerať.

Výstupom výpočtu bude čas – PS_Time, ktorý je potrebný pre prestavenie pohonu na

novú pozíciu.

Vzťah medzi nimi je možné popísať jednoduchou trojčlenkou:

Max_Ur ................................................. Cal_Time

Akt_Ur .................................................. PS_Time

Potom platí: TimeCalUrMaxUrAktTimePS _

___ ⋅=

Uvedení vzťah avšak platí len zmenu pozície s koncovej polohy na novú pozíciu. Preto je

nutné vzťah upraviť tak, aby zohľadnil aj poslednú nastavenú pozíciu:

TimeCalUrMax

UrLastUrAktTimePS __

___ ⋅−

=

Pre výpočet polohy do opačného smeru, je potrebné vymeniť pozíciu hodnôt Akt_Ur

a Last_Ur:

TimeCalUrMax

UrAktUrLastTimePS __

___ ⋅−

=

31

Hodnoty riadiaceho signálu sú merané analogovo-digitálnym prevodníkom s 10 bitovým

rozlíšením:

REF

IN

VVADC 1024⋅

=

ADC – výsledok konverzie (0 až 1023), VIN – vstupné napätie AD prevodníka, VREF –

referenčné napätie AD prevodníka.

Najmenší krok AD prevodníka pri tomto rozlíšení je :

102422 10REFREF

NREF UUU

===∆ ak UREF = 2,56V potom mV521024

562 ,,==∆

Vzhľadom na najmenší krok AD prevodníka a jeho chybu pri prevode, sa výpočet

a následná korekcia pozície servopohonu uskutoční iba za predpokladu, že:

16__ ≥− UrLastUrAkt

Táto podmienka zabráni neustálemu korigovaniu pozície, ktoré môže byť spôsobené

superponovaným rušivým napätím na riadiacom napätí Ur, alebo kvantizačnou chybou

AD prevodníka.

Použitý mikrokontrolér ATtiny nepodporuje priamo všetky matematické operácie

používané pri výpočte. Z tohto dôvodu budú popísané jednoduché algoritmy na

odstránenie tohto problému.

32

6.3.1 Násobenie dvoch 16 bitových čísel

Mikrokontrolér ATtiny 15 nemá hardwarovú podporu pre násobenie dvoch čísel.

Na odstránenie tohto nedostatku je použitý jednoduchý výpočtový algoritmus, ktorý

využíva operácie algebrického súčtu a bitovej rotácie 8 bitových čísel.

Vstupnými dátami sú 16b násobenec, uložený v dvoch 8b registroch a 16b násobiteľ,

taktiež uložený v dvoch 8b registroch. Výsledkom je 32 bitové číslo uložené v štyroch 8b

registroch.

Samotný algoritmus prebieha v nasledujúcich krokoch:

1. Vynulovanie horných 16b výsledku.

2. Nastavenie počítadla slučiek na hodnotu 16.

3. Logický posuv doprava násobiteľa cez Carry bit. (Carry – príznak prenosu do

vyššieho rádu ).

4. Ak je nastavený Carry bit , tak sa pripočíta násobenec k horným 16b výsledku.

5. Logický posuv doprava horných 16b výsledku do dolných 16b výsledku a

násobiteľa.

6. Bitová rotácia doprava cez Carry bit dolných 16b výsledku a násobiteľa.

7. Dekrementovanie počítadla slučiek

8. Ak je hodnota počítadla rôzna od nuly, tak sa postup opakuje od kroku 4.

33

Vývojový diagram:

Obr. 6.4 Vývojový diagram násobenia dvoch 16b čísel

34

6.3.2 Delenie 32 bitového čísla 16 bitovým číslom.

ATtiny15 neobsahuje hardwarovú podporu ani pre delenie dvoch čísel.

Z tohto dôvodu je delenie riešené algoritmom využívajúcim operácie algebrického súčtu,

rozdielu a bitovej rotácie 8 bitových čísel.

Vstupnými dátami sú 32b delenec, uložený v štyroch 8b registroch a 16b deliteľ, uložený

v dvoch 8b registroch. Výsledkom algoritmu je 16b výsledok a 16b zvyšok po delení.

Samotný algoritmus prebieha v nasledujúcich krokoch:

1. Vynulovanie zvyšku po delení a Carry bitu.

2. Nastavenie počítadla slučiek na hodnotu 33.

3. Rotovanie delenca doľava cez Carry bit.

4. Dekrementovanie počítadla slučiek.

5. Ak je počítadlo rovné nule, tak je delenie hotové.

6. Rotovanie zvyšku doľava cez Carry bit.

7. Odpočítanie deliteľa/výsledku od zvyšku.

8. Ak je výsledok odčítania záporný, tak sa pripočíta naspäť, vynuluje sa Carry

bit a skočí na krok 3.

9. Nastaví sa Carry bit a skočí sa na krok 3.

35

Vývojový diagram:

Obr. 6.5 Vývojový diagram delenia 32b čísla 16b číslom

36

6.4 Aktualizácia súčasnej polohy

Pre aktualizáciu polohy servopohonu je potrebný jeden vstupný údaj, a tým je čas

PS_Time. Je to vypočítaný čas potrebný pre prestavenie pohonu na novú pozíciu.

Na meranie času pre posuv pohonu na novú pozíciu je použitý rovnaký spôsob merania

ako v režime kalibrácie, teda počítanie počtu prerušení generovaných interným

časovačom každých 81,92 ms.

Aktualizácia polohy prebieha v nasledujúcich krokoch:

1. Nulovanie počítadiel prerušení.

2. Aktivovanie pohybu servopohonu do príslušného smeru.

3. Čakanie na dosiahnutie rovnosti uplynutého času s časom PS_Time

4. Deaktivovanie pohybu.

Vývojový diagram:

Obr. 6.6 Vývojový diagram Aktualizácia polohy servopohonu

37

6.5 Vývojový diagram celého riadiaceho programu

Obr. 6.7 Vývojový diagram riadiaceho programu

38

7 Praktická realizácia Riadiacej jednotky servopohonu 7.1 Popis zapojenia

Jadro celého zapojenia tvorí mikrokontrolér ATtiny15L s riadiacim programom

uloženým v jeho FLASH pamäti. Hodinový takt udáva interný oscilátor s frekvenciou

1,6MHz. Celá Riadiaca jednotka servopohonu sa k vonkajším obvodom pripája cez

svorkovnicu J1.

Napájacie napätie privedené na svorkovnicu J1 prechádza ochranou diódou D1, ktorá

chráni obvody pri prepólovaní napájacieho napätia, na vstup napäťového stabilizátora

IO1. Kondenzátory C2 a C3 zabraňujú prípadnému rozkmitaniu stabilizátora. Výstupné

napätie stabilizátora je diódou D2 zvýšené na +5,6V. Z tohto napätia je cez oddeľovaciu

diódu D3 napájaní blok spínačov napätia elektromotora a taktiež nabíjaní zálohovací

kondenzátor C12 s kapacitou 1,5 F cez rezistor R12. Tento rezistor obmedzí nabíjací

prúd v okamihu pripojenia vybitého kondenzátora k napätiu. Dióda D3 zabráni vybitiu

zálohovacieho kondenzátora cez stabilizátor po vypnutí napájania. Všetky ostatné obvody

sú napájané cez diódu D4.

Spínanie napätia pre elektromotor zabezpečujú tranzistory T1 a T2 a koncový spínač KS,

ktorý po dosiahnutí koncovej polohy rozpojí jednu vetvu napájania. Tranzistory sú

ovládané portami PB0 a PB1 cez rezistory R5, R6, ktoré obmedzujú prúd pri nabíjaní

parazitných kapacít riadiacich elektród tranzistorov počas spínania.

Prúd elektromotorom je snímaný rezistorom R11. Vzniknutý napäťový úbytok je po

vyfiltrovaní RC členom R10, C10 privedení na neinvertujúci zosilňovač, tvorený

operačným zosilňovačom IC3A a rezistormi R8, R9. Zosilnené napätie je po filtrovaní

prvkami R7, C9 privedené na port PB4.

Riadiace napätie privádzané na svorkovnicu J1, je upravené na vhodnú veľkosť deličom

R1 a R2, filtrované C7, R3, C8 a následne privedené na port PB3. Porty PB3 a PB4 sú

v mikrokontroléry pripojené na analógový multiplexor, za ktorým je pripojení AD

prevodník.

Prepojka JP2 umožňuje zvoliť režim riadenia podľa stavu napájacieho napätia, ktorý sa

využíva v modifikovaných verziách Riadiacej jednotky servopohonu, popísaných

v ďalších kapitolách.

39

40

ISP programovanie mikrokontroléra je realizované cez konektor J2, zapojený podľa

odporučenia firmy ATMEL popísaného v [7]. Keďže sa prekrývajú použité porty a porty

cez ktoré sa prevádza programovanie je použitá už spomínaná oddeľovacia dióda D4.

Táto zabráni spúšťaniu elektromotora počas programovania. Ostatné prvky v zapojení

slúžia len na filtráciu napájacieho napätia.

Cele zapojenie je realizované SMT technológiou na doske plošných spojov s rozmermi

41 x 39 mm. Rozmery boli limitované fyzickými rozmermi samotného servopohonu.

41

Obr. 7.1 Schéma zapojenia Riadiacej jednotky servopohonu

7.2 Schéma zapojenia

8 Modifikácie Na pokrytie širokej oblasti použitia servopohonu boli navrhnuté nasledovné modifikácie:

Verzia 1.1 - Proporcionálne riadenie polohy, riadiaci signál 0 – 5V, napájanie 5V

Verzia 1.2 - Proporcionálne riadenie polohy, riadiaci signál 0 – 10V, napájanie

12V

Verzia 1.3 - Proporcionálne riadenie polohy, riadiaci signál 0 – 10V, napájanie 24V

Verzia 2.1 - Dvojstavové riadenie (Otvorený - Zatvorený), napájanie 12V

Verzia 2.2 - Dvojstavové riadenie (Otvorený - Zatvorený), napájanie 24V

Modifikácie budú popísané v ďalšej časti. Zmeny sa týkajú zapojenia zdroja , deliča

riadiaceho signálu, prepojky JP2 a riadiaceho programu.

8.1 Verzia 1.1 - Proporcionálne riadenie polohy, riadiaci signál 0 – 5V,

napájanie 5V

8.1.1 Zdroj

V zapojení zdroja došlo k výrazným zmenám oproti základného zapojeniu. Boli

vynechané, prípade nahradené niektoré obvodové prvky. Zapojenie po úprave vyzerá

nasledovne:

Obr. 8.1 Schéma prvej úpravy zdroja

42

Zo zapojenia bol vynechaní stabilizátor a sním súvisiace prvky a taktiež zálohovací

kondenzátor.

8.1.2 Delič riadiaceho signálu

Delič zabezpečuje úpravu veľkosti rozsahu riadiaceho signálu z 0 – 5V na rozsah

0 – 2,5V. Vychádza sa z jeho zapojenia na obrázku 8.2:

Obr. 8.2 Delič riadiaceho signálu

Výpočet hodnôt prvkov R1 a R2

Pri výpočte sa využíva nasledovný vzťah:

212

2 RRRUU rdR +

⋅= kde UR2 – max. výstupné napätia deliča

Urd – max. vstupné napätia deliča

R1, R2 – prvky deliča

Pre tento konkrétny prípad vstupné údaje sú:

Urd = 5V

UR2 = 2.5V

R2 = 11 kΩ , zvolená hodnota.

Potom pre hodnotu R1 platí:

( ) ( )Ω=Ω⋅=

−⋅⋅=

−⋅= k

UUURR

R

Rrd 1110115,2

5,25101121 33

2

2

Pre delič sú použité vypočítané prvky R1 = R2 = 11 kΩ.

8.1.3 Prepojka JP2 Prepojka JP2 je v tomto prípade rozpojená.

43

8.2 Verzia 1.2 - Proporcionálne riadenie polohy, riadiaci signál 0 – 10V,

napájanie 12V

8.2.1 Zdroj

Oproti pôvodnému zapojeniu bol vynechaní zálohovací kondenzátor a dve diódy,

ktoré boli nahradené prepojkou. Upravené zapojenie je na obrázku 8.3:

Obr. 8.3 Schéma druhej úpravy zdroja

8.2.2 Delič riadiaceho signálu

Pri určovaní prvkov deliča sa vychádza z toho istého postupu, aký bol použitý

v kapitole 8.1.2 Delič riadiaceho signálu.

Vstupnú údaje pre výpočet sú:

Urd = 10V

UR2 = 2.5V

R2 = 11 kΩ , zvolená hodnota.

Potom pre hodnotu R1 platí:

( ) ( )Ω=Ω⋅=

−⋅⋅=

−⋅= k

UUUR

RR

Rrd 3310335,2

5,25101121 3

3

2

2

Pre delič sú použité vypočítané prvky R1 = 33 kΩ a R2 = 11 kΩ.

8.1.3 Prepojka JP2

Prepojka JP2 je v tomto prípade rozpojená.

44

8.3 Verzia 1.3 - Proporcionálne riadenie polohy, riadiaci signál 0 – 10V,

napájanie 24V

Zapojenie tejto verzie modifikácie je totožné z predchádzajúcou, až na napäťový

stabilizátor v zdroji. Tento je nahradený za typ 78M05, z dôvodu väčšej výkonovej straty

na tomto stabilizátore.

78M05 oproti 78L05 umožňuje zaťaženie väčším prúdom (0,5A oproti 0,1A), ale hlavne

má iné púzdro a tým aj väčšiu dovolenú výkonovú stratu.

Poznámky k deliču riadiaceho napätia a prepojke JP2, platia tie isté ako v kapitole 8.2.

8.4 Verzia 2.1 a 2.2 - Dvojstavové riadenie (Otvorené - Zatvorené),

napájanie 12V a 24V

Servopohon má v týchto verziách iba dve polohy, ktoré sú riadené napájacím napätím:

• Zatvorené - prítomnosť napájacieho napätia

• Otvorené – bez napätia

Pri analýze požiadaviek na Riadiacu jednotku servopohonu narazíme na jeden problém

a tým je presun do polohy „Otvorené“, kvôli chýbajúcemu napájaciemu napätiu. Tento

problém je možné odstrániť dočasným zálohovaním napájacieho napätia. Zálohovanie je

v tomto prípade vyriešené zálohovacím kondenzátorom s kapacitou až 1,5F, ktorý svojim

nábojom pokryje výpadok napätia počas zmeny polohy. Nabíjanie kondenzátora prebieha

počas prítomnosti napájacieho napätia.

Realizácia Riadiacej jednotky vychádza zo základného zapojenia popísaného v kapitole

7.2 na obrázku 7.1.

Aby bolo riadenie realizované zmenou napájacieho napätia je potrebné zabezpečiť

prepojenie prepojky JP2, ktorou sa napájacie napätie privedie na delič riadiaceho napätia.

Pre samotnú realizáciu je potrebné ešte vypočítať hodnoty prvkov tohto deliča.

45

Výpočet prvkov deliča riadiaceho napätia

Realizuje sa podľa postupu uvedeného v kapitole 8.1.2.

Hodnoty vstupných údajov pre výpočet :

Urd12 = 12V – 2V = 10V , najnižšie povolené napájacie napätie pre 12V verziu

Urd24 = 24V – 4V = 20V , najnižšie povolené napájacie napätie pre 24V verziu

UR2 = 1.5V , rozhodovacia úroveň, bola zvolená z rozsahu 0 – 2,5V

R2 = 3,9 kΩ , zvolená hodnota.

Potom pre hodnoty rezistora R1 platí:

( ) ( )Ω=Ω⋅=

−⋅⋅=

−⋅= k

UUURR

R

RrdV 1,22101,22

5,15,110109,321 3

3

2

21212

( ) ( )Ω=Ω⋅=

−⋅⋅=

−⋅= k

UUURR

R

RrdV 1,48101,48

5,15,120109,321 3

3

2

22424

Pre praktickú realizáciu sú hodnoty prvkov upravené na:

• 12V napájanie: R1 = 22 kΩ, R2 = 3,9kΩ

• 24V napájanie : R1 = 47 kΩ, R2 = 3,9 kΩ

Pri 24V napájaní je potrebné zrealizovať aj výmenu stabilizátora 78L05 za typ 78M05,

z dôvodov popísaných v kapitole 8.3.

8.4.1 Riadiaci program

Riadiaci program uložený v programovej pamäti mikrokontroléra, zabezpečuje

vykonávanie týchto štyroch základných úloh:

• Inicializáciu periférií

• Sledovanie zmien riadiaceho signálu

• Presun do polohy „Otvorený“

• Presun do polohy „Zatvorený“

Činnosť programu je možné popísať jednoduchým vývojovým diagramom:

46

Obr. 8.4 Vývojový diagram riadiaceho programu

47

Záver

Regulácia vykurovania objektov je široká oblasť, dôkazom čoho je aj množstvo

firiem zaoberajúcich sa touto problematikou. Pri riešení niektorých problémov by mal

pomôcť aj v tejto práci popísaný servopohon pre regulačný ventil.

Práca popisuje celý návrh riadenia servopohonu. V prvej časti sú rozanalyzované

požiadavky na riadiacu jednotku servopohonu a jej základné bloky.

V ďalších kapitolách nasleduje návrh konkrétnych blokov jednotky a to blokov

spracovania riadiaceho signálu, riadenia elektromotora servopohonu, napájacích obvodov

a samotného riadenia. Súčasťou je aj výber vhodných prvkov a popis ich základných

vlastností.

Neoddeliteľnou súčasťou je aj riadiaci program jednotky. Program rieši otázky výpočtu

a riadenia polohy servopohonu. Z dôvodu chýbajúcej priamej podpory niektorých

aritmetických operácií použitým mikrokontrolérom, je súčasťou tejto kapitoly aj ich

vhodný spôsob riešenia.

V poslednej časti je uvedení celkový návrh obvodového riešenia riadiacej jednotky

a predstavení rad modifikácií, ktoré by mali pokryť širokú škálu použitia.

Tieto verzie sa líšia predovšetkým spôsobom riadenia polohy, riadiacim signálom

a veľkosťou napájacieho napätia. Prvé tri verzie umožňujú plynulú zmenu polohy, zatiaľ

čo ďalšie dve iba dvojstavovú reguláciu.

Riadenie analógovým riadiacim signálom je nožné v budúcnosti nahradiť digitálnym

signálom s vhodnou formou. Zmena by si vyžiadala len minimálne zmeny v navrhovanej

koncepcii.

48

Zoznam použitej literatúry [1] www.atmel.com [2] datasheet ATtiny15L [3] datasheet LMC6482IM [4] datasheet IRF7343 [5] datasheet 78L05 [6] PUNČOCHÁŘ, J.: Operační zesilovače v elektronice. Praha: BEN – technická

literatúra, 2002. ISBN 80-7300-059-8

[7] Application Notes AVR 042: AVR Hardware Design Considerations

49

ČESTNÉ VYHLÁSENIE

Vyhlasujem, že som zadanú diplomovú prácu vypracoval samostatne, pod odborným vedením vedúceho diplomovej práce Ing. Mariána Dutku a používal som len literatúru uvedenú v práci.

Súhlasím so zapožičiavaním diplomovej práce.

V Žiline dňa 19.5. 2005 Podpis .................................

50

POĎAKOVANIE

Touto cestou by som sa chcel poďakovať môjmu vedúcemu diplomovej práce Ing.

Mariánovi Dutkovi za odborné rady pri riešení problémov diplomovej práce.

Jozef Hutira

51

ŽILINSKÁ UNIVERZITA V ŽILINE Elektrotechnická fakulta Katedra telekomunikácií

DIPLOMOVÁ PRÁCA

PRÍLOHOVÁ ČASŤ 2006 bc. Jozef Hutira

52

Zoznam príloh: Príloha 1. Fotografia servopohonu Príloha 2. Doska plošných spojov Riadiacej jednotky Príloha 3. Výpis riadiaceho programu

53

Príloha 1 – Fotografia servopohonu

54

Príloha 2 - Doska plošných spojov Riadiacej jednotky

55

Príloha 3 – Výpis riadiaceho programu ; *************************************************** ; ServoPohon v 1.0 ; *************************************************** ; Device = ATtiny15 ; XTAL = 1.6MHz ; *************************************************** .include "tn15def.inc" .equ CalTime = 12 ; cas pre dalsiu kalibraciu (v hodinach) .equ MaxADC_H = 0x03 ; max. hodnota zmarana AD prevodnikom .equ MaxADC_L = 0xFF .def STACK1 = r0 ; zasobnik na ulozenie obsahu registrov .def STACK2 = r1 .def temp2 = r2 .def temp3 = r3 .def temp4L = r4 .def temp4H = r5 .def nxt_PSL = r7 ; cas potrebny pre presun na novu poziciu .def nxt_PSH = r8 .def pocT01 = r9 ; pocitadla pre casovac 1 .def pocT02 = r10 .def pocT03 = r11 .def pocT1 = r12 .def pocT2 = r13 .def lst_PSL = r14 ; posledna zmerana hodnota Ur .def lst_PSH = r15 .def cal_Lo = r16 ; kalibracna konstanta .def cal_Hi = r17 .def ADC8b = r18 ; 8 bitovy vysledok merania .def ADC16L = r19 ; 16 bitovy vysledok merania .def ADC16H = r20 .def poc1 = r21 ; pocitadlo 1 .def poc2 = r22 ; pocitadlo 2 .def poc3 = r23 ; pocitadlo 3 .def temp = r24 ; temp .def temp1 = r25 ; temp1 .equ OPEN = 1 ; OPEN out .equ CLOSE = 0 ; CLOSE out .equ POS = 3 ; POS input .equ IS = 4 ; IS input .equ JUMPER = 2 ; JUMPER .equ ADC_POS = 0x82 ; <=> (1<<REFS1)+(1<<MUX1) .equ ADC_IS = 0x83 ; <=> (1<<REFS1)+(1<<MUX1)+(1<<MUX0) .equ I_MAX = 200 ; VypinaciPrud = (4 * I_MAX + 3) * 2.56 / 1023 ; *************************************************** ; *************************************************** .cseg ; CODE segment .org 0000 rjmp RESET

56

.org 0004 rjmp T1_OVF ; *************************************************** RESET: rcall AVR_ini ; inicializovanie AVR ldi temp, CalTime ; prednastavenie registrov casovanie kalibracie mov pocT03, temp ldi temp, 172 ; 172; 256 - 84 = 172 mov pocT02, temp set ; nastavenie priznaku kalibracie (bit T) TEST: brtc TESTp ; ak nie je nastavena priznak kalibracia tak preskoc rcall CALIBR ; kalibracia clt ; nulovanie znacky kalibracie sbic PINB, JUMPER ; test JUMPERa rjmp ClrLstV ; nulovanie Last Value ldi temp, MaxADC_H ; Last Position = 1023 (3FF) mov lst_PSH, temp ldi temp, MaxADC_L mov lst_PSL, temp rjmp TESTp ClrLstV: clr lst_PSH ; nulovanie Last Value clr lst_PSL TESTp: sbi ADCSR, ADSC ; Spustenie prevodu ADC w_ADC: sbic ADCSR, ADSC ; Cakanie na dokoncenie konverzie ADC rjmp w_ADC in ADC16L, ADCL in ADC16H, ADCH sbic PINB, JUMPER ; test JUMPERa rjmp TESTp1 ldi temp1, 0x03 ; (ADC16H;ADC16L) = 1023 - (ADC16H;ADC16L) ldi temp, 0xFF sub temp, ADC16L sbc temp1, ADC16H mov ADC16L, temp mov ADC16H, temp1 TESTp1: cp ADC16L, lst_PSL ; Zistenie smeru pohybu cpc ADC16H, lst_PSH brcc ps_OPEN ; skok na zmenu polohy do smeru OPEN ; *************************************************** ; Zmena polohy do smeru CLOSE ; *************************************************** mov temp, lst_PSL mov temp1, lst_PSH sub temp, ADC16L ; (temp1;temp) = (lst_PSH;lst_PSL) - (ADC16H;ADC16L) sbc temp1, ADC16H clr temp2 ; porovnavanie rozdielu s hodnotou 0x10 cpi temp, 0x10 cpc temp1, temp2 brcs TEST ; ak je rozdiel menssi ako 0x10 tak sa poloha neaktualizuje mov lst_PSL, ADC16L ; ulozenie novej hodnoty riadiaceho napatia

57

mov lst_PSH, ADC16H rcall MulDiv ; vypocet novej pozicie ldi temp, ADC_IS ; Prepnutie MUX ADC na meranie IS out ADMUX, temp clr temp ; nulovanie pocitadial meraca casu out TCNT1, temp clr pocT1 clr pocT2 cbi PORTB, CLOSE ; Aktivovanie pohonu do polohy CLOSE ldi poc3, 10 ; pocitadlo pre casove oneskorenie: poc3 * 50ms w_CLS: rcall w_50ms ; casove oneskorenie 50ms rcall ADC_ct ; ADC convert cpi ADC8b, I_MAX-5 ; brcs w_CLS1 ; ak Akt. prud je mensi ako I_MAX-10 skok na "w_CLS1" dec poc3 ; dekrementovanie pocitadla tst poc3 brne w_CLS w_CLS1: cp pocT1, nxt_PSL cpc pocT2, nxt_PSH brcc Deakt ; pokial je uplinuty cas menssi ako cas potrebny na presun rcall ADC_ct ; ADC convert cpi ADC8b, I_MAX ; Porovnaj a skoc ak ADC8b < I_MAX brcs w_CLS1 Deakt: sbi PORTB, CLOSE ; Deativovanie pohonu ldi temp, ADC_POS ; Prepnutie MUX ADC na meranie riadiaceho napetia out ADMUX, temp rjmp TEST ; *************************************************** ; Zmena polohy do smeru OPEN ; *************************************************** ps_OPEN :mov temp, ADC16L mov temp1, ADC16H sub temp, lst_PSL ; (temp1;temp) = (ADC16H;ADC16L) - (lst_PSH;lst_PSL) sbc temp1, lst_PSH clr temp2 ; porovnavanie rozdielu s hodnotou 0x10 cpi temp, 0x10 cpc temp1, temp2 brcc p_OPEN rjmp TEST ; ak je rozdiel mensi ako 0x10 tak sa poloha neaktualizuje p_OPEN: mov lst_PSL, ADC16L ; ulozenie novej hodnoty riadiaceho napatia mov lst_PSH, ADC16H rcall MulDiv ; vypocet novej pozicie clr temp ; nulovanie pocitadial meraca casu out TCNT1, temp clr pocT1 clr pocT2 ldi temp, ADC_IS ; Prepnutie MUX ADC na meranie IS out ADMUX, temp cbi PORTB, OPEN ; Aktivovanie pohonu do smeru OPEN w_OPEN: cp pocT1, nxt_PSL cpc pocT2, nxt_PSH

58

brcs w_OPEN ; cakaj pokial je uplinuty cas mensi ako cas potrebny na presun sbi PORTB, OPEN ; Deativovanie pohonu ldi temp, ADC_POS ; Prepnutie MUX ADC na meranie riadiaceho napetia out ADMUX, temp rjmp TEST ; *************************************************** ; AVR init ; *************************************************** AVR_ini: ldi temp, (1<<OPEN)+(1<<CLOSE) ; OPEN & CLOSE vystup out DDRB, temp ldi temp, (1<<OPEN)+(1<<CLOSE)+(1<<JUMPER) out PORTB, temp ldi temp, (1<<ADEN)+(1<<ADPS2) ; Inicializovanie ADC out ADCSR, temp ldi temp, ADC_POS ; Prepnutie MUX ADC na ADC_POS out ADMUX, temp ldi temp, (1<<CS13)+(1<<CS12)+(1<<CS11) ; Inicializovanie casovaca 1 out TCCR1, temp ; 1/512 ldi temp, (1<<TOIE1) ; povolenie prerusenia casovaca 1 out TIMSK, temp sei ; globalne povolenie preruseni ret ; *************************************************** ; Kalibracia ; *************************************************** CALIBR: ldi temp, ADC_IS ; Prepnutie MUX ADC na meranie IS out ADMUX, temp cbi PORTB, OPEN ; Aktivovanie pohonu do polohy OPEN w_cal0: rcall ADC_ct ; ADC convert cpi ADC8b, 0x05 ; Porovnaj a skoc ak ADC8b <5 brcc w_cal0 sbi PORTB, OPEN ; Deativovanie pohonu clr temp ; nulovanie pocitadial meraca casu out TCNT1, temp clr pocT1 clr pocT2

cbi PORTB, CLOSE ; Aktivovanie pohonu do polohy CLOSE ldi poc3, 10 ; pocitadlo pre casove oneskorenie: poc3 * 100ms w_cal1: rcall w_50ms ; casove oneskorenie 50ms rcall ADC_ct ; ADC convert cpi ADC8b, I_MAX-10 ; ak Akt. prud je mensi ako I_MAX-10 skok na "w_cal2" brcs w_cal2 dec poc3 ; dekrementovanie pocitadla tst poc3 brne w_cal1 w_cal2: rcall ADC_ct ; ADC convert cpi ADC8b, I_MAX ; Porovnaj a skoc ak ADC8b < I_MAX brcs w_cal2 sbi PORTB, CLOSE ; Deativovanie pohonu mov cal_Lo, pocT1 ; ulozenie merania mov cal_Hi, pocT2

59

ldi temp, ADC_POS ; Prepnutie MUX ADC na meranie riadiaceho napatia out ADMUX, temp ret ; *************************************************** ; ADC prevod ; *************************************************** ADC_ct: sbi ADCSR, ADSC ; Spustenie prevodu ADC w_ADC1: sbic ADCSR, ADSC ; Cakanie na dokoncenie konverzie ADC rjmp w_ADC1 in ADC16L, ADCL in ADC16H, ADCH mov ADC8b, ADC16L mov temp, ADC16H lsr temp ; ADCW / 4 ror ADC8b lsr temp ror ADC8b ret ; *************************************************** ; Casove oneskorenie 50ms ; *************************************************** w_50ms: clr poc1 ldi poc2, 0x68 w50_1: dec poc1 brne w50_1 dec poc2 brne w50_1 ret ; *************************************************** ; Obsluha prerusenia casovaca 1 ; *************************************************** T1_OVF: cli ; zakazanie preruseni in STACK1, SREG ; ulozenie obsahu mov STACK2, temp inc pocT1 brne T1_sk1 ; ak doslo k preteceniu inkrementuj pocT2 inc pocT2 T1_sk1: dec pocT01 brne T1_sk2 ; ak pocT01 = 0 tak dekrementuj pocT2 dec pocT02 brne T1_sk2 ; ak pocT02 = 0 tak dekrementuj pocT3 ldi temp, 172 ; 172; 256 - 84 = 172 mov pocT02, temp ; prednastavenie pocT02 dec pocT03 brne T1_sk2 ; ak pocT03 = 0 tak kalibruj ldi temp, CalTime mov pocT03, temp set ; nastavenie znacky (bit T) kalibracie bld STACK1, 6 T1_sk2: out SREG, STACK1 ; obnovenie obsahu mov temp, STACK2 sei ; povolenie preruseni reti

60

; *************************************************** ; Vypocet novej polohy ;*** ;* (nxt_PSH;nxt_PSL) = ((temp1;temp) * (cal_Hi;cal_Lo)) / 0x03FF ;*** ; *************************************************** MulDiv: clr temp3 ; NASOBENIE clr temp2 ; nulovanie horných 16b výsledku ldi poc3,16 ; nastavenie pocitadla lsr temp1 ror temp m16u_1: brcc noad8 add temp2, cal_Lo adc temp3, cal_Hi noad8: ror temp3 ror temp2 ror temp1 ror temp dec poc3 brne m16u_1 ; ak nula koniec nasobenia ; DELENIE ldi poc1, MaxADC_L ; delitel ldi poc2, MaxADC_H div16u: clr temp4L ; nulovanie zvysku Lo bajt sub temp4H,temp4H ; nulovanie zvysku Hi bajt a carry bitu ldi poc3,33 ; nastavenie pocitadla d16u_1: rol temp ; posuv delenca do lava rol temp1 rol temp2 rol temp3 dec poc3 ; dekramentovanie pocitadla brne d16u_2 ; mov nxt_PSL, temp mov nxt_PSH, temp1 ret ; koniec vypoctu d16u_2: rol temp4L ; posuv delenca do lava cez zvysok rol temp4H sub temp4L,poc1 ; zvysok = zvysok - delitel sbc temp4H,poc2 ; brcc d16u_3 ; ak je vysledok zaporny add temp4L,poc1 ; adc temp4H,poc2 clc ; nulovanie carry bitu rjmp d16u_1 d16u_3: sec ; nastavenie carry bitu rjmp d16u_1

61