<?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>Sensore Temperatura Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/sensore-temperatura/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/sensore-temperatura/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Thu, 25 Apr 2024 09:20:35 +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>Sensore Temperatura Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/sensore-temperatura/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Caricare un programma MicroPython sulla Pi Pico</title>
		<link>https://logicaprogrammabile.it/caricare-programma-micropython-raspberry-pico/</link>
					<comments>https://logicaprogrammabile.it/caricare-programma-micropython-raspberry-pico/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 08 Feb 2021 07:00:42 +0000</pubDate>
				<category><![CDATA[Tutorial Python]]></category>
		<category><![CDATA[Tutorial Raspberry PI]]></category>
		<category><![CDATA[Pi Pico]]></category>
		<category><![CDATA[raspberry]]></category>
		<category><![CDATA[Sensore Temperatura]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=6563</guid>

					<description><![CDATA[<p>Come programmare la Pi Pico con MicroPython Nello scorso articolo abbiamo visto come configurare la Raspberry Pi Pico per poter essere programmata utilizzando il linguaggio MicroPython. In particolare abbiamo installato e configurato Thonny e caricato l&#8217;interprete MicroPython sulla scheda Pico. In questo articolo vediamo come...</p>
<p>The post <a href="https://logicaprogrammabile.it/caricare-programma-micropython-raspberry-pico/">Caricare un programma MicroPython sulla Pi Pico</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come programmare la Pi Pico con MicroPython</h1>
<p>Nello <a href="https://logicaprogrammabile.it/programmare-configurare-raspberry-pi-pico-micropython/">scorso articolo abbiamo visto</a> come configurare la Raspberry Pi Pico per poter essere programmata utilizzando il linguaggio <strong>MicroPython</strong>. In particolare abbiamo installato e configurato <strong>Thonny</strong> e caricato l&#8217;interprete <strong>MicroPython</strong> sulla scheda <strong>Pico</strong>.</p>
<p>In questo articolo vediamo come scrivere il nostro primo programma <strong>MicroPython</strong> e come caricarlo sulla Pico.</p>
<p>Colleghiamo la Pi Pico alla porta usb del computer e lanciamo l&#8217;ide <strong>Thonny</strong>. Dopo qualche istante sulla finestra shell dovremmo vedere la finestra interattiva di <strong>Python (REPL)</strong>:</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-6566" src="https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl.jpg" alt="" width="650" height="569" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl.jpg 650w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl-300x263.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl-150x131.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl-585x512.jpg 585w" sizes="(max-width: 650px) 100vw, 650px" /></p>
<p>Utilizzando la finestra <strong>Shell</strong> è possibile eseguire direttamente dei semplici comandi. In questo modo è possibile testare delle funzioni o piccole parti di codice in modo molto veloce.</p>
<p><span id="more-6563"></span></p>
<p>Ad esempio digitiamo sulla <strong>Shell</strong> il seguente codice e premiamo invio</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">print("Ciao Mondo!! Questa è la mia prima istruzione in MicroPython")</pre>
<p>otterremo la risposta della <strong>Pico</strong>:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-6567" src="https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl_print.jpg" alt="" width="700" height="195" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl_print.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl_print-300x84.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl_print-150x42.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/repl_print-585x163.jpg 585w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>niente di entusiasmante! Ma comunque un semplice test per verificare che la scheda stia eseguendo il codice Python.</p>
<h2>Scrivere un semplice programma</h2>
<p>Nell&#8217;editor dei Thonny andiamo a scrivere delle istruzioni un po più utili. Sappiamo che il chip RP2040 è dotato di un sensore di temperature collegato all&#8217;ingresso analogico ADC4, quindi con il codice seguente andiamo a prelevare la tensione sulla linea ADC4 per poi convertirla in un valore espresso in gradi centigradi:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import machine
import utime

sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

while True:
    reading = sensor_temp.read_u16() * conversion_factor
    temperature = 27 - (reading - 0.706)/0.001721
        
    print(temperature)
    
    utime.sleep(2)</pre>
<p>Il codice è stato copiato dal libro <a href="https://hackspace.raspberrypi.org/books/micropython-pico">Get started with MicroPython</a>.</p>
<p>Premiamo il pulsante<strong> Esegui lo script corrente (F5)</strong> per eseguire il programma. <strong>Thonny</strong> ci chiede dove vogliamo salvare il programma, salviamo sulla <strong>Raspberry Pi Pico</strong>:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-6570" src="https://logicaprogrammabile.it/wp-content/uploads/2021/02/run_program.jpg" alt="" width="700" height="613" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/02/run_program.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/run_program-300x263.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/run_program-150x131.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/run_program-585x512.jpg 585w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Diamo un nome al nostro programma e premiamo sul pulsante <strong>OK</strong>:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6571" src="https://logicaprogrammabile.it/wp-content/uploads/2021/02/temp.jpg" alt="" width="700" height="613" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/02/temp.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/temp-300x263.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/temp-150x131.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/temp-585x512.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Non appena premiamo il pulsante <strong>OK</strong> la <strong>Raspberry Pi Pico</strong> inizierà ad eseguire il programma. Sulla finestra <strong>Shell</strong> potremmo osservare il valore della temperatura rilevata dal microprocessore.</p>
<p>&nbsp;</p>
<p>The post <a href="https://logicaprogrammabile.it/caricare-programma-micropython-raspberry-pico/">Caricare un programma MicroPython sulla Pi Pico</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/caricare-programma-micropython-raspberry-pico/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Arduino dht11 lettura grezza dei dati</title>
		<link>https://logicaprogrammabile.it/arduino-dht11-lettura-grezza-dei-dati/</link>
					<comments>https://logicaprogrammabile.it/arduino-dht11-lettura-grezza-dei-dati/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 16 Jul 2018 11:56:49 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[dht11]]></category>
		<category><![CDATA[Sensore di umidità]]></category>
		<category><![CDATA[Sensore Temperatura]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=5783</guid>

					<description><![CDATA[<p>Come leggere i dati dal sensore DHT11 senza usare una libreria Il sensore di temperatura e umidità DHT11 è uno tra i più popolari nei progetti Arduino quando è necessario acquisire un valore di temperatura e di umidità. Solitamente per leggere i dati da questo...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-dht11-lettura-grezza-dei-dati/">Arduino dht11 lettura grezza dei dati</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come leggere i dati dal sensore DHT11 senza usare una libreria</h1>
<p>Il sensore di temperatura e umidità DHT11 è uno tra i più popolari nei progetti Arduino quando è necessario acquisire un valore di temperatura e di umidità. Solitamente per leggere i dati da questo sensore viene utilizzata una libreria che permette con poche linee di codice di ottenere il dato di temperatura e dell&#8217;umidità.</p>
<p>Esistono numerosi tutorial che mostrano come impiegare queste librerie, in questo articolo cercheremo di capire invece, come leggere i dati del sensore DHT11 utilizzando direttamente le funzioni di Arduino UNO.</p>
<p><span id="more-5783"></span></p>
<p>Nello schema seguente potete osservare i collegamenti che ho effettuato tra la UNO e il sensore DHT11</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5795" src="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Arduino_UNO.png" alt="Arduino UNO collegamenti DHT11" width="297" height="284" /></p>
<p>Come si può notare i dati vengono ricevuti e trasmessi impiegando un solo filo.</p>
<p>Per prima cosa controlliamo nel datasheet del DHT11 come avviene lo scambio dei dati tra il microcontrollore e il sensore.</p>
<p>Sapendo che i dati transitano su un singolo filo dobbiamo utilizzare una porta digitale della UNO impostandola primariamente come uscita, per inviare la richiesta di acquisizione dati al sensore, secondariamente come ingresso, per ricevere i dati provenienti dal sensore.</p>
<p>Leggendo il datasheet notiamo che per ricevere dati dal sensore DHT11 è necessario inviargli un segnale digitale rispettando determinati tempi tra un livello logico basso ed uno alto; analizziamo nel dettaglio come sono composti questi segnali.</p>
<p>Una volta alimentato il sensore DHT11, questo si pone, dopo circa 1 secondo, in attesa di ricevere un comando. Avendo inserito una resistenza di pull-up, sulla linea dati sarà presente un segnale logico alto.</p>
<p>Per avviare la trasmissione dei dati dobbiamo mettere (tramite la porta della scheda UNO) la linea dati al livello logico basso per almeno 18 ms, e successivamente metterla nuovamente a livello logico alto, come visibile nel diagramma seguente:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5790" src="https://logicaprogrammabile.it/wp-content/uploads/2018/07/start.png" alt="invio sequenza di start al dht11" width="483" height="238" srcset="https://logicaprogrammabile.it/wp-content/uploads/2018/07/start.png 483w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/start-300x148.png 300w" sizes="auto, (max-width: 483px) 100vw, 483px" /></p>
<p>In questa fase dobbiamo configurare la porta digitale come un ingresso. Infatti il sensore risponderà mettendo la linea dati a livello logico basso per 80 microsecondi per poi tenerla a livello alto per altri 80 microsecondi:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5791" src="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_start.png" alt="dht11 start sequence" width="526" height="218" srcset="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_start.png 526w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_start-300x124.png 300w" sizes="auto, (max-width: 526px) 100vw, 526px" /></p>
<p>ora il sensore invierà al microcontrollore 40 bit di dati composti in questo modo, il bit a livello basso sarà composto da un livello logico basso di 50 us seguito da un livello logico alto di circa 27 us, mentre un bit a livello alto sarà composto da un segnale di livello basso per 50 us seguito da un livello logico alto per 70 us.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5792" src="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_SendData.png" alt="dht11 send data" width="583" height="272" srcset="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_SendData.png 583w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_SendData-300x140.png 300w" sizes="auto, (max-width: 583px) 100vw, 583px" /></p>
<p>Quindi riepilogando avremmo una sequenza di trasmissione di questo tipo:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5793" src="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Signal.png" alt="dht11 signal diagram" width="849" height="273" srcset="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Signal.png 849w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Signal-300x96.png 300w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Signal-768x247.png 768w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Signal-585x188.png 585w" sizes="auto, (max-width: 849px) 100vw, 849px" /></p>
<p>I 40 bit trasmessi sono suddivisi in questo modo:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5797" src="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Data_Structure.png" alt="DHT11 Struttura dati" width="792" height="108" srcset="https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Data_Structure.png 792w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Data_Structure-300x41.png 300w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Data_Structure-768x105.png 768w, https://logicaprogrammabile.it/wp-content/uploads/2018/07/dht11_Data_Structure-585x80.png 585w" sizes="auto, (max-width: 792px) 100vw, 792px" /></p>
<p>I primi 8 bit contengono il valore intero del dato di umidità, i seguenti 8 bit contengono il valore decimale del dato di umidità, i successivi 8 bit contengono il valore intero del dato di temperatura, i seguenti 8 bit contengono il valore decimale del dato di temperatura. Gli ultimi 8 bit contengono il <a href="https://it.wikipedia.org/wiki/Checksum">valore di CRC</a>.</p>
<p>Il codice seguente permette di acquisire il dato di umidità e di temperatura. I commenti nel codice spiegano in dettaglio le istruzioni utilizzate:</p>
<pre class="lang:arduino decode:true">int pin = 2;

unsigned long duration;
unsigned long tmr = 0;
unsigned long tmr_prec = 0;
byte impulsi;
int message[42];
byte Htemperatura;
byte Ltemperatura;
byte Humidita;
byte Lumidita;
byte checksum;

void setup()

{
  //init seriale
  Serial.begin(115200);
  //definisco la porta 2 come uscita
  //in questa porta è collegato il sensore dht11
  pinMode(pin, OUTPUT);
}

void loop()
{
  delay(1000);

  //definisco la porta 2 come uscita
  //in questa porta è collegato il sensore dht11
  pinMode(pin, OUTPUT);
  //sappiamo che sul pin c'è un livello logico alto
  //avvendo inserito la resistenza di pullup
  //metto la linea alivello basso per 20 millisecondi (&gt;18ms)
  digitalWrite(pin, LOW);
  delay(20);
  
  //metto nuovamente la linea a livello logico alto
  digitalWrite(pin, HIGH);

  //imposto la lestta porta come ingresso
  //in modo da ricevere i dati dal sensore dht11
  pinMode(pin, INPUT);
  delayMicroseconds(10);
  
  //inizializzo la variabile a 0, questa variabile consente di tenere
  //traccia del numero di bit ricevuti
  impulsi = 0;
  
  //eseguo un ciclo continuo
  while (true)
  {

    //controllo solo quando è presente un livello alto
    if (digitalRead(2) == HIGH)
    {
      //memorizzo il tempo in microsecondi
      tmr_prec = micros();

      //eseguo un ciclo fintanto che il livello è alto
      while (digitalRead(2) == HIGH)
      {
        ;
      }

      //quando il livello logico diventa basso
      //misuro quanto tempo è durato il livello logico alto
      duration = micros() - tmr_prec;
 
      //memorizzo questo tempo nell'array
      message[impulsi] = duration;
      
      //incremento la variabile per tenere traccia dei bit inviati
      //dal sensore dht11
      impulsi++;
    }

    //quando ho raggiunto 41 bit interrompo il ciclo while
    //i bit sono 41, invece che 40, perchè questo codice
    //misura anche il primo livello alto di 80us che indica l'inizio
    //della trasmissione deii 40 bit di dati 
    if (impulsi == 41)
      break;
  }

  //ora che ho un array contenente i microsecondi di tutti i livelli alti che sono stati inviati
  //dal sensore dht11 devo convertirli in bit digitali
  //trasformo i millisecondi in bit

  //verifico che il primo dato sia di circa 80 us
  if ( message[0] &gt; 75 &amp;&amp; message[0] &lt; 95)
  {
    //bit di start ok    
    //elaboro i primo 8 bit e converto, in funzione della larghezza del
    //livello alto, se è un bit di valore 1 o di valore 0
    
    for (byte ciclo = 0; ciclo &lt; 8; ciclo++)
    {
      if (message[ciclo + 1] &gt; 15 &amp;&amp; message[ciclo + 1] &lt; 35)
        bitClear(Humidita, 7 - ciclo);

      if (message[ciclo + 1] &gt; 65 &amp;&amp; message[ciclo + 1] &lt; 80)
        bitSet(Humidita, 7 - ciclo);
    }

    //continua coni successivi 8 bit
    for (byte ciclo = 0; ciclo &lt; 8; ciclo++)
    {
      if (message[ciclo + 9] &gt; 15 &amp;&amp; message[ciclo + 9] &lt; 35)
        bitClear(Lumidita, 7 - ciclo);

      if (message[ciclo + 9] &gt; 65 &amp;&amp; message[ciclo + 9] &lt; 80)
        bitSet(Lumidita, 7 - ciclo);
    }

    //continua coni successivi 8 bit
    for (byte ciclo = 0; ciclo &lt; 8; ciclo++)
    {
      if (message[ciclo + 17] &gt; 15 &amp;&amp; message[ciclo + 17] &lt; 30)
        bitClear(Htemperatura, 7 - ciclo);

      if (message[ciclo + 17] &gt; 65 &amp;&amp; message[ciclo + 17] &lt; 80)
        bitSet(Htemperatura, 7 - ciclo);
    }
    //continua coni successivi 8 bit
    for (byte ciclo = 0; ciclo &lt; 8; ciclo++)
    {
      if (message[ciclo + 25] &gt; 15 &amp;&amp; message[ciclo + 25] &lt; 30)
        bitClear(Ltemperatura, 7 - ciclo);

      if (message[ciclo + 25] &gt; 65 &amp;&amp; message[ciclo + 25] &lt; 80)
        bitSet(Ltemperatura, 7 - ciclo);
    }
    //continua coni successivi 8 bit
    for (byte ciclo = 0; ciclo &lt; 8; ciclo++)
    {
      if (message[ciclo + 33] &gt; 15 &amp;&amp; message[ciclo + 33] &lt; 30)
        bitClear(checksum, 7 - ciclo);

      if (message[ciclo + 33] &gt; 65 &amp;&amp; message[ciclo + 33] &lt; 80)
        bitSet(checksum, 7 - ciclo);
    }
  }


  //visualizzo i dati grezzi
  for (byte ciclo = 0; ciclo &lt; 41; ciclo++)
  {
    Serial.print(message[ciclo]);
    Serial.print(" ");
  }

  //visualizzo i dati elaborati
  Serial.println("");
  Serial.print("Umidita ");
  Serial.print(Humidita);
  Serial.print(".");
  Serial.print(Lumidita);
  Serial.print(" temperatura ");
  Serial.print(Htemperatura);
  Serial.print(".");
  Serial.print(Ltemperatura);
  Serial.print(" CheckSUM");
  Serial.println(checksum);

}</pre>
<p>Questo semplice codice ha permesso di capire come acquisiere ed elaborare i dati inviati dal sensore dht11.</p>
<p>&nbsp;</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-dht11-lettura-grezza-dei-dati/">Arduino dht11 lettura grezza dei dati</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-dht11-lettura-grezza-dei-dati/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Arduino e sensore di temperatura TMP36</title>
		<link>https://logicaprogrammabile.it/arduino-sensore-di-temperatura-tmp36/</link>
					<comments>https://logicaprogrammabile.it/arduino-sensore-di-temperatura-tmp36/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 09 Sep 2013 19:21:52 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Sensore Temperatura]]></category>
		<category><![CDATA[TMP36]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3778</guid>

					<description><![CDATA[<p>Come utilizzare il sensore di temperatura TMP36 La conversione di grandezze fisiche in elettriche è un aspetto che prima o poi viene affrontato quando iniziamo a realizzare piccoli esperimenti con Arduino. Oggi la sensoristica è ricca di dispositivi capaci di svolgere questa conversione (come il...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-sensore-di-temperatura-tmp36/">Arduino e sensore di temperatura TMP36</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come utilizzare il sensore di temperatura TMP36</h1>
<p>La conversione di grandezze fisiche in elettriche è un aspetto che prima o poi viene affrontato quando iniziamo a realizzare piccoli esperimenti con Arduino. Oggi la sensoristica è ricca di dispositivi capaci di svolgere questa conversione (<a href="https://www.analog.com/media/en/technical-documentation/data-sheets/TMP35_36_37.pdf">come il sensore di temperatura TMP36</a>).</p>
<p>Nello specifico, per quanto riguarda la misura della temperatura abbiamo in commercio dispositivi di ogni sorta, da quelli ultrasensibili a quelli con precisioni dell&#8217;ordine del centesimo di grado, dai costi contenuti ai costi esorbitanti. A tal proposito ho in precedenza utilizzato sia il sensore di temperatura <a href="https://logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico/">analogico MCP9700</a> sia il sensore <a href="https://logicaprogrammabile.it/netduino-bus-i2c-collegamento-sensore-mcp9803/">digitale MCP9803</a>.</p>
<p>Il segnale di conversione di questi sensori può essere sia analogico (variazione di tensione in funzione della variazione della temperatura) sia digitale (con convertitore analogico digitale ed invio dei dati su linea I2C, SPI o 1Wire).</p>
<p>Per i nostri esperimenti ci accontenteremmo di un sensore molto diffuso, dal costo contenuto e dal semplice utilizzo, il <a href="http://www.amazon.it/gp/product/B00STWHUMW/ref=as_li_ss_tl?ie=UTF8&amp;camp=3370&amp;creative=24114&amp;creativeASIN=B00STWHUMW&amp;linkCode=as2&amp;tag=logicaprogram-21" target="_blank" rel="nofollow noopener"><strong>sensore TMP36</strong></a> prodotto da <a href="http://www.analog.com/en/index.html">Analog Device</a>.</p>
<p>Il <strong>TMP36</strong> permette di acquisire<strong> temperature</strong> comprese nell&#8217;<strong>intervallo</strong> tra<strong> -40°C e +125°C</strong> restituendo in uscita valori di tensione lineari tra circa <strong>0.1Vdc e 1.7Vdc</strong>. Una variazione di grado produce una variazione della tensione di uscita pari a 10mV; alla temperatura di <strong>0°C</strong> il sensore eroga una tensione di <strong>500mV</strong>.</p>
<p>Il circuito che ho realizzato è molto banale, si limita a collegare il sensore direttamente ad <strong>Arduino UNO</strong> tramite la porta analogica <strong>A0</strong>:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/09/TMP36.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3783" src="https://logicaprogrammabile.it/wp-content/uploads/2013/09/TMP36.png" alt="Sensore Temperatura TMP36 con Arduino" width="500" height="215" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/09/TMP36.png 500w, https://logicaprogrammabile.it/wp-content/uploads/2013/09/TMP36-300x129.png 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p><span id="more-3778"></span></p>
<p>guardando frontalmente il <strong>TMP36</strong> troviamo sul lato sinistro il<strong> pin di alimentazione</strong>, sul pin centrale il <strong>segnale in uscita</strong> e sul pin destro il <strong>collegamento a massa</strong>.</p>
<p>Il primo sketch di esempio legge dalla <strong>porta analogica A0</strong> il valore di tensione che eroga il <strong>TMP36</strong>:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="avrasm">void setup()
{
  //Init Seriale
  Serial.begin(9600);
}

void loop()
{
  delay(500);
  int val_ADC = analogRead(0);
  //invio il dato acquisito al pc
  Serial.println(val_ADC);
}</pre>
<pre class="lang:arduino decode:true"><span style="font-family: 'Open Sans';">
Il codice precedente non fa altro che convertire in forma digitale la tensione presente sul piedino A0, generata dal TMP36. Questo valore deve essere ora interpretato in modo da ottenere direttamente il valore in °C. Per far ciò abbiamo bisogno del datasheet del componente, e precisamente il grafico di conversione °C/Vdc, rappresentato anche nella figura seguente:</span></pre>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/09/Tmp36_CtoV.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3786" src="https://logicaprogrammabile.it/wp-content/uploads/2013/09/Tmp36_CtoV.png" alt="TMp36 Grafico conversione °C in Vdc" width="320" height="262" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/09/Tmp36_CtoV.png 320w, https://logicaprogrammabile.it/wp-content/uploads/2013/09/Tmp36_CtoV-300x245.png 300w" sizes="auto, (max-width: 320px) 100vw, 320px" /></a></p>
<p>come possiamo osservare dal grafico (per il <strong>TMP36</strong> la linea b evidenziata in rosso) per una tensione di uscita di 0.5Vdc il sensore rileva la temperatura di 0°C. Questo dato ci permette subito di intuire che tensioni inferiori a 0.5Vdc indicano una temperatura sotto lo zero. Inoltre sapiamo che una variazione di grado si ripercuote con una variazione di tensione di 10mV. Quindi, passando agli esempi, se sul pin A0 sono presenti 510mV significa che il sensore sta rilevando una temperatura di 1°C (510mV &#8211; 500mV = 10 mV variazione di 1°C).</p>
<p>Non ci resta che interpretare i dati a nostra disposizione e scrivere uno sketch che restituisca il valore in °C:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="avrasm">//variabili globali
int val_Adc = 0;
float temp = 0;

void setup()
{
  //init seriale
  Serial.begin(9600);
}

void loop()
{
  //leggo dalla porta A0
  val_Adc = analogRead(0);
  //converto il segnale acquisito in un valore
  //espresso in gradi centigradi
  temp = ((val_Adc * 0.00488) - 0.5) / 0.01;
  //invio il dato sulla seriale
  Serial.println(temp);
  //ritardo di mezzo secondo
  delay(500);
}</pre>
<p>la formula che converte il valore acquisito in gradi centigradi è la seguente</p>
<p><strong>°C = ((valoreADC * PrecisioneADC) &#8211; TensioneZeroGradi) / stepGradoTensione</strong></p>
<p>dove</p>
<p><strong>°C</strong> = valore della temperatura in gradi centigradi<br />
<strong>valoreADC</strong> = valore della conversione analogico digitale restituito da analogRead<br />
<strong>PrecisioneADC</strong> = questo valore è ottenuto dividendo la tensione di riferimento dell&#8217;ADC (default 5Vdc) e il numero massimo restituito dalla conversione (1024). (5Vdc /1024 = 0.00488)<br />
<strong>TensioneZeroGradi</strong> = indica la tensione di uscita dal sensore quando rileva una temperatura di 0°C<br />
<strong>stepGradoTensione</strong> = indica la variazione di tensione per ogni variazione di grado (0.01 = 10 mV)</p>
<h2>Come aumentare la risoluzione nelle letture del TMP36</h2>
<p>Eseguendo l&#8217;ultimo sketch ci accorgiamo che i valori di temperatura non sono proprio quelli che ci aspettiamo. Considerando la <strong>precisione</strong> del sensore <strong>TMP36</strong> che si attesta a <strong>+/- 2°C</strong> per tutta la scala, otteniamo comunque dei valori che differiscono di circa 5-7°C dal valore reale. Questo &#8216;errore&#8217; dipende da diversi fattori tra cui imprecisione dell&#8217;ADC, rumore del segnale e approssimazione dei valori nei calcoli.<br />
Per limitare questi errori possiamo adottare due tecniche, la prima è quella di usare il <strong>pin AREF</strong> dell&#8217;<strong>Arduino UNO</strong> per dare al convertitore analogico digitale dell&#8217;ATmega328 un riferimento di tensione più basso (di default è 5Vdc), l&#8217;altra tecnica è quella di effettuare diverse letture ed eseguire una media dei valori letti.</p>
<p>Nello schema seguente viene indicato come collegare il <strong>pin AREF</strong> al <strong>pin power di 3.3Vdc</strong>:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/09/TMP36_1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3792" src="https://logicaprogrammabile.it/wp-content/uploads/2013/09/TMP36_1.png" alt="Arduino tutorial pin AREF" width="507" height="308" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/09/TMP36_1.png 507w, https://logicaprogrammabile.it/wp-content/uploads/2013/09/TMP36_1-300x182.png 300w" sizes="auto, (max-width: 507px) 100vw, 507px" /></a></p>
<p>Anche via software dobbiamo indicare al microcontrollore che intendiamo usare il pin AREF per le operazioni di conversione A-D. l&#8217;istruzione è la <strong>analogReference()</strong> e viene impiegata in questo modo:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="avrasm">//variabili globali
int val_Adc = 0;
float temp = 0;

void setup()
{
 //init seriale
 Serial.begin(9600);
 //utilizzando l'istruzione analogReference
 //indico al convertitore AD che deve impiegare
 //la tensione presente sul pin AREF come
 //valore di riferimento per la conversione
 analogReference(EXTERNAL);
}</pre>
<p>Usando la tensione di 3.3Vdc come riferimento per la conversione analogico digitale otteniamo che il valore <strong>PrecisioneADC</strong> nella formula precedente cambia da 0.00488 a 0.0032 (3.3Vdc / 1024 = 0.0032), aumentando così la precisione della formula.<br />
Impieghiamo anche la lettura multipla di valori per cercare di minimizzare le fluttuazioni, come descritto nel codice seguente:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="avrasm">int val_Adc = 0;
float temp = 0;

void setup()
{
 //init seriale
 Serial.begin(9600);
 //utilizzando l istruzione analogReference
 //indico al convertitore AD che deve impiegare
 //la tensione presente sul pin AREF come
 //valore di riferimento per la conversione
 analogReference(EXTERNAL);
}

void loop()
{
 //ritardo di mezzo secondo
 delay(500);
 //init variabile
 val_Adc = 0;
 //eseguo un ciclo
 for(byte Ciclo = 0; Ciclo &lt; 100; Ciclo++)
 {
  //acquisisco il valore e lo sommo alla
  //variabile
  val_Adc += analogRead(0);
  //questo ritardo serve per dare il tempo
  //all ADC di eseguire correttamente
  //la prossima acquisizione
  delay(10);
 }

 //eseguo la media dei 100 valori letti
 val_Adc /= 100;
 //calcolo la temperatura in °C
 temp = ((val_Adc * 0.0032) - 0.5) / 0.01;
 //invio i dati al computer
 Serial.println(temp);
}</pre>
<p>in questo modo otterremmo delle misure di temperatura che si avvicineranno molto al valore reale.</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-sensore-di-temperatura-tmp36/">Arduino e sensore di temperatura TMP36</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-sensore-di-temperatura-tmp36/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>MCP9700A Netduino e sensore di temperatura analogico</title>
		<link>https://logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico/</link>
					<comments>https://logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 22 Mar 2011 14:03:51 +0000</pubDate>
				<category><![CDATA[Elettronica]]></category>
		<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[DataLogger]]></category>
		<category><![CDATA[MCP9700A]]></category>
		<category><![CDATA[Sensore Temperatura]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=441</guid>

					<description><![CDATA[<p>MCP9700A come leggere il valore di temperatura Sfruttiamo il Netduino per la realizzazione di un dispositivo che permette la lettura della temperatura tramite il sensore MCP9700A. Il sensore fornisce una tensione analogica proporzionale alla temperatura rilevata. E&#8217; un dispositivo molto semplice e compatto, ha tre...</p>
<p>The post <a href="https://logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico/">MCP9700A Netduino e sensore di temperatura analogico</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>MCP9700A come leggere il valore di temperatura</h1>
<p>Sfruttiamo il <strong>Netduino </strong>per la realizzazione di un dispositivo che permette la lettura della temperatura tramite il sensore <strong>MCP9700A</strong>.<br />
Il sensore fornisce una tensione analogica proporzionale alla temperatura rilevata. E&#8217; un dispositivo molto semplice e compatto, ha tre pin, uno per l&#8217;alimentazione, uno per la massa e uno per la tensione analogica di uscita.</p>
<p style="text-align: left;"><img loading="lazy" decoding="async" class="aligncenter wp-image-448 size-medium" title="Sensore di temperatura tipo MCP9700A" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SensTempPF-300x203.gif" alt="MCP9700A" width="300" height="203" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SensTempPF-300x203.gif 300w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/SensTempPF.gif 333w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<p style="text-align: left;">Per capire come collegare questo sensore al Netduino analizziamo prima le sue caratteristiche. Può essere alimentato da un intervallo di tensione che va da 2.3Vdc a 5.5Vdc, misura temperature che vanno da un minimo di -40°C a un massimo di 125°C con una precisione tipica di -+1°C (-+2°C massima). Ad una temperatura di 0°C il dispositivo eroga in uscita una tensione di 500mV utile come riferimento di partenza per il nostro circuito. La variazione di un grado produce una variazione di tensione di 10mV. La minima tensione in uscita dal sensore è di 100mV mentre quella massima è di 1.75V.<br />
Per approfondire tutti gli aspetti di questo sensore potete consultare il suo <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/21942e.pdf" target="_blank">datasheet</a>.<br />
La tabella seguente mostra un riassunto di quanto detto:</p>
<table style="width: 315px;">
<tbody>
<tr>
<td style="text-align: center;">Descrizione</td>
<td></td>
<td style="text-align: center;">Valori</td>
</tr>
<tr>
<td>Alimentazione del sensore</td>
<td></td>
<td>da 2.3Vdc a 5.5Vdc</td>
</tr>
<tr>
<td>Intervallo di temperatura</td>
<td></td>
<td>da -40°C a 125°C</td>
</tr>
<tr>
<td>Precisione tipica</td>
<td></td>
<td>+/- 1°C da 0 a 70°C</td>
</tr>
<tr>
<td>Variazione di tensione</td>
<td></td>
<td>10mV per grado</td>
</tr>
<tr>
<td>Tensione di uscita a 0°C</td>
<td></td>
<td style="text-align: left;">500mV</td>
</tr>
<tr>
<td>Intervallo di tensione in uscita</td>
<td></td>
<td>da 100mV a 1.75V</td>
</tr>
</tbody>
</table>
<p>Il grafico seguente mostra invece la curva di risposta del sensore.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-476 size-full" title="Curva di risposta MCP9700A" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/Curvadirisposta.gif" alt="Curva di risposta MCP9700A" width="324" height="212" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/Curvadirisposta.gif 324w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/Curvadirisposta-300x196.gif 300w" sizes="auto, (max-width: 324px) 100vw, 324px" /></p>
<p>La precisione del sensore è garantita alimentandolo a 3.3Vdc. In effetti, a parità di temperatura rilevata, alimentandolo prima a 3.3Vdc e poi a 5Vdc ho notato delle differenze di tensione in uscita dal sensore.<br />
Come sappiamo il gli ingressi analogici del Netduino possono accettare una tensione massima di 3.3Vdc, l&#8217;MCP9700A può essere collegato direttamente all&#8217;ingresso analogico poiché la sua massima tensione in uscita è pari a 1.75Vdc.<br />
Il Netduino dispone di un&#8217;alimentazione da 3.3Vdc che ho utilizzato per alimentare il sensore.</p>
<p><span id="more-441"></span>Il valore di tensione in uscita dal sensore viene collegato all&#8217;ingresso A0 del Netduino per essere digitalizzato; questo dato viene inviato al PC usando la <a title="Netduino e collegamento alla seriale(RS232) del pc" href="https://logicaprogrammabile.it/netduino-e-collegamento-alla-serialers232-del-pc/">comunicazione RS232</a>.</p>
<p>Il circuito elettrico è il seguente.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-447 size-full" title="Collegamento sensore di temperatura e Netduino" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SensTemp.gif" alt="Netduino e sensore MCP9700A" width="623" height="423" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SensTemp.gif 623w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/SensTemp-300x203.gif 300w" sizes="auto, (max-width: 623px) 100vw, 623px" /></p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-606 size-full" title="Foto_Circuito" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF09331.jpg" alt="Foto_Circuito_Netduino" width="350" height="420" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF09331.jpg 350w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF09331-250x300.jpg 250w" sizes="auto, (max-width: 350px) 100vw, 350px" /></p>
<p>Il software per la gestione del circuito è composto da una parte relativa all&#8217;acquisizione del segnale analogico del sensore e da una parte che gestisce la comunicazione RS232 con il PC.<br />
Di seguito il codice C#:</p>
<pre class="lang:c# decode:true ">public static void Main()
{
SerialPort UART1 = new SerialPort("COM1", 9600, Parity.None,
8, StopBits.One);
AnalogInput AN0 = new AnalogInput(Pins.GPIO_PIN_A0);
Byte[] IntToByte = new Byte[2];
Int16 Analog0 = 0;

UART1.Open();

while (true)
{
//acquisisci il valore analogico
Analog0 = (Int16)AN0.Read();

//copio il valore intero in due byte
IntToByte[0] = (byte)(Analog0 &amp; 0xff);
IntToByte[1] = (byte)((Analog0 &gt;&gt; 8) &amp; 0xff);

//invia al pc un informazione
UART1.Write(IntToByte, 0, IntToByte.Length);
//attendi 500 millisecondi
Thread.Sleep(500);
}

UART1.Close();
}</pre>
<p>&nbsp;</p>
<p>Dopo aver definito gli oggetti per la comunicazione seriale e per l&#8217;acquisizione del segnale analogico, il programma entra in un ciclo infinito e ogni 500 millisecondi la funzione Read() esegue una lettura del segnale analogico proveniente dal sensore MCP9700A, questo valore è memorizzato in una variabile intera.<br />
Per poter spedire questo valore tramite l&#8217;oggetto UART1, devo convertirlo in un array di Byte. Le istruzioni seguenti svolgono questo compito</p>
<pre class="lang:c# decode:true ">//copio il valore intero in due byte
IntToByte[0] = (byte)(Analog0 &amp; 0xff);
IntToByte[1] = (byte)((Analog0 &gt;&gt; 8) &amp; 0xff);</pre>
<p>&nbsp;</p>
<p>Queste istruzioni servono a mettere i primi 8bit della variabile Analog0(16bit) nel primo byte dell&#8217;array e i successivi bit nel secondo byte dell&#8217;array.<br />
Ho realizzato questa illustrazione per spiegare meglio cosa avviene utilizzando le funzioni precendenti:</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-490 size-full" title="Conversione da In16 ad array di Byte" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/IntToByte.gif" alt="Conversione da In16 ad array di Byte" width="620" height="214" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/IntToByte.gif 620w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/IntToByte-300x103.gif 300w" sizes="auto, (max-width: 620px) 100vw, 620px" /></p>
<p>Colleghiamo il Netduino al pc per alimentare il circuito ed eseguiamo il Debug(f5) per caricare il programma. A compilazione e programmazione avvenuta, avviamo<strong> hyper terminal</strong> per leggere i dati dalla seriale. Per maggiorni informazioni su hyper terminal potete rileggere l&#8217;articolo riguardante <a title="Netduino e collegamento alla seriale(RS232) del pc" href="https://logicaprogrammabile.it/netduino-e-collegamento-alla-serialers232-del-pc/">Netduino e RS232</a>.</p>
<p>Ora che tutto è funzionante dobbiamo ragionare sull&#8217;interpretazione dei dati inviati al pc. La proporzione seguente ci permette di ottenere il valore della tensione sull&#8217;ingresso analogico in base al valore intero che il Netduino invia al pc:</p>
<p style="text-align: center;"><strong>MaxTenADC : Risol_ADC = TensADC : ValInt</strong></p>
<blockquote>
<p style="text-align: left;">dove:<br />
<strong>MaxTenADC </strong>= 3.3Vdc tensione massima applicabile al pin analogico del Netduino<br />
<strong>Risol_ADC</strong> = 10bit (1024) massima risoluzione del convertitore analogico digitale del Netduino<br />
<strong>TensADC </strong>= tensione applicata al pin analogico<br />
<strong>ValInt </strong>= valore intero ottenuto dalla conversione</p>
</blockquote>
<p>Facciamo un esempio pratico, se il Netdino invia al pc un valore di 156 possiamo calcolare la tensione in ingresso in questo modo:</p>
<p style="text-align: center;">(MaxTenADC * ValInt) / Risol_ADC</p>
<p style="text-align: center;">(3.3Vdc * 156) / 1024 = 0.502 Vdc</p>
<p>quindi sull&#8217;ingresso analogico misureremo una tensione di circa 500 mVdc. Considerando la curva di risposta del sensore appuriamo che, con una tensione di 500mV, la temperatura misurata è di 0°C. Il datasheet ci dice che ad ogni variazione di grado corrisponde una variazione di 10mV, ciò ci permette di fare un calcolo per ottenere il valore in gradi in base al numero inviato dal Netduino via seriale.</p>
<p style="text-align: center;">(((3.3Vdc * 156) / 1024) &#8211; 0.5)/0.01 = 0.2°C</p>
<blockquote><p>dove:<br />
3.3Vdc è la tensione massima applicabile all&#8217;ingresso analogico<br />
156 è il valore intero ottenuto dalla conversione analogico digitale<br />
1024 è il massimo valore intero ottenibile con la conversione analogico digitale<br />
0.5 è la tensione del sensore a 0°C<br />
0.01 è la variazione di tensione per ogni grado (10mv/°C)</p></blockquote>
<p>con questo semplice esperimento abbiamo creato un termometro capace di inviare i dati ad un pc. Volendo possiamo acquistare un ulteriore sensore di temperatura e collegarlo ad un altro ingresso analogico per creare un termometro differenziale.<br />
In allegato trovate un file di progetto C# per leggere i dati dalla seriale.</p>
<p>Vi aspetto con commenti e suggerimenti e vi rimando al prossimo esperimento!</p>
<p>The post <a href="https://logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico/">MCP9700A Netduino e sensore di temperatura analogico</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
