<?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>Servo Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/servo/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/servo/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Mon, 13 Feb 2017 18:49:45 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>Servo Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/servo/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Semplice classe per utilizzare servomeccanismo</title>
		<link>https://logicaprogrammabile.it/servomeccanismo-semplice-classe/</link>
					<comments>https://logicaprogrammabile.it/servomeccanismo-semplice-classe/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Wed, 19 Oct 2011 08:28:54 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Netduino]]></category>
		<category><![CDATA[Servo]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2142</guid>

					<description><![CDATA[<p>Classe C# per l&#8217;utilizzo di servomeccanismo con Netduino Per velocizzare lo sviluppo ho scritto una semplicissima classe per rendere semplice l&#8217;utilizzo di un servomeccanismo. In allegato trovate il codice. I metodi esposti sono PosizioneCentrale() -&#62; sposta l&#8217;asse del servo meccanismo nella posizione centrale utilizzando un...</p>
<p>The post <a href="https://logicaprogrammabile.it/servomeccanismo-semplice-classe/">Semplice classe per utilizzare servomeccanismo</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Classe C# per l&#8217;utilizzo di servomeccanismo con Netduino</h1>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2011/10/servo.jpg"><img fetchpriority="high" decoding="async" class="aligncenter size-medium wp-image-4815" src="https://logicaprogrammabile.it/wp-content/uploads/2011/10/servo-300x225.jpg" alt="servo servomeccanismo" width="300" height="225" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/10/servo-300x225.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2011/10/servo.jpg 500w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Per velocizzare lo sviluppo ho scritto una semplicissima classe per rendere semplice l&#8217;utilizzo di un <a href="https://it.wikipedia.org/wiki/Servomeccanismo" target="_blank">servomeccanismo</a>. In allegato trovate il codice.</p>
<p>I metodi esposti sono</p>
<ul>
<li><strong>PosizioneCentrale()</strong> -&gt; sposta l&#8217;asse del servo meccanismo nella posizione centrale utilizzando un impulso di 1.5ms modificabile tramite la costante POS_CENTRALE</li>
<li><strong>PosizionePiuNovanta()</strong> -&gt; sposta l&#8217;asse del servo meccanismo tutto a destra</li>
<li><strong>PosizioneMenoNovanta()</strong> -&gt; sposta l&#8217;asse del servo meccanismo tutto a sinistra</li>
<li><strong>Posizione(Gradi)</strong> -&gt; Sposta l&#8217;asse del servo meccanismo ad un valore in gradi compreso tra 0° e 180°</li>
<li><strong>Sweep(Cicli)</strong> -&gt; Sposta continuamente, per il numero di cicli specificati, l&#8217;asse del servo meccanismo da 0° a 180° e viceversa</li>
</ul>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2011/10/Servo.zip">Scarica Servo.cs (3KB)</a></p>
<p>The post <a href="https://logicaprogrammabile.it/servomeccanismo-semplice-classe/">Semplice classe per utilizzare servomeccanismo</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/servomeccanismo-semplice-classe/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Servo SG-5010 come controllarlo con Netduino tramite segnale PWM</title>
		<link>https://logicaprogrammabile.it/netduino-controllare-servo-sg5010/</link>
					<comments>https://logicaprogrammabile.it/netduino-controllare-servo-sg5010/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 18 Oct 2011 08:08:59 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Duty Cycle]]></category>
		<category><![CDATA[Netduino]]></category>
		<category><![CDATA[PWM]]></category>
		<category><![CDATA[Servo]]></category>
		<category><![CDATA[SG-5010]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2095</guid>

					<description><![CDATA[<p>Utilizzare la classe PWM per controllare un servo 0-180 gradi Il servo meccanismo è un dispositivo capace di eseguire dei movimenti meccanici in funzione del segnale applicato al suo ingresso. Viene utilizzato spesso per eseguire lavori continui, ovvero per controllare meccanismi che non possono essere...</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-controllare-servo-sg5010/">Servo SG-5010 come controllarlo con Netduino tramite segnale PWM</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Utilizzare la classe PWM per controllare un servo 0-180 gradi</h1>
<p>Il servo meccanismo è un dispositivo capace di eseguire dei movimenti meccanici in funzione del segnale applicato al suo ingresso. Viene utilizzato spesso per eseguire lavori continui, ovvero per controllare meccanismi che non possono essere azionati continuamente da personale umano.  In campo hobbystico viene impegnato per azionamenti a distanza tipici del radio modellismo.</p>
<p style="text-align: center;"><img decoding="async" class="size-full wp-image-2100 aligncenter" title="Servo_SG_5010" src="https://logicaprogrammabile.it/wp-content/uploads/2011/10/Servo_SG_5010.jpg" alt="Servo meccanismo TowerPro sg-5010" width="396" height="292" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/10/Servo_SG_5010.jpg 396w, https://logicaprogrammabile.it/wp-content/uploads/2011/10/Servo_SG_5010-300x221.jpg 300w" sizes="(max-width: 396px) 100vw, 396px" /></p>
<p><span id="more-2095"></span>Le caratteristiche comuni tra i servo sono principalmente, l&#8217;angolo di rotazione, la velocità di rotazione e la <a href="http://it.wikipedia.org/wiki/Coppia_motrice" target="_blank">coppia motrice</a>.<br />
Il modello <strong>SG-5010</strong> che ho acquistato viene prodotto dalla <a href="http://www.towerpro.com.tw/" target="_blank">TowerPro</a> e le sue caratteristiche tecniche sono elencate nella tabella seguente:</p>
<div align="center">
<table style="width: 383px;" align="center">
<tbody align="center">
<tr>
<td><strong>Segnale di pilotaggio</strong></td>
<td style="text-align: left;">PWM</td>
</tr>
<tr>
<td><strong>Tensione Alimentazione</strong></td>
<td style="text-align: left;">da 4.8Vdc a 6.0 Vdc</td>
</tr>
<tr>
<td><strong>Velocità</strong></td>
<td style="text-align: left;">a 4.8Vdc 0.2  S/60°<br />
a 6.0Vdc 0.16 S/60°</td>
</tr>
<tr>
<td><strong>Coppia</strong></td>
<td style="text-align: left;">a 4.8Vdc 5.5 Kg/cm<br />
a 6.0Vdc 6.5 Kg/cm</td>
</tr>
<tr>
<td><strong>Intervallo di rotazione</strong></td>
<td style="text-align: left;">0 &#8211; 180 gradi</td>
</tr>
<tr>
<td><strong>Peso</strong></td>
<td style="text-align: left;">38g</td>
</tr>
<tr>
<td><strong>Dimensioni</strong></td>
<td style="text-align: left;">40x20x40 mm</td>
</tr>
<tr>
<td><strong>Costo</strong></td>
<td style="text-align: left;">Circa 10 €</td>
</tr>
</tbody>
</table>
</div>
<p>Il suo funzionamento è veramente elementare, tutto si riduce nell&#8217;utilizzo del segnale <a href="http://it.wikipedia.org/wiki/Pulse-width_modulation" target="_blank"><strong>PWM</strong></a> variando il valore di <a title="PWM gestione col Netduino" href="https://logicaprogrammabile.it/netduino-gestione-pwm/">duty cycle</a> tra 1% e 50% .<br />
Per convenienza possiamo alimentare il servo tramite il pin 5Vdc del Netduino, anche se per applicazioni operative consiglio vivamente di alimentare il servo con una tensione esterna, evitando in questo modo di sovraccaricare il Netduino rendendolo instabile.<br />
Il TowerPro Sg-5010 dispone di tre fili con colori che possono essere ambigui infatti il filo marrone deve essere collegato a massa, il filo rosso deve essere collegato alla +5Vdc e il filo arancione va collegato ad un pin PWM del Netduino (Pin 5-6-9-10).</p>
<p>In via generale il segnale PWM tipico deve avere una frequenza di 50Hz (Periodo di 20mS), mentre l&#8217;impulso positivo del segnale deve avere una larghezza compresa tra 1ms e 2ms, infatti per portare l&#8217;asse del servo nella posizione centrale la larghezza dovrà essere di 1.5ms (zero gradi) per portare l&#8217;asse a +90° l&#8217;impulso deve essere largo 2ms mentre per portare l&#8217;asse a -90° l&#8217;impulso dovrà essere largo 1ms.</p>
<p>L&#8217;illustrazione seguente aiuta a capire meglio il funzionamento</p>
<p style="text-align: center;"><img decoding="async" class="aligncenter size-full wp-image-2132" title="ServoDutyCycle" src="https://logicaprogrammabile.it/wp-content/uploads/2011/10/ServoDutyCycle1.gif" alt="Impostazione periodo pwm servo meccanismo" width="564" height="449" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/10/ServoDutyCycle1.gif 564w, https://logicaprogrammabile.it/wp-content/uploads/2011/10/ServoDutyCycle1-300x238.gif 300w" sizes="(max-width: 564px) 100vw, 564px" /></p>
<p>Il codice che andremmo a scrivere dovrà generare un segnale pwm con una frequenza di 50Hz e con un impulso la cui larghezza dovrà variare da 1ms sino a 2ms, questo è possibile utilizzando la classe PWM e il metodo SetPulse(), per maggiori informazioni riguardo questa classe vi consiglio di leggere <a title="PWM gestione col Netduino" href="https://logicaprogrammabile.it/netduino-gestione-pwm/">questo articolo</a></p>
<pre class="lang:c# decode:true ">// Istanzio un oggetto pwm
// Setto il pin 9 come uscita pwm
PWM servo = new PWM(Pins.GPIO_PIN_D9);

while (true)
{
  //imposto una frequenza di circa 50Hz
  //con un impulso di 1.5ms
  //l'asse del servo viene posizionato a 0°
  servo.SetPulse(20000, 1500);
  //attendo 2 secondi
  Thread.Sleep(2000);

  //imposto la frequenza sempre a 50Hz
  //con un impulso di 1ms
  //l'asse del servo si posiziona a -90°
  servo.SetPulse(20000, 1000);
  Thread.Sleep(2000);

  //imposto la frequenza sempre a 50Hz
  //con un impulso di 2ms
  //l'asse del servo si posiziona a +90°
  servo.SetPulse(20000, 2000);
  Thread.Sleep(2000);
}</pre>
<p>&nbsp;</p>
<p>Il codice esegue continuamente, ogni due secondi, la rotazione dell&#8217;asse del servo. Sicuramente i valori di larghezza generati non portano alla rotazione completa dell&#8217;asse del servo, questo perché anche se si ha una certa standardizzazione ci possono essere delle differenze tra i vari modelli.</p>
<p>Quindi sarà necessaria una calibrazione per capire quali sono i valori limite che portano alla rotazione di 180° dell&#8217;asse. Eseguendo il codice precedente potremo vedere se l&#8217;asse compie una manovra di 180° se per esempio non raggiunge i limiti di -90° e +90° possiamo aumentare e diminuire della stessa quantità la larghezza degli impulsi relativa a questi limiti ad esempio portando il valore di 1000 (1ms) a 800 (0.8ms) e il valore di 2000 (2ms) a 2200 (2.2ms).</p>
<p>Tabella riepilogativa</p>
<div align="center">
<table>
<tbody>
<tr>
<td>Gradi Asse Servo</td>
<td>Larghezza impulso</td>
<td>Valore duration da passare alla SetPulse()</td>
</tr>
<tr>
<td style="text-align: center;">0 Gradi</td>
<td style="text-align: center;">1.5ms</td>
<td style="text-align: center;">1500</td>
</tr>
<tr>
<td style="text-align: center;">-90 Gradi</td>
<td style="text-align: center;">1ms</td>
<td style="text-align: center;">1000</td>
</tr>
<tr>
<td style="text-align: center;">+90 Gradi</td>
<td style="text-align: center;">2ms</td>
<td style="text-align: center;">2000</td>
</tr>
</tbody>
</table>
</div>
<p>Col servo in mio possesso ho dovuto cambiare i valori della larghezza dell&#8217;impulso in questo modo</p>
<div align="center">
<table>
<tbody>
<tr>
<td style="text-align: center;" colspan="3">Valori per il mio servo</td>
</tr>
<tr>
<td>Gradi Asse Servo</td>
<td>Larghezza impulso</td>
<td>Valore duration da passare alla SetPulse()</td>
</tr>
<tr>
<td style="text-align: center;">0 Gradi</td>
<td style="text-align: center;">1.5ms</td>
<td style="text-align: center;">1500</td>
</tr>
<tr>
<td style="text-align: center;">-90 Gradi</td>
<td style="text-align: center;">0.6ms</td>
<td style="text-align: center;">600</td>
</tr>
<tr>
<td style="text-align: center;">+90 Gradi</td>
<td style="text-align: center;">2.4ms</td>
<td style="text-align: center;">2400</td>
</tr>
</tbody>
</table>
</div>
<p>In questo modo abbiamo capito quali sono i valori limite per il nostro servo, questo è fondamentale per impostare la larghezza dell&#8217;impulso per spostare l&#8217;asse anche nei valori intermedi.</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-controllare-servo-sg5010/">Servo SG-5010 come controllarlo con Netduino tramite segnale PWM</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/netduino-controllare-servo-sg5010/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
