<?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>Orto Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/orto/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/orto/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 15 Jan 2017 12:11:04 +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>Orto Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/orto/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Netduino, centralina per impianto di microirrigazione</title>
		<link>https://logicaprogrammabile.it/come-costruire-fai-da-te-centralina-impianto-microirrigazione/</link>
					<comments>https://logicaprogrammabile.it/come-costruire-fai-da-te-centralina-impianto-microirrigazione/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Wed, 25 May 2011 08:56:53 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Impianto idrico]]></category>
		<category><![CDATA[Microirrigazione]]></category>
		<category><![CDATA[Netduino]]></category>
		<category><![CDATA[Orto]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1393</guid>

					<description><![CDATA[<p>Come realizzare centralina di microirrigazione con Netduino Eccoci giunti alla parte più interessante dell&#8217;impianto di microirrigazione proposto negli articoli precedenti. Per il primo prototipo ho deciso di utilizzare il Netduino per eseguire velocemente tutti i test  dell&#8217;impianto e per poter adattare il software alle mie...</p>
<p>The post <a href="https://logicaprogrammabile.it/come-costruire-fai-da-te-centralina-impianto-microirrigazione/">Netduino, centralina per impianto di microirrigazione</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come realizzare centralina di microirrigazione con Netduino</h1>
<p>Eccoci giunti alla parte più interessante dell&#8217;impianto di microirrigazione proposto negli articoli precedenti. Per il primo prototipo ho deciso di utilizzare il Netduino per eseguire velocemente tutti i test  dell&#8217;impianto e per poter adattare il software alle mie esigenze di irrigazione.</p>
<p>Lo schema elettrico del circuito è il seguente</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter wp-image-1494 size-full" title="CentralinaElettronica" src="https://logicaprogrammabile.it/wp-content/uploads/2011/05/CentralinaElettronica.gif" alt="Schema elettrico centralina microirrigazione" width="686" height="683" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/05/CentralinaElettronica.gif 686w, https://logicaprogrammabile.it/wp-content/uploads/2011/05/CentralinaElettronica-150x150.gif 150w, https://logicaprogrammabile.it/wp-content/uploads/2011/05/CentralinaElettronica-300x298.gif 300w" sizes="(max-width: 686px) 100vw, 686px" /></p>
<p>Il circuito sembra complesso ma molti componenti sono stati utilizzati negli articoli precedenti.<br />
<span id="more-1393"></span>Questo circuito sfrutta maggiormente gli ingressi analogici del Netduino. Sul pin <strong>A0</strong> è collegata la fotoresistenza mentre sul pin <strong>A1 </strong>è collegato il sensore di temperatura. Sia la fotoresistenza che il sensore di temperatura sono alimentati con la <strong>3.3V</strong>.<br />
Gli altri ingressi analogici vengono utilizzati per le tre sonde che verificano l&#8217;umidità del terreno. Ho visto alcuni schemi elettrici che, per misurare la conducibilità del terreno, utilizzando una tensione continua. Questo approccio è molto semplice ma può dare problemi di elettrolisi, e conseguente ossidazione delle sonde poste nel terreno, con conseguente imprecisione della misura.<br />
Per evitare questo problema, possiamo utilizzarne una tensione alternata, in questo caso però dobbiamo successivamente trasformarla in una tensione continua per poterla inviare agli ingressi analogici del Netduino.</p>
<p>Vediamo nel dettaglio il funzionamento della centralina, alcuni argomenti sono stati già esposti e quindi vi rimando alla lettura tramite questi link:</p>
<p>Per il sensore di temperature potete leggere <a title="MCP9700A Netduino e sensore di temperatura analogico" href="https://logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico/">questo articolo</a>.<br />
Per il sensore di luminosità tramite fotoresistenza potete fare riferimento a <a title="Usare gli ingressi analogici del Netduino" href="https://logicaprogrammabile.it/netduino-usare-ingressi-analogici/">questo articolo</a>.</p>
<p>La parte nuova da descrivere riguarda il <strong>sensore di umidità</strong>. Come ho detto prima, preferisco alimentare le sonde con un segnale alternato; la soluzione migliore è quella di utilizzare la funzione <strong>PWM</strong> del <strong>Netduino </strong>disponibile sul <strong>pin5</strong>.<br />
Il segnale PWM viene inviato a tre ingressi dell&#8217;integrato 74HC244 (Line Driver) per avere un po più di corrente e disaccoppiare il Netduino delle sonde. Il <strong>duty cycle</strong> del pwm è del 50% e la sua frequenza è di 10Khz, naturalmente questi parametri possono essere variati in base alle esigenze e alla tipologia del terreno.</p>
<p>Quindi, il segnale si propaga nel terreno relativamente alla quantità di acqua presente. L&#8217;altro polo della sonda riceve questo segnale e lo invia al raddrizzatore che provvederà a fornire una tensione continua proporzionale al livello di umidità del terreno.<br />
Il raddrizzatore è composto semplicemente da un diodo e da un condensatore. I diodi contrassegnati con il nome <strong>DP</strong> servono a limitare eventuali extra-tensioni captate dalla sonda.<br />
Il partitore resistivo composto dalle resistenze <strong>R</strong> (da 27Kohm) serve a limitare la tensione sui pin analogici, dato che, il valore massimo applicabile non deve <span style="text-decoration: underline;">essere superiore</span> a 3.3Vdc.</p>
<p>La parte che pilota il solenoide è composta da due relè, questa scelta può sembrare confusa ma penso che sia quella più economica e per capirla, è necessario conoscere  il funzionamento di una elettrovalvola (vedi riquadro)</p>
<blockquote><p>Principalmente esistono due tipi di elettrovalvola, quella monostabile e quella bistabile. L&#8217;elettrovalvola monostabile è alimentata con una tensione alternata mentre quella bistabile con una continua.</p>
<p>Quelle <strong>monostabili </strong>possiedono un posizione stabile che è quella di chiusura della valvola, per aprirla dobbiamo alimentarla costantemente, se l&#8217;alimentazione viene a mancare la valvola ritorna nella sua posizione stabile. Il vantaggio è che se dovesse mancare l&#8217;alimentazione al circuito, mentre l&#8217;irrigazione è in atto, la valvola si chiude e quindi non ci sono problemi di allagamento.<br />
Lo svantaggio è un maggior consumo elettrico poiché le valvole devono essere alimentate per tutto il tempo dell&#8217;irrigazione.</p>
<p>Quelle <strong>bistabili </strong>possiedono due stati stabili, uno per la valvola chiusa e uno per la valvola aperta. Alimentando il solenoide la valvola si apre e rimane aperta anche togliendo l&#8217;alimentazione. Per chiuderla dobbiamo alimentare il solenoide invertendo le polarità, anche in questo caso togliendo l&#8217;alimentazione la valvola rimane chiusa.<br />
Il vantaggio principale e un consumo minimo in termini elettrici, dato che per aprire e chiudere la valvola basta alimentarla per qualche secondo, questo permette di creare automatismi a batteria .<br />
Lo svantaggio è che se succede qualche problema al circuito o all&#8217;alimentazione, mentre la valvola è aperta, questa rimarrà in questo stato creando problemi di allagamento.</p></blockquote>
<p>Nel mio caso, per la realizzazione del circuito, ho utilizzato una piccola basetta mille-fori dove ho alloggiato tutti i componenti del circuito. Per scopi prototipali, potete montare il circuito, anche su una breadboard.</p>
<p>La costruzione delle sonde richiede del comune filo elettrico e due elementi metallici da inserire nel terreno.</p>
<p>Una volta assemblato il circuito e le sonde, possiamo passare allo sviluppo del software. Avendo a disposizione vari input possiamo gestire il nostro <strong>impianto di microirrigazione</strong> adattando diversi algoritmi.</p>
<p>Per una irrigazione efficace dovremmo attivare l&#8217;elettrovalvola nel tardo pomeriggio, quando il sole inizia a tramontare. L&#8217;irrigazione deve avvenire se le sonde indicano una scarsa umidità del terreno. Il sensore di temperature serve per eseguire, ad esempio, una irrigazione aggiuntiva o prolungata, quando le giornate sono più calde.</p>
<p>Comunque sia, l&#8217;algoritmo può variare a seconda delle proprie esigenze, dal tipo di coltura e dalla posizione geografica dell&#8217;orto. Quello che mi interessa ora non è creare un algoritmo perfetto ma spiegare come utilizzare la centralina. Ognuno potrà poi, creare e personalizzare il proprio algoritmo.</p>
<p>La prima cosa da fare è assicurarsi che tutti i sensori del circuito funzionino a dovere. Il codice seguente acquisisce i segnali dagli ingressi analogici.</p>
<blockquote><p>Nota: gli ingressi analogici potrebbero non rispettare la sequenza dello schema elettrico in quanto il prototipo è stato realizzato precedentemente allo schema elettrico</p></blockquote>
<pre class="lang:c# decode:true ">PWM pwmSondeUmidita = new PWM(Pins.GPIO_PIN_D5); //uscita pwm su pin5

AnalogInput SondaTerreno1 = new AnalogInput(Pins.GPIO_PIN_A0);
AnalogInput SondaTerreno2 = new AnalogInput(Pins.GPIO_PIN_A1);
AnalogInput SondaTerreno3 = new AnalogInput(Pins.GPIO_PIN_A2);
AnalogInput FotoSensor = new AnalogInput(Pins.GPIO_PIN_A3);
AnalogInput TempSensor = new AnalogInput(Pins.GPIO_PIN_A4);

//10Khz 50% duty cycle
pwmSondeUmidita.SetPulse(100, 50);

while (true)
{
Debug.Print("SondaTerreno1= " + SondaTerreno1.Read().ToString());
Debug.Print("SondaTerreno2= " + SondaTerreno2.Read().ToString());
Debug.Print("SondaTerreno3= " + SondaTerreno3.Read().ToString());
Debug.Print("SensoreLuce= " + FotoSensor.Read().ToString());
Debug.Print("SensoreTemperatura= " + TempSensor.Read().ToString());

Debug.Print("\n");

//attendo 1 secondo
Thread.Sleep(1000);
}</pre>
<p>&nbsp;</p>
<p>Le sonde <strong>S1</strong>, <strong>S2</strong> ed <strong>S3</strong> devono essere distanziate di qualche decina di centimetri cosi che il segnale di una sonda non interferisca con l&#8217;altra. Per verificarle ho immerso le sonde in 3 bicchieri di acqua diversi.<br />
Nella finestra debug otterremo qualcosa di simile</p>
<p><img decoding="async" class="aligncenter wp-image-1467 size-full" title="Finestra Output" src="https://logicaprogrammabile.it/wp-content/uploads/2011/05/Output.png" alt="Dati relativi ai sensori" width="442" height="302" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/05/Output.png 442w, https://logicaprogrammabile.it/wp-content/uploads/2011/05/Output-300x204.png 300w" sizes="(max-width: 442px) 100vw, 442px" /></p>
<p>Le sonde per il rilevamento dell&#8217;umidità hanno un valore di circa 650-700 quando sono in corto circuito, quando invece non conducono il valore tenderà a 0.<br />
Il sensore di luminosità ha un valore elevato in presenza di forte luce mentre tenderà a 0 in presenza di poca luce.<br />
Il sensore di temperatura ha un valore proporzionale alla temperatura misurata, per ottenere il valore in gradi centigradi vi rimando all&#8217;<a title="MCP9700A Netduino e sensore di temperatura analogico" href="https://logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico/">articolo dedicato al sensore</a>.</p>
<p>Eccovi un semplice esempio che può darvi un&#8217;idea di come utilizzare la centralina</p>
<pre class="lang:c# decode:true ">Int32 LumDato = 0;
Int32 TempDato = 0;
Int32 UmSens1Dato = 0;
Int32 UmSens2Dato = 0;
Int32 UmSens3Dato = 0;

Boolean AttivaIrrigazione = false;
Int32 Ciclo = 0;

//Configurazione PWM
PWM pwmSondeUmidita = new PWM(Pins.GPIO_PIN_D5); //uscita pwm su pin5
//Configurazione attuatori (relè)
OutputPort AlimentazioneValvola = new OutputPort(Pins.GPIO_PIN_D7, false);
OutputPort PolarizzazioneValvola = new OutputPort(Pins.GPIO_PIN_D6, false);
//Configuraziobe Ingressi analogici
AnalogInput SondaTerreno1 = new AnalogInput(Pins.GPIO_PIN_A0);
AnalogInput SondaTerreno2 = new AnalogInput(Pins.GPIO_PIN_A1);
AnalogInput SondaTerreno3 = new AnalogInput(Pins.GPIO_PIN_A2);
AnalogInput FotoSensor = new AnalogInput(Pins.GPIO_PIN_A3);
AnalogInput TempSensor = new AnalogInput(Pins.GPIO_PIN_A4);

//10Khz 50% duty cycle
pwmSondeUmidita.SetPulse(100, 50);

while (true)
{
//leggo dal sensore fotosensibile
LumDato = FotoSensor.Read();
//leggo dal sensore 9700a
TempDato = TempSensor.Read();
//leggo dalle sonde
UmSens1Dato = SondaTerreno1.Read();
UmSens2Dato = SondaTerreno2.Read();
UmSens3Dato = SondaTerreno3.Read();

//attendi il tramonto
if (LumDato &lt; 200 &amp;&amp; AttivaIrrigazione == true)
{
//Questa variabile serve per attivare l'irrigazione
//una sola volta dopo che la luminosità scende sotto 200
AttivaIrrigazione = false;

//controllo l'umidità nelle tre sonde
 //Avvia l'irrigazione solo se necessaria (terreno secco)
 if (UmSens1Dato &lt; 300 &amp;&amp; UmSens2Dato &lt; 300 &amp;&amp; UmSens3Dato &lt; 300)
{
//se la temperatura ha un valore elevato irriga
//per un tempo superiore
if (TempDato &gt; 350)
{
//Irrigazione prolungata per alta temperatura

//attivo l'elettrovalvola per un secondo
AlimentazioneValvola.Write(true);
Thread.Sleep(1000);
AlimentazioneValvola.Write(false);

//l'elettrovalvola è attiva
//attendo 40 minuti prima di disattivarla
for (Ciclo = 0; Ciclo &lt;= 2400; Ciclo++)
{
Thread.Sleep(100);
}

//Inverto le polarità del solenoide
//e poi l'alimento per 1 secondo
PolarizzazioneValvola.Write(true);
AlimentazioneValvola.Write(true);
Thread.Sleep(1000);
AlimentazioneValvola.Write(false);
PolarizzazioneValvola.Write(false);
}
else
 {
//Irrigazione Normale
//attivo l'elettrovalvola per un secondo
AlimentazioneValvola.Write(true);
Thread.Sleep(1000);
AlimentazioneValvola.Write(false);

//l'elettrovalvola è attiva
//attendo 15 minuti prima di disattivarla
for (Ciclo = 0; Ciclo &lt;= 900; Ciclo++)
{
Thread.Sleep(1000);
}

//Inverto le polarità del solenoide
//e l'alimento per 1 secondo
PolarizzazioneValvola.Write(true);
AlimentazioneValvola.Write(true);
Thread.Sleep(1000);
AlimentazioneValvola.Write(false);
PolarizzazioneValvola.Write(false);
}
}
}
else if (LumDato &gt; 200)
{
//Rispristina la variabile quando la luminosità
//risale sopra i 200
AttivaIrrigazione = true;
}

Thread.Sleep(500);
}</pre>
<p>&nbsp;</p>
<p>Appena alimentiamo il circuito, Netduino esegue il codice creando gli oggetti per l&#8217;acquisizione dagli ingressi analogici, per generare il segnale pwm e per comandare i due relè, successivamente esegue un ciclo infinito acquisendo i dati dai sensori ogni 500 millisecondi.</p>
<p>Durante il giorno, in presenza di una buona luminosità, il sistema rimane nella fase di acquisizione; appena la luminosità inizia a diminuire, presumibilmente per il calar del sole, il valore acquisito dal pin analogico <strong>A0</strong>, collegato alla fotoresistenza, diminuisce.<br />
Quando questo valore scende sotto la soglia di 200 (variabile in funzione del vostro sistema),  Netduino entra nel primo blocco <strong>if</strong>, dato che, <strong>AttivaIrrigazione</strong> è uguale a True.<br />
Se le tre sonde indicano una bassa umidità del terreno (dato inferiore a 300), Netduino entra nel secondo blocco <strong>if</strong>. A questo punto troviamo un&#8217;altra istruzione <strong>if</strong> che permette di eseguire il codice per attivare l&#8217;elettrovalvola a seconda della temperatura misurata dal sensore 9700a.<br />
Quindi se la temperatura è elevata verrà eseguito il primo blocco <strong>if</strong>, altrimenti verrà eseguito il codice del blocco <strong>else</strong>.<br />
Il codice di questi blocchi è identico, tranne per il ciclo <strong>for </strong>che, per una temperatura elevata, dura maggiormente.</p>
<p>Analizziamo meglio il codice che pilota l&#8217;elettrovalvola</p>
<pre class="lang:c# decode:true ">//Irrigazione Normale
//attivo l'elettrovalvola per un secondo
AlimentazioneValvola.Write(true);
Thread.Sleep(1000);
AlimentazioneValvola.Write(false);

//l'elettrovalvola è attiva
//attendo 15 minuti prima di disattivarla
for (Ciclo = 0; Ciclo &lt;= 900; Ciclo++)
{
Thread.Sleep(1000);
}

//Inverto le polarità del solenoide
//e l'alimento per 1 secondo
PolarizzazioneValvola.Write(true);
AlimentazioneValvola.Write(true);
Thread.Sleep(1000);
AlimentazioneValvola.Write(false);
PolarizzazioneValvola.Write(false);</pre>
<p>&nbsp;</p>
<p>Le istruzioni comandano direttamente i due relè. In condizioni iniziali il <strong>relè2 </strong>permette di alimentare il solenoide per aprire l&#8217;elettrovalvola. Le prime istruzioni attivano il <strong>relè1, </strong>per alimentare per un secondo il solenoide.<br />
Il ciclo <strong>for</strong> serve per creare un ritardo software di diversi minuti (tempo di irrigazione).<br />
Una volta che il ciclo <strong>for</strong> termina, dobbiamo attivare il <strong>relè2</strong> per invertire le polarità di alimentazione del solenoide. Una volta invertite viene attivato il <strong>relè1</strong> per fornire nuovamente tensione al solenoide per circa 1 secondo il quale chiude la valvola, interrompendo l&#8217;irrigazione.<br />
Le ultime istruzioni diseccitano il <strong>relè1</strong> e il <strong>relè2</strong>.</p>
<p>Le illustrazioni seguenti mostrano come avviene la sequenza di azionamento dei relè.</p>
<p><img decoding="async" class="aligncenter wp-image-1485 size-full" title="AlimentazioneElettrovalvola" src="https://logicaprogrammabile.it/wp-content/uploads/2011/05/AlimentazioneElettrovalvola.gif" alt="Schema di alimentazione elettrovalvola bistabile" width="533" height="446" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/05/AlimentazioneElettrovalvola.gif 533w, https://logicaprogrammabile.it/wp-content/uploads/2011/05/AlimentazioneElettrovalvola-300x251.gif 300w" sizes="(max-width: 533px) 100vw, 533px" /></p>
<p>Infine la variabile AttivaIrrigazioneviene utilizzata per irrigare una sola volta, altrimenti il ciclo di irrigazione dura finché le sonde S1, S2 ed S3 rilevano una elevata umidità del terreno.</p>
<p>Il codice è molto esemplificativo, serve per dare una linea guida su come utilizzare la centralina. Nulla vieta di utilizzare un algoritmo differente, o di utilizzare codice più efficiente.</p>
<p>Non ci resta che montare il circuito ed andarlo a sperimentare sul campo.</p>
<p>The post <a href="https://logicaprogrammabile.it/come-costruire-fai-da-te-centralina-impianto-microirrigazione/">Netduino, centralina per impianto di microirrigazione</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/come-costruire-fai-da-te-centralina-impianto-microirrigazione/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
