<?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>IT-Robotix</title>
	<atom:link href="http://www.it-robotix.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.it-robotix.net</link>
	<description>Sito dedicato al mondo della Robotica amatoriale</description>
	<lastBuildDate>Tue, 24 Aug 2010 12:36:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WWW.XBOT.IT</title>
		<link>http://www.it-robotix.net/2010/08/24/www-xbot-it/</link>
		<comments>http://www.it-robotix.net/2010/08/24/www-xbot-it/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 12:29:49 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Robot]]></category>
		<category><![CDATA[sito]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=285</guid>
		<description><![CDATA[Nasce il nuovo sito dell&#8217;amico Stefano dedicato alla Robotica, molto carina come impostazione e semplice da seguire, in poche parole un lavoro proprio ben fatto.

www.xbot.it
Questo sito è appena nato, ma già presenta una serie di articoli molto interessanti che vi consiglio di andare a vedere.
]]></description>
			<content:encoded><![CDATA[<p>Nasce il nuovo sito dell&#8217;amico Stefano dedicato alla Robotica, molto carina come impostazione e semplice da seguire, in poche parole un lavoro proprio ben fatto.</p>
<p style="text-align: center;"><a rel="lightbox[2010-7-2-14-25-26]" href="http://lh6.ggpht.com/_ndUeRg81MJ8/THO51WzFiLI/AAAAAAAABRk/pxd9fIUGK34/xbot.it.gif?imgmax=640"><img class="pie-img aligncenter" style="margin-top: 10px; margin-bottom: 10px;" src="http://lh6.ggpht.com/_ndUeRg81MJ8/THO51WzFiLI/AAAAAAAABRk/pxd9fIUGK34/s144-c/xbot.it.png" alt="xbot.it.gif" width="144" height="144" /></a><br />
<a title="XBOT" href="http://www.xbot.it/" target="_blank">www.xbot.it</a></p>
<p>Questo sito è appena nato, ma già presenta una serie di articoli molto interessanti che vi consiglio di andare a vedere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2010/08/24/www-xbot-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FIRE &#8211; Aggiornamenti</title>
		<link>http://www.it-robotix.net/2010/02/15/fire-aggiornamenti/</link>
		<comments>http://www.it-robotix.net/2010/02/15/fire-aggiornamenti/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 21:08:37 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Explorer]]></category>
		<category><![CDATA[RTC]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[controllo motori]]></category>
		<category><![CDATA[encoder]]></category>
		<category><![CDATA[FIRE]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=174</guid>
		<description><![CDATA[Continua il lavoro sul nuovo Robot FIRE, lo sviluppo si è spostato ora sulla parte di controllo motori, che utilizzerà come encoder i sensori e i dischi dentati recuperati da un vecchio mouse, il cui principio di funzionamento è molto simile a quello che serve per il nostro scopo.

Il circuito è molto semplice, da una [...]]]></description>
			<content:encoded><![CDATA[<p>Continua il lavoro sul nuovo Robot FIRE, lo sviluppo si è spostato ora sulla parte di controllo motori, che utilizzerà come encoder i sensori e i dischi dentati recuperati da un vecchio mouse, il cui principio di funzionamento è molto simile a quello che serve per il nostro scopo.</p>
<p style="text-align: center;"><a title="Qui si possono vedere i due circuiti con i ricevitori e trasmettitori IR recuperati da vecchi mouse a pallina." rel="lightbox[2010-1-4-20-15-51]" href="http://lh3.ggpht.com/_ndUeRg81MJ8/S2sVkzsA91I/AAAAAAAABMU/zaFJX3plcTk/IMG_4716.JPG?imgmax=640"><img class="pie-img aligncenter" style="margin-top: 10px; margin-bottom: 10px;" src="http://lh3.ggpht.com/_ndUeRg81MJ8/S2sVkzsA91I/AAAAAAAABMU/zaFJX3plcTk/s144-c/IMG_4716.JPG" alt="Qui si possono vedere i due circuiti con i ricevitori e trasmettitori IR recuperati da vecchi mouse a pallina." width="144" height="144" /></a></p>
<p>Il circuito è molto semplice, da una parte abbiamo un trasmettitore IR e dall&#8217;altra due ricevitori posti ad una certa distanza tra loro, ma contenuti nello stesso package, va da se che messi il TX e l&#8217;RX uno davanti all&#8217;altro i due ricevitori daranno in uscita due segnali a livello alto (i sensori usati hanno un&#8217;uscita TTL), mentre interponendo qualcosa tra i due sensori le uscite sono a livello basso. Ora se consideriamo che il disco dentato, ha appunto delle zone aperte, dove i raggi IR possono passare tranquillamente, e delle zone chiuse dove i raggi non passano, va da se che le uscite del ricevitore, se il disco gira, alterneranno valori alto e basso generando così un treno di onde quadre.<span id="more-174"></span> Nelle figure che seguono (ingrandirle per vederle meglio) si possono vedere, le differenze dei segnali in uscita dai due ricevitori, che in seguito chiameremo canali, e si può notare la differenza nel canale B (rosso) quando il motore gira in un verso o nell&#8217;altro.</p>
<p style="text-align: center;"><a title="Esempio di segnali dei due canali dell'encoder per una rotazione oraria." rel="lightbox[2010-1-3-23-20-40]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S3MwtJm0XgI/AAAAAAAABQQ/zDrYuoW4Fp4/Segnali%20encoder%20avanti.PNG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S3MwtJm0XgI/AAAAAAAABQQ/zDrYuoW4Fp4/s144-c/Segnali%20encoder%20avanti.PNG" alt="Esempio di segnali dei due canali dell'encoder per una rotazione oraria." width="144" height="144" /></a> <a title="Esempio di segnali dei due canali dell'encoder per una rotazione antioraria." rel="lightbox[2010-1-3-23-21-11]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S3MwtHacAUI/AAAAAAAABQU/GTgt-s8XbNM/Segnali%20encoder%20indietro.PNG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S3MwtHacAUI/AAAAAAAABQU/GTgt-s8XbNM/s144-c/Segnali%20encoder%20indietro.PNG" alt="Esempio di segnali dei due canali dell'encoder per una rotazione antioraria." width="144" height="144" /></a></p>
<p>Questa differenza tra i due canali è utile per stabilire il verso di rotazione del motore (faccio presente che non utilizzando un encoder commerciale e quindi con caratteristiche specifiche, lo sfasamento tra i due canali può cambiare a seconda di come questi vengono montati), infatti se ipotiziamo di controllare il livello dei due segnali in seguito al fronte di salita (evidenziati dalla freccia) del canale A (blu), con il motore che gira in un verso avremo sempre le uscite dei due canali sono a livello alto (figura 1), ma se invece giriamo il motore nel verso opposto le cose cambiano, il canale B sarà sempre al livello opposto a quello di del canale A, sarà quindi sufficiente fare un controllo dei due livelli per determinare il verso di rotazione del motore.</p>
<p>Ma passiamo dalla teoria alla pratica, quelle che vedete di seguito sono le foto di dettaglio della struttura definitiva dei motori, come si può vedere è stata aggiunta un&#8217;altra staffa ad L per aumentare la stabilita dell&#8217;asse che sostiene il disco del encoder.</p>
<p style="text-align: center;"><a title="Dettaglio della struttura definitiva dei motori, come si può vedere è stata aggiunta un'altra staffa ad L per aumentare la stabilita dell'encoder." rel="lightbox[2010-1-1-14-19-58]" href="http://lh3.ggpht.com/_ndUeRg81MJ8/S2sVjt891eI/AAAAAAAABMQ/T_qiGBqQqJ4/IMG_4721.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh3.ggpht.com/_ndUeRg81MJ8/S2sVjt891eI/AAAAAAAABMQ/T_qiGBqQqJ4/s144-c/IMG_4721.JPG" alt="Dettaglio della struttura definitiva dei motori, come si può vedere è stata aggiunta un'altra staffa ad L per aumentare la stabilita dell'encoder." width="144" height="144" /></a> <a title="Particolare della dentellatura del disco che forma l'encoder. Si nota anche come la parte dentellata è posta tra il trasmettitore e il ricevitore." rel="lightbox[2010-1-1-14-20-19]" href="http://lh5.ggpht.com/_ndUeRg81MJ8/S2sVm0jSUgI/AAAAAAAABMc/qT2YYjN7iTM/IMG_4724.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh5.ggpht.com/_ndUeRg81MJ8/S2sVm0jSUgI/AAAAAAAABMc/qT2YYjN7iTM/s144-c/IMG_4724.JPG" alt="Particolare della dentellatura del disco che forma l'encoder. Si nota anche come la parte dentellata è posta tra il trasmettitore e il ricevitore." width="144" height="144" /></a></p>
<p>Il problema principale, della realizzazione hardware di questi encoder, è stato trovare la giusta posizione dei sensori rispetto al disco dentato. Essendo una soluzione &#8220;home made&#8221;, non abbiamo studiato più di tanto sulla capacità di replicabilità, ma ci siamo diretti più sulla funzionalità, pensando che stiamo comunque lavorando su un progetto il cui scopo finale è quello di studiare/analizzare nuove problematiche oltre naturalmente a trovare soluzioni per i nostri scopi. Solo come nota a margine, nel cassetto si sono già degli ottimi motoriduttori con encoder &#8220;serio&#8221; integrato che aspettano di essere usati.</p>
<p>Veniamo ora alla parte elettronica per la gestione degli encoder, per prima cosa per il controllo motori viene usato un PIC18F4431, montato momentaneamente su una Roboboard 2.0, probabilmente successivamente passeremo a realizzare una scheda apposita e con il più piccolo 18F2431, le cui uniche differenze sono nel package da 28 pin anziché 40 con il conseguente minore numero di porte, ma quelle disponibili sono sufficienti per i nostri scopi.</p>
<p style="text-align: center;"><a title="Circuito per il controllo motori con 18F2431" rel="lightbox[2010-1-2-21-50-58]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S3HKWG4-8NI/AAAAAAAABPo/UZDYSFQJCX8/MotorControl_SCH.png?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S3HKWG4-8NI/AAAAAAAABPo/UZDYSFQJCX8/s144-c/MotorControl_SCH.png" alt="Circuito per il controllo motori con 18F2431" width="144" height="144" /></a></p>
<p>Come si può vedere dallo schema, della futura scheda con 18F2431, i canali A e B di entrambi gli encoder sono collegati alle porte KBI1, KBI2, KBI3 e KBI4, questi ingressi permettono di configurare un interrupt &#8220;on change&#8221;. Questa serie di PIC (18FXX31) ha tra le sue periferiche, quelle per la gestione del PWM avanzato, che mettono a disposizione per ogni PWM generato due segnali in opposizione di fase tra loro, questo semplifica ulteriormente il circuito, perché per pilotare il PonteH non è necessario aggiungere nessun altro integrato per invertire i segnali. RC0 viene utilizzato per abilitare/disabilitare il PonteH, al solo scopo di ridurre i consumi durante le fasi di standby, ricordo che i motori vengono controllati in modalità LAP, quindi per mantenerli fermi è necessario comunque che all&#8217;interno dei motori scorra corrente, invece disabilitando il ponte i motori non sono frenati ma i consumi vengono ridotti, cosa molto importante se si considera che il robot è alimentato a batterie.</p>
<p>Passiamo ora ad analizzare il codice, in particolare per prima cosa vediamo la parte più importante ovvero l&#8217;ISR (Interrupt Service Routine).  In questa prima bozza del codice il PIC conta il numero di click dell&#8217;encoder di ogni ruota, misura il periodo dell&#8217;onda quadra generata dal canale B degli encoder e determina il verso di rotazione dei motori.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p174code4'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1744"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</pre></td><td class="code" id="p174code4"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> InterruptHandlerHigh <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>INTCONbits.<span style="color: #202020;">RBIF</span><span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// Controlla quale canale di quale encoder ha scatenanto l'interrupt</span>
		<span style="color: #666666; font-style: italic;">// ed aggoirna in contatore di impulsi associato</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_A_SX<span style="color: #339933;">!=</span>encAsxOldStatus<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			clickSX<span style="color: #339933;">++;</span>
			encAsxOldStatus<span style="color: #339933;">=</span>ENC_A_SX<span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Se il valore della variabile è 1 allora c'è stato un fronte di</span>
			<span style="color: #666666; font-style: italic;">// salita, quindi posso leggere il timer per misurare il periodo</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_A_SX<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">// Cattura il valore attuale del Timer, leggo prima la parte</span>
				<span style="color: #666666; font-style: italic;">// bassa per evitare che vari ulteriormente la lettura.</span>
				tmr5_now_sx.<span style="color: #202020;">byteL</span><span style="color: #339933;">=</span>TMR5L<span style="color: #339933;">;</span>
				tmr5_now_sx.<span style="color: #202020;">byteH</span><span style="color: #339933;">=</span>TMR5H<span style="color: #339933;">;</span>
				<span style="color: #666666; font-style: italic;">// Salvo il numero di overflow e azzero il contatore</span>
				tmr5_ovf_value_sx<span style="color: #339933;">=</span>tmr5_overflow_sx<span style="color: #339933;">;</span>
				tmr5_overflow_sx<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
				<span style="color: #666666; font-style: italic;">// Imposto il flag di controllo per il calcolo della velocità</span>
				flag_calcola_speed_sx<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_B_SX<span style="color: #339933;">!=</span>encBsxOldStatus<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			clickSX<span style="color: #339933;">++;</span>
			encBsxOldStatus<span style="color: #339933;">=</span>ENC_B_SX<span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Determina il verso di rotazione</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_A_SX<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;&amp;</span> ENC_B_SX<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				Rdir_mot_sx<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">//Forward</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_A_SX<span style="color: #339933;">==</span><span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> ENC_B_SX<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				Rdir_mot_sx<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #666666; font-style: italic;">//*******************</span>
			LedVerde<span style="color: #339933;">=!</span>LedVerde<span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">//*******************</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_A_DX<span style="color: #339933;">!=</span>encAdxOldStatus<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			clickDX<span style="color: #339933;">++;</span>
			encAdxOldStatus<span style="color: #339933;">=</span>ENC_A_DX<span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Se il valore della variabile è 1 allora c'è stato un fronte di</span>
			<span style="color: #666666; font-style: italic;">// salita, quindi posso leggere il timer per misurare il periodo</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_A_DX<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">// Cattura il valore attuale del Timer, leggo prima la parte</span>
				<span style="color: #666666; font-style: italic;">// bassa per evitare che vari ulteriormente la lettura.</span>
				tmr5_now_dx.<span style="color: #202020;">byteL</span><span style="color: #339933;">=</span>TMR5L<span style="color: #339933;">;</span>
				tmr5_now_dx.<span style="color: #202020;">byteH</span><span style="color: #339933;">=</span>TMR5H<span style="color: #339933;">;</span>
				<span style="color: #666666; font-style: italic;">// Salvo il numero di overflow e azzero il contatore</span>
				tmr5_ovf_value_dx<span style="color: #339933;">=</span>tmr5_overflow_dx<span style="color: #339933;">;</span>
				tmr5_overflow_dx<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
				<span style="color: #666666; font-style: italic;">// Imposto il flag di controllo per il calcolo della velocità</span>
				flag_calcola_speed_dx<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_B_DX<span style="color: #339933;">!=</span>encBdxOldStatus<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			clickDX<span style="color: #339933;">++;</span>
			encBdxOldStatus<span style="color: #339933;">=</span>ENC_B_DX<span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Determina il verso di rotazione</span>
			<span style="color: #666666; font-style: italic;">//*!ATTENZIONE!Questo encoder è momntato nello stesso verso</span>
			<span style="color: #666666; font-style: italic;">//* dell'altro, quindi la logica di controllo va invertita</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_A_DX<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;&amp;</span> ENC_B_DX<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				Rdir_mot_dx<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">// Backward</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ENC_A_DX<span style="color: #339933;">==</span><span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> ENC_B_DX<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				Rdir_mot_dx<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">// Forward</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #666666; font-style: italic;">//*******************</span>
			LedRosso<span style="color: #339933;">=!</span>LedRosso<span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">//*******************</span>
		<span style="color: #009900;">&#125;</span>
		INTCONbits.<span style="color: #202020;">RBIF</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>PIR3bits.<span style="color: #202020;">TMR5IF</span><span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//*********************</span>
		LedGiallo<span style="color: #339933;">=!</span>LedGiallo<span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">//*********************</span>
		<span style="color: #666666; font-style: italic;">// Incrementa i contatori di overflow</span>
		tmr5_overflow_dx<span style="color: #339933;">++;</span>
		tmr5_overflow_sx<span style="color: #339933;">++;</span>
		PIR3bits.<span style="color: #202020;">TMR5IF</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>I primi controlli che vengono fatti nella ISR, sono gli &#8220;if&#8221; visibili alla riga 3 e alla riga 84, questi controlli sui flag di interrupt vengono usati per stabilire quale periferica l&#8217;ha scatenato.  Prendiamo in esame l&#8217;Interrupt Flag del Timer 5, questo viene generato ogni volta che il registro del contatore del timer va in owerflow, quindi ogni volta che avviene questo evento vengono incrementate le due variabili di controllo &#8220;tmr5overflow_xx&#8221;, che verranno poi utilizzate in un&#8217;altra funzione per misurare la durata del periodo. Alla riga 82 viene fatta un&#8217;operazione importantissima ovvero il reset del flag dell&#8217;Interrupt del Timer5, questa operazione deve essere fatta manualmente al termine della gestione dell&#8217;ISR, altrimenti appena usciti dalla routine questa verrà richiamata immediatamente come se fosse stato generato un nuovo interrupt.<br />
L&#8217;altro flag RBIF, viene posto a livello alto quando uno degli ingressi delle porte KBIx cambia di stato, a queste porte come già visto sono collegati i canali dei due encoder, quindi dopo il controllo della riga 3 vengono fatti altri quattro controlli, uno per ogni canale degli encoder, dove viene verificato se il livello logico attuale dell&#8217;encoder è diverso da quello memorizzato l&#8217;ultima volta che c&#8217;è stato un cambiamento (righe 7, 26, 43, 62).<br />
Prendiamo in analisi la porzione di codice che segue l&#8217;istruzione &#8220;if&#8221; di riga 7, alla riga 9 viene incrementata la variabile &#8220;clickSX&#8221; che viene utilizzata per contare il numero di click totale del motore sinistro, adesso questa informazione non è utilizzata, ma servirà poi per la parte di odometria che svilupperemo in seguito. Nella riga successiva (10) viene aggiornata la variabile encAsxOldStatus con il valore attuale del livello dell&#8217;encoder.<br />
Nella riga 13 troviamo un altro &#8220;if&#8221; in questo caso controlla se il livello attuale del canale A dell&#8217;encoder in esame è a livello alto, questo permette di stabilire se quello che stiamo analizzando è stato un cambio di stato dal livello logico basso ad alto, quindi se è seguito ad un fronte di salita. In questo modo il codice che segue viene eseguito solo a seguito di ogni fronte di salita, e quindi ad ogni periodo delle onde quadre generate dall&#8217;encoder, questo ulteriore controllo serve appunto per effettuare la misurazione della durata del periodo, quindi a seguito di ogni fronte di salita viene salvato il valore del Timer5 e il numero di volte che questo è andato in overflow nelle apposite variabili di appoggio, viene impostata ad uno la variabile &#8220;flag_calcola_speed_sx&#8221;, che viene utilizzata nella funzione &#8220;misura_velocità&#8221;, che vedremo in seguito, per stabilire se è il momento di fare i conti per misurare la durata del periodo.<br />
Alla riga 26 viene controllato se il cambio di stato è avvenuto sul canale B dell&#8217;encoder collegato al motore sinistro, le istruzioni nelle due righe che seguono sono equivalenti a quelle già viste per le righe 9 e 10. Le righe che seguono invece servono a stabilire il verso di rotazione del motore, come già indicato nei grafici visti in precedenza.<br />
La parte di codice che segue (dalla riga 43 alla 80) è in pratica la replica dello stesso codice, solo che questa volta è relativo al motore destro e presenta un&#8217;unica differenza nella parte in cui viene stabilito il verso di rotazione, questo perché trattandosi di encoder home made non sono stati fatti per girare entrambi allo stesso modo. Infine alla riga 81 viene azzerato il flag dell&#8217;interrupt, per renderlo disponibile ad essere attivato al prossimo cambio di stato di uno dei quattro pin.</p>
<p>Il codice che segue riporta la funzione utilizzata per calcolare la durata del periodo di un&#8217;onda quadra, misurato come abbiamo visto in precedenza sul canale B dei due encoder.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p174code5'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1745"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</pre></td><td class="code" id="p174code5"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> misura_velocita<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> icp<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Si è concluso un periodo intero per il canale A del motore SX</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>flag_calcola_speed_sx<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// Memorizzo nella variabile unsigned int i due registri H e L del TMR5</span>
		tmr5_now_sx.<span style="color: #202020;">Word</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span><span style="color: #009900;">&#41;</span>tmr5_now_sx.<span style="color: #202020;">byteH</span><span style="color: #339933;">&lt;&lt;</span><span style="color: #0000dd;">8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span>tmr5_now_sx.<span style="color: #202020;">byteL</span><span style="color: #339933;">;</span>
 		<span style="color: #666666; font-style: italic;">// Controlla se ci sono stati un overflow del timer durante il conteggio,</span>
 		<span style="color: #666666; font-style: italic;">// per stabilire come calcolare il valore del periodo.</span>
 		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>tmr5_ovf_value_sx<span style="color: #339933;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			lcd_put_uchar<span style="color: #009900;">&#40;</span>tmr5_ovf_value_sx<span style="color: #339933;">,</span><span style="color: #0000dd;">3</span><span style="color: #339933;">,</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Se c'è stato overflow la durata del periodo è calolata sottraendo</span>
			<span style="color: #666666; font-style: italic;">// al valore massimo del TMR5 il valore della lettura precedente,</span>
			<span style="color: #666666; font-style: italic;">// aggiungendo per ogni altro overflow-1 il valore massimo di TMR5 e</span>
			<span style="color: #666666; font-style: italic;">// aggiungendo in fine il valore attuale sempre di TMR5+1.</span>
			durata_periodo_sx<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">short</span> <span style="color: #993333;">long</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFFFF</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>tmr5_ovf_value_sx<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFFFF</span><span style="color: #339933;">-</span>tmr5_old_sx<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span>tmr5_now_sx.<span style="color: #202020;">Word</span><span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Imposto il valore attuale del timer come old per il prossimo calcolo</span>
			tmr5_old_sx<span style="color: #339933;">=</span>tmr5_now_sx.<span style="color: #202020;">Word</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Se non c'è stato overflow la durata del periodo è la differenza</span>
			<span style="color: #666666; font-style: italic;">// tra la lettura precedente e quella attuale.</span>
			durata_periodo_sx<span style="color: #339933;">=</span>tmr5_now_sx.<span style="color: #202020;">Word</span><span style="color: #339933;">-</span>tmr5_old_sx<span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Imposto il valore attuale del timer come old per il prossimo calcolo</span>
			tmr5_old_sx<span style="color: #339933;">=</span>tmr5_now_sx.<span style="color: #202020;">Word</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		flag_calcola_speed_sx<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #666666; font-style: italic;">// Si è concluso un periodo intero per il canale A del motore DX</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>flag_calcola_speed_dx<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// Per i commenti vedi la sezione speculare sopra</span>
		tmr5_now_dx.<span style="color: #202020;">Word</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span><span style="color: #009900;">&#41;</span>tmr5_now_dx.<span style="color: #202020;">byteH</span><span style="color: #339933;">&lt;&lt;</span><span style="color: #0000dd;">8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span>tmr5_now_dx.<span style="color: #202020;">byteL</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>tmr5_ovf_value_dx<span style="color: #339933;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			lcd_put_uchar<span style="color: #009900;">&#40;</span>tmr5_ovf_value_dx<span style="color: #339933;">,</span><span style="color: #0000dd;">3</span><span style="color: #339933;">,</span><span style="color: #0000dd;">17</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			durata_periodo_dx<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">short</span> <span style="color: #993333;">long</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFFFF</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>tmr5_ovf_value_dx<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFFFF</span><span style="color: #339933;">-</span>tmr5_old_dx<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span>tmr5_now_dx.<span style="color: #202020;">Word</span><span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
			tmr5_old_dx<span style="color: #339933;">=</span>tmr5_now_dx.<span style="color: #202020;">Word</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span>
		<span style="color: #009900;">&#123;</span>
			durata_periodo_dx<span style="color: #339933;">=</span>tmr5_now_dx.<span style="color: #202020;">Word</span><span style="color: #339933;">-</span>tmr5_old_dx<span style="color: #339933;">;</span>
			tmr5_old_dx<span style="color: #339933;">=</span>tmr5_now_dx.<span style="color: #202020;">Word</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		flag_calcola_speed_dx<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Il primo controllo che viene fatto  sulle variabili &#8220;flag_calcola_speed_xx&#8221;, già viste nella gestione della ISR, per stabilire se ci sono i dati necessari per il calcolo.  Per prima cosa alla riga 9 vengono memorizzati i valori presi dai due registri a 8 bit che compongono il contatore del Timer5, in una variabile a 16 bit da utilizzare per i calcoli. Alla riga 12 viene controllato se durante la durata del periodo dell&#8217;onda sul canale B c&#8217;è stato uno o più overflow del registro del Timer5, nel caso questo sia vero viene applicata la formula nella riga 19 per calcolare la durata del periodo.  Il calcolo risulta molto più semplice quando non c&#8217;è stato overflow, in questo caso è sufficiente sottrarre al valore attuale del Timer quello della misura precedente. La misura per l&#8217;altro motore funziona allo stesso modo, in entrambi i casi è necessario ricordarsi di azzerare la variabile flag_calcola_speed_xx per evitare letture sbagliate.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p174code6'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1746"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p174code6"><pre class="c" style="font-family:monospace;"><span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// Mostra il numero di Click per ruota</span>
	lcd_put_uint<span style="color: #009900;">&#40;</span>clickSX<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	lcd_put_uint<span style="color: #009900;">&#40;</span>clickDX<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">15</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Esegue la misura della velocità sui due motori</span>
	misura_velocita<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Mostra il valore del periodo calcolato</span>
	lcd_put_uslong<span style="color: #009900;">&#40;</span>durata_periodo_sx<span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	lcd_put_uslong<span style="color: #009900;">&#40;</span>durata_periodo_dx<span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span><span style="color: #0000dd;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Mosta la direzione di rotazione dei motori impostata e quella verificata tramite gli encoder</span>
	...
	...
	...
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Questo box contiene una parte del codice eseguito nel loop principale presente nel main, come si può facilmente intuire vengono eseguite le istruzioni per visualizzare sul display le informazioni dei motori visualizzando i dati impostati e quelli misurati. Nella riga 7 viene richiamata la funzione &#8220;misura_velocita()&#8221; vista in precedenza.</p>
<p>Le informazioni sul display (20&#215;4) sono divise in due colonne destra e sinistra, dove vengono visualizzate le informazioni dei rispettivi motori destro e sinistro. La prima riga indica il valore impostato nel registro del PWM e la direzione impostata per i motori, la seconda invece indica il periodo misurato tramite il Timer5, la terza indica il numero di click letti dall&#8217;encoder e l&#8217;ultima riga indica quante volte è andato in overflow il registro del Timer5.</p>
<p style="text-align: center;"><a title="Dati visualizzati sul display." rel="lightbox[2010-1-3-23-7-50]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S2sVo2H5LUI/AAAAAAAABMs/W21EYdUucds/IMG_4728.JPG?imgmax=640"><img class="pie-img aligncenter" style="margin-top: 10px; margin-bottom: 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S2sVo2H5LUI/AAAAAAAABMs/W21EYdUucds/s144-c/IMG_4728.JPG" alt="Dati visualizzati sul display." width="144" height="144" /></a></p>
<p>Concludo il lungo articolo dicendo che ora abbiamo tutte le informazioni necessarie per poter implementare un controllo PID sui motori e per poi passare alla fase di controllo dell&#8217;odometria.</p>
<p><strong> Stay Tuned!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2010/02/15/fire-aggiornamenti/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PSoC1 Evaluation kit</title>
		<link>http://www.it-robotix.net/2010/02/04/psoc1-evaluation-kit/</link>
		<comments>http://www.it-robotix.net/2010/02/04/psoc1-evaluation-kit/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 16:22:42 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[PSoC]]></category>
		<category><![CDATA[cypress]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=170</guid>
		<description><![CDATA[Finalmente è arrivato il kit di vlutazione della Cypress per i microcontrollori della serie PSoC1.

Come potete vedere nella foto il kit arriva in una commoda scatola che contiene tutto il necessario per muovere i primi passi in questo nuovo mondo.
Nel dettaglio troviamo la scheda di valutazione, molto semplice, ma fornisce tutto il necessario per i [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente è arrivato il kit di vlutazione della Cypress per i microcontrollori della serie PSoC1.</p>
<p style="text-align: center;"><a rel="lightbox[2010-1-4-17-36-39]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S2DE9Biv1SI/AAAAAAAABK0/145V7mw9kd4/IMG_4498.JPG?imgmax=640"><img class="pie-img aligncenter" style="margin-top: 10px; margin-bottom: 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S2DE9Biv1SI/AAAAAAAABK0/145V7mw9kd4/s144-c/IMG_4498.JPG" alt="IMG_4498.JPG" width="144" height="144" /></a></p>
<p>Come potete vedere nella foto il kit arriva in una commoda scatola che contiene tutto il necessario per muovere i primi passi in questo nuovo mondo.</p>
<p>Nel dettaglio troviamo la scheda di valutazione, molto semplice, ma fornisce tutto il necessario per i primi esperimenti, quindi la circuteria di base per far funzionare gli PSoC, la possibilità di alimentare la scheda con un alimentatore esterno o in situazioni da viaggio anche con una batteria da 9V collegata direttamente alla scheda. Poi troviamo una bread board e dei connettori femmina che riportano tutti i pin del PSoC oltre all&#8217;alimentazione e alcuni dispositivi presenti sulla scheda, ovvero led, un pulsante e un trimmer. Sulla scheda è presente anche un display a matrice di punti 2 righe per 16 colonne.<span id="more-170"></span> Nella confezione troviamo ancora uno PSoC, un cavo USB per collegare il mini programmatore al PC, da notare che tramite il mini programmatore collegato al PC è anche possibile alimentare tutta la scheda, ci sono anche degli utilissi fili per fare i primi collegamenti sulla bread board.</p>
<p style="text-align: center;"><a rel="lightbox[2010-1-4-17-49-19]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S2DE-4xQ61I/AAAAAAAABK4/ComqRN7R6ZQ/IMG_4499.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S2DE-4xQ61I/AAAAAAAABK4/ComqRN7R6ZQ/s144-c/IMG_4499.JPG" alt="IMG_4499.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-1-4-17-49-35]" href="http://lh5.ggpht.com/_ndUeRg81MJ8/S2DFC6OdnLI/AAAAAAAABLA/G44sizCr094/IMG_4501.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh5.ggpht.com/_ndUeRg81MJ8/S2DFC6OdnLI/AAAAAAAABLA/G44sizCr094/s144-c/IMG_4501.JPG" alt="IMG_4501.JPG" width="144" height="144" /></a></p>
<p>Sempre nella confezione troviamo un CD con l&#8217;ambiente di sviluppo, ma consiglio di scaricarlo dal sito della Cypress, perchè li trovate l&#8217;ultima versione.<br />
Una volta installato il programma nella schermata iniziale dell&#8217;IDE c&#8217;è l&#8217;introduzione ad un primo programma, ed è anche l&#8217;unico test che ho fatto per il momento. Seguendo le istruzioni, che sono in inglese ma si capiscono facilmente, si può avere una prima idea su come funzionano questi dispositivi, in particolare si vede come funziona la parte di design dei moduli interni.<br />
L&#8217;esempio di cui parlavo utilizza un modulo PGA, al cui ingresso va collegato il trimmer presente sulla scheda. Tra le impostazioni del PGA il valore di amplificazione va settato ad 1, in questo modo viene usato come buffer per il secondo modulo che è un convertitore AD. Poi si deve aggiungere nella sezione digitale un timer ad 8 bit, questo servirà per generare una frequenza portante per far lampeggiare i led.<br />
L&#8217;ultimo passo è l&#8217;aggiunta del codice C che in pratica fa in modo di far lampeggiare un led in base al valore del trimmer letto dall&#8217;ADC, nel dettaglio il led rimane spento fino ad 1/3 del valore massimo letto dall&#8217;ADC, tra 1/3 e 1/2 lampeggia, oltre rimane acceso fisso.</p>
<p>Consiglio a chi fosse interessato a scaricare l&#8217;ambiente di sviluppo dal sito Cypress, in modo da farsi un&#8217;idea delle potenzialità anche prima di acquistare il kit.<br />
Segnalo inoltre la presenza di un apposito <a title="Roboteck's PSoC Wiki" href="http://psoc.wikidot.com/" target="_blank">wiki</a> dove alcune persone di Roboteck stanno inserendo informazioni ed esperienze su questi dispositivi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2010/02/04/psoc1-evaluation-kit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PSoC, ma ci serviva un altro micro?</title>
		<link>http://www.it-robotix.net/2010/01/25/psoc-ma-ci-serviva-un-altro-micro/</link>
		<comments>http://www.it-robotix.net/2010/01/25/psoc-ma-ci-serviva-un-altro-micro/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 15:36:49 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[cypress]]></category>
		<category><![CDATA[PSoC]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=166</guid>
		<description><![CDATA[Cypress da qualche anno produce dei nuovi microcontrollori chiamati PSoC, che vuol dire Programmable System on Chip, a differenza delle MCU che siamo abituati ad utilizzare questi hanno una particolarità interessante, ovvero dispongono di blocchi interni che possono essere configurati e collegati tra di loro a nostro piacimento, per realizzare le periferiche più adatte al [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cypress.com/?id=1353" target="_blank">Cypress</a> da qualche anno produce dei nuovi microcontrollori chiamati PSoC, che vuol dire Programmable System on Chip, a differenza delle MCU che siamo abituati ad utilizzare questi hanno una particolarità interessante, ovvero dispongono di blocchi interni che possono essere configurati e collegati tra di loro a nostro piacimento, per realizzare le periferiche più adatte al nostro progetto.<br />
Fin qui non sembra un gran che, però cerchiamo di capire meglio, per prima cosa i moduli che possiamo usare sono sia di tipo Digitale che Analogico, e forse i secondi sono la verà novità. Tramite un ambiente di programmazione visuale (scaricabile dal sito Cypress) è possibile definire i vari moduli che vogliamo usare nel nostro progetto, come e dove vogliamo collegarli, infine possiamo aggiungere del codice per elaborare uteriormente i segnali già condizionati dai moduli che abbiamo configurato.<span id="more-166"></span><br />
Di seuguito alcuni moduli disponibili nei PSoC.</p>
<p>PSoC blocchi Analogici (Rail-to-Rail)</p>
<ul>
<li>fino a 14-Bit ADCs</li>
<li>fino a 9-Bit DACs</li>
<li>amplificatori a guadagno programmabile</li>
<li>filtri e comparatori programmabili</li>
<li>precisa tensione di riferimento</li>
</ul>
<p>PSoC blocchi Digitali</p>
<ul>
<li>da 8 a 32bit Timers, Counters, e PWMs</li>
<li>generatore di sequenze pseudo casuali</li>
<li>2 UART (Full-Duplex)</li>
<li>moduli SPI, I2C</li>
</ul>
<p>Come detto tutti i moduli possono essere collegati tra loro per formare circuiti più complessi, inoltre è possibile definire anche a quale PIN sono collegati i vari segnali di ingresso ed uscita, questo permette di modificare anche il curcuito interno senza dover ridisegnare ogni volta il circuito stampato.</p>
<p>Almeno per quanto riguarda la serie 1, non sembra particolarmente performante come CPU, però va sottolineata la presenza di un modulo MAC per le moltiplicazioni in hardware tra numeri ad 8bit con segno e risultato a 16bit.<br />
Per applicazioni particolarmente complesse, forse è il caso di affiancarlo ad una CPU più potente, ma per quanto riguarda la parte di condizionamento dei segnali sembra molto interessante.</p>
<p>Sto aspettando il <a href="http://www.cypress.com/?rID=2541" target="_blank">kit di valutazione della serie 1</a>, appena capirò qualcosa di più dei PSoC scriverò qualche altro articolo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2010/01/25/psoc-ma-ci-serviva-un-altro-micro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classifica Robot Explorer</title>
		<link>http://www.it-robotix.net/2010/01/16/classifica-robot-explorer/</link>
		<comments>http://www.it-robotix.net/2010/01/16/classifica-robot-explorer/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 17:28:55 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Explorer]]></category>
		<category><![CDATA[Robofesta]]></category>
		<category><![CDATA[Robot]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=159</guid>
		<description><![CDATA[La gara Explorer si è svolta a ranghi ridotti erano presenti solo tre partecipanti, tutti provenienti da Roma.
Smoke ci ha deliziato con delle impennate, ma si è comunque piazzato al secondo posto, mentre ottima è stata la partecipazione di Nipotino che si è piazzato al primo posto con tranquillità ed eleganza nei movimenti. Al terzo [...]]]></description>
			<content:encoded><![CDATA[<p>La gara Explorer si è svolta a ranghi ridotti erano presenti solo tre partecipanti, tutti provenienti da Roma.</p>
<p>Smoke ci ha deliziato con delle impennate, ma si è comunque piazzato al secondo posto, mentre ottima è stata la partecipazione di Nipotino che si è piazzato al primo posto con tranquillità ed eleganza nei movimenti. Al terzo posto Spike, che alla sua prima partecipazione e con molte cose ancora da sistemare ha dato buona prova di se, con grosse promesse per il futuro.</p>
<p>Di seguito le foto della premiazione in ordine di classifica.</p>
<p style="text-align: center;"><a rel="lightbox[2010-0-6-18-27-2]" href="http://lh3.ggpht.com/_ndUeRg81MJ8/S1H0GJwpJwI/AAAAAAAABHA/_-tjFptZ02c/DSCN6469.JPG?imgmax=640"><img class="pie-img aligncenter" style="margin-top: 10px; margin-bottom: 10px;" src="http://lh3.ggpht.com/_ndUeRg81MJ8/S1H0GJwpJwI/AAAAAAAABHA/_-tjFptZ02c/s144-c/DSCN6469.JPG" alt="DSCN6469.JPG" width="144" height="144" /></a></p>
<p style="text-align: center;"><a rel="lightbox[2010-0-6-18-27-35]" href="http://lh6.ggpht.com/_ndUeRg81MJ8/S1H0FdIPMxI/AAAAAAAABG8/ngu1xwq60Ps/DSCN6467.JPG?imgmax=640"><img class="pie-img aligncenter" style="margin-top: 10px; margin-bottom: 10px;" src="http://lh6.ggpht.com/_ndUeRg81MJ8/S1H0FdIPMxI/AAAAAAAABG8/ngu1xwq60Ps/s144-c/DSCN6467.JPG" alt="DSCN6467.JPG" width="144" height="144" /></a></p>
<p style="text-align: center;"><a rel="lightbox[2010-0-6-18-27-59]" href="http://lh5.ggpht.com/_ndUeRg81MJ8/S1H0E3BgBbI/AAAAAAAABG4/3TLwjhn-iU0/DSCN6466.JPG?imgmax=640"><img class="pie-img aligncenter" style="margin-top: 10px; margin-bottom: 10px;" src="http://lh5.ggpht.com/_ndUeRg81MJ8/S1H0E3BgBbI/AAAAAAAABG4/3TLwjhn-iU0/s144-c/DSCN6466.JPG" alt="DSCN6466.JPG" width="144" height="144" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2010/01/16/classifica-robot-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Robot scaldano i motori</title>
		<link>http://www.it-robotix.net/2010/01/16/i-robot-scaldano-i-motori/</link>
		<comments>http://www.it-robotix.net/2010/01/16/i-robot-scaldano-i-motori/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 09:24:27 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Robofesta]]></category>
		<category><![CDATA[fascetti]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=154</guid>
		<description><![CDATA[Eccoci qui la manifestazione è già in fermento, molti robot pronti a darsi battaglia, in modo particolare i minisumo che sono in numero maggiore.
Più tardi comincieranno le gare, per ora tutti i robottari sono indaffarati per tarare i sensori e sistemare le ultime cose.
Durante la mattinata ci saranno anche delle presentazioni dell&#8217;università di Pisa, che [...]]]></description>
			<content:encoded><![CDATA[<p>Eccoci qui la manifestazione è già in fermento, molti robot pronti a darsi battaglia, in modo particolare i minisumo che sono in numero maggiore.<br />
Più tardi comincieranno le gare, per ora tutti i robottari sono indaffarati per tarare i sensori e sistemare le ultime cose.<br />
Durante la mattinata ci saranno anche delle presentazioni dell&#8217;università di Pisa, che potranno essere seguite in streaming dal sito del Fascetti.<br />
Di seguito una carrellata di prime foto.</p>
<div><a rel="lightbox[2010-0-6-10-19-6]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCYCuynjI/AAAAAAAABFg/BU63oaQtor4/DSCN6448.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCYCuynjI/AAAAAAAABFg/BU63oaQtor4/s144-c/DSCN6448.JPG" alt="DSCN6448.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-0-6-10-19-24]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCZUL9_BI/AAAAAAAABFk/8D_3Qbz3cCA/DSCN6449.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCZUL9_BI/AAAAAAAABFk/8D_3Qbz3cCA/s144-c/DSCN6449.JPG" alt="DSCN6449.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-0-6-10-19-42]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCaBCGQQI/AAAAAAAABFo/2thNOgV62lw/DSCN6450.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCaBCGQQI/AAAAAAAABFo/2thNOgV62lw/s144-c/DSCN6450.JPG" alt="DSCN6450.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-0-6-10-20-3]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCeG5K2rI/AAAAAAAABFw/eJBW1-xgjLU/DSCN6452.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCeG5K2rI/AAAAAAAABFw/eJBW1-xgjLU/s144-c/DSCN6452.JPG" alt="DSCN6452.JPG" width="144" height="144" /></a></div>
<p><span id="more-154"></span></p>
<div><a rel="lightbox[2010-0-6-10-20-19]" href="http://lh3.ggpht.com/_ndUeRg81MJ8/S1GCfDopFVI/AAAAAAAABF0/xwEWRDJEC_c/DSCN6453.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh3.ggpht.com/_ndUeRg81MJ8/S1GCfDopFVI/AAAAAAAABF0/xwEWRDJEC_c/s144-c/DSCN6453.JPG" alt="DSCN6453.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-0-6-10-20-35]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCfsn8EhI/AAAAAAAABF4/b-NqsMeJeYw/DSCN6454.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S1GCfsn8EhI/AAAAAAAABF4/b-NqsMeJeYw/s144-c/DSCN6454.JPG" alt="DSCN6454.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-0-6-10-20-51]" href="http://lh6.ggpht.com/_ndUeRg81MJ8/S1GCgPT4BcI/AAAAAAAABF8/a1Ltq1qG_70/DSCN6455.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh6.ggpht.com/_ndUeRg81MJ8/S1GCgPT4BcI/AAAAAAAABF8/a1Ltq1qG_70/s144-c/DSCN6455.JPG" alt="DSCN6455.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-0-6-10-21-7]" href="http://lh6.ggpht.com/_ndUeRg81MJ8/S1GCgo_eZhI/AAAAAAAABGA/Q0B5c4CZdi0/DSCN6456.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh6.ggpht.com/_ndUeRg81MJ8/S1GCgo_eZhI/AAAAAAAABGA/Q0B5c4CZdi0/s144-c/DSCN6456.JPG" alt="DSCN6456.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-0-6-10-21-28]" href="http://lh3.ggpht.com/_ndUeRg81MJ8/S1GChW-UqnI/AAAAAAAABGE/0IT1hO0F5HU/DSCN6457.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh3.ggpht.com/_ndUeRg81MJ8/S1GChW-UqnI/AAAAAAAABGE/0IT1hO0F5HU/s144-c/DSCN6457.JPG" alt="DSCN6457.JPG" width="144" height="144" /></a> <a rel="lightbox[2010-0-6-10-22-0]" href="http://lh3.ggpht.com/_ndUeRg81MJ8/S1GChzzuj0I/AAAAAAAABGI/h_O04ziGngY/DSCN6458.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh3.ggpht.com/_ndUeRg81MJ8/S1GChzzuj0I/AAAAAAAABGI/h_O04ziGngY/s144-c/DSCN6458.JPG" alt="DSCN6458.JPG" width="144" height="144" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2010/01/16/i-robot-scaldano-i-motori/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pronti, partenza, Pisa</title>
		<link>http://www.it-robotix.net/2010/01/13/pronti-partenza-pisa/</link>
		<comments>http://www.it-robotix.net/2010/01/13/pronti-partenza-pisa/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 11:13:44 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Robofesta]]></category>
		<category><![CDATA[fascetti]]></category>
		<category><![CDATA[pisa]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=148</guid>
		<description><![CDATA[Ci siamo, come avevo già annunciato in un altro post, sabato saremo a Pisa presso l&#8217;IPSIA Fascetti per la prima Robofesta dell&#8217;anno.
Nutrita sarà la partecipazione di componenti dei gruppi Roboteck, RoboItalia e ARRM, in particolare per quest&#8217;ultimo potrete seguire sul loro sito le varie &#8220;vicende&#8221; del weekend robotico, anche se conoscendo il gruppo si parlerà [...]]]></description>
			<content:encoded><![CDATA[<p>Ci siamo, come avevo già annunciato in un altro <a title="Prima Robofesta del 2010" href="http://www.it-robotix.net/2009/11/19/prima-robofesta-del-2010/" target="_self">post</a>, sabato saremo a Pisa presso l&#8217;IPSIA Fascetti per la prima Robofesta dell&#8217;anno.</p>
<p>Nutrita sarà la partecipazione di componenti dei gruppi <a href="http://www.roboteck.it" target="_blank">Roboteck</a>, <a title="RoboItalia" href="http://www.roboitalia.com/" target="_blank">RoboItalia</a> e <a title="ARRM" href="http://arrm.minisumo.net/" target="_blank">ARRM</a>, in particolare per quest&#8217;ultimo potrete seguire sul loro sito le varie &#8220;vicende&#8221; del weekend robotico, anche se conoscendo il gruppo si parlerà più delle notizie enogastronomiche che di Robotica <img src='http://www.it-robotix.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>Mentre qui su questo sito potrete seguire tutto ciò che riguarda la Robofesta, quindi gare, presentazioni, spiegazioni, &#8230;, insomma un reportage completo, quindi rimanete collegati per leggere le notizie aggiornate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2010/01/13/pronti-partenza-pisa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cos&#8217;è un Robot Explorer</title>
		<link>http://www.it-robotix.net/2010/01/11/cose-un-robot-explorer/</link>
		<comments>http://www.it-robotix.net/2010/01/11/cose-un-robot-explorer/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 16:17:49 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Explorer]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[spiegazione]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=142</guid>
		<description><![CDATA[Cercherò in poche righe di descrivere in cosa consiste una gara di Robot Explorer, cercando magari di invogliare qualcuno a cimentarsi in questo tipo di competizione.
Come dice il nome stesso Explorer, vuol dire Esploratore, quando il robot viene messo all&#8217;interno del campo di gara deve essere in grado di esplorarlo autonomamente, evitando gli ostacoli, e [...]]]></description>
			<content:encoded><![CDATA[<p>Cercherò in poche righe di descrivere in cosa consiste una gara di Robot Explorer, cercando magari di invogliare qualcuno a cimentarsi in questo tipo di competizione.<br />
Come dice il nome stesso Explorer, vuol dire Esploratore, quando il robot viene messo all&#8217;interno del campo di gara deve essere in grado di esplorarlo autonomamente, evitando gli ostacoli, e trovare quelle che vengono definite sorgenti, segnalando quando ne trova una di che tipo è.</p>
<p>Detto così può sembrare difficile, ma in realtà non è proprio così, oltretutto il problema (come sempre è consigliabile) può essere affrontato per gradi.<br />
Cominciamo con il vedere la struttura del &#8220;campo di gara&#8221;, che in pratica è un&#8217;area di 2&#215;4 metri su fondo nero e delimitata da pareti bianche alte 30cm, all&#8217;interno del campo sono presenti degli ostacoli le cui dimensioni sono 30&#215;20x40 cm, la disposizione degli ostacoli è casuale e stando al regolamento dovrebbe cambiare tra ogni prova e anche dopo le verifiche sul campo. Ma vediamo un disegno realizzato da <a title="Minisumo.net" href="http://www.minisumo.net" target="_blank">www.minisumo.net</a> per capire meglio la disposizione delle sorgenti.</p>
<p style="text-align: left;"><img class="pie-img aligncenter" src="http://lh5.ggpht.com/_ndUeRg81MJ8/S0s1MIupE4I/AAAAAAAABCA/sE5_l6AXdoc/CampoExplorer.jpg?imgmax=640" alt="Esempio di un campo gara Explorer visto dall'alto (immagine realizzata da www.minisumo.net)" width="448" height="195" /></p>
<p><span id="more-142"></span>Come si può vedere dall&#8217;immagine, in alcuni ostacoli sono presenti le sorgenti di luce (punti verdi) e suono (punti gialli), rispettivamente la luce è in pratica una lampadina che emette una luce proiettata solitamente tramite una parabola di quelle usate nelle torce, per il suono ci sono degli altoparlanti che emettono una sinusoide precisa ad una frequenza di 4KHz. La terza sorgente da cercare è il GAS, nel disegno rappresentata dai punti rossi nel campo, in questo caso si tratta di vaschette, inserite nel piano di gara e coperte da una griglia per permettere il passaggio del Robot, le quali contengono alcol etilico, i robot sono dotati di sensori in grado di captarne i vapori.</p>
<p>Come si nota sempre dal disegno, intorno ad ogni sorgente è disegnata una circonferenza, o una semi circonferenza, che serve ad indicare l&#8217;area in cui la segnalazione della sorgente è valida, ovvero se un robot segnala la sorgente al di fuori di questa area il punteggio non viene assegnato.</p>
<p style="text-align: center;"><a title="Campo di gara reale presso l'IPSIA Fascetti di Pisa" rel="lightbox[2010-0-1-16-38-6]" href="http://lh3.ggpht.com/_ndUeRg81MJ8/S0s4JJT_epI/AAAAAAAABCQ/mF9pXrMkS1g/1.jpg?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh3.ggpht.com/_ndUeRg81MJ8/S0s4JJT_epI/AAAAAAAABCQ/mF9pXrMkS1g/s144-c/1.jpg" alt="Campo di gara reale presso l'IPSIA Fascetti di Pisa" width="144" height="144" /></a> <a title="Il TEAM di IT-Robotix alle prese con le regolazioni di Smoke" rel="lightbox[2010-0-1-16-39-38]" href="http://lh3.ggpht.com/_ndUeRg81MJ8/S0s4Jf_mTaI/AAAAAAAABCY/A-QDIw8nu0U/12.jpg?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh3.ggpht.com/_ndUeRg81MJ8/S0s4Jf_mTaI/AAAAAAAABCY/A-QDIw8nu0U/s144-c/12.jpg" alt="Il TEAM di IT-Robotix alle prese con le regolazioni di Smoke" width="144" height="144" /></a> <a title="Prime prove di funzionamento di FIRE all'interno del campo di gara" rel="lightbox[2010-0-1-16-39-52]" href="http://lh4.ggpht.com/_ndUeRg81MJ8/S0s49cybIUI/AAAAAAAABCw/9koWwpPOIzU/DSCN3647.JPG?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh4.ggpht.com/_ndUeRg81MJ8/S0s49cybIUI/AAAAAAAABCw/9koWwpPOIzU/s144-c/DSCN3647.JPG" alt="Prime prove di funzionamento di FIRE all'interno del campo di gara" width="144" height="144" /></a></p>
<p>I punti vengono assegnati in questo modo:</p>
<ul>
<li>3 punti, per ogni sorgente di suono trovata</li>
<li>2 punti, per ogni sorgente di luce trovata</li>
<li>1 punto, per ogni sorgente di gas trovata</li>
<li>-1 punto, per ogni urto con un ostacolo non controllato</li>
<li>-2 punti, per ogni urto non controllato tra Robot, questo perché il regolamento prevede la possibilità di partecipare con più robot contemporaneamente</li>
</ul>
<p>Vediamo invece le caratteristiche che deve avere il Robot, i limiti sono solo sulle dimensioni che non devono superare 20&#215;20 cm di base e 25cm di altezza, da queste misure sono esclusi eventuali sensori meccanici (comunemente chiamati baffi) per la rilevazione degli ostacoli. Come già detto il regolamento permette di utilizzare anche più Robot contemporaneamente, purché questi rientrino tutti insieme nel limite delle dimensioni. Il regolamento non mette invece limiti per quanto riguarda le soluzioni tecnologiche utilizzate nel Robot.</p>
<p style="text-align: center;"><a title="Smoke, un robot Explorer" rel="lightbox[2010-0-1-17-5-8]" href="http://lh5.ggpht.com/_ndUeRg81MJ8/S0s2LoDnbRI/AAAAAAAABCI/1TSlYRV5xbM/smoke.jpg?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh5.ggpht.com/_ndUeRg81MJ8/S0s2LoDnbRI/AAAAAAAABCI/1TSlYRV5xbM/s144-c/smoke.jpg" alt="Smoke, un robot Explorer" width="144" height="144" /></a> <a title="Robot in azione" rel="lightbox[2010-0-1-17-5-40]" href="http://lh5.ggpht.com/_ndUeRg81MJ8/S0s4JgbrWFI/AAAAAAAABCc/vv4KC2gCluQ/15.jpg?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh5.ggpht.com/_ndUeRg81MJ8/S0s4JgbrWFI/AAAAAAAABCc/vv4KC2gCluQ/s144-c/15.jpg" alt="Robot in azione" width="144" height="144" /></a> <a title="Ragazzi alle prese con la messa appunto dei Robot nel campo di gara" rel="lightbox[2010-0-1-17-5-50]" href="http://lh6.ggpht.com/_ndUeRg81MJ8/S0s4JYUt2MI/AAAAAAAABCU/qH0WrJYyv9U/10.jpg?imgmax=640"><img class="pie-img" style="margin: 10px 10px 10px 10px;" src="http://lh6.ggpht.com/_ndUeRg81MJ8/S0s4JYUt2MI/AAAAAAAABCU/qH0WrJYyv9U/s144-c/10.jpg" alt="Ragazzi alle prese con la messa appunto dei Robot nel campo di gara" width="144" height="144" /></a></p>
<p>Sul sito di <a title="Regolamenti" href="http://www.minisumo.net/?page_id=274" target="_blank">Minisumo.net</a> potete trovare il regolamento relativo a questa categoria e altre.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2010/01/11/cose-un-robot-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buon Natale da IT-Robotix</title>
		<link>http://www.it-robotix.net/2009/12/24/buon-natale-da-it-robotix/</link>
		<comments>http://www.it-robotix.net/2009/12/24/buon-natale-da-it-robotix/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 21:00:00 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Senza categoria]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=70</guid>
		<description><![CDATA[
Auguri di buon Natale da IT-Robotix!
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="Natale" /><param name="bgcolor" value="#FFFFFF" /><param name="src" value="/wp-content/uploads/2009/12/angelo-natalizio.swf" /><param name="quality" value="high" /><embed type="application/x-shockwave-flash" width="550" height="400" src="/wp-content/uploads/2009/12/angelo-natalizio.swf" quality="high" bgcolor="#FFFFFF" name="Natale"></embed></object></p>
<p style="text-align: center;">Auguri di buon Natale da <strong>IT-Robotix</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2009/12/24/buon-natale-da-it-robotix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porting completato</title>
		<link>http://www.it-robotix.net/2009/12/23/porting-completato/</link>
		<comments>http://www.it-robotix.net/2009/12/23/porting-completato/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 15:56:35 +0000</pubDate>
		<dc:creator>bobboteck</dc:creator>
				<category><![CDATA[Senza categoria]]></category>
		<category><![CDATA[fascetti]]></category>
		<category><![CDATA[sito]]></category>

		<guid isPermaLink="false">http://www.it-robotix.net/?p=114</guid>
		<description><![CDATA[Finalmente ci siamo, tutte le pagine sono state riportate dal vecchio sito, ora il nuovo IT-Robotix è pronto per ospitare i nuovi contenuti.
Dopo la pausa delle festività natalizie, ci sarà la preparazione alla Robofesta di Pisa presso l&#8217;IPSIA Fascetti, della quale cercheremo di fare un reportage completo e in diretta, ma oltre a questo col [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente ci siamo, tutte le pagine sono state riportate dal vecchio sito, ora il nuovo IT-Robotix è pronto per ospitare i nuovi contenuti.</p>
<p>Dopo la pausa delle festività natalizie, ci sarà la preparazione alla Robofesta di Pisa presso l&#8217;IPSIA Fascetti, della quale cercheremo di fare un reportage completo e in diretta, ma oltre a questo col nuovo anno ci saranno nuovi progetti e anche la continuazione di quelli che per un po&#8217; si sono arrenati.</p>
<p>Buona navigazione a tutti.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.it-robotix.net/2009/12/23/porting-completato/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
