tag:blogger.com,1999:blog-83657729942929331862024-03-13T05:38:57.287-07:00Brincando com EletrônicaPedrohttp://www.blogger.com/profile/11927711381130875103noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-8365772994292933186.post-22399165339801315532012-03-27T19:20:00.001-07:002012-06-18T13:45:59.163-07:00Levitador Eletromagnético<span style="font-family: 'Trebuchet MS', sans-serif;">Achei um novo projeto interessante para montar: um Levitador Magnético. Segue alguns links que devo usar como referência:<br />
<br />
<a href="http://www.instructables.com/id/Electromagnetic-Floater/" target="_blank">http://www.instructables.com/id/Electromagnetic-Floater/</a>
<br />
<br />
<a href="http://uzzors2k.4hv.org/index.php?page=magneticlevitation" target="_blank">http://uzzors2k.4hv.org/index.php?page=magneticlevitation</a>
<br />
<br />
<a href="http://web.mit.edu/6.302/www/maglev.pdf" target="_blank">http://web.mit.edu/6.302/www/maglev.pdf</a>
<br />
<br />
Ainda não decidi como vai ser o projeto. Comecei montando um eletroimã, para testar a potência:<br />
<br />
</span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: 'Trebuchet MS', sans-serif;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWXqnFmmNTzDOO-K5_bHqSEGz6fnWmoFbI3a96xekJhL4EfDPIL3yNJyC9PVLEHivfQd3A4dP3C0dXizDD7wEwpb7vV1Q6nToi38qzR80nM-axPRNSeLaYSzk67v4XuIIsEv9oPSe0tw/s1600/eletroim%C3%A3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWXqnFmmNTzDOO-K5_bHqSEGz6fnWmoFbI3a96xekJhL4EfDPIL3yNJyC9PVLEHivfQd3A4dP3C0dXizDD7wEwpb7vV1Q6nToi38qzR80nM-axPRNSeLaYSzk67v4XuIIsEv9oPSe0tw/s400/eletroim%C3%A3.jpg" width="400" /></a></span></div>
<span style="font-family: 'Trebuchet MS', sans-serif;">
<br />
Comprei um rolo de 75m de fio de cobre esmaltado 25 AWG na <a href="http://www.eletrodex.com.br/" target="_blank">eletrodex</a>. Perdi um tempão enrolando o fio em uma chave allen que eu tinha aqui e nunca usei na vida. Foram 1400 voltas no total!<br />
<br />
O eletroimã funciona muito bem. Eu fiz o video abaixo ligando ele em uma fonte de 18V, que deu uma corrente de 2A. Porém, o eletroimã esquentou demais, então provavelmente vou acabar usando uma fonte menor.<br />
<br />
<a href="http://www.youtube.com/watch?v=yhqQCggaYbE" target="_blank">http://www.youtube.com/watch?v=yhqQCggaYbE</a>
<br />
<br />
E por acaso, enquanto eu estava guardando o ferro de solda, uma gota de estanho caiu na mesa e formou um pequeno dragão. Nada mais apropriado, já que estamos no ano do dragão. Guardei de lembrança. :-)<br />
<br />
</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4YeVeuGerdf6w-rYhQQR0ThkTd97dR2m7jhLIhIEi-4D_r4lSWLfag8VlHguqVbON7dvP2IEnHVTpfmv8RBpIqnc-42NgYDEoUgtkJkDrQsmbdKlLDey5tLcJcYR1yTOb7mJj66TFwg/s1600/drag%C3%A3o+de+estanho.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4YeVeuGerdf6w-rYhQQR0ThkTd97dR2m7jhLIhIEi-4D_r4lSWLfag8VlHguqVbON7dvP2IEnHVTpfmv8RBpIqnc-42NgYDEoUgtkJkDrQsmbdKlLDey5tLcJcYR1yTOb7mJj66TFwg/s400/drag%C3%A3o+de+estanho.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dragão de Estanho</td></tr>
</tbody></table>
<span style="font-family: 'Trebuchet MS', sans-serif;">
</span>Pedrohttp://www.blogger.com/profile/11927711381130875103noreply@blogger.com2tag:blogger.com,1999:blog-8365772994292933186.post-37869549058233399732011-12-29T11:28:00.000-08:002012-01-03T16:54:13.001-08:00Led Cube 4x4x4 Bicolor<div style="font-family: "Trebuchet MS",sans-serif;">
Link para o vídeo: <a href="http://www.youtube.com/watch?v=kVEF46ju5Z0" target="_blank">http://www.youtube.com/watch?v=kVEF46ju5Z0</a></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br /></div>
<div style="color: #783f04; font-family: "Trebuchet MS",sans-serif;">
<span style="font-size: large;"><b>Esquema:</b></span></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<div class="separator" style="clear: both; text-align: -webkit-auto;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-WnixNOujIPI/TwDsTfLUBRI/AAAAAAAAAbE/d_RxsRnwHzI/s1600/LedCube_schematic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="434" src="http://4.bp.blogspot.com/-WnixNOujIPI/TwDsTfLUBRI/AAAAAAAAAbE/d_RxsRnwHzI/s400/LedCube_schematic.png" width="500" /></a></div>
<br />
<div style="color: #783f04;">
<span style="font-size: large;"><b>Montagem:</b></span></div>
<div>
<br /></div>
<div>
Eu me baseei no seguinte projeto para fazer o Led Cube:<br />
<br />
<a href="http://www.instructables.com/id/LED-Cube-4x4x4" target="_blank">http://www.instructables.com/id/LED-Cube-4x4x4</a><br />
<br />
Como o projeto original é para um Led Cube monocromático, eu tive que fazer algumas adaptações para usar leds bicolores. Os leds usados neste projeto são bicolores com 2 terminais. Dependendo do sentido da corrente, ele acende verde ou vermelho.<br />
<br />
Primeiro é preciso montar uma base para soldar os leds. Eu usei uma caixinha de isopor duro:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-UPC-sk1VMWA/TuArbOm9yzI/AAAAAAAAAYQ/S-SxRa5e9ig/s1600/suporte_leds.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://3.bp.blogspot.com/-UPC-sk1VMWA/TuArbOm9yzI/AAAAAAAAAYQ/S-SxRa5e9ig/s400/suporte_leds.jpg" width="500" /></a></div>
<br /></div>
<div>
Todos os leds de cada camada do cubo são conectados entre si. Eu soldei as pernas mais curtas (catodos) dos leds para montar as camadas, e deixei as pernas mais compridas (anodos) para soldar as colunas. Como os leds são bicolores, isso não faz diferença.<br />
<br />
Primeira camada de leds:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-k_p5NO3SHNk/TuArcVlTPYI/AAAAAAAAAYY/MZgwedN8lX8/s1600/primeiro_layer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://1.bp.blogspot.com/-k_p5NO3SHNk/TuArcVlTPYI/AAAAAAAAAYY/MZgwedN8lX8/s400/primeiro_layer.jpg" width="500" /></a></div>
<br />
Testando as conexões com o ATmega328:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-CfB_8e_G8a0/TuAre1oCmlI/AAAAAAAAAYg/J-0ux_omSYA/s1600/testes_layer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://1.bp.blogspot.com/-CfB_8e_G8a0/TuAre1oCmlI/AAAAAAAAAYg/J-0ux_omSYA/s400/testes_layer.jpg" width="500" /></a></div>
<br />
Os leds de cada coluna do cubo também são conectados entre si. É importante usar algum suporte para manter as camadas bem alinhadas na hora de soldar as colunas. Eu usei pilhas de 9V, que são um pouco menores do que os terminais dos leds.<br />
<br />
Mesa de trabalho:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Upkh35KPZXE/Tvp4CAQ1IYI/AAAAAAAAAZI/Jf0326mC4AE/s1600/mesa_de_trabalho.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://2.bp.blogspot.com/-Upkh35KPZXE/Tvp4CAQ1IYI/AAAAAAAAAZI/Jf0326mC4AE/s400/mesa_de_trabalho.jpg" width="500" /></a></div>
<br />
Montagem da placa:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-mN7UCjjbOpk/Tvp4AYiCmgI/AAAAAAAAAZA/o6DLWzyUa0w/s1600/montagem_placa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://3.bp.blogspot.com/-mN7UCjjbOpk/Tvp4AYiCmgI/AAAAAAAAAZA/o6DLWzyUa0w/s400/montagem_placa.jpg" width="500" /></a></div>
<br />
Soldando os componentes:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-wh4wxFCv-5w/Tvp4DAtmHPI/AAAAAAAAAZQ/J1q_MWBSAqI/s1600/soldas_placa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://3.bp.blogspot.com/-wh4wxFCv-5w/Tvp4DAtmHPI/AAAAAAAAAZQ/J1q_MWBSAqI/s400/soldas_placa.jpg" width="500" /></a></div>
<br />
Circuito final:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-aE7BxoOy088/Tvp4Lz9wFwI/AAAAAAAAAZ4/RQAmGz0A7-0/s1600/circuito_final.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://3.bp.blogspot.com/-aE7BxoOy088/Tvp4Lz9wFwI/AAAAAAAAAZ4/RQAmGz0A7-0/s400/circuito_final.jpg" width="500" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Led Cube pronto:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-O9UH4HkbC3s/Tvp4Gl58CrI/AAAAAAAAAZY/s-1RsWND7Cc/s1600/led_cube_completo_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://3.bp.blogspot.com/-O9UH4HkbC3s/Tvp4Gl58CrI/AAAAAAAAAZY/s-1RsWND7Cc/s400/led_cube_completo_1.jpg" width="500" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-kNxniTimFjg/Tvp4IJ5TE4I/AAAAAAAAAZg/7jJ2CkwlhIw/s1600/led_cube_completo_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://1.bp.blogspot.com/-kNxniTimFjg/Tvp4IJ5TE4I/AAAAAAAAAZg/7jJ2CkwlhIw/s400/led_cube_completo_2.jpg" width="500" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-sBVAds5nWWI/Tvp4JhbudmI/AAAAAAAAAZo/0VCeNOXs4Wg/s1600/led_cube_completo_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://4.bp.blogspot.com/-sBVAds5nWWI/Tvp4JhbudmI/AAAAAAAAAZo/0VCeNOXs4Wg/s400/led_cube_completo_3.jpg" width="500" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-RRF4Nyh4_Ck/Tvp4KdpciOI/AAAAAAAAAZw/IqEd2jYoKng/s1600/led_cube_completo_4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="http://2.bp.blogspot.com/-RRF4Nyh4_Ck/Tvp4KdpciOI/AAAAAAAAAZw/IqEd2jYoKng/s400/led_cube_completo_4.jpg" width="500" /></a></div>
<br /></div>
</div>
<div style="font-family: "Trebuchet MS",sans-serif;">
</div>
<div style="color: #783f04; font-family: "Trebuchet MS",sans-serif;">
<span style="font-size: large;"><b>Charlieplexing:</b></span></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br />
Para controlar individualmente os leds de um Led Cube bicolor, temos que usar um tipo especial de Multiplexing chamado Charlieplexing, que utiliza os 3 estados das portas do microcontrolador: 0, 1 ou alta-impedância (ou hi-Z):<br />
<br /></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<a href="http://en.wikipedia.org/wiki/Charlieplexing" target="_blank">http://en.wikipedia.org/wiki/Charlieplexing</a></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br />
Para colocar uma porta em alta-impedância, basta definir ela como uma porta de entrada no microcontrolador. Quando a porta está nesse estado, ela se comporta como se não estivesse conectada ao circuito, e os leds ficam apagados.</div>
<div>
<div style="font-family: 'Trebuchet MS', sans-serif;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif;">
O software acende uma camada do cubo por vez, alternando as cores. Para acender cada camada do cubo, os seguites passos são realizados:</div>
<br />
<ol>
<li><span style="font-family: 'Trebuchet MS', sans-serif;">Todas as portas são colocadas em alta-impedância, apagando o cubo completamente.</span></li>
<li><span style="font-family: 'Trebuchet MS', sans-serif;">As colunas que serão acesas são colocadas em 0 ou 1, dependendo da cor que estamos desenhando.</span></li>
<li><span style="font-family: 'Trebuchet MS', sans-serif;">A camada que será acesa também é colocada em 0 ou 1, dependendo da cor.</span></li>
<li><span style="font-family: 'Trebuchet MS', sans-serif;">As portas da camada e das colunas que serão acesas são definidas como portas de saída, deixando de estar em alta-impedância.</span></li>
</ol>
<br />
<div style="font-family: 'Trebuchet MS', sans-serif;">
Esse processo é executado muito rapidamente e não percebemos que os leds na verdade estão piscando. Esse efeito é chamado <a href="http://en.wikipedia.org/wiki/Persistence_of_vision" target="_blank">Persistence of Vision</a>.</div>
<div style="font-family: 'Trebuchet MS', sans-serif;">
<br /></div>
</div>
<div style="color: #783f04; font-family: "Trebuchet MS",sans-serif;">
<b><span style="font-size: large;">Resistores e Transistores:</span></b></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br /></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
Como a capacidade máxima de corrente do ATmega328 é de 200mA, e eu vou acenter até 16 leds ao mesmo tempo, eu procurei acender os leds com algo entre 10 e 11mA (11mA x 16 = 176mA). Com os leds que eu comprei, eu consegui isso com resistores de 220Ω, que foram conectados às colunas do cubo.</div>
<div style="font-family: "Trebuchet MS",sans-serif;">
</div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br /></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
Cada camada do cubo possui 16 leds conectados. A corrente total que vai passar pela camada será de cerca de 170mA e, por isso, não pode ser conectada diretamente à porta do microcontrolador. As camadas devem ser conectadas a transistores para isolar a corrente do microcontrolador.<br />
<br />
Eu comprei os transistores BC338-25 (NPN) e BC328-25 (PNP) que teoricamente deveriam suportar 170mA numa boa e, como são complementares, deveriam ter características semelhantes. Mas por algum motivo que eu ainda não entendi, o PNP é muito pior que o NPN. O ganho (hFE) do NPN é 300 e o do PNP é 40 (medindo no multímetro). Além disso, o PNP só consegue prover 180mA com uma corrente de base de ~20mA (que seria um hFE de 9). Se alguém souber explicar isso, eu agradeço.</div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br /></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
No fim das contas, eu acabei usando um resistor de base de 120Ω nos transistores PNP e de 220Ω nos NPN. Dessa forma, a intensidade dos leds ficou mais ou menos equivalente ao acender em verde e vermelho. O vermelho acende com o NPN e o verde com o PNP.</div>
<div>
<div style="font-family: 'Trebuchet MS', sans-serif;">
<br /></div>
<span style="font-family: 'Trebuchet MS', sans-serif;">Os transistores precisam ser montados de forma que respeitem os 3 estados da porta, ou seja, se a porta estiver em alta-impedância, ambos os transistores têm que estar desligados, para não passar corrente para os leds da camada. Para isso, basta conectar resistores ligando a base do transistor PNP à força e ligando a base do transistor NPN ao terra, conforme o esquema abaixo:</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-outBrstztds/TwEHa4m3H9I/AAAAAAAAAbQ/qYFoJ0J-CS8/s1600/Transistores.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="http://4.bp.blogspot.com/-outBrstztds/TwEHa4m3H9I/AAAAAAAAAbQ/qYFoJ0J-CS8/s400/Transistores.png" width="500" /></a></div>
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">Os transistores são ligados quando tensão entre a base e o emissor é maior do que 0,7V. Precisamos então escolher os resistores de forma que, quando a porta do microcontrolador estiver em 0 ou 1, a tensão na base do transistor seja maior do que 0,7V e, quando a porta estiver em alta-impedância, a tensão seja menor do que 0,7V. </span><span style="font-family: 'Trebuchet MS', sans-serif;">No meu caso, eu usei resistores de 33</span><span style="font-family: 'Trebuchet MS', sans-serif;">Ω nos transistores PNP e resistores de 47</span><span style="font-family: 'Trebuchet MS', sans-serif;">Ω nos transistores NPN.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span style="font-family: 'Trebuchet MS', sans-serif;">Quando a porta do microcontrolador estiver em 1 (5V), o transistor PNP estará desligado, e a tensão na base do transistor NPN será: U<sub>base</sub> = R<sub>base</sub> . U<sub>total</sub> / R<sub>total</sub> = 47Ω * 5V / (47Ω + 220Ω) = ~0,88V. O transistor NPN estará ligado, e a camada do cubo estará conectada ao terra (o inverso do sinal da porta).</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span style="font-family: 'Trebuchet MS', sans-serif;">Quando a porta do microcontrolador estiver em 0, o transistor NPN estará desligado, e a tensão na base do transistor PNP será: </span><span style="font-family: 'Trebuchet MS', sans-serif;">U</span><sub style="font-family: 'Trebuchet MS', sans-serif;">base</sub><span style="font-family: 'Trebuchet MS', sans-serif;"> = R</span><sub style="font-family: 'Trebuchet MS', sans-serif;">base</sub><span style="font-family: 'Trebuchet MS', sans-serif;"> . U</span><sub style="font-family: 'Trebuchet MS', sans-serif;">total</sub><span style="font-family: 'Trebuchet MS', sans-serif;"> / R</span><sub style="font-family: 'Trebuchet MS', sans-serif;">total</sub><span style="font-family: 'Trebuchet MS', sans-serif;"> = 33Ω * 5V / (33Ω + 120Ω) = ~1,08V. O transistor PNP estará ligado, e a camada do cubo estará conectada à força.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span style="font-family: 'Trebuchet MS', sans-serif;">Quando a porta do microcontrolador estiver em alta-impedância, a tensão na base do transistor PNP será: </span><span style="font-family: 'Trebuchet MS', sans-serif;">U</span><sub style="font-family: 'Trebuchet MS', sans-serif;">base</sub><span style="font-family: 'Trebuchet MS', sans-serif;"> = R</span><sub style="font-family: 'Trebuchet MS', sans-serif;">base</sub><span style="font-family: 'Trebuchet MS', sans-serif;"> . U</span><sub style="font-family: 'Trebuchet MS', sans-serif;">total</sub><span style="font-family: 'Trebuchet MS', sans-serif;"> / R</span><sub style="font-family: 'Trebuchet MS', sans-serif;">total</sub><span style="font-family: 'Trebuchet MS', sans-serif;"> = 33Ω * 5V / (33Ω + 120Ω + 220</span><span style="font-family: 'Trebuchet MS', sans-serif;">Ω + 47</span><span style="font-family: 'Trebuchet MS', sans-serif;">Ω</span><span style="font-family: 'Trebuchet MS', sans-serif;">) = ~0,39V, e a tensão na base do transistor NPN será: </span><span style="font-family: 'Trebuchet MS', sans-serif;">47Ω * 5V / (33Ω + 120Ω + 220</span><span style="font-family: 'Trebuchet MS', sans-serif;">Ω + 47</span><span style="font-family: 'Trebuchet MS', sans-serif;">Ω</span><span style="font-family: 'Trebuchet MS', sans-serif;">) = ~0,56V. Ambos os transistores estarão desligados, e a camada do cubo ficará em alta-impedância.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<span style="color: #783f04; font-size: large;"><b>Software:</b></span><br />
<br />
Eu implementei <a href="http://www.arduino.cc/en/Tutorial/PWM" target="_blank">PWM</a> tem todas as portas do ATmega328 para controlar a intensidade dos leds, utilizando a biblioteca Timer1 do arduino:<br />
<br />
<a href="http://www.arduino.cc/playground/Code/Timer1" target="_blank">http://www.arduino.cc/playground/Code/Timer1</a><br />
<br />
O PWM possui 32 níveis de intensidade, mas se utilizarmos duas cores na mesma camada do cubo ao mesmo tempo, cada cor pode usar somente 16 níveis. Isso é controlado automaticamente pelo software.<br />
<br />
O timer dispara 10.000 vezes por segundo. Parece muito, mas se considerarmos que desenhamos 1 layer por vez, em 32 passos de PWM, os leds operam numa frequência de 10.000 / 4 / 32 = ~78Hz.<br />
<br />
Para facilitar a programação dos efeitos, eu criei um segundo timer utilizando a biblioteca MsTimer2 do arduino:<br />
<br />
<a href="http://www.arduino.cc/playground/Main/MsTimer2" target="_blank">http://www.arduino.cc/playground/Main/MsTimer2</a><br />
<br />
O timer2 opera numa frequência de 16Hz e controla efeitos de fade-in e fade-out de cada led individualmente.<br />
<br />
Para programar os efeitos, o código principal manda comandos de fade-in, fade-out, turn-on e turn-off para os leds nos momentos certos, e os timers cuidam do resto.<br />
<br />
Código fonte: <a href="https://sites.google.com/site/eletreco1/files/LedCube.zip">LedCube.zip</a> (Dez/2011)<br />
<br />
Eu conectei as portas do ATmega328 às colunas do cubo de forma aleatória (do jeito que ficou mais fácil na hora de soldar), e depois fiz um mapeamento das portas no software. Se alguém quiser reutilizar o código, precisa remapear as portas depois (variáveis PORTMAP e BITMASK no CubePWM.cpp). As camadas foram conectadas em ordem às portas digitais D4 até D7 (de baixo para cima). Essas portas não são parametrizáveis no código, então será mais fácil manter as conexões das camadas nessas mesmas portas.</div>
<div style="font-family: "Trebuchet MS",sans-serif;">
</div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br /></div>
<div style="color: #783f04; font-family: "Trebuchet MS",sans-serif;">
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: large;"><b>Programação do ATmega328 na placa:</b></span></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br />
Eu estou utilizando um cabo FTDI (USB/TTL) para programar o ATmega328 diretamente no cubo. Como as portas RX e TX são compartilhadas com as colunas do cubo, quando o cabo FTDI está ligado, uma coluna do cubo fica sempre acesa. Mas isso não interfere na programação, que funciona normalmente.<br />
<br />
Aliás, eu só não conectei as portas D0 e D1 às camadas do cubo para não correr o risco de acender duas camadas do cubo ao mesmo tempo com o cabo FTDI ligado. Isso poderia queimar o chip.<br />
<br /></div>
<div style="color: #783f04; font-family: "Trebuchet MS",sans-serif;">
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: large;"><b>Materiais utilizados:</b></span></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
</div>
<div style="font-family: "Trebuchet MS",sans-serif;">
<br /></div>
<ul style="font-family: "Trebuchet MS",sans-serif;">
<li>Placa de protótipo de fibra de vidro (10 x 15cm)</li>
<li>ATmega328 com bootloader</li>
<li>Soquete de 28 pinos para o microcontrolador (opcional)</li>
<li>1 resistor de 10KΩ para o reset</li>
<li>1 cristal oscilador de 16Mhz</li>
<li>2 capacitores cerâmicos de 22pF para o cristal</li>
<li>64 leds bicolores de 5mm com 2 terminais</li>
<li>16 resistores de 220Ω para as colunas</li>
<li>4 transistores BC328-25 PNP </li>
<li>4 resistores de 120Ω para os transistores PNP</li>
<li>4 resistores de 33Ω para os transistores PNP</li>
<li>4 transistores BC338-25 NPN</li>
<li>4 resistores de 220Ω para os transistores NPN</li>
<li>4 resistores de 47Ω para os transistores NPN</li>
<li>1 regulador de voltagem LM7805</li>
<li>2 capacitores eletrolíticos de 10uF para o regulador de voltagem</li>
<li>1 conector para fonte (e a fonte, se for o caso)</li>
<li>Cabo FTDI (USB/TTL) para programar o ATmega328</li>
<li>1 capacitor de 100nF para o reset do cabo FTDI</li>
<li>Soquete em barra para conectar o cabo FTDI</li>
<li>Borrachas para montar os pézinhos da placa</li>
</ul>
<br />
<br />Pedrohttp://www.blogger.com/profile/11927711381130875103noreply@blogger.com8