Projekt. Projektna naloga Naprava za sušenje gela za nohte FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO

Podobné dokumenty
Navodila za uporabo Garmin Nüvi 1200

Matija Lokar: PODATKOVNE STRUKTURE VRSTA. List za mlade matematike, fizike, astronome in računalnikarje

Računalniške delavnice FMF: Delavnica MPI

Intervalna ocena parametra

Vaja 2 Iskanje z razvijanjem v širino

PRILOGA ŠT. 1: Gasilski znak

1. Konstruiranje napajalnika

Sigma števec za kolo BC 2209 MHR Targa

POSEBNI POGOJI ZA PROMOCIJE PAKETOV KOMBO FEBRUAR (v nadaljevanju: Posebni pogoji promocije Kombo Februar)

Komunikacije v avtomatiki

KVIZ Osnove elektrotehnike II magnetostatika

Analiza naravne svetlobe

Ocena požarnih nevarnosti, tveganj, ogroženosti in obremenitev. Ciril Tomše VKGČ II. stopnje

VSEBINA Upravljanje Splošni napotki. 1. Splošni napotki. 1.1 Spremljajoči dokumenti Navodila za uporabo WPM. 1.2 Varnostni napotki

Zahtevnejši nivo Kazalo:

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

CONFIGURATION zapisuje se na začátek inicializační části programu použitím direktivy preprocesoru pragma


Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Delo z datotekami v C#

CONFIGURATION zapisuje se na začátek programu použitím direktivy preprocesoru pragma

NiceForm uporabniški priročnik

Microchip. PICmicro Microcontrollers

Programski jeziki. Od problema do programa. Od problema do programa

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

evropskega emblema v povezavi s programi EU

Navodila za uporabo. Za upravljavca. Navodila za uporabo. calormatic 370. Sobni regulator temperature

Časovače μpočítače AT89C51CC03

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Uvod. Slika 1.1: Električna shema enostavne krmilne naloge (a) in njena rešitev z releji (b) a) b) Univerza v Ljubljani Fakulteta za elektrotehniko

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Modul LCD displeje se čtyřmi tlačítky. Milan Horkel

B-panel. C-panel. S-panel. Osnovni enobarvni paneli. Zasteklitve. strani strani strani

PRENOSNI DIGITALNI TELEVIZOR Z VISOKO LOČLJIVOSTJO TV STAR T7 HD LCD UPORABNIŠKA NAVODILA SLO

zlatarna E.LECLERC Po ok Od 1O. januarja do 31. decembra 2O18

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

only Service Digitalni tahograf DTCO 1381 Release Navodila za uporabo podjetje & voznik DTCO SmartLink (Opcija)

Državni izpitni center. Osnovna raven MATEMATIKA. Izpitna pola 1. Torek, 26. avgust 2008 / 120 minut

T105VF. T105-manual - 1 BEZDRÁTOVÝ TERMOSTAT BEZDRÔTOVÝ TERMOSTAT WIRELESS THERMOSTAT TERMOSTAT BEZPRZEWODOWY TERMOSZTÁT VEZETÉK NELKÜLI

Uporabniški priročnik

Ovládání LCD. Ing. Josef Grosman. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

FM52 - AD208 - AD278 - AD297

Računalništvo in informatika (vaje)

Sbírka úloh pro elektronickou stavebnici. Stručný popis programovacího jazyka Bascom AVR

Vánoční hvězda 2. Publikované: , Kategória: Blikače a optika.

RAČUNALNIŠKA PODPORA ROBOTSKI SENZORIKI

W164-manual K. EMOS spol. s r. o. SLO. Funkcije posameznih tipk.

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

1 GIF Animator. 1.1 Opis programa Lastnosti zmogljivosti programa. Active GIF Creator 2.18 je program za obdelavo GIF datotek.

Programování PICAXE18M2 v Assembleru

Prodaja, servis, svetovanje za KRIO SAVNO in izvajanje KRIO TERAPIJE CRYO SAUNA SPACE CABIN BY CRYOMED

POŠTA SLOVENIJE d. o. o MARIBOR NAVODILA ZA DELO Z WEB APLIKACIJO POŠTNO OKENCE PRI VAS

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

LEIXEN VV-898 Kratka navodila - Quick Reference Guide

Poslední nenulová číslice faktoriálu

MIDAM UC 301 modbus regulátor topeni, otočné tlačítko, RTC, 2xDO, 1x DI, externí odporové čidlo PT1000, RS485

S53WW. č č Je čas na radikální zásah do 2m řetězce nebo skončit se závoděním?

Podrobný obsah CHARAKTERISTIKA A POROVNÁNÍ ØADY PIC16F87X A PIC16F87XA TYPY POUZDER A PØIØAZENÍ VÝVODÙ PIC16F87X TYPY POUZDER A PØIØAZENÍ

Edge. Touring Priročnik za uporabo. Junij _0B Natisnjeno na Tajvanu

Po vrsti z leve proti desni so obrazi Blaž, Erik, Dane, Andrej, Andraž, Bor.

Ekonomska šola Kidričeva Kranj. FrontPage 2003 ZA INTERNO UPORABO. Pripravil: Tomo Grahek. Kranj, maj 07

ULTRAZVUKOVÝ DÁLKOMĚR

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Tento modul by bez problémů měl vyhovovat Vašemu zadání.

INFORMATIKA. Uvod v HTML - 2. del


Navodila za vgradnjo in nastavitve SOMFY-pogonski motorji Altus 50 RTS / 60 RTS

FM Stereo Sprejemnik FM/AM

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Osnove programiranja 2 Naloge laboratorijskih vaj

Datotečni (zbirčni) sistem - File Management System

PRIROČNIK ZA NADALJEVALNI TEČAJ MICROSOFT WORD-A

MIKROKONTROLERY PIC16F84

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Systém přerušení. České vysoké učení technické Fakulta elektrotechnická

Ter mo sta ti s po top no tul ko (pri bor), de lu joči po prin ci pu razte - zanja kapljevin

Navodila za vnos in kontrolo podatkov iz letnih poročil na poenotenih obrazcih gospodarskih družb v Excelovo preglednico

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

IZDELAVA FOTOKNJIGE. ali pa na

Uporabniški priročnik. Kosovni management. Hermes d.o.o. Prušnikova Ljubljana-Šentvid.

/*Dekodovani DFC signalu*/ // Projekt MMIA 2013 // Martin Dujicek, Milan Rejnus

Komunikace modulu s procesorem SPI protokol

Úvod do mobilní robotiky NAIL028

Spajanje dokumentov v Word-u 2007

Mikrokontroléry PIC a vestavěné systémy. PIC18 použití assembleru a jazyka C

13.6 CIR9XX OSTALI IZPISI

WayteQ x950bt-hd GPS Navigacija

Architektura jednočipových mikropočítačů PIC 16F84 a PIC 16F877. Tato prezentace vznikla jako součást řešení projektu FRVŠ 2008/566.

Napačna uporaba lahko povzroči trajne poškodbe.

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

Brezžični termostat T105

MIFID_FORMS_LIST_SLV

Priimek in ime: Vpisna številka: Letnik vaj Obkroži smer študija:

Vyšší odborná škola a Střední průmyslová škola, Šumperk, Gen. Krátkého 1, Šumperk

1 Podrobná specifikace Yunifly Datasheet

Vysoká škola chemicko-technologická v Praze Fakulta chemicko-inženýrská Ústav počítačové a řídicí techniky. Aplikace mikroprocesorů.

IZKAZ POŽARNE VARNOSTI STAVBE Objekt: SKLADIŠČE REPROMATERIALA

KRONOTERM Navodila za uporabo spletnega vmesnika. Spletni vmesnik. Navodila za uporabo. 1 S tran

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Skripta za Programiranje 2 Rekurzija Delo z datotekami

Inventura v osnovnih sredstvih

Transkript:

FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Projekt Projektna naloga Naprava za sušenje gela za nohte Študenta: Klavdijo Repolusk Indeks št.: E5000713 Smer študija: Telekomunikacije MAG Letnik študija: 2.

Kazalo 1. NASLOV PROJEKTNE NALOGE... 1 2. SPECIFIKACIJA ZAHTEV... 1 3. FUNKCIJSKA SPECIFIKACIJA... 2 4. DIAGRAMI POTEKA... 3 4.1 DIAGRAM POTEKA VKLOPA UV ŽARNICE... 3 4.2 DIAGRAM POTEKA VENTILATORJA... 4 4.3 DIAGRAM POTEKA ČASA... 5 5. PROGRAM... 6 6. NAČRT VEZJA... 16 7. IZGLED IZDELKA... 18 8. VIRI... 20

1. NASLOV PROJEKTNE NALOGE Naprava za sušenje gela za nohte 2. SPECIFIKACIJA ZAHTEV Predmet raziskovanja je narediti napravo s pomočjo katere bomo lahko sušili gel, ki se uporablja pri podaljševanju nohtov, torej za lepljenje umetnih nohtov. Naprava bo zgrajena iz pleksi stekla in bo imela na sredini izvrtane luknjice za ventilator katerega naloga je, da bo vsesaval prah pri piljenju nohtov. Na sami napravi bosta dve tipki s katerima bo mogoče nastavljati hitrost vrtljajev ventilatorja. Torej ena bo za povečevanje in druga za zmanjševanje. Možno bo nastaviti več stopenj hitrosti (0%-izključen, 50%, in 100%). Ti procenti se bodo izpisovali na LCD zaslonu tako, da bomo vedeli pri kakšni hitrosti delovanja smo. Pri tem bo uporabljen PIC kateri omogoča PWM (pulzno-širinsko) modulacijo. Ker pa je LCD prikazovalnik dvo vrstičen, bomo zgornjo vrstico uporabili za prikaz obremenitve ventilatorja, drugo pa za prikaz časa dela. Ob prihodu stranke bomo vklopili časovnik, ki bo meril čas kako dolgo je delo potekalo. To je zato, da se bo vedelo koliko bo potrebno plačati. Pri tem bodo tri tipke. Ena se bo uporabljala za pričetek, torej tipka start, tipka pavza in tretja za reset časa. Po privzetem bo ob vklopu nastavljen čas 0, torej bo potrebno pritisniti samo na start. Prikazoval bo pa ure, minute in sekunde. Na napravo bo tudi nameščen 7 segmentni LED prikazovalnik na katerem se bo odšteval čas, ki ga bomo predhodno nastavili s pomočjo tipke za nastavitev časa, ta čas bo možno nastaviti od 1-9 minut, saj večjega časovnega intervala ne potrebujemo. Ta števec bomo sprožili s pomočjo tipke start. Tako se bo začelo odštevanje minut do vrednosti nič. Ob začetku delovanja se bo zraven še vključila ena LED dioda katera nam bo služila kot indikator, ali naš rele pravilno deluje oziroma ali se je vklopil ali ne. To se bo sicer tudi videlo tako, da se bo vključila žarnica. Za pravilno delovanje je to bolj primerno, da boš vedel ali je pokvarjen rele ali žarnica. Na napravi bo tudi glavno stikalo s katerim boš vklopil ali izklopil napajanje. Uporabljena bo ena 75W UV žarnica z E27 grlom, ki bo nameščena tako, da jo bo možno premikati levo desno gor in dol. 1

3. FUNKCIJSKA SPECIFIKACIJA Vezje bo napajano z enosmerno napetostjo 12V iz univerzalnega usmerjevalnika in izmenično napetostjo 220V za rele za vklop žarnice. Računalniški ventilator (12V). Uporabljena bosta dva PIC mikrokrmilnika (28 pinski PIC16F876 in 18 pinski 16F84A). 7 segmentni LED prikazovalnik s skupno anodo (Kingbright SC52-11EWA). Dvo vrstični LCD display (DEM 16216 SYH-LY). Rele 12V DC in 220V AC. Program bo zapisan v programskem jeziku MikroBasic 2

4. DIAGRAMI POTEKA 4.1 DIAGRAM POTEKA VKLOPA UV ŽARNICE Začetek Nastavitev minut Sklenjena tipka START? NE DA Odštevanje minut Vklop LED diode Vklop UV žarnice Potekel čas? DA NE Izklop LED diode Nadaljuj Izklop UV žarnice 3

4.2 DIAGRAM POTEKA VENTILATORJA Preverjanje tipk Sklenjena + tipka? NE Sklenjena tipka? Izpis na zaslon DA DA Izpis na zaslon Povečaj hitrost Zmanjšaj hitrost 4

4.3 DIAGRAM POTEKA ČASA Preverjanje tipk Start NE Reset časa DA DA Sprožen časovnik Brisanje števca na 0 DA Izpis na zaslon NE Pritisnjena tipka Pavza Ustavitev časovnika Izpis na zaslon 5

5. PROGRAM Časovnik: program Casovnik 'Časovnik za vklop UV žarnice 'Nastavitev časa od 1 do 9 minut 'PIC16F84, kristal 4 MHz, 7-segmentni LED display dim oldstate1 as byte dim oldstate2 as byte dim i as byte dim tabela as byte[10] 'Spremenljivko oldstate1 definiraj kot bajt 'Spremenljivko oldstate2 definiraj kot bajt 'Spremenljivko i definiraj kot bajt 'Na 10 polj si lahko vpišemo 8 bitno števil (to so one številke za izpis na LED displayu main) sub procedure Odstevaj_Alarm(dim minut as byte) 'Procedura kaj se zgodi ob Odstevaj_Alarm 'Odšteva čas od nastavljene vrednosti do 0 'Ob zagonu procedura vklopi RA2 - led, RA3 - rele 'Ob izteku časa izklopi led in rele dim j,k,port as byte 'Spremenljivke j,k,port definiraj kot bajt PORTA=%00001100 'Vklop releja(ra3) in LED(RA2) for j= minut to 1 step -1 'Odštevanje od nastavljenih minut do 0minut for k = 1 to 60 'k se povečuje po 1 do 60, ko pride do 60 zmanjša minuto za 1 manj in ponovi postopek if k mod 2 = 0 then 'Vsaki 2 sekundi se prižge pika na displayu - mod pomeni, da ti vrne ostanek od deljenja port=tabela[j] or %00000001 'Izpiše se vrednost na kateri je (1,2,3,..) in hkrati piko else 'Ali port=tabela[j] 'Neka cifra(binarno) iz tabele se napiše v port-izpiše se številka na kateri je PORTB=port delay_ms(1000) next k next j 'Ta vrednost iz tabele npr. številka 5 se prepiše sem na PORTB '1 sekunda zakasnitve 'Najprej izvede to for zanka, ko je k=1, nato se k poveča za 1 na 2 in spet ponovi to for zanko in tako naprej do 60 'Naslednji j 6

PORTA=%00000000 PORTB=tabela[0] end sub 'Izklop releja in LED_displeya, ko so potekle minute 'Od zgoraj izklopi rele in LED, ter nato izpiše na LED_displeyu vrednost 0 'Konec procedure main: 'Tu se uporablja ta tabela, ko ima noter 10 številk tabela[0] =252 '0 'Binarna vrednost %11111100 tabela[1] =96 '1 'Binarna vrednost %01100000 tabela[2] =218 '2 'Binarna vrednost %11011010 tabela[3] =242 '3 'Binarna vrednost %11110010 tabela[4] =102 '4 'Binarna vrednost %01100110 tabela[5] =182 '5 'Binarna vrednost %10110110 tabela[6] =190 '6 'Binarna vrednost %10111110 tabela[7] =224 '7 'Binarna vrednost %11100000 tabela[8] =254 '8 'Binarna vrednost %11111110 tabela[9] =246 '9 'Binarna vrednost %11110110 oldstate1 = 0 'Začetno stanje je 0 oldstate2 = 0 'Začetno stanje je 0 i = 0 'Začetno stanje je 0 TRISA = %00000011 'RA0 in RA1 vhod, od RA2 dalje so izhodi TRISB = %00000000 'PORTB izhod PORTA = %00000000 'Ko gremo v glavni program je na PortuA vse nič PORTB = tabela[0] 'Tote cifre iz tabele (tabela[0]=%11111100) se vnesejo na PORTB while true 'Neskončna zanka, ki se skoz izvaja if i>9 then 'Povečuje i do 9, če je več i=0 'ga ponovno postavi na 0, da ne gre naprej npr. 10,11 PORTB = tabela[0] 'Tote cifre iz tabele (tabela[0]=%11111100) se vnesejo na PORTB ko greš čez 9 'Konec if stvaka if (Button(PORTA, 0, 1, 0)) then 'Tipka SET; Prva številka: port RA0; Druga številka: zakasnitev 1ms-debounce to je ono ko malo zaniha ko skleneš tipko; Tretja tipka: stanje 0 ali 1 za impulz (sklenjena tipka) oldstate1 = 1 'Bila je pritisnjena tipka in zato postavi zastavico na 1 if (oldstate1 = 1) and (Button(PORTA, 0, 1, 1)) then 'Večanje števca za 1 oldstate1 = 0 'Zbriše vrednost zastavice na nič, da si nebi mislil da je ostala sklenjena tipka i=i+1 'Povečaj števec za 1, ko je bila tipka sklenjena PORTB = tabela[i] 'Prikaz trenutnega časa na LED_displayu 7

if (Button(PORTA, 1, 1, 0)) then 'Tipka START; Prva številka: port RA1; Druga številka: zakasnitev 1ms-debounce to je ono ko malo zaniha ko skleneš tipko; Tretja tipka: stanje 0 ali 1 za impulz (sklenjena tipka) oldstate2 = 1 'Bila je pritisnjena tipka in zato postavi zastavico na 1 if (oldstate2 = 1) and (Button(PORTA, 1, 1, 1)) then 'Preveri če je res bila pritisnjena tipka START oldstate2 = 0 'Zbriše vrednost zastavice na nič, da si nebi mislil da je ostala sklenjena tipka Odstevaj_Alarm(i) 'Kliče proceduro za odštevanje i=0 'Odšteva do vrednosti 0 wend end. 'Konec while zanke 'Konec programa 8

Ventilator in Ura: program Ventilator_in_Ura dim LCD_RS as sbit at RB5_bit LCD_EN as sbit at RB4_bit LCD_D4 as sbit at RB3_bit LCD_D5 as sbit at RB2_bit LCD_D6 as sbit at RB1_bit LCD_D7 as sbit at RB0_bit 'Inicializacija za LCD 'Pogledaš si kak maš vezano na ploščici LCD_RS_Direction as sbit at TRISB5_bit LCD_EN_Direction as sbit at TRISB4_bit LCD_D4_Direction as sbit at TRISB3_bit LCD_D5_Direction as sbit at TRISB2_bit LCD_D6_Direction as sbit at TRISB1_bit LCD_D7_Direction as sbit at TRISB0_bit dim oldstate0, oldstate1, i, j as byte txt as char[3] txt1 as char[3] 'Spremenljivke definiramo kot bajt, bajt ima velikost v decimalnem 256 'txt definiramo kot char-rezerviramo si tri polja 'txt1 definiramo kot char-rezerviramo si tri polja 'začetek*************************ura********************************** dim oldstate2, oldstate3, oldstate4 as byte 'Spremenljivke definiramo kot bajt, bajt ima velikost v decimalnem 256 dim a as byte '8 bitov zato, ker imamo števec, ki šteje do 256 b, k, x, y, c, v, w, dvopicje, presledek as char 'Definirane kot en znak txt2 as char[8] 'To je 8 zaradi 00:00:00 oldstate as byte 'Spremenljivki sta definirani kot bajt 'prekinitvena procedura sub procedure interrupt 'Prekinitvena rutina, ko pride do nje se poveča ta števec za 1 PIR1.TMR1IF = 0 'PIR1 register vsebuje posamezne zastavice bitov za zunanje prekinitve. 'Časovnik_1 ne prekorači 'Vrednost timerja, ki šteje od 40535 do 65535 TMR1H = 0x9E 'Šestnajstiška vrednost za 40535 = 9E57 TMR1L = 0x57 'Tukaj je pa 57 Inc(a) 'Inkrement, povečanje števca za 1 end sub 'Konec prekinitvene procedure 'konec****************************ura************************************** main: TRISA = %00000011 TRISB = %00000000 'Porti na RA0 in RA1 so definirani kot vhodi za tipki GOR in DOL 'Vsi porti na B so izhodi 9

TRISC = %01110000 'Tipke za nastavitev časa na portu C, RC6=RESET ČASA, RC5=START, RC4=PAVZA kot vhod ADCON1 = %00000110 'Analogno/Digitalna konfiguracija pinov za katere želimo da so digitalni, 'v tem primeru so vsi digitalni pwm1_init(5000) 'Frekvenca za PWM signal je 5kHz oldstate0 = 0 'Začetna vrednost spremenljivke oldstate0 je 0 oldstate1 = 0 'Začetna vrednost spremenljivke oldstate1 je 0 i = 0 'Začetna vrednost spremenljivke i je 0 j = 0 'Začetna vrednost spremenljivke j je 0 PORTC = 0 'Začetno stanje na portu C je 0 Lcd_Init() 'Inicializacija za LCD Lcd_Cmd(_LCD_CLEAR) 'Zbriše vse kaj je bilo v pomnilniki tako, da je na začetku prazen Lcd_Cmd(_LCD_CURSOR_OFF) 'Z tem ukazom izklopimo kurzor, ker drugače bi utripal Lcd_Out(1, 3, "Pozdravljeni!") '1 vrstica in 3 stolpec izpiši ta tekst delay_ms(3000) '3s je izpisan napis "Pritisni + ali -" Lcd_Cmd(_LCD_CLEAR) 'Po 1 sekundi izbriši celi lcd Lcd_Out(1, 1, "Hitrost = 0%") '1 vrstica in 1 stolpec izpiši 0%, to je takrat, ko se mikrokrmilnik na novo zažene izpiše to Lcd_Out(2, 1, "Cas: ") 'Izpis na lcd v 2 vrsti, 1 stolpec txt2 = "00:00:00" 'Izpiše se na lcd Lcd_Out(2, 6, txt2) 'Tukaj nadaljuje oni txt od zgoraj, torej 00:00:00 pwm1_start() 'Start PWM-a 'začetek*****************************ura************************************ T1CON = %00101100 'Bit 7-6=00, Bit 5-4=10 prescaler 1:4, Bit 3=1 oscilator-on, 'Bit 2=1 sinhronizacija-on, 'Bit 1=0 notranja ura-on, Bit 0=1 vklop timerja1 INTCON = %11000000 'GIE=ON-globalni prekinitveni bit, PEIE=ON-zunanji prekinitveni bit PIR1.TMR1IF = 0 'Časovnika_1 ne prekorači TMR1H = 0x9E TMR1L = 0x57 PIE1.TMR1IE = 1 'Šestnajstiška vrednost za 40535 = 9E57 'PIE1 register vsebuje posamezne omogočitve bitov za zunanje prekinitve. 'Omogoča prekoračitveno prekinitev časovnika_1 a = 0 oldstate = 0 'Začetne vrednost 'Začetne vrednost te vrednosti so ASCII znaki glej ASCII tabelo w = 47 'To je decimalno / b = 48 'To je decimalno 0 k = 48 'To so te vrednosti za uro 00:00:00 x = 48 'To so te vrednosti za uro 00:00:00 y = 48 'To so te vrednosti za uro 00:00:00 c = 48 'To so te vrednosti za uro 00:00:00 10

v = 48 'To so te vrednosti za uro 00:00:00 'ti dve spremenljivki sta že shranjeni v spominu LCD-ja, ki ga poda proizvajalec dvopicje = 58 'To je decimalno : presledek = 32 'To je decimalno presledek 'konec******************************ura************************************ while true 'Neskončna While zanka 'začetek*****************************ura************************************ '******Tipka RESET****** if Button(PORTC, 6, 1, 1) then 'Če je bila sklenjena tipka za RESET oldstate2 = 255 'Postavi oldstate2 na maksimalno vrednost if oldstate2 and Button(PORTC, 6, 1, 0) then 'Preveri, če je bil pritisnjena tipka T1CON.0 = 0 'Izklopi časovnik_1 in oldstate2 = 0 'Postavi spremenljivko na 0 v = 48 'Postavi vse vrednosti na 00:00:00 c = 48 y = 48 x = 48 k = 48 b = 48 Lcd_Out(2, 6, txt2) 'Dodamo zato, da se po resetu na lcd izpišejo same ničle in dvopičje '******Tipka START****** if Button(PORTC, 5, 1, 1) then 'Če je bila sklenjena tipka za START oldstate3 = 255 'Postavi oldstate3 na maksimalno vrednost if oldstate3 and Button(PORTC, 5, 1, 0) then 'Preveri, če je bil pritisnjena tipka T1CON.0 = 1 'Vklopi časovnik oldstate3 = 0 'Posatvi spremenljivko na 0 '******Tipka PAVZA****** if Button(PORTC, 4, 1, 1) then 'Če je bila sklenjena tipka za PAVZA oldstate4 = 255 'Postavi oldstate4 na maksimalno vrednost if oldstate4 and Button(PORTC, 4, 1, 0) then 'Preveri, če je bil pritisnjena tipka T1CON.0 = 0 'Izklopi časovnik oldstate4 = 0 'Posatvi spremenljivko na 0 'konec******************************ura*********************************** '******MINUS TIPKA*********** if Button(PORTA, 1, 1, 1) then oldstate0 = 255 'Tipka -; Prva številka: port RA0; Druga številka: zakasnitev 1ms-debounce to je ono ko malo zaniha ko skleneš tipko; Tretja tipka: stanje 0 ali 1 za impulz 'Postavi zastavico za maksimalno stanje 11

if oldstate0 and Button(PORTA, 1, 1, 0) then 'Ko je pritisnjena tipka -, preverja 'i = i - 63-63 pomeni korak med samimi stopnjami ' 100% -> 252 'Ta številka je izbrana na podlagi lažjega odštevanje po korak 63, '252 še smatramo kot maksimum, čeprav je 255 maksimum ' 75% -> 189 ' 50% -> 126 ' 25% -> 64 ' 0% -> 0 if (i > 0) then 'Dokler je i večji od 0 naj odšteva i = i - 126 'Odšteva po korak -126, če je i=252-126=126 je to potem 50% na katerih dela ventilator if (j > 0) then 'Če je v prvem koraku 100% ga tukaj odšteje za 50% na 50% j = j - 50 'Odštevamo po korak 50% pwm1_set_duty(i) gosub pretvorba gosub izpis 'S tem poveš trajanje impulza, torej s tem si določiš hitrost vrtljajev ventilatorja npr. 50% 'Skoči v podprogram pretvorba 'Opravi prejšnji proces in skoči sem, od tukaj nato skoči v podprogram izpis oldstate0 = 0 'Postavi oldstate0 na vrednost 0 '**********PLUS TIPKA****************** if Button(PORTA, 0, 1, 1) then 'Tipka +; Prva številka: port RA1; Druga številka: zakasnitev 1ms-debounce ko malo zaniha ko skleneš tipko; Tretja tipka: stanje 0 ali 1 za impulz oldstate1 = 255 'Postavi zastavico na maksimalno stanje if oldstate1 and Button(PORTA, 0, 1, 0) then 'Ko je pritisnjena tipka + if (i < 252) then 'Dokler je i manjši od 252 naj prišteva i = i + 126 'Sešteva po korak +126, če je i=0+126=126 je to potem 50% na katerih dela ventilator if (j < 100) then 'Če je j v prvem koraku 0% ga tukaj povečuje za 50% j = j + 50 'Sešteva po korak 50% 'pwm1_set_duty(252) 'Zaženemo ventilator z 100% 'delay_ms(200) 'za 200ms 12

pwm1_set_duty(i) gosub pretvorba gosub izpis 'S tem poveš trajanje impulza, torej s tem si določiš hitrost vrtljajev 'ventilatorja npr. 50% 'Skoči v podprogram pretvorba 'Opravi prejšnji proces in skoči sem, od tukaj nato skoči v podprogram izpis oldstate1 = 0 'Postavi oldstate0 na vrednost 0 'začetek*****************************ura************************************ if a = 5 then 'Pomožni števec za določanje takta za sekunde, to vrednost pomnožiš z številko, ki jo dobiš pri deljenju z T=1/f povečaj števec za 1 Inc(w) 'Povečanje števca za 1, to je prva številka za sekunde iz desne proti levi '********************************sekunde************************************ * '00:00:00 'Puščica ti kaže kje si, to je za w ' ^ 'če je b večji od 9 ga postavi na 0 if b >= (48+10) then 'Če je j večji ali enak 58-to je dvopičje potem b = 48 'ga tukaj postavi na 0 in takoj Inc(k) 'povečaj števec k za 1, to je 2 številka pri sekundah '00:00:00 'To prikazuje za k ' ^ 'če je k večji od 6 ga postavi na 0 if k >= (48+6) then 'Če je k večji od 6 k = 48 'postavi k na 0 in Inc(x) 'povečaj x za 1, to je 1 številka pri minutah '************************************************************************* '*****************************minute************************************** '00:00:00 ' ^ 'če je x večji od 9 ga postavi na 0 if x >= (48+10) then 'Če je x večji od 9 x = 48 'postavi x na 0 in Inc(y) 'povečaj y za 1, to je 2 številka pri minutah '00:00:00 ' ^ 'če je y večji od 6 ga postavi na 0 if y >= (48+6) then 'Če je y večji od 6 13

y = 48 Inc(c) 'postavi y na 0 in 'povečaj c za 1, to je 1 številka za ure '************************************************************************* '**************************ure******************************************** '00:00:00 ' ^ if (v > (48+2)) and (c = (48+3)) then 'Ko pride ura na 23:59:59 se postavi na 0 c = 48 'Postavi c na 0 v = 48 'Postavi v na 0 'Tukaj spreminjaš URE-prehode me 09: itd. if (c > (48+9)) and ((v = 48) or (v = (48+1))) then 'Ko je c večji od 9 in v=0 (09:) ali (19:) potem postavi c na 0 c = 48 'c postaviš na 0 Inc(v) 'Povečaš pa v za 1 'skok v podprogram za izpis gosub izpis1 'Skok v podprogram za izpis na LCD 'signalizacija sekund if w mod 2 = 0 then 'S tem omogočiš utripanje dvopičja, to je 2 deljeno z nekaj, torej če deliš sodo število in dobiš rezultat 0 potem izpiše dvopičje v nasprotnem primeru pa presledek Lcd_Chr(2, 11, dvopicje) 'Izpisuješ dvopičje v 11 stolpcu Lcd_Chr(2, 8, dvopicje) 'Izpisuješ dvopičje v 8 stolpcu Inc(b) 'Po vsakem utripu dvopičja povečaj b za 1, torej povečaj za 1 sekundo else Lcd_Chr(2, 11, presledek) Lcd_Chr(2, 8, presledek) 'V drugem primeru izpiši presledek, torej pustiš prazno 'V drugem primeru izpiši presledek, torej pustiš prazno a = 0 'konec*****************************ura************************************* wend pretvorba: ByteToStr(j, txt1) 'Konec While zanke 'Podprogram pretvorba 'j ki je tipa bajt pretvori v znake 14

return spremenljivko text-besedilo 'Vrnitev na gosub izpis izpis: 'Podprogram izpis 'Lcd_Cmd(_LCD_CLEAR) 'Zbriše vse kaj je bilo v pomnilniki da je na začetku prazen Lcd_Out(1, 1, "Hitrost = ") 'V 1 vrstici na 1 mestu začnemo z tekstom "Hitrost = ", to je 10 znakov Lcd_Out(1, 11, txt1) 'Na 11 znaku se začne številka za procente 0, 50, 100 to se izpisuje tukaj Lcd_Out(1, 14, "%") 'Na 14 znaku se izpiše % 'začetek*****************************ura************************************ izpis1: Lcd_Chr(2, 13, b) 'V 13 stolpcu izpiši vrednost za b Lcd_Chr(2, 12, k) 'V 12 stolpcu izpiši vrednost za k Lcd_Chr(2, 10, x) 'V 10 stolpcu izpiši vrednost za x Lcd_Chr(2, 9, y) 'V 9 stolpcu izpiši vrednost za y Lcd_Chr(2, 7, c) 'V 7 stolpcu izpiši vrednost za c Lcd_Chr(2, 6, v) 'V 6 stolpcu izpiši vrednost za v 'konec******************************ura************************************ return 'Vrnitev na oldstate0=0 end. 'Konec programa 15

6. NAČRT VEZJA Časovnik_Shematika Časovnik_Board 16

Ventilator in Ura_Shematika Ventilator in Ura_Board 17

7. IZGLED IZDELKA 18

19

8. VIRI http://www.mikroe.com/eng/chapters/view/77/pic-basic-book-chapter-4-examples/ http://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf http://datasheet.octopart.com/sc52-11ewa-kingbright-datasheet-513290.pdf http://www.display-elektronik.de/dem16216syh-ly.pdf http://freecircuitdiagram.com/2009/02/01/pwm-motor-control-circuit/ http://www.maxim-ic.com/app-notes/index.mvp/id/1784 20