<?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>Ingresso analogico Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/ingresso-analogico/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/ingresso-analogico/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sat, 14 Jan 2017 21:44:17 +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>Ingresso analogico Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/ingresso-analogico/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Flyport Ethernet leggere dai pin analogici</title>
		<link>https://logicaprogrammabile.it/flyport-ethernet-leggere-dai-pin-analogici/</link>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 18 Nov 2013 09:45:15 +0000</pubDate>
				<category><![CDATA[Elettronica]]></category>
		<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>
		<category><![CDATA[Ingresso analogico]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3760</guid>

					<description><![CDATA[<p>Come acquisire un segnale analogico tramite modulo Flyport L&#8217;acquisizione di segnali analogici permette l&#8217;interfacciamento del Flyport Ethernet con svariate tipologie di sensori e trasduttori che forniscono una tensione analogica in funzione della grandezza fisica misurata. Il modulo dispone di 4 ingressi analogici (p18, p20, p23,...</p>
<p>The post <a href="https://logicaprogrammabile.it/flyport-ethernet-leggere-dai-pin-analogici/">Flyport Ethernet leggere dai pin analogici</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Come acquisire un segnale analogico tramite modulo Flyport</h3>
<p>L&#8217;acquisizione di segnali analogici permette l&#8217;interfacciamento del <strong>Flyport Ethernet</strong> con svariate tipologie di sensori e trasduttori che forniscono una tensione analogica in funzione della grandezza fisica misurata.<br /> Il modulo dispone di <strong>4 ingressi analogici (p18, p20, p23, p25)</strong> con una risoluzione di <strong>10bit</strong> (valori restituiti da 0 a 1023) ed una tensione di riferimento molto precisa fissata a 2.048V.<br /> I pin analogici non supportano tensioni superiori a 3.3V quindi dobbiamo stare attenti al valore di tensione che sarà applicato sul pin analogico.</p>
<p>Dato che la tensione di riferimento è di 2.048V, il convertitore analogico digitale fornirà il valore intero zero(0) quando in ingresso sarà presente una tensione di 0V, fornirà invece il valore 1023 quando sul pin analogico sarà presente una tensione pari a 2.048V. Superata questa soglia, fino al valore consentito di 3.3V il convertitore restituirà sempre 1023.</p>
<p><span id="more-3760"></span></p>
<p>La relazione tra valore di conversione e tensione è la seguente</p>
<p style="text-align: center;"><strong>tensione di riferimento / risoluzione =&gt; 2.048/1024 = 0.002V</strong></p>
<p>quindi se il convertitore restituirà il valore di 560, potremmo facilmente constatare che sul pin analogico sarà presente la tensione di 1.12V</p>
<p style="text-align: center;"><strong>valore conversione * valore minimo di conversione =&gt; 560 * 0.002 = 1.12V</strong></p>
<p>Ho realizzato il seguente circuito per provare le istruzioni che acquisiscono il segnale analogico presente sul pin <strong>p18</strong>.</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/09/FlyportAnalogRead1.png"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3824" alt="Analog Read Flyport Ethernet" src="https://logicaprogrammabile.it/wp-content/uploads/2013/09/FlyportAnalogRead1.png" width="414" height="299" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/09/FlyportAnalogRead1.png 414w, https://logicaprogrammabile.it/wp-content/uploads/2013/09/FlyportAnalogRead1-300x216.png 300w" sizes="(max-width: 414px) 100vw, 414px" /></a></p>
<p>il pin p24 è quello che fornisce la 3.3Vdc, il pin p22 è la massa ed il pi p18 è l&#8217;ingresso analogico 4 del modulo <strong>Flyport Ethernet</strong>.<br /> Il potenziometro <strong>PT</strong> è da 5Kohm mentre la resistenza <strong>R</strong> è da 47Ohm e serve per evitare il cortocircuito nel caso in cui ci sia un malfunzionamento della meccanica del potenziometro che porta il collegamento della 3.3Vdc direttamente al gnd.</p>
<p>Le istruzioni per acquisire il segnale analogico sono molto semplici, i commenti nel codice illustrano questo procedimento:</p>
<pre>[c]&lt;br /&gt;#include &quot;taskFlyport.h&quot;&lt;br /&gt;&lt;br /&gt;void FlyportTask()&lt;br /&gt;{&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;  int Valore_ADC = 0;&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;  char Dato_ADC[5];&lt;br /&gt;&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;  while(1)&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;  {&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;    //acquisisco ildato presente sul pin p18&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;    Valore_ADC = ADCVal(4);&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;    //converto il valore intero in un array di char&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;    sprintf(Dato_ADC, &quot;%d\n&quot;, Valore_ADC);&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;    //invio il dato al serial monitor&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;    UARTWrite(1, Dato_ADC);&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;    //attesa di 1 secondo&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;    vTaskDelay(100);&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;  }&lt;br /&gt;}&lt;br /&gt;[/c]</pre>
<p>L&#8217;unica raccomandazione nell&#8217;uso dei pin analogici è quella di non superare mai la tensione massima in ingressi di 3.3Vdc. Nel caso in cui la tensione da acquisire fosse maggiore si potrebbe adottare un semplice partitore di tensione.</p>
<p>The post <a href="https://logicaprogrammabile.it/flyport-ethernet-leggere-dai-pin-analogici/">Flyport Ethernet leggere dai pin analogici</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Usare gli ingressi analogici del Netduino</title>
		<link>https://logicaprogrammabile.it/netduino-usare-ingressi-analogici/</link>
					<comments>https://logicaprogrammabile.it/netduino-usare-ingressi-analogici/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 08 Mar 2011 09:53:22 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[AnalogInput]]></category>
		<category><![CDATA[Fotocellula]]></category>
		<category><![CDATA[Fotoresistenza]]></category>
		<category><![CDATA[Ingresso analogico]]></category>
		<category><![CDATA[SetRange]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=214</guid>

					<description><![CDATA[<p>Come utilizzare le porte analogiche del Netduino Netduino dispone di 6 ingressi per l&#8217;acquisizione di segnali analogici. Questa è una caratteristica importante perché molti sensori sono di tipo analogico, come alcuni che, ad esempio, variano la loro resistenza elettrica in base alla grandezza fisica che...</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-usare-ingressi-analogici/">Usare gli ingressi analogici del Netduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come utilizzare le porte analogiche del Netduino</h1>
<p>Netduino dispone di 6 ingressi per l&#8217;acquisizione di segnali analogici. Questa è una caratteristica importante perché molti sensori sono di tipo analogico, come alcuni che, ad esempio, variano la loro resistenza elettrica in base alla grandezza fisica che misurano.<br />
Uno degli elementi più semplici che possiamo usare per imparare ad usare gli ingressi analogici del Netduino è la fotoresistenza che varia la sua resistenza elettrica in modo proporzionale alla quantità di luce a cui è sottoposta.<br />
Prima di acquisire il segnale dobbiamo sapere che la massima tensione applicabile ai pin analogici è di 3.3Vdc. La risoluzione del Netduino, nel convertire il segnale analogico in digitale, è di 10bit, questo indica che applicando una tensione di 3.3Vdc all&#8217;ingresso analogico, otterremo un valore intero di 1024, applicando una tensione nulla otterremo un valore intero pari a 0, e applicando una tensione di 1.65 Vdc (pari alla metà della massima tensione applicabile) otterremo un valore intero di 512.<br />
Quindi le variazioni di tensione tra 0 e 3.3v restituiranno dei valori compresi tra 0 e 1024.</p>
<p>Passiamo alla pratica e proviamo a collegare una fotoresistenza al Netduino. La sua resistenza varia in modo inversamente proporzionale alla quantità di luce che colpisce il sensore, più intensità luminosa corrisponde ad una minore resistenza e viceversa. Il modello che ho utilizzato io presenta una resistenza di 80-100 ohm quando il sensore è posto alla luce mentre quando è posto al buoi la sua resistenza aumenta sino a 10-15 Mohm.</p>
<p>Il circuito di test è il seguente:</p>
<p style="text-align: center;"><img decoding="async" class="aligncenter wp-image-234 size-full" title="Fotoresistenza e Netduino" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/Fotoresistenza.gif" alt="Netduino e Fotoresistenza" width="285" height="288" /></p>
<p style="text-align: left;">La tensione di 3.3v va ad alimentare il circuito composto dalla fotoresistenza FR e dalla resistenza R da 5.6 KOhm.</p>
<blockquote><p>Nota: <span style="text-decoration: underline;">Per i possessori di Netduino rev A dovete collegare anche la tensione 3.3v al pin <strong>Aref</strong></span></p></blockquote>
<p>Le variazioni di luminosità sul sensore si tradurranno in variazione di resistenza e di conseguenza in variazione di tensione. L&#8217;ingresso A0 è collegato tra la fotoresistenza e la resistenza.<span id="more-214"></span></p>
<p>Il software per iniziare ad acquisire il segnale analogico è molto banale ed è composto da alcune righe di codice:</p>
<pre class="lang:c# decode:true ">AnalogInput FotoCellula = new AnalogInput(Pins.GPIO_PIN_A0);
Int32 Segnale = 0;

while(true)
{
Segnale = FotoCellula.Read();
Debug.Print(Segnale.ToString());
Thread.Sleep(100);
}</pre>
<p>&nbsp;</p>
<blockquote><p>Prima di eseguire il debug(F5) è necessario visualizzare la finestra Output dell&#8217;ambiente di sviluppo Visual C# per vedere i dati inviati dal Netduino tramite l&#8217;istruzione Debug.Print()<br />
La finestra Output è disponibile nel menu Visualizza-&gt;Output di Visual C#</p></blockquote>
<p>Creiamo un oggetto di nome <strong>FotoCellula </strong>dalla classe AnalogInput relativo all&#8217;ingresso A0 del Netduino e una variabile di tipo intero per memorizzare i valori letti dal pin A0.<br />
Nel ciclo infinito l&#8217;oggetto <strong>FotoCellula </strong>espone il metodo <strong>Read()</strong> che permette di acquisire il segnale analogico. Il valore viene memorizzato nella variabile Segnale e inviato al pc tramite l&#8217;istruzione <strong>Debug.Print()</strong>.</p>
<p>Proviamo a coprire la fotoresistenza per verificare che i valori letti nella finestra Output cambiano, in questo caso la resistenza elettrica del sensore aumenta e di conseguenza la tensione sul pin A0 tenderà a zero, l&#8217;acquisizione della tensione, tramite la Read(), produrrà dei valori che tenderanno allo zero; al contrario esponendo il sensore alla luce, la sua resistenza diminuirà e la tensione presente sul pin A0 tenderà a 3.3Vdc, in questo caso la Read() restituirà valori prossimi a 1024.</p>
<p>Se il range 0-1024 è troppo elevato possiamo tramite il metodo <strong>SetRange </strong>dell&#8217;oggetto <strong>FotoCellula </strong>definire un nostro intervallo:</p>
<pre class="lang:c# decode:true ">AnalogInput FotoCellula = new AnalogInput(Pins.GPIO_PIN_A0);
Int32 Segnale = 0;
//Definisco un range personalizzato
FotoCellula.SetRange(100, 500);

while(true)
{
Segnale = FotoCellula.Read();
Debug.Print(Segnale.ToString());
Thread.Sleep(100);
}</pre>
<p>&nbsp;</p>
<p>L&#8217;acquisizione di un segnale analogico, quindi, si riduce alla definizione dell&#8217;ingresso al quale verrà applicato il segnale, all&#8217;eventuale impostazione dell&#8217;intervallo e all&#8217;esecuzione del metodo Read(). L&#8217;unica accortezza è assicurarci che la massima tensione in ingresso non sia superiore ai 3.3Vdc.</p>
<p>Il pin Aref viene utilizzato dal Netduino quando la tensione di riferimento è diversa da 3.3Vdc, nella revisione B del Netduino Aref è impostato automaticamente al valore di 3.3Vdc. Nel caso in cui avessimo un sensore che fornisce un uscita una tensione massima di di 1.65Vdc possiamo intraprendere due strade:<br />
la prima è non utilizzare il pin Aref ed avere l&#8217;acquisizione riferita ai 3.3Vdc, di conseguenza la risoluzione di acquisizione verrà dimezzata (Range da 0Vdc a 1.65Vdc equivale a un intervallo di valori di conversione tra circa 0 e 512) .<br />
La seconda è inviare al pin Aref una tensione di riferimento di 1.65Vdc, in questo modo potremmo utilizzare la massima risoluzione del convertitore analogico digitale a 10 bit. L&#8217;intervallo dei valori si estenderà da 0 a 1024.</p>
<p style="text-align: center;"><img decoding="async" class="aligncenter wp-image-253 size-full" title="Aref" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/Aref.gif" width="349" height="298" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/Aref.gif 349w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/Aref-300x256.gif 300w" sizes="(max-width: 349px) 100vw, 349px" />Lo schema di figura è puramente indicativo.</p>
<p>Per utilizzare il pin Aref dobbiamo eseguire una semplice istruzione per poterlo abilitare:</p>
<pre class="lang:c# decode:true ">// usa il pin esterno Aref
OutputPort arefSelect = new OutputPort((Cpu.Pin)56, false);

// usa il valore di Aref interno (Default)
OutputPort arefSelect = new OutputPort((Cpu.Pin)56, true);

AnalogInput FotoCellula = new AnalogInput(Pins.GPIO_PIN_A0);
Int32 Segnale = 0;

while(true)
{
Segnale = FotoCellula.Read();
Debug.Print(Segnale.ToString());
Thread.Sleep(100);
}</pre>
<p>&nbsp;</p>
<p>Ho modificato il circuito originale con la fotoresistenza in modo da utilizzare il pin Aref per puro scopo illustrativo.<br />
Il circuito è il seguente</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-256 size-full" title="Aref1" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/Aref1.gif" width="357" height="303" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/Aref1.gif 357w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/Aref1-300x254.gif 300w" sizes="auto, (max-width: 357px) 100vw, 357px" /></p>
<p>la tensione di 3.3Vdc viene inviata ad un partitore di tensione composto da due resistenze di 220 ohm. La tensione così dimezzata viene utilizzata per alimentare la fotoresistenza e per inviarla al pin Aref.<br />
Quando la fotoresistenza è esposta alla luce la sua resistenza sarà minima e sul pin A0 avremmo una tensione di circa 1.65Vdc, in questo caso il metodo Read() dell&#8217;oggetto FotoCellula restituirà un valore che tenderà a 1024. Nel caso contrario, quando la fotoresistenza è al buoi, sul pin A0 avremmo una tensione quasi nulla e il metodo Read() dell&#8217;oggetto FotoCellula restituirà un valore che tenderà allo zero.<br />
Il codice relativo a questo esperimento è il seguente, da notare che l&#8217;abilitazione del pin Aref con la prima istruzione:</p>
<pre class="lang:c# decode:true ">// usa il pin esterno Aref
OutputPort arefSelect = new OutputPort((Cpu.Pin)56, false);

AnalogInput FotoCellula = new AnalogInput(Pins.GPIO_PIN_A0);
Int32 Segnale = 0;

while(true)
{
Segnale = FotoCellula.Read();
Debug.Print(Segnale.ToString());
Thread.Sleep(100);
}</pre>
<p>&nbsp;</p>
<p>Ora disabilitiamo l&#8217;uso di Aref con la seguente istruzione</p>
<pre class="lang:c# decode:true ">// usa il valore di Aref interno (Default)
OutputPort arefSelect = new OutputPort((Cpu.Pin)56, true);</pre>
<p>&nbsp;</p>
<p>Eseguendo nuovamente il debug noteremo subito che il massimo valore ottenuto quando la fotoresistenza è totalmente illuminate tenderà a 512, questo perché il valore di tensione è ora riferito a 3.3Vdc e non più a 1.65Vdc.</p>
<p>In conclusione lavorare con i pin analogici risulta molto semplice, tutto si riduce all&#8217;uso del metodo Read(). Saper correttamente acquisire un segnale analogico da la possibilità di interagire con molti sensori di tipo analogico che ancora sono presenti in commercio.</p>
<p>Fatemi sapere se l&#8217;articolo è risultato interessante cliccando sul pulsante mi piace o lasciando un commento!</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-usare-ingressi-analogici/">Usare gli ingressi analogici del Netduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/netduino-usare-ingressi-analogici/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
