<?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>~mühendisliğe dair kendi çapında karalamalar... &#187; TowerPro</title>
	<atom:link href="http://www.fatiherdem.net/tag/towerpro/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fatiherdem.net</link>
	<description>mühendisliğe dair kendi çapında karalamalar...</description>
	<lastBuildDate>Mon, 23 Aug 2010 14:58:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hobi Servo Sürelim (Bilgisayar Kontrollü)</title>
		<link>http://www.fatiherdem.net/hobi-servo-surelim/</link>
		<comments>http://www.fatiherdem.net/hobi-servo-surelim/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 21:46:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Çalışmalarım]]></category>
		<category><![CDATA[Hobi Servo]]></category>
		<category><![CDATA[TowerPro]]></category>

		<guid isPermaLink="false">http://www.fatiherdem.net/?p=99</guid>
		<description><![CDATA[Hobi servolar girişine uyguladığımız darbenin genişliğine göre 0-180 derece arasında dönme açısını değiştirilebildiğimiz motorlardır. Model uçakların kanat açıları, uzaktan kumandalı arabaların direksiyon sistemleri, el-kol hamleleri-adım atma-tutma-bırakma gibi hareketler gerektiren ve çok yüksek tork gerektirmeyen robotlar için ideal motorlardır. Bu motorlar çeşitli boy ve torklarda olabiliyor:


Ben burdaki tüm denemelerimi aşağıda gördüğünüz (TowerPro) mini servo üzerinden yaptım:

Büyük [...]]]></description>
			<content:encoded><![CDATA[<p>Hobi servolar girişine uyguladığımız darbenin genişliğine göre 0-180 derece arasında dönme açısını değiştirilebildiğimiz motorlardır. Model uçakların kanat açıları, uzaktan kumandalı arabaların direksiyon sistemleri, el-kol hamleleri-adım atma-tutma-bırakma gibi hareketler gerektiren ve çok yüksek tork gerektirmeyen robotlar için ideal motorlardır. Bu motorlar çeşitli boy ve torklarda olabiliyor:<br />
<a href="http://www.fatiherdem.net/yuklenenler/ces_servo.JPG" target="_blank"><img src="http://www.fatiherdem.net/yuklenenler/ces_servo_k.gif" alt="" /></a><br />
<span id="more-99"></span><br />
Ben burdaki tüm denemelerimi aşağıda gördüğünüz (TowerPro) mini servo üzerinden yaptım:<br />
<a href="http://www.fatiherdem.net/yuklenenler/m_servo.JPG" target="_blank"><img src="http://www.fatiherdem.net/yuklenenler/m_servo_k.gif" alt="" /></a></p>
<p>Büyük resimden görüldüğü üzere servolarımızın üç girişi var, ikisi besleme üçüncüsü data(veya pwm) girişi yani darbe genişliği uyguladığımız giriştir. Hobi servomuzu kontrol etmek için bir kare dalga işaretinin darbe genişliğini belirli sınırlar içerisinde değiştiririz, yani ismini koymak gerekirse darbe-genişlik modülasyonu yaparız. Renklerden hangi pin ne işe yarıyor görebiliyoruz. Nitekim bizim servomuzda kahverengi:toprak, kırmızı:+, turuncu:data. Diğer hobi servolarda renkler nasıl bilmiyorum ama kırmızı(+) ve siyah(toprak) kablolar varsa kalan girişin pwm girişi olduğunu söyleyebiliriz.<br />
Her şeyden önce servomuzu genel olarak nasıl sürüyoruz? Bu sorunun çoğu hobi servo için geçerli bir cevabı var:<br />
20ms periyotlu bir kare dalga işaretimizin darbe genişliğini 1ms ile 2ms arasında değiştirerek hobi servomuza 0 ile 180 derece arasında açı veririz. Başka bir deyişle periyodu 20ms olan ve &#8220;duty cycle&#8221; ı %5 ile %10 arasında değişebilen pwm(darbe genişlik modülasyonu) işareti uygularız. Pwm demek istemiyorum çünkü bizim burda anlatmak istediğimiz sürme metodu &#8220;duty cycle&#8221; ayarlanmasından ziyade darbe genişliğinin mikrosaniyeler mertebesinden değiştirilmesi üzerine kurulmuştur. Yazının ilerleyen bölümünde sürme metodumuzun ne kadar basit ve temel bir işlem olduğu anlaşılacaktır. Servonun açısının ayarlanmasında periyodun 20ms olması şart değil, önemli olan uygulanan darbenin genişliği. Servonun belirlediğimiz konumda kalması için bu bilgiyi sürekli güncelliyoruz(her 20 ms de mesela), bu işareti kestiğinizde(besleme duruyor tabi) servo son açısında kalıyor ancak ufak bir tork servonun açısını değiştirebilir. Yani siz eğer yüke bağlı servonuzu belirli bir konumda tutmak istiyorsanız 20ms belki daha da düşük periyotlu bir işaretle servoyu kontrol etmeniz gerekir.<br />
<img src="http://www.fatiherdem.net/yuklenenler/servo_surus.gif" alt="Servo sürüş" /><br />
Ancak bu darbe aralıkları her hobi servo için böyle değil (şimdiden sonra yazı boyunca hobi servo yerine servo diyeceğim). Nitekim bizim kullanacağımız servonun darbe aralığı 540 us ile 2400 us arasında. Peki biz bu darbe sürelerini nerden öğreneceğiz, yok mu bu kullanacağımız servonun teknik bilgileri? Yok ne yazık ki. Burda kullanacağımız servonun web sitesinde motorun temel özelliklerini yazmakla yetinmişler, servo işte siz sürersiniz demek istiyorlar heralde(site:http://towerprocn.sh15.host.35.com/towerprocn/english/servo/SERVO.html).<br />
Her marka servo için durum böyle değil tabii ki, mesela futaba&#8217;nın sitesinde motorun sürülmesi için gereken tüm bilgiler verilmiş(site:http://www.gpdealera.com/cgi-bin/wgainf100p.pgm?I=FUTM0503):<br />
<em><br />
Torque: 196 oz-in @ 6V<br />
(13.8 kg-cm @ 6V)</em></p>
<p>Communication: Pulse Width Modulation (PWM)<br />
Operation range: 180°<br />
Pulse cycle: 14.25ms<br />
Pulse width: 920-2120us<br />
gibi.<br />
Bizim motorumuzun bu bilgileri verilmemiş ama olsun, bu bilgileri kendimiz buluruz hem de daha öğretici bir çalışma yapmış oluruz. Çalışmamızda mikro olarak 16F628 PIC mikro, dil olarak CCS C dili seçilmiştir.</p>
<p>Bu bilgileri bulma işine girmeden önce servomuza bir hareket verelim, bakalım çalışıyor mu! Servomuza 1ms darbe genişliği uygulayarak konumlandığı açıya bakalım. Besleme gerilimi olarak servonuzun teknik bilgilerine bakabilirsiniz. Bizim servomuz için &#8220;Operating voltage 4.2-6V&#8221; denilmiş. Genel olarak 6V uygulanabilir, ben 5V uyguluyorum. Servomuzun data girişine b0 pinini bağlayacak olursak bunun için bizim yazacağımız temel kod:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      output_high<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">19000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>olacaktır.<br />
Evet ben servoları sürerken timer kullanmıyorum, bu yöntemle yaptığım denemelerden gayet memnunum. Dolayısıyla temel kodumuz bu basitlikte. Şimdi eğer:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">long</span> b0<span style="color: #339933;">=</span><span style="color: #0000dd;">600</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      output_high<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span>b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">20000</span><span style="color: #339933;">-</span>b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>yazarsak servomuzun pozisyonunu b0 değişkeniyle kontrol edebiliriz. Hobi servo sürmek bu kadar basit:)<br />
Şimdi gelin servomuzun hangi darbe aralıklarında çalıştığını öğrenelim. Ben bunu şöyle yaptım: devremde iki adet düğme var, düğmelerden biri b0 değişkenini 50us arttırıyor, diğeri 50us azaltıyor. Düğmelere basarak ilerlerken b0 değişkenini her değişmede bilgisayara gönderiyorum, yani şu anki b0 değerini takip diyorum.<br />
Ne zaman ki servo artık değişime tepki vermiyor(daha fazla dönemiyor) o b0 değeri benim sınır değerim oluyor. Tabi bu teste başlamadan servomuzun ilk konumunun ortada bir yerde olması için b0 ın ilk değerini 1000us civarı seçmeliyiz. Bu işi yapan kod:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">long</span> b0<span style="color: #339933;">=</span><span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>input<span style="color: #009900;">&#40;</span>pin_b3<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//dugmeye basildi</span>
      b0<span style="color: #339933;">+=</span><span style="color: #0000dd;">50</span><span style="color: #339933;">;</span>
      delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      deger<span style="color: #339933;">=</span>b0<span style="color: #339933;">/</span><span style="color: #0000dd;">10</span><span style="color: #339933;">;</span>
      putc<span style="color: #009900;">&#40;</span>deger<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//8 bitlik sayıyı bilgisayara gönder</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>input<span style="color: #009900;">&#40;</span>pin_b4<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//dugmeye basildi</span>
      b0<span style="color: #339933;">-=</span><span style="color: #0000dd;">50</span><span style="color: #339933;">;</span>
      delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      deger<span style="color: #339933;">=</span>b0<span style="color: #339933;">/</span><span style="color: #0000dd;">10</span><span style="color: #339933;">;</span>
      putc<span style="color: #009900;">&#40;</span>deger<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
      output_high<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//surmeye devam</span>
      delay_us<span style="color: #009900;">&#40;</span>b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">20000</span><span style="color: #339933;">-</span>b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #666666; font-style: italic;">//while</span></pre></div></div>

<p>Bilgisayara göndermek şart değil b0 ın ilk değerini programınızda 1000us gibi sabit bir sayıya eşitleyin sonra düğmeye kaç defa bastıysanız o kadar 50 us ekleyerek(veya çıkararak) servonuzun sınır darbe genişliklerini tespit edebilirsiniz. Her düğmeye bastığınızda &#8220;toggle&#8221; eden bir led olursa adım kaçırmazsınız.</p>
<p>Sınır değerleri de bulduysak artık servomuzu istediğimiz açıya getirebiliriz. Peki ne kadar bir hassasiyetle? Devre düzeneğinizi bozmadan düğmelerle değiştirdiğiniz b0 değerini 50 us değil de daha az yapın, bakalım tepki veriyor mu? Bizim servomuz için bu hassasiyet &#8220;Dead band width =10 us&#8221; olarak verilmiş. Bu da yaklaşık 1 dereceye tekabül ediyor.</p>
<p><strong>Peki bu yöntemle aynı anda kaç servoyu sürebiliriz?</strong><br />
Benim şu anda elimde 2 servo var, 2 sini rahatlıkla sürebiliyorum. ISIS simülasyonda 5 servoyu sürüyorum. Yazılan kod yine aynı mantıkta, 3 servo sürmek istersek:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">long</span> s1<span style="color: #339933;">=</span><span style="color: #0000dd;">650</span><span style="color: #339933;">,</span>s2<span style="color: #339933;">=</span><span style="color: #0000dd;">650</span><span style="color: #339933;">,</span>s3<span style="color: #339933;">=</span><span style="color: #0000dd;">650</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      output_high<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span>s1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      output_high<span style="color: #009900;">&#40;</span>pin_b3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span>s2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      output_high<span style="color: #009900;">&#40;</span>pin_b4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span>s3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      delay_us<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">20000</span><span style="color: #339933;">-</span>s1<span style="color: #339933;">-</span>s2<span style="color: #339933;">-</span>s3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #666666; font-style: italic;">//while</span></pre></div></div>

<p><strong>Gelelim bu bilgilerimizi güzel bir uygulamada kullanma kısmına:</strong><br />
Servolarımızı s1, s2, s3 değişkenileriyle kontrol edebileceğimizi gördük, peki bu değişkenleri nasıl değiştireceğiz? İlk uygulamamızdaki gibi düğmelerle mi? Bu değerleri bilgisayarımızdan göndersek nasıl olur?<br />
&#8230;<br />
Bence de güzel olur. Ancak bunun için küçük bir program yazmalıyız ve bir de arayüz hazırlamalıyız. Bence bu iş için en uygun yol visual studio.net ortamında C# kullanmak. Serialport nesnesi, hazır form elemanları ve kontrol kolaylığı tam bize göre. Yani bilgisayar kısmında işimiz kolay. Peki gelen verileri PIC le nasıl alacağız? UART kesmesiyle.<br />
Kodumuz gayet basit:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
      output_high<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span>s1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      output_high<span style="color: #009900;">&#40;</span>pin_b3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span>s2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      output_high<span style="color: #009900;">&#40;</span>pin_b4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      delay_us<span style="color: #009900;">&#40;</span>s3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      output_low<span style="color: #009900;">&#40;</span>pin_b4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      delay_us<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">20000</span><span style="color: #339933;">-</span>s1<span style="color: #339933;">-</span>s2<span style="color: #339933;">-</span>s3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #666666; font-style: italic;">//while</span>
<span style="color: #009900;">&#125;</span><span style="color: #666666; font-style: italic;">//main</span>
&nbsp;
<span style="color: #339933;">#INT_RDA</span>
<span style="color: #993333;">void</span> seri_data_geldi<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
bx<span style="color: #339933;">=</span>getc<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// bx de long türünden</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>bx<span style="color: #339933;">==</span><span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//sira ilk motorun</span>
   sira<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>bx<span style="color: #339933;">==</span><span style="color: #0000dd;">220</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #666666; font-style: italic;">//sira ikinci motorun</span>
   sira<span style="color: #339933;">=</span><span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>bx<span style="color: #339933;">==</span><span style="color: #0000dd;">240</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #666666; font-style: italic;">//sira ucuncu motorun</span>
   sira<span style="color: #339933;">=</span><span style="color: #0000dd;">3</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>bx<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//gelen veri motorlara</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>sira<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   s1<span style="color: #339933;">=</span><span style="color: #0000dd;">10</span><span style="color: #339933;">*</span>bx<span style="color: #339933;">+</span><span style="color: #0000dd;">540</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>sira<span style="color: #339933;">==</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   s2<span style="color: #339933;">=</span><span style="color: #0000dd;">10</span><span style="color: #339933;">*</span>bx<span style="color: #339933;">+</span><span style="color: #0000dd;">540</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>sira<span style="color: #339933;">==</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   s3<span style="color: #339933;">=</span><span style="color: #0000dd;">10</span><span style="color: #339933;">*</span>bx<span style="color: #339933;">+</span><span style="color: #0000dd;">540</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
output_toggle<span style="color: #009900;">&#40;</span>pin_a1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//kesme geldi belirteci</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Peki elimizde servo yoksa bu uygulamayı Proteusta simüle edebilir miyiz? Evet. Bunun için öncelikle &#8220;eltima virtual serial port&#8221; programı gibi bilgisayarımızda virtual serial port oluşturabilecek bir programa ihtiyacımız var. Çünkü &#8220;virtual port&#8221; oluşturamazsak visual studio.net ile açtığımız porta proteus bağlanamayacak, proteusla açtığımız porta vs.net bağlanamayacak. Bahsettiğim virtual serial port programı bilgisayarımızda birbirine bağlanmış sanal port çifti oluşturuyor, örn com1 ve com2 olarak. Proteustan com1 e bağlanıp başka programlardan com2 ye bağlanarak iki program arasında iletişimi sağlayabiliyoruz.</p>
<p>Dikkat etmemiz gereken bir diğer nokta proteusta kullandığımız servonun sağ tık menüsüyle açılan özelliklerinin kendi servomuzla uyuşuyor olmasıdır.</p>
<p>Çalışmamızdan bazı resimler:<br />
<a href="http://www.fatiherdem.net/yuklenenler/resim1.JPG" target="_blank"><img src="http://www.fatiherdem.net/yuklenenler/resim1_k.gif" alt="" /></a></p>
<p><a href="http://www.fatiherdem.net/yuklenenler/vsnetproteus.gif" target="_blank"><img src="http://www.fatiherdem.net/yuklenenler/vsnetproteus_k.gif" alt="" /></a><br />
&#8212;<br />
<strong>EK NOTLAR: </strong><br />
14 Mayıs, 2010<br />
Büyük servo sürerken servo harekete geçerken devrenin kaynağına bir anda yüklendiğinden mikro devresi(bizde PICli devre) reset atabiliyor. Buna karşı alacağımız ilk önlem PIC in besleme uçlarına büyükçe bir kapasite bağlamak. Bu da her zaman çözüm olmayabiliyor, servo sürücü ile PIC kaynağı nın izole edilmesi konusu zamanında denemediğim bir çalışma. Duruma göre farklı önlemler almak gerekebilir.<br />
&#8212;<br />
Çalışmayla ilgili tüm dosyalar:<br />
<a href="http://www.fatiherdem.net/yuklenenler/proteus_kaynakkod_ve_hex.rar">Proteus(7.1 SP4) Simülasyon, servo3.c, servo3.hex</a><br />
<a href="http://www.fatiherdem.net/yuklenenler/servo_ferdem.rar">C# Proje Klasörü</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fatiherdem.net/hobi-servo-surelim/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
