<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>regulacija temperature Archives - Automatika.rs</title>
	<atom:link href="https://www.automatika.rs/tag/regulacija-temperature/feed" rel="self" type="application/rss+xml" />
	<link>https://www.automatika.rs/tag/regulacija-temperature</link>
	<description>Portal za inženjere</description>
	<lastBuildDate>Sat, 30 Apr 2016 22:34:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Regulisanje temperature vode zatvorenog centralnog grejanja &#8211; praktična realizacija</title>
		<link>https://www.automatika.rs/projekti/svi-projekti/regulisanje-temperature-vode-zatvorenog-centralnog-grejanja-prakticna-realizacija.html</link>
					<comments>https://www.automatika.rs/projekti/svi-projekti/regulisanje-temperature-vode-zatvorenog-centralnog-grejanja-prakticna-realizacija.html#respond</comments>
		
		<dc:creator><![CDATA[Miloš Jurošević]]></dc:creator>
		<pubDate>Wed, 09 Sep 2009 01:00:00 +0000</pubDate>
				<category><![CDATA[Svi projekti]]></category>
		<category><![CDATA[elektornika za kotlove]]></category>
		<category><![CDATA[grenjanje vode]]></category>
		<category><![CDATA[kotlovi za grejanje]]></category>
		<category><![CDATA[regulacija temperature]]></category>
		<guid isPermaLink="false"></guid>

					<description><![CDATA[<p>&#160; U bazi znanja analizirane su dinamičke karakteristike, odziv i ponašanje sistema centralnog grejanja na zadatu referentnu promenljivu. Određena je prenosna funkcija sistema i izvršena je sinteza digitalnog PI odnosno PID zakona upravljanja. Postupkom simulacije u MATLab-ovom simulink modulu dobijeni su optimalni parametri (konstante) PI tj PID regulatora. &#160; &#160; Grubo gledano sistem možemo podeliti [&#8230;]</p>
<p>The post <a href="https://www.automatika.rs/projekti/svi-projekti/regulisanje-temperature-vode-zatvorenog-centralnog-grejanja-prakticna-realizacija.html">Regulisanje temperature vode zatvorenog centralnog grejanja &#8211; praktična realizacija</a> appeared first on <a href="https://www.automatika.rs">Automatika.rs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div align="justify"><img decoding="async" class=" alignleft size-full wp-image-1955" src="http://automatika.rs/wp-content/uploads/2009/09/sistem_centralnog_grejanja_automatika_elekronika_obrada_signala.jpg" alt="sistem_centralnog_grejanja_automatika_elekronika_obrada_signala.jpg" title="sistem_centralnog_grejanja_automatika_elekronika_obrada_signala.jpg" style="margin: 5px; float: left; width: 100px; height: 100px;" height="100" width="100" />&nbsp; U <a href="baza-znanja/obrada-signala/regulisanje-temperature-vode-zatvorenog-centralnog-grejanja.html" target="_blank">bazi znanja</a> analizirane su dinamičke karakteristike, odziv i ponašanje sistema centralnog grejanja na zadatu referentnu promenljivu. Određena je prenosna funkcija sistema i izvršena je sinteza digitalnog PI odnosno PID zakona upravljanja. Postupkom simulacije u MATLab-ovom simulink modulu dobijeni su optimalni parametri (konstante) PI tj PID regulatora.</p>
<p></div>
<div align="justify">&nbsp;</div>
<p>  <span id="more-257"></span>  </p>
<div align="justify">&nbsp;</div>
<div align="justify">Grubo gledano sistem možemo podeliti na dva dela :</p>
</div>
<div align="justify">1. Elektronski deo – koga čine : mikrokontroler, A/D konvertor, kolo za generisanje referentne promenljive, kolo za generisanje upravljane promen-ljive – senzor za temperaturu vode u sistemu, deo za galvansku izolaciju elektronskog i energetskog dela, kolo za sinhronizaciju sa mrežom i deo za napajanje.</div>
<div align="justify">&nbsp;</div>
<div align="justify">2.&nbsp; Energetski deo čini trofazni tiristorski polu upravljivi ispravljač. Umesto njega bolje je koristiti trofazni tiristorski fazni regulator ali je upravljanje njegovim radom znatno složenije i izlazi iz okvira ovog projekta.</div>
<div align="justify">&nbsp;</div>
<div align="justify">&nbsp;</div>
<div style="text-align: center;"><img fetchpriority="high" decoding="async" class=" size-full wp-image-2008" src="http://automatika.rs/wp-content/uploads/2009/09/regulacija_temperature_projekat_automatika.rs.jpg" alt="regulacija temperature_projekat_automatika.rs" title="slika1_regulisanje_temperature_vode_zatvorenog_centralnog_grejanja_-_praktina_realizacija_obrada_signala_automatika.rs.jpg" height="314" width="500" srcset="https://www.automatika.rs/wp-content/uploads/2009/09/regulacija_temperature_projekat_automatika.rs.jpg 827w, https://www.automatika.rs/wp-content/uploads/2009/09/regulacija_temperature_projekat_automatika.rs-300x188.jpg 300w, https://www.automatika.rs/wp-content/uploads/2009/09/regulacija_temperature_projekat_automatika.rs-768x482.jpg 768w, https://www.automatika.rs/wp-content/uploads/2009/09/regulacija_temperature_projekat_automatika.rs-696x437.jpg 696w, https://www.automatika.rs/wp-content/uploads/2009/09/regulacija_temperature_projekat_automatika.rs-669x420.jpg 669w" sizes="(max-width: 500px) 100vw, 500px" /></div>
<div align="justify">&nbsp;</div>
<div align="center">Slika 1. Blok šema sistema za upravljanje centralnim grejanjam.</div>
<div align="justify">&nbsp;</div>
<div align="justify">&nbsp;&nbsp; Mikrokontroler predstavlja mozak sistema i ima glavnu ulogu u njegovom radu. U jednom čipu se nalazi procesor, memorija, registri i sve što je potrebno za obavljanje funkcija tipičnih za jedan procesor informacija. Namenjen je&nbsp; projekto-vanju digitalnih sistema upravljanja u industriji i slično. On&nbsp;&nbsp; generiše upravljačku promenljivu na osnovu merene upravljane promenljive tj temperature vode u povratnoj grani upravljajući radom tiristorskog polu upravljivog ispravljača. Istovremeno kontrolišući celokupan rad uređaja.</div>
<div align="justify">&nbsp;</div>
<div>&nbsp;&nbsp; Senzor ima važnu ulogu.Njegova osetljivost i stabilnost (nepromenljivost karakteri-stika u odnosu na temperaturu) su vrlo bitni za rad i tačnost celog sistema. Nalazi se na cevi koja vraća ohlađenu vodu iz sistema u kotao.</div>
<div align="justify">&nbsp;</div>
<div align="justify">Izlaz senzora se vodi na pojačavač koji ima ulogu da pojača signal sa senzora i prilagodi ga opsegu A/D konvertora.Njegova stabilnost i otpornost na spoljašnje uticaje kao i mali ofset (razdešenost) ukazuju na njegovu ulogu u celom sistemu.</div>
<div align="justify">&nbsp;</div>
<div align="justify">Sa pojačavača se signal povratne sprege dovodi na ulaz A/D konvertora. Njegova uloga je da analogni signal pretvori u digitalni koji se dalje vodi u mikrokontroler. Ovde bi se mogao koristiti mikrokontroler sa već ugrađenim A/D konvertorom čime bi se data šema znatno uprostila. Priloženo rešenje nije jedino ali je sa stanovišta univerzalnosti i edukativnog značaja bolje.</div>
<div align="justify">&nbsp;</div>
<div align="justify">Galvanska izolacija je neophodan deo svakog uređaja u kome se kombinuju elektronska kola sa kolima energetske elektronike. Usled havarije u energetskom delu, koja je moguća jer su komponente (tiristori i diode) značajno opterećeni, mogao bi se uništiti čitav elektronski sklop. U ovom delu se nalaze i impulsni pojačavači koji slab digitalni signal podižu na viši nivo dovoljan za okidanje tiristora.</p>
</div>
<div align="justify">&nbsp;&nbsp; Kolo za zadavanje referentnog signala je obavezan deo jer omogućuje korisniku da na jednostavan način zada željenu referentnu temperaturu vode u sistemu. Njegova uloga je ovde i da ograniči opseg zadavanja temperature na MAX 70°C. U isto vreme ovo kolo treba i da obezbedi jednostavno očitavanje zadate temperature na displeju.</div>
<div align="justify">Za uspešan rad svih ovih kola potreban je kvalitetan i stabilan izvor napajanja. On treba da obezbedi potrebne napone za funkcionisanje svih kola.</p>
</div>
<div align="justify">&nbsp;&nbsp; Tiristorski polu upravljivi ispravljač je zbog snage grejača kojim upravljamo vezan na trofaznu mrežu 3x380V . Nije bilo potrebe da se koristi puno upravljivi ispravljač zbog činjenice da grejač ne radi u invertorskom režimu. Na ovaj način su umesto tri tiristora upotrebljene tri diode , čime je postignuta znatna ušteda kako u pogledu cene uređaja tako i sa tačke upravljanja sistemom.</p>
</div>
<div align="justify">&nbsp;U postojeći sistem se može dodati i EPROM memorija u koju se može smestiti kompletan program za mikrokontroler. Mikrokontroler već u sebi sadrži izvesnu količinu memorije (8KB) koja je u ovom slučaju dovoljna da primi celokupan kod. Iz tog razloga je u ovom projektu izostavljena.</div>
<div>&nbsp;</div>
<ul>
<li>Normal 0 false false false MicrosoftInternetExplorer4 &nbsp; U nastavku prelazimo na konkretan izbor sklopova i elemenata.</li>
</ul>
<div align="justify">&nbsp;&nbsp; Mikrokontroler koji je ovde korišćen je Atmel-ov AT89C52. Radi se o kontroleru koji je po svom pinskom rasporedu i setu instrukcija kompatibilan sa Intel-ovim 8052 mikrokontrolerom. On sadrži tri 16-to bitna brojača i 8KB flash memorije. Priključen je na kvarcni kristal učestanosti 12 MHz. Postoje 4 ulazno/izlazna porta mada su ovde korišćena samo dva. Napon napajanja je +5V.</p>
</div>
<div align="justify">&nbsp;A/D konvertor je AD570 firme Analog Devices. U pitanju je 8-mo bitni A/D, sa vremenom konverzije &lt;25μs na bazi sukcesivne aproksimacije. Napajanje mu je +5V i – 12V, a opseg ulaznog napona je 0-10V. Izbor ovakvog konvertora je zasno-van prvenstveno na činjenici da se radi o sporo promenljivom procesu i na što jednostavnijem upravljanju. Proces A/D konverzije započinje na opadajućoj ivici signala B&amp;C . Nakon 25μs po završetku konverzije aktivira se signal DATAREADY . Signal B&amp;C generiše mikrokontroler koji i detektuje DATAREADY signal preko svog INT1 ulaza.</div>
<div align="justify">Kolo za generisanje referentne vrednosti je napravljeno pomoću dva BCD UP/DOWN brojača 74HC4510. Pomoću dva tastera biramo smer brojanja a trećim vršimo upis izabrane vrednosti u leč kolo 74HC573.Prikaz se vrši na dva 7-mo segmentna displeja pomoću dva BCD/7-SEG drivera 74HC4511. Napajanje je +5V.</p>
</div>
<div align="justify">&nbsp;Galvanska izolacija zahteva posebno galvanski odvojeno napajanje i može se izvesti pomoću optokaplera ili malih signalnih trafoa . Ovde će biti prikazano rešenje sa signalnim trafoom, koje je ujedno i najjednostavnije .&nbsp;<span style="line-height: 1.3em;">Sklop za sinhronizaciju sa mrežom koristi mrežni transformator u delu za napajanje.</p>
<p></span></div>
<div align="justify">&nbsp;Prolaskom mrežnog napona kroz nulu generiše se okidni impuls koji se zatim uobličuje i vodi na INT0 ulaz u mikrokontroler.Ovaj deo je vrlo važan jer na osnovu impulsa sinhronizacije se vrši izračunavanje ugla paljenja tiristora kao i perioda odabiranja. Koristeći mrežni transformator sklop je galvanski odvojen od mreže.</p>
</div>
<div align="justify">&nbsp;Senzor korišćen u ovom sistemu je LM35 proizvođača National Semiconductor . U pitanju je vrlo jednostavan, precizan, linearan i jeftin senzor.Osetljivost mu je 10mV/°C. Može da meri temperaturu do +150°C. Izlaz je naponski signal. Napajanje može biti u granicama od 4 do 30V.</p>
</div>
<div align="justify">&nbsp;U pojačavačkom sklopu je korišćen klasičan 741 operacioni pojačavač u neinvertu-jućem spoju sa kompenzovanim ofsetom koji ulazni naponski signal pojačava i prilagođava ulaznom opsegu A/D konvertora 0-10V.</p>
</div>
<div align="justify">&nbsp;Iz dosad navedenog proizilazi da su za rad ovog uređaja potrebni sledeći naponi :</div>
<div align="justify">
<ul>
<li>&nbsp; +5V,+15V,+15V(galvanski odvojeno) i –12V.&nbsp;</li>
</ul>
<p> &nbsp;Možda najbolje rešenje predstavljaju integrisani stabilizatori napona 7805,7815 i 7912.</p></div>
<div align="justify">&nbsp;</div>
<div align="justify">&nbsp;</div>
<div align="center"><b>Programska podrška</b></div>
<div align="center">&nbsp;</div>
<div align="center">&nbsp;</div>
<div align="justify">&nbsp;&nbsp; Nakon hardverske sinteze sistema u celini možemo pristupiti razmatranju problema-tike softvera koji će upravljati celim sistemom. Najpre treba zakon upravljanja predstaviti u nešto drugačijem obliku.</div>
<div align="justify">&nbsp;</div>
<div align="justify">
<div style="text-align: center;"><img decoding="async" class=" size-full wp-image-2009" src="http://automatika.rs/wp-content/uploads/2009/09/1_regulacija_temperature_projekat_automatika.rs.jpg" alt="1 regulacija_temperature_projekat_automatika.rs" title="formula1_regulisanje_temperature_vode_zatvorenog_centralnog_grejanja_-_praktina_realizacija_obrada_signala_automatika.rs.jpg" style="width: 311px; height: 50px; margin: 5px;" height="54" width="297" /></div></div>
<div align="justify">&nbsp; Ovde su konstante KP, KI i KDodredjene u tekstu u bazi znanja i iznose:</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KP=30 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; KI=0.6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; KD=0.2</p>
<div align="justify">Sređivanjem gornjeg izraza i svođenjem na nešto drugačiji oblik dobija se :</div>
<div align="justify">&nbsp;</div>
<div align="justify">
<div style="text-align: center;"><img loading="lazy" decoding="async" class=" size-full wp-image-2010" src="http://automatika.rs/wp-content/uploads/2009/09/2_regulacija_temperature_projekat_automatika.rs.jpg" alt="2 regulacija_temperature_projekat_automatika.rs" title="formula2_regulisanje_temperature_vode_zatvorenog_centralnog_grejanja_-_praktina_realizacija_obrada_signala_automatika.rs.jpg" style="width: 650px; height: 287px; margin: 5px;" height="144" width="550" srcset="https://www.automatika.rs/wp-content/uploads/2009/09/2_regulacija_temperature_projekat_automatika.rs.jpg 608w, https://www.automatika.rs/wp-content/uploads/2009/09/2_regulacija_temperature_projekat_automatika.rs-300x78.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></div></div>
<p>&nbsp; &nbsp;Ovo je rekurzivni oblik zakona upravljanja koji je vrlo pogodan za implementaciju jer se vrednost upravljačke promenljive u(kT) u trenutku kT izračunava na osnovu vrednosti upravljačke promenljive i signala greške (e(kT)) u prethodnim trenutcima.<br /> Konstante koje se ovde pojavljuju su :&nbsp;</p>
<div align="center">&nbsp;K1 = KP+KI+KD = 30.8&nbsp;&nbsp; &nbsp;&nbsp; K2 = KP+2K = 30.4&nbsp;&nbsp; &nbsp;K3 = KD = 0.2</div>
<div align="center">&nbsp;</div>
<div align="justify">&nbsp;&nbsp; Očigledno da konstante nisu celobrojne i da ih treba skalirati kako bi se mogle primeniti u softverskoj implementaciji zakona upravljanja . Zato ih množimo sa 4, zaokružujemo i dobijamo nove konstante : K1 = 123 ; K2 = 122 ; K3 = 1 .&nbsp;<span style="line-height: 1.3em;">Ove konstante su celobrojne i mogu se koristiti u programu predstavljene u hexadecimalnom obliku kao : K1 = 7B H ; K2 = 7A H ; K3 = 01 H .</p>
<p></span></div>
<div align="justify">&nbsp;&nbsp; Ovo unosi izvesnu grešku u izračunavanju upravljačke promenljive. Upravljačka pro-menljiva, koja ovde predstavlja vrednost napona koju dovodimo na grejač, se nalazi u opsegu 0 – 400V . Teorijski bi se mogla generisati bilo koja vrednost iz tog opsega ali to nema praktičnog značaja . Iz tog razloga je ovde izvršeno skaliranje upravlja-čke promenljive, pa je ona svedena u opseg 0 – 50, deljenjem sa 8 .</p>
</div>
<div align="justify">&nbsp;Na ovaj način ustvari generišemo samo 50 vrednosti ugla paljenja tiristora, pri čemu se napon menja u koracima od 8V. Ugao paljenja prvog tiristora generiše Timer0 u mikrokontroleru dok su ostali uglovi pomereni za po 1/3 periode. Konsanta kojom se puni Timer0 da bi generisao željeni ugao je 16-to bitna i uzima se iz tabele koja se nalazi u programskoj memoriji. Tabela je data u nastavku .</div>
<div align="justify">&nbsp;</div>
<div align="justify">
<div style="text-align: center;"><img loading="lazy" decoding="async" class=" size-full wp-image-2011" src="http://automatika.rs/wp-content/uploads/2009/09/3_regulacija_temperature_projekat_automatika.rs.jpg" alt="3 regulacija_temperature_projekat_automatika.rs" title="tabela1_regulisanje_temperature_vode_zatvorenog_centralnog_grejanja_-_praktina_realizacija_obrada_signala_automatika.rs.jpg" style="width: 495px; height: 679px; margin: 5px;" height="852" width="600" srcset="https://www.automatika.rs/wp-content/uploads/2009/09/3_regulacija_temperature_projekat_automatika.rs.jpg 665w, https://www.automatika.rs/wp-content/uploads/2009/09/3_regulacija_temperature_projekat_automatika.rs-211x300.jpg 211w, https://www.automatika.rs/wp-content/uploads/2009/09/3_regulacija_temperature_projekat_automatika.rs-296x420.jpg 296w" sizes="auto, (max-width: 600px) 100vw, 600px" /></div></div>
<div align="center">Tabela 1. Zavisnost napona ispravljačaod ugla paljenja tiristora</div>
<div align="center">&nbsp;</div>
<div align="center">
<div style="text-align: center;"><img loading="lazy" decoding="async" class=" size-full wp-image-2012" src="http://automatika.rs/wp-content/uploads/2009/09/4_regulacija_temperature_projekat_automatika.rs.jpg" width="480" height="158" alt="4 regulacija_temperature_projekat_automatika.rs" srcset="https://www.automatika.rs/wp-content/uploads/2009/09/4_regulacija_temperature_projekat_automatika.rs.jpg 672w, https://www.automatika.rs/wp-content/uploads/2009/09/4_regulacija_temperature_projekat_automatika.rs-300x99.jpg 300w" sizes="auto, (max-width: 480px) 100vw, 480px" /></div></div>
<div align="justify">&nbsp;</div>
<div align="justify">&nbsp;&nbsp; Zavisnost izlaznog napona od ugla paljenja je prikazana u tabeli. Uout predstavlja zaokruženu vrednost . Kolona Timer sadrži konstante kojima se puni Timer0 da bi generisao željeni ugao paljenja prvog tiristora. Potrebno je ove vrednosti pretvoriti u hexadecimalni oblik .</div>
<div align="justify">&nbsp;&nbsp; Konstante su dvo-bajtne (16 bita) niže bajtove stavljamo u jednu tabelu na lokacije od 100 (64H) do 150 (96H) , a više bajtove u drugu tabelu na lokacije od 151 (97H) do 201 (C9H) . Ovim tabelama pristupamo indirektno .</div>
<div align="justify">Timer1 koristimo za generisanje uglova paljenja ostala dva tiristora. On&nbsp; generiše vremenski period koji odgovara 1/3 periode mrežnog napona tj. oko 6.666msec. Konstanta kojom punimo Timer1 je zato 65535 – 6666 =58869 (E5F5 H).</p>
</div>
<div align="justify">Perioda odabiranja je 75sec što predstavlja 3750 perioda mrežnog napona . Timer2 služi za generisanje periode odabiranja. Nalazi se u auto-reload modu što znači da&nbsp; se pri prekoračenju (kad dostigne 65535 (FFFF H)) automatski napuni vrednošću 65535 – 3750 = 61785 (F159 H).Ovaj Timer je podešen da radi kao Counter tj. brojač događaja odnosno brojač perioda mrežnog napona.</p>
</div>
<div align="justify">&nbsp;&nbsp; Vrlo važno pitanje je određivanje prioriteta interapta. Najviši prioritet ima INT0 koga generiše mreža. U odnosu na njega se generišu svi uglovi paljenja i određuje perioda odabiranja.&nbsp;<span style="line-height: 1.3em;">Na osnovu dosad izloženog može se preći na programski kod u asembleru uz oslonac na repertoar instrukcija mikrokontrolera uz kratak komentar.</span></div>
<div align="justify">&nbsp;</div>
<div align="center"><b>Programski kod za upravljanja centralnim grejanjem </b></div>
<div align="justify">&nbsp;</div>
<div align="justify">&nbsp;</div>
<div>;ADRESE PROMENLJIVIH VELIČINA</p>
<p> OUT0&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DATA&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 30h&nbsp;&nbsp;&nbsp; ; Izlazna promenljiva u(kT)<br /> OUT1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DATA&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 31h&nbsp;&nbsp;&nbsp; ; u((k-1)T)<br /> EROR0&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DATA&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 32h&nbsp;&nbsp;&nbsp; ; Signal greške e(kT)<br /> EROR1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DATA&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 33h&nbsp;&nbsp;&nbsp; ; e((k-1)T)<br /> EROR2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DATA&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 34h&nbsp;&nbsp;&nbsp; ; e((k-2)T)<br /> EROR0ZN&nbsp;&nbsp;&nbsp; BIT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 00h&nbsp;&nbsp;&nbsp; ; Znak greške<br /> EROR1ZN&nbsp;&nbsp;&nbsp; BIT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 01h<br /> EROR2ZN&nbsp;&nbsp;&nbsp; BIT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 02h<br /> SCRCTRL&nbsp;&nbsp;&nbsp; BIT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 03h&nbsp;&nbsp;&nbsp; ; Kontrolni bit za upravljanje SCR-ovima<br /> ZNAK1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; BIT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 04h&nbsp;&nbsp;&nbsp; ; Pomocna prom.<br /> ZNAK2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; BIT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 05h&nbsp;&nbsp;&nbsp; ;<br /> ZNAKR&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; BIT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 06h&nbsp;&nbsp;&nbsp; ;</p>
<p> ;KONSTANTE</p>
<p> K1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EQU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 7Bh&nbsp;&nbsp;&nbsp; ; K1 = 123<br /> K2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EQU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 7Ah&nbsp;&nbsp;&nbsp; ; K2 = 122<br /> K3&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EQU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 01h&nbsp;&nbsp;&nbsp; ; K3 = 1<br /> TIM1H&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EQU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; E5h&nbsp;&nbsp;&nbsp; ; 65535 – 6666 = E5F5 h za Timer1<br /> TIM1L&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EQU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; F5h&nbsp;&nbsp;&nbsp; ;<br /> TIM2H&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EQU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; F1h&nbsp;&nbsp;&nbsp; ; 65535 – 3750 = F159 h za Timer2<br /> TIM2L&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EQU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 59h&nbsp;&nbsp;&nbsp; ;</p>
<p> ORG&nbsp;&nbsp;&nbsp; 0000h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Pri resetu ili uključenju ide se na INIC<br /> JMP&nbsp;&nbsp;&nbsp; INIC<br /> ORG&nbsp;&nbsp;&nbsp; 0003h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; INT0 Rutina SCR123<br /> LCALL&nbsp;&nbsp;&nbsp; SCR123<br /> ORG&nbsp;&nbsp;&nbsp; 000Bh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Timer0 Rutina<br /> LCALL&nbsp;&nbsp;&nbsp; SCR1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Generiše ugao paljenja prvog (SCR1) tiristora<br /> ORG&nbsp;&nbsp;&nbsp; 001Bh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Timer1 Rutina<br /> LCALL&nbsp;&nbsp;&nbsp; PAUZA&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Generiše pauzu u trajanju 6.666 msec<br /> ORG&nbsp;&nbsp;&nbsp; 002Bh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Timer2 Rutina<br /> LCALL&nbsp;&nbsp;&nbsp; RACUN&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Generiše upravljačku promenljivu OUT0</p>
<p> ; NA OVOM MESTU TREBALO BI DEFINISATI TABELU SA UGLOVIMA PALJENJA<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ORG&nbsp;&nbsp;&nbsp; 0064h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Početak TABELE – niži bajtovi<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DB&nbsp;&nbsp;&nbsp; EFh,68h,47h,25h,03h, …….&nbsp;&nbsp;&nbsp; ; Ovo su samo prvih 5 nižih<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DB&nbsp;&nbsp;&nbsp; D8h,DCh,DDh,DEh,DFh, ……&nbsp;&nbsp;&nbsp; ; Ovo su samo prvih 5 viših</p>
<p> ; INICIJALIZACIJA</p>
<p> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ORG&nbsp;&nbsp;&nbsp; 00CDh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Adresa (205 dec) od koje počinje prog. kod<br /> INIC:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; IE.7&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Zabrana svih prekida<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; PSW,#00h&nbsp;&nbsp;&nbsp; ; Obriši PSW<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TMOD,#11h&nbsp;&nbsp;&nbsp; ; Timer0 i Timer1 u MOD1 kao 16 bitni Timer<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TCON,#05h&nbsp;&nbsp;&nbsp; ; IE0 i IE1 interapti na opadajuću ivicu<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; IP,#01h&nbsp;&nbsp;&nbsp; ; Najviši prioritet za IE0<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; T2CON,#02h&nbsp;&nbsp;&nbsp; ; Timer2 kao Counter u AUTO-RELOAD modu<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; OUT0,#00h&nbsp;&nbsp;&nbsp; ; Inicijalizuj promenljive<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; OUT1,#00h&nbsp;&nbsp;&nbsp; ; &#8211;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; EROR0,#00h&nbsp;&nbsp;&nbsp; ; &#8211;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; EROR1,#00h&nbsp;&nbsp;&nbsp; ; &#8211;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; EROR2,#00h&nbsp;&nbsp;&nbsp; ; &#8211;<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; SCRCTRL&nbsp;&nbsp;&nbsp; ; SCRCTRL=0 za SCR2 i SCRCTRL=1 za SCR3<br /> &nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TL1,TIM1L&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Napuni Timer1 sa E5F5h<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TH1,TIM1H&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; RCAP2L,TIM2L&nbsp;&nbsp;&nbsp; ; Napuni Auto-reload registre sa F159h<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; RCAP2H,TIM2H&nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; P1,#10001111b&nbsp;&nbsp;&nbsp; ; U port P0 upiši 10001111<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; IE.7&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Omogući prekide<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; T2CON.2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Startuj Timer/Counter2</p>
<p> PETLJA:&nbsp;&nbsp;&nbsp; SJMP&nbsp;&nbsp;&nbsp; PETLJA&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Petlja u kojoj se vrti program</p>
<p> SCR123:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,OUT0&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; R1 = OUT0 = upravljačka prom.<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TL0,@R1+100&nbsp;&nbsp;&nbsp; ; Indirektno napuni TL0 i TH0 sa <br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TH0,@R1+151&nbsp;&nbsp;&nbsp; ; vrednostima iz tabele<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; TCON.4&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; T0 RUN<br /> &nbsp;&nbsp;&nbsp; RETI&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Gotova IE0 rutina<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br /> SCR1:&nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; P1.2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; SCR1 ON&nbsp;&nbsp;&nbsp; &nbsp;<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; TCON.6&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; T1 RUN&nbsp;&nbsp;&nbsp; &nbsp; <br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; TCON.4&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; T0 OFF<br /> &nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; P1.2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; RETI</p>
<p> PAUZA:&nbsp;&nbsp;&nbsp; JB&nbsp;&nbsp;&nbsp; SCRCTRL,SCR3&nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; P1.3&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; SCR2 ON<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; TCON.6&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; T1 OFF<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TL1,TIM1L&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TH1,TIM1H&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; TCON.6&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; T1 ON<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; SCRCTRL&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; SCRCTRL=1 i sledeći put ide na SCR3<br /> &nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; P1.3&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; RETI</p>
<p> SCR3:&nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; P1.4&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; SCR3 ON<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; TCON.6&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; T1 OFF<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TL1,TIM1L&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; TH1,TIM1H&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; SCRCTRL&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; SCRCTRL=0 i sledeći put ide na SCR2<br /> &nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; P1.4&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; RETI</p>
<p> ; Slede potprogrami za 2-vo Bajtno sabiranje i oduzimanje<br /> ; operand1 : A niži bajt, B viši bajt ; operand2 : R1 niži bajt, R2 viši bajt<br /> ; Rezultat&nbsp;&nbsp; : A niži bajt, B viši bajt&nbsp; ;&nbsp; C = 1 negativan rezultat ; C=0 pozitivan</p>
<p> 2BSAB:&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Priprema za sabiranje<br /> &nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp; A,R1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Saberi niže bajtove<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,B&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; ADDC&nbsp;&nbsp;&nbsp; A,R2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Saberi više bajtove i C<br /> &nbsp;&nbsp;&nbsp; JNC&nbsp;&nbsp;&nbsp; KRSAB&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Ako nema C idi na KRSAB<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,#FFh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Inače vrati MAX (FFFFh) vrednost<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,#FFh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; RET</p>
<p> KRSAB:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,A&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,R1<br /> &nbsp;&nbsp;&nbsp; RET</p>
<p> 2BODU:&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Pripremi za oduzimanje<br /> &nbsp;&nbsp;&nbsp; SUBB&nbsp;&nbsp;&nbsp; A,R1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Oduzmi niže bajtove<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,B&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; SUBB&nbsp;&nbsp;&nbsp; A,R2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Oduzmi više bajtove i C<br /> &nbsp;&nbsp;&nbsp; JNC&nbsp;&nbsp;&nbsp; KRODU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Ako nije C (- rezultat) idi na KRODU<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R2,A<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,R1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; C<br /> &nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Inače nađi drugi komplement nižeg<br /> &nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp; A,#01h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,R2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; ADDC&nbsp;&nbsp;&nbsp; A,#01h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; i drugi kompl. Višeg bajta<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Postavi C&nbsp; &#8211;&nbsp; rezultat je negativan<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,A<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,R1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Postavi izlaz i vrati se<br /> &nbsp;&nbsp;&nbsp; RET</p>
<p> KRODU:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,A<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,R1<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Postavi izlaz, C=0 (rez. je +) i vrati se&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; RET&nbsp;&nbsp;&nbsp; </p>
<p> ;Sledi potprogram za 2B sabiranje sa predznakom<br /> ;operand1 : B:A viši i niži bajt i ZNAK1 = 1 ako je negativan<br /> ;operand2 : R2:R1 viši i niži bajt i ZNAK2 = 1 ako je negativan<br /> ;rezultat&nbsp;&nbsp; : B:A viši i niži bajt i ZNAKR = 1 ako je negativan</p>
<p> SABIRAJ:&nbsp;&nbsp;&nbsp; JB&nbsp;&nbsp;&nbsp; ZNAK1,PG1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; operand1 &lt;0<br /> &nbsp;&nbsp;&nbsp; JB&nbsp;&nbsp;&nbsp; ZNAK2,PG2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; operand2 &lt;0<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; ZNAKR&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; op1&gt;0 i op2&gt;0 onda je rez.&gt;0<br /> &nbsp;&nbsp;&nbsp; CALL&nbsp;&nbsp;&nbsp; 2BSAB&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; saberi i vrati se<br /> &nbsp;&nbsp;&nbsp; RET</p>
<p> PG2:&nbsp;&nbsp;&nbsp; CALL&nbsp;&nbsp;&nbsp; 2BODU&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; op1&gt;0 i op2&lt;0 zato zovi oduzimanje<br /> &nbsp;&nbsp;&nbsp; JC&nbsp;&nbsp;&nbsp; PG3&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; ako je rez&lt;0 skoči na PG3<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; ZNAKR&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; inače je rez &gt;0 , znakr = 0 , vrati se<br /> &nbsp;&nbsp;&nbsp; RET<br /> PG3:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; ZNAKR&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; rez&lt;0 , znakr = 1 , vrati se&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; RET<br /> PG1:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; JNB&nbsp;&nbsp;&nbsp; ZNAK2,PG4&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; op1&lt;0 ako je op2&gt;0 skoči na PG4<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; ZNAKR&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; op1&lt;0 i op2&lt;0 pa je rez&lt;0 , znakr=1<br /> &nbsp;&nbsp;&nbsp; CALL&nbsp;&nbsp;&nbsp; 2BSAB&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; RET<br /> PG4:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R3,A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Zameni mesta oper1 i oper2 i<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R4,B&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; skoči na PG2<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,R1<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,R2<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,R3<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R2,R4<br /> &nbsp;&nbsp;&nbsp; SJMP&nbsp;&nbsp;&nbsp; PG2</p>
<p> ;Sledi potprogram za računanje upravljačke promenljive OUT0</p>
<p> RACUN:&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; T2CON.7&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Interapt flag TF2 moramo obrisati <br /> CLR&nbsp;&nbsp;&nbsp; P1.5&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Startuj signal za konverziju B&amp;C =0<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,P2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; U A se nalazi REF ali u obliku BCD cifri<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,A<br /> &nbsp;&nbsp;&nbsp; ANL&nbsp;&nbsp;&nbsp; A,#0Fh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Odseci donji nibl (4 bita) – cifra desetica<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,#0Ah&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; U B stavi 10&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; MUL&nbsp;&nbsp;&nbsp; AB&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R2,A<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,R1<br /> &nbsp;&nbsp;&nbsp; SWAP&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Zameni niblove u A<br /> &nbsp;&nbsp;&nbsp; ANL&nbsp;&nbsp;&nbsp; A,#0Fh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; Odseci donji nibl – cifra jedinica<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; C<br /> &nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp; A,R2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; U A se nalazi REFerentna&nbsp; vrednost<br /> ADC:&nbsp;&nbsp;&nbsp; JB&nbsp;&nbsp;&nbsp; TCON.3,LOADADC&nbsp;&nbsp;&nbsp; ; Čekaj da se obavi konverzija<br /> &nbsp;&nbsp;&nbsp; SJMP&nbsp;&nbsp;&nbsp; ADC<br /> LOADADC:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,P0&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; U B se nalazi reč iz AD konvertora<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; P1.5<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; C<br /> &nbsp;&nbsp;&nbsp; SUBB&nbsp;&nbsp;&nbsp; A,B&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; U A se nalazi signal greške = REF – AD<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; EROR0ZN&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; EROR0 &gt;0<br /> &nbsp;&nbsp;&nbsp; JNC&nbsp;&nbsp;&nbsp; NASTAVI&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; ako nije C NASTAVI <br /> &nbsp;&nbsp;&nbsp; CPL&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; inače je EROR0&lt;0 , nađi drugi komplem.<br /> &nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp; A,#01h<br /> &nbsp;&nbsp;&nbsp; SETB&nbsp;&nbsp;&nbsp; EROR0ZN&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; EROR0 je negativno<br /> NASTAVI:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; EROR0,A<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,K1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> &nbsp;&nbsp;&nbsp; MUL&nbsp;&nbsp;&nbsp; AB&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; B:A = K1*EROR0<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; R2:R1 = K1*EROR0<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R2,B<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,EROR2<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,K3<br /> &nbsp;&nbsp;&nbsp; MUL&nbsp;&nbsp;&nbsp; AB&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; B:A = K3*EROR2<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; ZNAK2,EROR0ZN<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; ZNAK1,EROR2ZN<br /> &nbsp;&nbsp;&nbsp; CALL&nbsp;&nbsp;&nbsp; SABIRAJ&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; B:A = K3*EROR2+K1*EROR0<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; R2:R1 = &#8212;&#8212;<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R2,B<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; ZNAK2,ZNAKR<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,EROR1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;<br /> MOV&nbsp;&nbsp;&nbsp; B,K2<br /> MUL&nbsp;&nbsp;&nbsp; AB&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; B:A = K2*EROR1<br /> MOV&nbsp;&nbsp;&nbsp; ZNAK1,EROR1ZN<br /> CPL&nbsp;&nbsp;&nbsp; ZNAK1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; promeni znak pošto se oduzima<br /> CALL&nbsp;&nbsp;&nbsp; SABIRAJ&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; U B:A = ER2*K3+ER0*K1-ER1*K2 </p>
<p> ;Sada ovu sumu treba podeliti sa 32 što je isto kao i pomeranje u desno 5 mesta<br /> ; a to je isto što i pomeranje u levo 3 mesta</p>
<p> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RLC&nbsp;&nbsp;&nbsp; A<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RLC&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; rotiraj 3 puta u&nbsp; levo = deli sa 32<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RLC&nbsp;&nbsp;&nbsp; A<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ANL&nbsp;&nbsp;&nbsp; A,#07h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; odseci niža 3 bita (00000xxx)<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R7,A<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,B&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; u A stavi viši bajt<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RLC&nbsp;&nbsp;&nbsp; A<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RLC&nbsp;&nbsp;&nbsp; A<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RLC&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; i podeli ga sa 32<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R6,A<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; B,07h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; u B stavi masku 00000111<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ANL&nbsp;&nbsp;&nbsp; B,A&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; i odseci niža 3 bita (00000xxx) višeg B.<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,#F8h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; u A stavi masku (11111000)<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ANL&nbsp;&nbsp;&nbsp; A,R6&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; i odseci viših 5 bita (xxxxx000) višeg B.<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ORL&nbsp;&nbsp;&nbsp; A,R7&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; zalepi xxxxx000 OR 00000xxx<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,OUT1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; u R1 stavi OUT1<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R2,#00h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; u R2 stavi 00h<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; ZNAK2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; ZNAK2 je +<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; ZNAK1,ZNAKR&nbsp;&nbsp;&nbsp; ; ZNAK1 = ZNAKR<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CALL&nbsp;&nbsp;&nbsp; SABIRAJ&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; B:A = OUT0 = OUT1 + SUMA/32<br /> &nbsp;&nbsp;&nbsp; JNB&nbsp;&nbsp;&nbsp; ZNAKR,LAB1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; ako je &gt;0 skoči na LAB1<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; OUT0,#00h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; inače OUT0 = 00h (MIN)<br /> &nbsp;&nbsp;&nbsp; JMP&nbsp;&nbsp;&nbsp; KRAJ&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; idi na kraj<br /> LAB1:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1,A<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,B&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; stavi viši bajt u A<br /> &nbsp;&nbsp;&nbsp; JZ&nbsp;&nbsp;&nbsp; LAB2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; ako je 0 skoči na LAB2<br /> LAB3:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; OUT0,#32h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; inače OUT0 = (MAX) = 50<br /> &nbsp;&nbsp;&nbsp; JMP&nbsp;&nbsp;&nbsp; KRAJ&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; idi na kraj<br /> LAB2:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,#32h<br /> &nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; C<br /> &nbsp;&nbsp;&nbsp; SUBB&nbsp;&nbsp;&nbsp; A,R1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; A = 50 &#8211; OUT0<br /> &nbsp;&nbsp;&nbsp; JC&nbsp;&nbsp;&nbsp; LAB3&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; ako je OUT0 &gt;50 skoči na LAB3&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; OUT0,R1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ; inače je OUT0&lt;50 i nastavi do kraja<br /> KRAJ:&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; OUT1,OUT0<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; EROR2,EROR1<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; EROR1,EOR0<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; EROR2ZN,EROR1ZN<br /> &nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; EROR1ZN,EROR0ZN&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; RETI&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;Kraj rutine RACUN</p>
<p> ; Kraj programa</p>
<p> &nbsp;&nbsp;&nbsp; END</p>
<p> <a href="http://www.elektronika.ftn.uns.ac.rs/" target="_blank">FTN Novi Sad, Katedra za elektroniku</a></div>
<p>The post <a href="https://www.automatika.rs/projekti/svi-projekti/regulisanje-temperature-vode-zatvorenog-centralnog-grejanja-prakticna-realizacija.html">Regulisanje temperature vode zatvorenog centralnog grejanja &#8211; praktična realizacija</a> appeared first on <a href="https://www.automatika.rs">Automatika.rs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.automatika.rs/projekti/svi-projekti/regulisanje-temperature-vode-zatvorenog-centralnog-grejanja-prakticna-realizacija.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mikroprocesorski sistem za regulaciju temperature</title>
		<link>https://www.automatika.rs/projekti/svi-projekti/mikroprocesorski-sistem-za-regulaciju-temperature.html</link>
					<comments>https://www.automatika.rs/projekti/svi-projekti/mikroprocesorski-sistem-za-regulaciju-temperature.html#respond</comments>
		
		<dc:creator><![CDATA[administrator]]></dc:creator>
		<pubDate>Sat, 13 Jun 2009 21:39:53 +0000</pubDate>
				<category><![CDATA[Svi projekti]]></category>
		<category><![CDATA[merenje temperature]]></category>
		<category><![CDATA[mikrokontroler]]></category>
		<category><![CDATA[Mikroprocesorski sistem za regulaciju temperature]]></category>
		<category><![CDATA[parametri]]></category>
		<category><![CDATA[PID]]></category>
		<category><![CDATA[podesavanje]]></category>
		<category><![CDATA[regulacija temperature]]></category>
		<category><![CDATA[Select Category]]></category>
		<category><![CDATA[Select Section]]></category>
		<category><![CDATA[susenje]]></category>
		<guid isPermaLink="false"></guid>

					<description><![CDATA[<p>Merenje temperature postavlja se kao najčešći i najvažniji zadatak pogonske kontrole bilo kakvog toplotnog procesa. Bolja regulacija temperature znači veću sigurnost, veću delotvornost i kvalitet konačnog proizvoda. Poslednjih godina je razvijeno mnogo različitih metoda za određivanje prihvatljivih parametara PI/PID regulatora. Metode se razlikuju u složenosti, fleksibilnosti i poznavanju procesa koji koristimo.&#160; &#160;Sušenje voća podrazumeva dovođenje [&#8230;]</p>
<p>The post <a href="https://www.automatika.rs/projekti/svi-projekti/mikroprocesorski-sistem-za-regulaciju-temperature.html">Mikroprocesorski sistem za regulaciju temperature</a> appeared first on <a href="https://www.automatika.rs">Automatika.rs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div align="justify" style="text-align: justify;"><img loading="lazy" decoding="async" class=" alignleft size-full wp-image-1799" src="http://automatika.rs/wp-content/uploads/2009/06/merenje-temperature-automatika.png" alt="merenje-temperature-automatika.png" title="merenje-temperature-automatika.png" height="100" width="100" style="line-height: 1.3em; border: 1px solid #000000; margin: 5px 5px 0px 0px; width: 100px; height: 100px; float: left;" />Merenje temperature postavlja se kao najčešći i najvažniji zadatak pogonske kontrole bilo kakvog toplotnog procesa. Bolja regulacija temperature znači veću sigurnost, veću delotvornost i kvalitet konačnog proizvoda. Poslednjih godina je razvijeno mnogo različitih metoda za određivanje prihvatljivih parametara PI/PID regulatora. Metode se razlikuju u složenosti, fleksibilnosti i poznavanju procesa koji koristimo.&nbsp;</p>
<p></div>
<p>  <span id="more-218"></span>  </p>
<div style="text-align: justify;">&nbsp;Sušenje voća podrazumeva dovođenje određene količine toplote potrebne za isparavanje i odvođenje vlage. Obično se pre sušenja voće mora na neki način pripremiti, što znači da je potrebno primeniti tehnološke postupke. Pod pojmom pripreme voća za dehidraciju podrazumeva se čitav niz različitih postupaka koji se sprovode u cilju dobijanja finalnog produkta što boljeg kvaliteta. Koji će se postupak primeniti zavisi od vrste voća. &nbsp;</p>
</div>
<p align="justify"><b>2. REZULTATI SIMULACIJE </b></p>
<p align="justify">Model sistema je rađen u programskom paketu Matlab odnosno delu tog paketa, Simulink-u. Model se sastoji iz tri dela. Pri izboru regulatora odlučeno je za PI regulator jer poseduje osobine koje su dobre za regulaciju temperature. Proces regulacije temperature u ovom sistemu je spor, a D regulator reaguje samo na brze promene dok spore i dugotrajne promene ne prouzrokuju nikakvo dejstvo ovog regulatora i zato ga ne koristimo.</p>
<p align="justify">Na slici 2.1. je prikazan blok PI regulatora. Na ulaz PI regulatora se dovodi razlika zadate (željene) i merene temperature koja se dobija sa senzora. Na izlazu regulatora dobijamo signal koji dalje prosleđujemo na kolo za poređenje.</p>
<p align="center"><a name="0.1_graphic0E"></a></p>
<p> <center> </p>
<div style="text-align: center;"><img loading="lazy" decoding="async" class=" alignleft size-full wp-image-1800 alignleft size-full wp-image-1801 alignleft size-full wp-image-1802 alignleft size-full wp-image-1803 alignleft size-full wp-image-1804 alignleft size-full wp-image-1805 alignleft size-full wp-image-1806 alignleft size-full wp-image-1807 alignleft size-full wp-image-1808 alignleft size-full wp-image-1809 alignleft size-full wp-image-1810 alignleft size-full wp-image-1811 alignleft size-full wp-image-1812" src="http://automatika.rs/wp-content/uploads/2009/06/blok-pi-regulatora-realizovan-u-matlabu.jpg" title="blok-pi-regulatora-realizovan-u-matlabu.jpg" style="width: 421px; height: 147px;" alt="blok-pi-regulatora-realizovan-u-matlabu.jpg" height="147" width="421" srcset="https://www.automatika.rs/wp-content/uploads/2009/06/blok-pi-regulatora-realizovan-u-matlabu.jpg 421w, https://www.automatika.rs/wp-content/uploads/2009/06/blok-pi-regulatora-realizovan-u-matlabu-300x105.jpg 300w" sizes="auto, (max-width: 421px) 100vw, 421px" /></div>
<p> </center> </p>
<p align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Slika 2.1. Blok PI regulatora realizovan u Matlab-u</p>
<p align="justify">Model pretvarača tj.bloka&nbsp; koji na izlazu daje PWM signal,&nbsp; je prikazan na slici 2.2.</p>
<p align="justify"><img loading="lazy" decoding="async" src="https://mail.google.com/mail/?name=ccf32a38c42f1f28.jpg&amp;attid=0.1&amp;disp=vahi&amp;view=att&amp;th=121dac7dde8ac262" alt="Your browser may not support display of this image." height="1" width="1" /></p>
<div><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/model-pretvaraca.jpg" alt="model-pretvaraca.jpg" title="model-pretvaraca.jpg" style="margin: 5px; float: left;" height="211" width="302" /><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/model-pretvaraca1.jpg" alt="model-pretvaraca1.jpg" title="model-pretvaraca1.jpg" style="margin: 5px; float: left;" height="127" width="352" /></div>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">Slika 2.2. Model pretvarača&nbsp;</p>
<p align="justify">Podešavanje napona na grejaču je&nbsp; realizovano preko bloka koji nam na izlazu daje PWM signal. PWM signal je dobijen poređenjem trougaonog signala periode 6 sekundi i signala faktora ispune koji je dobijen na izlazu PI regulatora.</p>
<p align="justify">Model grejača je prikazan na slici 2.3.</p>
<p align="center">&nbsp;</p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/model-grejaca.jpg" title="model-grejaca.jpg" style="width: 374px; height: 159px;" alt="model-grejaca.jpg" height="159" width="374" /></center> </p>
<p>&nbsp;</p>
<p align="center">Slika 2.3. Model grejača</p>
<p align="justify">Rezulatati simulacije prikazani su na procesu gde je model grejača predstavljen funkcijom prenosa (izraz 1)&nbsp;</p>
<p>&nbsp;&nbsp;<img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/jednacina-merenje-temperature.jpg" alt="jednacina-merenje-temperature.jpg" title="jednacina-merenje-temperature.jpg" style="margin: 5px auto; display: block;" height="71" width="166" /><span style="line-height: 1.3em;">(1)</span></p>
<p align="justify">&nbsp;&nbsp;</p>
<p align="justify">Savremena rešenja standardnih PI regulatora omogućavaju podešavanje svih parametara [2,3] koji određuju intenzitete pojedinih dejstava regulatora. Često se podešavanje vrednosti ovih parametara u konkretnoj regulacionoj petlji vrši na osnovu praktičnog iskustva, pošto kompletan proračun u većini slučajeva nije moguće izvršiti zbog&nbsp; nedovoljnog&nbsp; poznavanja strukture i parametara objekta upravljanja.</p>
<p align="justify">Rezultati simulacije su dobijeni na osnovu tri najčešće korišćene metoda za podešavanje parametara PI regulatora.</p>
<p align="justify">Izabrane metode su Ziegler – Nichols – ova metoda,&nbsp; metoda modulnog optimuma i metoda simetricnog optimuma.</p>
<p align="justify">Odzivi sistema prikazani su na slikama 2.1, 2.2. i 2.3. respektivno a vrednosti parametara PI regulatora podešeni po pomenutim metodama, u tabeli 2.1.</p>
<p align="justify">Za potrebe simulacije, kao referentna vrednost temperature, izabrana je temperatura koja iznosi 50o C a opseg&nbsp; temperature u kojem su prikazani rezulati je između 0 o C i 100 o C.&nbsp; U realnim uslovima taj opseg bi mogao biti manji ali je za simulaciju izabran širi opseg.</p>
<p align="justify">&nbsp;&nbsp;&nbsp;Tabela 2.1. Vrednosti parametara PI regulatora&nbsp;</p>
<div><a name="0.1_table01"></a></div>
<div align="center"><center> </p>
<table border="2" cellspacing="0" style="width: 322px;">
<tbody>
<tr valign="top">
<td rowspan="2" height="37">Parametri</td>
<td colspan="4">Metode za podešavanje parametara PI regulatora</td>
</tr>
<tr valign="top">
<td height="37">Ziegler-Nichols</td>
<td>Modulni optimum</td>
<td>Simetrični optimum</td>
<td>Izmenjen modulni optimum</td>
</tr>
<tr valign="top">
<td height="18">Kp</td>
<td>2.7</td>
<td>1.5</td>
<td>2.5</td>
<td>1.5</td>
</tr>
<tr valign="top">
<td height="18">Ki</td>
<td>0.003333</td>
<td>0.05</td>
<td>0.0104</td>
<td>0.0045</td>
</tr>
</tbody>
</table>
<p> </center></div>
<p align="center"><a name="0.1_graphic13"></a></p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/odziv-sistema-dobijen-na-osnovu-podesavanja-pid-regulatora.jpg" title="odziv-sistema-dobijen-na-osnovu-podesavanja-pid-regulatora.jpg" style="width: 416px; height: 292px;" alt="odziv-sistema-dobijen-na-osnovu-podesavanja-pid-regulatora.jpg" height="292" width="416" /></center> </p>
<p>&nbsp;</p>
<p align="center">Slika 2.1. Odziv sistema dobijen na osnovu podešavanja parametara po Ziegler-Nichols-ovoj metodi</p>
<p align="justify">Odziv sistema prikazan na slici 2.1. je dobar jer nema preskoka i nema velikih oscilacija oko željene temperature ali ipak nije zadovoljavajući jer je dosta spor. Posmatrajući karakteristiku može se primetiti da se željena temperatura jako sporo postiže.&nbsp;</p>
<p align="center"><a name="0.1_graphic14"></a></p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/odziv-sistema-dobijen-na-osnovu-podesavanja-parametara-po-metodi-modulnog-optimuma.jpg" title="odziv-sistema-dobijen-na-osnovu-podesavanja-parametara-po-metodi-modulnog-optimuma.jpg" style="width: 429px; height: 289px;" alt="odziv-sistema-dobijen-na-osnovu-podesavanja-parametara-po-metodi-modulnog-optimuma.jpg" height="289" width="429" /></center> </p>
<p>&nbsp;</p>
<p align="center">Slika 2.2. Odziv sistema dobijen na osnovu podešavanja parametara po metodi modulnog optimuma</p>
<p align="justify">Posmatrajući karakteristiku sa slike 2.2. može se primetiti da je došlo do preskoka tj.odstupanja u odnosu na željenu vrednost temperature. Za neke određene procese to i nije&nbsp; tako veliki problem, ali ipak bi trebalo postići da preskok, ukoliko već postoji, bude što manji.&nbsp;</p>
<p align="center"><a name="0.1_graphic15"></a></p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/odziv-sistema-dobijen-na-osnovu-podesavanja-parametara-po-metodi-simetricnog-optimuma.jpg" title="odziv-sistema-dobijen-na-osnovu-podesavanja-parametara-po-metodi-simetricnog-optimuma.jpg" style="width: 398px; height: 280px;" alt="odziv-sistema-dobijen-na-osnovu-podesavanja-parametara-po-metodi-simetricnog-optimuma.jpg" height="280" width="398" /></center> </p>
<p>&nbsp;</p>
<p align="center">Slika 2.3. Odziv sistema dobijen na osnovu podešavanja parametara po metodi simetričnog optimuma</p>
<p align="justify">Brzina kojom se postiže željena temperatura kao na slici 2.3., je veća nego kod odziva dobijenog modulnim optimumom ali je i preskok značajno veći. Vrlo je bitno da i brzina i preskok budu uskladjeni da bi se postigla dobra regulacija temperature.</p>
<p align="justify">Za neke procese je prihavtljivo oscilovanje u temperaturi ±1oC i to se ne smatra velikim odstupanjem. Da bi se postiglo takvo ponašanje sistema tj. da bi se dobila preciznija regulaciju temperature uradjeno je nekoliko eksperimenata.</p>
<p align="center"><a name="0.1_graphic16"></a></p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/odziv-sistema-dobijen-na-osnovu-eksperimenta.jpg" title="odziv-sistema-dobijen-na-osnovu-eksperimenta.jpg" style="width: 403px; height: 252px;" alt="odziv-sistema-dobijen-na-osnovu-eksperimenta.jpg" height="252" width="403" /></center> </p>
<div>&nbsp;</div>
<p>&nbsp;</p>
<p align="center">Slika 2.4.&nbsp; Odziv sistema dobijen na osnovu eksperimenta&nbsp;</p>
<p align="justify">Eksperimentalnim putem, menjanjem samo jednog parametra PI regulatora, korišćenjem parametara dobijenih po metodi modulnog optimuma, dobijen je manji preskok i samim tim i bolja regulacija temperature što je prikazano na slici 2.4.</p>
<p align="justify">Svaka od pomenutih metoda za podešavanje parametara PI regulatora, dala je relativno dobar rezultat. Medjutim, najbolji rezultat je dala malo izmenjena metoda modulnog optimuma, koja je dobijena eksperimentalnim putem. Promenjen je parametar integralnog dejstva kako bi preskok bio manji tj.manje odstupanje temperature. Preskok je manji nego po simetričnom i modulnom pravilu a brzina postizanja željene temperature je veća nego po Ziegler-Nichols-ovom pravilu. To su upravo faktori koji su vrlo važni za dobru regulaciju temperature.&nbsp;<br /> &nbsp;<br /> &nbsp;</p>
<p align="justify"><b>3. REALIZACIJA HARDVERA SISTEMA </b></p>
<p align="justify">Osnovu sistema čini mikrokontroler ATmega8L-8PC koji je zadovoljio sve potrebe opisanog sistema[4].&nbsp; ATmega8L-8PC&nbsp; je 8-bitni CMOS mikrokontroler male snage koji radi na bazi AVR RISC arhitekture.</p>
<p align="justify">Serijska komunikacija služi za vezu mikrokontrolera sa spoljašnjim &#8221;svetom&#8221;, tj. sa nekim perifernim jedinicama. Serijska komunikacija se vrši pomoću RS-232 konektora (DB9 konektora) i kola za prilagođavanje naponskih nivoa MAX 232, koje je prikazano na slici 3.1.&nbsp;</p>
<p align="center"><a name="0.1_graphic17"></a></p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/max-232-serijska-komunikacija.jpg" title="max-232-serijska-komunikacija.jpg" style="width: 320px; height: 170px;" alt="max-232-serijska-komunikacija.jpg" height="170" width="320" /></center> </p>
<p>&nbsp;</p>
<p align="center">Slika 3.1. MAX 232 serijska komunikacija</p>
<p align="justify">Pri realizaciji ovog sistema korišćen je temperaturni senzor PT100, koji sa konstantnim izvorom struje LM334 i operacionim pojačavačem čini senzorski deo uređaja [5] . Kolo sa PT100 temperaturnim senzorom je prikazano na slici 3.2.</p>
<p align="center"><a name="0.1_graphic18"></a></p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/kolo-sa-pt100-temperaturnim-senzorom.jpg" title="kolo-sa-pt100-temperaturnim-senzorom.jpg" style="width: 409px; height: 345px;" alt="kolo-sa-pt100-temperaturnim-senzorom.jpg" height="345" width="409" /></center> </p>
<p>&nbsp;</p>
<p align="center">Slika 3.2. Kolo sa PT100 temperaturnim senzorom</p>
<p align="justify">Prilikom razvoja uređaja često se javlja potreba za promenom delova koda mikrokontrolera. Ovaj mikrokontroler ima mogućnost programiranja bez potrebe da se vadi iz sistema pa se zato i nazivaju ISP ( In system programmable) mikrokontroleri. Programiranje se vrši preko konektora P7, prikazanog na slici 3.3.</p>
<p align="center">&nbsp;&nbsp;&nbsp;<a name="0.1_graphic19"></a></p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/konektor-za-programiranje-mikrokontrolera.jpg" title="konektor-za-programiranje-mikrokontrolera.jpg" style="width: 270px; height: 176px;" alt="konektor-za-programiranje-mikrokontrolera.jpg" height="176" width="270" /></center> </p>
<p>&nbsp;</p>
<p align="center">&nbsp;&nbsp;&nbsp;Slika 3.3. Konektor za programiranje mikrokontrolera</p>
<p align="justify">Osnovu kola za napajanje Slika 3.4. čini regulator napajanja LM7805CT. On ima tri nožice i dolazi u TO-220 kućištu. Poseduje strujno ograničenje, termičko gašenje i zaštitu od kratkog spoja. Ako se obezbedi hlađenje ovog kola možemo postići i do 1A struje na izlazu.</p>
<p align="center"><a name="0.1_graphic1A"></a></p>
<p> <center><img loading="lazy" decoding="async" src="http://automatika.rs/wp-content/uploads/2009/06/elektricna-sema-napajanja.jpg" title="elektricna-sema-napajanja.jpg" style="width: 477px; height: 215px;" alt="elektricna-sema-napajanja.jpg" height="215" width="477" /></center> </p>
<p>&nbsp;</p>
<p align="center">Slika 3.4. Električna šema napajanja&nbsp;</p>
<div align="justify">&nbsp;</div>
<p align="justify">Pored ovog kola imamo i relej u kombinaciji sa diodom koji nam služi da ukoliko dođe do greške pri uključivanju, odnosno da ukoliko bi se obrnuli krajevi ne dođe do pregorevanja nekih od komponenti.</p>
<div align="justify">&nbsp;</div>
<p align="justify">Kada bi umesto releja stavili diodu, jaka struja od dva puta po 3-4A bi protekla kroz nju i imali bi velike gubitke na njoj, a to bi i smetalo upravljanju motora pošto ne bi moglo doći do rekuperacije struje ka bateriji. Generisana struja se nebi vraćala u bateriju nego u kondenzator koji je premali i ne bi mogao da primi tu količinu struje. C17 poboljšava stabilnost i reakciju u prelaznom režimu. LED1 je signalna dioda i govori da li je kolo u radnom režimu.&nbsp;</p>
<div align="justify">&nbsp;</div>
<p align="justify"><b>4. ZAKLJUČAK </b></p>
<div align="justify">Realizacijom ovako opisanog sistema se postiže dobra i precizna regulacija temperature. Vrlo bitna osobina mikroprocesorkog sistema za regulaciju temperature je univerzalnost. Uz određene promene ovaj sistem se može prilagoditi za različite procese, zavisno od potrebe.</div>
<div align="justify"><strong><em><span style="font-size: 10pt;">&nbsp;</span></em></strong></div>
<div align="justify">
<p align="left"><span style="font-size: 10pt;"><strong><em><span style="font-family: 'Times New Roman';">Autor: Zorica Cvetinović</span></em></strong></span></p>
<div align="left"><span style="font-size: 10pt;"><strong style="line-height: 1.3em;"><em><a href="http://www.elektronika.ftn.uns.ac.rs/" target="_blank"><span style="font-family: 'Times New Roman'; color: #0000ff;"><span style="text-decoration: underline;">FTN- Novi Sad Katedra za elektroniku</span></span></a></em></strong></span></div>
<p> <span style="font-size: 10pt;"><strong><em>&nbsp;</em></strong></span></div>
<p>The post <a href="https://www.automatika.rs/projekti/svi-projekti/mikroprocesorski-sistem-za-regulaciju-temperature.html">Mikroprocesorski sistem za regulaciju temperature</a> appeared first on <a href="https://www.automatika.rs">Automatika.rs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.automatika.rs/projekti/svi-projekti/mikroprocesorski-sistem-za-regulaciju-temperature.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
