<?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>SetDutyCycle Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/setdutycycle/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/setdutycycle/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sat, 14 Jan 2017 21:55:12 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>SetDutyCycle Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/setdutycycle/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PWM gestione col Netduino</title>
		<link>https://logicaprogrammabile.it/netduino-gestione-pwm/</link>
					<comments>https://logicaprogrammabile.it/netduino-gestione-pwm/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Wed, 16 Mar 2011 14:48:26 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Duty Cycle]]></category>
		<category><![CDATA[Netduino]]></category>
		<category><![CDATA[PWM]]></category>
		<category><![CDATA[SetDutyCycle]]></category>
		<category><![CDATA[SetPulse]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=412</guid>

					<description><![CDATA[<p>Come generare un segnale PWM I pin digitali del Netduino, come sapiamo, possono svolgere anche delle funzioni aggiuntive, in particolare i pin 5, 6, 10 ed 11 sono in grado di generare un segnale pwm (Pulse Width Modulation). Utilizzando questa funzione possiamo generare un segnale...</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-gestione-pwm/">PWM gestione col Netduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come generare un segnale PWM</h1>
<p>I pin digitali del Netduino, come sapiamo, possono svolgere anche delle funzioni aggiuntive, in particolare i pin 5, 6, 10 ed 11 sono in grado di generare un segnale pwm (Pulse Width Modulation). Utilizzando questa funzione possiamo generare un segnale con una frequenza minima di 15Hz ed una massima di 500KHz, con un <a title="Capire il duty cycle" href="https://logicaprogrammabile.it/capire-il-duty-cycle/">Duty Cycle</a> variabile da 0 a 100%. Per poter generarlo dobbiamo creare un’istanza di oggetto dalla classe PWM</p>
<p style="text-align: center;"><strong>PWM pwm = new PWM(pin del Netduino);</strong></p>
<p>Il costruttore della classe richiede come parametro il pin del Netduino che vogliamo utilizzare per generare il pwm.<br />
Le funzioni disponibili sono due:</p>
<pre class="lang:c# decode:true ">pwm.SetPulse(frequenza, duty cycle);
pwm.SetDutyCycle(duty cycle);</pre>
<p>&nbsp;</p>
<p><strong>SetPulse </strong>accetta due argomenti, il primo indica il valore della frequenza da generare ed il secondo il valore del duty cycle. Il valori validi da inserire nel parametro della frequenza vanno da 2 a 65535 mentre quelli validi da inserire nel parametro duty cycle vanno da 1 a 65534 ma dipendono dal parametro frequenza.<br />
Il valore 2 corrisponde a una frequenza di 500Khz mentre il valore 65535 corrisponde a un frequenza di 15hz.<br />
Il secondo parametro che definisce il duty cycle dipende strettamente dal valore numerico inserito nel parametro della frequenza. Chiarisco subito con un esempio, se voglio generare un segnale a 100Hz con duty cycle del 30% devo procedere in questo modo:<span id="more-412"></span></p>
<p>Calcolo il valore del parametro <em>frequenza</em> basandomi su questa proporzione</p>
<p style="text-align: center;"><strong>65535 : 2 = 500000 : 15</strong></p>
<p>quindi per calcolare il numero intero che produrrà un segnale pwm con una frequenza di 100Hz devo eseguire questo calcolo</p>
<p style="text-align: center;"><strong>(65535*15) / 100 ~= <span style="color: #800000;">9830</span></strong></p>
<p style="text-align: left;">Il risultato del calcolo va immesso nel campo <em>frequenza</em> della funzione SetPulse. Il valore di duty cycle da inserire nel secondo parametro dipende dal valore della frequenza, e per calcolarlo devo usare questa formula:</p>
<p style="text-align: center;"><strong>(Valore Frequenza / 100) * Valore Duty Cycle</strong></p>
<p style="text-align: left;">che in pratica diviene:</p>
<p style="text-align: center;"><strong>(9830/100)*30 = <span style="color: #800000;">2949</span></strong></p>
<p style="text-align: left;">di conseguenza la funzione SetPulse per generare un segnale a 100Hz con duty cycle al 30% è:</p>
<pre class="lang:c# decode:true ">pwm.SetPulse(9830, 2949); //100Hz 30%</pre>
<p>&nbsp;</p>
<p><strong>SetDutyCycle </strong>genera una frequenza fissa di 10KHz con un duty cycle variabile a seconda del valore inserito nel suo parametro. <strong>SetDutyCycle </strong>accetta valori da 0 a 100 rispettivamente per un duty cycle del 0% e del 100%. Se in questo parametro inseriamo il valore o otterremo un segnale basso all&#8217;uscita del pin del Netduino mentre se specifichiamo 100 otterremo sul pin in questione un valore fisso di 5Vdc, tutti gli altri valori da 1 a 99 produrranno il segnale pwm con duty cycle da 1% a 99%.</p>
<p>Il PWM solitamente è impiegato nel controllo della velocità di rotazione dei motori, la possibilità di variare il duty cycle permette di controllare direttamente la velocità di rotazione del motore, aumentandola o diminuendola in funzione del valore di duty cycle.</p>
<p>Il codice seguente mostra un esempio di utilizzo della funzione pwm del Netduino</p>
<pre class="lang:c# decode:true ">public static void Main()
{
UInt32 DutyCycle = 0;
PWM pw1 = new PWM(Pins.GPIO_PIN_D5); //uscita pwm su pin5

while (true) //ciclo infinito
{
// incrementato per 100 iterazioni la variabile Intensita
// e la passo come parametro alla funzione SetDutyCycle
for (DutyCycle = 1; DutyCycle &lt;= 100; DutyCycle++)
{
pw1.SetDutyCycle(DutyCycle);
Thread.Sleep(25);
}
}
}</pre>
<p>&nbsp;</p>
<p style="text-align: center;">Il diagramma seguente mostra l&#8217;andamento del segnale pwm che progressivamente va da un duty cycle dell&#8217;1% sino al 99%. La frequenza del segnale è sempre di 10KHz <img fetchpriority="high" decoding="async" class="aligncenter wp-image-417 size-full" title="Segnale PWM" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/pwm.gif" alt="Segnale PWM Pulse Width Modulation" width="474" height="511" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/pwm.gif 474w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/pwm-278x300.gif 278w" sizes="(max-width: 474px) 100vw, 474px" /> il circuito elettrico invece è il seguente; <img decoding="async" class="aligncenter wp-image-418 size-full" title="Collegamento Netduino e oscilloscopio" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/TestPwm.gif" alt="Generare segnale PWM Collegamento Netduino e oscilloscopio" width="359" height="278" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/TestPwm.gif 359w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/TestPwm-300x232.gif 300w" sizes="(max-width: 359px) 100vw, 359px" /></p>
<p>Come sempre critiche e suggerimenti sono sempre ben accetti.</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-gestione-pwm/">PWM gestione col Netduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/netduino-gestione-pwm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
