<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Jeal's Blog</title><description>Digital Development Boards</description><managingEditor>noreply@blogger.com (Jeffrey Boy)</managingEditor><pubDate>Tue, 5 Nov 2024 18:45:21 -0800</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">14</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>https://jealgv.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:image href="https://dl.dropboxusercontent.com/u/32491540/JD-Tronics/Imgs/Logo%20JD-Tronics.png"/><itunes:keywords>Pinguino,digital,boards,embedded,boards,electronics,design</itunes:keywords><itunes:subtitle>Digital Development Boards</itunes:subtitle><itunes:category text="Education"><itunes:category text="Educational Technology"/></itunes:category><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>Fanuc Alarm 466 – Z Axis: Motor/Amp Combination</title><link>https://jealgv.blogspot.com/2018/09/fanuc-alarm-466-z-axis-motoramp.html</link><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Sat, 1 Sep 2018 10:33:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-6326731393558510317</guid><description>&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;b&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgai_9dwhji3IfxAh2a_MdoNpNWFEMtpY_ZunNnB7yedg69ERaTBy4dJCieeQAsq4B3hqsOW6Jchh-sasAaS-gHADmrvGvs8FxllO0-xfZr2W_okMpAGDrxp2P2tHw_GNDnsRXWG6c5dqc/s1600/IMG_1415.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="576" data-original-width="1024" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgai_9dwhji3IfxAh2a_MdoNpNWFEMtpY_ZunNnB7yedg69ERaTBy4dJCieeQAsq4B3hqsOW6Jchh-sasAaS-gHADmrvGvs8FxllO0-xfZr2W_okMpAGDrxp2P2tHw_GNDnsRXWG6c5dqc/s320/IMG_1415.jpg" width="320" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Regularmente cuando  identificamos que un daño esta presente en un drive servo amplificador, es recomendable el reemplazo del mismo, cuando este nuevo drive es instalado regularmente el sistema nos propicia una alarma denotada como &lt;b&gt;"Fanuc Alarm 466 - X Axis: Motor/Amp Combination"&lt;/b&gt;.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;

&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDlsoS-Kh09Tz9TzA0QwCiy7NvERtPbMJn2oFeblH6eMHYFOR2olkNnygxSfoDzWbBI4ojD846CpglCQH5vXWT7jfr4x_5nqrJS5X0fVzuXECr9M-0Yk3W6S7CgFarAZi2rzq3w50iEB8/s1600/IMG_1414.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="576" data-original-width="1024" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDlsoS-Kh09Tz9TzA0QwCiy7NvERtPbMJn2oFeblH6eMHYFOR2olkNnygxSfoDzWbBI4ojD846CpglCQH5vXWT7jfr4x_5nqrJS5X0fVzuXECr9M-0Yk3W6S7CgFarAZi2rzq3w50iEB8/s320/IMG_1414.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Esta alarma 466 proviene del amplificador de reemplazo que tiene un servo software más nuevo que la unidad que está reemplazando. Como Fanuc ha fabricado unidades más nuevas, han actualizado el software / hardware dentro de estos amplificadores, por lo que solo necesita restablecer un parámetro para reiniciar la configuración y borrar la Alarma 466.&lt;br /&gt;
Los pasos están abajo:&lt;br /&gt;
1.

- Poner la máquina en paro de emergencia.&lt;br /&gt;
2.- Ir al parámetro 2165 en el control Fanuc&lt;br /&gt;
3.- Establecer todos los valores en 0 o el valor de corriente demandado por el amplificador&lt;br /&gt;
4.- Reiniciar el equipo y remover el paro de emergencia del equipo.&lt;br /&gt;
&lt;br /&gt;
Una vez que estos parámetros se cambian y la máquina se reinicia, la alarma se borrará y el amplificador se inicializará.
&lt;/div&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white; text-align: center;"&gt;
Download Zone!&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th style="text-align: justify;"&gt;Files:&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a class="icon-download" href="http://short2makemoney.com/w0KUwbqc" target="_blank"&gt;&lt;i&gt;B-63527EN01 [FANUC SERIES 16i 160i 160is - MODEL B]&lt;/i&gt;&lt;/a&gt;
&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;a class="icon-download" href="http://short2makemoney.com/uCUt" target="_blank"&gt;&lt;i&gt;B-64115EN02 [FANUC SERIES OI - MODEL C]&lt;/i&gt;&lt;/a&gt;
&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;a class="icon-download" href="http://short2makemoney.com/GNqzd" target="_blank"&gt;&lt;i&gt;B-65285EN03 [FANUC AC SERVO MOTOR ALFA SERIES]&lt;/i&gt;&lt;/a&gt;
&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;a class="icon-download" href="http://short2makemoney.com/xWlySaB" target="_blank"&gt;&lt;i&gt;FANUC Series Oi &amp; Oi Mate Model D - MAINTENANCE MANUAL&lt;/i&gt;&lt;/a&gt;
&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;a class="icon-download" href="http://short2makemoney.com/4n491da" target="_blank"&gt;&lt;i&gt;Fanuc-Alarms&lt;/i&gt;&lt;/a&gt;
&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;a class="icon-download" href="http://short2makemoney.com/zoE45" target="_blank"&gt;&lt;i&gt;SPINDLE ALARM LIST&lt;/i&gt;&lt;/a&gt;
&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;a class="icon-download" href="http://short2makemoney.com/nuFDOS" target="_blank"&gt;&lt;i&gt;TROUBLESHOOTING AND ACTION&lt;/i&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;&lt;a class="tooltip" href="https://www.blogger.com/null" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://www.dropbox.com/s/axt8gmshqinrty8/Web-browser-icon.png?raw=1" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgai_9dwhji3IfxAh2a_MdoNpNWFEMtpY_ZunNnB7yedg69ERaTBy4dJCieeQAsq4B3hqsOW6Jchh-sasAaS-gHADmrvGvs8FxllO0-xfZr2W_okMpAGDrxp2P2tHw_GNDnsRXWG6c5dqc/s72-c/IMG_1415.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Master Prog USB </title><link>https://jealgv.blogspot.com/2016/01/master-prog-usb-programador-de.html</link><category>Microcontrollers</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Fri, 29 Jan 2016 21:17:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-4558509561166885154</guid><description>&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;b&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh11LzuWWSlUjGqGlTvZgVX8Re02bJdLGPxrqKB-r9m0-_BFpy7hGAvPIEGcSvrSG5F1NJUZ6uAvfd-SoCypiFr1TCjg3xRm7wGQqdUPmCjTOcKmC9A5i0LInL1N2yv5-OkfOHKpPS7EiQ/s1600/Master-Prog-USB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh11LzuWWSlUjGqGlTvZgVX8Re02bJdLGPxrqKB-r9m0-_BFpy7hGAvPIEGcSvrSG5F1NJUZ6uAvfd-SoCypiFr1TCjg3xRm7wGQqdUPmCjTOcKmC9A5i0LInL1N2yv5-OkfOHKpPS7EiQ/s320/Master-Prog-USB.jpg" width="320" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Master Prog&lt;/b&gt; es un Programador de Microcontroladores USB para todas las familias de Microcontroladores PIC, dsPIC, PIC32 y memorias EEPROM. Es una poderosa herramientas para programar estos dispositivos, compatible para cualquier computadora y con soporte para Windows 7, Windows 8 y Windows 10.&amp;nbsp;&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;

Entre las ventajas de este programador están:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;La autoprogramacion (automáticamente cargas el programa en el pic al momento de compilar utilizando cualquier compilador).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Alta compatibilidad.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Protección contra corto circuito.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Soporte para múltiples encapsulados DIP, SSOP, TQFP y QFN.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Actualizable.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVUcPtCO3yfDjYk944CWBFGKPQ9s6LnN5RLGm_heauFL6Orm1SV6j_QGUs3M5bTGIGUbjO4cOfBoolHe-XyrmnSq2p0E2P50xkSqbvCkKfLyoMoh8Vr1RnVSZqjE1-oGg94Siv4mDk18E/s1600/master_prog.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVUcPtCO3yfDjYk944CWBFGKPQ9s6LnN5RLGm_heauFL6Orm1SV6j_QGUs3M5bTGIGUbjO4cOfBoolHe-XyrmnSq2p0E2P50xkSqbvCkKfLyoMoh8Vr1RnVSZqjE1-oGg94Siv4mDk18E/s320/master_prog.jpg" width="318" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Master - Prog USB&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Existen diferentes tipos de programadores en el mercado  y cada uno de ellos dependerá del tipo de microcontrolador a emplear y me refiero específicamente al proveedor del mismo, para los microcontroladores de la compañía de &lt;b&gt;Microchip&lt;/b&gt; comúnmente mas usados debido a la flexibilidad y accesibilidad de los mismos, se encuentra este tipo, y una basta gama de &lt;i&gt;&lt;b&gt;programadores hágalo usted mismo&lt;/b&gt;&lt;/i&gt; y los comerciales de las copañias proveedoras de los microcontroladores, en el mundo del hardware y software, es común entre comillas conocer a estos chips primero antes que a cualquier otro, sin embargo con la llegada del &lt;b&gt;Arduino&lt;/b&gt; y las tarjetas de desarrollo cada vez mas es desplazado su uso, conocimiento y programación de los mismos, sin embargo para aquellos diseñadores y hobbistas que aun les gusta el  hecho de programar desde cero sus proyectos aquí les dejo el software de estas tarjetas, si en algún momento los extraviaron.
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhINpveQNcbbrU2CxpPDuzqjDHOsyzZqhs3oBb3YTyYz9NR8hz2AOd_AnC0kgHGBatOuaS2tyqmw7JfMQ4IgsgTtUCN3mlhTaIPO4BpwIIvS8U7_kUDXcSNWIQzC6u54jfKLcy2g-6ppgo/s1600/Software.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhINpveQNcbbrU2CxpPDuzqjDHOsyzZqhs3oBb3YTyYz9NR8hz2AOd_AnC0kgHGBatOuaS2tyqmw7JfMQ4IgsgTtUCN3mlhTaIPO4BpwIIvS8U7_kUDXcSNWIQzC6u54jfKLcy2g-6ppgo/s400/Software.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white; text-align: center;"&gt;
Download Zone!&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th style="text-align: justify;"&gt;Files:&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a class="icon-download" href="https://icutit.ca/jZgUKSwl" target="_blank"&gt;&lt;i&gt;MASTER-PROG&lt;/i&gt;&lt;/a&gt;
&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;a class="icon-download" href="https://icutit.ca/0JWZgh" target="_blank"&gt;&lt;i&gt;PIC-PROG II&lt;/i&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;&lt;a class="tooltip" href="https://www.blogger.com/null" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://www.dropbox.com/s/axt8gmshqinrty8/Web-browser-icon.png?raw=1" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh11LzuWWSlUjGqGlTvZgVX8Re02bJdLGPxrqKB-r9m0-_BFpy7hGAvPIEGcSvrSG5F1NJUZ6uAvfd-SoCypiFr1TCjg3xRm7wGQqdUPmCjTOcKmC9A5i0LInL1N2yv5-OkfOHKpPS7EiQ/s72-c/Master-Prog-USB.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Prácticas - Interpretacion de manuales Tecnicos</title><link>https://jealgv.blogspot.com/2014/11/practicas-interpretacion-de-manuales.html</link><category>UM</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Sat, 29 Nov 2014 12:54:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-1367485370012963500</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT_c0BNy60eBaH9qjC9nYCG2hFP2YECAxm4RQER296DWU6duoIzssJq9MJr0cnnP8sNAYdlsea8mMMKWLWIr2ypjA9gR26a1HHB6Z0kLzuTeW4jG1PA2cALBrN0-BaHKwwROaYdjPMyJs/s1600/Banner_UM.png" width="530" /&gt;&lt;/div&gt;

&lt;div style="text-align: justify;"&gt;Buen dia alumnos de la carrera de Ingeniería Mecánica automotriz de la Universidad Maya (&lt;b&gt;UM&lt;/b&gt;).&lt;br /&gt;&lt;br /&gt;

les anexo una a una las prácticas que realizaremos durante estas dos semanas restantes de clases del periodo estudiantil - Septiembre/Diciembre 2014.&lt;br /&gt;&lt;br /&gt;


&lt;a name='more'&gt;&lt;/a&gt;

&lt;b&gt;Practica No - 1 [ Resistencias ]&lt;/b&gt;&lt;br /&gt;

&lt;iframe frameborder="0" src="http://docs.google.com/gview?url=http://jealgv.t15.org/UM/Practica%201.pdf&amp;amp;embedded=true" style="height: 400px; width: 560px;"&gt;&lt;/iframe&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;b&gt;Practica No - 2 [ Capacitores ]&lt;/b&gt;&lt;br /&gt;

&lt;iframe frameborder="0" src="http://docs.google.com/gview?url=http://jealgv.t15.org/UM/Practica%202.pdf&amp;amp;embedded=true" style="height: 400px; width: 560px;"&gt;&lt;/iframe&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;b&gt;Practica No - 3 [ Diodos ]&lt;/b&gt;&lt;br /&gt;

&lt;iframe frameborder="0" src="http://docs.google.com/gview?url=http://jealgv.t15.org/UM/Practica%203.pdf&amp;amp;embedded=true" style="height: 400px; width: 560px;"&gt;&lt;/iframe&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;b&gt;Practica No - 4 [ Transistores ]&lt;/b&gt;&lt;br /&gt;

&lt;iframe frameborder="0" src="http://docs.google.com/gview?url=http://jealgv.t15.org/UM/Practica%204.pdf&amp;amp;embedded=true" style="height: 400px; width: 560px;"&gt;&lt;/iframe&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;b&gt;Practica No - 5 [ Compuertas Logicas ]&lt;/b&gt;&lt;br /&gt;

&lt;iframe frameborder="0" src="http://docs.google.com/gview?url=http://jealgv.t15.org/UM/Practica%205.pdf&amp;amp;embedded=true" style="height: 400px; width: 560px;"&gt;&lt;/iframe&gt;
&lt;br /&gt;&lt;br /&gt;

Sin mas por el momento nos vemos en inicio de semana para comenzar con las practicas en el salon, les recomiendo que aquellos que cuenten con barra de contactos llevenlas ya que no contamos con muchos contactos en el salon, les recuerdo nuevamente que es mejor un cargador de celular viejo, o un eliminador de voltaje, que la compra de baterias, no olviden de llevar pinzas, o herramientas para el corte de cables, etc, etc. Cualquier duda a comentario al final de la publicación la pueden hacer o directamente en &lt;b&gt;Contact USS&lt;/b&gt; en la parte superior de la pagina.&lt;br /&gt;&lt;br /&gt;

&lt;b&gt;El lunes no olviden de llevar sus laptos obviamente a los grupos que les toca clase conmigo el lunes, xD; para que hagamos el proceso de instalación del software de simulación "PROTEUS ISIS LAB". y el resto de los grupos haremos la misma dinamica el martes.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;

Saludos, Buen fin de semana.&lt;br /&gt;&lt;br /&gt;
&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT_c0BNy60eBaH9qjC9nYCG2hFP2YECAxm4RQER296DWU6duoIzssJq9MJr0cnnP8sNAYdlsea8mMMKWLWIr2ypjA9gR26a1HHB6Z0kLzuTeW4jG1PA2cALBrN0-BaHKwwROaYdjPMyJs/s72-c/Banner_UM.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>Pinguino - Lecturas Digitales y Analogicas</title><link>https://jealgv.blogspot.com/2014/09/pinguino-lecturas-digitales-y-analogicas.html</link><category>Microcontrollers</category><category>Pinguino Board</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Fri, 26 Sep 2014 18:03:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-7560253178003247505</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkjoMta4PxImNUtEwwYwjmmk2k0I1zkRUcDrk8BLIB1t3CX6iLH48Si9jngVmGQBSj0i9aStAbMftAzijxyK_tuldkyW3KWbIl0uOsaaPwIHyKd5HSix4guC2T1lTtq19s7B6vAMKfOGI/s1600/Pinguino_Banner.png" /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
El día de hoy les traigo un vídeo explicativo de algunas funciones básicas para lecturas analógicas y digitales empleando la tarjeta de desarrollo &lt;b&gt;Pinguino&lt;/b&gt;, así como también la manipulación de puertos completos de la misma tarjeta a partir de las función PORTX, donde la x son cada uno de los puertos con los que cuentan nuestro hardware cuales pueden ser 'A', 'B', 'C', 'D', etc... dependiendo las especificaciones de su propia tarjeta pinguino.
&lt;a name='more'&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora bien que es una lectura analógica, para comenzar con la definición hay que definir que es algo analógico y la mas clara definición seria todo aquello que no tiene una magnitud definida o un rango definido es decir que puede tomar una serie infinita de valores dependiendo su unidad, por ejemplo voltajes, corrientes, potencia, intensidad luminosa, etc... ahora bien una lectura analógica consiste en convertir toda esa serie de valores no definidos y definirlos en un rango lógico o digital es decir &lt;b&gt;0&lt;/b&gt; y &lt;b&gt;1&lt;/b&gt; claramente usando un sistema binario, decimal, hexadecimal o octadecimal. Ahora bien la mayoría de los microcontroladores cuentan con conversores analógicos - digitales, la diferencia regularmente entre uno y otros es la resolución, ¿Que es la resolución? algo muy simple la capacidad de poder representar esa magnitud analógica en un rango delimitado lógico, ¿Cuales son las resoluciones existentes en microcontroladores? de 8, 10 y 12 bits, los cuales representan para 8 bits 255 valores posibles, para 10 bits 1024 valores posibles y finalmente para 12 bits 4096.
&lt;br /&gt;
&lt;br /&gt;
Bueno finalmente eso seria la parte analógica, que sigue a continuación lo digital, lo digital se centra en solo dos estados &lt;b&gt;0&lt;/b&gt; y &lt;b&gt;1&lt;/b&gt;, &lt;b&gt;Verdadero&lt;/b&gt; y &lt;b&gt;Falso&lt;/b&gt;, por lo que en ello radica la simplicidad y comodidad de este tipo de sistema, la comunicación entre dispositivos digitales consiste en una secuencia binaria es de decir de &lt;b&gt;0&lt;/b&gt; y &lt;b&gt;1&lt;/b&gt;, por ejemplo y por asi decir ejemplo consideremos que para cambiar el canal de nuestro televisor nuestro control envía una secuencia binaria o paquete de datos hacia el televisor, como el siguiente &lt;b&gt;01011000&lt;/b&gt; de 8 bits en el va codificado la instrucción de cambio y la información del canal a mover, esa complejidad de que un solo paquete de datos envíe mucha información es lo que lo hace sumamente atractivo en las telecomunicaciones.
&lt;br /&gt;
&lt;br /&gt;
A continuación muestro el sistema empleado en mi Pinguino 4550, como ven es bastante simple y versatil para todas las maravillas que puedo hacer con el.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Esquematico&lt;/h3&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a class="lightbox" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Pinguino_Leds/PIC18F4550_Leds.jpg" rel="lightbox[set1]" title="Esquematico de Conexionado Pinguino 4550"&gt;&lt;img alt="Concrete" class="lbThumb" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Pinguino_Leds/PIC18F4550_Led_Snap.png" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Y por ello aquí los siguiente códigos usados durante el video con mi tarjeta Pinguino.
&lt;br /&gt;
&lt;br /&gt;
1.- Encender un puerto por completo (&lt;b&gt;Función PORTB&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i=0;i&lt;8;i++){
       pinMode(i,OUTPUT);
    }
    }

void loop() {
    //run repeatedly:
    PORTB = 255;
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
2.- Contador Binario en el &lt;b&gt;Puerto B&lt;/b&gt; (&lt;b&gt;Funcion PORTB&lt;/b&gt; y &lt;b&gt;FOR&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i=0;i&lt;8;i++){
       pinMode(i,OUTPUT);
    }
    }

void loop() {
    //run repeatedly:
    int j;
    for(j=0;j&lt;8;j++){
       PORTB = j;
       delay(1000); 
    }
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
3.- Lectura Digital y switcheo de un Puerto Entero (&lt;b&gt;Función digitalRead&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i &lt; 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    if(digitalRead(13)){

      do{
      PORTB = 255;
      }
      while(digitalRead(13));
      PORTB = 0;
    }
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
4.- Lectura Digital y ciclo For en Puerto Entero (&lt;b&gt;Función digitalRead&lt;/b&gt; y &lt;b&gt;For&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i &lt; 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Buffer[] = {1,3,7,15,31,63,127,255};
    int j;
    
    if(digitalRead(13)){
       do{
          for(j=0; j&lt;8;j++){
              PORTB = Buffer[j];
              delay(100);
          }
      }
       while(digitalRead(13));
    PORTB = 0;
    }
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
5.- Lectura Digital y condicional if en Puerto Entero (&lt;b&gt;Función digitalRead&lt;/b&gt; y &lt;b&gt;If&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i &lt; 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Buffer[] = {1,3,7,15,31,63,127,255};
    int j;
    
    if(digitalRead(13)){
       do{
          if(j &gt; 0 &amp;&amp; j &lt; 8){
              PORTB = Buffer[j];
              delay(100);
          }
          else
              j = 0;
              j ++;
      }
       while(digitalRead(13));
    PORTB = 0;
    }
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
6.- Efecto KID (&lt;b&gt;Función digitalRead&lt;/b&gt; y &lt;b&gt;If&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i &lt; 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Buffer[] = {1,3,7,15,31,63,127,255,127,63,31,15,7,3,1};
    int j;
    
    if(digitalRead(13)){
       do{
          if(j &gt; 0 &amp;&amp; j &lt; 16){
              PORTB = Buffer[j];
              delay(50);
          }
          else
              j = 0;
              j ++;
      }
       while(digitalRead(13));
    PORTB = 0;
    }
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
7.- Lectura Analógica (&lt;b&gt;Función analogRead&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i &lt; 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Dato_Analogico = 0;
    delay(20);
    Dato_Analogico = analogRead(13);
    delay(20);
    PORTB = Dato_Analogico;
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
7.- Lectura Analógica y parametrización de datos (&lt;b&gt;Función analogRead&lt;/b&gt; y &lt;b&gt;map&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i &lt; 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Dato_Analogico = 0;
    delay(20);
    Dato_Analogico = analogRead(13);
    delay(20);
    Dato_Analogico = map(Dato_Analogico,0,1023,0,255);
    PORTB = Dato_Analogico;
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;style&gt;
#icon-external {
padding-left: 17px;
background: url(https://www.dropbox.com/s/7vgskodt58so3ba/icon_external.png?raw=1) 0 40% no-repeat;
}
&lt;/style&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white; text-align: center;"&gt;
Download Zone!&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th style="text-align: justify;"&gt;Files:&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a id="icon-external"  href="http://short2makemoney.com/Skn2MaPc"  class="lightbox" title="Pinguino Board - Lecturas Analógicas y Digitales"&gt;&lt;i&gt;Pinguino Board - Lecturas Analógicas y Digitales..&lt;/i&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;&lt;a class="tooltip" href="https://www.blogger.com/null" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://www.dropbox.com/s/axt8gmshqinrty8/Web-browser-icon.png?raw=1" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkjoMta4PxImNUtEwwYwjmmk2k0I1zkRUcDrk8BLIB1t3CX6iLH48Si9jngVmGQBSj0i9aStAbMftAzijxyK_tuldkyW3KWbIl0uOsaaPwIHyKd5HSix4guC2T1lTtq19s7B6vAMKfOGI/s72-c/Pinguino_Banner.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Pinguino Board - Primer Contacto</title><link>https://jealgv.blogspot.com/2014/08/pinguino-board-primer-contacto.html</link><category>Microcontrollers</category><category>Pinguino Board</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Fri, 29 Aug 2014 19:11:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-7208557182506294963</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkjoMta4PxImNUtEwwYwjmmk2k0I1zkRUcDrk8BLIB1t3CX6iLH48Si9jngVmGQBSj0i9aStAbMftAzijxyK_tuldkyW3KWbIl0uOsaaPwIHyKd5HSix4guC2T1lTtq19s7B6vAMKfOGI/s1600/Pinguino_Banner.png" /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Dando inicio con esta nueva etapa aquí les traigo este primer post y video de la seccion conociendo el proyecto Pinguino, bueno como muchas sabrán el proyecto Pinguino surgió por el interés de explotar las tecnología USB que nos proporciono la compañía Microchip agregando a este la necesidad de diseñar un sistema mínimo lo suficiente robusto y versátil para aplicarlo en cualquier aplicación o proyecto tipo profesional o diversión, he ahí el nacimiento del proyecto Pinguino siendo &amp;nbsp;&lt;b&gt;Jean-Pierre Mandon&lt;/b&gt; su iniciador o creador.
&lt;a name='more'&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
En que consiste Pinguino, Pinguino es un sistema mínimo de operación para prototipos simple y contundente, hablando técnicamente es una plataforma integrada de desarrollo o IDE por sus siglas en Ingles (Integrated Development Enviroment), es Open Hardware como Open Software interesante verdad! y aun lo es mas por que gran parte de sus librerías son basadas en Arduino, es decir que si sabes usar un Arduino podrás usar un Pinguino y lo que es aun mejor tu podrás armar el tuyo en función de tus necesidades o gustos tan simple y llano como eso, eso es genial así como también la facilidad de encontrar repuestos si en dado caso estos se dañaran por un mal uso o por un accidente electrónico. Eso es Pinguino o mas bien This is Pinguino!! Argggh!!!.
&lt;br /&gt;
&lt;br /&gt;
Que hacer con tu primer Pinguino, primero admirarlo si lo hiciste tu y magnificar lo grandioso que te quedo, segundo conectarlo y maravillarte aun mas por que funciona, y tercero encender y apagar un Led ver eso es mejor que cualquier acto de magia de Chris Angel, y lo es en verdad.
&lt;br /&gt;
&lt;br /&gt;
A continuacion muestro el sistema de minimo empleado en el diseño de mi Pinguino 4550, como ven es bastante simple y versatil para todas las maravillas que puedo hacer con el.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Esquematico&lt;/h3&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a class="lightbox" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Primer_Contacto/PIC18F4550_diagrama.png" rel="lightbox[set1]" title="Esquematico de Conexionado Pinguino 4550"&gt;&lt;img alt="Concrete" class="lbThumb" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Primer_Contacto/PIC18F4550_snap.jpg" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Y por ello aquí los siguiente códigos de como acceder al led indicador propio del Pinguino para su manipulación.
&lt;br /&gt;
&lt;br /&gt;
1.- Swithceo del Led Indicador (&lt;b&gt;Funcion Toggle&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: Fri Aug 29 20:51:29 2014
Description:Primer contantoc con Pinguino
- Encendido de Leds -
-----------------------------------------------------*/


void setup() {
    //run once:
    pinMode(USERLED,OUTPUT);
    }

void loop() {
    //run repeatedly:
    toggle(USERLED);
    delay(1000);
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
2.- Switcheo del Led Indicador (&lt;b&gt;Funcion digitalWrite&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: Fri Aug 29 20:51:29 2014
Description:Primer contantoc con Pinguino
- Encendido de Leds -
-----------------------------------------------------*/


void setup() {
    //run once:
    pinMode(USERLED,OUTPUT);
    }

void loop() {
    //run repeatedly:
    //toggle(USERLED);
    //delay(1000);
    digitalWrite(USERLED,HIGH);
    delay(1000);
    digitalWrite(USERLED,LOW);
    delay(1000);
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
3.- manipulacion de un Puerto Entero (&lt;b&gt;Función digitalWrite&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: Fri Aug 29 20:51:29 2014
Description:Primer contantoc con Pinguino
- Encendido de Leds -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i &lt; 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Pin_Out[8] = {0,1,2,3,4,5,6,7};
    int j;
    for (j = 0; j &lt; 8; j++){
        digitalWrite(Pin_Out[j],HIGH);
        delay(1000);
        digitalWrite(Pin_Out[j],LOW);
        delay(1000);
        }

    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
4.- manipulacion de un Puerto Entero (&lt;b&gt;Función Toggle&lt;/b&gt;)
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jeals Blog --&lt;&gt;
Date: Fri Aug 29 20:51:29 2014
Description:Primer contantoc con Pinguino
- Encendido de Leds -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i &lt; 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Pin_Out[8] = {0,1,2,3,4,5,6,7};
    int j;
    for (j = 0; j &lt; 8; j++){
        toggle(Pin_Out[j]);
        delay(1000);
        }

    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;style&gt;
#icon-external {
padding-left: 17px;
background: url(https://dl.dropboxusercontent.com/u/32491540/JD-Tronics/Imgs/icon_external.png) 0 40% no-repeat;
}
&lt;/style&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white; text-align: center;"&gt;
Download Zone!&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th style="text-align: justify;"&gt;Files:&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a id="icon-external"  href="http://www.youtube.com/watch?v=2udVCjckXdQ"  class="lightbox" title="Pinguino Board - Encendido de LEDs"&gt;&lt;i&gt;Pinguino Board - Encendido de LEDs..&lt;/i&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;&lt;a class="tooltip" href="https://www.blogger.com/null" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/images/Web-browser-icon.png" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkjoMta4PxImNUtEwwYwjmmk2k0I1zkRUcDrk8BLIB1t3CX6iLH48Si9jngVmGQBSj0i9aStAbMftAzijxyK_tuldkyW3KWbIl0uOsaaPwIHyKd5HSix4guC2T1lTtq19s7B6vAMKfOGI/s72-c/Pinguino_Banner.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Instalando Pinguino </title><link>https://jealgv.blogspot.com/2014/08/instalando-pinguino.html</link><category>Pinguino Board</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Fri, 22 Aug 2014 12:44:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-2631497199621838659</guid><description>&lt;div style="text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzaFv_WceKXeZzDhf973hY-v5aFEuoRYiOv13y2al0w31kgnu4QwhqF3z9XzjZGkHIemo4d2zU8p-3IELX3V2onEWynAqv4wdhZEgZ0z5RKuJY27ePQmx6TXpe7W1JvjicNzc-669VNcE/s1600/Pinguino_Win.png" /&gt;&lt;/div&gt;
&lt;p&gt;Ha pasado mucho tiempo desde mi ultimo &lt;b&gt;post!!!&lt;/b&gt;, y la verdad que ya extrañaba escribir y compartir lo poquito que sabemos con todo el que desee aprender.
De entrada les comento que he empezado una nueva etapa como instructor y docente y para ello tengo que retomar y re-estudiar muchas cosas que pareciera que han sido olvidadas
sin embargo aun las tengo muy presentes, que sin duda necesitan una pulida pero el conocimiento ahí esta, y para comenzar con el pie derecho y con muchas ganas he desempolvado mis libros y demás material y tarjetas electrónicas para comenzar.&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;Y si bien sabemos lo ultimo que publique era usando las tarjetas denominadas &lt;b&gt;PINGUINO&lt;/b&gt;, yo no dudo de las capacidades de los desarrolladores de este proyecto puesto que son muy buenas
yo las he probado en su momento y generaron en mi muchas expectativas, las cuales no logre consolidar debido a proyectos que surgieron a la par, pero ahora se ha dado el momento de continuar y ello haremos.&lt;/p&gt;
&lt;p&gt;Como buen investigador y navegador, sabemos que el proyecto &lt;b&gt;Pinguino&lt;/b&gt; tiene muchos adeptos si muchos pero pocos que aporten o mejoren o en su defecto documenten errores que se han encontrado y que hayan solucionado de alguna manera, esa es una cruda realidad ademas de muchas paginas que han sido abandonadas o des-actualizadas, y claro la constante innovación de muchas otras tarjetas electrónicas se vuelven mas llamativas, no he tenido la dicha se usarlas todas por que no es así, pero siempre es bueno ser un conocedor y por ello yo les recomiendo que si en sus posibilidades están adelante, y como segunda recomendación la siguiente, lo interesante de un proyecto cual fuese es hacer algo muy complejo o complejo que pareciera que fuera fácil de recrear. Lo que a mi en lo personal me encanta del pinguino es que tu mismo lo puedes hacer y puedes expandir tanto como tu lo desees ademas de que no te preocuparas por repuestos o piezas pues son de fácil acceso.&lt;/p&gt;
&lt;p&gt;Y para comenzar a usar nuevamente o si fuera tu primera vez hay que comenzar por la instalación del compilador que es un &lt;b&gt;IDE&lt;/b&gt; desarrollado en python que le da gran robustez y simplicidad aun a nuestra tarjeta pinguino, hay que mencionar que la persona que da soporte a este &lt;b&gt;IDE&lt;/b&gt; es &lt;b&gt;&lt;u&gt;Yeison Cardona&lt;/u&gt;&lt;/b&gt; un Colombiano cual su pagina es la siguiente &lt;b&gt;&lt;a href="http://yeisoneng.appspot.com/" target="_blank"&gt;http://yeisoneng.appspot.com/&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;En el link siguiente &lt;a href="http://yeisoneng.appspot.com/post/pinguino_svn_windows/" target="_blank"&gt;http://yeisoneng.appspot.com/post/pinguino_svn_windows/&lt;/a&gt; se encuentra todo el proceso descrito por nuestro compañero Yeison para la instalación de este compilador.&lt;/p&gt;
&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzaFv_WceKXeZzDhf973hY-v5aFEuoRYiOv13y2al0w31kgnu4QwhqF3z9XzjZGkHIemo4d2zU8p-3IELX3V2onEWynAqv4wdhZEgZ0z5RKuJY27ePQmx6TXpe7W1JvjicNzc-669VNcE/s72-c/Pinguino_Win.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Stepper Motor using a Pinguino Board</title><link>https://jealgv.blogspot.com/2014/01/stepper-motor-using-pinguino-board.html</link><category>Microcontrollers</category><category>Pinguino Board</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Mon, 6 Jan 2014 22:30:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-3659368290665092847</guid><description>&lt;div style="text-align:justify"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt0O4_uopLF6kRXr7stxQ_Zh3ukpaQ_Ipfov4LGK9eRkocB-er9cAllKNxTxEpkdDuJN3D_M9CrAUlp0pXs5R2MPMnHlpDxh65NjaRfS4Jx8cO8JuMyTq6zIi4IOlkH6jOPMHD77IbA2M/s1600/Stepper+Motor.png" /&gt;&lt;/div&gt;
&lt;p&gt;A stepper motor is an electromechanical device which converts electrical pulses into discrete mechanical movements. The shaft or spindle of a stepper motor rotates in discrete step increments when electrical command pulses are applied to it in the proper sequence. The motors rotation has several direct relationships to these applied input pulses. The sequence of the applied pulse is directly related to the direction of motor shafts rotation is directly related to the frequency of the input pulses and the length of rotation is directly related to the number of input pulses applied.&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;Stepper motors are ideally suited for precision positioning of an object or/and precision control of speed without using closed-loop feedback for any automation systems. It is also translate switched excitation changes into precisely defined increments of rotor position {'steps'}. Accurate positioning of the rotor is generally achieved by magnetic alignment of iron teeth on the stationary and rotating parts of the motor.&lt;/p&gt;
&lt;p&gt;The basic function of stepper motor is that its output shaft rotates in a series of discrete angular intervals or steps, one step being taken each time a command pulse is received. When a definite number of pulses are supplied, the shaft turns through a definite known angle. The name stepper is used because this motor rotates through a fixed angular step in response to each input current pulse received bi its controller. These controllers can be computers, microprocessor and programmable controllers.&lt;/p&gt;
&lt;h3&gt;Principle of Operation&lt;/h3&gt;
&lt;p&gt;A stepping motor may be compared with a synchronous motor as far as operation is concerned: a rotating field, here generated by the control electronics, pulls a magnetic rotor along. Stepping motors are sub divided according to the manner in which the rotating field is generated, that is with unipolar or bipolar stator windings and the material from which the rotator has been constructed -- permanent magnetic material or soft iron.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step angle:&lt;/b&gt; The angle through which the motor shaft rotates foer each command pulse is called the step angle &amp;phi; = 360°/(No. of stator faze &amp;times; No of rotor teeth).&lt;/p&gt;
&lt;p&gt;The angle can be as small as 0.72° or as large as 90°, but the most common step angle 1.8°, 2.5°, 7.5°, 15°...&lt;/p&gt;
&lt;h3&gt;Stepper Motor Advantages and Disadvantages&lt;/h3&gt;
&lt;p&gt;
Advantages
&lt;ul&gt;
&lt;li&gt;The rotation angle of the motor is proportional to the input pulse.&lt;/li&gt;
&lt;li&gt;The motor has full torque at standstill (if the windings are energized)&lt;/li&gt;
&lt;li&gt;Precise positioning and repeatability of movement since good stepper motors have an accuracy of 3--5% of a step and this error is non cumulative from one step to the next.&lt;/li&gt;
&lt;li&gt;Excellent response to starting/stopping/reversing.&lt;/li&gt;
&lt;li&gt;Very reliable since the are no contact brushes in the motor. Therefore the life of the motor is simply dependant on the life of the bearing.&lt;/li&gt;
&lt;li&gt;The motors response to digital input pulses provides open-loop control, making the motor simpler and less costly to control.&lt;/li&gt;
&lt;li&gt;It is possible to achieve very low speed synchronous rotation with a load that is directly coupled to the shaft.&lt;/li&gt;
&lt;li&gt;A wide range of rotational speeds can be realized as the speed is proportional to the frequency of the input pulses.&lt;/li&gt;
&lt;/ul&gt;
Disadvantages
&lt;ul&gt;
&lt;li&gt;Resonances can occur if not properly controlled.&lt;/li&gt;
&lt;li&gt;Not easy to operate at extremely high speeds.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;Pinguino &amp;mdash; Stepper Motors&lt;/h3&gt;
&lt;p&gt;Well, now we know about what a stepper motor is and how to work it, but the point of this topic is how to use this device with an embedded board or microcontrollers, and why not with a pinguino board. In this case I’m using a stepper motor with the next specification: &lt;b&gt;TYPE 4H4018X1616, 1.8°, 5 V, 1.0 A&lt;/b&gt;. As we can see this motor needs 5 volts and 1 amper for its efficient operation, there are two ways to powering this motor, with my computer that only provide 500 mA and it can be dangerous for my USB port or using a external power source, for avoid any risk with my computer I will use a external power source, and chose this choice because I don't have material for a good driver or controller that provide enough current and security at the same time using my USB port.&lt;/p&gt;
&lt;p&gt;
I'm using the next material:
&lt;ul&gt;
&lt;li&gt;Resistors (10 K&amp;Omega; and 33 &amp;Omega;)&lt;/li&gt;
&lt;li&gt;Dip switch (8 switchs)&lt;/li&gt;
&lt;li&gt;ULN2003A&lt;/li&gt;
&lt;li&gt;LCD 16x2&lt;/li&gt;
&lt;li&gt;Pinguino Board (PIC18F4550)&lt;/li&gt;
&lt;li&gt;Bipolar Stepper Motor&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;Schematic&lt;/h3&gt;
&lt;a class="lightbox" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Sch_Stepper.jpg" title="Bipolar Stepper Motor :: Connection of the Stepper Motor"&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Sch_Stepper_thumb.jpg" alt="Concrete" class="lbThumb"&gt;&lt;/a&gt;

&lt;h3&gt;PIC C CCS COMPILER CODE&lt;/h3&gt;
&lt;b&gt;Fuses Code&lt;/b&gt;
&lt;pre class="brush: cpp"&gt;
#include &lt;18F4550.h&gt;
#device ADC=16

#fuses NOMCLR       //No Master Clear Reset. Used for I/O Instead 
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOVREGEN                 //USB voltage regulator disabled
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOLPT1OSC                //Timer1 configured for higher power operation
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(CLOCK=20000000)

#include "flex_lcd.c"
&lt;/pre&gt;

&lt;b&gt;Main Code&lt;/b&gt;
&lt;pre class="brush: cpp"&gt;
#include &lt;Stepper.h&gt;

//Normal Full Step
unsigned char Motor[4] ={0x0a,0x06,0x05,0x0b};

void Stepper_Motor_ClockWise(unsigned char Steps){
unsigned int Index = 0;
unsigned int Count = 0;
    do {
        OUTPUT_D(Motor[Index]);
        Index ++;
        delay_ms(100);
            if(Index &gt; sizeof(Motor)-1){
                Index = 0;
                Count ++;
            } 
            else if(Count == Steps){
                OUTPUT_D(0); 
                Count = 0;
                Index = 0;              
                lcd_putc("\f");
                break;
            }  
        lcd_gotoxy(1, 0);
        printf(lcd_putc,"Clockwise");                  
        lcd_gotoxy(1, 1);
        printf(lcd_putc,"Value: %u",Count);   
    } 
    while(Count &lt;= Steps);
}    


void Stepper_Motor_AntiClockWise(unsigned char Steps){
int8 Index = 3;
unsigned int Count = 0;
    do {
        OUTPUT_D(Motor[Index]);
        Index --;
        delay_ms(100);
            if(Index == -1){
                Index = 3;
                Count ++;
            } 
            else if(Count == Steps){
                OUTPUT_D(0); 
                Count = 0;
                Index = 0;              
                lcd_putc("\f");
                break;
            }    
        lcd_gotoxy(1, 0);
        printf(lcd_putc,"AntiClockwise");        
        lcd_gotoxy(1, 1);
        printf(lcd_putc,"Value: %u",Count);   
    } 
    while(Count &lt;= Steps);
}    

void Stepper_Motor(unsigned int Function){
    switch (Function){
        case 1: //ClockWise 
            lcd_putc("\f");     
            Stepper_Motor_ClockWise(10);    
        break;
        case 2: //AntiClockWise
            lcd_putc("\f");    
            Stepper_Motor_AntiClockWise(10);
        break;            
        default: 
            lcd_gotoxy(1, 0);
            printf(lcd_putc,"Waiting for...");        
            lcd_gotoxy(1, 1);
            printf(lcd_putc,"Command!");                        
        }
    }
    
void main()
{
lcd_init();

   while(TRUE)
   {
      //TODO: User Code
      Stepper_Motor(input_a());
   }

}
&lt;/pre&gt;

&lt;h3&gt;PINGUINO BOARD CODE&lt;/h3&gt;
&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author:  Jefferson GoVa--&lt;&gt;
Date: Fri Jan 03 23:14:02 2014
Description:
Stepper Motor using a Pinguino Board :D
-----------------------------------------------------*/

unsigned int Btn_State;


//Normal Full Step
unsigned char Motor[4] ={0x0a,0x06,0x05,0x0b};
    
void Stepper_Motor_ClockWise(unsigned char Steps){
unsigned int Index = 0;
unsigned int Count = 0;
    do {
        PORTD = Motor[Index];
        Index ++;
        delay(100);
            if(Index &gt; sizeof(Motor)-1){
                Index = 0;
                Count ++;
            } 
            else if(Count == Steps){
                PORTD = 0; 
                Count = 0;
                Index = 0;              
                lcd.clear();
                break;
            }  
        lcd.setCursor(0, 0);
        lcd.printf("Clockwise");                  
        lcd.setCursor(0, 1);
        lcd.printf("Value: %u",Count);   
    } 
    while(Count &lt;= Steps);
}    

void Stepper_Motor_AntiClockWise(unsigned char Steps){
int Index = 3;
unsigned int Count = 0;
    do {
        PORTD = Motor[Index];
        Index --;
        delay(100);
            if(Index &lt; 0){
                Index = 3;
                Count ++;
            } 
            else if(Count == Steps){
                PORTD = 0; 
                Count = 0;
                Index = 0;              
                lcd.clear();
                break;
            }    
        lcd.setCursor(0, 0);
        lcd.printf("AntiClockwise");        
        lcd.setCursor(0, 1);
        lcd.printf("Value: %u",Count);   
    } 
    while(Count &lt;= Steps);
}    

void Stepper_Motor(unsigned int Function){
    switch (Function){
        case 1: //ClockWise 
            lcd.clear();      
            Stepper_Motor_ClockWise(10);    
        break;
        case 2: //AntiClockWise
            lcd.clear();     
            Stepper_Motor_AntiClockWise(10);
        break;            
        default: 
            lcd.setCursor(0, 0);
            lcd.printf("Waiting for...");        
            lcd.setCursor(0, 1);
            lcd.printf("Command!");                        
        }
    }
    
void Check_Btns(){
    char State[3]; 
    int i; 
        for (i = 0 ;i &lt; 3 ;i ++){
            State[i] = digitalRead(i+13);    
        }
    Btn_State = State[0] + State[1]*2 + State[2]*4;
    Stepper_Motor(Btn_State);
}    
    
void setup() {
    //run once:
    //DIP Switch States
    pinMode(13,INPUT);
    pinMode(14,INPUT);
    pinMode(15,INPUT);
    
    //Motor Stepper
    pinMode(21,OUTPUT);
    pinMode(22,OUTPUT);
    pinMode(23,OUTPUT);
    pinMode(24,OUTPUT);
    
    // initialize the library with the numbers of the interface pins
    //lcd.pins(RS, E, D4, D5, D6, D7, 0, 0, 0, 0); //4bits
    //lcd.pins(RS, E, D0, D1, D2, D3, D4, D5, D6, D7); //8bits
    lcd.pins(0, 1, 2, 3, 4, 5, 0, 0, 0, 0); // RS, E, D4 ~ D8 

    // set up the LCD's number of columns and rows: 
    lcd.begin(16, 2);   
    }

void loop() {
    //run repeatedly:
    Check_Btns();
    }
&lt;/pre&gt;

&lt;a class="lightbox" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Setup.jpg" title="Bipolar Stepper Motor :: Stepper Motor using a Pinguino Board"&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Setup_thumb.jpg" alt="Concrete" class="lbThumb"&gt;&lt;/a&gt;

&lt;/div&gt;
&lt;style&gt;
#icon-external {
padding-left: 17px;
background: url(https://dl.dropboxusercontent.com/u/32491540/JD-Tronics/Imgs/icon_external.png) 0 40% no-repeat;
}
&lt;/style&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white;text-align: center;"&gt;Download Zone!&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;th style="text-align:justify"&gt;Files:&lt;/th&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Stepper%20Motor%20Basic.pdf" target="_blank"&gt;&lt;i&gt;Stepper Motor Basics&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Stepper%20Motor.pdf" target="_blank"&gt;&lt;i&gt;Stepper Motor&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Stepper%20Motors%20Controller.pdf" target="_blank"&gt;&lt;i&gt;Stepper Motor Controller&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/uln2003a.pdf" target="_blank"&gt;&lt;i&gt;ULN2003A&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-file" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Stepper.rar" target="_blank"&gt;&lt;i&gt;Stepper Motor Codes&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-file" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Stepper/Stepper.pdsprj" target="_blank"&gt;&lt;i&gt;Stepper Motor Schematic&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a id="icon-external" href="http://www.youtube.com/watch?v=swXA93epe5I"  class="lightbox" title="Stepper Motor Operation"&gt;&lt;i&gt;Stepper Motor Video..&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;
&lt;a class="tooltip" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/images/Web-browser-icon.png" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt0O4_uopLF6kRXr7stxQ_Zh3ukpaQ_Ipfov4LGK9eRkocB-er9cAllKNxTxEpkdDuJN3D_M9CrAUlp0pXs5R2MPMnHlpDxh65NjaRfS4Jx8cO8JuMyTq6zIi4IOlkH6jOPMHD77IbA2M/s72-c/Stepper+Motor.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>How to Make Your Dreams Come True</title><link>https://jealgv.blogspot.com/2014/01/how-to-make-your-dreams-come-true.html</link><category>Motivations</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Thu, 2 Jan 2014 14:22:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-4958218132248571446</guid><description>&lt;style&gt;
.steps .section_text {
background-color: inherit;
padding: 0;
border: none;
}
ol.steps_list_2 {
padding: 0 0 16px 0;
}
li.steps_list_2 {
margin-bottom: 30px;
font-size: 16px;
line-height: 25px;
color: #545454;
list-style: none;
background-color: #fff;
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
padding: 20px;
border: 1px solid #e5e5e5;
clear: both;
}
&lt;/style&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDT2D0H_0Wd_DLZj4YVsh78uaFKbzXhMydLLGYQt71o0eMpXm8Lgx25rDhnRAgHmlp7YJFh5N_-n5tJ1NLA-mg_DQpvHwwxNFWjYAdx_VtKjyRQV6REV_9zrXEoRyB0CZ6zj6y9-Hrfro/s1600/Dreams_thumb.jpg" /&gt;&lt;/div&gt;
&lt;div style="text-align:justify"&gt;
&lt;p&gt;It has been said that whatever you can dream of, you can achieve. There is no greater time than now to begin to live your dreams. Your dreams are achievable if you will put in the effort needed to make it work. Your mind is such that it can only conceive what it can be achieve, whatever the dream is your mind believes it can achieve it, but you have to agree with your mind that you can achieve it, so that when you are in agreement you can work together to achieve your dreams.&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;h1&gt;Steps&lt;/h1&gt;
&lt;div id="steps" class="section_text"&gt;
&lt;ol class="steps_list_2"&gt;
&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-1.jpg"&gt;
&lt;h3&gt;1.- Be specific bout your dream.&lt;/h3&gt;
&lt;p&gt;The first thing you need to do is to be specific about your dream, at least the one you want to work on now, the way to be very specific about your dreams is to write them in your dream journal.&lt;/p&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-2.jpg"&gt;
&lt;h3&gt;2.- Turn your dream into a burning desire.&lt;/h3&gt;
&lt;p&gt;You will need to turn your dream into a burning desire in your heart. A strong will to achieve your dreams boosts self-confidence and will aid you in pulling through some of the worst stage of life. The way to turn you dream into a burning desire is to believe that your dream is achievable and that you can achieve it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Once it has become a burning desire you are no longer to refer to it as a dream, because the very nature of a dream gives the impression that it is not real.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-3.jpg"&gt;
&lt;h3&gt;3.- Turn your burning desires into goals.&lt;/h3&gt;
&lt;p&gt;You then need to turn your burning desire into a goal. You had earlier turned your dream into a burning desire because you believe it can be done and that you can do it. But to actually turn it into a goal, you need to believe that you will do it. This kind of believing is based on your commitment that if it can be done then I can do it, and if I can do it then I will do it now. The thing about goals is they are time sensitive, so adding a time frame helps you to accept the fact that you are committed to doing it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Once you have turned your burning desire into a goal, you are no longer to call it a burning desire or a dream, it is now your goal in life, a goal that must be achieved by you.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-4.jpg"&gt;
&lt;h3&gt;4.- Plan.&lt;/h3&gt;
&lt;p&gt;create a strategic plan of action. You will need to create a strategy for the accomplishment of your goals; this strategy is usually called a plan or a plan of action.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
There is no universal plan of action for everyone, each strategy depends on the person involved and the goals they wish to accomplish, because of this fact the key to creating your own working plan of action lies in you and you need to seek it out.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-5.jpg"&gt;
&lt;h3&gt;5.- Take action now.&lt;/h3&gt;
&lt;p&gt;Once you have turned your goals into a plan of action tailored after you, because its creation took your person into consideration, you need to take action and utilize every opportunity that will come your way.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
The way of the universe is that like attracts like and where there is a need, the universe seems to find a way of meeting those needs through opportunities. You need to be prepared for them as you take action on your plans to achieve your goals which will help you actualize your burning desire and make your dream a reality.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-6.jpg"&gt;
&lt;h3&gt;6.- Set short-term goals.&lt;/h3&gt;
&lt;p&gt;Divide your main goal into sub-divisions, and set time periods for achieving each of them.&lt;/p&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-7.jpg"&gt;
&lt;h3&gt;7.- Review your progress regularly.&lt;/h3&gt;
&lt;p&gt;Review your progress regularly and check.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
If you have achieved your goals for that time period.
&lt;/li&gt;
&lt;li&gt;
If you still have a desire to follow your dream.
&lt;/li&gt;
&lt;li&gt;
If you have deviated from the path toward fulfilling your goal.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-8.jpg"&gt;
&lt;h3&gt;8.- Knowledge; Knowing exactly what is your dream and accepting that is exactly what you want.&lt;/h3&gt;
&lt;p&gt;(e.g =&gt; Knowing that you want good grades) Also learn about the law of attraction. This law states that what you focus all your attention to is what you will receive.&lt;/p&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-9.jpg"&gt;
&lt;h3&gt;9.- Visualization; Have a vivid picture in your mind or video of how your dream will be when you accomplish it.&lt;/h3&gt;
&lt;p&gt;Tell yourself that you have already received it (this is focusing on your subconscious mind which is 5/6 of your thinking mind on your goal which will lead your inner reality to becoming a physical reality).&lt;/p&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-10.jpg"&gt;
&lt;h3&gt;10.- Be confident; Have no doubts in yourself what so ever, this will lead to reverse thinking which will surround you with negative energy and you will receive a corresponding negative result.&lt;/h3&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-11.jpg"&gt;
&lt;h3&gt;11.- Meditate; Relax and calm your mind, soul and body.&lt;/h3&gt;
&lt;p&gt;This will also help with step.&lt;/p&gt;
&lt;/li&gt;

&lt;li class="steps_list_2"&gt;
&lt;img style="width:520px;margin-top: 5px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Steps_Dream/Make-Your-Dreams-Come-True-Step-12.jpg"&gt;
&lt;h3&gt;12.- USing the above steps and work towards your dream with all your focus, concentration and confidence.&lt;/h3&gt;
&lt;p&gt;Your goal will become a reality sooner that you could have ever imagined.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4&gt;Edited by Michael Igioh, Puddy, Maluniu, Krystle and 20 others.&lt;/h4&gt;
&lt;p style="font-size:16px"&gt;Great!! Post from &lt;b&gt;WikiHow&lt;/b&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDT2D0H_0Wd_DLZj4YVsh78uaFKbzXhMydLLGYQt71o0eMpXm8Lgx25rDhnRAgHmlp7YJFh5N_-n5tJ1NLA-mg_DQpvHwwxNFWjYAdx_VtKjyRQV6REV_9zrXEoRyB0CZ6zj6y9-Hrfro/s72-c/Dreams_thumb.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Comunicación Serial (UART)</title><link>https://jealgv.blogspot.com/2013/12/comunicacion-serial-uart.html</link><category>Interfaces</category><category>Microcontrollers</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Mon, 16 Dec 2013 21:38:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-9152240257613039471</guid><description>&lt;div style="text-align:justify"&gt;
&lt;p&gt;Los PIC utilizan, entre otros, dos modos de transmisión serie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El puerto serie síncrono (SSP).&lt;/li&gt;
&lt;li&gt;La interfaz de comunicación serie (SCI) o receptor transmisor serie síncrono-asíncrono universal (USART).&lt;/li&gt;
&lt;/ul&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;El SSP se suele utilizar en la comunicación con otros microcontroladores o con periféricos. Las dos interfaces de trabaja son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interfaz serie de periféricos (SPI): desarrollada por Motorola para la comunicación entre microcontroladores de la misma, o diferente familia en modo &lt;b&gt;maestro-esclavo&lt;/b&gt;; full-duplex.&lt;/li&gt;
&lt;li&gt;Interfaz Inter-circuitos (I&lt;sup&gt;2&lt;/sup&gt;C):Interfaz desarrollada por Philips, con una gran capacidad para comunicar microcontroladores y periféricos, half-duplex.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La configuración &lt;b&gt;USART&lt;/b&gt; (transmisor-receptor serie síncrono-asíncrono universal), también conocido SCI (Interfaz de Comunicación Serie), permite la comunicación con un ordenador trabajando en modo full-duplex asíncrono o con periféricos trabajando en modo half-duplex. En general, pueden trabajar de dos formas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asincrono (full-duplex).&lt;/li&gt;
&lt;li&gt;Sincrono (half-duplex).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Otros tipos de comunicación soportados por los PIc son: 1-Wire bus, LIN (Local Interconnect Network),USB(Universal Serial Bus), el CAN (Controller Area Network) y Ethernet&lt;/p&gt;

&lt;center&gt;&lt;img style="width:530px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/UART/UARTDB.png"/&gt;&lt;/center&gt;
&lt;center&gt;&lt;span style="color:#33aaff; font-weight:bold"&gt;Figura 1.- &lt;b&gt;UART&lt;/b&gt; - Diagrama a bloques simplificado.&lt;/span&gt;&lt;/center&gt;
&lt;p&gt;Algunos PIC disponen del modulo de comunicación serie USART/SCI, tal vez el más utilizado entre los módulos de interfaz serie. La principal función del USART es la de transmitir o recibir datos en serie. Esta operación puede dividirse en dos categorias: síncrona o asíncrona. La transmisión síncrona utiliza una señal de reloj y una linea de datosl mientras que en la transmisión asíncrona no se envía la señal de reloj, por lo que el emisor y el receptor deben de tener relojes con la mismamfrecuencia y fase. Cuando la distancia entre el emisor y el receptor es pequeña se suele utilizar la transmisión síncrona, mientras que para distancias mayores se utiliza la transmisión asíncrona.&lt;/p&gt;
&lt;p&gt;El USART puede transmitir o recibir datos serie. Puede transferir tramas de satos de 8 o 9 bits por transmisión y detectar errores de transmisióm. Tambien puede generar interrupciones cuando se produce una recepción de datos o cuando la transmisión ha sido completada.&lt;/p&gt;
&lt;p&gt;Algunos PIC tienen un USART direccionable o AUSART (Addresable USART) que utiliza el noveno bit de datos para distinguir entre la recepción de datos o de dirección. En algunos PIC se ha mejorado el modulo USART dando lugar al EUSART o USART mejorado, el cual permite la detección automatica de baudios, el despertar automatico al recibir la señal de sincronismo o la transmisión del caracter &lt;i&gt;break&lt;/i&gt; de 12 bits, permitiendo su utilización en sistemas de redes de interconexión local (bus &lt;i&gt;LIN&lt;/i&gt;). Basicamente la transmision serie consiste en enviar los datos bit a bit a traves de una linea comun en periodos de tiempos fijos, dando lugar a la llamada velocidad de transmisión o número de bits enviados por segundo (baudios). Tanto el emisor como el receptor poseen registros de desplazamiento para realizar la comunicación. Los bits estan codificados en &lt;b&gt;NRZ&lt;/b&gt; (nivel alto:1, nivel bajo:0), &lt;b&gt;NRZI&lt;/b&gt; (cambio de nievl:1, sin cambio de nivel:0)&lt;/p&gt;
&lt;p&gt;La gran mayoría de los sistemas de comunicación de datos digitales actuales utilizan la comunicación en serie, debido a las grandes ventajas que representa esta manera de comunicar los datos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Económica&lt;/b&gt; Utiliza pocas líneas de transmisión inclusive puede usar sólo una línea.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Confiable&lt;/b&gt; Los estándares actuales permiten transmitir datos con bits de paridad y a niveles de voltaje o corriente que los hacen poco sensibles a ruido externo. Además por tratarse de información digital, los cambios en amplitud de las señales (normalmente causadas por ruido) afectan muy poco o nada a la información.&lt;/li&gt; 
&lt;li&gt;&lt;b&gt;Versátil&lt;/b&gt; No está limitada a usar conductores eléctricos como medio de transmisión, pudiendo usarse también: fibra óptica, aire, vacío, etc. Además el tipo de energía utilizada puede ser diferente: luz visible, infrarroja, ultrasonido, pulsos eléctricos, radio frecuencia, microondas, etc. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una gran cantidad de periféricos se comunican actualmente en serie con una micro computadora: líneas telefónicas, terminales remotas, unidades de cassette magnético, el ratón, teclados, etc.&lt;/p&gt;

&lt;h2&gt;Esquematico&lt;/h2&gt;
&lt;a class="lightbox" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/UART/Schematic.jpg" title="Comunicación Serial UART::Comunicación Serial UART Envio-Rcepción"&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/UART/Schematic_thumb.jpg" alt="Concrete" class="lbThumb"/&gt;&lt;/a&gt;

&lt;h2&gt;Comunicación Serial (UART)[Emisor Firmware "Emisor.h"]&lt;/h2&gt;
&lt;pre class='brush: cpp'&gt;
#include &lt;18F2520.h&gt;
#device ADC=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOLPT1OSC                //Timer1 configured for higher power operation
#FUSES NOSTVREN                 //Stack full/underflow will not cause reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(clock=8MHz)
#use rs232(baud=115200,UART1,stream=Emisor)
&lt;/pre&gt;

&lt;h2&gt;Comunicación Serial (UART)[Emisor Firmware "Emisor.c"]&lt;/h2&gt;
&lt;pre class='brush: cpp'&gt;
#include &lt;Emisor.h&gt;

void Enviar(){
int i;
   for(i = 0; i &lt; 10; i ++){
      fputc(i,Emisor);
      delay_ms(1000);
   }
}

void Mensaje(){
char Msj[64] = "Hola Mundo!";
int i;
   for(i = 0; i &lt; sizeof(Msj); i ++){
      fputc(Msj[i], EMisor);
   }
}

void main()
{
   while(TRUE)
   {
      //TODO: User Code
      //Enviar();
      Mensaje();
      delay_ms(2000);
   }

}
&lt;/pre&gt;

&lt;h2&gt;Comunicación Serial (UART)[Receptor Firmware "Receptor.h"]&lt;/h2&gt;
&lt;pre class='brush: cpp'&gt;
#include &lt;18LF2520.h&gt;
#device ADC=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOLPT1OSC                //Timer1 configured for higher power operation
#FUSES NOSTVREN                 //Stack full/underflow will not cause reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(clock=8MHz)
#use rs232(baud=115200,UART1,stream=Receptor)
&lt;/pre&gt;

&lt;h2&gt;Comunicación Serial (UART)[Receptor Firmware "Receptor.c"]&lt;/h2&gt;
&lt;pre class='brush: cpp'&gt;
#include &lt;Receptor.h&gt;

#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_A0
#define LCD_DATA5 PIN_A1
#define LCD_DATA6 PIN_A2
#define LCD_DATA7 PIN_A3

#include &lt;lcd.c&gt;

int i;
char Msj[64];
char Data;


void Leer(){
do{
   Data = fgetc(Receptor);
   if(Data == '\0'){
      break;
   }
   else{
   Msj[i] = Data;
   i++;
   }
}
while(Kbhit(Receptor));   
}

void Limpiar(char *var){
   int i = 0;
   while(var[i] != '\0'){
      var[i] = '\0';
      i ++;
   }
}

#INT_RDA
void  RDA_isr(void) 
{
   //i = fgetc(Receptor);
   //lcd_putc("\f");
   Leer();
}


void main()
{

   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   lcd_init();

   while(TRUE)
   {
      //TODO: User Code
      lcd_gotoxy(1,1);
      printf(lcd_putc,"%s",Msj);
      Limpiar(Msj);
   }
}
&lt;/pre&gt;

&lt;/div&gt;
&lt;style&gt;
#icon-external {
padding-left: 17px;
background: url(https://dl.dropboxusercontent.com/u/32491540/JD-Tronics/Imgs/icon_external.png) 0 40% no-repeat;
}
&lt;/style&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white;text-align: center;"&gt;Download Zone!&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;th style="text-align:justify"&gt;Files:&lt;/th&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/UART/COMUNICACI%C3%93N%20SERIAL%20ENTRE%20PIC%E2%80%99S%20Y%20PC.pdf" target="_blank"&gt;&lt;i&gt;Comunicación Serial entre PICs y PC&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/UART/USART%20Microchip.pdf" target="_blank"&gt;&lt;i&gt;USART Microchip&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/UART/USART.pdf" target="_blank"&gt;&lt;i&gt;Descripción detallada del puerto USART&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-file" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/UART/UART.rar" target="_blank"&gt;&lt;i&gt;Firmware UART&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-file" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/UART/UART.pdsprj" target="_blank"&gt;&lt;i&gt;Simulacion UART&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a id="icon-external" href="http://www.youtube.com/watch?v=_FqJnN6Rsrw" class="lightbox" title="Comunicación Serial UART"&gt;&lt;i&gt;Comunicacion Serial (UART) PIC..&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;
&lt;a class="tooltip" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/images/Web-browser-icon.png" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>USB HID CCS DEMO</title><link>https://jealgv.blogspot.com/2013/12/usb-hid-ccs-demo.html</link><category>Interfaces</category><category>Microcontrollers</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Wed, 11 Dec 2013 12:35:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-3415680508199494675</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhejFaQhyphenhyphenvBK_2XjJfaBxwhEIqFKWhxs7Cv9Em0-dbaPcSw_0fuwpYMoNrmtY8UNeO137LBtIBVDyfV8H1NoSm8gggC_9l1k3UQH6-45riwW73_pxmkqvkyAmrjoLEyFNO0VsZXstcs0Dg/s1600/USB_HID.png" /&gt;&lt;/div&gt;
&lt;div style="text-align:justify"&gt;
&lt;p&gt;Well, some weeks ago I was thinking about, what can I post?, so I saw around my study room and I saw my old toolbox with my old development boards, for example my Pinguino32, Arduino, Stellaris and other boards that I made when I was studying my career, and among these things, I found Microchip's microcontrollers PIC16fxx and PIC18Fxx. Of all my microcontrollers that I found and I had one with USB interface, and this it's the reason why I made this post talking about USB HID.&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;Some years ago it was very common to use the RS232 communication between our boards and computers, but at this time you seldom can see that technology again in new boards, because it's old,in its moments it was a good technology with high functionalities but the time is changing, and always is necessary more speed when we talk about communication and performance. So, most microcontrollers have a USB interfaces or compatibility to adapt USB interfaces, and these adaptability improve the communication versatility between humans and computers, and finally our design will be better, stronger and complex for resolve any problem.&lt;/p&gt;
&lt;p&gt; Finally in this post I try to make a simple program toggling leds, sending and receiving messages from computer to microcontroller and viceversa, in essence this means that you can rapidly develop and test a USB device and the Windows host-application with a minimum of USB Generic HID protocol knowledge. The class library gives you a very simple interface to the USB device from C# and the firmware serves as an example of how to create the specific software needed on the PIC for your device design. I used the CyUSB library from Cypress Company, this library has either a lot of function for USB Cypress HID or USB HID generic and that it's awesome. there are a lot of APIs to achieve communication between our microcontroller and computer, for example "Florian Project", "Easy PIC Project", "LVR Project",etc... and I chose this because it's new or more less, you can prove with other that's the challenge. So, below I put schematics, codes and videos about this post talking about USB HID Demo, enjoy it!!
&lt;/p&gt;

&lt;h2&gt;Schematic&lt;/h2&gt;
&lt;a class="lightbox"  href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/HID/schematic.jpg" title="USB HID CCS Demo::Connection of the USB HID CCS Demo"&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/HID/schematic_thumbs.jpg" alt="Concrete" class="lbThumb"/&gt;&lt;/a&gt;

&lt;h2&gt;USB HID CCS[Microcontroller Firmware "USB_HID.h"]&lt;/h2&gt;
&lt;pre class='brush: cpp'&gt;
#include &lt;18F4550.h&gt;
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES HSPLL                    //High Speed Crystal/Resonator with PLL enabled
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV46                   //Brownout reset at 4.6V
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOCPD                    //No EE protection
#FUSES STVREN                   //Stack full/underflow will cause reset
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads
#FUSES NOCPB                    //No Boot Block code protection
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLPT1OSC                //Timer1 configured for higher power operation
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL5                     //Divide By 5(20MHz oscillator input)
#FUSES CPUDIV1                  //No System Clock Postscaler
#FUSES USBDIV                   //USB clock source comes from PLL divide by 2
#FUSES VREGEN                   //USB voltage regulator enabled

#use delay(clock=20000000)

/*-- Transmit and Receive Packet Size --*/
#define USB_CONFIG_HID_TX_SIZE 64 
#define USB_CONFIG_HID_RX_SIZE 64

/*---------- VENDOR ID AND PRODUCT ID -----------*/
#define USB_CONFIG_PID 66        //Chnage Vendor Id and Product Id
#define USB_CONFIG_VID 1240        //So that they will work with my Application
/*-----------------------------------------------*/

#define HID_USB_ON PIN_B0
int8 Pin_Table[] = {PIN_C0, PIN_C1, PIN_C2}; 

/*---- LCD Pin definition ----*/
#define LCD_ENABLE_PIN  PIN_B3                                    
#define LCD_RS_PIN      PIN_B2                                    
#define LCD_RW_PIN      PIN_B1                                    
#define LCD_DATA4       PIN_B4                                    
#define LCD_DATA5       PIN_B5                                    
#define LCD_DATA6       PIN_B6                                    
#define LCD_DATA7       PIN_B7 
&lt;/pre&gt;

&lt;h2&gt;USB HID CCS [Microcontroller Firmware "USB_HID.c"]&lt;/h2&gt;
&lt;pre class ='brush:cpp'&gt;
#include "USB_HID.h"

/*---- Include the LCD include file ----*/
#include &lt;lcd.c&gt; 

/*---- USB Libraries ----*/
#include &lt;pic18_usb.h&gt;
#include "usb_desc_hid.h"
#include &lt;usb.c&gt;

//Declare Variables
unsigned char HID_InData[64];
unsigned char HID_OutData[64];

char LED[3] = {'A','B','C'};
int i = 0;

void Message(){
//Welcome Text
printf(lcd_putc,"\f");
printf(lcd_putc,"Welcome to..\n Jeal's Blog!!");
}

void Buttons_Options(){
int Counter = 0;
while(TRUE){
   if(Counter &lt; 100){  
      if (!input(PIN_A5)){    
         while((!input(PIN_A5)));         
         output_toggle(Pin_Table[i]);
         printf(lcd_putc,"\f");
         printf(lcd_putc,"Toggling LED %d \nwith buttons",i);
      }
      if (!input(PIN_E0)){    
         while((!input(PIN_E0)));
         output_toggle(Pin_Table[i]);
         printf(lcd_putc,"\f");
         printf(lcd_putc,"Toggling LED %d \nwith buttons",i);
      } 
   }
   else if(Counter == 100){
      break;
   }
   Counter ++;
   delay_ms(5);
}
}

void Reading_Buttons1(){
   if (!input(PIN_E1)){    
   delay_ms(100);             
      while((!input(PIN_E1))){        
/*--------------- MENU --------------------*/
         switch(LED[i]){
            case 'A':
            //Something        
            printf(lcd_putc,"\f");
            printf(lcd_putc,"Case 'A'");
            Buttons_Options();
            break;
            case 'B':
            //Something
            printf(lcd_putc,"\f");
            printf(lcd_putc,"Case 'B'");  
            Buttons_Options();
            break;
            case 'C':
            //Something
            printf(lcd_putc,"\f");
            printf(lcd_putc,"Case 'C'");
            Buttons_Options();
            break; 
            default:
            printf(lcd_putc,"\f");
            printf(lcd_putc,"Default"); 
            break;         
            }
      }
      i++;
      if(i&gt;2) i = 0;
   }
}

void Setup_USB_HID(){
   usb_init();                      
   usb_task();                     
   usb_wait_for_enumeration();      
}

void Status_USB_HID(){
   int1 Attached_HID = 0; 
   int1 Enumerated_HID = 0;
   Attached_HID = usb_attached();
   Enumerated_HID = usb_enumerated();
   
      if(Attached_HID &amp;&amp; Enumerated_HID){
         output_high(HID_USB_ON);
      }
      else{
         output_toggle(HID_USB_ON);
         delay_ms(100);
      }
}
 
void Clear_HID_Bus(char *var) {
    int i = 0;
    while(var[i] != '\0') {
        var[i] = '\0';
        i++;
    }
} 

void Toggling_LEDs(){
switch(HID_InData[1])
      {
      case 0:  //LED # 1
         output_toggle(Pin_Table[HID_InData[1]]);
         printf(lcd_putc,"\f");
         printf(lcd_putc,"Toggling LED %d \nby USB",HID_InData[1]);
         break;
      case 1:  //LED # 2
         output_toggle(Pin_Table[HID_InData[1]]);
         printf(lcd_putc,"\f");
         printf(lcd_putc,"Toggling LED %d \nby USB",HID_InData[1]);         
         break;
      case 2:  //LED # 3
         output_toggle(Pin_Table[HID_InData[1]]);
         printf(lcd_putc,"\f");
         printf(lcd_putc,"Toggling LED %d \nby USB",HID_InData[1]);         
         break;
      }

}

void Writitng_Messages(){
int j = 0,k= 0,x=1;
char Buffer[64];
printf(lcd_putc,"\f");
   for(j = 1; j&lt;=sizeof(HID_InData); j++){   
   Buffer[k] = (HID_InData[j]);
   if(Buffer[k] == '\0'){
   break;
   }
   else{
      if(x &gt; 16){
         lcd_gotoxy(x-16,2);
         printf(lcd_putc,"%c",Buffer[k]);
         }
      if(x &gt; 32){
         printf(lcd_putc,"\f");  
         printf(lcd_putc,"Overflow!!\n Lack of space");      
      }
      else{
         lcd_gotoxy(x,1);
         printf(lcd_putc,"%c",Buffer[k]);
         }
   }
   k++;
   x++;
   }  
}

Reading_ADC(){
int i= 0;
for (i=0;i&lt;64;i++){
HID_OutData[i]=read_adc();
delay_us(20);
}
usb_put_packet(1,HID_OutData,64,USB_DTS_TOGGLE);
}

void Reading_HID(){
   usb_get_packet(1,HID_InData,64);
    switch(HID_InData[0])
      {
      case 1:  //Toggle LEDS
         Toggling_LEDs();
         break;
      case 2:  //Message.
         Writitng_Messages();
         break;
      case 3:  //Reading ADCs.
         Reading_ADC();
         break;
      }
}

void main()
{
   setup_adc_ports(AN0|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
/*
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
*/

   //TODO: User Code
   lcd_init(); 
   Message();
      
   //Init the USB
   Setup_USB_HID();
    
   while(TRUE)
   {        
   Reading_Buttons1();        
   
        usb_task();
        Status_USB_HID();
        if(usb_enumerated())
        {
            if(usb_kbhit(1))
            {    
                //Clean array for fixing problems
                Clear_HID_Bus(HID_InData);
                Clear_HID_Bus(HID_OutData);
                
                //Get the Data
                Reading_HID();               
           }
        }         
    }
} 
&lt;/pre&gt;

&lt;h2&gt;C# Software [USB HID Demo]&lt;/h2&gt;
&lt;pre class='brush: csharp'&gt;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CyUSB;

namespace USB_HID_Project
{
    public partial class Form1 : Form
    {
        public static int[] PID_USB = new int[10];
        public static int[] VID_USB = new int[10];
        bool Led1_state = false;
        bool Led2_state = false;
        bool Led3_state = false;
        public static Int64 ticks = 0;
        int My_Device;
        bool Status_HID = false;        
        USBDeviceList USB_Devices;
        CyHidDevice USB_Host;

        public Form1()
        {
            InitializeComponent();
            USB_Devices = new USBDeviceList(CyConst.DEVICES_HID);

            USB_Devices.DeviceAttached += new EventHandler(USB_Devices_DeviceAttached);
            USB_Devices.DeviceRemoved += new EventHandler(USB_Devices_DeviceRemoved);
        }

        void Read_HID()
        {
            if (USB_Host.ReadInput())
            {
                richTextBox2.Clear();
                byte[] rcv = USB_Host.Inputs.DataBuf;
                for (int i = 1; i &lt; USB_Host.Inputs.RptByteLen; i++)
                {
                    richTextBox2.Text += USB_Host.Inputs.DataBuf[i].ToString();
                    richTextBox2.Text += Environment.NewLine;
                }                 
            }
             
        }

        void USB_Devices_DeviceRemoved(object sender, EventArgs e)
        {
            USBEventArgs usbEvent = e as USBEventArgs;
            //label3.Text = usbEvent.FriendlyName + " removed.";             
        }

        void USB_Devices_DeviceAttached(object sender, EventArgs e)
        {
            USBEventArgs usbEvent = e as USBEventArgs;
            //label4.Text = usbEvent.Device.FriendlyName + " connected.";
        }
        
        private void button2_Click(object sender, EventArgs e)
        {            
            string text = richTextBox1.Text;
            byte[] data = System.Text.Encoding.ASCII.GetBytes(text); 
            var NewArray = new byte[data.Length + 2];
            data.CopyTo(NewArray, 2);
            NewArray[1] = 0x02;
            data = NewArray;
            USB_Host.Outputs.DataBuf = data;
            USB_Host.WriteOutput();            
        }

        private void detectHIDDevicesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int i;
            HID_Connected.DropDownItems.Clear();
            ToolStripMenuItem[] items = new ToolStripMenuItem[USB_Devices.Count];
            for (i = 0; i &lt; USB_Devices.Count; i++)
            {
                USBDevice Devices = USB_Devices[i];
                PID_USB[i] = Devices.ProductID;
                VID_USB[i] = Devices.VendorID;
                items[i] = new ToolStripMenuItem();
                items[i].Name = "SubItem" + i.ToString();
                items[i].Text = Devices.Product;
                if (Devices.Product == "CCS HID Demo")
                {
                    items[i].Click += new EventHandler(MenuItemClickHandler);
                    My_Device = i;
                }                
            }
            HID_Connected.DropDownItems.AddRange(items);
        }        

        private void MenuItemClickHandler(object sender, EventArgs e)
        {
            ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
            // Take some action based on the data in clickedItem
            USB_Host = USB_Devices[VID_USB[My_Device], PID_USB[My_Device]] as CyHidDevice;
            if (USB_Host != null)
            {
                Status_HID = true;
                ovalShape1.FillColor = Color.GreenYellow;
                ovalShape1.FillGradientColor = Color.WhiteSmoke;
                ovalShape1.BorderColor = Color.LawnGreen;
                label1.Text = "On";
            }
            else
            {
                Status_HID = false;
                label1.Text = "Off";
            }

        }      
        
        private void Led1(object sender, EventArgs e)
        {
            if (Led1_state == false)
            {
                ovalShape2.FillColor = Color.Red;
                ovalShape2.FillGradientColor = Color.WhiteSmoke;
                var NewArray = new byte[64];
                NewArray[1] = 0x01;
                NewArray[2] = 0x00;
                USB_Host.Outputs.DataBuf = NewArray;
                USB_Host.WriteOutput();   

            }
            else
            {
                ovalShape2.FillColor = Color.Maroon;
                ovalShape2.FillGradientColor = Color.SaddleBrown;
                var NewArray = new byte[64];
                NewArray[1] = 0x01;
                NewArray[2] = 0x00;
                USB_Host.Outputs.DataBuf = NewArray;
                USB_Host.WriteOutput();  
            }
            Led1_state = !Led1_state;
        }

        private void Led2(object sender, EventArgs e)
        {
            if (Led2_state == false)
            {
                ovalShape3.FillColor = Color.CornflowerBlue;
                ovalShape3.FillGradientColor = Color.WhiteSmoke;
                var NewArray = new byte[64];
                NewArray[1] = 0x01;
                NewArray[2] = 0x01;
                USB_Host.Outputs.DataBuf = NewArray;
                USB_Host.WriteOutput();  
            }
            else
            {
                ovalShape3.FillColor = Color.MidnightBlue;
                ovalShape3.FillGradientColor = Color.DarkSlateBlue;
                var NewArray = new byte[64];
                NewArray[1] = 0x01;
                NewArray[2] = 0x01;
                USB_Host.Outputs.DataBuf = NewArray;
                USB_Host.WriteOutput();  
            }
            Led2_state = !Led2_state;
        }

        private void Led3(object sender, EventArgs e)
        {
            if (Led3_state == false)
            {
                ovalShape4.FillColor = Color.GreenYellow;
                ovalShape4.FillGradientColor = Color.WhiteSmoke;
                var NewArray = new byte[64];
                NewArray[1] = 0x01;
                NewArray[2] = 0x02;
                USB_Host.Outputs.DataBuf = NewArray;
                USB_Host.WriteOutput();  
            }
            else
            {
                ovalShape4.FillColor = Color.DarkGreen;
                ovalShape4.FillGradientColor = Color.DimGray;
                var NewArray = new byte[64];
                NewArray[1] = 0x01;
                NewArray[2] = 0x02;
                USB_Host.Outputs.DataBuf = NewArray;
                USB_Host.WriteOutput();  
            }
                Led3_state = !Led3_state;
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            richTextBox1.Clear();
        }      

        private void button4_Click(object sender, EventArgs e)
        {
            var NewArray = new byte[64];
            NewArray[1] = 0x03;
            USB_Host.Outputs.DataBuf = NewArray;
            USB_Host.WriteOutput();
            Read_HID();
        }

        private void TimerTicks(object sender, EventArgs e)
        {
            var NewArray = new byte[64];
            NewArray[1] = 0x03;
            USB_Host.Outputs.DataBuf = NewArray;
            USB_Host.WriteOutput();
            Read_HID();
        }

        private void Switch(object sender, EventArgs e)
        {
            int value = 0;
            if (trackBar1.Value == 0)
            {
                textBox1.Clear();
                timer1.Stop();
                timer1.Enabled = false;
            }
            else
            {
                value = Int16.Parse(textBox1.Text);
                timer1.Interval = value;
                timer1.Start();
                timer1.Enabled = true;
            }
        }          
    }
     
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;style&gt;
#icon-external {
padding-left: 17px;
background: url(https://dl.dropboxusercontent.com/u/32491540/JD-Tronics/Imgs/icon_external.png) 0 40% no-repeat;
}
&lt;/style&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white;text-align: center;"&gt;Download Zone!&lt;/h2&gt;
&lt;div class="download"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;th style="text-align:justify"&gt;Files:&lt;/th&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a class="icon-file" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/HID/USB%20HID%20Firmware.rar" target="_blank"&gt;&lt;i&gt;USB HID CCS Demo - Microcontroller&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-file" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/HID/USB%20HID%20Project.rar" target="_blank"&gt;&lt;i&gt;USB HID Demo - Visual C#&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-file" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/HID/USB_HID.pdsprj" target="_blank"&gt;&lt;i&gt;Simulation USB HID Demo&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a id="icon-external"  href="http://www.youtube.com/watch?v=bUfrLo6j-yg" class="lightbox" title="USB HID CCS DEMO"&gt;&lt;i&gt;USB HID Video..&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;
&lt;a class="tooltip" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/images/Web-browser-icon.png" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhejFaQhyphenhyphenvBK_2XjJfaBxwhEIqFKWhxs7Cv9Em0-dbaPcSw_0fuwpYMoNrmtY8UNeO137LBtIBVDyfV8H1NoSm8gggC_9l1k3UQH6-45riwW73_pxmkqvkyAmrjoLEyFNO0VsZXstcs0Dg/s72-c/USB_HID.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Human Interface Devices</title><link>https://jealgv.blogspot.com/2013/12/human-interface-devices.html</link><category>Interfaces</category><category>Microcontrollers</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Thu, 5 Dec 2013 13:27:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-3112525479439177796</guid><description>&lt;div style="text-align:justify"&gt;
&lt;p&gt;History of the &lt;b&gt;Universal Serial Bus (USB)&lt;/b&gt; is quite short compare to RS232 for example. Development started in 1994 by effort of six companies - IBM, Compaq, Intel, Microsoft, NEC, Nortel and DEC. The first idea was to develop universal bus simple to use with small and compact connectors (to reduce many connectors in the personal computers). To have a possibility to connect devices such as digital cameras, webcams (or any other devices with big data transfers in a short time), there was also requirement for high transfer speeds.&lt;p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;1995 - USB Implementers Forum (USB-IF) was formed on the First Windows Hardware Engineering &lt;&gt;Conference (WinHec). During this conference Intel introduced first USB silicon.&lt;/li&gt;
&lt;li&gt;1996 - USB Specification 1.0 was released.&lt;/li&gt;
&lt;li&gt;1997 - Membership increased in the USB-IF to 400 members. In the world was developed more than 500 USB products this year.&lt;/li&gt;
&lt;li&gt;2000 - USB 2.0 was released.&lt;/li&gt;
&lt;li&gt;2001 - Standardization of USB 2.0 by USB-IF.&lt;/li&gt;
&lt;li&gt;2008 - USB 3.0 announced by USB 3.0 Prometer Group.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Low speed and full speed baud rates were included in the USB 1.1 specification. High speed came with USB 2.0 in the year 2000. High speed USB was some attack to compete with Firewire Serial Bus (IEEE1394a), which was developed and presented in 1995 by Apple. It was basically developed for big data transfers (e.g. digital video transfers), so the baud rates were 100, 200, or 400 Mbits/s. In 1995 Firewire had no competitors, because USB 1.0 could not compete wit it. USB 2.0 was little bit faster than Firewire400, but it was changed in the year 2002 by presenting Firewire800 (IEEE1394b with maximal baud rate 800 Mbits/s).&lt;/p&gt;
&lt;h2&gt;Hardware Description&lt;/h2&gt;
&lt;center&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/USB/Types_USB.png"/&gt;&lt;/center&gt;
&lt;center&gt;&lt;span style="color:#33aaff; font-weight:bold"&gt;Figure 1.- USB Connectors&lt;/span&gt;&lt;/center&gt;
&lt;p&gt;On the figure 1 are shown the three most used types of USB connectors. Typically we can find sockets type 'A' on the computer main boards and on the hubs. Type 'B' sockets are situated on the devices ('B' plug are always connected downstream). So the upstream and downstream connectors are not mechanically interchangeable. Cables, where are e.g. both connectors of the same type, are prohibited by the specification (except cables for bridges used to connected two computers together). Because Type 'B' connector is not suitable for small devices (9 because of its size), mini-USB 'B' connectors were developed. In the table 1 there is shown connection of the pins.&lt;/p&gt;

&lt;center&gt;&lt;span style="color:#33aaff; font-weight:bold"&gt;Table 1.- Description of the USB pins&lt;/span&gt;&lt;/center&gt;
&lt;table class="wikitable" style="background-color: #f9f9f9; border-collapse: collapse; border: 1px solid rgb(170, 170, 170); color: black; font-size: 13px; line-height: 19.200000762939453px; margin: 1em 0px; text-align: center; width: 100%;"&gt;
&lt;tbody&gt;
    &lt;tr&gt;
    &lt;th  style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Pin&lt;/th&gt; 
    &lt;th  style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Name&lt;/th&gt; 
    &lt;th  style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Cable Color&lt;/th&gt;  
    &lt;th  style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Description&lt;/th&gt;  
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;1&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;VCC&lt;/td&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Red&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;+ 5 V DC&lt;/td&gt;
&lt;/tr&gt;
  
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;2&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;D -&lt;/td&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;White&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Data -&lt;/td&gt;
&lt;/tr&gt;
    
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;3&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;D + &lt;/td&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Green&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Data +&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;4&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;GND&lt;/td&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Black&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Ground&lt;/td&gt;
&lt;/tr&gt;  
   
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;x&lt;/td&gt;   
&lt;td colspan="3" style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;may not be used, connected to GND or used as attachment identification for some devices&lt;/td&gt;
&lt;/tr&gt;      
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Voltage levels of the USB communication depend of course on the baud rate. In the USB specification are defined three different baud rates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Low speed - 1.5 Mbits/s&lt;/li&gt;
&lt;li&gt;Full speed - 12 Mbits/s&lt;/li&gt;
&lt;li&gt;High speed - 480 Mbits/s&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Low speed is usually used for &lt;b&gt;HIDs (Human Interface Devices)&lt;/b&gt; like a mouse, joystick, keyboard. USB cable contains four wires. On the borders are wires V&lt;sub&gt;BUS&lt;/sub&gt; and GND, in the center is twisted pair marked as &lt;b&gt;D+&lt;/b&gt; and &lt;b&gt;D-&lt;/b&gt; (see figure 2). Power supply wires (V&lt;sub&gt;BUS&lt;/sub&gt; and GND) are useful, because smaller devices can be powered directly from the bus by these wires. USB is a half-duplex bus with differential coding. Thanks to this fact, it is robust to the electromagnetic disturbances. This bus uses &lt;b&gt;NRZI (Non Return to Zero Inverted)&lt;/b&gt; coding. This means, that small logical values are not directly represented by different voltage levels. Important for this bus is changing state (transition)from one voltage level to another. Transition means logical zero and steady state means logical one. Although this bus is so fast, there is no extra wire for clock synchronization, but if the state is not changed 6x(six long. ones), one synchronization zero is added.&lt;/p&gt;
&lt;center&gt;&lt;img style="width:530px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/USB/USB_cable_structure.gif"/&gt;&lt;/center&gt;
&lt;center&gt;&lt;span style="color:#33aaff; font-weight:bold"&gt;Figure 2.- USB cable structure&lt;/span&gt;&lt;/center&gt;
&lt;p&gt;Voltage levels for logical values are different for different baud rates. For full and low speed devices are shown typical configurations on the figure 3 and figure 4.&lt;/p&gt;
&lt;center&gt;&lt;img style="width:530px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/USB/USB_LS.gif"/&gt;&lt;/center&gt;
&lt;center&gt;&lt;span style="color:#33aaff; font-weight:bold"&gt;Figure 3.- Typical configuration for the full speed devices&lt;/span&gt;&lt;/center&gt;

&lt;center&gt;&lt;img style="width:530px;" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/USB/USB_HS.gif"/&gt;&lt;/center&gt;
&lt;center&gt;&lt;span style="color:#33aaff; font-weight:bold"&gt;Figure 4.- Typical configuration for the low speed devices&lt;/span&gt;&lt;/center&gt;

&lt;p&gt;If no device is connected to the host, pull-down resistors (15 K&amp;Omega;) cause ground on both data lines. This state is also called SE0 (Single Ended Zero) and because it can not appear during ordinary data transfer, it's used for special events (e.g. reset, end of packet). Full speed devices have installed pull-up resistor on the D+ line while low speed devices on the D- line. If the device is connected to the host, only on one line will be voltage different from the ground (voltage will be approximately 3V thanks to the voltage divider - 1,5 K&amp;Omega; : 15K&amp;Omega;). This is used to recognize baud rate of the device. If it is high speed device, it has 1,5K&amp;Omega; resistor on the D+ (as full speed device, but with additional identification after reset). If both sides support high speed USB, 1,5 K&amp;Omega; resistor in the device is unplugged by transistor and another 90 &amp;Omega; resistor is connected between D+ and D-, that is necessary for impedance adjustment with twisted pair.&lt;/p&gt;
&lt;h2&gt;What is a HID?&lt;/h2&gt;
&lt;p&gt;The &lt;i&gt;human interface&lt;/i&gt; in the name suggests that HIDs interact directly with people, and many HIDs do. A mouse may detect when someone presses a key or moves the mouse, or the host may send a message that translates to a joystick effect that the user experiences. Besides keyboards, mice, and joysticks, the HID class encompasses front panels with knobs, switches, buttons, and sliders; remote controls, telephone keypads; and game controls such as data gloves and steering wheels.&lt;/p&gt;
&lt;p&gt;But a HID doesn't have to have a human interface. The device just need to be able to function within limits of the HID class specification. These are the major abilities and limitations of HID-class devices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All data exchanged resides in structures called reports. The host sends and receives data by sending and requestiing reports in control or interrupt transfers. The report format is flexible an can handle just about any type of data, but each defined report has a fixed size.&lt;/li&gt;
&lt;li&gt;A HID interface must have and interrupt IN endpoint for sending Input reports.&lt;/li&gt;
&lt;li&gt;A HID interface can have at most one interrupt IN endpoint and one interrupt OUT endpoint. If you need more interrupt endpoints, you can create a composite device that contains multiple HIDs. An application must obtain a separate handle for each HID in the composite device.&lt;/li&gt;
&lt;li&gt;The interrupt IND endpoint enables the HID to send information to the host at unpredictable times. For example, there's no way for the computer to know when a user will press a key on the keyboard, so the hosts drive uses interrupt transactions to poll the device periodically to obtain new data.&lt;/li&gt;
&lt;li&gt;The rate of data exchange is limited, especially at low and full speeds. A host can guarantee a low-speed interrupt endpoint no more than 800 bytes/sec. For full-speed endpoints, the maximum is 64 kilobytes/sec., and for high-speed endpoints, the maximum is about 24 Megabytes/sec. if the host supports high-bandwidth endpoints and about 8 Megabytes/sec. if not. Control transfers have no guaranteed bandwidth except for the bandwidth reserved for all control transfers on the bus.&lt;/li&gt;
&lt;li&gt;Windows 98 Gold (original edition) supports USB 1.0, so interrupt OUT transfers aren't supported and all host to device reports must use control transfers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Any device that can live within the class's limits is a candidate to be a HID. THe HID specification mentions bar-code readers, thermometers, and voltmeters as example of HIDs that might not have a conventional human interface. Each of these sends data to the computer and may also receive requests that configure the device. Examples of devices that mostly receive data are remote displays, control panels for remote devices, robots, and devices of any kind that receive occasional or periodic commands from the host.&lt;/p&gt;
&lt;p&gt;A HID interface may be just one of multiple USB interfaces supported by a device. For example, a USB speaker that uses isochronous transfers for audio may also have a HID interface for controlling volume, balance, treble and bass. A HID interface is often cheaper than traditional physical controls on a device.&lt;/p&gt;
&lt;/div&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white;text-align: center;"&gt;References&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;th style="text-align:justify"&gt;Sources:&lt;/th&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/USB/HUMAN%20INTERFACE%20DEVICE%20%28HID%29%20PROFILE.pdf" target="_blank"&gt;&lt;i&gt;Human Interface Device (HID) Profile&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/USB/Device%20Class%20Definition%20for%20Human%20Interface%20Devices.pdf" target="_blank"&gt;&lt;i&gt;Device Class Definition for Human Interface Devices&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/USB/USB%20interface%20for%20data%20recording%20from%20the%20heat%20meter.pdf" target="_blank"&gt;&lt;i&gt;USB interface for data recording from the heat meter&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/USB/USB_Complete_3rdEdition.pdf" target="_blank"&gt;&lt;i&gt;USB Complete 3rd Edition&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;
&lt;a class="tooltip" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/images/Web-browser-icon.png" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Fiber-Optic Sensors</title><link>https://jealgv.blogspot.com/2013/11/fiber-optic-sensors.html</link><category>Fiber-Optic</category><category>Metrology</category><category>Photonic</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Tue, 26 Nov 2013 20:07:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-4941385251455586713</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyS4Qh-yzH4ehxCGw0N7JUBxG_HvKxkgf3vLKqXt2yIi4Z4AKMkvDtl6FwE2re7HXV8r2f5-CTJSSrwa2yDchIKyAQTYWentvYTP6OpZv7-YcT7ysJDqfN9D09h3Vaz8l0SQwCH8I9QtE/s1600/Fiber.png" /&gt;&lt;/div&gt;
&lt;div style="text-align:justify"&gt;
&lt;p&gt;The development of fiber-optic technology was mainly driven by the requirement of the telecommunications industry. Nonetheless one should not overlook that telecommunications is not the only application of fiber optics. The other major application area is in metrology and data acquisition.&lt;/p&gt;

&lt;h2&gt;Why Sensors? Why Fiber-Optics?&lt;/h2&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;It used to be that in any major machinery or installation, gauges were located wherever that relevant information was present: a thermometer at the boiler, a tachometer at the shaft, a fuel gauge at the tank, etc. Staff could then go to these locations and take readings. Meanwhile the trend is that data acquisition and display are separated. For example, consider an airplane: Sticking out a mercury thermometer is obviously not a good idea for measuring the outside temperature. Fuel tanks are in the wings; who would climb out there to check a level tube? Instead,a ll data of interest are acquired at their respective location with sensors. The sensor's response is transmitted, usually by cable, to a central monitoring station where all displays are side by side to provide an overview. In the airplane this location is in the cockpit where the pilot can check all instruments without leaving his seat.&lt;/p&gt;
&lt;p&gt;Industrial installations, too, have a central control room where all information comes together. It is not only time.saving when staff do not need to walk around the premises to take instrument readings, but it also minimizes risks to human because often date are taken in hard-to-reach or dangerous places, such as inside chimneys, in high-voltage apparatus, or in numerous places inside nuclear power stations.&lt;/p&gt;

&lt;p&gt;To go by such a remote sensor concept, there are three ingredients required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sensors for any physical quantity that may be of interest. This includes temperature, pressure, stress and strain, distance, filling level, speed, force, vibration, etc. The sensors must translate such quantities into a format that can easily be transmitted.&lt;/li&gt;
&lt;li&gt;Transmission lines.&lt;/li&gt;
&lt;li&gt;Displays that translate the transmitted data into a format accessible to human senses, i.e., typically make them visible or audible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, the scheme also facilitates the keeping of records of relevant data; witness the "flight recorder" which is of central importance after a plane crash. It has often been taken for granted that for the transmission one uses an electric quantity: most often a voltage, but there is at least one standard where this is a current. The lines are then usually copper cables. The advantages of this approach is that there are innumerably many suppliers, and sensors can be picked from an unfathomable variety of hardware. Also, there is an abundant supply of well-trained engineers and technicians who are knowledgeable about this technology and can use it very efficiently.&lt;/p&gt;
&lt;p&gt;Now enter optical fiber. First, one might have the idea of using sensors that do not translate the original data into an electric format, but rather into some optical format, like a light intensity or wavelength. There is no difficulty in converting this to a display because optical formats are easily assessed at the receiver. All it takes is a photodetector, and one is back to a voltage or current that can be displayed in a routine way. Of course, the question is: if one eventually converts to electrical anyway, why bother with optics?.&lt;/p&gt;
&lt;p&gt;The point is that during transmission, the data are in an optical format. While on its way across the distance, plenty of adverse effects can act on the transmitted signal. In the case of electric cables, one severe problem is interference from external electromagnetic fields. To avoid such difficulty, one usually provides shielding, which in the case of strong external fields is quite involved. Optical fiber, by contrast, is immune to that kind of interference.&lt;/p&gt;
&lt;p&gt;There are some other properties of optical fibers that are advantageous in this context. As we saw earlier, they are small and lightweight. The accompanying savings in space and weight can be quite important, e.g., in vehicles, in particular in aircraft or spacecraft. Also, optical fibers withstand extreme temperatures better than electrical cables. They are also more robust in the presence of aggressive chemicals. Finally, fibers provide perfectly separated electrical potentials, a fact that is greatly appreciated, e.g., in petrochemical installations. We see, one might have benefits from an optical technology. It is good news that a wide variety of optical sensors is available. There is hardly any physical quantity for which no optical sensor exist. New sensor are added all the time for chemical and other quantities, too.&lt;/p&gt;
&lt;p&gt;When we look at these &lt;b&gt;&lt;i&gt;fiber-optic sensors&lt;/i&gt;&lt;/b&gt;, we nee to broadly distinguish two classes (figure 1): There are sensors that are mounted in front of, next to, or in proximity of the fiber, read the quantity under investigation, and launch a corresponding light signal into the fiber. In this case, the fiber is merely the transmission medium and has nothing to do with the acquisition of the original quantity. Such sensors are called &lt;b&gt;&lt;i&gt;extrinsic&lt;/i&gt;&lt;/b&gt;. In contrast, &lt;b&gt;&lt;i&gt;intrinsic&lt;/i&gt;&lt;/b&gt; sensors use the fiber itself or part of it directly to read the original quantity. Then the fiber is both sensor and cable at he same time. We will look at examples of both types.&lt;/p&gt;

&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Fiber%20optic/original.gif" style="width:540px"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center; color:#33aaff; font-weight:bold; font-size:14px"&gt;Figure 1.- Classification of sensor types. &lt;b&gt;&lt;i&gt;extrinsic&lt;/i&gt;&lt;/b&gt; and &lt;b&gt;&lt;i&gt;intrinsic&lt;/i&gt;&lt;/b&gt; sensors.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;In this case an optical fiber leads up to a "black box" that impresses information onto the light beam in response to an environmental effect. The information could be impressed in terms of intensity, phase, frequency, polarization, spectral content, or other methods. An optical fiber then carries the light with the environmentally impressed information back to an optical and/or electronic processor.In some cases the input optical fiber also acts as the output fiber. The intrinsic or all-fiber sensor shown in figure 1 (a) uses an optical fiber to carry the light beam, and the environmental effect impresses information onto the light beam it is in the fiber. Each of these classes of fibers in turn has many subclasses with, in some cases, sub-subclasses that consist of large numbers of fiber sensors. In some respects the simplest type of fiber optic sensor is the hybrid type that is based on intensity modulation.&lt;/p&gt;
&lt;/div&gt;

&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white;text-align: center;"&gt;References&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;th style="text-align:justify"&gt;Sources:&lt;/th&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a class="icon-external"&gt;Fedor Mitschke,&lt;i&gt;Fiber Optics, Physics and Technology&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-external"&gt;Shizhuo Yin, &lt;i&gt;Fiber Optic Sensors&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;
&lt;a class="tooltip" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/images/Web-browser-icon.png" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyS4Qh-yzH4ehxCGw0N7JUBxG_HvKxkgf3vLKqXt2yIi4Z4AKMkvDtl6FwE2re7HXV8r2f5-CTJSSrwa2yDchIKyAQTYWentvYTP6OpZv7-YcT7ysJDqfN9D09h3Vaz8l0SQwCH8I9QtE/s72-c/Fiber.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Nature and properties of light</title><link>https://jealgv.blogspot.com/2013/11/nature-and-properties-of-light.html</link><category>Photonic</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Sun, 24 Nov 2013 18:54:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-7856743428773841343</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcaCVjEpV6ikHPedBqK2WeAUjaQ3nvjof_5LeDcQeLPX0Wd2O_9JJxFiO6rV-cL0fF-qJ9jaMIGRPc2YeyP66dV_M7upQR5B1r0gp_xw9C2HaufbKQET2ma9foLw0CKNnVCzebWqMW0-Q/s1600/light.png" /&gt;&lt;/div&gt;
&lt;div style="text-align:justify"&gt;
&lt;P&gt;Photonic is defined as the generation, manipulation, transport, detection, and use of light information and energy whose quantum unit is the photon. Photonics is based on the science of optics and electronics. The origins of optical technology (photonics) date back to the remote past. In the coming century, photonics promises to be a vital part of the information revolution.&lt;/p&gt;
&lt;p&gt;To enable us to understand and apply photonics, it is necessary to have a basic understanding of the behavior and properties of light.&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;h2&gt;Photonics Opportunities&lt;/h2&gt;
&lt;p&gt;There are ten broad areas of employment that are likely to need increasing numbers of photonics technicians:&lt;/p&gt;

&lt;center&gt;&lt;span style="color:#33aaff; font-weight:bold"&gt;Table 1.- Photonics Opportunities&lt;/span&gt;&lt;/center&gt;
&lt;table class="wikitable" style="background-color: #f9f9f9; border-collapse: collapse; border: 1px solid rgb(170, 170, 170); color: black; font-size: 13px; line-height: 19.200000762939453px; margin: 1em 0px; text-align: center; width: 100%;"&gt;
&lt;tbody&gt;
&lt;th colspan="2" style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em;" &gt;Photonics Opportunities&lt;/th&gt;    
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;1.- Medicine - biomedical&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;2.- Environmental&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;3.- Energy&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;4.- Transportation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;5.- Defense&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;6.- Public safety&lt;/td&gt;
&lt;/tr&gt;
    
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;7.- Aerospace&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;8.- Computers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;9.- Energy&lt;/td&gt;    
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;10.- Manufacturing with photonics and test and analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;11.- Communication and information technology&lt;/td&gt;    
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;What is light? This question has been debated for many centuries. The sun radiates light, electric lights brighten our darkness, and many others uses of light impact our lives daily. The answer, in short, is light is a special kind of electromagnetic energy.&lt;/p&gt;

&lt;p&gt;The speed of light, although quite fast, is not infinite. The speed of light in the vacuum is expressed as &lt;b&gt;c = 2.99 x 10&lt;sup&gt;8&lt;/sup&gt; m/s&lt;/b&gt;. Light travels in the vacuum at a constant speed, and this pseed is considered a universal contant. It's important to note that speed changes for light traveling trough nonvacuum media such as air (0.03% slower) or glass (30.0% slower)&lt;/p&gt;
&lt;p&gt;For most purpose, we may represent light in terms of its magnitud and direction. In a vacuum, light will travel in a straight line at fixed speed, carrying energy from one place to another. Two key properties of light interacting with a medium are:&lt;/p&gt;
&lt;p&gt;
1.- It can be deflected upon passing from one medium to another (refraction).&lt;br&gt;
2.- It can be bounced off a surface (reflection).
&lt;/p&gt;

&lt;p&gt;The field of detection and measurement of light energy is called &lt;i&gt;radiometry&lt;/i&gt;. It uses a standardized system for characterizing radiant energy. Table 2 defines the standard terms used.&lt;/p&gt;

&lt;center&gt;&lt;span style="color:#33aaff; font-weight:bold"&gt;Table 2.- Radiometric Definition and Units&lt;/span&gt;&lt;/center&gt;
&lt;table class="wikitable" style="background-color: #f9f9f9; border-collapse: collapse; border: 1px solid rgb(170, 170, 170); color: black; font-size: 13px; line-height: 19.200000762939453px; margin: 1em 0px; text-align: center; width: 100%;"&gt;
&lt;tbody&gt;
&lt;th style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em;" &gt;Term&lt;/th&gt;
&lt;th style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em;" &gt;Definition&lt;/th&gt; 
&lt;th style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em;" &gt;Symbol&lt;/th&gt;   
&lt;th style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em;" &gt;Units&lt;/th&gt;   

&lt;tr&gt;
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Quantity&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Radiant energy&lt;/td&gt;
        &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;Q&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Joule (J)&lt;/td&gt;
&lt;/tr&gt;
    
&lt;tr&gt;
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Flux&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Rate of radiant energy&lt;/td&gt;
        &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;&amp;Phi;&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Watt (W); Joule/second (J/s)&lt;/td&gt;
&lt;/tr&gt;
    
&lt;tr&gt;
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Flux density(irradiance)&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Flux per unit area&lt;/td&gt;
        &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;E&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Watts per square meter (W/m&lt;sup&gt;2&lt;/sup&gt;)&lt;/td&gt;
&lt;/tr&gt;
    
&lt;tr&gt;
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Intensity&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Flux per solid angle&lt;/td&gt;
        &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;I&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Watts per steradian (W/sr)&lt;/td&gt;
&lt;/tr&gt;
    
&lt;tr&gt;
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Radiance&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Flux per unit area per unit solid angle&lt;/td&gt;
        &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;L&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Watts per square meter per steradian (W/m&lt;sup&gt;2&lt;/sup&gt;&amp;sdot;sr)&lt;/td&gt;
&lt;/tr&gt; 
    
&lt;tr&gt;
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Spectral radiance&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Radiance per unit wavelength&lt;/td&gt;
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: center;"&gt;L&lt;sub&gt;&amp;lambda;&lt;/sub&gt;&lt;/td&gt;    
    &lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;Watts per square meter steradian per nanometer &lt;sup&gt;W&lt;/sup&gt;&amp;frasl;&lt;sub&gt;(m&lt;sup&gt;2&lt;/sup&gt;&amp;sdot;sr&amp;sdot;&amp;Delta;&amp;lambda;)&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;    
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;Dual Nature of Light&lt;/h2&gt;
&lt;p&gt;Scientist build models of physical processes to help them understand and predict behavior. So it is with light energy. It is through seeing the effects of light that the models are developed. Scientists have observed that light energy can behave like a wave as it moves through space, or it can behave like a discrete particle with a discrete amount of energy (quantum) that can be absorbed and emitted. As we study and use light, both models are helpful&lt;/p&gt;

&lt;h3&gt;Concept of a photon&lt;/h3&gt;
&lt;p&gt;The particle-like nature of light is modeled with photons. A photon has no mass and no charge. It is carrier of electromagnetic energy and interacts with others discrete particles (e.g., electrons, atoms, and molecules).&lt;/p&gt;
&lt;p&gt;A beam of light is modeled as a stream of photons, each carrying a well-defined energy that is dependent upon the wavelength of the light. The energy of a given photon can be calculated by:&lt;/p&gt;

&lt;center&gt;&lt;p&gt;Photon energy (&lt;i&gt;E&lt;/i&gt; = &lt;i&gt;hc&lt;/i&gt;/&amp;lambda;)&lt;/p&gt;&lt;/center&gt;

&lt;p&gt;Where &lt;i&gt;E&lt;/i&gt; is in joules&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;h&lt;/i&gt; = Planck's constant = 6.625 x 10 &lt;sup&gt;-34&lt;/sup&gt; J&amp;sdot;s.&lt;br&gt;
&lt;i&gt;c&lt;/i&gt; = Speed of light = 2.998 x 10 &lt;sup&gt;8/sup&gt; m/s.&lt;br&gt;
&amp;lambda; = Wavelength of the light in meters.
&lt;/p&gt;

&lt;p&gt;When ultraviolet light shines on some metal surfaces, it causes electrons to be emitted. This effect is shown in figure 1, the &lt;b&gt;&lt;i&gt;photoelectric effect&lt;/i&gt;&lt;/b&gt; did not produce results that matched the early predictions of wave theory. Two concerns were:&lt;/p&gt;

&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Light/PhotoElectric_Effect.png"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center; color:#33aaff; font-weight:bold; font-size:14px"&gt;Figure 1.- Photoelectric effect&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;
1.- More intense radiation (larger-amplitude waves) did not cause emitted electrons to have more energy.&lt;br&gt;
2.- The energy of the emitted electron was dependent on the wavelength of the light, not the amplitude of the wave.
&lt;/p&gt;

&lt;p&gt;In the photoelectric effect experiment shown in figure 1, light strikes as a metal plate. Electrons are immediately released. The flow of electricity in the external circuit can be measured and the number of electrons generated for a given light signal can be determinated&lt;/p&gt;

&lt;p&gt;If light were a continuous wave, it might wash over the metal surface and interact with the electrons to give them the needed energy to escape at lower light levels (intensities), but only after long delays. However, faint light at high frequencies (short wavelengths) caused the immediate release of electrons. Thus, light knocked the electrons out of the metal surface as if the light were made of particles &amp;mdash; &lt;i&gt;photons&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;There is a minimum energy threshold for an electron to escape from the metal. Photons with frequencies below a given threshold eject no electrons, no matter how intense the light. Photons with frequencies above the threshold do eject electrons, no matter how low the intensity. The energy of the released electrons can be calculated from the next equation:&lt;/p&gt;

&lt;center&gt;&lt;p&gt;&lt;i&gt;E&lt;sub&gt;e-&lt;/sub&gt;= hc/&amp;lambda; - p&lt;/i&gt;&lt;/p&gt;&lt;/center&gt;

&lt;p&gt;where:&lt;br&gt;
&lt;i&gt;p&lt;/i&gt; = Characteristic escape energy for the  metal.&lt;br&gt;
&lt;i&gt;E&lt;sub&gt;e-&lt;/sub&gt;&lt;/i&gt; = The kinetic energy of an escaping electron.&lt;br&gt;
&lt;i&gt;hc/&amp;lambda;&lt;/i&gt; = The energy of the photon of wavelength &amp;lambda;.
&lt;/p&gt;

&lt;h3&gt;Wave Model&lt;/h3&gt;
&lt;p&gt;The particle-like model of light describes large-scale effects such as light passing through lenses or bouncing off mirrors. However, a wavelike model must be used to describe fine-scale effect such as interference and diffraction that occur when light passes through small openings or by sharp edges. The propagation of light or electromagnetic energy through space can be described in terms of a traveling  wave motion. The wave moves energy &amp;mdash; without moving mass &amp;mdash; from one place to another at a speed independent of its intensity or wavelength.&lt;/p&gt;
&lt;p&gt;This wave nature of light is the basis of physical optics and describes the interaction of light with media. Many of these processes require calculus and quantum theory to describe them rigorously.&lt;/p&gt;

&lt;span style="font-weight:bold; font-size:14px"&gt;Characteristics of light waves&lt;/span&gt;
&lt;p&gt;To understand light waves, it is important to understand basic wave motion itself. Water waves are sequence of crest (high points) adn troughs (low points) that "move" along the surface of the water. When ocean waves roll in toward the beach, the line of crests and troughs is seen as profiles parallel to the beach. An electromagnetic wave is made of an electric field and a magnetic field that alternately get weaker and stronger. The directions of the fields are at right angles to the direction the wave is moving, just as the motion of the water is up and down while a water wave moves horizontally. Figure 2 is the representation of the electric and magnetic field.&lt;/p&gt;

&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Light/waves.jpg"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center; color:#33aaff; font-weight:bold; font-size:14px"&gt;Figure 2.- Representation of the electromagnetic wave.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;The maximum value of the wave displacement is called the &lt;b&gt;amplitude&lt;/b&gt; (&lt;i&gt;A&lt;/i&gt;) of the wave. The cycle starts at zero and repeats after a distance. This distance is called the &lt;b&gt;wavelength&lt;/b&gt; (&amp;lambda;). Light can have different wavelengths, such as the blue light and red light shown in figure 2. The inverse of the wavelength (1/&amp;lambda;) is the &lt;b&gt;wave number&lt;/b&gt; (&lt;i&gt;v&lt;/i&gt;), which is expressed in cm&lt;sup&gt;-1&lt;/sup&gt;. The wave propagates at a &lt;b&gt;wave speed&lt;/b&gt; (&lt;i&gt;v&lt;/i&gt;). This wave speed in a vacuum is equal to &lt;i&gt;c&lt;/i&gt;, and is less than &lt;i&gt;c&lt;/i&gt; in a medium. At a stationary point along the wave, the wave passes by in a repeating cycle. The time to complete one cycle is called the &lt;b&gt;cycle time or period&lt;/b&gt; (&amp;tau;) and can be calculated using the next equation:&lt;/p&gt;

&lt;center&gt;&amp;tau; = &amp;lambda;/v&lt;/center&gt;

&lt;p&gt;Another important measure of a wave is its &lt;b&gt;frequency&lt;/b&gt; (&lt;i&gt;f&lt;/i&gt;). It is measured as the number of waves that pass a given in one second. The unit for frequency is cycles per second, also called hertz (&lt;i&gt;Hz&lt;/i&gt;). As can you see, the frequency and the period are reciprocals of one another. If the wave speed and wavelength are known, the frequency can be calculated with the next equation:&lt;/p&gt;

&lt;center&gt;&lt;i&gt;f&lt;/i&gt; = 1/&amp;tau; = v/&amp;lambda;&lt;/center&gt;

&lt;p&gt;It is possible for a wave to have other than sinusoidal shapes; however, the important concept to remember is that light waves are transverse electric and magnetic fields changing in space and time and propagating at the speed of light in a given medium, as we show below.&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/Light/polarized.png"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center; color:#33aaff; font-weight:bold; font-size:14px"&gt;Figure 3.- A wire-grid polarizer converts an unpolarized beam into one with a single linear polarization.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Light waves are complex. They are not one-dimensional waves but rather are composed of mutually perpendicular electric and magnetic fields with wave motions at right angles to both fields, as illustrated in figure 3. The wave carries light energy with it. The amount of energy that flows per second across a unit area perpendicular to the direction of travel is called the irradiance (flux density) of the wave.&lt;/p&gt;
&lt;p&gt;Electromagnetic waves share six properties with all forms of wave motion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Polarization&lt;/li&gt;
&lt;li&gt;Superposition&lt;/li&gt;
&lt;li&gt;Reflection&lt;/li&gt;
&lt;li&gt;Refraction&lt;/li&gt;
&lt;li&gt;Diffraction&lt;/li&gt;
&lt;li&gt;Interference&lt;/li&gt;
&lt;ul&gt;
&lt;/div&gt;

&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white;text-align: center;"&gt;References&lt;/h2&gt;
&lt;div class="info"&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;th style="text-align:justify"&gt;Sources:&lt;/th&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a class="icon-external"&gt;Linda J. Vandergriff,&lt;i&gt;Fundamentals of photonics&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-external"&gt;Ajoy Ghatak, &lt;i&gt;Introduction to fiber optic&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-external"&gt;Gerd Keiser, &lt;i&gt;Optical fiber communications&lt;/i&gt;&lt;/a&gt;&lt;/br&gt;
&lt;a class="icon-external"&gt;Fedor Mitschke, &lt;i&gt;Fiber Optics&lt;/i&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td style="width: 5%;"&gt;
&lt;a class="tooltip" title="If you have any questions, let me know leaving a comment below!"&gt;
&lt;img id="icon-author" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/images/Web-browser-icon.png" /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcaCVjEpV6ikHPedBqK2WeAUjaQ3nvjof_5LeDcQeLPX0Wd2O_9JJxFiO6rV-cL0fF-qJ9jaMIGRPc2YeyP66dV_M7upQR5B1r0gp_xw9C2HaufbKQET2ma9foLw0CKNnVCzebWqMW0-Q/s72-c/light.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>TMP100 - Pinguino OTG</title><link>https://jealgv.blogspot.com/2013/11/tmp100-pinguino-otg.html</link><category>Pinguino Board</category><author>noreply@blogger.com (Jeffrey Boy)</author><pubDate>Sat, 16 Nov 2013 15:18:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8720010744183620250.post-7518232107108296058</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisM1gKlfHKEL6FFumr0NJCAfwNFIuCsnZ7wpWSK9bPTC5mLPw1mMgRAWlhS7V1SO0W3CyD8V2zOKEo6mig2FNlDyJr63DSGTnwY7dBB2FPbKbh3d0rciC1-RpVqnhs1V4UoL-g7Sc9kvw/s1600/Banner.png" /&gt;&lt;/div&gt;

&lt;div style="text-align: justify;"&gt;
&lt;p&gt;
El TMP100 y TMP101 son dispositivos comúnmente conocidos como "two-wire", caracterizado por soportar transmisiones en dos direcciones simultáneamente, disponibles en encapsulados SOT23-6. Para su funcionamiento estos no requieren de circuiteria adicional, agregando también que la resolución de estos sensores es de 0.0625 °C. Ademas estos presentan compatibilidad SMBus e I2C, permitiendo hasta 8 dispositivos en el mismo bus.&lt;/p&gt;
&lt;p&gt;TMP100 y TMP101 son ideales para la medición de temperatura en diferentes medios. El rango de operación oscila entre los -55 °C y 125 °C.&lt;/p&gt;

&lt;a name='more'&gt;&lt;/a&gt;

&lt;h2&gt;Conexionado&lt;/h2&gt;

&lt;center&gt;&lt;img src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/TMP100/Pinguino OTG - TMP100.jpg" /&gt;&lt;/center&gt;
&lt;center&gt;Sistema de Conexionado Pinguino OTG - TMP 100&lt;/center&gt;

&lt;p&gt;La interfaz de conexion es simple y no necesita de muchos componentes para su optimo funcionamiento, mas solo 2 resistores de 10 Kohm en modo pull-up necesarios para el SCL (clock input) y SDA (data I/O) del TMP100 que son requeridas por las especificacion I2C de Phillips.&lt;/p&gt;

&lt;h2&gt;Sistema de Operacion&lt;/h2&gt;

&lt;p&gt;La configuración de llamado del TMP100 soporta hasta 8 dispositivos por bus I2C mediante 2 pin de direccionamiento. En esta aplicación, ambos pines ADD0 y ADD1 serán puestos a GND, por lo que la dirección del TMP100 sera 0b1001000. Todo acceso al TMP100 requiere la dirección apropiada que consiste en la dirección del dispositivo mas 1 bit de lectura/escritura (adress+WR) seguido por la dirección del registro deseado a manipular, mas la configuración de dicho registro.&lt;/p&gt;

&lt;center&gt;
&lt;table class="wikitable" style="background-color: #f9f9f9; border-collapse: collapse; border: 1px solid rgb(170, 170, 170); color: black; font-size: 13px; line-height: 19.200000762939453px; margin: 1em 0px; text-align: center; width: 100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em; width: 150px;"&gt;Proceso de configuración TMP100&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;1.- Inicio el I2C&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;2.- Envió la dirección apropiada del dispositivo (0x90 = 0b1001000(Adress) + 0(R/W))&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;3.- Direccion del registro 0x01 (configuracion de resolucion)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;4.- Envio configuracion de resolucion (0x00 (9 bits),0x20 (10 bits), 0x40 (11 bits),0x60 (12 bits))&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;5.- Finalizo I2C&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="background-color: #f2f2f2; border: 1px solid rgb(170, 170, 170); padding: 0.2em; width: 150px;"&gt;Proceso de lectura TMP100&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;1.- Inicio el I2C&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;2.- Envió la dirección apropiada del dispositivo (0x90 = 0b1001000(Adress) + 0(R/W))&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;3.- Direccion del registro 0x00 (lectura de temperatura)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;4.- Envio peticion de lectura del registro (0x91 = 0b1001000(Adress) + 1(R/W))&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border: 1px solid rgb(170, 170, 170); padding: 0.2em; text-align: justify;"&gt;5.- Finalizo I2C&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
Tabla 1.- Correspondencia al proceso de escritura/lectura TMP100.&lt;/center&gt;

&lt;p&gt;La información mas detallada del funcionamiento del TMP100 se encontrara al final de la pagina en sus respectivo datasheet.&lt;/p&gt;

&lt;h2&gt;Codigo&lt;/h2&gt;
&lt;/div&gt;

&lt;pre class="brush: cpp"&gt;
/*----------------------------------------------------- 
Author: Jefferson Gova O'Neil--&lt;&gt;
Date: Sun Dec 23 23:35:47 2012
Description: Pinguino OTG - TMP 100, usando comunicacion I2C
programado y compilado en Windows x64, usando el IDE x.3 desatendido para windows.
-----------------------------------------------------*/
int Buffer[2];
float PRECISION = 0.00001;

void initI2C() 
     { 
         I2C1CON |= (1 &lt;&lt; 15); 
         // 1 = Slew rate control disabled for Standard Speed mode (100 kHz); also disabled for 1 MHz mode 
         I2C1CONbits.DISSLW = 1; 
         // I2C1BRG = ((Fcy/FSCL) - (Fcy/10,000,000)) - 1 
         // In our case, Fcy = Fosc/2 =&gt; 40,000,000/2 =&gt; 20,000,000 
         // The desired FSCL = 100 kHz 
         // I2C1BRG = ((20,000,000/100,000) - (20,000,000/10,000,000)) - 1 
         // I2C1BRG = ((200) - (2)) - 1 
         // I2C1BRG = (198) - 1 = 197    
         I2C1BRG = 196; 
         //IntSetVectorPriority(INT_I2C1_VECTOR,2,2); 
         IFS0bits.I2C1MIF = 0; 
         IFS0bits.I2C1SIF = 0; 
         IFS0bits.I2C1BIF = 0; 
         IEC0bits.I2C1MIE = 0; 
         IEC0bits.I2C1SIE = 0; 
         IEC0bits.I2C1BIE = 0; 
     }
 
 void i2c_start(void) 
     { 
 
           int x = 0; 
 
           I2C1CONbits.ACKDT = 0; //Reset any previous Ack 
           delayMicroseconds(10); 
           I2C1CONbits.SEN = 1; //Initiate Start condition 
           Nop(); 
 
           //the hardware will automatically clear Start Bit 
           //wait for automatic clear before proceding 
           while (I2C1CONbits.SEN) 
           { 
           delayMicroseconds(1);            
           x++; 
           if (x &gt; 100) break; 
           } 
 
          delayMicroseconds(2); 
 
     } 
 //*************************************************** 
     //function iniates a restart condition on bus 
     void i2c_restart(void) 
     { 
 
           int x = 0; 
 
           I2C1CONbits.RSEN = 1; //Initiate restart condition 
           Nop(); 
 
           //the hardware will automatically clear restart bit 
           //wait for automatic clear before proceding 
           while (I2C1CONbits.RSEN) 
           { 
           delayMicroseconds(1); 
           x++; 
           if (x &gt; 100) break; 
           } 
 
           delayMicroseconds(2); 
 
     } 
 //*************************************************** 
     //Resets the I2C bus to Idle 
     void reset_i2c_bus(void) 
     { 
 
           int x = 0; 
 
           //initiate stop bit 
           I2C1CONbits.PEN = 1; 
 
           //wait for hardware clear of stop bit 
           while (I2C1CONbits.PEN) 
           { 
           delayMicroseconds(1); 
           x ++; 
           if (x &gt; 100) break; 
           } 
 
           I2C1CONbits.RCEN = 0; 
           IFS0bits.I2C1MIF = 0; // Clear Interrupt 
           I2C1STATbits.IWCOL = 0; 
           I2C1STATbits.BCL = 0; 
           delayMicroseconds(10); 
 
     } 
 //*************************************************** 
     //basic I2C byte send 
     char send_i2c_byte(int data) 
     { 
 
           short i; 
 
           while (I2C1STATbits.TBF) { } 
           IFS0bits.I2C1MIF = 0; // Clear Interrupt 
           I2C1TRN = data; // load the outgoing data byte 
 
           // wait for transmission 
           for (i=0; i&lt;5000; i++) 
           { 
           if (!I2C1STATbits.TRSTAT) break; 
           delayMicroseconds(1); 
           } 
           if (i == 5000) 
           { 
           return(1); 
           } 
 
           // Check for NO_ACK from slave, abort if not found 
           if (I2C1STATbits.ACKSTAT == 1) 
           { 
           reset_i2c_bus(); 
           return(1); 
 
           } 
           delayMicroseconds(2); 
           return(0); 
 
     } 
 
 
 //*************************************************** 
     //function reads data, returns the read data, no ack 
     char i2c_read(void) 
     { 
 
           int i = 0; 
           char data = 0; 
 
           //set I2C module to receive 
           I2C1CONbits.RCEN = 1; 
 
           //if no response, break 
           while (!I2C1STATbits.RBF) 
           { 
           i ++; 
           if (i &gt; 5000) break; 
           } 
 
           //get data from I2CRCV register 
           data = I2C1RCV; 
 
           //return data 
           return data; 
 
     } 
 //*************************************************** 
     //function reads data, returns the read data, with ack 
     char i2c_read_ack(void) //does not reset bus!!! 
     { 
 
           int i = 0; 
           char data = 0; 
 
           //set I2C module to receive 
           I2C1CONbits.RCEN = 1; 
 
           //if no response, break 
           while (!I2C1STATbits.RBF) 
           { 
           i++; 
           if (i &gt; 5000) break; 
           } 
 
           //get data from I2CRCV register 
           data = I2C1RCV; 
 
           //set ACK to high 
           I2C1CONbits.ACKEN = 1; 
 
           //wait before exiting 
           delayMicroseconds(10); 
 
           //return data 
           return data; 
 
     }  
 
 
 //*************************************************** 
     void I2Cwrite(char addr, char subaddr, char value) 
     { 
 
           i2c_start(); 
           send_i2c_byte(addr); 
           send_i2c_byte(subaddr); 
           send_i2c_byte(value); 
           reset_i2c_bus(); 
 
     }     
 //*************************************** 
 void I2Cgets(int addr, int subaddr,int length, int *data){
           int i = 0,counter = 0;
           i2c_start(); 
           send_i2c_byte(addr); 
           send_i2c_byte(subaddr); 
           delayMicroseconds(10); 
 
           i2c_restart(); 
           send_i2c_byte(addr | 0x01); 
           //set I2C module to receive 
           I2C1CONbits.RCEN = 1; 
 
           //if no response, break 
           while (!I2C1STATbits.RBF) 
           { 
           i++; 
           if (i &gt; 5000) break; 
           }
         data[0] = I2C1RCV;  // store received data 
         while (IFS0bits.I2C1MIF == 0); 
         IFS0bits.I2C1MIF = 0;     counter = 1; 
         while (length != counter) 
         { 
             I2C1CONbits.ACKDT = 0; //Ack received data 
             I2C1CONbits.ACKEN = 1; 
             while (I2C1CONbits.ACKEN == 1);         I2C1CONbits.RCEN = 1; 
             while (I2C1CONbits.RCEN == 1); 
             data[counter] = I2C1RCV; 
             while (IFS0bits.I2C1MIF == 0); 
             IFS0bits.I2C1MIF = 0; 
             counter++; 
         } 
         I2C1CONbits.ACKDT = 1; //NAck received data 
         I2C1CONbits.ACKEN = 1;
 reset_i2c_bus(); 
 }
 
 char I2Cread(char addr, char subaddr) 
     { 
 
           char temp; 
 
           i2c_start(); 
           send_i2c_byte(addr); 
           send_i2c_byte(subaddr); 
           delayMicroseconds(10); 
 
           i2c_restart(); 
           send_i2c_byte(addr | 0x01); 
           temp = i2c_read(); 
 
           reset_i2c_bus(); 
           return temp; 
 
     } 
 //************************************     
     unsigned char I2Cpoll(char addr) 
     { 
 
           unsigned char temp = 0; 
 
           i2c_start(); 
           temp = send_i2c_byte(addr); 
           reset_i2c_bus(); 
 
           return temp; 
 
     }

void ReadTemperature(){
float Temperature;
unsigned char BufferTemperature[20]={};
char* StringTemperature =&amp;BufferTemperature;

Temperature =((((Buffer[0]*256)|Buffer[1])&gt;&gt;4)*.0625);
StringTemperature = dtoa(BufferTemperature,Temperature);
CDC.printf("Temperatura : %s C\r\n", StringTemperature);
} 



void setup() {
    //run once:
    initI2C(); 
    }

void loop() {
    //run repeatedly:
    char dato = 0;
    I2Cwrite(0x90, 0x01, 0x60);
    I2Cgets(0x90,0x00,2,Buffer); 
    delay(1000);
    ReadTemperature();
    }

&lt;/pre&gt;
&lt;/br&gt;
&lt;/br&gt;
&lt;center&gt;
&lt;div id="ZonaDD"&gt;
&lt;h2 style="color: white;text-align: center;"&gt;Download Zone&lt;/h2&gt;
&lt;div class="download"&gt;
&lt;table border="0"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="icon-file" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/TMP100/Float%20to%20String.txt" target="_blank"&gt;Float to String&lt;/a&gt;&lt;/br&gt;&lt;a class="icon-pdf" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/TMP100/TMP100.pdf" target="_blank"&gt;TMP100.pdf&lt;/a&gt;&lt;/br&gt;&lt;a class="icon-download" href="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/articles/TMP100/Pinguino%20OTG%20-%20TMP100.txt" target="_blank"&gt;PINGUINO OTG - TMP100&lt;/a&gt;&lt;/td&gt; &lt;td style="width: 5%;"&gt;&lt;a class="tooltip" title="If you have any questions, let me know leaving a comment below!"&gt;&lt;img id="icon-author" src="https://dl.dropboxusercontent.com/u/32491540/Jeals%20Blog/images/Folder-icon.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/center&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisM1gKlfHKEL6FFumr0NJCAfwNFIuCsnZ7wpWSK9bPTC5mLPw1mMgRAWlhS7V1SO0W3CyD8V2zOKEo6mig2FNlDyJr63DSGTnwY7dBB2FPbKbh3d0rciC1-RpVqnhs1V4UoL-g7Sc9kvw/s72-c/Banner.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>