<?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>Motore DC Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/motore-dc/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/motore-dc/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 03 Jun 2018 13:45:09 +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>Motore DC Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/motore-dc/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>L298N pilotare motore passo passo bipolare</title>
		<link>https://logicaprogrammabile.it/pilotare-motore-passo-passo-bipolare-driver-l298n/</link>
					<comments>https://logicaprogrammabile.it/pilotare-motore-passo-passo-bipolare-driver-l298n/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 28 May 2013 09:32:02 +0000</pubDate>
				<category><![CDATA[Elettronica]]></category>
		<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Motore DC]]></category>
		<category><![CDATA[Stepper]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3634</guid>

					<description><![CDATA[<p>Come pilotare un motore passo passo usando l&#8217;integrato L298N Quando osservo i robot industriali assemblare, saldare, fresare o posizionare oggetti con una precisione sconcertante rimango affascinato dalla capacità umana di poter costruire queste macchine. Anche nelle nostre abitazioni sono presenti oggetti dotati di parti meccaniche,...</p>
<p>The post <a href="https://logicaprogrammabile.it/pilotare-motore-passo-passo-bipolare-driver-l298n/">L298N pilotare motore passo passo bipolare</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come pilotare un motore passo passo usando l&#8217;integrato L298N</h1>
<p>Quando osservo i robot industriali assemblare, saldare, fresare o posizionare oggetti con una precisione sconcertante rimango affascinato dalla capacità umana di poter costruire queste macchine.<br />
Anche nelle nostre abitazioni sono presenti oggetti dotati di parti meccaniche, che compiono movimenti molto precisi, come ad esempio le stampanti, i plotter e gli scanner.<br />
Questi dispositivi hanno in comune tra loro un particolare dispositivo chiamato motore passo passo (<strong>stepper motor</strong>).<br />
E&#8217; un <strong>trasduttore elettromeccanico</strong> che converte degli impulsi elettrici in un movimento fisico. Ad ogni <strong>impulso elettrico</strong> corrisponde un <strong>movimento del rotore</strong>; questo spostamento viene chiamato <strong>step</strong>.<br />
A differenza del motore in corrente continua i motori passo passo possono mantenere la propria velocità di <strong>rotazione costante</strong>, anche con carico applicato, senza usare sistemi di controreazione (tachimetriche o encoder).<br />
Il motore eroga una <strong>coppia elevata</strong>, anche con bassi numeri di giri, possiede <strong>accelerazioni e frenate repentine</strong> ed è capace di mantenere il carico applicato fermo in posizione, senza vibrazioni.</p>
<p>Naturalmente esistono anche degli <strong>svantaggi</strong>, tra cui la necessità di utilizzare un <strong>circuito elettrico di pilotaggio</strong>, un <strong>rendimento energetico basso</strong>, una <strong>velocità di rotazione ridotta</strong> ed un <strong>costo di acquisto elevato</strong>.</p>
<p><span id="more-3634"></span></p>
<p>La figura seguente mostra, in maniera semplificata, il principio di costruzione di un motore passo passo.</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/05/Motore_PassoPasso.png"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3640" src="https://logicaprogrammabile.it/wp-content/uploads/2013/05/Motore_PassoPasso.png" alt="Motore Passo Passo" width="484" height="373" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/05/Motore_PassoPasso.png 484w, https://logicaprogrammabile.it/wp-content/uploads/2013/05/Motore_PassoPasso-300x231.png 300w" sizes="(max-width: 484px) 100vw, 484px" /></a></p>
<p>Il movimento del rotore avviene alimentando le bobine in modo consecutivo. Eccitando solo la<strong> bobina A1</strong> il rotore si posiziona verso <strong>NORD</strong>, eccitando solo la<strong> bobina B1</strong> il rotore si posiziona in direzione <strong>EST</strong>, eccitando solo la<strong> bobina A2</strong> il rotore si posiziona in direzione <strong>SUD</strong> ed infine eccitando solo la <strong>bobina B2</strong> il rotore si posiziona in direzione <strong>OVEST</strong>.<br />
La tabella seguente riassumere la sequenza.</p>
<div align="center">
<table>
<tbody>
<tr>
<td style="text-align: center;" colspan="5"><span style="font-size: large;">Fasi di Alimentazione</span></td>
</tr>
<tr>
<td style="text-align: center;"></td>
<td style="text-align: center;"><span style="font-size: large;">A1</span></td>
<td style="text-align: center;"><span style="font-size: large;">A2</span></td>
<td style="text-align: center;"><span style="font-size: large;">B1 </span></td>
<td style="text-align: center;"><span style="font-size: large;">B2 </span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: large;">Fase 1</span></td>
<td style="text-align: center;" bgcolor="#FF0000"><span style="font-size: large;">+</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: large;">Fase 2</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center;" bgcolor="#FF0000"><span style="font-size: large;">+</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: large;">Fase 3</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center;" bgcolor="#FF0000"><span style="font-size: large;">+</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: large;">Fase 4</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center; background-color: #04c4fa;"><span style="font-size: large;">&#8211;</span></td>
<td style="text-align: center;" bgcolor="#FF0000"><span style="font-size: large;">+</span></td>
</tr>
</tbody>
</table>
</div>
<p>Seguendo le <strong>fasi di alimentazioni A1-B1-A2-B2</strong> il rotore si sposterà in senso <strong>orario</strong>, invertendo la sequenza <strong>B2-A2-B1-A1</strong> il rotore si sposterà in senso <strong>antiorario</strong>. E&#8217; importante alimentare le bobine in modo sequenziale perché il rotore deve seguire in maniera lineare il campo elettromagnetico generato dalle bobine.</p>
<p>Naturalmente nei <strong>motori passo passo</strong> reali la sequenza delle 4 fasi fa girare l&#8217;albero di un solo passo (step). Il numero dei passi è una caratteristica costruttiva del motore, solitamente ha un valore di <strong>200 step/giro</strong>, ma ne esistono anche da <strong>20, 24, 48 e 400 step/giro</strong>. Il numero di step può essere espresso in gradi sessagesimali, ad esempio un motore da 7.5° equivale ad uno con 48 step/giro (360°/7.5°=48).<br />
Le 4 fasi di alimentazione delle bobine (considerando un ipotetico motore da <strong>1 step/giro</strong>), viene rappresentata dalla figura seguente:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/05/FasiAlimentazione.png"><img decoding="async" class="aligncenter size-full wp-image-3652" src="https://logicaprogrammabile.it/wp-content/uploads/2013/05/FasiAlimentazione.png" alt="Fasi di alimentazione motore passo passo" width="710" height="231" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/05/FasiAlimentazione.png 710w, https://logicaprogrammabile.it/wp-content/uploads/2013/05/FasiAlimentazione-300x97.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></a></p>
<p>La sequenza di alimentazione è solitamente gestita da un integrato a logica programmabile mentre il compito di fornire l&#8217;energia è demandato ad un <strong>ponte ad H</strong>. Abbiamo affrontato l&#8217;utilizzo del ponte H in questo <a href="https://logicaprogrammabile.it/pilotare-motore-dc-tramite-ponte-h/">precedente articolo</a>. Per essere più precisi, avendo 4 fili, dobbiamo usare <strong>due ponti H</strong> uno che alimenta le <strong>bobine A1 e A2</strong> e l&#8217;altro che alimenta le <strong>bobine B1 e B2</strong>.</p>
<p>In questo tutorial ho usato come microcontrollore la <strong>Arduino Leonardo</strong> e come doppio ponte H il driver L298N prodotto da <a href="http://www.st.com/web/catalog/sense_power/FM142/CL851/SC1790/SS1555/PF63147" target="_blank">ST Microelectronics</a>. Il motore è un 48 passi/giro operante a 12Vdc, smontato da una vecchia stampante non più funzionante.</p>
<h4>Collegamento dei componenti</h4>
<p>Il <strong>circuito elettrico</strong> che permette di pilotare il motore è rappresentato nella figura seguente:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-5496" src="https://logicaprogrammabile.it/wp-content/uploads/2013/05/Schema_Motore_l298.png" alt="Motore passo passo l298" width="599" height="406" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/05/Schema_Motore_l298.png 599w, https://logicaprogrammabile.it/wp-content/uploads/2013/05/Schema_Motore_l298-300x203.png 300w" sizes="(max-width: 599px) 100vw, 599px" /></p>
<p>riassumo i collegamenti tramite la tabella seguente</p>
<table style="width: 57px; height: 23px;">
<tbody>
<tr>
<td style="text-align: center;" nowrap="nowrap"><span style="font-size: small;"><strong>Motore Passo Passo</strong></span></td>
<td style="text-align: center;" nowrap="nowrap"><span style="font-size: small;"><strong>Integrato L298N</strong></span></td>
<td style="text-align: center;" nowrap="nowrap"><span style="font-size: small;"><strong>Arduino Leonardo</strong></span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
<td style="text-align: center;"><span style="font-size: small;">1-8-15</span></td>
<td style="text-align: center;"><span style="font-size: small;">GND</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
<td style="text-align: center;"><span style="font-size: small;">6-9-11</span></td>
<td style="text-align: center;"><span style="font-size: small;">VCC 5Vdc</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
<td style="text-align: center;"><span style="font-size: small;">5</span></td>
<td style="text-align: center;"><span style="font-size: small;">5<br />
</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
<td style="text-align: center;"><span style="font-size: small;">7</span></td>
<td style="text-align: center;"><span style="font-size: small;">4<br />
</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
<td style="text-align: center;"><span style="font-size: small;">10</span></td>
<td style="text-align: center;"><span style="font-size: small;">3<br />
</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
<td style="text-align: center;"><span style="font-size: small;">12</span></td>
<td style="text-align: center;"><span style="font-size: small;">2<br />
</span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> A1</span></td>
<td style="text-align: center;"><span style="font-size: small;">14</span></td>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> A2</span></td>
<td style="text-align: center;"><span style="font-size: small;">13</span></td>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> B1</span></td>
<td style="text-align: center;"><span style="font-size: small;">3</span></td>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;"> B2</span></td>
<td style="text-align: center;"><span style="font-size: small;">2</span></td>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
</tr>
<tr>
<td style="text-align: center;"><span style="font-size: small;">Alimentazione Motore 12Vdc</span></td>
<td style="text-align: center;"><span style="font-size: small;">4</span></td>
<td style="text-align: center;"><span style="font-size: small;"> </span></td>
</tr>
</tbody>
</table>
<p>i <strong>diodi in contro fase</strong> servono per <strong>proteggere</strong> le uscite dell&#8217;integrato <strong>L298N</strong> da eventuali <strong>sovratensioni</strong> generate durante l&#8217;alimentazione delle bobine.</p>
<p>Il codice necessario per pilotare il motore rispecchia quanto detto precedentemente. In pratica è necessario alimentare in modo consecutivo le bobine rispettando le quatto fasi.</p>
<pre class="">void setup()
{
  //i pin 2-3-4-5 sono
  //configurati come uscite
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);

  //forzo le uscite a livello logico basso
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
}

void loop()
{
  //FASE 1
  //Alimento solo la prima bobina
  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  delay(10);

  //FASE 2
  //Alimento solo la seconda bobina
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  delay(10);

  //FASE 3
  //Alimento solo la terza bobina
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
  delay(10);

  //fase 4
  //Alimento solo la quarta bobina
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  delay(10);

}
</pre>
<p>Una volta caricato lo sketch, l&#8217;albero del motore inizierà a girare in senso orario. Per invertire la rotazione è sufficiente alimentare le bobine dalla fase 4 alla fase 1.</p>
<p>Cambiando il valore del<strong> delay()</strong> otterremmo una variazione di <strong>velocità nella rotazione</strong> del rotore.</p>
<p>Se avete delle stampanti vecchie potete subito passare alla pratica realizzando piccoli meccanismi e semplici robot. Volendo si possono collegare alla Leonardo 2 driver <strong>L298N</strong> per pilotare altrettanti motori passo passo, questo vi permette di poter controllare i due motori simultaneamente creando sistemi meccanici più complessi.</p>
<p>The post <a href="https://logicaprogrammabile.it/pilotare-motore-passo-passo-bipolare-driver-l298n/">L298N pilotare motore passo passo bipolare</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/pilotare-motore-passo-passo-bipolare-driver-l298n/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Pilotare un motore DC tramite ponte ad H</title>
		<link>https://logicaprogrammabile.it/pilotare-motore-dc-tramite-ponte-h/</link>
					<comments>https://logicaprogrammabile.it/pilotare-motore-dc-tramite-ponte-h/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 20 Feb 2012 16:06:00 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[H bridge]]></category>
		<category><![CDATA[Motore DC]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2532</guid>

					<description><![CDATA[<p>Come usare Arduino per gestire la rotazione di un piccolo motore DC Uno dei primi circuiti elettronici che realizzai fu un semplice driver che pilotava un piccolo motore DC, potevo gestire la rotazione a destra o a sinistra e anche la velocità di rotazione, usando...</p>
<p>The post <a href="https://logicaprogrammabile.it/pilotare-motore-dc-tramite-ponte-h/">Pilotare un motore DC tramite ponte ad H</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come usare Arduino per gestire la rotazione di un piccolo motore DC</h1>
<p>Uno dei primi circuiti elettronici che realizzai fu un semplice driver che pilotava un piccolo motore DC, potevo gestire la rotazione a destra o a sinistra e anche la velocità di rotazione, usando un segnale <a href="http://it.wikipedia.org/wiki/PWM" target="_blank" rel="noopener noreferrer">PWM</a> generato dal <a href="http://it.wikipedia.org/wiki/NE555" target="_blank" rel="noopener noreferrer">mitico NE555</a>.<br />
A distanza di qualche anno ho deciso di riprendere il progetto iniziale utilizzando <strong>Arduino</strong> che permette in modo veloce, con un controllo completo, di ripercorrere quell&#8217;esperienza.</p>
<p>Come sapiamo bene le uscite di <strong>Arduino</strong> non possono fornire una corrente sufficiente da permettere la rotazione del motore, quindi è importante usare dei transistor (o dei circuiti integrati appositi, <a href="http://www.sparkfun.com/products/9479" target="_blank" rel="noopener noreferrer">vedi L298</a>) per fornire la corrente necessaria all&#8217;alimentazione del motore. Il circuito da realizzare deve anche permettere la rotazione del rotore sia in un senso che nell&#8217;altro. La soluzione più veloce è realizzare <a href="http://en.wikipedia.org/wiki/H_bridge" target="_blank" rel="noopener noreferrer">un ponte ad H</a> che sfrutta 4 transistors, due del tipo NPN e due del tipo PNP collegati come nella figura seguente:.</p>
<p><span id="more-2532"></span></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-5503 size-full" title="Ponte ad H" src="https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH.png" alt="Ponte H motore dc" width="441" height="347" srcset="https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH.png 441w, https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH-300x236.png 300w" sizes="auto, (max-width: 441px) 100vw, 441px" /></p>
<p>Il segnale di ingresso viene applicato al <strong>pinA</strong> e al <strong>pinB</strong> del ponte H. Quando A è alto e B è basso vanno in conduzione i transistor <strong>T4</strong> e <strong>T2</strong> provocando la rotazione a sinistra del motore:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-5506 size-full" title="PonteH_SX" src="https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH_SX.png" alt="Rotazione a sinistra del rotore" width="486" height="349" srcset="https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH_SX.png 486w, https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH_SX-300x215.png 300w" sizes="auto, (max-width: 486px) 100vw, 486px" /></p>
<p>quando sul <strong>pinA</strong> il segnale è basso e sul <strong>pinB</strong> il segnale è alto i transistor che vanno in conduzione sono il <strong>T1</strong> e il <strong>T3</strong>, provocando la rotazione a destra del motore:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-5508 size-full" title="PonteH_DX" src="https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH_DX.png" alt="Rotazione a destra del rotore" width="487" height="329" srcset="https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH_DX.png 487w, https://logicaprogrammabile.it/wp-content/uploads/2012/02/PonteH_DX-300x203.png 300w" sizes="auto, (max-width: 487px) 100vw, 487px" /></p>
<p>I transistors che ho usato in questo schema riescono a &#8220;sopportare&#8221;, se correttamente raffreddati, circa 8A ed una tensione di lavoro massima di 45 Vdc.</p>
<p>Testiamo il circuito usando la nostra board <strong>Arduino</strong>, collegando il <strong>pinA</strong> al pin digitale 5 e il <strong>pinB</strong> al pin digitale 6, in modo da utilizzare anche il segnale <strong>PWM</strong> disponibile su questi pin.<br />
Il codice di esempio seguente e si avvale del <span style="text-decoration: underline;">serial monitor</span> per decidere se far girare il motore a destra o a sinistra. Utilizziamo i pin5 e pin6 perché possono anche generare un segnale pwm, che utilizzerò successivamente per variare la velocità di rotazione.</p>
<pre class="lang:arduino decode:true ">//codice di esempio
void setup()
{
//pin5 e pin6 in uscita
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
//pin5 e pin6 bassi
digitalWrite(5, LOW);
digitalWrite(6, LOW);
//Serial monitor init
Serial.begin(9600);
}
void loop()
{
//attendi un comando dalla serial
if( Serial.available())
{
byte DataRX = Serial.read();
//carattere 1 avvia il motore a SX
if(DataRX == 49)
{
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
}
//carattere 2 avvia il motore a DX
if(DataRX == 50)
{
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
}
//Carattere 0 ferma il motore
if(DataRX == 48)
{
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
}
}</pre>
<p>&nbsp;</p>
<p>Il codice precedente permette di avviare il motore e di cambiarne il verso di rotazione in base al carattere che spediamo tramite il serial monitor.</p>
<p>Dato che i pin 5 e 6 di Arduino possono generare un segnale PWM, modifichiamo il codice come di seguito:</p>
<pre class="lang:arduino decode:true ">byte Velocita = 125;
byte DataRX = -1;
void setup()
{
//pin5 e pin6 in uscita
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
//pin5 e pin6 bassi
digitalWrite(5, LOW);
digitalWrite(6, LOW);
//Serial monitor init
Serial.begin(9600);
}
void loop()
{
//attendi un comando dalla serial
if( Serial.available())
{
DataRX = Serial.read();
Serial.println(Velocita);
//incrementa la velocita inviando il numero 5
if(DataRX == 53)
{
Velocita += 10;
if (Velocita &gt;= 255)
Velocita = 255;
}
//decrementa la velocita inviando il numero 6
if(DataRX == 54)
{
Velocita -= 10;
if (Velocita &lt;= 0)
Velocita = 0;
}
//carattere 1 avvia il motore a SX
if(DataRX == 49)
{
analogWrite(5, Velocita);
digitalWrite(6, LOW);
}
//carattere 2 avvia il motore a DX
if(DataRX == 50)
{
digitalWrite(5, LOW);
analogWrite(6, Velocita);
}
//Carattere 0 ferma il motore
if(DataRX == 48)
{
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
}
}</pre>
<p>Questo esempio permette di variare la velocità spedendo, tramite il serial monitor, il numero 5 (codice ASCII 53) per incrementare la velocità e il numero 6 (codice ASCII 54) per decrementarla. Dopo aver cambiato il valore della variabile Velocita, bisogna rispedire il carattere 1 o il carattere 2 per confermare il nuovo valore di pwm.</p>
<p>Naturalmente esistono dei circuiti integrati che svolgono egregiamente il pilotaggio di motori unipolari e bipolari, uno dei più utilizzati in campo hobbistico è  il driver L298 . Vedremo nei prossimi tutorial come utilizzarlo con un motore bipolare.</p>
<p>The post <a href="https://logicaprogrammabile.it/pilotare-motore-dc-tramite-ponte-h/">Pilotare un motore DC tramite ponte ad H</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/pilotare-motore-dc-tramite-ponte-h/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
