<?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>Çağdaş&#039;ın Günlüğü &#187; Robotik</title>
	<atom:link href="http://www.cagdastopcu.com/category/robotik/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cagdastopcu.com</link>
	<description>THE GNU HARDWARE DEVELOPER</description>
	<lastBuildDate>Tue, 04 Oct 2011 14:50:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Arm Cortex Programlama &#8211; 1</title>
		<link>http://www.cagdastopcu.com/arm-cortex-programlama-1.html</link>
		<comments>http://www.cagdastopcu.com/arm-cortex-programlama-1.html#comments</comments>
		<pubDate>Mon, 03 Oct 2011 15:01:23 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[elektronik]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[board]]></category>
		<category><![CDATA[cortex]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[freertos]]></category>
		<category><![CDATA[lpc1114]]></category>
		<category><![CDATA[lpcxpresso]]></category>
		<category><![CDATA[m0]]></category>
		<category><![CDATA[real time]]></category>
		<category><![CDATA[real time programming]]></category>
		<category><![CDATA[rtos]]></category>
		<category><![CDATA[task]]></category>
		<category><![CDATA[thread]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=474</guid>
		<description><![CDATA[Arm Cortex M serisi ile maceram yeni başladı. Arm Cortex programlama hakkında öğrendiklerimi yazı dizisi halinde yayınlamayı düşünüyorum. Bu ilk yazım bir nevi hello world yazısı olacak. Taskler ve onların tanıtılıp yaratılması ile real time programlamaya giriş yapılacak. Kullandığım Araçlar: Kit (Donanım): LPC 1114 LPCXpresso kiti. Üzerinde Arm Cortex M0 var. Usb kablo ile enerjilenebiliyor &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/arm-cortex-programlama-1.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/10/arm_cortex-m0_cagdas_topcu_design.jpg"><img class="size-medium wp-image-481 alignleft" title="arm_cortex-m0_cagdas_topcu_design" src="http://www.cagdastopcu.com/wp-content/uploads/2011/10/arm_cortex-m0_cagdas_topcu_design-300x267.jpg" alt="" width="300" height="267" /></a></p>
<p>Arm Cortex M serisi ile maceram yeni başladı. Arm Cortex programlama hakkında öğrendiklerimi yazı dizisi halinde yayınlamayı düşünüyorum. Bu ilk yazım bir nevi hello world yazısı olacak. Taskler ve onların tanıtılıp yaratılması ile real time programlamaya giriş yapılacak.</p>
<p><strong>Kullandığım Araçlar:</strong></p>
<p>Kit (Donanım): LPC 1114 LPCXpresso kiti. Üzerinde Arm Cortex M0 var. Usb kablo ile enerjilenebiliyor ve programlanabiliyor.</p>
<p>İşletim Sistemi: Ubuntu 11.04 Gnome Classic</p>
<p>LPCXpresso (IDE): Programları yazıp, derleyip kitimize yükleyebildiğimiz eclipse tabanlı IDE.</p>
<p>FreeRTOS: Küçük boyutlarda Real Time (gerçek zamanlı) işletim sistemi. LPC 1114 için oluşturulmuş hazır proje örneğini direkt atabiliyorsunuz kitinize.</p>
<p><strong>Başlamadan Önce Önemli Not:</strong> Yazdığınız kodları kitinize atmanız zaman alabilir veya atarken donmalar olabilir, bazen de haza verebilir. Bunun gibi şeylerle karşılaştığınızda LPCXpresso&#8217;yu kapatın. Cihanızın USB kablosunu ayırın ve LPCXpressoyu yeniden çalıştırıp yükleme işlemini tekrarlayın. Yılmayın kodunuzda hata olmadığı sürece tekrar deneyin. Üçüncü denemenizde muhtemelen olacaktır. FreeRTOS&#8217;u içine gömdüğünüz için biraz uzun sürüyor ve hata verebiliyor.</p>
<p>Gerçek Zamanlı sistemleri basitleştirmek için aynı anda bir çok işi yapabilme olarak düşünebiliriz. Daha düzgün bir tanımı için belki bir yazı daha yazabilirim. Böylece ufacık kitinizde bir program parçası sensörden veri okurken diğer bir program parçası da internetten gelebilecek istekleri bekler konumda tutulabilir. Bu program parçacıklarına Task diyoruz.</p>
<p><strong>Task / Thread Nedir, Neden Gereklidir?</strong></p>
<p>Task aslında programcıların bildiği threaddir. Ancak gömülü sistemlerde task terimi daha çok kullanılmaktadır. Task nedir sorusunun yanıtı aslında neden kullanılır sorusunun yanıtıdır. Diyelim iki sonsuz döngünüz var kodunuzun içinde ve çalıştırdınız. Programınız birinci döngüye girer ve döngüyü kırmadığınız sürece oradan çıkamaz. Ancak elimizde iki tane sonsuz döngü var ve biz bu iki işlemin de sürekli olarak yapılmasını istiyoruz! İşte burada thread / task kavramı ortaya giriyor. İki task oluşturuyoruz ve işlemcinin bu ikisini de yapabilmesini sağlıyoruz.</p>
<p><strong>FreeRTOS</strong></p>
<p>Kendi seçimim olmayan hazır örneği olduğu için başlangıçta kullanıp real sistemlerini öğrenmeyi hedeflediğim işletim sistemi. Open-Source ve küçük boyutlarda olması en büyük artısı ancak kullanım klavuzu 60 dolar. İnternette bulmama rağmen hiç de hoşnut değilim. 170 sayfalık kitapçığın 60 dolara satılması gereksiz. En azından sitede başlangıç için bir iki makale olmasını isterdim o da yok. En kısa zamanda linux tabanlı veya açık kaynaklı daha düzgün bir RT sistemine geçmeyi planlıyorum.</p>
<p>FreeRTOS&#8217;un en güzel yanı ise elimizde src/ dizininin altında bir main.c dosyası olması ve onunla istediğimiz gibi oynayabilmemiz. Ayrıca ayarlamalar için diğer kütüphane dosyalarında oynamalar yapmamız gerekecektir ileride ancak başlangıç için hiçbir ayar yapmadan kodunuzu yazabiliyorsunuz.</p>
<p><strong>Task / Thread Tanımlama</strong></p>
<p>Açıkçası çok kolay geldi. Generik bir pointerla void olarak fonksiyonumuzu tanımlamamız yeterli. Elbette içinde bir sonsuz döngü olması mantıklı. Yoksa neden task kullanalım <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Aşağıdaki kodda iki task oluşturduk. Bunun gibi bir çok taski kolayca oluşturabiliriz. Aşağıdaki kodda debug_puts fonksiyonu ile LPCXpresso&#8217;nun konsoluna hello world&#8217;umuzu yazdırmış oluyoruz.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> vTaskDebuggerHeartbeat1<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span> <span style="color: #339933;">*</span>pvParameters<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		debug_puts<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Merhaba Dunya! &amp;gt;&amp;gt; Task1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		vTaskDelay<span style="color: #009900;">&#40;</span>configTICK_RATE_HZ<span style="color: #339933;">*</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> vTaskDebuggerHeartbeat2<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span> <span style="color: #339933;">*</span>pvParameters<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		debug_puts<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Merhaba Dunya! &amp;gt;&amp;gt; Task2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		vTaskDelay<span style="color: #009900;">&#40;</span>configTICK_RATE_HZ<span style="color: #339933;">*</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Task / Thread Yaratma</strong></p>
<p>Sıra geldi tanıttığımız taskleri kullanmaya: bunun için C API&#8217;nin xTaskCreate() methodunu kullanıyoruz. Bu fonksiyonları tahmin edilebileceği gibi main methodunun içinde kullanmalıyız.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">xTaskCreate<span style="color: #009900;">&#40;</span> vTaskDebuggerHeartbeat1<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> <span style="color: #993333;">signed</span> portCHAR <span style="color: #339933;">*</span> <span style="color: #993333;">const</span><span style="color: #009900;">&#41;</span><span style="color: #ff0000;">&quot;ping&quot;</span><span style="color: #339933;">,</span> configMINIMAL_STACK_SIZE<span style="color: #339933;">,</span>
			NULL<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
xTaskCreate<span style="color: #009900;">&#40;</span> vTaskDebuggerHeartbeat2<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> <span style="color: #993333;">signed</span> portCHAR <span style="color: #339933;">*</span> <span style="color: #993333;">const</span><span style="color: #009900;">&#41;</span><span style="color: #ff0000;">&quot;ping1&quot;</span><span style="color: #339933;">,</span> configMINIMAL_STACK_SIZE<span style="color: #339933;">,</span>
			NULL<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ardından FreeRTOS Scheduler&#8217;ı başlatılır:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">vTaskStartScheduler<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Eğer tek bir işlemci vsadarsa, işlemci üzerinde anlık olarak sadece bir task çalışabilir. Ardından başka bir taske geçilir. Bu sebeple taskin iki durumundan sözedebiliriz: Running ve not running. Not running&#8217;de başka şeyler de var. Ama kolaylık olsun diye şimdilik böyle ayırdık. Not running kısmında taskin durumu kaydedilir ve resume olması beklenir. Aşağıdaki şekil daha açıklayıcı olabilir:</p>
<p>&nbsp;</p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_475" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/10/cagdas_task_life_cycle_embedded_free_rtos.png"><img class="size-medium wp-image-475" title="cagdas_task_life_cycle_embedded_free_rtos" src="http://www.cagdastopcu.com/wp-content/uploads/2011/10/cagdas_task_life_cycle_embedded_free_rtos-300x189.png" alt="" width="300" height="189" /></a></dt>
</dl>
</div>
<p>&nbsp;</p>
<p>Task geçişi not running kısmından running kısmına geçince “switching in” veya “swapped in” denilir. Tam tersi için ise “switched out” veya “swapped out” denilir. FreeRTOS Schedulerı bu switch in ve out işini yapan tek birimdir.</p>
<p><strong>Pragramın Çalıştırılması</strong></p>
<p>Eklediğimiz kısımlarla kodumuzu kaydediyoruz ve freertos projesine sağ tıklayıp run diyerek kodumuzu atıyoruz. Sonuç olarak LPCXpresso konsolunda aşağıdakine benzer bir çıktı aldım.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span> Task1
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task2
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task1
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task2
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task1
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task2</pre></div></div>

<p><strong> Sonuç</strong></p>
<p>Başka bir programlama dilinde thread kavramına hakimseniz çok da zorlanıcağınızı düşünmüyorum. Çalışmalarıma devam edip yeni şeyler öğrendikçe buradan yazmaya devam edeceğim. Ayrıca RTOS için önerilere açığım. Kendi sistemim için herhangi bir RTOS&#8217;u nasıl uygun hale getireceğim konusunda bilgi ve tecrübe eksikliğim var. Yardımcı olabilicekler varsa buradan yazabilirlerse sevinirim.</p>
<div class="shr-publisher-474"></div><!-- Start Shareaholic LikeButtonSetBottom --><!-- End Shareaholic LikeButtonSetBottom --><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.cagdastopcu.com/arm-cortex-programlama-1.html&via=cagdastopcucom&text=Arm Cortex Programlama - 1&related=cagdastopcu.com:official twitter of cagdastopcu.com&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/arm-cortex-programlama-1.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ücretsiz Arm Cortex Geliştirme Kiti</title>
		<link>http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html</link>
		<comments>http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html#comments</comments>
		<pubDate>Tue, 15 Mar 2011 10:30:38 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[elektronik]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Güç Elektroniği]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[Robotik]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=340</guid>
		<description><![CDATA[Geçenlerde ücretsiz arm boardları var mı diye araştırırken hackaday&#8217;de karşıma ilginç bir ilan çıktı. İlana göre kendi 8-16 bitlik mikrodenetleyicimizi parçalayıp video veya fotoğrafını yollarsak Arm Cortex M0 işlemcili NXP firmasının ürettiği LPCXpresso kitlerinden yollayacaklardı. NXP philips firmasının elektronik eleman üreten firması bu arada. Türkiye&#8217;ye yollamazlar ama şansımı deneyeyim diye yolladım ben de kendi 16f628a &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/03/board.jpg"><img class="aligncenter size-full wp-image-341" title="LPCXpresso board" src="http://www.cagdastopcu.com/wp-content/uploads/2011/03/board.jpg" alt="" width="480" height="436" /></a></p>
<p>Geçenlerde ücretsiz arm boardları var mı diye araştırırken <a href="http://hackaday.com/2011/02/19/free-as-in-free-beer-arm-kit/">hackaday&#8217;de</a> karşıma ilginç bir ilan çıktı. İlana göre kendi 8-16 bitlik mikrodenetleyicimizi parçalayıp video veya fotoğrafını yollarsak Arm Cortex M0 işlemcili NXP firmasının ürettiği <a href="http://ics.nxp.com/lpcxpresso/">LPCXpresso</a> kitlerinden yollayacaklardı. NXP philips firmasının elektronik eleman üreten firması bu arada.</p>
<p>Türkiye&#8217;ye yollamazlar ama şansımı deneyeyim diye yolladım ben de kendi 16f628a içeren fotoğrafımı ve vola şöyle bir mail döndüler dün gece:</p>
<p>Dear contributor,</p>
<p>Your video has been approved! We will send you a free LPCXpresso as soon as possible.</p>
<p>Kind regards,<br />
NXP Semiconductors</p>
<p>Forumlardan araştırdığım kadarıyla 20 gün içerisinde yollayacaklar kitimi. Hackaday.com sitesinde yüzlerce yorum yapılmış bu yarışmaya. Vandallıkla suçlayanlar bile olmuş ancak 2011 yılında hala 8-bitlik işlemcileri bize reva gören karaköy esnafının bu çılgınlıkta hiç mi suçu yok ha?  Karaköy pasajında her gidişimizde 50 liralık alışveriş yaptığımız bahadır abinin, bahadır abinin toptancısının hiç mi suçu yok sorarım sizlere <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  8 bitlik kullandığım en son alet tetrisimdi. Neden hala 8 bit diye kasıyorlar anlamıyorum. Daha pahalı da değil aslında 8 bitlik PIC&#8217;lere göre.. Arm Cortex&#8217;lerle, Armın geliştiricileri dünya 32-bit olsun bitsin artık bu çile dedi sanıyorum.</p>
<p>Yapacaklarımız çok kolay:</p>
<p><a href="http://www.nxp.com/campaigns/cortex-m0/index.php?sub=gallery">Ücretsiz LPCXpresso</a> sitesine girin, sağ tarafta get it for free butonu var ona tıklayın. Karşınıza gelen formu gerçek bilgilerinizle doldurun. Çünkü evinize buranın aracılığıyla yollayacaklar. İş mailinizi istese de ben kişisel gmailimi kullandım. Malum kişisel tarihim pek da iyiye gitmiyor, işsizlik açlık sefalet durumları. Ardından video veya fotoğraf gönderebileceğiniz bir bölüme geçeceksiniz. Burada upload ederken parçalama işlemini nasıl yaptığınızı da anlatmanız gerekiyor.</p>
<p>Eğer elime ulaşırsa LPCXpresso LPC1114 boardı yollayacaklar. Umut, heyecan, gözyaşı her şey var elbette ptt ile gelen ürünlerde.</p>
<p>Sabırsızlanıyorum <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p><strong>Edit: Sonunda geldi beleş boardım. Bu yazıyı 15 martta yazmıştım ve 6 mayısta elime geçti. Eve bir süredir uğramadığımdan hadi 3 mayısta gelmiş olsun. 50 gün sonra ulaştı elime arm cortex kiti. Dökümanlarını okuyup geliştirmeye başlayacağım. Mutlu son ancak insanın hevesi kırılıyor o kadar bekleyince <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p></blockquote>
<p>&nbsp;</p>
<div class="shr-publisher-340"></div><!-- Start Shareaholic LikeButtonSetBottom --><!-- End Shareaholic LikeButtonSetBottom --><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html&via=cagdastopcucom&text=Ücretsiz Arm Cortex Geliştirme Kiti&related=cagdastopcu.com:official twitter of cagdastopcu.com&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PIC 16f628A ve HI-TECH C ile Servo Motor Kontrolü</title>
		<link>http://www.cagdastopcu.com/pic-16f628a-ve-hi-tech-c-ile-servo-motor-kontrolu.html</link>
		<comments>http://www.cagdastopcu.com/pic-16f628a-ve-hi-tech-c-ile-servo-motor-kontrolu.html#comments</comments>
		<pubDate>Mon, 22 Feb 2010 16:33:04 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[Elektrik]]></category>
		<category><![CDATA[elektronik]]></category>
		<category><![CDATA[pragramlama]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[16f628a]]></category>
		<category><![CDATA[hitech]]></category>
		<category><![CDATA[kontrol]]></category>
		<category><![CDATA[motor]]></category>
		<category><![CDATA[mplab]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[servo]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=262</guid>
		<description><![CDATA[Ara tatilinde yaptığım ve Proteus ISIS ile simule ettiğim kodum. Butonlara basarak R/C servo motoru 60 derecelik sağa ve sola döndürüyor. R/C servo motorlar amatör Radio Controlled sistemlerde kullanıldığı için R/C adını almışlardır. Radyo kontrollü hobi uçağı yapabilirsiniz bununla Asıl motor olmayacaktır elbette kanatların altındaki kanatçıkları oynatarak uçağın yönünü değiştirebilirsiniz. Bu motorlar genellikle belirli bir &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/pic-16f628a-ve-hi-tech-c-ile-servo-motor-kontrolu.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><p>Ara tatilinde yaptığım ve Proteus ISIS ile simule ettiğim kodum. Butonlara basarak R/C servo motoru 60 derecelik sağa ve sola döndürüyor. R/C servo motorlar amatör Radio Controlled sistemlerde kullanıldığı için R/C adını almışlardır. Radyo kontrollü hobi uçağı yapabilirsiniz bununla <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Asıl motor olmayacaktır elbette kanatların altındaki kanatçıkları oynatarak uçağın yönünü değiştirebilirsiniz. Bu motorlar genellikle belirli bir periyotta (10 ile 20 milisaniye) bir dikdörtgen (pwm asıl adı) sinyalle kontrol edilirler. Bu periyotluk dilimde eğer 1 ms&#8217;lik 1 verir ve gerisini sıfır yaparsanız motor eksi yöne 60 dereceye, 1.5 ms 1 ve gerisi sıfır olursa sıfır dereceye ve 2 ms&#8217;lik bir sinyal yollarsanız da +60 dereceye oturur. Aslında normal dc motorun biraz kontrol devreli ve dişlili halidir (redüktör). Aşağıda Proteus ISIS simulasyonunun görünüşünü koydum. Analog analiz kısmının çalışması için servo motoru devreden ayırmamız gerekmektedir. Sanırım Proteus&#8217;un bir bug&#8217;ı.</p>
<p style="text-align: center;"><a href="http://www.cagdastopcu.com/wp-content/uploads/2010/02/servokontrol.bmp"><img class="aligncenter size-full wp-image-263" title="servokontrol" src="http://www.cagdastopcu.com/wp-content/uploads/2010/02/servokontrol.bmp" alt="" width="506" height="311" /></a></p>
<p>Hi-Tech C kodları ise aşağıdaki gibidir:</p>
<pre class="brush:c">#include

#include
#include 

__CONFIG(WDTDIS&amp;PWRTEN&amp;LVPDIS&amp;INTIO);

void main(void){
    int hiz=0;
    char i = 100;
    PR2 = 255;
    //char k = 0x3D;
    //CMCON = 0x07;
    TRISA = 0x03;
    TRISB = 0x00;
    CCPR1L = 0x3F;
    PORTA = 0x00;
    PORTB = 0x00;
    CCP1X = 1;
    CCP1Y = 0;

    T2CKPS1 = 1; //Prescale özelligi
    T2CKPS0 = 1;
    TOUTPS3 = 0;
    TOUTPS2 = 0;
    TOUTPS1 = 0;
    TOUTPS0 = 0;

    CCP1M0 = 1; //CCP1 PWM MODUNDA
    CCP1M1 = 1;
    CCP1M2 = 1;
    CCP1M3 = 1;

    TMR2ON = 1; //TMR2 ENABLE
    for(;;){
        if(RA0){
            while(RA0);
            RB0 = 1;
            CCPR1L = 0x0E;
             CCP1X = 1;
             CCP1Y = 0;

             T2CKPS1 = 1; //Prescale özelligi
             T2CKPS0 = 1;
             TOUTPS3 = 0;
             TOUTPS2 = 0;
             TOUTPS1 = 0;
             TOUTPS0 = 0;

             CCP1M0 = 1; //CCP1 PWM MODUNDA
             CCP1M1 = 1;
             CCP1M2 = 1;
             CCP1M3 = 1;
             TMR2ON = 1; //TMR2 ENABLE
             __delay_ms(100);
             RB0=0;

    TMR2ON = 1; //TMR2 ENABLE

        }
        if(RA1){
            while(RA1);
            RB1 = 1;
            CCPR1L = 0x9E;
             CCP1X = 1;
             CCP1Y = 0;

             T2CKPS1 = 1; //Prescale
             T2CKPS0 = 1;
             TOUTPS3 = 0;
             TOUTPS2 = 0;
             TOUTPS1 = 0;
             TOUTPS0 = 0;

             CCP1M0 = 1; //CCP1 PWM
             CCP1M1 = 1;
             CCP1M2 = 1;
             CCP1M3 = 1;
             TMR2ON = 1; //TMR2 ENABLE
             __delay_ms(100);
             RB1=0;
        }

    }
}</pre>
<p>Burada timer2 nin pwm modülünü kullanarak periyotu ve bu peryodun ne kadarının 1 olması gerektiğini belirledik.<br />
CCPR1L her değer değişimde timer2&#8242;nin ve pwm modülünün ayarlarını tekrardan girmemiz gerektiğini 16F628A&#8217;nın<br />
datasheetinden bulmak zorunda kalmıştım. 16F877&#8242;ler için böyle bir sıkıntı yaşanmamaktadır.</p>
<p>MPLAB proje dosyasını, kaynak kodlarını ve Proteus ISIS simulasyonunu wp&#8217;deki bir sorundan dolayı koyamadım. En kısa zamanda ekleyeceğim.</p>
<div class="shr-publisher-262"></div><!-- Start Shareaholic LikeButtonSetBottom --><!-- End Shareaholic LikeButtonSetBottom --><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.cagdastopcu.com/pic-16f628a-ve-hi-tech-c-ile-servo-motor-kontrolu.html&via=cagdastopcucom&text=PIC 16f628A ve HI-TECH C ile Servo Motor Kontrolü&related=cagdastopcu.com:official twitter of cagdastopcu.com&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/pic-16f628a-ve-hi-tech-c-ile-servo-motor-kontrolu.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Güç Elektroniği Elemanları: Tristör (thyristor)</title>
		<link>http://www.cagdastopcu.com/guc-elektronigi-elemanlari-tristor-thyristor.html</link>
		<comments>http://www.cagdastopcu.com/guc-elektronigi-elemanlari-tristor-thyristor.html#comments</comments>
		<pubDate>Sun, 20 Jan 2008 22:08:28 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[Elektrik]]></category>
		<category><![CDATA[Güç Elektroniği]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[elektronik]]></category>
		<category><![CDATA[güç elektroniği]]></category>
		<category><![CDATA[iletim]]></category>
		<category><![CDATA[SCR]]></category>
		<category><![CDATA[Tristör]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/guc-elektronigi-elemanlari-tristor-thyristor.html</guid>
		<description><![CDATA[Merhaba, evet tatil yeni başladı ve daha şimdiden sıkılmaya başladım. Sabah 9 dan akşam 10 a kadar ders gören biri olarak sıkılmam çok normal aslında. Derslerin dışında sosyal bünyeme zarar öle evde saksı gibi oturmam. Neyse beni boşverin şimdi güzide güç elemanlarımızdan tristörü incelemeye başlıyalım. Tristörler yarıiletken malzemenin p-n-p-n şeklinde sıralanması ile üretilir. Diğer adı &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/guc-elektronigi-elemanlari-tristor-thyristor.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><p style="text-align: center;"><a href="http://www.cagdastopcu.com/wp-content/uploads/2008/01/thyristor.jpg"><img class="aligncenter size-full wp-image-311" title="thyristor" src="http://www.cagdastopcu.com/wp-content/uploads/2008/01/thyristor.jpg" alt="" width="302" height="360" /></a></p>
<p>Merhaba, evet tatil yeni başladı ve daha şimdiden sıkılmaya başladım. <span style="background-color: yellow;">Sabah 9 dan akşam 10</span> a kadar ders gören biri olarak sıkılmam çok normal aslında. Derslerin dışında sosyal bünyeme zarar öle evde saksı gibi oturmam. Neyse beni boşverin şimdi güzide güç elemanlarımızdan tristörü incelemeye başlıyalım.  Tristörler yarıiletken malzemenin p-n-p-n şeklinde sıralanması ile üretilir. Diğer adı <span style="background-color: yellow;">SCR</span>&#8216; dir. SCR&#8217;nin açılımı <span style="background-color: yellow;">Silicon-Controlled Rectifier</span> yani silikon kontrollü doğrultucudur. Aslında adı ne yaptığını anlatmaktadır: faz kontrollü doğrultma devrelerinin vazgeçilmez elemanıdır. Vazgeçilmez olmasının sebepleri özelliklerinde yatmaktadır:  Güzide elemanımız iletimdeyken üzerindeki gerilim kaybı bir iki volt kadar azdır. Bildiğimiz gibi elemanın enerji kaybı üzerinden geçen akım çarpı gerilim düşümüdür. Gerilim düşümü dediğimiz aslında iki ucu arasındaki gerilim farkıdır. Formülümüzü verelim hemen <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong><em>Ρ = υ • Ι</em></strong></p>
<p>İletim güç kaybının <span style="background-color: yellow;">az </span>olması yüksek akım ve güçlü devrelerde kullanılabilmesini sağlar. Tristörler çok hızlı elemanlar değillerdir. 50  Hertzlik şebeke akımında rahatlıkla çalışabilirler, orta hızlarda kullanılırlar.  Kontrolünü gate (kapı) ucuna verilen akımla yaparız. Önce kısa bir süre kapıya akım verir ve iletime sokarız daha sonra akım vermemize gerek yok tristörümüz iletime girmiştir. <a title="ekşisözlük tristör anlatımı" href="http://sozluk.sourtimes.org/show.asp?id=10139138" target="_blank">Sözlük</a>te çalışmasını antropolog oldukça güzel anlatmış <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Tristörleri iletimden çıkarmak oldukça zordur. İletim yönünün tersinde iletim yönünde geçirdiğimizden daha fazla akım geçirmeliyiz diğer bir değişle ters kutuplamalıyız. Bunun için ayrı devreler kullanılmaktadır. Şekli aşağıda verilmiştir.  <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/SCR_symbol.svg/250px-SCR_symbol.svg.png" alt="tristör simgesi" width="250" height="143" align="left" /></p>
<p>Akımı anadundan katoduna doğru iletir. İletim durumunda kalma süresini değiştirerek devrenin akım ve gerilimini değiştirebiliriz. Bu konuyu daha devam ettireceğim ancak şimdilik yeter sanırım.</p>
<p>Güç Elektroniği Hakkında Yazdığım Diğer Yazıları Okumak İçin Tıklayınız:</p>
<ol>
<li><a href="http://www.cagdastopcu.com/kontrollu-yarim-dalga-dogrultucu-ile-dc-motor-kontrolu.html">Kontrollü Yarım Dalga Doğrultucu ile DC motor Kontrolü</a></li>
<li><a href="http://www.cagdastopcu.com/guc-elektronigi-endustriyel-uygulamalari.html">Güç Elektroniği Endüstriyel Uygulamaları</a></li>
<li><a href="http://www.cagdastopcu.com/guc-elektronigi-elemanlari-tristor-thyristor.html">Güç Elektroniği Elemanları: Tristör (Thyristor)</a></li>
<li>Güç Elektroniği Elemanları: Diyor (Diode)</li>
<li><a href="http://www.cagdastopcu.com/guc-elektronigine-giris.html">Güç Elektroniğine Giriş</a></li>
<li><a href="http://www.cagdastopcu.com/temel-tristor-scr-tetikleme-devresi.html">Temel Tristör (SCR) Tetikleme Devresi</a></li>
</ol>
<div class="shr-publisher-49"></div><!-- Start Shareaholic LikeButtonSetBottom --><!-- End Shareaholic LikeButtonSetBottom --><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.cagdastopcu.com/guc-elektronigi-elemanlari-tristor-thyristor.html&via=cagdastopcucom&text=Güç Elektroniği Elemanları: Tristör (thyristor)&related=cagdastopcu.com:official twitter of cagdastopcu.com&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/guc-elektronigi-elemanlari-tristor-thyristor.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>çizgi izleyen robotumuz</title>
		<link>http://www.cagdastopcu.com/cizgi-izleyen-robotumuz.html</link>
		<comments>http://www.cagdastopcu.com/cizgi-izleyen-robotumuz.html#comments</comments>
		<pubDate>Thu, 28 Jun 2007 10:37:00 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[Robotik]]></category>
		<category><![CDATA[robot]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/cizgi-izleyen-robotumuz.html</guid>
		<description><![CDATA[it&#252; ve boğazi&#231;i robot g&#252;nlerine katıldı. it&#252;de finale kaldı. Tweet]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><p>it&uuml; ve boğazi&ccedil;i robot g&uuml;nlerine katıldı. it&uuml;de finale kaldı.</p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/RKGJ0HrIbdc"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/RKGJ0HrIbdc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
<div class="shr-publisher-21"></div><!-- Start Shareaholic LikeButtonSetBottom --><!-- End Shareaholic LikeButtonSetBottom --><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.cagdastopcu.com/cizgi-izleyen-robotumuz.html&via=cagdastopcucom&text=çizgi izleyen robotumuz&related=cagdastopcu.com:official twitter of cagdastopcu.com&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/cizgi-izleyen-robotumuz.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.516 seconds -->

