<?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>tcs230 Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/tcs230/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/tcs230/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Wed, 06 Nov 2019 08:14:53 +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>tcs230 Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/tcs230/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sensore di colore TCS230</title>
		<link>https://logicaprogrammabile.it/sensore-colore-tcs230/</link>
					<comments>https://logicaprogrammabile.it/sensore-colore-tcs230/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 17 Dec 2018 07:00:53 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[tcs230]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=5903</guid>

					<description><![CDATA[<p>Come rilevare un colore con il sensore TCS230 Chi come me ha giocato con le Lego si sarà cimentati nella realizzazione di robot e marchingegni pieni di ingranaggi! I movimenti delle mie realizzazioni avvenivano spostando leve e manopole. Con una scheda Arduino possiamo automatizzare questi...</p>
<p>The post <a href="https://logicaprogrammabile.it/sensore-colore-tcs230/">Sensore di colore TCS230</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Come rilevare un colore con il sensore TCS230</h1>



<p>Chi come me ha giocato con le Lego si sarà cimentati nella realizzazione di robot e marchingegni pieni di ingranaggi! I movimenti delle mie realizzazioni avvenivano spostando leve e manopole. Con una scheda Arduino possiamo automatizzare questi meccanismi utilizzando piccoli motori o servomeccanismi. Utilizzando dei sensori potremmo rispolverare le nostre costruzioni, fare un salto nel passato e trascorrere piacevoli momenti con i nostri amici.<br />Poi se avete dei bambini appassionati di costruzioni Lego allora non avete più scuse per mettevi all&#8217;opera!</p>



<figure><img fetchpriority="high" decoding="async" class="aligncenter size-medium wp-image-5955" src="https://logicaprogrammabile.it/wp-content/uploads/2018/12/TCS230-300x225.jpg" alt="Sensore TCS230" width="300" height="225" srcset="https://logicaprogrammabile.it/wp-content/uploads/2018/12/TCS230-300x225.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2018/12/TCS230-768x576.jpg 768w, https://logicaprogrammabile.it/wp-content/uploads/2018/12/TCS230-585x439.jpg 585w, https://logicaprogrammabile.it/wp-content/uploads/2018/12/TCS230.jpg 800w" sizes="(max-width: 300px) 100vw, 300px" /></figure>



<p>Se ad esempio, avete intenzione di realizzare un <a href="https://en.wikipedia.org/wiki/Colour_sorter">colour sorter</a> oltre ai <a href="https://logicaprogrammabile.it/netduino-controllare-servo-sg5010/">servo</a> vi servirà un sensore capace di rilevare il colore di un oggetto. Sensori di questo tipo ne esistono di diverse tipologie e fortunatamente per noi anche a basso costo.<br />Quello che ho utilizzato di recente è il <a href="https://amzn.to/2BpTxY5">sensore TCS230</a>, dal costo contenuto, con una buona sensibilità  e di facile utilizzo.</p>



<p><span id="more-5903"></span></p>



<h3 class="wp-block-heading">Il sensore TCS230</h3>



<p>E&#8217; composto da una matrice 8&#215;8 di fotodiodi. Questi 64 fotodiodi sono suddivisi in 4 gruppi. 16 fotodiodi hanno un filtro <strong>rosso</strong>, 16 fotodiodi hanno un filtro <strong>verde</strong>, 16 fotodiodi hanno un filtro <strong>blu</strong> e i restanti 16 fotodiodi non presentano filtro.</p>



<p>I 16 fotodiodi dello stesso filtro sono connessi in parallelo e producono una corrente proporzionale all&#8217;intensità della luce del colore che devono rilevare.<br />Tramite i pin <strong>S2</strong> e <strong>S3</strong> del <strong>TCS230</strong> è possibile selezionare un gruppo di fotodiodi alla volta.<br />La corrente prodotta dai fotodiodi viene inviata ad un<strong> convertitore corrente/frequenza</strong>, e di conseguenza, in uscita dall&#8217;integrato avremo una frequenza ad onda quadra direttamente proporzionale all&#8217;intensità della luce del colore.<br />Tramite i pin <strong>S0</strong> e <strong>S1</strong> è possibile decrementare la frequenza in uscita dall&#8217;integrato.</p>



<h3 class="wp-block-heading">Circuito Elettrico</h3>



<p>Lo schema seguente mostra come eseguire i collegamenti tra il sensore <strong>TCS230</strong> e l&#8217;<strong>Arduino UNO</strong>.</p>



<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" width="500" height="488" class="wp-image-5943 aligncenter" src="https://logicaprogrammabile.it/wp-content/uploads/2018/12/TCS230_bb.png" alt="Arduino circuito TCS230" srcset="https://logicaprogrammabile.it/wp-content/uploads/2018/12/TCS230_bb.png 500w, https://logicaprogrammabile.it/wp-content/uploads/2018/12/TCS230_bb-300x293.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></figure>
</div>



<table align="center">
<tbody>
<tr>
<td>Pin Arduino</td>
<td>Pin TCS230</td>
</tr>
<tr>
<td>5V</td>
<td>Vcc</td>
</tr>
<tr>
<td>GND</td>
<td>Gnd</td>
</tr>
<tr>
<td>13</td>
<td>S1</td>
</tr>
<tr>
<td>12</td>
<td>S0</td>
</tr>
<tr>
<td>2</td>
<td>S2</td>
</tr>
<tr>
<td>3</td>
<td>S3</td>
</tr>
<tr>
<td>4</td>
<td>Out</td>
</tr>
</tbody>
</table>



<h3 class="wp-block-heading">Codice di esempio</h3>



<p>Abbiamo visto che il sensore TCS230 produce una frequenza proporzionale all&#8217;intensità della luce rilevata da un gruppo di fotodiodi.</p>



<p>La funzione che ci permette leggere questo valore è <a href="https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/">pulseIn()</a>. Questa funzione permette di misurare la durata di un impulso (di conseguenza calcolarne la frequenza).<br />Il minimo valore misurabile è di 10uS (frequenza massima di 100 KHz).</p>



<p>Il codice dovrà gestire le line S2 e S3 per selezionare ciclicamente il gruppo dei fotodiodi, leggere il valore della frequenza e ottenere cosi i valori per i canali Rosso Verde e Blu (RGB).</p>



<p>Di seguito il codice dello sketch:</p>



<pre class="lang:arduino decode:true">#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int frequency = 0;
int R = 0;
int G = 0;
int B = 0;

void setup() {

  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);

  // Setto la frequenza a 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);

  Serial.begin(9600);

}

void loop() {

  delay(500);
  R = 0;
  G = 0;
  B = 0;

  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  delay(150);
  for (byte ciclo = 0; ciclo &amp;lt; 10; ciclo++)
  {
    R += pulseIn(sensorOut, LOW);
  }
  R = R / 10;
  Serial.print("R=");
  Serial.print(R);
  Serial.print(" ");

  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  delay(150);
  for (byte ciclo = 0; ciclo &amp;lt; 10; ciclo++)
  {
    G += pulseIn(sensorOut, LOW);
  }
  G = G / 10;
  Serial.print("G=");
  Serial.print(G);
  Serial.print(" ");

  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  delay(150);
  for (byte ciclo = 0; ciclo &amp;lt; 10; ciclo++)
  {
    B += pulseIn(sensorOut, LOW);
  }
  B = B / 10;
  Serial.print("B=");
  Serial.print(B);
  Serial.println(" ");

}</pre>
<p>Il codice precedente permette di acquisire i valori di frequenza per i canali Rosso, Verde e Blu. Questi valori possono variare significativamente tra loro.  Infatti a seconda della distanza tra l&#8217;oggetto e il sensore, la presenza di luce naturale o artificiale al momento della misurazione, potremmo avere variazioni dei dati letti.</p>



<p>Concludendo, per avere delle letture omogenee è necessario riprodure sempre le stesse condizioni di luce, questo si può ottenere ad esempio utilizzando un box illuminato artificialmente e posizionando l&#8217;oggetto alla stessa distanza dal sensore. <br />Con le costruzioni Lego abbiamo ora tutto il necessario per realizzare un progetto per stupire i nostri bambini!</p>



<p>&nbsp;</p>
<p>The post <a href="https://logicaprogrammabile.it/sensore-colore-tcs230/">Sensore di colore TCS230</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/sensore-colore-tcs230/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
