<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>PIC Adicto</title>
	<atom:link href="http://picadicto.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://picadicto.wordpress.com</link>
	<description>Blog de microcontroladores PICs</description>
	<lastBuildDate>Sat, 12 Feb 2011 23:59:48 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='picadicto.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>PIC Adicto</title>
		<link>http://picadicto.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://picadicto.wordpress.com/osd.xml" title="PIC Adicto" />
	<atom:link rel='hub' href='http://picadicto.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Cerrado por vacaciones&#8230;</title>
		<link>http://picadicto.wordpress.com/2009/08/31/cerrado-por-vacaciones/</link>
		<comments>http://picadicto.wordpress.com/2009/08/31/cerrado-por-vacaciones/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 17:00:27 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[Off-Topic]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=106</guid>
		<description><![CDATA[Me desenchufo&#8230;  nos vemos a la vuelta!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=106&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><img class="aligncenter size-full wp-image-107" title="closed_md" src="http://picadicto.files.wordpress.com/2009/08/closed_md.jpg?w=311&#038;h=311" alt="closed_md" width="311" height="311" /></p>
<p style="text-align:left;">Me desenchufo&#8230;  nos vemos a la vuelta!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=106&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/31/cerrado-por-vacaciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/closed_md.jpg" medium="image">
			<media:title type="html">closed_md</media:title>
		</media:content>
	</item>
		<item>
		<title>Control de velocidad sencillo para MCC</title>
		<link>http://picadicto.wordpress.com/2009/08/26/control-de-velocidad-sencillo-para-mcc/</link>
		<comments>http://picadicto.wordpress.com/2009/08/26/control-de-velocidad-sencillo-para-mcc/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 21:28:30 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[16F]]></category>
		<category><![CDATA[Código CCS]]></category>
		<category><![CDATA[Simulación]]></category>
		<category><![CDATA[control de velocidad]]></category>
		<category><![CDATA[mcc]]></category>
		<category><![CDATA[pwm]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=99</guid>
		<description><![CDATA[En otro post, había comentado cómo poder invertir el giro de un motor de corriente continua. En este utilizando un PIC16F84A se muestra una especie de control PWM muy sencillo. La idea es mostrar qué es un control por PWM y, el que lo necesite, puede adaptar los tiempos y el código según la aplicación. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=99&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-100" title="pwm" src="http://picadicto.files.wordpress.com/2009/08/pwm.gif?w=333&#038;h=187" alt="pwm" width="333" height="187" />En <a href="http://picadicto.wordpress.com/2009/08/18/sentido-de-giro-de-un-mcc/" target="_blank">otro post</a>, había comentado cómo poder invertir el giro de un motor de corriente continua. En este utilizando un PIC16F84A se muestra una especie de control PWM muy sencillo. <strong>La idea es mostrar qué es un control por PWM y, el que lo necesite, puede adaptar los tiempos y el código según la aplicación</strong>. Los valores de los tiempos y el sentido de giro del motor se guardan en la eeprom para que no sea necesario volver a setearlo cada vez que energizamos el circuito.</p>
<p><span id="more-99"></span>La forma más simple de variar la velocidad de un motor de corriente continua es variando la tensión de alimentación. <strong>El PWM es una señal de período fijo pero tiempo activo variable</strong>. Con esta señal se excita a los transistores del puente según el sentido de giro deseado.</p>
<p><strong>Dadas las características constructivas del motor, este &#8220;no se da cuenta&#8221; de que alimentación es un tren de pulsos, sino que ve un valor de tensión continua igual al valor medio de dicho tren de pulsos. Con lo cual, variando el ancho de la porción activa de la señal de control se estará variando el valor medio y por consiguiente la velocidad del motor, simple no?</strong></p>
<p><span style="text-decoration:underline;"><em><strong>Circuito</strong></em></span></p>
<p>En el circuito pueden verse 4 pulsadores, estos regulan velocidad ascendente, descendente, sentido de giro y arranca parada del motor. Sería conveniente una llave en lugar de un pulsador para el arranque/parada ya que esta debe estar apretada para que el motor gire.</p>
<p style="text-align:center;"><a href="http://picadicto.files.wordpress.com/2009/08/pwm_simple.jpg" target="_blank"><img class="aligncenter size-full wp-image-101" title="pwm_simple" src="http://picadicto.files.wordpress.com/2009/08/pwm_simple.jpg?w=503&#038;h=368" alt="pwm_simple" width="503" height="368" /></a></p>
<p><span style="text-decoration:underline;"><em><strong>Código Fuente</strong></em></span></p>
<pre class="brush: php;">
void main()
{
   set_tris_a(0xff);
   set_tris_b(0x00);
   output_low(PIN_B6);
   output_low(PIN_B7);
   do{
      if (!input(PIN_A0)){
         tiempo=tiempo+10;
         write_eeprom(0,tiempo);
      }
      if (!input(PIN_A1)){
         tiempo=tiempo-10;
         write_eeprom(0,tiempo);
      }
      if (!input(PIN_A3)){
         tiempo=read_eeprom(0);
         horario=read_eeprom(1);
         if (horario==0){
            output_low(PIN_B6);
            output_high(PIN_B7);
            delay_ms(tiempo);
            output_low(PIN_B7);
            delay_ms(256-tiempo);
         }else{
            output_low(PIN_B7);
            output_high(PIN_B6);
            delay_ms(tiempo);
            output_low(PIN_B6);
            delay_ms(256-tiempo);
         }
      }
      if (!input(PIN_A2)){
         horario=!horario;
         write_eeprom(1,horario);
      }
   }while (true);
}
</pre>
<p>Las variables tiempo y horario son del tipo byte y se definene en algún lugar libre de la memoria.<br />
<span style="text-decoration:underline;"><em><strong>Simulación</strong></em></span></p>
<span style="text-align:center; display: block;"><a href="http://picadicto.wordpress.com/2009/08/26/control-de-velocidad-sencillo-para-mcc/"><img src="http://img.youtube.com/vi/7ce4ihh1tZU/2.jpg" alt="" /></a></span>
<p><span style="text-decoration:underline;"><em><strong>Algunas aclaraciones</strong></em></span></p>
<p>Si bien la simulación funciona bien, es necesario tener en cuenta que invertir el sentido de giro con el motor en marcha plena ocasiona corrientes muy alta por los transistores y puede llegar a destruirlos. Se puede modificar el código para que baje la velocidad y luego invierta la marcha.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=99&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/26/control-de-velocidad-sencillo-para-mcc/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/pwm.gif" medium="image">
			<media:title type="html">pwm</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/pwm_simple.jpg" medium="image">
			<media:title type="html">pwm_simple</media:title>
		</media:content>
	</item>
		<item>
		<title>Manejando un teclado matricial con un solo terminal</title>
		<link>http://picadicto.wordpress.com/2009/08/23/manejando-un-teclado-matricial-con-un-solo-terminal/</link>
		<comments>http://picadicto.wordpress.com/2009/08/23/manejando-un-teclado-matricial-con-un-solo-terminal/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 17:15:56 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[16F]]></category>
		<category><![CDATA[Código CCS]]></category>
		<category><![CDATA[Simulación]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[manejar un teclado con un solo pin]]></category>
		<category><![CDATA[teclado]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=91</guid>
		<description><![CDATA[Leyendo un documento de Microchip llamado Tips &#8216;n tricks (algo así como consejos y trucos) encontré una muy buena idea para manejar un teclado matricial de 12 teclas con un único terminal del PIC como se ve en la imagen de la derecha. La idea es leer el valor de tensión mediante un canal del [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=91&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-93" title="tips_n_tricks_teclado" src="http://picadicto.files.wordpress.com/2009/08/tips_n_tricks_teclado.jpg?w=299&#038;h=191" alt="tips_n_tricks_teclado" width="299" height="191" />Leyendo un documento de Microchip llamado <a href="http://ww1.microchip.com/downloads/en/devicedoc/40040b.pdf" target="_blank">Tips &#8216;n tricks</a> (algo así como consejos y trucos) encontré una <strong>muy buena idea para manejar un teclado matricial de 12 teclas con un único terminal del PIC</strong> como se ve en la imagen de la derecha. La idea es leer el valor de tensión mediante un canal del conversor A/D del PIC, esta tensión será distinta para cada tecla apretada siempre y cuando hagamos una buena elección de los valores de las resistencias conectadas. <strong>En el ejemplo que muestro el LCD imprime la tecla pulsada, con # se borra el display y con * se cambia de línea</strong>.</p>
<p><span id="more-91"></span>El circuito es muy sencillo, sólo se necesita el teclado matricia, un display LCD y un conversor A/D. Para el ejemplo utilicé un PIC16F873A pero esta implementación es muy útil cuando disponemos de pocos terminales y, como dice el documento, es muy práctico para los PICs 12F de 8 terminales.</p>
<p style="text-align:center;"><a href="http://picadicto.files.wordpress.com/2009/08/teclado_unico_pin1.jpg" target="_blank"><img class="aligncenter size-full wp-image-95" title="teclado_unico_pin" src="http://picadicto.files.wordpress.com/2009/08/teclado_unico_pin1.jpg?w=545&#038;h=374" alt="teclado_unico_pin" width="545" height="374" /></a></p>
<p><span style="text-decoration:underline;"><em><strong>Simulación</strong></em></span></p>
<span style="text-align:center; display: block;"><a href="http://picadicto.wordpress.com/2009/08/23/manejando-un-teclado-matricial-con-un-solo-terminal/"><img src="http://img.youtube.com/vi/7oN2kh1jjkI/2.jpg" alt="" /></a></span>
<p><span style="text-decoration:underline;"><em><strong>Código Fuente</strong></em></span></p>
<p>Utilizando la librería del CCS para LCDs el código es muy sencillo, consiste en comparar el valor de lectura del conversor A/D con el cálculo de tensión por cada tecla según el divisor resistivo que se utilice. <strong>Los límites de comparación de cada tecla mostrados son para los valores de resistencias del circuito y considerando una tolerancia del 1%</strong>.</p>
<pre class="brush: php;">
#include &lt;LCD.C&gt;
void muestra(long valor);
void main()
{
   long tecla;
   set_tris_a(0xff);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(ALL_ANALOG);
   set_adc_channel(0);
   lcd_init();
   do{
      tecla=read_adc();
      muestra(tecla);
   }while(true);
}
void muestra (long valor){
   if ((valor &gt;746)&amp;(valor&lt;761)){
      lcd_putc(&quot;1&quot;);
      delay_ms(400);
   }
      if ((valor &gt;480)&amp;(valor&lt;490)){
      lcd_putc(&quot;2&quot;);
      delay_ms(400);
   }
   if ((valor &gt;364)&amp;(valor&lt;372)){
      lcd_putc(&quot;3&quot;);
      delay_ms(400);
   }
   if ((valor &gt;687)&amp;(valor&lt;701)){
      lcd_putc(&quot;4&quot;);
      delay_ms(400);
   }
   if ((valor &gt;456)&amp;(valor&lt;465)){
      lcd_putc(&quot;5&quot;);
      delay_ms(400);
   }
   if ((valor &gt;350)&amp;(valor&lt;357)){
      lcd_putc(&quot;6&quot;);
      delay_ms(400);
   }
   if ((valor &gt;654)&amp;(valor&lt;668)){
      lcd_putc(&quot;7&quot;);
      delay_ms(400);
   }
   if ((valor &gt;439)&amp;(valor&lt;448)){
      lcd_putc(&quot;8&quot;);
      delay_ms(400);
   }
   if ((valor &gt;342)&amp;(valor&lt;349)){
      lcd_putc(&quot;9&quot;);
      delay_ms(400);
   }
   if ((valor &gt;614)&amp;(valor&lt;626)){
      lcd_putc(&quot;\n&quot;);
      delay_ms(400);
   }
   if ((valor &gt;330)&amp;(valor&lt;337)){
      lcd_init();
      delay_ms(400);
   }
   if ((valor &gt;421)&amp;(valor&lt;430)){
      lcd_putc(&quot;0&quot;);
      delay_ms(400);
   }
}
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=91&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/23/manejando-un-teclado-matricial-con-un-solo-terminal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/tips_n_tricks_teclado.jpg?w=299" medium="image">
			<media:title type="html">tips_n_tricks_teclado</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/teclado_unico_pin1.jpg" medium="image">
			<media:title type="html">teclado_unico_pin</media:title>
		</media:content>
	</item>
		<item>
		<title>Controlado la temperatura con DS18B20</title>
		<link>http://picadicto.wordpress.com/2009/08/22/controlado-la-temperatura-con-ds18b20/</link>
		<comments>http://picadicto.wordpress.com/2009/08/22/controlado-la-temperatura-con-ds18b20/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 18:59:03 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[16F]]></category>
		<category><![CDATA[Código CCS]]></category>
		<category><![CDATA[Simulación]]></category>
		<category><![CDATA[ds1820]]></category>
		<category><![CDATA[ds18b20]]></category>
		<category><![CDATA[temperatura]]></category>
		<category><![CDATA[termostato]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=79</guid>
		<description><![CDATA[Para quiénes necesiten mantener la temperatura dentro un rango determinado, este post es el indicado. Por medio de un DS18B20 de Dallas (Maxim) podemos medir temperaturas desde -55 ºC a 100ºC con una resolución seleccionable de 9 a 12 bits. En este ejemplo se muestra la temperatura actual en un display inteligente de LCD donde [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=79&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-80" title="ds1820" src="http://picadicto.files.wordpress.com/2009/08/ds1820.jpg?w=177&#038;h=240" alt="ds1820" width="177" height="240" />Para quiénes necesiten mantener la temperatura dentro un rango determinado, este post es el indicado. Por medio de un <a href="http://datasheets.maxim-ic.com/en/ds/DS18B20-PAR.pdf" target="_blank">DS18B20</a> de Dallas (Maxim) podemos medir temperaturas desde -55 ºC a 100ºC con una resolución seleccionable de 9 a 12 bits. <strong>En este ejemplo se muestra la temperatura actual en un display inteligente de LCD donde la idea es fijar la temperatura en 27ºC con una ventana de histéresis térmica de 1ºC usando un 16F628A</strong></p>
<p>El protocolo de comunicación entre el PIC y el DS18B20 se hace solamente utilizando un terminal del mismo, <strong> se llama 1-Wire interface y hay muchísimos dispositivos que lo utilizan, por lo que el código servirá para cualquiera de ellos</strong>.</p>
<p><span id="more-79"></span>Como se ve en la imagen de arriba, el DS18B20 viene en un encapsulado TO-92 y es muy sencillo de colocar en el elemento al cual queremos medirle la temperatura. En el circuito se puede ver que no puse ningún dispositivo calefactor, sino un led que enciende emulando que hay un circuito entregando calor en ese momento.</p>
<p>La ventana de histéresis térmica es de 1ºC, con lo cual mientras la temperatura medida esté dentro delñ rango [26..28]ºC el led estará apagado. Al momento de sobrepasar la temperatura de los 28ºC se activará una alarma (y quién desee puede agregar acá un circuito enfriador). Si la temperatura está por debajo de los 26ºC se activará el circuito calefactor hasta que llegue a la temperatura deseada.</p>
<p><strong>Si bien este tipo de control es ON-OFF, dado la propia inercia térmica de la mayoría de los fluidos y elementos que se deben controlar la temperatura, podemos estar seguros que siempre estará en el entorno previsto</strong>.</p>
<p style="text-align:center;"><a href="http://picadicto.files.wordpress.com/2009/08/termostato1.jpg" target="_blank"><img class="aligncenter size-full wp-image-83" title="termostato" src="http://picadicto.files.wordpress.com/2009/08/termostato1.jpg?w=690&#038;h=487" alt="termostato" width="690" height="487" /></a></p>
<p style="text-align:left;">En el código siguiente se puede ver que los valores máximos y mínimos de temperatura están en variables, por lo que es muy sencillo agregar unos pulsadores en los terminales libres para modificarlos mientras se está ejecutando el sistema. También recomiendo guardar estos valores en la EEPROM para evitar tener que hacer el set-point cada vez que se alimente el circuito.</p>
<pre class="brush: php;">
void alarma();
void main(){
float temperatura;
float minimo;
float maximo;
lcd_init();
minimo=26;
maximo=28;
while (1){
temperatura = ds1820_read();
lcd_gotoxy(1,1);
printf(lcd_putc,&quot;TEMP: %3.1f &quot;, temperatura);
lcd_putc(223);
lcd_putc(&quot;C    &quot;);
lcd_gotoxy(1,2);
if (temperatura&lt;=minimo){
printf(lcd_putc,&quot;Frio! Calentando&quot;);
 output_high(PIN_A1);}
if (temperatura&gt;=maximo){
printf(lcd_putc,&quot;Caliente!       &quot;);
output_low(PIN_A1);
alarma();}
if ((temperaturaminimo)){
printf(lcd_putc,&quot;Temperatura OK  &quot;);
output_low(PIN_A1);}}
}
void alarma(){
output_high(PIN_B3);
delay_ms(100);
output_low(PIN_B3);
delay_ms(100);}
</pre>
<p>Las librerías usadas fueron las <a href="http://www.ccsinfo.com/forum/viewtopic.php?t=28425" target="_blank">utilizadas acá</a> y la propia del LCD que trae el CCS.</p>
<p><span style="text-decoration:underline;"><em><strong>Simulacion en Proteus</strong></em></span></p>
<span style="text-align:center; display: block;"><a href="http://picadicto.wordpress.com/2009/08/22/controlado-la-temperatura-con-ds18b20/"><img src="http://img.youtube.com/vi/oMBfonhMdE8/2.jpg" alt="" /></a></span>
<p>En el video se puede apreciar los tres estados posibles del display el sonido de alarma cuando sube la temperatura. En el momento de grabar el video la simulación se hace bastante lenta (si, ya sé que tengo que cambiar la PC) es por eso que parece que la alarma suena un poco descoordinada.<span style="text-decoration:underline;"><em><strong><br />
</strong></em></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/79/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=79&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/22/controlado-la-temperatura-con-ds18b20/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/ds1820.jpg?w=221" medium="image">
			<media:title type="html">ds1820</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/termostato1.jpg" medium="image">
			<media:title type="html">termostato</media:title>
		</media:content>
	</item>
		<item>
		<title>Sentido de giro de un MCC</title>
		<link>http://picadicto.wordpress.com/2009/08/18/sentido-de-giro-de-un-mcc/</link>
		<comments>http://picadicto.wordpress.com/2009/08/18/sentido-de-giro-de-un-mcc/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 15:35:34 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[16F]]></category>
		<category><![CDATA[Código CCS]]></category>
		<category><![CDATA[Simulación]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=62</guid>
		<description><![CDATA[A raíz del comentario de Justo en otro post, muestro aquí como manejar el sentido de giro de un motor de corriente continua. Básicamente la técnica consiste en hacer circular corriente continua en un sentido u otro según se quiera giro horario o antihorario. El diseño está basado en un microcontrolador PIC16F84A el cual corre [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=62&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-68" title="mcc" src="http://picadicto.files.wordpress.com/2009/08/mcc1.jpg?w=177&#038;h=118" alt="mcc" width="177" height="118" /></p>
<p>A raíz del comentario de <strong><em>Justo</em></strong> en <a href="http://picadicto.wordpress.com/2009/08/05/leds-viajeros/" target="_blank">otro post</a>, muestro aquí como manejar el sentido de giro de un motor de corriente continua. Básicamente l<strong>a técnica consiste en hacer circular corriente continua en un sentido u otro según se quiera giro horario o antihorario</strong>. El diseño está basado en un microcontrolador PIC16F84A el cual corre un programa más que simple: Al presionar un pulsador el motor gira durante 3 segundos en un sentido y por otros 3 segundos en el sentido inverso.</p>
<p><span id="more-62"></span>El circuito que cumple las especificaciones es el siguiente:</p>
<p style="text-align:center;"><img class="aligncenter size-medium wp-image-69" title="circuito_mcc" src="http://picadicto.files.wordpress.com/2009/08/circuito_mcc.jpg?w=300&#038;h=201" alt="circuito_mcc" width="300" height="201" /></p>
<p>El código fuente sería el listado aquí abajo, para el caso de querer modificar los tiempos en que gira en uno u otro sentido, sólo es necesario adecuar los tiempos en las líneas 10 y 13.</p>
<pre class="brush: php;">
#use delay(clock=4000000)
#use fast_io(b)
#byte portb = 0x6
void main(){
set_tris_b(0x01);    //RB1 entrada, los demás salidas
portb = 0x00;
do{
if(input(PIN_B0)){
output_high(PIN_B1);
delay_ms(3000);
output_low(PIN_B1);
output_high(PIN_B2);
delay_ms(3000);
output_low(PIN_B2);
}
}while(true);
}
</pre>
<p><span style="text-decoration:underline;"><em><strong>Simulación:</strong></em></span></p>
<span style="text-align:center; display: block;"><a href="http://picadicto.wordpress.com/2009/08/18/sentido-de-giro-de-un-mcc/"><img src="http://img.youtube.com/vi/L6kC50YYCRw/2.jpg" alt="" /></a></span>
<p><span style="text-decoration:underline;"><em><strong>Aclaraciones importantes!</strong></em></span></p>
<p>Conceptualmente el circuito de arriba cumple las especificaciones, pero <strong>hay que tener muy en cuenta</strong> <strong>que los microcontroladores están muy limitados en el manejo de corriente pos sus terminales</strong>. Es por esto que se hace necesario utilizar drivers de corriente para manejar la corriente que la carga requiera, en este caso el motor de cc. También utilizando drivers independizamos la tensión de alimentación que le entregamos al motor, ya que la mayoría de los motores de uso industrial están muy por encima de los 5v que utiliza el PIC.</p>
<p>Una posibilidad es utilizar un puente de transistores como el circuito que sigue, lo importante es tener en cuenta de nunca encender ambas ramas del puente al mismo tiempo, ya que esto ocasionaría un cortocircuito directo en la fuente de alimentación Vcc del motor. <strong>La elección de los transistores Q1..Q4 del puente dependerá de la corriente y la tensión Vce que deben soportar de acuerdo al motor que conectemos</strong>.</p>
<p style="text-align:center;"><img class="size-full wp-image-72 aligncenter" title="circuito_mcc2" src="http://picadicto.files.wordpress.com/2009/08/circuito_mcc2.jpg?w=628&#038;h=470" alt="circuito_mcc2" width="628" height="470" /></p>
<p><span style="text-decoration:underline;"><em><strong>Más Aclaraciones!!</strong></em></span></p>
<p>Con el código de arriba, es posible sólo la inversión de giro. Para el caso que además de esto se necesite controlar la velocidad de giro se puede implementar en el PIC una salida PWM. Prometo extender este tema en otros post y mostrar cómo podemos lograr una señal PWM utilizando PICs que traigan estos módulos o bien, escribirla por código para aquellos que no tienen incorporada esta funcionalidad como los PIC16F84AA.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=62&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/18/sentido-de-giro-de-un-mcc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/mcc1.jpg" medium="image">
			<media:title type="html">mcc</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/circuito_mcc.jpg?w=300" medium="image">
			<media:title type="html">circuito_mcc</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/circuito_mcc2.jpg" medium="image">
			<media:title type="html">circuito_mcc2</media:title>
		</media:content>
	</item>
		<item>
		<title>Placa de desarrollo Explorer 16</title>
		<link>http://picadicto.wordpress.com/2009/08/16/placa-de-desarrollo-explorer-16/</link>
		<comments>http://picadicto.wordpress.com/2009/08/16/placa-de-desarrollo-explorer-16/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 02:11:51 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[24F]]></category>
		<category><![CDATA[Explorer 16]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=46</guid>
		<description><![CDATA[Si bien el Proteus es una magnífica herramienta para realizar las simulaciones de los proyectos, no hay nada mejor para probar y debuggear que la placa física con el microcontrolador programado. Generalmente, suele ser un poco molesto realizar las plcasa de PCB para cada uno de los desarrollos o pruebas que uno quiera hacer con [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=46&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-49" title="71797-1" src="http://picadicto.files.wordpress.com/2009/08/71797-11.png?w=221&#038;h=166" alt="71797-1" width="221" height="166" /></p>
<p>Si bien el Proteus es una magnífica herramienta para realizar las simulaciones de los proyectos, no hay nada mejor para probar y debuggear que la placa física con el microcontrolador programado. Generalmente, suele ser un poco molesto realizar las plcasa de PCB para cada uno de los desarrollos o pruebas que uno quiera hacer con PICs. Atento a esto Microchip ofrece una <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=81" target="_blank">cantidad de placas de desarrollo muy variada</a> según el tema en el cual uno desarrollará la aplicación. En mi caso opté por la<a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en024858&amp;part=DM240001&amp;redirects=explorer16" target="_blank"> Explorer 16</a>, se trata de una placa de desarrollo para PIC24 y dsPIC33 muy versatil y con muchas funcionalidades, las cuales describo a continuación con un ejemplo muy simple!</p>
<p><span id="more-46"></span></p>
<p style="text-align:center;"><a href="http://picadicto.files.wordpress.com/2009/08/explorer16-002.jpg"><img class="size-full wp-image-51 aligncenter" title="explorer16 002" src="http://picadicto.files.wordpress.com/2009/08/explorer16-002.jpg?w=491&#038;h=369" alt="explorer16 002" width="491" height="369" /></a></p>
<p><em><strong>Descripción general</strong></em></p>
<p>Haciendo click en la imágen se puede ver con mejor tamaño y (obviando el flash al sacar la foto), podemos destacar:</p>
<p>En la izquierda de la placa el conector<strong> RJ11 para el ICD2</strong>, el conector <strong>USB tipo B</strong> para utilizar las caractrísticas de comunicación USB del PIC18F4550 de montaje superficial que está ahí cerca, el conector <strong>DB9 para RS-232</strong> y el conector para alimentar la placa.</p>
<p>En la parte inferior hay <strong>4 pulsadores</strong> y arriba de estos <strong>8 LEDs</strong> conectados mediante resistencias limitadoras a los terminales A0..A7 del PIC central. Este puede ser un PIC24 o dsPIC33. La Explorer 16 viene con un <strong>PIC24FJ128GA010</strong> y un <strong>dsPIC33FFJ256GP710</strong>, ambos en un adaptador de SMD a conectores muy cómodos para la misma.</p>
<p>En la parte superior se puede observar el <strong>display de LCD de 16 caracteres y dos líneas</strong>, debajo de este un <strong>pulsador de reset y un potenciómetro</strong> para emular una entrada analógica. También hay un <strong>sensor de temperatura</strong> y un área para soldar componentes arriba a la derecha que no pienso usar nunca.</p>
<p>Por último a la izquierda puede verse el slot para<strong> conectar la Explorer 16 a otras placas de desarrollo de Microchip</strong> o bien a un circuito externo, aunque para esto último es preferible utilizar el conector negro vertical y dejar siempre disponible el puerto de expansión para futuras placas que adquiera.</p>
<p><em><strong>Alimentando la placa por 1ra vez</strong></em></p>
<p>Ni bien tuve la placa en mis manos le conecté la alimentación y probé los dos PICs que trae. Tal como me lo esperaba, ambos vienen programados con ejemplos donde se recorren casi todas las funcionalidades de la Explorer 16 y de cada uno de esos PICs. Por ejemplo, el ejemplo que viene en el PIC24F muestra en el LCD la temperatura, el valor que lee desde el potenciómetro, el día y la hora porque internamente ese PIC tiene un RTC y juego de luces con los LEDs. Uno va cambiando las funciones con los pulsadores.</p>
<p><em><strong>Un ejemplo de uso</strong></em></p>
<p>En <a href="http://picadicto.wordpress.com/2009/08/05/leds-viajeros/" target="_blank">otro post, recordé el auto fantástico</a> y como generar un efecto como el de las luces de la trompa de aquel auto. Acádejo un video del mismo programa cargado al PIC24F (con algunas modificaciones menores). Quizás no se logre visualizar como muevo el potenciómetro pero si es evidente  que el tiempo de encendido de cada LED va variando&#8230;</p>
<span style="text-align:center; display: block;"><a href="http://picadicto.wordpress.com/2009/08/16/placa-de-desarrollo-explorer-16/"><img src="http://img.youtube.com/vi/PW9jaDIE-I4/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=46&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/16/placa-de-desarrollo-explorer-16/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/71797-11.png" medium="image">
			<media:title type="html">71797-1</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/explorer16-002.jpg" medium="image">
			<media:title type="html">explorer16 002</media:title>
		</media:content>
	</item>
		<item>
		<title>Leds Viajeros</title>
		<link>http://picadicto.wordpress.com/2009/08/05/leds-viajeros/</link>
		<comments>http://picadicto.wordpress.com/2009/08/05/leds-viajeros/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 13:34:57 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[16F]]></category>
		<category><![CDATA[Código CCS]]></category>
		<category><![CDATA[Circuitos]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=18</guid>
		<description><![CDATA[Recuerdan el auto fantástico? Bueno como se ve en la imagen, tenía una tira de LEDs que iban y venían de un lado a otro. Vamos a ver como podemos hacer esto con un PIC usando 8 LEDs y pudiendo cambiar el tiempo en que cada uno esté encendido. Para esto usaremos el compilador CCS [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=18&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-20" title="auto_fantastico" src="http://picadicto.files.wordpress.com/2009/08/auto_fantastico.jpg?w=300&#038;h=152" alt="auto_fantastico" width="300" height="152" /></p>
<p>Recuerdan el auto fantástico? Bueno como se ve en la imagen, tenía una tira de LEDs que iban y venían de un lado a otro. <strong>Vamos a ver como podemos hacer esto con un PIC usando 8 LEDs y pudiendo cambiar el tiempo en que cada uno esté encendido</strong>. Para esto usaremos el compilador CCS y Proteus para la simulación.</p>
<p><span id="more-18"></span><strong><em>Circuito</em></strong></p>
<p>Bien simple, un PIC16F873A, una barra de 10 LEDs y un potenciómetro que permitirá regular el tiempo de encendido y dos resistencias: una fija un uno lógico en el pin MCLR y la otra limita la corriente por los LEDs.</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-24" title="circuito_auto_fantastico" src="http://picadicto.files.wordpress.com/2009/08/circuito_auto_fantastico1.jpg?w=700&#038;h=318" alt="circuito_auto_fantastico" width="700" height="318" /></p>
<p><em><strong>Código</strong></em><br />
Con estas nuestro código aparecerá como el que</p>
<pre class="brush: php;">
void main(){
long tiempo;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
set_tris_b(0x00);
set_tris_c(0x00);
portb = 0;
portc = 0;
set_adc_channel(0);
do{
output_high(PIN_B0);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B0);
output_high(PIN_B1);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B1);
output_high(PIN_B2);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B2);
output_high(PIN_B3);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B3);
output_high(PIN_B4);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B4);
output_high(PIN_B5);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B5);
output_high(PIN_B6);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B6);
output_high(PIN_B7);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B7);
output_high(PIN_C0);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_C0);
output_high(PIN_C1);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_C1);
output_high(PIN_C0);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_C0);
output_high(PIN_B7);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B7);
output_high(PIN_B6);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B6);
output_high(PIN_B5);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B5);
output_high(PIN_B4);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B4);
output_high(PIN_B3);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B3);
output_high(PIN_B2);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B2);
output_high(PIN_B1);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B1);
output_high(PIN_B0);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B0);
}while(TRUE);}
</pre>
<p><em><strong>Simulación</strong></em></p>
<p>El resultado de la simulación se puede ver en este video, observar como varía el tiempo de encendido de cada LED a medida que se varía el potenciómetro:</p>
<p><span style="text-align:center; display: block;"><a href="http://picadicto.wordpress.com/2009/08/05/leds-viajeros/"><img src="http://img.youtube.com/vi/X5bQLBxZWWE/2.jpg" alt="" /></a></span></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=18&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/05/leds-viajeros/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/auto_fantastico.jpg?w=300" medium="image">
			<media:title type="html">auto_fantastico</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/circuito_auto_fantastico1.jpg" medium="image">
			<media:title type="html">circuito_auto_fantastico</media:title>
		</media:content>
	</item>
		<item>
		<title>¡Manos a la obra!</title>
		<link>http://picadicto.wordpress.com/2009/08/04/%c2%a1manos-a-la-obra/</link>
		<comments>http://picadicto.wordpress.com/2009/08/04/%c2%a1manos-a-la-obra/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 00:00:25 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[compiladores]]></category>
		<category><![CDATA[empezar]]></category>
		<category><![CDATA[ICD2]]></category>
		<category><![CDATA[introduccion]]></category>
		<category><![CDATA[microcontroladores]]></category>
		<category><![CDATA[programador]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=11</guid>
		<description><![CDATA[Para empezar necesitaremos instalar algunas herramientas en la PC las cuales nos permitirán interactuar con los microcontroladores. La idea es armar un framework que nos permita escribir código, compilarlo y probarlo en un PIC. Compilador En primer lugar, se necesita un compilador. Básicamente es un programa donde se escribe el código (en algún lenguaje de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=11&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para empezar<strong> necesitaremos instalar algunas herramientas en la PC</strong> las cuales nos permitirán interactuar con los microcontroladores. <strong>La idea es armar un framework que nos permita escribir código, compilarlo y  probarlo en un PIC</strong>.</p>
<p><span id="more-11"></span><em><strong>Compilador</strong></em><strong><img class="alignright size-full wp-image-13" title="compiladores" src="http://picadicto.files.wordpress.com/2009/08/compiladores.jpg?w=220&#038;h=289" alt="compiladores" width="220" height="289" /></strong></p>
<p>En primer lugar, se necesita un compilador. Básicamente es un programa donde se escribe el código (en algún lenguaje de programación) a ejecutar por el PIC y este <strong>se encarga de traducirlo al único lenguaje que los PICs entienden: código hexade</strong><strong>ci</strong><strong>mal!</strong></p>
<p>Tenemos varias opciones, a mi me gusta el <strong><a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en019469&amp;part=SW007002" target="_blank">MPLAB</a> de Microchip para trabajar en assembler y el <a href="http://www.ccsinfo.com/content.php?page=compilers" target="_blank">CCS</a></strong> para escribir el código C. Existen muchísimos compiladores algunos <a href="http://softwarepic.50webs.com/freesoft.html" target="_blank">gratuitos</a>, otros pagos, en versines educativas, crackeados, etc. y cada uno de ellos trabaja con distintos lenguajes. Pero, como antes, todos hacen los mismo: traducen el código para grabarlo al PIC.</p>
<p><em><strong>Simulador</strong></em></p>
<p>Luego de tener el código compilado es necesario probar si funciona. Para esto podemos ejecutar la propia simulación paso a paso de los compiladores o bien utilizar algo más moderno y mucho mejor: <strong>Proteus!</strong> El Proteus es un conjunto de herramientas diseñadas por la gente de <a href="http://www.labcenter.co.uk/index.cfm" target="_blank">Labcenter</a> para electrónicos donde su principal virtud está en la capacidad de simular (no en tiempo real pero se asemeja bastante!) los microcontroladores PICs con el código compilado tal cual lo haría un PIC grabado en la realidad. <strong>Además el software proveé excelentes componentes para completar la simulación de nuestra aplicación como ser pulsadores, potenciómetros, LEDs, displays de todo tipo, memorias, USB, teclados y mucho más!</strong></p>
<p><em><strong>Programador</strong></em></p>
<p>Hasta acá lo necesario para crear una aplicación y simular su funcionamiento. Si con esto no alcanza ya que queremos realmetne contruir la aplicación vamos a necesitar <strong>una interfaz de programación del microcontrolador. Es decir un aparato que sea capaz de grabar en la memoria del PIC real el código compilado</strong>.</p>
<p>En internet se pueden encontrar infinidades de circuitos caseros y comerciales para grabas a los microcontroladores PICs. Éstos pueden ser utilizando el puerto serie de la PC, vía USB o puerto paralelo. No me voy a detener mucho en esto ya que, como dije antes, hay mucha información en la web.</p>
<p>Microchip ofrece varios programadores yo utilizo el <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en010020&amp;part=DV003001" target="_blank">PICSTART PLUS</a> y el <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en010046&amp;part=DV164005" target="_blank">ICD2</a>. <strong>El primero es sólo programador y el ICD2 sirve además para debugg y programación in-circuit de los PICs</strong>.</p>
<p style="text-align:center;"><img class="size-full wp-image-15 alignnone" title="28727-1" src="http://picadicto.files.wordpress.com/2009/08/28727-1.png?w=158&#038;h=169" alt="28727-1" width="158" height="169" /><img class="size-full wp-image-14 alignnone" title="108069-1" src="http://picadicto.files.wordpress.com/2009/08/108069-1.png?w=145&#038;h=145" alt="108069-1" width="145" height="145" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=11&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/04/%c2%a1manos-a-la-obra/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/compiladores.jpg" medium="image">
			<media:title type="html">compiladores</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/28727-1.png" medium="image">
			<media:title type="html">28727-1</media:title>
		</media:content>

		<media:content url="http://picadicto.files.wordpress.com/2009/08/108069-1.png" medium="image">
			<media:title type="html">108069-1</media:title>
		</media:content>
	</item>
		<item>
		<title>Hola Mundo!</title>
		<link>http://picadicto.wordpress.com/2009/08/04/hola-mundo/</link>
		<comments>http://picadicto.wordpress.com/2009/08/04/hola-mundo/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 22:37:27 +0000</pubDate>
		<dc:creator>picadicto</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[hola mundo]]></category>
		<category><![CDATA[introduccion]]></category>

		<guid isPermaLink="false">http://picadicto.wordpress.com/?p=5</guid>
		<description><![CDATA[Así es&#8230; Hola mundo! Al fin me decidí a escribir sobre algo que me gusta y apasiona tanto. Espero que este blog tenga algo de repercusión entre los amantes de la electrónica y la programación. Para aquellos que no tengan ni idea que es un PIC, les cuento: Es un microcontrolador fabricado por la empresa [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=5&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Así es&#8230; <strong>Hola mundo!</strong> Al fin me decidí a escribir sobre algo que me gusta y apasiona tanto. Espero que este blog tenga algo de repercusión entre los amantes de la electrónica y la programación. Para aquellos que no tengan ni idea que es un PIC, les cuento: Es un <a href="http://es.wikipedia.org/wiki/Microcontrolador" target="_blank">microcontrolador</a> fabricado por la empresa <a href="http://www.microchip.com" target="_blank">Microchip</a>. Básicamente un microcontrolador es una pequeña computadora que ejecuta un código almacenado en él y actúa en sus patitas de acuerdo al mismo.</p>
<p>El objetivo del blog no está muy claro todavía, pero lo que es seguro es que <strong>trataré de compartir al máximo las experiencias con los PICs y la forma con la que hago mis equipos y proyectos</strong> porque creo que el conocimiento es un derecho de todos y compartirlo hace bien!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/picadicto.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/picadicto.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/picadicto.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/picadicto.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/picadicto.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/picadicto.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/picadicto.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/picadicto.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/picadicto.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/picadicto.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/picadicto.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/picadicto.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/picadicto.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/picadicto.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=picadicto.wordpress.com&amp;blog=8872381&amp;post=5&amp;subd=picadicto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://picadicto.wordpress.com/2009/08/04/hola-mundo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">picadicto</media:title>
		</media:content>
	</item>
	</channel>
</rss>
