<?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>WwW.TarikZengin.CoM &#187; Projeler</title>
	<atom:link href="http://tarikzengin.com/category/projeler/feed/" rel="self" type="application/rss+xml" />
	<link>http://tarikzengin.com</link>
	<description>Japonya&#039;dan bildiriyor....</description>
	<lastBuildDate>Sat, 01 Oct 2011 06:25:56 +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>Blender ile Voodoo</title>
		<link>http://tarikzengin.com/blender-ile-voodoo/</link>
		<comments>http://tarikzengin.com/blender-ile-voodoo/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 07:06:23 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Yaşam]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[Camera Tracking]]></category>
		<category><![CDATA[Voodoo]]></category>

		<guid isPermaLink="false">http://www.tarikzengin.com/?p=898</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/blender-ile-voodoo/" title="Blender ile Voodoo"></a>Evimde acayip bir nesne var. 2 oldular]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/blender-ile-voodoo/" title="Blender ile Voodoo"></a><p>Evimde acayip bir nesne var.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/EBdJx2b1wd4&amp;hl=en_US&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube-nocookie.com/v/EBdJx2b1wd4&amp;hl=en_US&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>2 oldular</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/fF_Xhcg0rXE&amp;hl=en_US&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/fF_Xhcg0rXE&amp;hl=en_US&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/blender-ile-voodoo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ICCAS-SICE 2009 Fukuoka</title>
		<link>http://tarikzengin.com/iccas-sice-2009-fukuoka/</link>
		<comments>http://tarikzengin.com/iccas-sice-2009-fukuoka/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 07:14:44 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Seyahat]]></category>
		<category><![CDATA[Fukuoka]]></category>
		<category><![CDATA[ICCAS]]></category>
		<category><![CDATA[IEEE]]></category>
		<category><![CDATA[Konferans]]></category>
		<category><![CDATA[SICE]]></category>

		<guid isPermaLink="false">http://www.tarikzengin.com/?p=775</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/iccas-sice-2009-fukuoka/" title="ICCAS-SICE 2009 Fukuoka"></a>İlk uluslararası konferansıma Fukuoka&#8217;da katıldım. Sunumumu yaptım. Düşündüğüm kadar da heyecan yapmadım Sunum konum &#8220;Evaluation of multi-layered pain sensor model of human skin&#8221;.]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/iccas-sice-2009-fukuoka/" title="ICCAS-SICE 2009 Fukuoka"></a><p>İlk uluslararası konferansıma Fukuoka&#8217;da katıldım. Sunumumu yaptım. Düşündüğüm kadar da heyecan yapmadım <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-775' /> </p>
<p>Sunum konum &#8220;Evaluation of multi-layered pain sensor model of human skin&#8221;.</p>

<a href='http://tarikzengin.com/iccas-sice-2009-fukuoka/img_0748/' title='IMG_0748'><img width="150" height="150" src="http://tarikzengin.com/wp-content/uploads/2009/09/IMG_0748-150x150.jpg" class="attachment-thumbnail colorbox-775" alt="IMG_0748" title="IMG_0748" /></a>
<a href='http://tarikzengin.com/iccas-sice-2009-fukuoka/img_0749/' title='IMG_0749'><img width="150" height="150" src="http://tarikzengin.com/wp-content/uploads/2009/09/IMG_0749-150x150.jpg" class="attachment-thumbnail colorbox-775" alt="IMG_0749" title="IMG_0749" /></a>
<a href='http://tarikzengin.com/iccas-sice-2009-fukuoka/img_0761/' title='IMG_0761'><img width="150" height="150" src="http://tarikzengin.com/wp-content/uploads/2009/09/IMG_0761-150x150.jpg" class="attachment-thumbnail colorbox-775" alt="IMG_0761" title="IMG_0761" /></a>
<a href='http://tarikzengin.com/iccas-sice-2009-fukuoka/img_0762/' title='IMG_0762'><img width="150" height="150" src="http://tarikzengin.com/wp-content/uploads/2009/09/IMG_0762-150x150.jpg" class="attachment-thumbnail colorbox-775" alt="IMG_0762" title="IMG_0762" /></a>
<a href='http://tarikzengin.com/iccas-sice-2009-fukuoka/img_0767/' title='IMG_0767'><img width="150" height="150" src="http://tarikzengin.com/wp-content/uploads/2009/09/IMG_0767-150x150.jpg" class="attachment-thumbnail colorbox-775" alt="IMG_0767" title="IMG_0767" /></a>

]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/iccas-sice-2009-fukuoka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Matlab] Muzik Sentezleme</title>
		<link>http://tarikzengin.com/matlab-muzik-sentezleme/</link>
		<comments>http://tarikzengin.com/matlab-muzik-sentezleme/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 07:19:20 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Dimmu Borgir]]></category>
		<category><![CDATA[lame]]></category>
		<category><![CDATA[Muzik Sentezleme]]></category>
		<category><![CDATA[Nar Sjelen Hentes Til Helvete]]></category>
		<category><![CDATA[Sentezleme]]></category>
		<category><![CDATA[soundsc]]></category>
		<category><![CDATA[spectogram]]></category>
		<category><![CDATA[Stormblast]]></category>

		<guid isPermaLink="false">http://www.tarikzengin.com/blog/?p=405</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/matlab-muzik-sentezleme/" title="[Matlab] Muzik Sentezleme"></a>Aslinda muzik degil de melodi sentezi desek daha dogru olabilirdi. Cep telefonu melodisi yazmak gibi birsey. Sentezlemeye calisacagimiz melodi pek bir sevdigim Norvec&#8217;li grup Dimmu Borgir&#8217;in 1996 Stormblåst albumundeki Når Sjelen Hentes Til Helvete isimli parcadan. 2005 yilinda Stormblåst albumunu &#8230;<p class="read-more"><a href="http://tarikzengin.com/matlab-muzik-sentezleme/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/matlab-muzik-sentezleme/" title="[Matlab] Muzik Sentezleme"></a><p>Aslinda muzik degil de melodi sentezi desek daha dogru olabilirdi. Cep telefonu melodisi yazmak gibi birsey.</p>
<p>Sentezlemeye calisacagimiz melodi pek bir sevdigim Norvec&#8217;li grup Dimmu Borgir&#8217;in 1996 Stormblåst albumundeki Når Sjelen Hentes Til Helvete isimli parcadan. 2005 yilinda Stormblåst albumunu yeni kayitlarla tekrar cikardilar. Fakat klasiklerin yeri ayri <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-405' /> </p>
<p>Youtube&#8217;da buldugum asagidaki video da tam olarak sentezleyecegimiz melodinin piyano ile icra edilmis versiyonu. Hatta daha fazlasi. Yalnizca ilk kismi sentezlemeye calisacagim.<span id="more-405"></span></p>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/sRU0G72FVEs" frameborder="0" allowFullScreen="true"> </iframe></p>
<p>Oncelikle notalari gozden gecirelim.</p>
<div id="attachment_407" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-407 colorbox-405" title="notalar" src="http://www.tarikzengin.com/blog/wp-content/uploads/2009/01/notalar-300x283.png" alt="Når Sjelen Hentes Til Helvete" width="300" height="283" /><p class="wp-caption-text">Når Sjelen Hentes Til Helvete</p></div>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">clear</span>
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>
<span style="color: #228B22;">% 1-2 olculerin notalari</span>
olcu12=<span style="color: #080;">&#91;</span><span style="color:#A020F0;">'E'</span>,<span style="color:#A020F0;">'f'</span>,<span style="color:#A020F0;">'G'</span>,<span style="color:#A020F0;">'f'</span>, <span style="color:#A020F0;">'E'</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% mi fa# sol fa# mi</span>
zaman12=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">4</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
<span style="color: #228B22;">% 3-4 olculerin notalari</span>
olcu34=<span style="color: #080;">&#91;</span><span style="color:#A020F0;">'C'</span>,<span style="color:#A020F0;">'E'</span>,<span style="color:#A020F0;">'F'</span>,<span style="color:#A020F0;">'H'</span>,<span style="color:#A020F0;">'F'</span>,<span style="color:#A020F0;">'E'</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% do mi fa la fa mi</span>
zaman34=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
<span style="color: #228B22;">% 5-6 olculerin notalari</span>
olcu56=<span style="color: #080;">&#91;</span><span style="color:#A020F0;">'A'</span>,<span style="color:#A020F0;">'A'</span>,<span style="color:#A020F0;">'J'</span>,<span style="color:#A020F0;">'H'</span>,<span style="color:#A020F0;">'J'</span>,<span style="color:#A020F0;">'H'</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% la la do la do la</span>
zaman56=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
<span style="color: #228B22;">% 7-8 olculerin notalari</span>
olcu78=<span style="color: #080;">&#91;</span><span style="color:#A020F0;">'D'</span>,<span style="color:#A020F0;">'f'</span>,<span style="color:#A020F0;">'G'</span>,<span style="color:#A020F0;">'I'</span>,<span style="color:#A020F0;">'G'</span>,<span style="color:#A020F0;">'f'</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% re fa# sol si sol fa#</span>
zaman78=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
zaman90=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">4</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">4</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">4</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">2</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">2</span> <span style="color: #33f;">1</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
<span style="color: #228B22;">% zaman90 parca biterken yavaslayan kisim icin gecerli.</span>
<span style="color: #228B22;">%vurus degerleri artarak bitiyor.</span>
&nbsp;
<span style="color: #228B22;">%% matris boyutlari</span>
boyut=<span style="color: #33f;">16384</span>;
aaa=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">4</span>; <span style="color: #228B22;">% 1/4 vuruslu notalar icin geri donen</span>
<span style="color: #228B22;">% fonksiyon degerinin saklanacagi matris boyutu</span>
aa=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">8</span>;  <span style="color: #228B22;">% 1/8 vuruslu notalar icin matris (ilk olcu)</span>
bb=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">8</span>;  <span style="color: #228B22;">% 1/8 vuruslu notalar icin matris (ikinci olcu)</span>
cc=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">8</span>;  <span style="color: #228B22;">% 1/8 vuruslu notalar icin matris (ucuncu olcu)</span>
dd=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">8</span>;  <span style="color: #228B22;">% 1/8 vuruslu notalar icin matris (dorduncu olcu)</span>
<span style="color: #228B22;">%</span>
sona=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">4</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/4)</span>
sonb=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">4</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/4)</span>
sonc=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">4</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/4)</span>
sond=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">2</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/2)</span>
sone=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">2</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/2)</span>
sonf=<span style="color: #33f;">1</span>:boyut; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1)</span>
&nbsp;
<span style="color: #228B22;">%% olcu 1-2</span>
aaa<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu12<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>,zaman12<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">for</span> z=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman12<span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span>
aa<span style="color: #080;">&#40;</span>z,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu12<span style="color: #080;">&#40;</span>z+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>,zaman12<span style="color: #080;">&#40;</span>z+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% olcu 3-4</span>
<span style="color: #0000FF;">for</span> z=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman34<span style="color: #080;">&#41;</span>
bb<span style="color: #080;">&#40;</span>z,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu34<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span>,zaman34<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% olcu 5-6</span>
<span style="color: #0000FF;">for</span> z=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman56<span style="color: #080;">&#41;</span>
cc<span style="color: #080;">&#40;</span>z,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu56<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span>,zaman56<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% olcu 7-8</span>
<span style="color: #0000FF;">for</span> z=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman78<span style="color: #080;">&#41;</span>
dd<span style="color: #080;">&#40;</span>z,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span>,zaman78<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% olcu 9-0</span>
sona<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sonb<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sonc<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sond<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">4</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">4</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sone<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">5</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">5</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sonf<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">6</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">6</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">%% tum dizileri arka arkaya diz</span>
xx=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
yy=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
zz=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
ww=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">for</span> say=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman12<span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span>
xx=<span style="color: #080;">&#91;</span>xx aa<span style="color: #080;">&#40;</span>say,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #0000FF;">for</span> say=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman34<span style="color: #080;">&#41;</span>
yy=<span style="color: #080;">&#91;</span>yy bb<span style="color: #080;">&#40;</span>say,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #0000FF;">for</span> say=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman56<span style="color: #080;">&#41;</span>
zz=<span style="color: #080;">&#91;</span>zz cc<span style="color: #080;">&#40;</span>say,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #0000FF;">for</span> say=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman78<span style="color: #080;">&#41;</span>
ww=<span style="color: #080;">&#91;</span>ww dd<span style="color: #080;">&#40;</span>say,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% dizilerin hepsini cal.</span>
tumdizi=<span style="color: #080;">&#91;</span>aaa xx aaa xx yy yy zz zz ww ww aaa xx aaa xx yy yy zz zz ww sona sonb sonc sond sone sonf<span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">soundsc</span><span style="color: #080;">&#40;</span>tumdizi,<span style="color: #33f;">11025</span><span style="color: #080;">&#41;</span>;
<span style="color: #228B22;">%bitti :)</span></pre></div></div>

<p>En son kisimda, parcada olmayan bir sekilde yavaslatarak bitirdim <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-405' />  O da benim yorumum olsun.</p>
<p>Burada kullandigim nota fonksiyonunu da ayri bir dosyada yazdim. O da su sekilde,</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span>  <span style="color: #080;">&#91;</span>a<span style="color: #080;">&#93;</span>=nota<span style="color: #080;">&#40;</span>note,vurus<span style="color: #080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">switch</span> note
<span style="color: #228B22;">%% native notalar</span>
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'A'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la</span>
frekans=<span style="color: #33f;">440</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'a'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la#</span>
frekans=<span style="color: #33f;">466.16</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'B'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%si</span>
frekans=<span style="color: #33f;">493.92</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'C'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do</span>
frekans=<span style="color: #33f;">523.28</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'c'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do#</span>
frekans=<span style="color: #33f;">554.40</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'D'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re</span>
frekans=<span style="color: #33f;">587.36</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'d'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re#</span>
frekans=<span style="color: #33f;">622.24</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'E'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%mi</span>
frekans=<span style="color: #33f;">659.28</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'F'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa</span>
frekans=<span style="color: #33f;">698.48</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'f'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa#</span>
frekans=<span style="color: #33f;">740</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'G'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%sol</span>
frekans =<span style="color: #33f;">784</span>;
<span style="color: #228B22;">%% oktav yukari</span>
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'H'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">440</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'h'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la#</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">466.16</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'I'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%si</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">493.92</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'J'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">523.28</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'j'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do#</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">554.40</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'K'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">587.36</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'k'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re#</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">622.24</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'L'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%mi</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">659.28</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'M'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">698.48</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'m'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa#</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">740</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'N'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%sol</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">784</span>;
<span style="color: #228B22;">%% oktav asagi</span>
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'O'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la</span>
frekans=<span style="color: #33f;">440</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'o'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la#</span>
frekans=<span style="color: #33f;">466.16</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'P'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%si</span>
frekans=<span style="color: #33f;">493.92</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'Q'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do</span>
frekans=<span style="color: #33f;">523.28</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'q'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do#</span>
frekans=<span style="color: #33f;">554.40</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'R'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re</span>
frekans=<span style="color: #33f;">587.36</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'r'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re#</span>
frekans=<span style="color: #33f;">622.24</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'S'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%mi</span>
frekans=<span style="color: #33f;">659.28</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'T'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa</span>
frekans=<span style="color: #33f;">698.48</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'t'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa#</span>
frekans=<span style="color: #33f;">740</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'U'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%sol</span>
frekans =<span style="color: #33f;">784</span>/<span style="color: #33f;">2</span>;
<span style="color: #228B22;">%% diger durumlar</span>
<span style="color: #0000FF;">otherwise</span>
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Yok boyle bisey'</span><span style="color: #080;">&#41;</span>
frekans=<span style="color: #33f;">0</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% Belirlenen frekansda ve vurus suresinde sinus</span>
<span style="color: #228B22;">%  sinyali fonksiyonun cikisina veriliyor.</span>
a=<span style="color: #0000FF;">sin</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>*<span style="color: #0000FF;">pi</span>*frekans*<span style="color: #080;">&#40;</span><span style="color: #33f;">0</span>:<span style="color: #33f;">1</span>/<span style="color: #33f;">16383</span>:vurus<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<p>Burada cozemedigim ve aklimi kurcalayan bir soru var. <strong>soundsc</strong> komutu ile tumdizi matrisini sese donustururken kullandigim ornekleme frekansi denedigim farkli bilgisayarlarda farkli sonuclar verdi. Bazisinda 44100 kullandigimda, bazisinda ise buradaki gibi 11025 kullandigimda dogru sonucu verdi. Nedenini cozemedim.</p>
<p>Ayrica kodun yukaridaki kismina ek olarak, olusan matrisin spektogramini da cizdiriyordum. Fakat su anda kullandigim Matlab&#8217;in surumu ile daha once kullandigim arasinda bir uyumsuzluk var. O yuzden bir sorun cikti. O kismi da su sekilde idi,</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% spektrumlari cizdir</span>
<span style="color: #0000FF;">subplot</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">1</span>,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
spectogram<span style="color: #080;">&#40;</span>tumdizi,<span style="color: #33f;">1024</span>,<span style="color: #33f;">6950</span>,<span style="color: #33f;">256</span>,<span style="color: #33f;">192</span><span style="color: #080;">&#41;</span>;    <span style="color: #228B22;">% tumdizinin spektrumunu cizdir.</span>
<span style="color: #0000FF;">grid</span> on;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Yapay Sinyalin Spektrumu'</span><span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">subplot</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">1</span>,<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
wav=<span style="color: #0000FF;">wavread</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'sinyal1.wav'</span>,<span style="color: #080;">&#91;</span><span style="color: #33f;">2000</span> <span style="color: #33f;">12000</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;     <span style="color: #228B22;">% gercek sesi import et</span>
spectogram<span style="color: #080;">&#40;</span>wav,<span style="color: #33f;">2048</span>,<span style="color: #33f;">44100</span>,<span style="color: #33f;">1024</span>,<span style="color: #33f;">256</span><span style="color: #080;">&#41;</span>;        <span style="color: #228B22;">% sesin spektrumunu cizdir.</span>
<span style="color: #0000FF;">grid</span> on;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Gercek Sesin Spektrumu'</span><span style="color: #080;">&#41;</span></pre></div></div>

<p>Sonucta ortaya cikan matrisi de bir wav dosyasina yazdirip</p>
<p><strong>lame girdi.wav cikti.mp3</strong></p>
<p>seklinde basitce mp3&#8242;e donusturdukten sonra burada dinlenebilir hale geldi.</p>
<p><a href="http://www.tarikzengin.com/audio/dimmu.mp3">http://www.tarikzengin.com/audio/dimmu.mp3</a></p>
<p>Sarkinin orijinal hali de burada. Bir ihtimal oldschool black metal sevenler cikabilir <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-405' />  Once 1996, ardindan da 2005 versiyonu geliyor, tum sevenler icin.</p>
<ul>
<li>00:00 &#8211; 04:30 1996 versiyonu</li>
<li>04:30 &#8211; 09:12 2005 versiyonu</li>
</ul>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/legSvvYphaY" frameborder="0" allowFullScreen="true"> </iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/matlab-muzik-sentezleme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.tarikzengin.com/blog/audio/dimmu.mp3" length="351920" type="audio/mpeg" />
<enclosure url="http://www.tarikzengin.com/audio/dimmu.mp3" length="351920" type="audio/mpeg" />
		</item>
		<item>
		<title>Computer &amp; Microcontroller Based Closed Loop Robot Position Control System</title>
		<link>http://tarikzengin.com/computer-microcontroller-based-closed-loop-robot-position-control-system/</link>
		<comments>http://tarikzengin.com/computer-microcontroller-based-closed-loop-robot-position-control-system/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 08:17:27 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Close Loop]]></category>
		<category><![CDATA[Control System]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Proje]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Ziegler Nichols]]></category>

		<guid isPermaLink="false">http://tarikzengin.wordpress.com/?p=203</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/computer-microcontroller-based-closed-loop-robot-position-control-system/" title="Computer &amp; Microcontroller Based Closed Loop Robot Position Control System"></a>Not : Daha önce yazdığım proje yazısının birebir olmasa da çevirisi sayılabilecek bir yazı hazırladım. This is a short summary of our (me and my friend Umut Yuksekbas) graduation project. Sorry for the grammatical mistakes. Computer &#38; Microcontroller Based Closed &#8230;<p class="read-more"><a href="http://tarikzengin.com/computer-microcontroller-based-closed-loop-robot-position-control-system/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/computer-microcontroller-based-closed-loop-robot-position-control-system/" title="Computer &amp; Microcontroller Based Closed Loop Robot Position Control System"></a><p>Not : Daha önce yazdığım proje yazısının birebir olmasa da çevirisi sayılabilecek bir yazı hazırladım.  This is a short summary of our (me and my friend Umut Yuksekbas) graduation project. Sorry for the grammatical mistakes.</p>
<p style="text-align: center;"><strong>Computer &amp; Microcontroller Based Closed Loop Robot Position Control System</strong> <strong></strong></p>
<p style="text-align: justify;"><strong>Abstract</strong> : Robot systems scope out the problems fast and sensitive, don&#8217;t affected the factors which destructive of health for humans. For this reason they are needed at industrial areas.<span id="more-203"></span> Robots are used for precise applications in a wide area such as automotive industry, medicine, nuclear power stations and biomedical. They can be used in critical applications like sensitive surgical operations. That&#8217;s commonly utilized as a mechanical arm for handicapped ones. Our project&#8217;s subjects are automatic control systems and position control of a robotic arm with the coordinates that send from computer. We intended to design a closed loop control system of a mechatronic system. Manipulator system is a multi-input multi-output (MIMO) system and each joint is fed by different input signals for position check. Dynamic model of the manipulator system is not linear and contains interactive terms between joints. We have designed a 6-degree-of-freedom robot arm and a control system. DC motors on the joints provide the movement of the manipulator. We used L298 IC which contains H-Bridges for driving the DC motors and PIC 16F877 as microcontroller. Max232 serial interface sets up the communication between computer and microcontroller. We developed the position control algorithm in MPLAB IDE by using the Hitech PICC Compiler. Microcontroller takes the analog feedback signals from the potentiometers placed on joints then convert them to digital signals by built-in ADC modules. The PI control system uses the analog signals in order to calculate the optimum PI control parameters then provides the target movement with minimum error.</p>
<p style="text-align: justify;"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/WR5tswIPvck" frameborder="0" allowFullScreen="true"> </iframe>  <strong></strong></p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>SYSTEM COMPONENTS </strong></p>
<p style="text-align: justify;"><strong>Hardware Component</strong></p>
<p style="text-align: justify;">PIC 16F877-20MHz contains 8 ADC channel and 2 PWM module and L298 contains two H-Bridge in it. This driver is very robust and is able to work with 46 V source voltage and 4 A source current. In this project  15 V source voltage and 0.5 A max current are utilized.</p>
<div id="attachment_205" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-205 colorbox-203" title="diagram1" src="http://www.tarikzengin.com/blog/wp-content/uploads/2008/10/diagram1-300x194.png" alt="Block Diagram" width="300" height="194" /><p class="wp-caption-text">Block Diagram</p></div>
<p>Position data which transmitted from computer come to the PIC&#8217;s serial port over the Max232 serial interface. After that, the ADC module reads and converts the analog values and transmits signals to the motor drivers for holding the arm in target position. The algorithm determines the transaction direction for decreasing the error and sends the signals. It breaks the motors when the arm is on the target position. Microcontroller checks all of the joint positions repeatedly and if it senses a deviation on the joint, brings the joint back to the target position. The algorithm changes the motor voltages directly proportional to the error</p>
<div id="attachment_22" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot2.png"><img class="size-medium wp-image-22 colorbox-203" title="robotdevresemasi.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot2-300x271.png" alt="Schematics" width="300" height="271" /></a><p class="wp-caption-text">Schematics</p></div>
<p><strong>PCB Design</strong></p>
<p>A 2-layer circuit board was designed and assembled. L298 ICs can be seen on the right side of the first image. The sockets from top to bottom;</p>
<ul>
<li>Power</li>
<li>Analog Feedbacks (From joint pots)</li>
<li>Motors</li>
</ul>
<p style="text-align: center;">
<div id="attachment_207" class="wp-caption aligncenter" style="width: 471px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2008/10/hpim1850.jpg"><img class="size-large wp-image-207 colorbox-203" title="hpim1850" src="http://www.tarikzengin.com/blog/wp-content/uploads/2008/10/hpim1850-768x1024.jpg" alt="PCB 1" width="461" height="614" /></a><p class="wp-caption-text">PCB 1</p></div>
<div id="attachment_208" class="wp-caption aligncenter" style="width: 624px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2008/10/hpim1851.jpg"><img class="size-large wp-image-208 colorbox-203" title="hpim1851" src="http://www.tarikzengin.com/blog/wp-content/uploads/2008/10/hpim1851-1024x768.jpg" alt="PCB 2" width="614" height="461" /></a><p class="wp-caption-text">PCB 2</p></div>
<p><strong>Software Component</strong></p>
<p>We developed the microcontroller code by using HITECH PICC in MPLAB IDE. The P.I. Control System on the microcontroller side, calculates the error by differentiating the feedback values which read from ADC module and the expected value, continuously for each joint. This error value multiplied by Kp constant. All these error values summed and multiplied by Ki constant. The control signal which derived by summing the proportional and integral control signals, limited in a desirable range.</p>
<div id="attachment_23" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-23 colorbox-203" title="robot3.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot3-300x49.png" alt="Control Signal" width="300" height="49" /><p class="wp-caption-text">Control Signal</p></div>
<p>This calculation repeats for each joint over and over again for providing the position control. Ziegler-Nichols method were used for designing the control system, because it was not possible to get the technical data about mechanical system for deriving the mathematical model.</p>
<div id="attachment_25" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-25 colorbox-203" title="robot5.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot5-300x151.png" alt="Controller Design" width="300" height="151" /><p class="wp-caption-text">Controller Design</p></div>
<p>D and I constants of PID controller let by zero and, the P constant were increased until the system oscillates. The P constant on that oscillation time called Kc and the oscillation frequency called Tc.</p>
<div id="attachment_27" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-27 colorbox-203" title="robot7.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot7-300x166.png" alt="Oscillation" width="300" height="166" /><p class="wp-caption-text">Oscillation</p></div>
<p>The optimum P.I. Control parameters were derived by using the Ziegler-Nichols method. The system response is below mentioned.</p>
<div id="attachment_28" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-28 colorbox-203" title="robot8.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot8-300x196.png" alt="System Response" width="300" height="196" /><p class="wp-caption-text">System Response</p></div>
<p><strong>Graphical User Interface Design</strong></p>
<p>Graphical User Interface (GUI) was developed by using QT Designer and Kdevelop Integrated Development Environment in C++ programming language. The GUI design can be seen below. QT libraries are suitable for creating platform independent code. By this way, the GUI can be compiled and run under various platforms, such as Unix, Linux, FreeBSD, MacOS and Windows.</p>
<div id="attachment_29" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot9.png"><img class="size-medium wp-image-29 colorbox-203" title="robot9.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot9-300x223.png" alt="GUI" width="300" height="223" /></a><p class="wp-caption-text">GUI</p></div>
<p>The coordinate data transmitted over the USB bus by using a USB/Serial converter with a 57600 baud rate.  Control System variables can be changed or modified with the GUI in realtime. Serial port device, baud rate and control system parameters can be selected and changed by using the GUI.</p>
<div id="attachment_31" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot111.png"><img class="size-medium wp-image-31 colorbox-203" title="robot11.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot111-300x232.png" alt="GUI Ayarlari" width="300" height="232" /></a><p class="wp-caption-text">GUI Ayarlari</p></div>
<p><strong>Conclusion</strong></p>
<p>The system that we developed can do a position control in Cartesian Coordinate System. It keeps its position unless the operator will give a new coordinate, and can perform a coordinate change in a desirable time. I believe that this project is providing a useful design for industrial areas such as production and test, biomedical, security, situations that harmful for human, and academic study. The future plan for my study is making two robotic arms work together and in cooperation.</p>
]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/computer-microcontroller-based-closed-loop-robot-position-control-system/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[Matlab] Pan Tompkins Algoritması Kullanılarak EKG&#8217;de QRS Complex Tespiti ve Ritm Analizi</title>
		<link>http://tarikzengin.com/matlab-ekg-analizi/</link>
		<comments>http://tarikzengin.com/matlab-ekg-analizi/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 16:39:13 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Avarage Filter]]></category>
		<category><![CDATA[Comb filter]]></category>
		<category><![CDATA[Derivative Based Filter]]></category>
		<category><![CDATA[ECG]]></category>
		<category><![CDATA[EKG]]></category>
		<category><![CDATA[Heart Beat]]></category>
		<category><![CDATA[Pan Tompkins]]></category>
		<category><![CDATA[QRS Complex]]></category>

		<guid isPermaLink="false">http://tarikzengin.wordpress.com/2007/12/16/matlab-ekg-analizi/</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/matlab-ekg-analizi/" title="[Matlab] Pan Tompkins Algoritması Kullanılarak EKG&#039;de QRS Complex Tespiti ve Ritm Analizi"></a>Biomedical Signal Analysis dersinde Timur Düzenli ve Salih Aslan ile beraber yaptığımız bir proje bu. EKG verileri üzerinden QRS Complex kısımlarının tespitinden bahsedeceğim. Öncelikle nedir ve neden önemlidir buna değinelim. Çoğumuzun bildiği üzere EKG (ECG &#8211; Electrocardiogram) kalp aktivitelerinin elektriksel &#8230;<p class="read-more"><a href="http://tarikzengin.com/matlab-ekg-analizi/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/matlab-ekg-analizi/" title="[Matlab] Pan Tompkins Algoritması Kullanılarak EKG&#039;de QRS Complex Tespiti ve Ritm Analizi"></a><p>Biomedical Signal Analysis dersinde Timur Düzenli ve Salih Aslan ile beraber yaptığımız bir proje bu. EKG verileri üzerinden QRS Complex kısımlarının tespitinden bahsedeceğim. Öncelikle nedir ve neden önemlidir buna değinelim.</p>
<p>Çoğumuzun bildiği üzere EKG (ECG &#8211; Electrocardiogram) kalp aktivitelerinin elektriksel olarak kaydıdır. Electrocardiograph ile ölçülerek kaydedilir.</p>
<p>EKG analiz edilerek kalp hakkında oldukça detaylı bilgiler elde edilebilir. Tıp okumadığım için çok detaylı bilemem tabii ki. Fakat EKG sinyalinin birazdan bahsedeceğim kısımlarının zamanlaması hastalıklar hakkında oldukça yararlı bilgiler sağlamaktadır.<span id="more-161"></span></p>
<p>Tipik bir EKG sinyali aşağıdaki şekilde gösterilebilir.</p>
<p><img class="aligncenter size-full wp-image-162 colorbox-161" title="EKG" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/ekg.png" alt="EKG" width="512" height="504" /></p>
<p>Burada görüleceği gibi EKG sinyali belirli tipik kısımlar içerir. Bunlar P,Q,R,S ve T kısımlarıdır. Hepsi kalp hakkında önemli bilgiler taşır. Bu yazıda, sinyalde QRS Complex&#8217;in yerinin bulunmasından bahsedeceğim. Bu bilgi önemlidir çünkü QRS Complex&#8217;in kaç milisaniye sürdüğü çıplak gözle anlaşılamaz.</p>
<p>Konuya girmeden önce şundan da bahsetmek isterim. Doktorların, ellerine gelen EKG kaydına bakarak karar vermesinde bahsedeceğim konu oldukça önem taşır. EKG sinyalleri elektriksel olarak zayıf sinyaller olduğu için kaydedilmesi ve çevre gürültülerden arındırılması işi oldukça zahmetlidir. Demek istediğim, ham bir EKG kaydından hiç bir doktor hiç bir teşhis koyamaz. O şeritteki net ve anlaşılır EKG&#8217;nin nasıl o hale geldiğini ele alacağız. Fakat tüm aşamaları koca bir kitap yapan bu analizin sadece küçük bir kısmı bu yazıca mevcut.</p>
<p>Analiz için kullanacağım önceden kaydedilmiş EKG verileri elimde mevcut.  4000 örnekten oluşan veriyi <a title="EKG Verisi" href="http://paste.linux-sevenler.org/index.php?id=1376" target="_blank">şuradan</a> alabilirsiniz.</p>
<p>Analize başlayalım,</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>
<span style="color: #0000FF;">clear</span> <span style="color: #0000FF;">all</span>
<span style="color: #0000FF;">clc</span>
&nbsp;
<span style="color: #228B22;">%% Degisken ve Sabitlerin Tanimlanmasi</span>
fs=<span style="color: #33f;">200</span>; <span style="color: #228B22;">% sample rate</span>
&nbsp;
<span style="color: #228B22;">%% Sinyalin Matlab Ortamina Alinmasi</span>
hamsinyal=<span style="color: #0000FF;">load</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'ECG3'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>hamsinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Ham Sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span></pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Hamsinyal" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/1.png" alt="Ham Sinyal" width="560" height="420" /><p class="wp-caption-text">Ham Sinyal</p></div>
<p>Görüldüğü gibi sinyal oldukça fazla gürültü içeriyor. Hem yüksek frekanslı hem de şebekeden kaynaklanan ek bileşenler sinyale karışmış durumda. Öncelikle sinyali DC sıfır seviyesine çekelim</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% DC Bilesenlerin Atilmasi</span>
dcsizsinyal=<span style="color: #080;">&#40;</span>hamsinyal-<span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>hamsinyal<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>dcsizsinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'DC Bilesenleri Atilan Sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span></pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="DCsiz Sinyal" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/2.png" alt="DCsiz Sinyal" width="560" height="420" /><p class="wp-caption-text">DCsiz Sinyal</p></div>
<p>Şimdi de sinyalden yüksek frekanslı gürültüleri temizleyelim. Bunun için bir alçak geçiren (low pass) filtre tasarlayıp sinyali bu filtreden geçirmemiz gerekli. Filtre tipi olarak 10 point avarage filtre kullanalım.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Filtre</span>
<span style="color: #228B22;">% 10 point avarage filter</span>
B=<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">10</span><span style="color: #080;">&#41;</span>*<span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">10</span><span style="color: #080;">&#41;</span>;
A=<span style="color: #33f;">1</span>;
freqz<span style="color: #080;">&#40;</span>B,A<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'10 Point Moving Avarage Filtre'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span>
avaragefiltrelisinyal=<span style="color: #0000FF;">filter</span><span style="color: #080;">&#40;</span>B,A,dcsizsinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>avaragefiltrelisinyal<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Moving Avarage (Low Pass) Filtreden Gecmis Sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span></pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Low Pass Filtre" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/3.png" alt="Low Pass Filtre" width="560" height="420" /><p class="wp-caption-text">Low Pass Filtre</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Low Pass Cikisi" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/4.png" alt="Low Pass Cikisi" width="560" height="420" /><p class="wp-caption-text">Low Pass Cikisi</p></div>
<p>Yüksek frekanslı gürültülerin azaldığını görebiliriz. Fakat hala kusursuz değil. Şimdi de düşük frekanslı gürültüleri yok etmek için bir yüksek geçiren (high pass) filtre tasarlayıp sinyali bu filtreden geçirelim. Bunun için de Derivative Based filtre oluşturacağız.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Derivative Based Filter</span>
B=<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">1.0025</span><span style="color: #080;">&#41;</span>*<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span> -<span style="color: #33f;">1</span><span style="color: #080;">&#93;</span>;<span style="color: #228B22;">% 1.0025 normalizasyon degeri</span>
A=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span> -<span style="color: #33f;">0.995</span><span style="color: #080;">&#93;</span>;
freqz<span style="color: #080;">&#40;</span>B,A<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Derivative Based Filter'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span>
derivativefiltrelisinyal=<span style="color: #0000FF;">filter</span><span style="color: #080;">&#40;</span>B,A,avaragefiltrelisinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>derivativefiltrelisinyal<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Derivative Based (High Pass) Filtreden Gecmis Sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span></pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Derivative Filtre" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/5.png" alt="Derivative Filtre" width="560" height="420" /><p class="wp-caption-text">Derivative Filtre</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Derivative Cikisi" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/6.png" alt="Derivative Cikisi" width="560" height="420" /><p class="wp-caption-text">Derivative Cikisi</p></div>
<p>Sinyalden atmamız gereken bir de 60Hz&#8217;lik şebeke gürültüsü var. Kayıt esnasında cihazın şehir şebekesinden kaptığı gürültü de sinyalle beraber kaydedilmiş durumda. Zaten bakıldığında çıplak gözle de görülebiliyor. Bu arada kullandığımız örnek yabancı bir kaynaktan olduğu için şebeke gürültüsü 60Hz. Bizim şebekemiz 50Hz. Onu da hatırlatayım.</p>
<p>60Hz&#8217;lik gürültüyü atmak için bir filtre tasarlanacak ve önceki filtreden çıkan sinyal bu filtreden geçirilecek. Önemli bir sorun da, şebekeden kapılan gürültünün yalnızca 60Hz değil aynı zamanda bunun harmonikleri olarak ortaya çıkması. Bu yüzden yalnızca 60Hz&#8217;i bastıran bir filtre işimiz görmeyecek. Bunun için 60Hz ve tüm harmoniklerini bastırmamızı sağlayacak bir Comb filtre tasarlamamız gerekir. Aşağıda yazdığım filtre katsayılarının nasıl bulunduğuna değinmeyeceğim, zira çok uzun mesele <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-161' />  Zaten ben de hazır kullandım. Bulmaya çalışmak apayrı bir mesele.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Comb Filter</span>
<span style="color: #228B22;">% 60Hz sebeke gurultusunu ve harmoniklerini bastiran filtre</span>
B=<span style="color: #0000FF;">conv</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span><span style="color: #33f;">1</span> <span style="color: #33f;">1</span><span style="color: #080;">&#93;</span>,<span style="color: #080;">&#91;</span><span style="color: #33f;">0.6310</span> -<span style="color: #33f;">0.2149</span> <span style="color: #33f;">0.1512</span> -<span style="color: #33f;">0.1288</span> <span style="color: #33f;">0.1227</span> -<span style="color: #33f;">0.1288</span> <span style="color: #33f;">0.1512</span> -<span style="color: #33f;">0.2149</span> <span style="color: #33f;">0.6310</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;
A=<span style="color: #33f;">1</span>;
freqz<span style="color: #080;">&#40;</span>B,A<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Comb Filter'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span>
comb=<span style="color: #0000FF;">filter</span><span style="color: #080;">&#40;</span>B,A,derivativefiltrelisinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Comb (60Hz ve Harmoniklerini Bastiran) Filtreden Gecmis Sinyal'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Comb Filtre" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/7.png" alt="Comb Filtre" width="560" height="420" /><p class="wp-caption-text">Comb Filtre</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Comb Cikisi" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/8.png" alt="Comb Cikisi" width="560" height="420" /><p class="wp-caption-text">Comb Cikisi</p></div>
<p>Çok kusursuz olmasa da sinyal işlenebilecek hale geldi. Şimdi ise fark alarak sinyaldeki en keskin tepeleri bulalım. Bunlar bize R noktalarını verecek. Ardından da bu R noktasının sağında ve solunda en düşük seviyedeki noktaları bulalım. Bunlar da Q ve S noktalarını verecek.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Differentiator</span>
differentiatorcikisi=<span style="color: #0000FF;">diff</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">%% Squaring Operation</span>
kare=differentiatorcikisi.*differentiatorcikisi;
&nbsp;
<span style="color: #228B22;">%% Moving Window Integrator</span>
window=<span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">30</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% N=30 moving window</span>
integral= medfilt1<span style="color: #080;">&#40;</span><span style="color: #0000FF;">filter</span><span style="color: #080;">&#40;</span>window,<span style="color: #33f;">1</span>,kare<span style="color: #080;">&#41;</span>,<span style="color: #33f;">10</span><span style="color: #080;">&#41;</span>;
delay = <span style="color: #0000FF;">ceil</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>window<span style="color: #080;">&#41;</span>/<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
integral = integral<span style="color: #080;">&#40;</span>delay:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>integral<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">%% QRS Arama</span>
max_h = <span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>integral<span style="color: #080;">&#41;</span>;
thresh = <span style="color: #33f;">0.2</span>;
poss_reg = integral &gt; <span style="color: #080;">&#40;</span>thresh*max_h<span style="color: #080;">&#41;</span>;
&nbsp;
sol = <span style="color: #0000FF;">find</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">diff</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span><span style="color: #33f;">0</span> poss_reg'<span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>==<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
sag = <span style="color: #0000FF;">find</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">diff</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span>poss_reg' <span style="color: #33f;">0</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>==-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
&nbsp;
 <span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span>=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>sol<span style="color: #080;">&#41;</span>
    <span style="color: #080;">&#91;</span>maxdeger<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span> comb<span style="color: #080;">&#40;</span>sol<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>:sag<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span> <span style="color: #080;">&#41;</span>;
    maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> = maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span>+sol<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% offset ekle</span>
    <span style="color: #080;">&#91;</span>mindeger<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> minloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">min</span><span style="color: #080;">&#40;</span> comb<span style="color: #080;">&#40;</span>sol<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>:sag<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span> <span style="color: #080;">&#41;</span>;
    <span style="color: #228B22;">%mindeger Q noktasini verir</span>
    minloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> = minloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span>+sol<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% offset ekle</span>
    <span style="color: #228B22;">% Q noktasi icin offset</span>
 <span style="color: #0000FF;">end</span>
&nbsp;
<span style="color: #228B22;">% minpozisyon=ones(1,4000)*-max(comb);</span>
<span style="color: #228B22;">% minpozisyon(1,minloc)=max(comb);</span>
maxpozisyon=<span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">4000</span><span style="color: #080;">&#41;</span>*<span style="color: #080;">&#40;</span>-<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
maxpozisyon<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,maxloc<span style="color: #080;">&#41;</span>=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>;
<span style="color: #228B22;">% maxpozisyon(1,sol)=max(comb);</span>
<span style="color: #228B22;">% maxpozisyon(1,sag)=max(comb);</span>
<span style="color: #228B22;">% maxpozisyon(1,minloc)=max(comb);</span>
&nbsp;
<span style="color: #0000FF;">figure</span>
<span style="color: #228B22;">% plot(comb(1:(length(comb)/4)),'b-')</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'R noktalari belirlenmis sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">hold</span> on
<span style="color: #228B22;">% plot(minloc,mindeger,'r--')</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>maxloc,maxdeger,<span style="color:#A020F0;">'g-'</span><span style="color: #080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">figure</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'R noktalari isaretlenmis sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">hold</span> on
<span style="color: #228B22;">%plot(minpozisyon,'r') % Q baslangici</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>maxpozisyon,<span style="color:#A020F0;">'r'</span><span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">legend</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Comb Filtreden Gecen Sinyal'</span>,<span style="color:#A020F0;">'R'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="R leri Birlestir" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/9.png" alt="R leri Birlestir" width="560" height="420" /><p class="wp-caption-text">R leri Birlestir</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="R leri Isaretle" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/10.png" alt="R leri Isaretle" width="560" height="420" /><p class="wp-caption-text">R leri Isaretle</p></div>
<p>Görüldüğü gibi QRS Complex&#8217;in yeri artık tam olarak bilinebiliyor. İstenen ölçümler buradan çıkarılabilir.</p>
<p>Bu arada sondan üçüncü Complex&#8217;de bir hata var. Algoritma burada hatalı sonuç veriyor. Gürültülerin kusursuz bir şekilde atılamamasından kaynaklanan bir hata söz konusu. P noktası olması gerekenden daha büyük olduğu için R olarak algılanmış ve bir hataya sebebiyet vermiş. Fakat sinyalin geri kalanı istediğimiz veriyi elde etmemiz için yeterli veriyi sağlıyor.</p>
<p>Şimdi elde ettiğimiz verilerden bazı sonuçlara ulaşmaya çalışalım. Girilen veride kaç adet beat (vuruş) bulunduğunu tespit edelim. R noktalarını tespit ettiğimize göre ve R noktası kadar vuruş bulunduğunu bildiğime göre kolaylıkla sonuca ulaşabiliriz.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Beat Sayisi</span>
beat=<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>maxloc<span style="color: #080;">&#41;</span>
heartrate=beat/<span style="color: #080;">&#40;</span><span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>hamsinyal<span style="color: #080;">&#41;</span>/fs<span style="color: #080;">&#41;</span></pre></div></div>

<p>Cevap olarak şu sonuçları elde ediyoruz.</p>
<p>beat =</p>
<p>25<br />
heartrate =</p>
<p>1.2500</p>
<p>Analiz sırasında P noktalarından birisi de R olarak algılanmıştı. Aslında beat sayısı 24 olmalıydı.</p>
<p>Şimdi de RR aralığının ortalamasını bulalım.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% RR Araligi Ortalamasi</span>
ortalama=<span style="color: #33f;">0</span>;
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span>=<span style="color: #33f;">1</span>:beat-<span style="color: #33f;">1</span>
    ortalama=ortalama+<span style="color: #080;">&#40;</span>maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>-maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>/fs;
    u<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=<span style="color: #080;">&#40;</span>maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>-maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>/fs;
<span style="color: #0000FF;">end</span>
ortalama=<span style="color: #33f;">1000</span>*ortalama/beat
<span style="color: #228B22;">% ms cinsinden bulmak icin 1000 ile carpildi.</span></pre></div></div>

<p>Sonuç olarak elde edilen çıktı,</p>
<p>ortalama =</p>
<p>745.8000</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Standart Sapma</span>
variance=<span style="color: #0000FF;">var</span><span style="color: #080;">&#40;</span>u<span style="color: #080;">&#41;</span>*<span style="color: #33f;">1000</span> <span style="color: #228B22;">%ms cinsinden</span></pre></div></div>

<p>variance =   22.4692</p>
<p>QRS genişliklerinin tespiti için ise zaten bulmuş olduğumuz noktaların farkları alınabilir.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">% QRS Genisligi</span>
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span>=<span style="color: #33f;">1</span>:beat
    qrs<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=sag<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-minloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">end</span></pre></div></div>

<p>Çıktısında da QRS genişliklerinin birbirine yakın değerde olduğu gözlenebilir.</p>
<p>Görüldüğü gibi hastalık teşhisi için canla başla çalışanlar yalnızca doktorlar değil <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-161' />  Bizleri de unutmayın.</p>
]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/matlab-ekg-analizi/feed/</wfw:commentRss>
		<slash:comments>87</slash:comments>
		</item>
		<item>
		<title>Sesli v2</title>
		<link>http://tarikzengin.com/sesli-v2/</link>
		<comments>http://tarikzengin.com/sesli-v2/#comments</comments>
		<pubDate>Wed, 15 Aug 2007 14:22:25 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Lapis]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Sesli]]></category>
		<category><![CDATA[Zemberek]]></category>

		<guid isPermaLink="false">http://tarikzengin.wordpress.com/2007/08/15/sesli-v2/</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/sesli-v2/" title="Sesli v2"></a>1 sene önce öylesine aklıma gelip giriştiğim bir proje &#8220;Sesli&#8221;. 2 gecede ortaya çıktı ve sonradan da birkaç eklemeyle son halini aldı. Üstünden 1 yıl geçti, hiç ilgilenemedim. Bu süre zarfında seslisozluk tasarımı değiştiği için proje çalışmaz duruma gelmişti. Geçenlerde &#8230;<p class="read-more"><a href="http://tarikzengin.com/sesli-v2/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/sesli-v2/" title="Sesli v2"></a><p>1 sene önce öylesine aklıma gelip giriştiğim bir proje &#8220;Sesli&#8221;. 2 gecede ortaya çıktı ve sonradan da birkaç eklemeyle son halini aldı.</p>
<p>Üstünden 1 yıl geçti, hiç ilgilenemedim. Bu süre zarfında seslisozluk tasarımı değiştiği için proje çalışmaz duruma gelmişti. Geçenlerde tekrar aklıma takılınca ayağa kaldırasım geldi <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-124' /> </p>
<p>Fakat bu kez yeni bir şeyler öğrenmek adına, daha önce Perl ve Bash Script kullandığım projeyi Python&#8217;a taşıma kararı aldım. Planım öncelikle çatıyı oluşturup ardından pyQT, pyGTK ya da wxPython kullanarak projeye kişilik kazandırmak.</p>
<p>Geçen yıl Erkan Kaplan&#8217;ın sağladığı, Lapis Forum&#8217;la beraber aynı sunucuda bulundurduğu  <a title="Sesli" href="http://sesli.linux-sevenler.org/">şu sayfa</a>da yayınlamıştım. Şu an sayfadaki versiyonlar işlevsiz olsa da incelemek isteyenlere açık.</p>
<p>Python konusunda henüz hiç bilgim olmaması nedeniyle ilginç bir tecrübe olacak. İlk izleninim olarak okunaklı bir syntax&#8217;a sahip olduğunu söyleyebilirim. Bu izlenimimden dolayı pişman olmayacağımı umuyorum. Python bilen arkadaşlara da selam ederim. Başınızı ağrıtacağım.</p>
<p>Şu an için Zemberek ile kelime kökü bulma işlemlerini dahil etmeyeceğim. Bu konuyu <a title="Serkan Kaba" href="http://serkank.wordpress.com/">Serkan</a> ile konuşup program içine gömüp gömemeyeceğimi sormam gerek.</p>
<p>Çok fazla boş vaktim olmadığını ve hiç Python bilmediğimi de göz önünde bulundurursam  bu kez 2 gecede bitmeyecek <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-124' />   Zaten ne zaman vaktim olmasa, yoğun olsam bu tür şeyler yapasım gelir. Huy işte, çıkmıyor.<br />
Beta tester&#8217;ım hazır olsun. O kendini biliyor <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley colorbox-124' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/sesli-v2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Matlab] Pitch Frequency Estimation</title>
		<link>http://tarikzengin.com/pitch-frequency-estimation/</link>
		<comments>http://tarikzengin.com/pitch-frequency-estimation/#comments</comments>
		<pubDate>Sat, 02 Jun 2007 09:30:12 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Correlation]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Korelasyon]]></category>
		<category><![CDATA[Pitch]]></category>
		<category><![CDATA[Proje]]></category>
		<category><![CDATA[Unvoiced]]></category>
		<category><![CDATA[Voiced]]></category>

		<guid isPermaLink="false">http://tarikzengin.wordpress.com/2007/06/02/pitch-frequency-estimation/</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/pitch-frequency-estimation/" title="[Matlab] Pitch Frequency Estimation"></a>Bu projede Matlab ortamında, önceden kaydedilmiş olan bir bayan sesinin &#8220;Pitch Frequency&#8221; analizi yapılarak segmentasyon işlemi gerçekleştirilmiş ve sesli/sessiz segmentler ayırt edilerek sinyalin sesli segmentlerinin ortalaması çıkarılmıştır. Proje, ses tanıma algoritmalarına giriş niteliğinde bir ön bilgi olarak sayılabilir. İçerik Değişkenlerin &#8230;<p class="read-more"><a href="http://tarikzengin.com/pitch-frequency-estimation/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/pitch-frequency-estimation/" title="[Matlab] Pitch Frequency Estimation"></a><p>Bu projede Matlab ortamında, önceden kaydedilmiş olan bir bayan sesinin &#8220;Pitch Frequency&#8221; analizi yapılarak segmentasyon işlemi gerçekleştirilmiş ve sesli/sessiz segmentler ayırt edilerek sinyalin sesli segmentlerinin ortalaması çıkarılmıştır. Proje, ses tanıma algoritmalarına giriş niteliğinde bir ön bilgi olarak sayılabilir.</p>
<p><strong>İçerik</strong></p>
<ul>
<li>Değişkenlerin Tanımlanması</li>
<li> İşlenecek Sinyalin Matlab Ortamına Alınması</li>
<li> Sinyalden DC Bileşenlerin Atılması</li>
<li> Segmentasyonda 	Kullanılacak Değişkenlerin Belirlenmesi</li>
<li> Silence Analizi İçin Gerekli Değişkenlerin Bulunması</li>
<li> Silence Olan Segmentlerin Atılması</li>
<li> Clipping Level Parametrelerinin Elde Edilmesi</li>
<li> Segmentlerin Enerjilerinin ve Otokorelasyonlarının Bulunması</li>
<li> Sonuç</li>
</ul>
<p><span id="more-42"></span></p>
<p><strong>Değişkenlerin Tanımlanması</strong></p>
<p>Programda kullanılacak değişkenler hız kazanmak için önceden tanımlanıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">xseg_son=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
mm_son=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
cc=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
energy=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
pitch=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
voiced=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
unvoiced=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;</pre></div></div>

<p>İşlenecek Sinyalin Matlab Ortamına Alınması<br />
normal_female.wav dosyası x değişkenine atiliyor. Okunan sinyalin sample frekansı fs değişkeninde tutuluyor. x değişkenine atanmış olan sinyal plot ediliyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #080;">&#91;</span>x,fs<span style="color: #080;">&#93;</span>=<span style="color: #0000FF;">wavread</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'normal_female'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Okunan Sinyal'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_39" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_01.png"><img class="size-medium wp-image-39 colorbox-42" title="pitch1" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_01-300x225.png" alt="Okunan Sinyal" width="300" height="225" /></a><p class="wp-caption-text">Okunan Sinyal</p></div>
<p><strong>Sinyalden DC Bileşenlerin Atılması</strong></p>
<p>Sinyalin mean değeri kendinden çıkarılarak DC bileşenler atiliyor. Sonuç X değişkenine atılarak çizdiriliyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">X=x-<span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>X<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'DC Bileseni Atilmis Sinyal Sinyal'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_40" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_02.png"><img class="size-medium wp-image-40 colorbox-42" title="pitch2" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_02-300x225.png" alt="DC Bileseni Atilmis Sinyal" width="300" height="225" /></a><p class="wp-caption-text">DC Bileseni Atilmis Sinyal</p></div>
<p><strong>Segmentasyonda Kullanılacak Değişkenlerin Belirlenmesi</strong></p>
<p>Bu kısımda segmentasyon işleminde kullanılacak parametreler belirlenip ardından buffer komutu ile belirlenen block değerlerinde segmentlere bölme işlemi gerçekleştiriliyor. Window&#8217;lar overlap miktarı kadar çakışık olarak bölünmektedir. Ardından elde edilen window&#8217;lar hamming window ile çarpılarak segmentler elde ediliyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">block=<span style="color: #33f;">30</span>*fs/<span style="color: #33f;">1000</span>; <span style="color: #228B22;">% Segmentlerin block uzunluğunun okunan sinyalin sample frekansından bulunması</span>
overlap=<span style="color: #33f;">10</span>*fs/<span style="color: #33f;">1000</span>;<span style="color: #228B22;">% Overlap miktarının bulunması.</span>
xson=buffer<span style="color: #080;">&#40;</span>X,block,overlap<span style="color: #080;">&#41;</span>;<span style="color: #228B22;">% Segmentasyon yapılıyor.</span>
xson=xson.*<span style="color: #0000FF;">repmat</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span>hamming<span style="color: #080;">&#40;</span>block<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>,<span style="color: #33f;">1</span>,<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>xson<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;<span style="color: #228B22;">% Hamming Code İle Çarpım.</span></pre></div></div>

<p><strong>Silence Analizi İçin Gerekli Değişkenlerin Bulunması</strong></p>
<p>Sinyalin sesli/sessiz kısımlarının analizi için gerekli bazı değişkenlerin tanımlamaları yapılıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">Maximum=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>X<span style="color: #080;">&#41;</span>;<span style="color: #228B22;">% DC bileşenleri atılmış sinyalin maximum değeri bulunuyor.(Global Maximum)</span>
maxy=<span style="color: #080;">&#40;</span>Maximum*<span style="color: #33f;">0.05</span><span style="color: #080;">&#41;</span>;<span style="color: #228B22;">% Silence için threshold değeri tanımlanıyor</span>
sinyal_uz=<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>xson<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% xson sinyalinin boyutları [1500,300].Burada sinyal_uz 300 değerini alıyor.</span></pre></div></div>

<p><strong>Silence Olan Segmentlerin Atılması</strong></p>
<p>Aşağıdaki döngüde silence olmayan segmentler hesaplanıyor. Her segmentin maximum değeri xseg_max değişkenine atanıyor. Bu değişken de threshold değerimiz olan maxy ile karşılaştırılıyor. Silence olmayan bir değer bulunduğunda ise z değeri 1 arttırılıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">z=<span style="color: #33f;">1</span>;<span style="color: #228B22;">% Silence olmayan segmentlerin sayısını z verecek</span>
<span style="color: #0000FF;">for</span> c=<span style="color: #33f;">1</span>:<span style="color: #080;">&#40;</span>sinyal_uz<span style="color: #080;">&#41;</span>, <span style="color: #228B22;">% sinyal_uz=300.% Her segmentin maximumu xseg_max a atanıyor.</span>
<span style="color: #228B22;">% Bir sonraki adımda global max. ile karşılaştırılacak.</span>
xseg_max=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>xson<span style="color: #080;">&#40;</span>:,c<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">if</span> xseg_max &amp;gt;maxy <span style="color: #228B22;">% Segmentin maximumu global maximum ile karşılaştırılıyor.</span>
xseg_son<span style="color: #080;">&#40;</span>:,z<span style="color: #080;">&#41;</span>=xson<span style="color: #080;">&#40;</span>:,c<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Silencelardan arındırılmış yeni bir &quot;xseg_son&quot; sinyali oluşturuluyor.</span>
z=z+<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Silence olmayan her segment için z 1 arttırılıyor.</span>
<span style="color: #0000FF;">else</span>
<span style="color: #0000FF;">end</span> <span style="color: #228B22;">% if</span>
<span style="color: #0000FF;">end</span> <span style="color: #228B22;">% for</span>
&nbsp;
xx=xseg_son<span style="color: #080;">&#40;</span>:,<span style="color: #33f;">1</span>:<span style="color: #080;">&#40;</span>z-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% xseg_son xx e atandı.</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span>:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Silence Atilmis Sinyal'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_41" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_03.png"><img class="size-medium wp-image-41 colorbox-42" title="pitch3" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_03-300x225.png" alt="Silence Atilmis Sinyal" width="300" height="225" /></a><p class="wp-caption-text">Silence Atilmis Sinyal</p></div>
<p><strong>Clipping Level Parametrelerinin Elde Edilmesi</strong></p>
<p>Aşağıdaki döngüde her segmentin ilk ve son üçte birlik kısmının maximumu bulunup karşılaştırılıyor. Bu karşılaştırılan iki değerden de küçük olanı mm değişkenine atanıyor. Clipping Level ı tanımlamak amacıyla elde edilen değer de 0,68 ile çarpılıyor. Segmentin bu değerden büyük olan elemanlarından bu threshold değeri çıkarılıyor. Küçük olan değerler ise doğrudan 0&#8242;a yuvarlanıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span>=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>, <span style="color: #228B22;">%i=1:300</span>
m1=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>:<span style="color: #33f;">500</span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% xx sinyalinin ilk 1/3 kısmının maximum elemanı bulundu</span>
m2=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #33f;">1001</span>:<span style="color: #33f;">1500</span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% xx sinyalinin son 1/3 kısmının maximum elemanı bulundu</span>
mm=<span style="color: #0000FF;">min</span><span style="color: #080;">&#40;</span>m1,m2<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Bu iki maximumdan hangisinin daha küçük olduğu belirlendi</span>
mm_son<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=mm*<span style="color: #33f;">0.68</span>; <span style="color: #228B22;">% Yukarıdaki satırda elde edilen değer 0.68 ile çarpılarak &quot;clipping level&quot; elde edildi</span>
&nbsp;
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">j</span></span>=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span>:,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>, <span style="color: #228B22;">% length(xx(:,1))=1500</span>
<span style="color: #0000FF;">if</span> <span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>&amp;gt;mm_son<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> <span style="color: #228B22;">% Clipping level ile karşılaştırma yapılıyor</span>
cc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=<span style="color: #0000FF;">sign</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>*<span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>-<span style="color: #080;">&#40;</span>mm_son<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Clipping leveldan büyük olan bileşenlerden clipping level çıkarıldı</span>
<span style="color: #0000FF;">else</span>
cc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=<span style="color: #33f;">0</span>;  <span style="color: #228B22;">% Küçük olan bileşenler ise 0 a çekildi</span>
<span style="color: #0000FF;">end</span>  <span style="color: #228B22;">% if koşulu sona erdiriliyor</span>
<span style="color: #0000FF;">end</span>  <span style="color: #228B22;">% 2.&quot;for&quot; döngüsü sonu</span>
<span style="color: #0000FF;">end</span>  <span style="color: #228B22;">% 1.&quot;for&quot; döngüsü sonu</span></pre></div></div>

<p><strong>Segmentlerin Enerjilerinin Bulunması</strong></p>
<p>Yukarıdaki döngü sonunda elde edilen cc matrisinin boyutları [1500,300]. Aşağıdaki döngüde ise her bir segment için energy hesaplanıyor. Bunun için sinyalin normunun karesi her bir kolonu için hesaplanıyor. xcorr komutu ile tüm sinyalin autocorrelation&#8217;i bulunuyor. Buradan 50Hz ile 400Hz arasindaki autocorrelation bileşenleri bulunuyor ve bunlara karşılık gelen pitch frekansları hesaplanıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">w=<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Voiced segmentler için başlangıç ataması</span>
v=<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Unvoiced sinyaller için başlangıç ataması</span>
u=<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Voiced olarak düşündüğümüz bileşenlerin sayısını bu parametre gösterecek</span>
a=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% Autocorrelation matrisi için başlangıç ataması</span>
<span style="color: #0000FF;">for</span> h=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>cc<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>,  <span style="color: #228B22;">% cc nin kolon sayısı=300</span>
energy<span style="color: #080;">&#40;</span>h<span style="color: #080;">&#41;</span>=<span style="color: #0000FF;">norm</span><span style="color: #080;">&#40;</span>cc<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span>,<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>^<span style="color: #33f;">2</span>; <span style="color: #228B22;">% Her segment için enerji hesaplanıyor</span>
a<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span>=xcorr<span style="color: #080;">&#40;</span>cc<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;   <span style="color: #228B22;">% İlk başta bütün cc sinyalinin autocorrelation u bulunuyor</span>
&nbsp;
<span style="color: #228B22;">% 50 Hz-400Hz arasındaki autocorrelation fonksiyonu değerlerini bulabilmek için 50 Hz ve 400 Hz frekanslarına karşılık gelen pitch  frequency değerlerinin indekslerini alıyoruz.</span>
alt_sinir=<span style="color: #0000FF;">floor</span><span style="color: #080;">&#40;</span>fs/<span style="color: #33f;">400</span><span style="color: #080;">&#41;</span>;
ust_sinir=<span style="color: #0000FF;">floor</span><span style="color: #080;">&#40;</span>fs/<span style="color: #33f;">50</span><span style="color: #080;">&#41;</span>;
Rxx=<span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>a<span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span>block+alt_sinir:block+ust_sinir<span style="color: #080;">&#41;</span>,h<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #080;">&#91;</span>k l<span style="color: #080;">&#93;</span>=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>Rxx<span style="color: #080;">&#41;</span>;   <span style="color: #228B22;">% Aldığımız aralıktaki en büyük sayının yerini belirliyoruz</span>
l=l+alt_sinir;
pitch<span style="color: #080;">&#40;</span>h<span style="color: #080;">&#41;</span>=fs/l;  <span style="color: #228B22;">% Pitch Frequnecy hesaplanıyor </span>
&nbsp;
<span style="color: #228B22;">% Segmentin sesli/sessiz oldugunu bulabilmek için autocorrelation'in 0.4*energy'den</span>
<span style="color: #228B22;">% büyük olup olmadigi karsilastiriliyor. Eger büyükse segment seslidir ve voiced</span>
<span style="color: #228B22;">% matrisine atiliyor, eger küçükse unvoiced matrisine atiliyor. Voiced ve unvoiced</span>
<span style="color: #228B22;">% segment sayisi w ve v degiskenlerinde tutuluyor.</span>
&nbsp;
<span style="color: #0000FF;">if</span> k &amp;gt; <span style="color: #33f;">0.4</span>*energy<span style="color: #080;">&#40;</span>h<span style="color: #080;">&#41;</span> <span style="color: #228B22;">% En büyük değer 0.4*energy ile karşılaştırılıyor</span>
voiced<span style="color: #080;">&#40;</span>:,w<span style="color: #080;">&#41;</span>=cc<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Şart sağlanırsa voiced sinyaline atılıyor</span>
w=w+<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Koşul sağlanırsa voiced segment sayısı arttırılır.</span>
<span style="color: #0000FF;">else</span>
unvoiced<span style="color: #080;">&#40;</span>:,v<span style="color: #080;">&#41;</span>=cc<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Şart sağlanmazsa unvoiced sinyali oluşturuluyor</span>
v=v+<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Unvoiced sinyal segmentleri 1 arttılır.</span>
<span style="color: #0000FF;">end</span>
<span style="color: #0000FF;">end</span> <span style="color: #228B22;">% 1. &quot;for&quot; döngüsü sonu</span></pre></div></div>

<p><strong>Sonuç</strong></p>
<p>En son kısımda ise sesli sinyalinin ortalaması alınıyor</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">sesli_ort=<span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>pitch<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Voiced segmentlerin ortalaması</span>
sesli_ort
&nbsp;
sesli_ort=
<span style="color: #33f;">232.8431</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/pitch-frequency-estimation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bilgisayar ve Mikrokontrolör Temelli Kapalı Çevrim Robot Pozisyon Kontrol Sistemi</title>
		<link>http://tarikzengin.com/bilgisayar-ve-mikrokontrolor-temelli-kapali-cevrim-robot-pozisyon-kontrol-sistemi/</link>
		<comments>http://tarikzengin.com/bilgisayar-ve-mikrokontrolor-temelli-kapali-cevrim-robot-pozisyon-kontrol-sistemi/#comments</comments>
		<pubDate>Sat, 19 May 2007 17:55:35 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Projeler]]></category>
		<category><![CDATA[16F877]]></category>
		<category><![CDATA[Bitirme Projesi]]></category>
		<category><![CDATA[Denavit Hartenberg]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Forward Kinematics]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Graduate Project]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[İleri Kinematik]]></category>
		<category><![CDATA[KDevelop]]></category>
		<category><![CDATA[PIC]]></category>
		<category><![CDATA[PicC]]></category>
		<category><![CDATA[Proje]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[QTDesigner]]></category>
		<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://tarikzengin.wordpress.com/2007/05/19/bilgisayar-ve-mikrokontrolor-temelli-kapali-cevrim-robot-pozisyon-kpntrol-sistemi/</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/bilgisayar-ve-mikrokontrolor-temelli-kapali-cevrim-robot-pozisyon-kontrol-sistemi/" title="Bilgisayar ve Mikrokontrolör Temelli Kapalı Çevrim Robot Pozisyon Kontrol Sistemi"></a>Geçtiğimiz hafta itibariyle arkadaşım Umut YÜKSEKBAŞ ile beraber tamamladığımız lisans bitirme projemizin kısa bir özetini yazmak istedim. Projemizi 16.05.2007 tarihinde sunup, 18.05.2007 tarihinde demosunu gerçekleştirmemizle birlikte, aylardır laboratuvarda yaşamamıza neden olan ömür törpümüz, sevimli mi sevimli manipülatörümüzle vedalaşma vaktimiz geldi &#8230;<p class="read-more"><a href="http://tarikzengin.com/bilgisayar-ve-mikrokontrolor-temelli-kapali-cevrim-robot-pozisyon-kontrol-sistemi/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/bilgisayar-ve-mikrokontrolor-temelli-kapali-cevrim-robot-pozisyon-kontrol-sistemi/" title="Bilgisayar ve Mikrokontrolör Temelli Kapalı Çevrim Robot Pozisyon Kontrol Sistemi"></a><p align="justify">Geçtiğimiz hafta itibariyle arkadaşım Umut YÜKSEKBAŞ ile beraber tamamladığımız lisans bitirme projemizin kısa bir özetini yazmak istedim. Projemizi 16.05.2007 tarihinde sunup, 18.05.2007 tarihinde demosunu gerçekleştirmemizle birlikte, aylardır laboratuvarda yaşamamıza neden olan ömür törpümüz, sevimli mi sevimli manipülatörümüzle vedalaşma vaktimiz geldi artık. Proje raporu kitapçığını da yazdıktan sonra kendisine veda edeceğiz. Hüzünlü bir ayrılık olacak.</p>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/WR5tswIPvck" frameborder="0" allowFullScreen="true"> </iframe></p>
<p align="justify"><strong>ÖZET</strong><br />
Endüstri sahalarında robot sistemlere; problemlere hızlı ve hassas çözümler getirmeleri, insan sağlığı ve güvenliğine zararlı olan pek çok faktörden etkilenmemeleri gibi sebeplerle ihtiyaç duyulmaktadır. Otomobil imal-montaj, ilaç, nükleer santraller, biyomedikal gibi alanlarda robotlar çok hassas işlerin yapımında kullanılmaktadır. Tıbbi alanda kritik ve hassasiyet gerektiren ameliyatlarda kullanılabilirler. Protez kol olarak kullanımları da yaygındır.<span id="more-19"></span></p>
<p align="justify">Projemizin çalışma konuları otomatik kontrol sistemi ve bilgisayardan gönderilen koordinatlarla robot manipülatörün konum kontrolüdür. Projemizde mekatronik bir sistemin kapalı çevrim kontrolü amaçlanmaktadır. Manipülatör sistemi, çok girişli çok çıkışlı bir sistemdir ve her eklem pozisyon denetimi için ayrı giriş sinyallerine ihtiyaç duymaktadır. Manipülatör sisteminin çeşitli yöntemlerle elde edilen dinamik modeli doğrusal değildir ve eklemlerin birbiri ile etkileşimini ifade eden bağlantılı terimler içerir. Sistemde altı serbestlik dereceli bir mekanik kol ve otomatik kontrol sistemi tasarlanmıştır. Robot manipülatörün hareketi, eklem yerlerinde bulunan DC motorlar ile sağlanır. Bu DC motorları sürmek için içinde H-Bridge (köprü) bulunan L298 entegresi ve kontrolör olarak da PIC 16F877 kullanılmıştır. Kontrolör ile PC arasındaki haberleşme Max232 seri arabirimi ile sağlanmıştır. MPLAB&#8217;ta PIC C derleyicisi kullanılarak geliştirilen algoritma ile robot manipülatörün pozisyon kontrolü sağlanmıştır. Robot manipülatörün eklemlerinden alınan analog geri besleme bilgisi PIC içerisinde bulunan ADC modülleriyle okunup, tasarlanan P.I. kontrol sistemi sayesinde istenilen konuma en az hatayla gitmesi sağlanmıştır.</p>
<p align="justify"><strong>SİSTEMİN BİLEŞENLERİ<br />
Donanım Bileşeni</strong><br />
Projede kullanılmış olan PIC 16F877-20Mhz kontrolör içerisinde 8 adet ADC kanalı, iki adet PWM modülü bulunmaktadır. Motor sürücü entegresi olarak içerisinde iki H-Bridge (Köprü) bulunan L298 kullanılmıştır. Bu sürücüler 46 Volt kaynak gerilimine ve 4 Amper akıma kadar dayanabilmektedir. Kullanılan güç kaynağından sağladığımız gerilim değeri 15 volt olup, çekilen akım 0.5 amperi geçmemektedir. PC &#8216;den pozisyon bilgilerini PIC &#8216;e göndermek için seri arabirim olarak Max232 seri arabirimi kullanılmıştır.</p>
<div id="attachment_21" class="wp-caption aligncenter" style="width: 569px"><img class="size-full wp-image-21 colorbox-19" title="blockdiagram.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot1.png" alt="Sistemin Blok Diagrami" width="559" height="362" /><p class="wp-caption-text">Sistemin Blok Diagrami</p></div>
<p align="justify">PC &#8216;den gönderilen pozisyon bilgileri Max232 seri arabirim aracılığıyla PIC &#8216;in seri modülüne ulaşır. Robot Manipülatör eklemlerinden alınan geri besleme bilgisi PIC içerisindeki ADC modülü ile okunup, istenen analog değere yani istenen konuma gelmesi için PIC &#8216;in çıkışına bağlı olan L298 &#8216;in girişlerine sinyaller gönderilir. Geliştirilen algoritma, hatanın sıfırlanabilmesi için manipülatörün hangi yöne hareket etmesi gerektiğine karar verir ve sürücülere gerekli sinyalleri gönderir. Robot manipülatör istenilen konuma geldiğinde ise motor frenlenerek konumunu koruması sağlanır. Mikrokontrolcü ile tüm eklemlerin konumları devamlı kontrol edilir ve herhangi bir konum değişikliği algılandığında istenilen konuma tekrar gelmesi sağlanır. Algoritma aynı zamanda hatayla orantılı bir şekilde motor uçlarındaki gerilimi de değiştirerek hassas konum kontrolü sağlamaktadır.</p>
<div id="attachment_22" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot2.png"><img class="size-medium wp-image-22 colorbox-19" title="robotdevresemasi.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot2-300x271.png" alt="Devre Semasi" width="300" height="271" /></a><p class="wp-caption-text">Devre Semasi</p></div>
<p align="justify"><strong>Yazılım Bileşeni</strong></p>
<p align="justify">Mikrokontrolör için geliştirilen yazılım, MPLAB &#8216;ta HI-TECH PICC derleyicisi ile derlenmiştir. Kontrolör tarafında gerçekleştirilen P.I. kontrol sistemi; her 6 eklem için devamlı olarak, ADC modülünden okunan geri besleme değeri ile istenen değer arasındaki farkı hesaplayarak hata değerlerini bulur. Bu hata değeri oransal Kp değeri ile çarpılır. Daha sonra hata değerlerinin integrali alınarak toplam hata bulunur ve toplam hata ile integral parametresi Ki çarpılır. Oransal ve integral kontrol sinyallerinin toplanmasıyla elde edilen kontrol sinyali belirli sınırlar içerisinde tutularak P.I. kontrol sistemi tasarlanmış olur.</p>
<p align="justify">Her eklem için bu hesaplama devamlı olarak yapılıp sürekli konum kontrolü gerçekleştirilir.</p>
<div id="attachment_24" class="wp-caption aligncenter" style="width: 207px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot4.png"><img class="size-medium wp-image-24 colorbox-19" title="robot4.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot4-197x300.png" alt="Robot Kol" width="197" height="300" /></a><p class="wp-caption-text">Robot Kol</p></div>
<p align="justify">Sistemin matematiksel modeli çıkarılamadığından tasarlanan P.I. kontrol sistemi için Ziegler-Nichols metoduna başvurulmuştur.</p>
<div id="attachment_25" class="wp-caption aligncenter" style="width: 538px"><img class="size-full wp-image-25 colorbox-19" title="robot5.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot5.png" alt="Controller Design" width="528" height="267" /><p class="wp-caption-text">Controller Design</p></div>
<p align="justify">PID kontrolörün I,D katsayıları 0 yapılarak, P sistem osilasyona gidene kadar yavaş yavaş arttırılır. Sistemin osilasyona gittiği andaki P değerine Kc, osilasyon frekansına Tc denilmiştir.</p>
<div id="attachment_26" class="wp-caption aligncenter" style="width: 342px"><img class="size-full wp-image-26 colorbox-19" title="robot6.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot6.png" alt="Kontrol Katsayilari Tablosu" width="332" height="162" /><p class="wp-caption-text">Kontrol Katsayilari Tablosu</p></div>
<div id="attachment_27" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-27 colorbox-19" title="robot7.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot7-300x166.png" alt="Oscillation" width="300" height="166" /><p class="wp-caption-text">Oscillation</p></div>
<p align="justify">Ziegler-Nichols parametrelerinden yararlanılarak optimum P.I. kontrol parametreleri tespit edilmiştir ve sistemin vermiş olduğu yanıt ise aşağıda gösterilmiştir.</p>
<div id="attachment_28" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-28 colorbox-19" title="robot8.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot8-300x196.png" alt="System Response" width="300" height="196" /><p class="wp-caption-text">System Response</p></div>
<p align="justify"><strong>Grafiksel Kullanıcı Arabirimi Tasarımı</strong><br />
Kullanıcı arayüzü tasarımı QT designer ve Kdevelop entegre geliştirme ortamları kullanılarak C++ dilinde geliştirilmiştir. Arayüzün görünümü aşağıdaki gibidir. QT kütüphaneleri platformdan bağımsız kod üretmeyi mümkün kılmaktadır. Bu şekilde geliştirdiğimiz arayüz Unix, Linux, FreeBSD, MacOS, Windows gibi platformlarda çalışabilmektedir.</p>
<div id="attachment_29" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot9.png"><img class="size-medium wp-image-29 colorbox-19" title="robot9.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot9-300x223.png" alt="GUI" width="300" height="223" /></a><p class="wp-caption-text">GUI</p></div>
<p align="justify">Robotun koordinatlarını belirlemek için Denavit-Hartenberg metodu kullanılmıştır. Bu metoda göre uzuvların alacağı açılar transformasyon matrisleriyle hesaplanarak açı değerleri elde edilmiştir. Bilgisayar arayüzünde hesaplanan koordinat değerleri USB veri yolu üzerinden 57600 baudrate ile mikrokontrolöre gönderilmiştir.</p>
<p align="justify"><strong>Forward (İleri ) Kinematics Problem</strong><br />
Robotik çalışmada karşılaşılan problem türlerinden biri, bilinen link dönme açı bilgileri ve robot parametreleri için robot uç nokta koordinatlarının hesaplanmasıdır. Robot hem dönme hem öteleme<br />
hareketi yapacağından Translation (Öteleme) matris ve Rotation (dönme) matrislerinin hesaplanması gerekmektedir.</p>
<div id="attachment_30" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-30 colorbox-19" title="robot10.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot10-300x137.png" alt="Matrices" width="300" height="137" /><p class="wp-caption-text">Matrisler</p></div>
<p align="justify">Bu şekilde elde edilen Transformasyon Matrisleri arayüz ile seri arabirim üzerinden kontrolcüye gönderilerek kontolün sağlanması amaçlanmaktadır. Kontrol sistemi değişkenleri istenildiği takdirde arayüzden ayarlanabilir ve sistem bu ayarlarla çalışmaya devam edebilmektedir. GUI &#8216;nin ayarlar kısmından seriport aygıtımızın çeşidini, hangi baudrate değeri ile haberleşileceği, kontrol sistem parametrelerini ve motor uçlarına hangi oranda gerilim uygulanacağı seçilebilir.</p>
<div id="attachment_31" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot111.png"><img class="size-medium wp-image-31 colorbox-19" title="robot11.png" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/05/robot111-300x232.png" alt="GUI Ayarlari" width="300" height="232" /></a><p class="wp-caption-text">GUI Ayarlari</p></div>
<p align="justify"><strong>Sonuç ve Değerlendirme</strong><br />
Geliştirdiğimiz sistem PC ile grafik arayüzden girilen kartezyen koordinatlara göre konum kontrolü yapabilmektedir. Operatör tarafından yeni bir koordinat verilmediği sürece pozisyonunu sürekli korumakta, istenilen herhangi bir zamanda koordinat değişikliği gerçekleştirilebilmektedir. Proje<br />
sonucunda fabrikaların tüm alanlarında kontrol ve üretim açısından, biyomedikal alanlarda yardım açısından, savunma sanayisinde güvenlik açısından, insan sağlığına zararlı durumlardan koruma açısından ve akademik uygulamalarda eğitim amaçlı kullanılması açısından çok büyük yararlar elde<br />
edilebilecek bir tasarım ortaya çıkarılmıştır. Projenin geliştirilebilecek yönü ise tıpkı insan beyninin kollarına hükmedebildiği gibi, iki robot manipülatörünün koordineli çalışabilmesi için kontrol sistemi geliştirilebilir.</p>
<div id="attachment_1028" class="wp-caption aligncenter" style="width: 235px"><a href="http://tarikzengin.com/wp-content/uploads/2007/05/hpim1850.jpg"><img class="size-medium wp-image-1028 colorbox-19" title="PCB" src="http://tarikzengin.com/wp-content/uploads/2007/05/hpim1850-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">PCB</p></div>
<div id="attachment_1029" class="wp-caption aligncenter" style="width: 310px"><a href="http://tarikzengin.com/wp-content/uploads/2007/05/hpim1851.jpg"><img class="size-medium wp-image-1029 colorbox-19" title="PCB" src="http://tarikzengin.com/wp-content/uploads/2007/05/hpim1851-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">PCB</p></div>
]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/bilgisayar-ve-mikrokontrolor-temelli-kapali-cevrim-robot-pozisyon-kontrol-sistemi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

