43
elétron elétro 2ª EDIÇÃO - Dezembro / 2009 PARA UM BRASIL MELHOR Grupo PICLISTBR REVISTA AVR - AvrMiniProg PIC - PIC-RCD PicKit2 - Montagem do Kit PROGRAMADORES LED Bidirecional Controle Remoto Infra Vermelho Suporte de Cabos Elétricos Profissões: website PICLISTBR.COM Fator de Potência Automação Industrial Termômetro Enrolado Sistemas Numéricos μC AVR - Aprendendo a programar ... e muito mais. Engenheiro Bio-Médico SCOPE SCOPE PICLISTBR

PicListBr Magazine Dec 2009

Embed Size (px)

DESCRIPTION

The List Distribution Group in Brazil, named PICLISTBR, composed by more than 650 members, has a Group at Google Groups, with the main intention to discuss electronics, circuits, programming and tools in general. From time to time the group produces a technical magazine, with electronic articles, columns, discussions, tips, DIY circuits and equipments, etc. The magazine is published in pdf at the group's website at http://www.piclistbr.org, and published here. The magazine production is done by the group members with some invited external writters, it is free, non profitable and for everyone to read.

Citation preview

Page 1: PicListBr Magazine Dec 2009

elétronelétro2ª EDIÇÃO - Dezembro / 2009PARA UM BRASIL MELHOR Grupo PICLISTBRR

EV

ISTA

AVR - AvrMiniProgPIC - PIC-RCDPicKit2 - Montagem do Kit

PROGRAMADORES

LED Bidirecional

Controle Remoto Infra Vermelho

Suporte de Cabos Elétricos

Profissões:

website PICLISTBR.COM

Fator de Potência

Automação Industrial

Termômetro Enrolado

Sistemas Numéricos

µC AVR - Aprendendo a programar

... e muito mais.

Engenheiro Bio-Médico

SCOPESCOPE PICLISTBR

Page 2: PicListBr Magazine Dec 2009

2

Capa da Revista: Shadow Master Revisão: Carmo Munhoz Produção e Edição: Wagner Lipnharski Artigos: Grupo PICLISTBR e Externos Esquemáticos: Autor Circuitos Impressos: Autor

A Revista elétron é editada e produzida por membros do grupo PICLISTBR, uma lista de distri-buição de emails existente no googlegroups, http://groups.google.com/group/piclistbr. O nosso contato para envio de matérias a serem avaliadas para publicação na revista: e-mail: [email protected].

Edição 2 - Ano 1 - Volume 2 – Dezembro de 2009.

Seja você mais um autor de matérias dessa revista e concorra a prêmios de reconhecimento dos leito-res. A cada 6 edições faremos uma votação popular das melhores matérias e os autores receberão um prêmio surpresa. Também votaremos a melhor matéria do ano, com um prêmio ainda melhor.

As matérias poderão ter até seis páginas e abran-ger a área técnica eletrônica, como: análise de circuitos, projetos e construções eletrônicas, uso de ferramentas, pequenas ferramentas produzidas em casa, entrevista com profissional da área, dicas e macetes, técnica de medição e produção, novi-dades em eletrônicas e tecnologia, software, hardware, experiências, soluções, etc.

Anexe uma foto sua à matéria, assim todos o co-nhecerão e saberão que você não é um sapo. Pode adicionar algumas informações ao seu respeito, tais como: local de trabalho, formação acadêmica ou profissional, tempo de experiência, etc.

Participe.

EXTRA - Mutirão SCOPE LCD Ao fechar essa edição estou prestes a iniciar a nova remessa de 1, 2 ou 3 scopes em caixas menores para alguns compradores ou candida-tos a redistribuir localmente entre os colegas compradores. Como todos já sabem, infeliz-mente o pessoal da Alfândega no Brasil não quis entender o nosso mutirão de economia no transporte e devolveu a caixa contendo uma grande quantidade de scopes e capacímetros para os Estados Unidos, ainda não recebida.

Comentários do Editor Wagner Lipnharski

O nosso grupo está crescendo, ganhando força e conquistando diferentes áreas. Hoje o nosso grupo no Google tem um fervor próprio, que às vezes causa um certo te-mor: é quando inú-meros assuntos não coerentes invadem nossa caixa postal de e-mail. Mesmo as-sim, lá é fácil de

resolver, basta usar um gerenciador e filtros de e-mail, e, quando passa do limite, a boa tecla “DEL” sempre resolve. Tratar desse possível problema na edição de uma revista é mais complicado, o ideal é a par-tir de já separar os assuntos. Vejam, estamos avançando em programação; Assembly, C e outras linguagens. Participantes conhecem diferentes áreas de informática, PC, Mac, Windows, Linux e Unix. Também não dei-xamos de lado programação de chips, área sufi-ciente para possuir uma revista própria. Também estamos crescendo na área de hardwa-re, aplicações, ferramentas, construção, em breve metalurgia, soldas, circuito impresso, produção, indústria e processos. Aqui cabe tranquilamente outra revista. Novo Nome dessa nossa Revista O novo nome “elétron” é para concentrar assun-tos ligados ao dia-a-dia do técnico, do enge-nheiro, do aprendiz e do professor. Onde se discute e se mostra diagramas, aparelhos, equi-pamentos, técnicas, componentes e construção elétrica / eletrônica. O nome “elétron” tem maior identidade com a proposta da revista. Se quisermos atrair mais e mais artigos, inclusive de autores externos ao grupo, é fundamental que esta revista tenha uma identidade mais coerente com os artigos publicados. Cada coisa no seu lugar.

É atrás do “elétron” que fundamentamos a nos-sa vida de hobby ou profissional em eletrônica, nada mais justo que ele também ilumine o nosso caminho, assim como ilumina o sentido no logotipo desta revista.

Quero aqui lançar o desafio, para que outras revistas sejam iniciadas, a PICLISTBR “bit” ou

PICLISTBR “constrói”, ou PICLISTBR “cursos”, onde voluntários se dedicam a criar uma identi-dade própria para cada uma.

Nova Diagramação A nova diagramação das páginas com três colu-nas, tenta tornar a leitura mais fácil e promover um melhor fluido nas matérias. Sempre que possível e existentes, publicaremos ao final da revista as imagens 1:1 dos circuitos impressos relativos aos artigos publicados.

Agradecimento Agradecimentos aos participantes com matérias e serviços, que tornam essa revista uma reali-dade. Também agradeço as palavras de incenti-vo vindas de todo o nosso grupo PICLISTBR.

A Grande Novidade ??? PEDRO DRUMMOND, quem mais poderia ser? Agora também colabora na nossa revista, com todo o bom tempero e perfumes do nosso rico, complicado, saboroso e amado idioma.

Nessa Edição Organizador de Cabos ............................... 3 Programador PIC-RCD ............................... 4 Pedro Drummond ...................................... 5 Programador AVRMiniProg ...................... 6 Controle Remoto I.R. ................................ 8 Engenharia Bio-Médica ........................... 11 LED Bidirecional ....................................... 12 Quente Quente Quente .......................... 14 Automação Industrial .............................. 15 Fator de Potência .................................... 16 Direto da China ........................................ 27 Termômetro Enrolado ............................. 28 Sistemas Numéricos ................................ 29 Sistema Numérico Maia .......................... 31 Atmel AVR e Assembly ............................ 32 AVR Laboratório Simulado .................... 36 FIP - Fonte de Instrumentos PicListBr ..... 37 Osciloscópio LCD PicListBr ..................... 37

Artigos e comentários dos membros integrantes do grupo PICLISTBR http://groups.google.com/group/piclistbr/?hl=pt-BR

Eletrônica ° Eletricidade ° Mecânica Microcontroladores ° Comunicação

Wireless ° Projetos ° Bancada Equipamentos ° Ferramentas

Hardware ° Software

REVISTA elétron Grupo PICLISTBR ELETRO/ELETRÔNICA SEGUNDA EDIÇÃO

Page 3: PicListBr Magazine Dec 2009

3

Organizador de Cabos Por Wagner Lipnharski – Orlando Florida. Após alguns anos coletando todo tipo de cabo elétrico de conexão, de alimentação e pontas de prova, nos deparamos com uma infinidade de rolos, amarrados, emaranhados infindáveis que tentamos nos debater em organizar, muitas vezes com total insucesso. As primeiras tenta-tivas de organização iniciam em separar em caixas de papelão, mas mesmo os cuidadosa-mente enrolados e amarrados terminam se em-baraçando com conectores de outros cabos e ao final tudo continua embaralhado. Já tentei diversas soluções “mais inteligentes” que sempre ajudam, mas não resolvem definiti-vamente o problema. Entre elas já usei ganchos presos na parede, cabideiros, varal de cabos, etc. Tudo o que obtive foi um pouco de organização, mas os cabos continuam enroscando uns nos outros, e nenhuma dessas soluções mostrou-se prática e, o mais importante, transportável. Até que finalmente lembrei-me de uma solução adotada por fabricantes de estojos “wire-wrap” e que usávamos na IBM. Simples tubos, porém com cortes para engate dos conectores. A solução proposta que promete “milagres” e que pretendo implementar já nas próximas semanas é a instalação de tubos guia. O meu projeto para organizar 42 cabos, requer o seguinte material:

• 3 tábuas 2x1” (50x25mm) por 80cm. • 15 tubos de PVC de 50mm por 140cm. • 14 tubos de PVC de 50mm por 130cm. • 13 tubos de PVC de 50mm por 120cm. • 45 parafusos auto-atarrachantes de 20mm. • 1 lata de cola de PVC (encanador).

As seguintes ferramentas são necessárias:

• Furadeira com brocas de 5mm e 10mm • Chave de fenda, Serra de cano • Lima redonda, Lixa (200 a 300) • Régua, Lápis

Inicia-se por cortar os canos de PVC na medida e lixar as extremidades para deixá-las lisas e sem rebarbas. As três ripas serão usadas como elemento de suporte do conjunto. Usando a broca de 5 mm faça dois furos na parte mais larga de cada ripa, a 15 mm de cada extremidade. Esses furos serão usados para afixar as ripas na parede, porta, armário, etc., via parafusos ou ganchos presos à parede. Usando o lápis marque os 15 tubos de 140 cm 50mm de cada extremidade, e mais uma marca exatamente no meio, 70cm. Essas marcas deve-rão ser circulares ao redor de cada cano.

Usando a broca de 5 mm, faça um furo em cada marca, de forma a atravessar completamente o cano. Tome o cuidado de furar o cano exata-mente no centro. Esses furos servirão para parafusar os canos as três ripas. Com a broca de 10mm, aumente os 3 furos do mesmo lado do cano. Esses são furos de traba-lho e servirão para entrar com os parafuso e chave de fenda, a parafusar a parte de trás dos canos às ripas.

Figura 1. Furação dos primeiros 15 tubos

Agora prepare o engate dos cabos, que nada mais é que um ou mais cortes verticais na parte de cima e no lado frontal do PCV, conforme a figura 2 ao lado. Esses cortes podem ser feitos com a serra de cano e lixados de acordo. A largura desses cortes deverá ser equivalente à espessura dos cabos a enfiar nesse tubo. Dife-rentes larguras podem ser

feitas no mesmo cano, de forma que esse sirva para diferentes cabos. A idéia é que o cabo entre por dentro do cano, a sua ponta dobre pela abertura e vire para fora de forma que o conector, garra jacaré, etc., da ponta do cabo não passem e ali fiquem pendu-rados. Após os 15 tubos estarem furados, marque a ripa superior bem no centro, insira um parafuso de 20 mm de comprimento pelo furo de 10 mm, passe pelo furo de 5 mm e, usando a chave de fenda pelo furo de 10mm, por dentro do tubo, parafuse o primeiro tubo à ripa. Repita a ope-ração para a ripa no centro do tubo e a ripa na outra extremidade do mesmo tubo. Intercale os outros 14 tubos de um lado e de outro do tubo central e vá emparafusando um a um, com o cuidado de não deixar espaço entre os tubos e não acavalar. A melhor forma de conseguir esse objetivo é fazer esse procedi-mento no chão, encostando o topo dos tubos na parede e mantendo-os perpendiculares à pare-de. Ao final terá 15 tubos parafusados às três ripas, num formato retangular. Em seguida aplique a cola de PVC onde os tubos encostam uns nos outros. Aguarde 30 minutos para que a cola seque completamente. Prepare os 14 tubos de 130 cm com os mesmos cortes da figura 2. Alinhe esses 14 tubos sobre os já parafusados pela extremidade de baixo. O topo desses tubos estará 10 cm abaixo do topo dos anteriores. Observe onde os encostam nos parafusados e aplique cola de PVC entre eles, um a um. Aplique uma leve pressão em cada tubo por 1 minuto, para a cola fazer bom conta-to. Repita a colagem para todos os tubos dessa camada. Se duas camadas de tubos forem suficientes, a montagem está concluída, caso contrário aplique da mesma forma os outros 13 tubos mais curtos. Ao final parafuse a ripa superior na parede, porta, etc., ou engate em ganchos previamente parafusados na parede. Abaixo uma represen-tação de 15 tubos (6-5-4).

Page 4: PicListBr Magazine Dec 2009

4

Programador PIC-RCD Daniel José Viana e-mail: [email protected] Introdução: O programador RCD é um programador de PICs para porta serial, muito simples de ser montado e utilizado. Este artigo tem como objetivo apre-sentar este programador e fornecer um breve descritivo sobre o seu funcionamento. Para saber maiores detalhes, consulte o URL original do projeto: http://feng3.cool.ne.jp/en/rcd.html

Descrição de funcionamento: O programador RCD é uma variação do JDM, URL: http://k9spud.com/jdm/ que permite programar PICs que utilizam o algoritmo "VPP antes do VDD", pois no JDM original a tensão VDD é presente todo o tempo. O nome RCD vem de "resistor", "capacitor" e "diodo", que são os componentes utilizados para montá-lo. Este programador utiliza uma 'charge pump' para gerar a tensão VPP necessária à gravação do PIC, formada pelo capacitor C1, o diodo D7 e a linha TXD. O resistor R6 serve para proteger portas seriais com pouca capacidade de corren-te ou que não tenham baixa tolerância a corren-tes de pico em seus pinos. O trimpot R3 limita a corrente aplicada ao pino VPP. Alguns PICs (como o PIC16F84) podem drenar maior corrente durante a programação, e para estes dispositivos pode ser necessário ajustar este potenciômetro. Compatibilidade: O programador RCD já foi testado com os se-guintes PICs e programas da tabela ao lado. (1)WinPic Quando ambas as opções 'IntOSC' e 'internal MCLR' foram selecionadas, a programação ocor-reu com sucesso. Contudo, logo após sair do modo 'Program/Verify' pode não ser possível ler/verificar o dispositivo. Mas o dispositivo pode ser reprogramado. (2)A identificação de dispositivo '(Device ID) do PIC12F683 é 0x0460. (3)Utilize um adaptador, programe via método ICSP. Veja exemplo para adaptador SOT23 PIC10F2xx, na URL:

http://feng3.cool.ne.jp/10f/index.html#adaptor e para PIC16F57 veja exemplo no URL: http://feng3.cool.ne.jp/gif/adptbf.gif Para os PIC16F627A/628A/648A, remova os jumpers J1 e J2 do presente circuito. (4)WinPic Habilite a opção "raise Vdd before MCLR=Vpp" (5)WinPic Não use o WinPic para programar o PIC16F84A com o programador RCD Programmer! Use IC-Prog ou PICProg4U! Nota: WinPic O apagamento e a re-programação podem ser desabilitados após serem selecionadas as op-ções 'IntOSC' e 'internal MCLR com o WinPic configurado para interface tipo "JDM Program-mer 2". Neste caso tente desmarcar todas as opções no diálogo 'Interface Test'. Programas: Os seguintes programas podem ser utilizados:

IC-PROG http://www.ic-prog.com/ Autor: Bonny Gijzen WinPic http://people.freenet.de/dl4yhf/ Autor: Wolfgang Büscher PiCProg4U http://feng3.cool.ne.jp/en/pp4u.html Autor: FENG3, o mesmo autor do projeto do programador. Esta versão requer o .NET Framework 1.1 ou mais recente, e tem versão em algumas línguas, inclusive o espanhol. A versão mais recente detecta a porta serial automaticamente e su-porta os seguintes dispositivos: PIC10F200/202/204/206/220/222, PIC12F508/509/510, PIC16F54/57/59, PIC12F629/635/675/683, PIC16F627/628, PIC16F627A/628A/648A,PIC16F630/636/639/676 PIC16F684/685/687/688/689/690, PIC16F818/819, PIC16F84A, PIC16F87/88, PIC16F870/871/872/873/874/876/877, PIC16F873A/874A/876A/877A.

Dispostitivos suportados

PIC (nome)

Memória(Words)

Tensão VPP no pino MCLR

IC-Prog (C1)

WinPic (C1)

PICProg4U

(C1)

100uF 470uF 100uF 470uF 470uF NotaPIC10F200F629 256x12 12.5 <= VPP <= 13.5 N/A N/A N/A N/A R (3) PIC10F202F629 512x12 12.5 <= VPP <= 13.5 N/A N/A N/A N/A R (3) PIC10F204F629 256x12 12.5 <= VPP <= 13.5 N/A N/A N/A N/A R (3) PIC10F206F629 512x12 12.5 <= VPP <= 13.5 N/A N/A N/A N/A R (3) PIC12F508F629 512x12 12.5 <= VPP <= 13.5 J J N/A N/A R

PIC12F509F629 1024x12 12.5 <= VPP <= 13.5 J J N/A N/A R

PIC12F629F629 1024x14 VDD + 3.5 (Max 13.5) J J C/R C/R R

PIC12F635 1024x14 10 <= VPP <= 12 N/A N/A C/R C/R R (1) PIC12F675 1024x14 VDD + 3.5 (Max 13.5) J J C/R C/R R

PIC12F683 2048x14 10 <= VPP <= 12 N/A N/A C/R C/R R (2) PIC16F54 512x12 12.5 <= VPP <= 13.5 N/A N/A N/A N/A R

PIC16F57 2048x12 12.5 <= VPP <= 13.5 N/A N/A N/A N/A R (3) PIC16F59 2048x12 12.5 <= VPP <= 13.5 N/A N/A N/A N/A R (3) PIC16F627 1024x14 VDD + 3.5 (Max 13.5) J J C/J/R C/J/R R

PIC16F627A 1024x14 10 <= VPP <= 13.5 N/A N/A C/J/R C/J/R R (3) PIV16F628 2048x14 VDD + 3.5 (Max 13.5) N/A J C/J/R C/J/R R

PIC16F628A 2048x14 10 <= VPP <= 13.5 N/A J C/J/R C/J/R R (3) PIC16F630 1024x14 VDD + 3.5 (Max 13.5) J J C/J/R C/J/R R

PIC16F636 2048x14 10 <= VPP <= 12 N/A N/A C/R C/R R (1) PIC16F648A 4096x14 10 <= VPP <= 13.5 N/A J N/A C/J/R R (3) PIC16F676 1024x14 VDD + 3.5 (Max 13.5) J J C/J/R C/J/R R

PIC16F684 2048x14 10 <= VPP <= 12 N/A N/A R R R (1) PIC16F688 4096x14 10 <= VPP <= 12 N/A N/A N/A C/R R

PIC16F818 1024x14 VDD + 3.5 (Max 13.5) J J C/J/R C/J/R R (4) PIC16F819 2048x14 VDD + 3.5 (Max 13.5) J J C/J/R C/J/R R (4) PIC16F84 1024x14 12 <= VPP <= 14 J J N/A N/A N/A

PIC16F84A 1024x14 12 <= VPP <= 14 J J N/A N/A R (5) PIC16F87 4096x14 VDD + 3.5 (Max 13.5) N/A N/A J J R

PIC16F88 4096x14 VDD + 3.5 (Max 13.5) J J J J R

Cor Pinos Cor Resultado Marca Programador utilizado

6/8-pin Success J JDM Programmer 2

14-pin Passable C COM 84

18/28/40- pin Failure R RCD Programmer

Page 5: PicListBr Magazine Dec 2009

5

Pedro Drummond

Meus amigos, tenho imenso prazer de anunciar a presença do Pedro Drummond na nossa revista. A participação do Pedro, assim como a de todos os outros, é prova de que quando se quer se faz, e quando se faz, um melhor futuro nos espera. wlip

Drummond é Autor do livro imperdível: LEMNISCATA – O ENIGMA DO RIO www.oenigmadorio.com.br

Figura 2 Sugestão de Placa de Circuito Impresso, PIC-RCD

Figura 3

Programador PIC-RCD – Diagrama Esquemático

Pessoal, o Lip achou interessante termos aqui uma coluna sobre a língua portuguesa, para tentarmos reduzir o número de erros em nos-sa lista de discussão. Achei interessante, mesmo porque – assim como na eletrônica – quem faz também aprende fazendo; ou seja, vou a-prender e relembrar algumas coisas junto com vocês. Além disso, po-demos sempre colocar alguma brincadeira ou charada aqui, voltada ao tema do idioma. Quem tiver sugestões pode mandar para mim.

Pedro Drummond [email protected]

Page 6: PicListBr Magazine Dec 2009

6

Programador AVRMiniProg Daniel José Viana e-mail: [email protected] Introdução: Quem trabalha com microcontroladores AVR e gosta de montar suas próprias ferramentas, talvez já tenha montado o programador US-BASP, URL: www.fischl.de/usbasp mas este não funciona dentro do AVRStudio. Para resolver essa deficiência, Uma boa alterna-tiva é recompilar o AVRMiniProg, URL: www.simonqian.com/en/AVRminiProg/index.html por Simon Qian. Para tal, baixe uma das versões de "firmware" (RC2 ou TEST) e descompacte os arquivos dentro de uma pasta qualquer. Em seguida abra o pro-jeto "AVRminiProg.aps" utilizando o AVR studio e procure na seção "Header Files" da árvore do projeto pelo arquivo app_cfg.h. Clique duas vezes sobre ele para editá-lo, veja Figura 1 ao lado. Comente (“//”) a linha que inclui o arqui-vo app_cfg_Full.h e descomente a que inclui o arquivo app_cfg_USBasp.h

... // Include this if use

AVRminiProg_Full ...

//#include "app_cfg_Full.h"

// Include this if use

AVRminiProg_USBasp

#include "app_cfg_USBasp.h"

...

Depois vá ao menu "PROJECT->CONFIGURATION OPTIONS" do AVRStudio e mude o chip ("device") para ATMEGA8 ou ATMEGA88. O arquivo compi-lado tem um pouco mais de 5k, e por isso não é possível utilizar um ATMEGA48, conforme a Figura 2 ao lado. Depois de compilado, o AVRMiniProg.hex estará disponível na pasta "DEFAULT". Então após programar o AtMega88 com o arquivo acima, é preciso configurar os 'drivers' USB. Para isso é necessário que os 'drivers' USB que acom-panham o AVRStudio estejam instalados. Para confirmar a presença de tais ‘drivers’, vá ao menu "Arquivos de Programas->Adicionar ou Remover Programas" do Windows e procure pela entrada do AVRStudio e clique no botão [Alte-rar], veja Figura 3 ao lado. Na janela que vai abrir, selecione a opção [Mo-dify] e clique no botão [Next]. Na próxima ja-nela marque a opção [Install/Upgrade Jungo USB Driver]. Em seguida clique no botão [Next] e depois em [Finish].

Figura 1 – Editando o arquivo app_cfg.h

Figura 2 – Mudando o Chip de AtMega8 para AtMega88

Figura 3 – Verificando se os Drivers USB do AVRStudio estão instalados.

Page 7: PicListBr Magazine Dec 2009

7

Depois de concluída esta etapa, conecte o pro-gramador na porta USB. O Windows deve reco-nhecer o dispositivo "AVRISP MKII" e irá pedir para instalar os "drivers". Selecione a opção "instalar de um local especificado" e aponte para a pasta de nome "USB" que está dentro da pasta onde foi instalado o AVRStudio, veja Figu-ra 4 ao lado. Seu programador vai estar agora pronto para uso. Abra novamente o AVRStudio e clique no botão [Conectar] ou use o menu "Tools->Program AVR->Connect", como na Figura 5 ao lado. Selecione a opção de plataforma "AVRISP MKII", a porta "USB" e clique no botão [Connect]. Se tudo correu bem, a janela de conexão irá aparecer como na Figura 6 ao lado. NOTAS: Este programador não pode ser atualizado pelo comando "update" do AVRStudio.

O Windows VISTA reconhece o dispositivo, insta-la os drivers, mas não funciona.

US$ 15.00 http://www.etekronics.com/index.php?main_page=product_info&cPath=1_2&products_id=2

Figura 4 – Instalando os Drivers USB

Figura 5 – Conectando o Programador AVRISP mkII (USB) ao AVRStudio

Page 8: PicListBr Magazine Dec 2009

8

Controle Remoto I.R. PARTE 1 Por Wagner Lipnharski – Orlando Florida. A Intenção dessa matéria é dar luz (literalmen-te) ao assunto Controle Remoto de Infra-Vermelho ao usuário de MicroControlador, des-mistificando esse assunto que não é complexo e que permite comandar circuitos eletrônicos à distância. Aqui iremos entender o que é, como funciona e como fazer os nossos próprios circui-tos de Controle Remoto.

HISTÓRIA A minha primeira TV com controle remoto foi uma Semp Toshiba colorida, comprada em 1975. O controle remoto mais parecia um barbeador elétrico e possuía somente duas teclas. Power (liga/desliga) e Avançar Canal. A função liga / desliga na TV era um relê rotativo de dois está-gios e a função Avançar Canal era simplesmente um pequeno motor conectado ao Seletor de Canais mecânico. Como o Seletor de Canais só atendia 12 canais, não havia muito problema em rodar 11 para retornar a um canal mais baixo. O Controle Remoto emitia ultrasom com duas frequências de modulação, uma em cada tecla. Era comum trocar de canal ao bater duas facas no ar, de alguma forma conseguíamos gerar o ultrasom e enganar a TV. Mais tarde surgiram os controles remotos por Infra-Vermelho (Infra-Red, I.R.), de todo tipo, formato, baterias, alcances, funções. Os pri-meiros eram rudimentares, de baixo alcance e suas baterias duravam pouco. Os primeiros modelos usavam baterias de 9V. O que é INFRA-VERMELHO? Infra-Vermelho é uma radiação eletro-magnética cuja frequência está abaixo da Luz Visível pelo olho humano. Qualquer objeto com temperatura acima do zero absoluto gera e emite radiação na faixa do Infra-Vermelho. Apesar do olho humano não ter a capacidade de ver tal radiação, nossa pele consegue senti-la na forma de calor. Devemos entender que calor gera e emite Infra-Vermelho, mas a radiação eletromagnética cuja frequência está na faixa do Infra-Vermelho não necessariamente carrega calor. É o mesmo que dizer que uma lâmpada incandescente emite muito calor e luz visível, mas nem tudo que gera luz visível emite calor. NOVA TECNOLOGIA Em seguida foi desenvolvida melhor tecnologia e, novos chips foram especialmente produzidos para a função de controle remoto, como foi o caso do TA11385 (RCA) e o SAA3010 (Philips)

Circuito Completo de um Controle Remoto

Outros chips com a mesma capacidade de transmissão, são os Philips SAA3006 e SAA3027. Esses novos chips aliados a novos e mais fortes LEDs I.R., atualmente “inundam” a sala da TV de radiação I.R. com baixo consumo de energia. Atualmente as baterias de um Controle Remoto duram meses, mesmo com uso constante. Esses novos LEDs emitem grande quantidade de I.R., consumindo pouca energia e emitindo baixíssi-mo calor. MAIOR ALCANCE Todo Controle Remoto por I.R. usa LEDs I.R. de média / alta potência e a informação é transmi-tida via modulação do feixe I.R. A intenção é fazer o receptor perceber tais mudanças de on/off ou padrão de modulação do feixe e de-codificar a informação transmitida. Imediatamente percebeu-se que o feixe de I.R. não tinha grande penetração em distância, de-vido às inúmeras interferências no ambiente, afinal de contas praticamente tudo que possui alguma temperatura emite I.R. e isso causa um mascaramento no sinal transmitido. A tendência natural nesses casos é gerar uma portadora de frequência mais alta a ser modu-lada com o sinal a transmitir, numa operação similar à transmissão de Rádio, onde o sinal de áudio modula a radiofrequência. Nesse caso, optou-se pela frequência de 38 kHz a modular o LED I.R., e o sinal a transmitir liga ou desliga essa portadora.

Figura 1 – Exemplo de Modulação 38kHz

MÓDULO RECEPTOR Na recepção, um módulo especialmente produ-zido, que possui um diodo receptor de I.R., amplificador sintonizado em 38kHz, e filtro para remover tal frequência, fornece à saída um sinal digital idêntico ao sinal originário no transmissor. Um desses módulos foi fabricado pela SONY em 1995 e teve o código SBX8020. Entre os chips decodificadores encontramos os Philips SAA3049 e TDA3048. Um circuito eletrônico então decodifica o sinal digital recebido, interpreta a informação e exe-cuta o comando enviado pelo Controle Remoto e seu usuário deitado no sofá. PROTOCOLOS DE TRANSMISSÃO

Por falta de um protocolo universal de comuni-cação os diversos fabricantes desenvolveram os seus protocolos proprietários, mas quase todos os fabricantes asiáticos voltaram o enfoque para uma única padronização. Não foi devido a ne-nhum acordo, mas pela disponibilidade do chip especial, usado pela maioria deles. Então surgiram protocolos da SONY, da HITACHI, da PHILIPS, etc. Cada um atendendo as mais turbulentas adições de mais e mais comandos, equipamentos e funções. Como muitos equipamentos na sala de estar utilizam Controle Remoto, e todos observando a frequência portadora de I.R. de 38 kHz, o pro-tocolo de transmissão teve que conter uma forma de selecionar o seu equipamento, a TV, o Estéreo, o DVD, a Caixa Decodificadora do Cabo de TV, o CD player, etc. Na transmissão de I.R. o protocolo exige que alguns bits transmitidos selecionem o tipo de equipamento, outros bits identifiquem a função desejada, etc. O mais complicado foi fazer com que o controle remoto da Philips não interfira e não gere co-mandos falsos num equipamento da SONY na mesma sala. PROTOCOLO RC-5 Nessa primeira parte da matéria Controle Re-moto I.R., estaremos analisando um dos proto-colos mais comuns, o da RCA, então Philips, conhecido como RC-5, e que, tornou-se “pa-drão” mundial de facilidade e praticidade em emuladores, geradores de teste, e é o mais discutido entre entusiastas e hobbistas em Ele-trônica. Por via de regra, todo Controle Remoto RCA ou Philips, Silvania ou outra marca associada de alguma maneira com a Philips, usa tal proto-colo. Assim sendo, ao montar um decodificador com base nesse protocolo, você poderá contro-lar seus circuitos usando um controle remoto desses fabricantes. Na Internet encontramos muitas explicações sobre a modulação RC-5, algumas delas tentam explicar usando diferentes larguras de pulso, ou até mesmo PWM, o que é completamente erra-do. A modulação RC-5 é muito simples, ela se baseia em 14 ciclos com período de 1.68 ms (frequência de 593.75 Hz = 38 kHz / 64). A codificação é simples: se o bit sendo transmi-tido tem o nível alto (1), então a onda quadrada inicia baixa e muda para alta no meio do tempo do bit (0.864 ms). Se for baixo (0), então ela inicia alta e muda para baixa no meio do bit. Veja exemplo na Figura 2 na próxima página.

Page 9: PicListBr Magazine Dec 2009

9

Figura 2 – Exemplo de Modulação RC5

Na figura acima, para melhor visualização, 32 pulsos são representados por somente 4. Devido à modulação de 38 kHz, cabem exata-mente 64 pulsos de I.R. de 26 µs (micro segun-dos) em cada tempo de bit. Então, ao transmitir bit “1”, transmite-se 32 x 26 µs de silêncio e 32 pulsos de onda quadrada de I.R. com período de 26 µs cada. Ao transmitir bit “0”, transmite-se 32 pulsos de onda quadrada de 38 kHz (26 µs) e então 32 x 26 µs de silêncio. A melhor forma de fazê-lo num micro-controlador é trabalhar com interrupções, mas vamos exemplificar com rotinas de tempo via software: Duas rotinas, uma chamada BITZero e outra BITUm. A rotina BITZero é chamada quando o bit a ser transmitido é “0”, e a BITUm quando o bit for “1”. Ambas as rotinas usam um time-delay externo, numa terceira rotina, que gasta em torno de 13 µs, a ajustar para mais ou para menos durante os testes do I.R. Um pino de porta do Microcontrolador é usado como saída via resistor de 2k2 Ω para a base de um transistor que alimenta um LED I.R. Na entrada de ambas as rotinas, o pino da porta é colocado em nível baixo. A rotina BITZero inicia carregando um contador com valor 32. Então chama o Time-Delay de 13µs, e inverte o pino de saída da porta. De-crementa o contador e repete o loop. Carrega novamente o contador com valor 32,

chama a rotina de time-delay 13µs, não inverte o pino de saída e repete o loop. A rotina BITUm faz exatamente o contrário, inicia carregando um contador com valor 32. Então chama o TimeDelay de 13µs, e não inver-te o pino de saída da porta. Decrementa o con-tador e repete o loop. Carrega novamente o contador com valor 32, chama a rotina de time-delay 13µs, inverte o pino de saída e repete o loop. O protocolo RC5 consiste em 14 bits de dados, que usará uma ou outra rotina de software. Qualquer tecla pressionada no teclado de um Controle Remoto RC5, usará tal sequência. MAS O QUE SIGNIFICAM OS 14 BITS? Os 14 bits têm o seguinte significado: Os primeiros dois bits, Bit 1 e Bit 2, são sempre nível 1, servem para o equalizador interno do Módulo Receptor. Ao manter uma tecla pressionada no Controle Remoto Philips, usando RC-5, ele irá transmitir o mesmo comando sucessivamente, separados por um breve instante de tempo. Mantendo-se a tecla “5” pressionada, a TV po-deria entender que isso significa uma série de cincos, mas você só quis transmitir um único 5. Querendo transmitir 55, você terá que pressio-nar duas vezes a tecla 5. Como a TV entende isso? O Bit 3 no RC5 Philips, serve como indicador FLIP, e a cada nova tecla pressionada ele irá inverter de 1 para 0 ou de 0 para 1. Mantendo a tecla pressionada o bit 3 ficará no mesmo esta-do. A TV monitora o bit 3 para saber se o que

está chegando é a repetição do comando ante-rior, ou se é um novo comando e que poderá ser igual ao anterior. Portanto, o microcontrolador deverá manter na memória o último estado do bit 3 e invertê-lo ao enviar um novo comando. Os próximos 5 bits, de 4 a 8 representam um valor binário de zero a 31, que significa o ende-reço do dispositivo receptor. Endereço de Destino, bits 4 a 8, em decimal:

0 = TV Set 1 1 = TV Set 2 2 = VIDEOTEXT 3 = Expansão para TV 1 e 2 4 = Laser Disk Player 5 = Video Recorder 1 (VCR 1) 6 = Video Recorder 2 (VCR 2) 7 = Reservado 8 = Satelite 1 9 = Expansão para VCR 1 e 2 10 = Satelite 2 11 = Reservado 12 = CD Video 13 = Reservado 14 = CD Photo 15 = Reservado 16 = Pré-amplificador de Áudio 1 17 = Receptor / Sintonizador 18 = Tape Cassete Recorder 19 = Pré-Amplificador de Áudio 2 20 = CD 21 = Rack de Áudio 22 = Receptor Satélite Áudio 23 = Decodificador DCC 24 = Reservado 25 = Reservado 26 = CD Gravável 27 a 31 = Reservado

Os próximos 6 bits, de 9 a 14 representam o comando a ser executado pelo equipamento endereçado pelos bits de 4 a 8 acima. O bit 14 é o menos significativo e é o último a ser transmitido. A tabela dos comandos do RC5, em decimal: 0-9 = NUMERIC KEYS 0 - 9 12 = STANDBY 13 = MUTE 14 = PRESETS 16 = VOLUME UP 17 = VOLUME DOWN 18 = BRIGHTNESS + 19 = BRIGHTNESS - 20 = COLOR SATURATION + 21 = COLOR SATURATION - 22 = BASS UP 23 = BASS DOWN 24 = TREBLE + 25 = TREBLE - 26 = BALANCE RIGHT 27 = BALANCE LEFT 48 = PAUSE 50 = FAST REVERSE 52 = FAST FORWARD- 53 = PLAY 54 = STOP 55 = RECORD 63 = SYSTEM SELECT 71 = DIM LOCAL DISPLAY 77 = LINEAR FUNCTION (+) 78 = LINEAR FUNCTION (-) 80 = STEP UP

Page 10: PicListBr Magazine Dec 2009

10

81 = STEP DOWN 82 = MENU ON 83 = MENU OFF 84 = DISPLAY AV SYS STATUS 85 = STEP LEFT 86 = STEP RIGHT 87 = ACKNOWLEDGE 88 = PIP ON/OFF 89 = PIP SHIFT 90 = PIP MAIN SWAP 91 = STROBE ON/OFF 92 = MULTI STROBE 93 = MAIN FROZEN 94 = 3/9 MULTI SCAN 95 = PIP SELECT 96 = MOSAIC MULTI PIP 97 = PICTURE DNR 98 = MAIN STORED 99 = PIP STROBE 100 = RECALL MAIN PICTURE 101 = PIP FREEZE 102 = PIP STEP UP 103 = PIP STEP DOWN 118 = SUB MODE 119 = OPTIONS BUS MODE 123 = CONNECT 124 = DISCONNECT Agora então juntando todos os bits. Ao pressionar a tecla de STOP num Controle Remoto de VCR Philips, os seguintes 14 bits são transmitidos. Bits 1 e 2 = 1 1 (equalizador) Bit 3 = 0 (Flip bit, no próximo comando será 1) Bits 4 a 8 = decimal 5 para VCR = 0 0 1 0 1 Bits 9 a 14 = STOP dec 54, binário = 0 1 1 1 1 0 Sequência de bits: 1 1 0 0 0 1 0 1 0 1 1 1 1 0

Na figura abaixo vemos os bits de 1 a 14 e sua identificação: em azul claro para Equalizador, bits 1 e 2; o bit 3, FLIP, em amarelo; bits de 4 a 8 em azul – endereçamento; e bits de 9 a 14, comando a executar. Ainda considerando o exemplo da tecla de STOP do controle Philips de VCR, cuja combinação dos 14 bits seria 11000101011110, o sinal de I.R. transmitido seria como se vê em pulsos verme-lhos para bit “1” e azuis para “0”. Tal I.R. transmitido será recebido e decodificado pelo módulo receptor, cuja saída é invertida. Desta forma, com a presença de I.R. modulado em 38 kHz, a saída do módulo é nível baixo; a ausência de I.R. modulado força a saída para nível alto, como podemos ver na figura, a linha em verde. Para decodificar os bits, o chip ou microcontro-lador receptor monitora a saída do módulo re-ceptor para a primeira descida de nível; quando isso ocorre, aguarda a próxima descida que deverá ocorrer em torno do tempo “t” (1.68 ms). Uma vez identificadas ambas as descidas, a-guarda um tempo de 3/4t (1.26 ms) e lê 12 bits sucessivos da saída do módulo receptor, espa-çados por “t” (1.68 ms), obtendo assim o bit FLIP, 5 bits do endereço do destino e 6 bits do comando a executar. Resta então comparar se o endereço do destino é igual ao dele; se não, irá ignorar o comando recebido; se sim, executará o comando.

Ao montar um circuito transmissor e receptor usando um micro controlador, o usuário poderá usar tal protocolo (RC-5) e criar o seu próprio código de comandos, porém é interessante utili-zar algum Endereço de Destino que não seja mais usado atualmente, como por exemplo, um Tape Cassete Recorder, código decimal 18, ou utilizar algum dos reservados, como por exem-plo, endereço decimal de 27 a 31. Desta forma você terá alguma garantia adicional que nenhum controle remoto nas redondezas irá interferir com a sua transmissão. Produzindo o transmissor e receptor, o usuário poderá inventar mais bits se necessário, e transmitir 8 ou mais bits no “Comando a Execu-tar”, desde que o receptor esteja esperando tais bits adicionais. O único inconveniente é que esta transmissão não possui sincronismo a cada bit, então os clocks do transmissor e receptor não podem divergir demasiadamente; para tanto, torna-se exigência o uso de cristal ou ressonador cerâmi-co no oscilador dos microcontroladores. O uso de Controle Remoto por I.R. é uma alter-nativa de baixo custo tanto para controle como para programação de dispositivos que não pos-suem teclados ou outra forma de acesso, como placares de LEDs, robots, ou programando pa-râmetros em memória E2prom de microcontro-ladores que já possuem um Módulo Infraverme-lho para receber outros comandos em geral. Também é possível efetuar transmissão de da-dos usando essa técnica, porém a velocidade com que os dados trafegam é relativamente baixa, na ordem de 593 bps. Devo lembrar que existe um protocolo RC-6, também da Philips, que possui bits adicionais no pacote transmitido, a fim de cobrir os novos equipamentos e funções. Na PARTE 2 dessa matéria, a ser publicada na próxima edição da revista, cobriremos os outros Controle Remotos e seus protocolos, tais como: SONY, NEC, Apex, Hitachi, Pioneer e JVC. Wagner Lipnharski – Orlando Florida.

Page 11: PicListBr Magazine Dec 2009

11

Engenharia Bio-Médica PROFISSÕES TÉCNICAS e de ENGENHARIA

Izabella Lipnharski – Miami USA.

Atualmente estou cursando o segundo ano de Biomedical Engineering (Engenharia Biomédica, ou EBM), com especialização em Elétrica, na University of Miami, em Coral Gables na Florida.

EBM aplica técnicas de engenharia a problemas de ciências e medicina, até então relegado ao trabalho do médico pesquisador, sem o treina-mento necessário em engenharia.

Em quase todos os aspectos de saúde existem problemas que requerem o trabalho de um en-genheiro biomédico. Vemos aqui desde traba-lhos relacionados a reconstrução humana, até próteses altamente sofisticadas e tratamento médico nunca antes permitido ou contemplado pelo clínico médico, devido às limitações aca-dêmicas e práticas do uso de tal tecnologia.

O desenvolvimento da medicina tem aumentado a necessidade de uso de profissionais treinados para fechar o vazio existente entre a medicina clínica e a tecnologia médica. Esses profissio-nais definem um problema médico e buscam a solução que satisfaz ambos os requerimentos da engenharia e da medicina.

O engenheiro biomédico tem especialização em engenharia, biologia e ciências médicas. O uso de eletrônicos na área médica tem crescido substancialmente, aliado à engenharia clínica e materiais biológicos (bio-materials).

A abrangência destes campos é enorme, de monitores cardíacos à computação clínica, cora-ção artificial a lentes de contacto, cadeiras de rodas a tendões artificiais, implantes de mem-bros artificiais com controle eletrônico e senso-

riamento. Estuda-se a criação e desenvolvimen-to de diversas novas ferramentas médicas para análise de problemas, de restrições, doenças, dificuldades, análise e acompanhamento da recuperação do paciente. Como exemplo, os medidores de glicose no sangue usados por dia-béticos, são equipamentos tipicamente desen-volvidos pela engenharia biomédica. A enge-nharia eletrônica não teria subsídios acadêmicos suficientes para entender os conceitos biológi-cos, e os médicos clínicos não teriam conheci-mento tecnológico eletrônico, mecânico, de materiais ou matemático suficiente para cons-truir um equipamento de tal efeito.

A concentração de soluções eletrônicas da EBM é comumente associada com Bio-Eletricidade (Bio-Electrical) e engenharia neurológica (Neu-ral Engineering), bio-instrumentação, dispositi-vos de imagem médica e engenharia ótica. Certos implantes, como marca-passo ou implan-tes de cóclea, requerem excelente conhecimen-to de eletrônica e pesquisa.

Os Engenheiros Biomédicos necessitam conhe-cimento de engenharia e biologia, e normal-mente são graduados em Mestrado ou Doutorado em EBM, e que requer de 6 a 8 anos de estudos.

O interesse em EBM tem aumentado muito nos últimos anos, e diversas universidades de enge-nharia agora já possuem o departamento de Engenharia Biomédica, enquanto outras ainda estão trabalhando nesse sentido. Essa necessi-dade é mundial e em muitos países encontramos universidades já lecionando EBM.

Mesmo em países como índia, onde a demanda de mão de obra ainda não é presente, as univer-sidades já possuem milhares de alunos em pro-cesso de formação e especialização na área. Recentemente em contato com estudantes cur-sando EBM na Índia, fui informada que estão prestes a receber o diploma de bacharel em EBM e já possuem convites de empresas multi-

nacionais para uma posição avantajada de tra-balho, cuja remuneração é acima da clínica médica tradicional.

Esse fator remuneração também é observado nos Estados Unidos, onde o Engenheiro Biomédi-co já é visto como uma posição superior ao clí-nico médico.

O curso de EBM é difícil e requer dedicação, foco contínuo e incansável do aluno, pois englo-ba estudos profundos de biologia, ciências, física, matemática, eletrônica, uso de Lasers, radiação, programação de micro-chips, lingua-gem C e Assembly, circuitos impressos e técni-cas digitais, psicologia, sociologia, neurologia associada à mecânica tradicional, laboratório mecânico (machine-shop), etc.

Diversos estudantes que iniciam EBM acabam saltando para a carreira de medicina tradicional pois esta exige um menor esforço do estudante.

Só recentemente que EBM desenvolveu sua própria disciplina acadêmica, sendo uma área ainda nos primeiros passos e já com demanda de mão de obra acentuada. Mostra-se então, uma carreira muito promissora e de futuro. Isso, aliado ao atual crescimento da tecnologia médi-ca, nos promete um aumento substancial de Engenheiros Biomédicos nas universidades e no mercado já nos próximos anos.

Muito em breve, ao invés de receitar um medi-camento, o médico clínico encaminhará o paci-ente para um engenheiro biomédico que irá programar as soluções ao paciente, que podem representar químicos, implantes bio-eletrônicos ou nano-máquinas para correções internas.

Um exemplo é a Engenharia de Tecido Diabéti-co, que combina materiais e fatores bioquímicos com células de outros tecidos, a fim de reparar ou substituir as funções da insulina. Departa-mento em extremo crescimento e grandes grants (investimentos) de empresas externas.

http://www.bme.miami.edu/laboratories_homepage/dtel/diabetes_laboratory.html

Alunos usando espelhos e prismas para

alinhar dois Lasers de diferentes compri-mento de onda em um único feixe.

Alunos observando tecido biológico sendo

irradiado com laser CO2.

Page 12: PicListBr Magazine Dec 2009

12

LED Bidirecional PARTE 1 Por Wagner Lipnharski – Orlando Florida.

HISTÓRIA Todos nós já tivemos contato com diodos LED. Para alguns os LEDs já existiam quando inicia-ram em eletrônica, e provavelmente nasceram na geração LED. Para outros os LEDs surgiram diversos anos após já dominarem o uso de lâm-padas incandescentes, piloto e indicadoras (es-pia) em painel de instrumentos, tampinhas colo-ridas multifacetadas, etc.

LED significa “Light Emitting Diode”, e sendo um semicondutor, ele é altamente produtivo, transforma 85% ou mais da energia consumida em radiação eletromagnética numa estreita faixa de frequência, que pode ir de 400 a 1500 nanômetros, ou seja, infrared a ultravioleta. LEDs atuais de cor verde, azul e vermelha são os de maior penetração e percepção para uma mesma energia consumida. Nos últimos anos também tivemos a surpresa dos leds brancos, que inundaram o mundo na forma de iluminação econômica, substituindo lâmpadas de ilumina-ção comum, de automóveis, lanternas, etc. LEDs são construídos com elementos tipo Galli-um, Indium e Alumínio, da coluna III (ou grupo 13) da tabela periódica dos elementos; também podem ser construídos com arsênico, fósforo e nitrogênio, da coluna 5 (grupo 15) da tabela, ou com semicondutores da coluna 2 e 6 (grupos 12 e 16), por exemplo Zn e Se. Processados juntos, esses semicondutores irradiam numa faixa es-treita de frequência, e consequentemente com boa eficiência na conversão de energia elétrica em radiação eletromagnética visível. Veja a construção na Figura 1 abaixo.

Adicionando químicos impuros, colunas 3-5 e 2-6, produzem tipos N e P, para se obter junções PN. É exatamente nessa junção que ocorre o fenômeno que iremos explorar a seguir.

SEMICONDUTOR Como todo semicondutor, os LEDs também são sensíveis a radiações externas. Os primeiros transistores foram fabricados em ampolas de vidro e já nos primeiros lotes tiveram que ser pintados de preto a fim de não sofrer demasia-das interferências de radiações externas, prin-cipalmente de frequência visível. A posteriori os transistores finalmente passaram a ter invó-lucros em epoxy preto ou cinza e canequinhas de metal, para também bloquear radiações eletromagnéticas da faixa não visível. Sendo sensíveis à luz visível, os LEDs podem servir também como sensores ópticos. Com base nessa possibilidade, iremos aqui ex-plorar esse efeito e entender como um LED pode ser usado de forma bidirecional. Devido a características próprias dos semicon-dutores, quando expostos à luz visível eles ten-dem a criar uma pequena tensão na barreira semicondutora, com a polaridade invertida - positivo no catodo, negativo no anodo.

Figura 1

Para testar tal efeito, use um simples voltíme-tro digital (multímetro). Ligue as pontas de prova do voltímetro, escala 2 Volts, diretamente nos leads de um LED verme-lho, positivo no catodo, negativo no anodo e aproxime o led de uma fonte de luz (lâmpada, sol, etc) e verá o voltímetro mostrar uma tensão de até 1.6Vdc, como podemos ver na Figura 2.

Figura 2

Nesse momento o LED está se comportando como um gerador de tensão. A potência gerada é muito baixa, essa tensão cairá rapidamente se houver qualquer carga conectada; mesmo um resistor de 1M Ω causará tal queda. Entretanto, podemos amplificar essa tensão através de um amplificador operacional que ofereça uma impedância alta de entrada, o que não irá consumir a tensão gerada pelo LED. Veja na Figura 3 abaixo um exemplo de uso de um amplificador operacional para tal função.

Figura 3

BIDIRECIONAL

Para usar um LED comum na modalidade bidire-cional, podemos usar uma técnica que está se espalhando na Internet, chamada de Fator de Descarga. A junção PN do LED funciona como um capacitor de alto isolamento, para tensões invertidas. Aplicando 1 Volt invertido no LED, essa carga será armazenada por algum tempo, como num capacitor. Porém, expondo o LED à luz, ele irá gerar tensão com polaridade correta e essa irá descarregar o 1V antes armazenado. Se pensarmos que o LED é um capacitor, então na presença de luz tal capacitor passa a ter fuga de corrente. Quanto mais luz, maior a fuga.

Figura 4

Então nos concentraremos nessa pequena área de luz existente entre escuro, penumbra e luz fraca, que é onde o LED trabalha como um ca-pacitor com fuga variável. Veja a Figura 4. Essa intensidade de luz é exatamente útil para ligar ou desligar luzes noturnas, para diferenciar um led aceso ou apagado a mais de 1 metro de distância, a reflexão de algum objeto iluminado

Page 13: PicListBr Magazine Dec 2009

13

por outro LED e que passe em frente a esse usado como sensor, etc.

Figura 5

Na Figura 5 acima temos uma fonte de energia, uma chave comutadora, um LED e um voltíme-tro. A chave comutadora conecta o LED inverti-do às baterias ou ao voltímetro, que aqui consi-deramos ter impedância acima de 30MΩ. Ao virar a chave para as baterias, o LED carre-gará o seu “capacitor” interno e, se este estiver no escuro manterá essa tensão mesmo após desligar as baterias. Ao virar a chave para o lado do Voltímetro, então iremos medir a tensão acumulada nesse “capacitor”, com a polaridade de tensão igual às baterias, identificada com os sinais do lado esquerdo do LED. Porém, ao expormos o LED à luz, este gerará energia proporcionalmente à luz aplicada, com polaridade correta, como identificado pelos sinais ao lado direito do LED. Como a energia gerada possui polaridade invertida à energia armazenada no “capacitor” do LED, elas tendem a se anular, e o tal “capacitor” irá descarregar numa velocidade proporcional à intensidade de luz aplicada. Então, medindo o tempo que o LED descarrega a tensão do “capacitor”, podemos avaliar a inten-sidade da luz aplicada ao LED. Note que a carga acumulada nesse “capacitor” do LED é extremamente baixa, e somente um voltímetro FET ou de alta impedância poderia medi-la. Um pino de porta de microcontrolador em estado de alta impedância também conse-gue medir esta tensão, com pouca interferência na descarga. Mas por que usar essa técnica e não a da Figura 3 para medir intensidade de luz sobre um LED? Primeiro porque para que o LED gere energia suficiente para ser medida, muita luz deve inci-dir sobre a sua pastilha, e o que queremos é medir penumbra e baixa radiação. Expondo o LED à intensidade de luz emitida por outro LED a 1 ou 2 metros, a energia gerada será muito pequena, de pouca valia ou até mesmo impossível de ler ou avaliar. Já a técnica Fator de Descarga permite medir intensidades de luz bem menores, pois não es-tamos medindo a tensão gerada pelo LED, e sim

o quanto esta pequena tensão descarrega o “capacitor” interno. Para tal, usaremos um pino de I/O de porta de microcontrolador. Ligaremos o Anodo do LED para terra e o Catodo para o pino da porta. Nessa experiência não é necessário nenhum resistor ou outro componente. Note que o LED está ligado com polaridade invertida, anodo para terra. Ora o pino configurado como saída alimenta sinal alto (VCC) para o catodo do LED, ora ele é configurado como entrada e sem pull-up (alta impedância) e mede a tensão, ou algum limiar da tensão do capacitor do LED. Experiências que fiz usando um AVR At90S2313, demonstraram que o tal “capacitor” do LED chega a demorar em torno de 12 segundos ou mais para, no escuro, descarregar até uma ten-são que a lógica identifica como zero, e que deve ser em torno de 1.2V ou menos. Entretanto, ao expor o LED à luz branda emitida por um LED branco a 50 cm, a descarga até 1.2V (nível lógico zero) ocorre em menos de 1 segun-do.

Figura 6

Na Figura acima vemos foto da tela de oscilos-cópio mostrando a descarga do LED na penum-bra. Note que o LED descarrega quase que por completo em apenas 5 ms, um grande contraste com o “1 segundo” descrito acima. Isso ocorre devido à baixa impedância da ponta de prova do osciloscópio (que apesar de ser bem alta – x10 - e original Tektronix) acelera muito a descarga do LED. Como eu sei disso? Usando o At90S2313 para medir tal tempo, ao tocar o LED (e pino de porta) com a ponta de prova do sco-pe, esse tempo cai de aproximadamente 1 se-gundo para 5ms, acelerando quase em 200 vezes a descarga. Mas apesar do grande erro causado pela ponta de prova do scope, as figuras servem para o nosso estudo. Na Figura 7, a seguir, o LED foi exposto a uma franja de luz de uma lâmpada LED de 3W, e já podemos ver que diferente da Figura 6 onde em 1.2 ms ainda tínhamos 1.2V, agora nesse mesmo tempo temos só 0.6V.

Figura 7

Figura 8

Na Figura acima, a lâmpada de LEDs 3 W ilumi-nando o LED frontalmente a 30cm, note que em 1.2 ms a tensão resultante no “capacitor” do LED está no joelho de ter se tornado zero.

Figura 9

Na Figura acima o LED foi iluminado por um LED branco de alto brilho a 3 cm de distância. Note que a descarga do “capacitor” deu-se por com-pleto em menos de 0.3 ms. Para fins práticos, compare a forma de onda de descarga das Figu-ras 6 e 7. O pino da porta do At90S2313 conse-gue identificar como nível 1 os 1.2 V da Figura 6, após 1.2 ms, e identifica como nível lógico zero o da Figura 7 após o mesmo período de tempo. Isso já seria suficiente para que o Micro-Controlador identificasse claro ou escuro usando um simples LED como sensor de luz. Mas de uma forma simples isso poderia ser feito usando um simples foto-diodo ou um resistor

Page 14: PicListBr Magazine Dec 2009

14

sensível a luz (LDR); por que então toda essa experiência com um LED ? Porque um LED pode gerar luz ! E é exatamente essa a idéia dessa experiência: criar uma “Luz Noturna de Corredor” usando um simples LED, resistor e um microcontrolador, onde o próprio LED que serve de sensor também ilumina as proximidades de onde estiver insta-lado caso esteja escuro. Montei estes componentes para teste, como se pode ver na foto abaixo.

Figura 9

Nesse teste temos um At90S2313, cristal de 10MHz, resistor de 470 Ω e um LED vermelho moderno, atual, de bom rendimento. Aqui usei dois pinos de porta do At90S2313, que se conectam ao LED via o resistor de 470Ω. 3 pilhas AA alkalinas e o cristal e está pronta a luz noturna portátil, que posso levar para onde quiser e com autonomia de meses.

Figura 10

Na Figura 10 podemos ver a construção da luz noturna, que não precisa de interruptor, devido ao baixo consumo - menos de 5mA durante a noite e em torno de 1mA durante o dia. O LED tem o seu anodo ligado ao pino A, e cato-do ao pino B via resistor de 470Ω. At90S2313 controla os pinos A e B assim:

Ciclo de Leitura A B LED 0 1 Off - Carrega Capacitor 0 HiZ OFF – Descarrega Cap com Luz Aguarda 1.2 ms e verifica se o pino B, em alta impedância (HiZ), está com nível alto ou baixo. Se estiver com nível baixo é porque o LED está recebendo luz ambiente, portanto mantém o LED apagado e repete o ciclo acima. Uma vez que o nível em B é verificado estar alto, o ambiente está escuro; então: Ciclo de Iluminação A B LED 1 0 ON – LED ilumina o ambiente Aguarda 20 ms e volta para o ciclo de Leitura. O circuito funciona bem, autônomo e sem pro-blemas. Tal construção pode servir para alimentar back-light de displays LCD, iluminação de teclado, luz interna de chão para veículo (para quê ligar a lâmpada durante o dia?), etc. Posteriormente liguei o fio B do LED à entrada [+] do comparador analógico do At90S2313, e no pino [–] do comparador liguei um trimpot e re-sistor para ajustar entre 4.8 e 5 Vdc. Assim eu posso ajustar a sensibilidade de penumbra que o LED ainda considera luz ambiente. Consegui com que o LED sinta a luz de um sim-ples LED branco ligado a 2 metros de distancia. Isso abriu portas para uma idéia de comunicação de dados usando simples LEDs, que ora transmi-te, ora recebe. Como o limite mínimo de sensi-bilidade é na faixa de 2 a 3 ms, tal comunicação de dados serial fica limitada a 300 bps, mas extremamente funcional para microcontrolado-res embutidos em pequenos robots ou mesmo instrumentos de bancada que precisem “conver-sar entre sí”. Mas isso fica para a Parte 2 dessa matéria a ser publicada na próxima edição dessa revista.

Quente Quente Quente NOTÍCIAS DA SEMANA Por MAK. O nosso grupo já possui um Domain próprio na Internet, registrado tanto no Brasil como no exterior: http://www.piclistbr.com http://www.piclistrbr.com.br Esses domínios são de nossa propriedade e uso. O nosso website já está previsto para as próxi-mas semanas, por colaboradores do grupo. Google Chrome OS será lançado em uma se-mana. 13.11.2009 14:30 8 Comentários postado por Felipe Lobo Próximo Post Post Anterior

O Google Chrome OS estará disponível para download em uma semana, segundo o Tech-Crunch. O sistema operacional foi anunciado em julho e o lançamento antes do final do ano pode servir para conseguir emplacar alguns netbooks vendidos nesse final de ano.

Segundo o site, o que se pode esperar é que o suporte a drivers ainda será fraco, mesmo com um batalhão de engenheiros trabalhando para criação de todos os principais drivers do merca-do. A empresa certamente deve focar nos net-books, plataforma que é o principal destino (ou assim o Google espera) do sistema operacional. A empresa já anunciou estar trabalhando com grandes empresas do setor, como Acer, Adobe, Asus, HP, Lenovo, Qualcomm e Toshiba no pro-jeto do Chrome OS. Só nos resta então aguardar o lançamento desse esperado sistema operacio-nal e ver o que de verdade nós vimos nos rumo-res dos últimos meses.

Pedro Drummond Saio vivo se segurar um cabo de 13kV. Você tem dinheiro para pagar o frete do scope. Pode me enviar aquele CI. Onde vai ser o encontro... Quer fazer sentido? Então que tal ver se sua pergunta tem um “?” no final?

Pedro Drummond Quer saber o porquê? Bom, esta a gente aprende desde pequeno. “Por que” separado é na pergunta, “porque” junto é na resposta. Certo? Assim, seria: “Pai, por que sai fumaça do seu circuito?” e a resposta: “Porque não tinha 2N3055 na gaveta, filho”. Então basta ver se a frase tem um ponto de interrogação e pronto? Pois é, mas nem sempre... como nosso idioma é repleto de exceções, aqui vai uma de cada: “porque” junto quando é pergunta: “Quer saber o porquê de este programa em C ser tão grande?”; e o “por que” separado na resposta: “Quero é saber por que não aprendi Assembly ainda!”. Perceba que, além do justo arrependimento, existe uma “pergunta camuflada” nesta última afirmação.

Page 15: PicListBr Magazine Dec 2009

15

Automação Industrial Por RODRIGO REIS DO NASCIMENTO ([email protected]) Técnico em Eletrônica com ênfase em Automa-ção da Manufatura trabalha há 10 anos na área de Automação como Projetista e Programador. A HISTORIA DO CLP O CLP (Controlador Lógico Programável) ou PLC é uma das estrelas quando falamos de automa-ção industrial; não é por menos, ele revolucio-nou o modo como produzimos máquinas e pro-cessos. Quero mostrar neste artigo o porquê deste estrelismo do CLP. PLC e suas expansões Inicialmente os painéis elétricos de máquinas e processos eram criados com comandos elétricos, relês, contatores, temporizadores e quando mais complexos maiores eram os painéis e maior a chance de erro (ligação errada ou falta de ligação, retorno de tensão, etc). Porém o mercado automobilistico (sempre ele) precisava de uma solução simples para poder adaptar suas máquinas quando mudava a linha

de produção, pois, por mais simples que uma alteração em uma linha de montagem possa parecer, as alterações em maquinário podem ser muito complexas. Devido a essa necessidade em 1968, a GM Hy-dramatic, divisão responsável pelo câmbio au-tomatico da General Motors, comandado pelo Richard Morley, solicitou à Bedford Associates um equipamento que atendesse as seguintes caracteristicas:

• Facilidade de programação; • Simples manutenção com conceito plug-in; • Alta confiabilidade; • Dimensões menores que painéis de relês, para

redução de custos; • Envio de dados para processamento centralizado; • Preço competitivo • Expansão em módulos; • Mínimo de 4000 palavras na memória.

Apesar de todos os PLCs atenderem estes requi-sitos, atualmente existem muitas outras exigên-cias, como programação em Ladder, etc. Na época que foi criado, o PLC tinha programa-ção totalmente dedicada a hardware (Assem-bly), ou seja, o programador tinha que conhecer a fundo a arquitetura do hardware, para poder endereçar os IOs e fazer os cálculos. Na evolução natural dos PLCs começaram a

surgir as linguagens mais simplificadas, não dependento tanto de hardware. Na verdade os PLCs começaram a ter um OS para que pudessem interpretar o programa (compilado) para o hardware. Seguindo ainda a evolução, o PLC passou a ter porta de comunicação onde poderíamos pro-gramar, via cabo, com equipamentos dedicados a programação, não dependendo mais de grava-dores e EPROM. Depois disso surgiram as portas de comunicação seriais onde finalmente poderiamos ultilizar o PC para a programação dos PLCs. Atualmente existe certa padronização na pro-gramação dos PLCs de diferentes fabricantes, apesar da complexibilidade de cada programa especifico. Existe também um estudo e movimento para tentar padronizar os protocolos de comunicação para que cada vez mais equipamentos sejam facilmente inseridos em uma rede e assim se possa ter o máximo de recursos ultilizados.

Page 16: PicListBr Magazine Dec 2009

16

Fator de Potência (POWER FACTOR)

Eng. Dr. Marco Antonio Simon Dal Poz ([email protected]) Este assunto pode ser abordado de vá-

rias formas; dentre elas destaco duas: a base teórica (nua e crua) e uma sequência de exemplos. Vou tentar mesclar ambas as formas, de forma a tornar o assunto menos monótono, permitindo ao leitor que, ao longo do texto, vá notando a uti-lidade e as consequências dos conceitos apresentados. Eu poderia, neste ponto, simplesmente jogar a definição de fator de po-tência, e dela deduzir todas as consequências possíveis e imagináveis, mas isto tornaria mais difícil sua interpretação, então vou mostrar de onde surgiu o fator de potência. Ele surgiu de uma série de simplificações que estamos habituados a fazer, na análise de circuitos alimentados por corrente alternada (AC), e que fisicamente não existem!!! São simplificações puramente matemáticas. Por exemplo: fasores. A corrente elétrica que atravessa um transforma-dor, com o primário ligado à rede elétrica, e com o secundário em aberto, é quase totalmente imaginária, isto é, é um número “a+jb” onde b é mui-to maior do que a. Mas no mundo real, quem disse que existe um valor de tensão e corrente que não é um número real? Isto é um fasor. É um núme-ro complexo que utilizamos como representação da amplitude e defasa-gem entre sinais senoidais. Trata-se de um artifício matemático que simplifica muito nossas vidas, e que requer conhecimento para sabermos interpretá-lo. É exatamente o mesmo que ocorre com o fator de potência. Não mostrei do que ele se trata ainda, mas é bom ter em mente que ele também é um artifício matemático. Antes de definí-lo, vamos mostrar como os vários artifícios surgiram, para então, de certa forma historicamente, chegarmos até ele. Tomemos como exemplo um circuito muito simples: um chuveiro elétrico, sem controle eletrônico, sem nada. Trata-se de um simples resistor, que ligamos à rede elétrica quando há passage de água por ele (para que ele não atinja temperaturas excessivas e se destrua). E como todo resistor, vale a lei de ohm:

RIV =

Vamos partir do princípio de que o nosso resistor está em equilíbrio térmi-co, e portanto não há variações do valor de R com a corrente, temperatu-ra ou tempo, ou seja, R é constante.

Quando dizemos que o chuveiro elétrico de determinado fabricante é de 5500W a 220V, o que isso significa? Significa exatamente o seguinte: que tal equipamento, quando submetido à tensão constante de 220V, converte exatamente 5500W de energia elé-trica em térmica (ou seja, aquece). Como todos sabemos, potência pode ser calculada através da fórmula:

VIP =

No caso do chuveiro de 5500W a 220V, a primeira consequência é que, ao ser alimentado como especificado (tensão constante de 220V), a corrente será de 25A, também constante. Portanto este resistor do chuveiro possui uma resistência (na condição de uso, ou seja, equilíbrio térmico, tudo constante) de 8,8Ω. Até aí, nada demais. Por definição, tensão (ou corrente) constante significa tensão DC (ou cor-rente DC), certo? Quase. Significa sim, mas não por definição, e sim por consequência. A definição de valor DC de qualquer grandeza (corrente, tensão, velo-cidade, etc.) é o valor médio temporal da pró-pria grandeza. Quando tal grandeza é constante, o valor dela é o próprio valor médio, já que não varia no tempo. Daí sim podemos dizer que tensão constante significa tensão DC (pois não há componente AC, isto é, não há variação ao longo do tempo). Aí começam os problemas. As duas fórmulas anteriormente citadas não são corretas. Elas só valem para circuitos DC ou para valores instantâneos. Então a forma correta de escrevê-las é:

)()( tRitv =

)()()( titvtp =

Portanto, em termos instantâneos, qualquer circuito submetido a uma tensão variável (alternada) e que tem resistência constante produzirá uma potência variável no tempo. Daí o nosso chuveiro, se ao invés de ser ali-mentado com 220VDC for alimentado com AC, não produzirá 5500W cons-tantes. Mais tarde avaliaremos exatamente o que ele produz. Como foi mencionado, o valor DC é o valor médio temporal, seja lá qual for a grandeza que estivermos tratando (corrente, tensão, velocidade, potência, etc.). Isso significa que qualquer sinal x(t) (qualquer forma de onda, seja ele periódico ou não) possui um valor médio XDC (valor DC), que é dado por:

+

===Ta

aDC dttx

TXXX )(1

Esta definição de valor médio parte do princípio de que o sinal é periódi-co, de período T. O valor de a é totalmente arbitrário, já que não muda o valor da integral acima. Caso o sinal x(t) não seja periódico, o valor médio (DC) é obtido fazendo-se com que o período T tenda ao infinito, ou seja:

Page 17: PicListBr Magazine Dec 2009

17

+

+∞→===

Ta

aTDC dttx

TXXX )(1lim

Por enquanto vamos tratar apenas de sinais periódicos, então não haverá necessidade de se utilizar a segunda definição de valor médio. Voltando ao exemplo do chuveiro elétrico. Havíamos dito que a potência dele é definida para alimentação por tensão constante (DC). De acordo com a definição acima de valor médio, quando x(t) é constante temos que x(t) é exatamente igual a XDC, pois a integral acima resulta em XT. Mas o que acontece com o chuveiro quando ele é submetido a alguma tensão alternada (não constante, mas periódica)? Ele produz uma potência variável no tempo, e neste caso nos interessa a potência média produzida por ele. De acordo com a definição de valor médio, a potência média é a média da potência instantânea, ou seja:

++

===Ta

a

Ta

a

dttitvT

dttpT

PP )()(1)(1

Nesta fórmula já fizemos a aplicação da Lei de Watt. O valor médio da potência (P) poderia ter sido chamado de PDC, mas evitaremos esta nota-ção, pois alguns autores a definem simplesmente como sendo o produto do valor médio de tensão (VDC) pelo valor médio da corrente (IDC), ou seja, evitaremos mencionar PDC para não causar confusão. Quando for necessário mencionar PDC informaremos a definição utilizada. Insisto novamente que a potência produzida pelo chuveiro, alimentado com AC, é variável no tempo. Então porque nos interessa a potência mé-dia como mencionado logo acima? Porque parte-se do princípio de que a inércia térmica da água que passa pelo chuveiro é tal que essa variação de potência ao longo do tempo é suprimida, isto é, a massa que envolve o resistor do chuveiro atua como um filtro passa-baixas, com frequência de corte bem baixa. Neste caso a entrada do nosso filtro é a potência, e a saída é a temperatura. E, como sabemos, em todo filtro passa-baixas a componente DC do sinal passa direto, sem alterações ou atenuações. E assim acontece com quase todo e qualquer resistor, onde a massa dele ou do que o rodeia é tal que as possíveis variações instantâneas de temperatura são suprimidas. É por isto que nos interessa o valor médio da potência. Isso tem uma consequência muito prática: é possivel utilizarmos o nosso chuveiro com alguma tensão AC e alguma forma de onda tal que a potên-cia média produzida é exatamente os mesmos 5500W especificados! Em termos matemáticos, isso significa dizer que, ao alimentarmos o chuveiro com tensão DC, temos:

R

VP

2

=

E ao alimentarmos o chuveiro com tensão AC, temos:

( )++

==Ta

a

Ta

a

dtR

tv

Tdttitv

TP

2)(1)()(1

Como estamos buscando a condição para que as potências médias se igua-lem, isto é, uma tensão v(t) que produza exatamente a mesma potência média daquela obtida pela alimentação DC, temos:

( )+

=Ta

a

dtR

tv

TR

V 22 )(1

A essa tensão V, que não se trata do valor médio de v(t) (pois V provém de uma alimentação puramente DC), que produz a mesma potência que a alimentação originalmente DC, dá-se o nome de valor RMS de v(t). Então vamos substituir V por VRMS justamente para evitar confusão. Simplificando a equação acima temos:

( )+

=Ta

a

RMS dttvT

V 2)(1

RMS significa raiz quadrada da média dos quadrados (root mean square), e mostra exatamente o que tal valor significa: a raiz quadrada do valor mé-dio do quadrado do sinal em questão. Essa definição, apesar de não ter significado físico direto (ou seja, fisica-mente não existe, pois a única coisa que existe fisicamente são valores instantâneos), nos informa qual é a característica que qualquer tensão AC periódica (seja lá qual for a forma de onda) deve ter para resultar exata-mente na mesma potência média especificada para uma determinada carga resistiva (que no nosso exemplo consiste no resistor do chuveiro). Portanto, se o nosso chuveiro desenvolve 5500W quando alimentado a 220VDC, podemos substituir essa alimentação de 220VDC por qualquer forma de onda tal que o valor RMS dela seja 220V, isto é, VRMS=220V. Tal definição de valor RMS pode ser aplicada a corrente, tensão, e quais-quer grandezas, incluindo potência. Porém, não a usaremos sobre a po-tência por não ter nenhuma utilidade prática (já que o que nos interessa é sempre a potência média ou a instantânea). Portanto usaremos bastante:

( )+

=Ta

a

RMS dttiT

I 2)(1

Se juntarmos essa definição de valor RMS com a definição de potência média, algumas coisas interessantes ocorrem. Continuemos analisando o nosso caso de carga puramente resistiva, alimentada por uma tensão AC qualquer. Neste caso temos, como já mostrado:

( ) ( )++

==Ta

a

Ta

a

dttvT

PRdtR

tv

TP 2

2

)(1)(1

Page 18: PicListBr Magazine Dec 2009

18

E também temos:

( ) ( )++

==Ta

a

RMS

Ta

a

RMS dttvT

VdttvT

V 222 )(1)(1

Comparando-se uma equação com a outra temos o seguinte resultado:

R

VPPRV RMS

RMS

22 ==

Ou seja, o conceito de valor RMS surgiu justamente para que, sobre cargas resistivas, continuemos usando a boa e velha fórmula “vê quadrado sobre erre”. Mas lembre-se: isto só se aplica sobre CARGAS RESISTIVAS. Então, vamos analisar o que acontece com cargas passivas não resistivas (ou seja, parcialmente ou totalmente indutivas ou capacitivas). Neste caso só podemos fazer uso das definições, ou seja:

+

=Ta

a

dttitvT

P )()(1,

( )+

=Ta

a

RMS dttvT

V 2)(1,

( )+

=Ta

a

RMS dttiT

I 2)(1

Sabe o que podemos fazer com essas fórmulas? Nada, a não ser que haja alguma relação entre v(t) e i(t). E para que haja alguma relação, temos que ter um circuito, ou seja, uma carga. Já analisamos o caso de carga puramente resistiva. Então, que tal analisarmos uma carga puramente capacitiva? O que acontece se conectamos um capacitor de capacitância C a uma alimentação de tensão AC? Ora, não precisamos nem fazer cálculos. Por definição, capacitores não são elementos dissipativos. No entanto por eles passa corrente. Isso signi-fica que, ao submetermos um capacitor a uma tensão v(t) (que tem um valor eficaz VRMS) temos uma corrente i(t) (que tem um valor eficaz IRMS) e a potência média é zero. E aí que começam os problemas. A potência instantânea no capacitor não é zero! Mas a média é. Justamente por isso é que define-se a potência aparente S, que é sim-plesmente dada por:

RMSRMS IVS =

Esta não é uma potência verdadeira e nem sequer é medida em Watts (W), pois é uma definição puramente matemática e que nem sequer tem signi-ficado físico!!! Quando VRMS é medido em Volts (V) e IRMS é medido em Ampères (A), a potência aparente S é simplesmente medida em Volt-Ampères (VA) e nunca deve ser expressa em Watts (W), pois ela não repre-senta consumo, geração nem conversão alguma de energia. É um conceito totalmente artificial definido arbitrariamente, muito usado como forma de se informar indiretamente um valor eficaz de tensão ou de corrente. Não é absolutamente NADA além disso. O que se pode fazer com essa potência aparente é, em casos particulares, deduzirmos relações que possam nos levar dela à potência média real (P). Por exemplo, no caso puramente resistivos, temos:

R

tvti

)()( =

Então o valor RMS da corrente pode ser simplificado, resultando em:

( )+

=Ta

aRMS dtti

TI 2)(1

( )+

=Ta

aRMS dttv

TRI 2)(11

R

VI RMSRMS =

Como já mostramos, no caso puramente resistivo, a potência média (e a instantânea também) é dada por:

R

VP RMS

2

=

Temos, portanto,

RMSRMS IVP =

ou seja,

Page 19: PicListBr Magazine Dec 2009

19

SP =

Esta é uma situação muito particular e desejável (mostraremos mais tarde porque), e no caso geral sempre teremos:

SP ≤

Chegou a hora de apresentarmos o fator de potência (fp). Fator de potên-cia é definido simplesmente como a razão entre a potência média real e o módulo da potência aparente, isto é:

S

Pfp =

Então, fica claro que, no caso puramente resistivo, o fator de potência é unitário (mostraremos mais tarde que esta é sempre a situação desejável). Vamos retomar agora o caso puramente capacitivo. Nada foi fórmulado ainda, mas conforme já foi mencionado, por se tratar de um componente não dissipativo e que, submetido a uma tensão alternada, circula por ele uma corrente alternada, temos sempre potência média nula, com VRMS e IRMS não nulos. Portanto P=0 e S é não nulo. Consequentemente o fator de potência é ZERO. Também pela definição de indutor temos exatamente a mesma situação, isto é, P=p e S não nulo, portanto fator de potência também igual a ZERO. Juntando todas as definições anteriormente dadas (de potência média, potência aparente, tensão RMS e corrente RMS) chegamos à definição generalizada de fator de potência para sinais periódicos:

( ) ( )

++

+

==Ta

a

Ta

a

Ta

a

dttiT

dttvT

dttitvT

S

Pfp

22 )(1)(1

)()(1

Que resulta em:

( ) ( )

++

+

=Ta

a

Ta

a

Ta

a

dttidttv

dttitv

fp22 )()(

)()(

Isso que é fator de potência, um número totalmente artificial, sem signifi-cado físico, e que define a razão entre potência média e o produto dos valores RMS de tensão e corrente, nada além disso.

Mas ele traz consequências em eficiência de transmissão (e/ou distribui-ção) de energia. O motivo é simples: se você tem uma fonte de alimentação de tensão alternada (vale a pena relembrar que, no caso DC, o fator de potência é sempre unitário, a demonstração é trivial e fica como exercício para o leitor, bastando entrar com v(t)=V=constante e i(t)=I=constante na fórmu-la acima) e conecta a ela uma carga puramente indutiva ou puramente capacitiva, você terá potência média ZERO e terá corrente circulando pelo circuito (fonte e carga). Se você tem corrente circulando por condutores não ideais (e portanto, que apresentam perdas resistivas, isto é, efeito Joule), você tem perda de potência! E isso ninguém quer. Portanto, o objetivo do estudo e cálculo do fator de potência é sugerir alterações nas cargas de forma tal que elas sejam sempre resistivas, isto é, devemos buscar e desenvolver métodos de nos livrarmos das cargas puramente indutivas ou capacitivas. Mostraremos mais tarde como isto é possível, através dos compensadores ou corretores de fator de potência (PFC, power factor correctors). Cabe aqui um comentário adicional: tudo o que temos analisado até agora vem sendo feito no domínio do tempo, mas poderíamos ter feito tudo isso no domínio da frequência, com resultados praticamente iguais. Existem muitas situações em que é vantajoso efetuar a análise no domínio da frequência, especialmente quando trabalhamos em RPS, isto é, Regime Permanente Senoidal, que é o caso das nossas redes de distribuição de energia elétrica (a tensão que temos disponível nas tomadas residenciais, comerciais ou industriais, seja lá qual for a amplitude). Então, já que vamos analisar o que acontece com cargas puramente capa-citivas e indutivas, e também com cargas mistas, vamos avaliar inicial-mente o que acontece no RPS. Por enquanto vamos fazer a análise no domínio do tempo, para em segui-da, com circuitos não puramente capacitivos ou indutivos (isto é, com componentes resistivos “no meio do caminho”), passarmos ao domínio da frequência (pois vai facilitar muito o cálculo). No RPS, a tensão da nossa fonte de alimentação (rede elétrica no exemplo do chuveiro) é dada por:

)sin()2sin()( PPPP tVftVtv φωφπ +=+=

f é a frequência da senóide, que é exatamente igual a 1/T, VP é o valor de pico da senóide, e φP é a fase inicial da senóide, que no RPS pode ser um valor arbitrário. É muito comum definir-se a frequência angular (ou velo-cidade angular) ω=2πf, pois este número 2πf aparece muito no decorrer das deduções. Voltando mais uma vez ao caso resistivo (vale a pena estudá-lo mais um pouco, pois foi ele que nos trouxe o conceito de valor RMS, e ele nos trará outro conceito muito importante, que será apresentado a seguir), isto é, do nosso chuveiro elétrico, a potência instantânea será dada, com esta alimentação AC senoidal, por:

( ) ( ) )(sin)sin()()( 2222

PPPP tR

V

R

tV

R

tvtp φωφω +=+==

Aplicando-se um pouquinho de trigonometria básica temos:

)22cos(22

)(22

PPP tR

V

R

Vtp φω +−=

Page 20: PicListBr Magazine Dec 2009

20

Isto significa que a potência do chuveiro, alimentado com AC, varia no tempo. Repare que o valor máximo de p(t) é exatamente “vê quadrado sobre R” e o valor mínimo de p(t) é zero. Relembrando-se a definição de valor médio temos, no caso da potência:

+

=Ta

a

dttp

TP

)(1

+

+−=

Ta

aP

PP dttR

V

R

V

TP )22cos(

221 22

φω

( )02

.1 2+= T

R

V

TP P

R

VP P

2

2

=

Ou seja, a potência média é igual a “vê quadrado sobre dois R” (sempre lembrando que este “vê”, neste caso, refere-se ao valor de pico da senói-de da rede). Mas foi mostrado poucas páginas atrás, que:

R

VP RMS

2

=

Portanto, dessa igualdade de potências médias, sai a relação entre valor RMS e valor de pico para tensões senoidais:

2RMSP VV =

Este fator “raiz de dois” é conhecido como fator de forma (ff) de sinais senoidais. Ou seja, em termos genéricos:

RMS

PRMSP V

VffffVV ==

Todas as formas de onda possuem o seu fator de forma. Vale a pena estu-dar alguns deles. Todos eles são consequência direta da definição de valor RMS. Tomemos como primeiro exemplo uma forma de onda triangular. Uma onda triangular pode ser definida da seguinte forma:

( )

+−−=+<≤

+

+−=

+<≤

TktT

VtvTktTk

TktT

VtvTktkT

P

P

434)(1

21

414)(

21

Onde k é um número inteiro (ou seja, Ζ∈k ) e T é o período (1/f) dessa onda triangular. A primeira parte descreve o trecho de subida (de –VP até +VP, no primeiro semi-período), e a segunda parte descreve o trecho de descida (de +VP até –VP, no Segundo semi-período). Vamos calcular o valor RMS desta forma de onda de tensão, fazendo a=0.

( )

31

481

4329

169

247

321

161

241

4

243

243

231

4.

2242314

169

23

1624

43

416

434

441

)(1

222

33

223

3

2/

0 2/

22

22

3

2/

0 2/

22

3

2

2/

22/

0

2

2

PRMSPPRMS

PRMS

T T

T

PRMS

T T

T

PRMS

T

T

PT

P

RMS

Ta

aRMS

VVVVV

TTTT

TTT

TTTTT

T

VV

dtTTt

tdtTTt

tT

VV

dtT

tdtT

tT

VV

dtT

tT

Vdt

Tt

T

V

T

VdttvT

V

==+−++−=

+

−−

−+

+

=

+−+

+−=

−+

−=

−−+

−=

=

+

Portanto, temos que, para onda triangular, o fator de forma, diferente da onda senoidal que é raiz de dois, é raiz de três.

3

31

=== ff

V

V

V

Vff

P

P

RMS

P

Fica como exercício para o leitor constatar que o fator de forma para onda dente de serra, seja ascendente ou descendente, é exatamente o mesmo da onda trigular. Além disso, também fica como exercício constatar que, caso a onda trian-gular seja assimétrica, isto é, com tempos de subida e descida diferentes, o fator de forma não muda. No caso de onda quadrada, temos duas situações possíveis: onda quadrada com valor mínimo zero e valor máximo VP, e com taxa de trabalho δ; e onda quadrada com valor mínimo VMIN, valor máximo VMAX, e dois tempos mortos (em zero), com duas taxas de trabalho δMAX e δMIN correspondentes aos tempos em que o sinal atinge VMAX e VMIN. O primeiro caso é bem simples. A partir da descrição da forma de onda temos:

Page 21: PicListBr Magazine Dec 2009

21

( )

δδ

δ

δ

PRMSP

T

T

T

P

RMS

Ta

aRMS

VVTVT

dtdtVT

VdttvT

V

==

+=

=

+

2

2

0

2

2

1

01

)(1

Portanto, o fator de forma da onda quadrada simples, descrita por VP e δ, é dado por:

δδ1=== ff

V

V

V

Vff

P

P

RMS

P

No caso da onda quadrada completa, descrita por VMIN, VMAX, δMIN e δMAX, temos o valor RMS:

( )

MINMINMAXMAXRMS

MINMINMAXMAX

Tt

tMIN

Tt

tMAX

RMS

Ta

aRMS

VVV

TVT

TVT

dtVdtVT

VdttvT

V

MINMAX

δδ

δδ

δδ

22

22

2

2

21

1

2

2

11

1

)(1

+=

+=

+=

=

++

+

Neste caso, para calcular o fator de forma, é necessário o valor de pico, que será o maior dos valores dentre |VMAX| e |VMIN|. Assim sendo:

MINMINMAXMAX

MINMAX

P

P

RMS

P

VV

VV

ffV

V

V

Vff

δδ

δ

22

,max

+=

==

Repare que, no caso de uma onda quadrada simétrica, isto é, quando VMIN=-VMAX=-VP, e ao mesmo tempo δMAX=δMIN=δ/2, temos que o fator de forma se reduz a:

δδδ

δδ1

22

,max

22

22

=

+=

+=

ff

VV

V

VV

VVff

PP

P

MINMINMAXMAX

MINMAX

Esta definição é importante para chegamos no conceito de valor eficaz. Valor eficaz de um sinal é algo frequentemente confundido com o valor RMS do próprio sinal, pois a definição é muito similar. Valor eficaz é o valor RMS do sinal que se obtém ao se subtrair o nível DC do sinal em questão. Ou seja, se você tem um sinal e quer saber qual é o valor eficaz dele, tudo o que tem a fazer é subtrair o valor DC dele (ou seja, o nível médio) e em seguida calcular o seu valor RMS, e isto se denomina valor eficaz. Trocando em miúdos:

( )+

−=Ta

a

DCef dtVtvT

V 2)(1

Caso o sinal não contenha nenhum nível DC, ou seja, caso o valor médio dele seja zero (como por exemplo uma onda senoidal pura ou triangular pura), o valor eficaz será exatamente igual ao valor RMS. Tomemos como exemplo a onda quadrada simples, que vai de 0 a VP com taxa de trabalho δ. O valor médio dela é:

+

=====Ta

aPDC

T

PDC VVdtVT

dttvT

VVV δδ

0

1)(1

Como já vimos, o valor RMS desta onda quadrada simples é dado por:

δPRMS VV =

Então, no caso particular da onda quadrada simples, há uma relação dire-ta entre nível DC e valor RMS, dada por:

δRMSDC VV =

Essa definição de valor eficaz, no caso da onda quadrada simples, corres-ponde a convertê-la em onda quadrada completa fazendo

VMAX=VP-VDC, VMIN=-VDC, δMAX=δ, δMIN=1-δ,

Page 22: PicListBr Magazine Dec 2009

22

ou seja, corresponde a deslocar o sinal para baixo, subtraindo-o exata-mente de VDC. Aplicando-se a fórmula da página anterior (valor RMS da onda quadrada completa), temos o seguinte valor eficaz da onda quadrada simples:

( ) ( ) ( )

22

2222

22

22

2

2

1

DCDCPP

DCDCDCDCPPef

DCDCPef

MINMINMAXMAXRMS

VVVV

VVVVVVV

VVVV

VVV

+−=

−++−=

−−+−=

+=

δδ

δδδδ

δδ

δδ

Note que, de acordo com dedução feita no começo desta página, VPδ é exatamente o nível DC do sinal (VDC), portanto podemos simplificar a e-quação acima da seguinte forma:

22

222 2

DCPef

DCDCPef

VVV

VVVV

−=

+−=

δ

δ

Porém, já calculamos o valor RMS deste sinal, que consta logo acima. Observando-se o valor RMS, percebe-se que ele aparece na equação acima elevado ao quadrado. Portanto, chegamos à conclusão de que:

22DCRMSefPRMS VVVVV −== δ

Disso concluimos que, quando queremos calcular o valor eficaz, não é necessário seguirmos a definição à risca caso já tenhamos o valor RMS e o nível DC do mesmo, basta executar a operação acima a teremos o valor eficaz. Na verdade chegamos a esta conclusão para a onda quadrada simples, mas provaremos a seguir que a mesma conclusão é válida para qualquer forma de onda. Note que tal resultado também comprova aquilo que já havíamos dito: na ausência de nível DC (na rede elétrica, por exemplo), o valor eficaz pode ser confundido com o valor RMS. A generalização do valor eficaz, conforme a definição dada anteriormen-te, é calculada por:

( )

( )( )

( )

+ ++

+

+

+−=

+−=

−=

Ta

a

Ta

a

DCDCTa

aef

Ta

aDCDC

Ta

aDCef

dtT

Vdttv

T

Vdttv

TV

dtVtvVtvT

dtVtvT

V

22

22

2

)(2

)(1

)(2)(1

)(1

Note que o valor eficaz acima calculado é composto pela raiz quadrada de três termos: o primeiro deles corresponde ao valor RMS ao quadrado, o

Segundo deles corresponde a uma constante multiplicada pelo nível DC, e o terceito é apenas o próprio período. Então, continuando:

22

22 2

DCRMSef

DCDCDC

RMSef

VVV

VVT

VVV

−=

+−=

Ou seja, chegamos exatamente à mesma conclusão que havíamos obtido para a onda quadrada, mas agora válida para qualquer forma de onda. Esta equação pode ser escrita de outra forma muito tradicional:

222DCefRMS VVV +=

Costuma-se dizer, diante da fórmula acima, que valor eficaz e nível DC são sempre perpendiculares entre si, simplesmente porque todos estes valores (RMS, eficaz e DC) descrevem um triângulo retângulo (com o RMS na hipotenusa e os demais nos catetos). Esta é uma fórmula muito prática para se calcular valor eficaz ou valor RMS de um sinal qualquer, já que o cálculo do nível DC é muito simples (valor médio temporal). Com este ferramental em mãos, já podemos resolver um probleminha muito simples: suponha que o tal chuveiro de 5500W a 220V seja ligado a uma rede elétrica cuja tensão eficaz é de 220V mas haja uma bateria de 12VDC em série com a mesma. De acordo com a fórmula acima, a polaridade da bateria não faz diferen-ça, pois a rede elétrica não tem nível DC. Qual é a tensão RMS fornecida ao chuveiro, e qual é a nova potência que ele vai fornecer, admitindo-se que a resistência elétrica dele não vai mu-dar? É bem simples:

VVV

VVV

efef

DCefRMS

3,22012220 22

22

=+=

+=

Ou seja, a alteração em tensão RMS, e portanto em potência produzida pelo chuveiro é ínfima (o increment de potência é de cerca de 0,3%, to-talmente imperceptível) apesar de haver consumo de energia da bateria. Agora que já temos todos os conceitos em mãos, e já os exploramos em onda quadrada e triangular, vamos voltar ao caso senoidal, que é o mais comum e abundante, principalmente porque o temos em ampla disposição em redes de distribuição de energia elétrica. Sempre devemos lembrar que valor eficaz, nível médio, valor RMS, duty-cycle, e fator de potência são apenas características de forma de onda, isto é, entidades puramente matemáticas e que não possuem significado físico. No mundo físico o que existem são apenas valores instantâneos, seja de corrente, tensão, potência, velocidade, aceleração, etc. Conforme comentado anteriormente, a rede elétrica nos fornece uma tensão descrita por:

)sin()2sin()( PPPP tVftVtv φωφπ +=+=

Page 23: PicListBr Magazine Dec 2009

23

O caso puramente resistivo já foi extensamente analisado e calculado, portanto, é hora de partirmos para os casos puramente capacitivo e pura-mente indutivo. O comportamento de um capacitor ideal é completamen-te descrito por:

dt

tdvCti

)()( =

Se conectarmos um capacitor apolar (portanto capacitor eletrolítico co-mum não serve) na rede elétrica (que supostamente é composta por um barramento infinito, e portanto, possui impedância de saída nula), a cor-rente que vai circular por ele será:

( ))cos()(

)sin()(

PP

PP

tCVti

tVdt

dCti

φωω

φω

+=

+=

Podemos calcular a potência no capacitor através da famosa Lei de Watt:

)cos()sin()()()()(

PPPP tCVtV

tptitvtp

φωωφω ++==

Aplicando-se um pouco de trigonometria básica tempos:

)22sin(2

)(2

PP tC

Vtp φωω +=

Claramente o valor médio de p(t) é zero, pois num único período completo há 2 oscilações completas (a frequência da potência instantânea é 2f (ou 2ω em termos angulares). Ou seja, de acordo com a definição de potência média:

00.21.

2.1

)22sin(2

1)(1

2

2

=−=

+==

+ +

ωω

φωω

CV

T

dttCV

Tdttp

TP

P

Ta

a

Ta

aP

P

Isso tem um significado físico. Se adotarmos φP=0, temos que a potência instantânea p(t) é positiva no intervalo de tempo 0<t<T/4, negativa no intervalo de tempo T/4<t<T/2, positiva novamente no intervalo de tempo T/2<t<3T/4, e negativa novamente no intervalo de tempo 3T/4<t<T. Ou seja, em RPS, durante meio período, o capacitor conectado à nossa fonte de alimentação AC senoidal recebe e acumula energia, para em seguida devolver exatamente a mesma quantidade de energia à fonte. No outro meio período ocorre exatamente a mesma coisa, isto é, o capaci-tor recebe e acumula energia, para em seguida devolver novamente a mesma quantidade de energia à fonte.

Portanto o consumo de energia só podia ser zero mesmo. É por este moti-vo que a potência dissipada em qualquer componente passivo não resistivo ideal é zero. No entanto, como já sabemos, o mesmo está submetido a uma tensão eficaz:

2P

RMSef

VVV ==

E por ele passa uma corrente eficaz que pode ser calculada utilizando-se a definição de valor RMS sobre a corrente instantânea já calculada. Isso resulta em:

2CV

II PRMSef

ω==

Disso concluímos que a potência aparente será:

CVSCV

CVVIVS

RMSP

PPRMSRMS

ωω

ω

22

2

2.

2

==

==

Sempre devemos lembrar que a potência aparente não existe, e portanto não pode ser expressa em Watts (W), e sim em Volt-Ampère (VA). Como vimos, num capacitor a potência média é zero, e a potência aparente não é zero. Portanto, o fator de potência (fp) é ZERO. Fica como exercício para o leitor constatar que, num indutor ideal, de indutância L, ligado a essa fonte de tensão AC senoidal, em RPS, a corren-te será dada por:

2L

VII P

RMSef ω==

E portanto a potência aparente será:

L

VS

L

V

L

VVIVS

RMS

PPPRMSRMS

ω

ωω2

2 1.22

.2

=

===

A potência média será também zero, e isto é resultado do mesmo princí-pio de funcio-namento: o indutor ideal, ligado nesta fonte de alimentação AC senoidal, recebe energia durante ¼ do período, devolve a mesma e-

Page 24: PicListBr Magazine Dec 2009

24

nergia à fonte no ¼ de período seguinte, e assim sucessivamente. E como por ele há um valor de tensão RMS e valor de corrente RMS, a potência aparente não é nula, e disso concluímos que o fator de potência (fp) no-vamente é ZERO. Observando-se as equações que descrevem as correntes instantâneas no capacitor e no indutor, é importante observar que, em relação à nossa fonte de tensão, há defasagens fundamentais características de tais com-ponentes. Revendo: Na fonte de alimentação, e consequentemente no componente:

)sin()( PP tVtv φω +=

No indutor temos:

)cos()( PP tL

Vti φω

ω+−=

No capacitor temos:

)cos()( PP tCVti φωω +=

Note que, em relação à forma de onda da tensão, a forma de onda da corrente no indutor é atrasada de ¼ de período, e a forma de onda da corrente no capacitor é adiantada de ¼ de período. As relações entre as amplitudes de tensão e corrente, medidas tanto em valor de pico como em valor RMS, constituem as reatâncias (indutiva ou capacitiva, conforme o componente em questão), por definição. Ou seja: No indutor temos:

LX L ω= (medida em Ω) No capacitor temos:

CX C ω

1= (medida em Ω)

A questão do avanço ou atraso das formas de onda é importante para se definir os sinais (positivo ou negativo) a serem aplicados nas tensões e correntes, seja no domínio do tempo ou no domínio da frequência, ou ainda na forma fasorial (campo complexo). Agora vamos a um exemplo bem genérico. Digamos que temos uma lâm-pada de 48W a 12V e queremos alimentá-la usando uma rede elétrica senoidal de 120V. O que devemos fazer é utilizar um transformador com relação de trans-formação (relação de espiras) de 10:1. Porém, como sabemos, todo trans-formador possui uma indutância série equivalente, que é resultante das indutâncias de dispersão do primário e do secundário. Digamos que este transformador a ser utilizado tem resistência de secun-dário igual a 0,1Ω, reatância do secundário (medida já na frequência da fonte) igual a 0,5Ω, resistência do primário igual a 10Ω e reatância do primário igual a 50Ω. Para resolvermos este problema, basta calcularmos o circuito elétrico equivalente do lado primário, ou seja, “refletirmos” toda a impedância do secundário no primário.

Vamos começar com a carga. A lâmpada possui resistência de 3Ω. Então todo o circuito do secundário corresponde a uma resistência de 3,1Ω em série com uma reatância indutiva de 0,5Ω. Isto, “refletido” no primá-rio, corresponde a um circuito composto por um resistor de 310Ω em série com uma reatância indutiva de 10Ω, que deve ser conectado em série com a resistência de 10Ω e reatância de 50Ω já presente no primário. Ou seja, o circuito elétrico equivalente consiste num resistor de 320Ω com uma reatância indutiva série de 100Ω, conectado à nossa fonte de 120VAC (valor RMS). Fazendo-se os cálculos através da teoria de circuitos elétricos, chegamos à seguinte conclusão: o valor RMS da corrente será 358mA, e esta está atra-sada 17,35O (isto é, 17O21’14.5”) em relação à tensão. Isso significa que, no primário do transformador, temos:

)120sin(2120)( Pttv φπ +=

volts e

)35,17120sin(2358,0)( OPtti −+= φπ

Ampères

A potência aparente S é simples de se calcular, pois é o produto dos valo-res RMS da tensão e da corrente.

96,42358,0.120 === SSIVS RMSRMS

volt-ampère

A potência instantânea p(t) é dada pela Lei de Watt, e em seguida calcu-laremos o valor médio P da mesma.

( ))35,17sin()2240sin(96,42

)35,17cos()2240cos(196,42)(

)35,17sin()120cos(

)35,17cos()120sin()120sin(92,85)(

)35,17120sin()120sin(92,85

)()()()(

OP

OP

OP

OP

P

OPP

t

ttp

t

tttp

tt

tptitvtp

φπ

φπ

φπ

φπφπ

φπφπ

+−

+−=

+−

++=

−++=

=

Os valor médio P da potência é dado por:

00,41)35,17cos(96,42 == PP O

watts

Isso significa que a rede elétrica está entregando 41W para o transforma-dor, portanto, uma potência inferior a 41W será recebida pela lâmpada, o que é muito aquém dos 48W que ela deveria receber. Portanto, essas indutâncias série do trans-formador (indutâncias de dis-persão) são muito altas e estão produzindo queda de tensão no secundá-rio, que não transmitirá 12V para a carga (o resultado será uma tensão menor que os 12V esperados). E finalmente o fator de potência desta carga é:

Page 25: PicListBr Magazine Dec 2009

25

954,0)35,17cos(

96,42)35,17cos(96,42

96,4241

==

===

O

O

fp

S

Pfp

O cálculo acima do fator de potência nos sugere que há alguma relação entre o mesmo e a defasagem entre a corrente e a tensão. E de fato há, conforme vamos demonstrar agora. Como sabemos da teoria de circuitos elétricos lineares, sempre que um circuito é submetido a uma tensão senoidal ele responderá com uma cor-rente também senoidal e uma fase diferente. Isto significa que, dado

)sin()( PP tVtv φω +=,

teremos:

)sin()( φφω Δ++= PP tIti,

onde Δφ>0 significa que o circuito é parcialmente capacitivo (caso Δφ seja exatamente igual a 90O, isto é, π/2 rad, o circuito será puramente capaci-tivo), e Δφ<0 significa que o circuito é parcialmente indutivo (caso Δφ seja exatamente igual a -90O, isto é,- π/2 rad, o circuito será puramente indutivo). A potência instantânea p(t) consumida por este circuito genérico será:

( )

Δ++−

Δ=

Δ+−

Δ++Δ=

Δ++

Δ+−=

Δ++

Δ++=

Δ+++==

)22cos()cos(

)(

)cos()22cos()sin()22sin()cos(

2.

2)(

)sin()22sin()cos()22cos(1

2)(

)sin()cos()cos()sin(

)sin()(

)sin()sin()()()()(

φφωφ

φφωφφωφ

φφωφφω

φφωφφω

φω

φφωφω

PRMSRMS

P

PPP

P

PPP

P

PPPP

PPPP

tIVtp

t

tIVtp

t

tIVtp

t

ttIVtp

tItV

tptitvtp

Note que o segundo termo da potência instantânea em RPS descreve um termo alternante, ou seja, exatamente uma potência que é fornecida do gerador à carga e logo em seguida é devolvida pela carga ao gerador. Note que este fluxo alternante de potência ocorre duas vezes por período, isto é, ocorre com frequência 2f (ou 2ω, em termos angu-lares). Por se tratar de uma potência alter-nante, seu valor médio é zero. Já o primeiro termo da potência instantânea em RPS descreve um termo constante, que corresponde justamente ao valor médio. Aplicando-se a definição de valor médio, dada logo no começo deste tex-to, temos que a potência média P é dada por:

)cos( φΔ= RMSRMS IVP

Finalmente chegamos à expressão geral de fator de potência em circuitos elétricos lineares operando em RPS:

)cos(

)cos(

φ

φ

Δ=

Δ==

fp

IV

IV

S

Pfp

RMSRMS

RMSRMS

Justamente por isto que o fator de potência é mundialmente conhecido como cos(φ), pois é muito comum fazer-se φP=0 e utilizar-se φ ao invés de Δφ para representar a defasagem entre tensão e corrente. Considerações finais: sendo um circuito indutivo ou capacitivo, o fator de potência será sempre positivo, simplesmente porque o cosseno da diferen-ça de fases (defasagem) entre tensão e corrente é um número sempre positivo, já que tal defasagem encontra-se sempre entre

-90O≤Δφ≤90O, ou então

-π/2≤Δφ≤π/2 Em termos gerais, o conceito de fator de potência surgiu de um fato físico relativamente básico: é possível (e muito comum) termos um fluxo de corrente, através de um bipolo submetido a uma determinada tensão, sem que haja fluxo de potência média ao longo do tempo, conforme já demos-trado. Caso o circuito a ser elaborado ou analisado não esteja submetido a RPS, não há nada a fazer a não ser aplicar a definição generalizada de fator de potência, que já foi apresentada mas vale a pena rever:

( ) ( )

++

+

=Ta

a

Ta

a

Ta

a

dttidttv

dttitv

fp22 )()(

)()(

Agora que ficou claro do que se trata o fator de potência, de onde ele surge e as suas consequências, resta-nos estudar como fazemos para me-lhorá-lo. Tudo consiste em estudarmos o circuito elétrico em questão, isto é, resu-mi-lo a um bipolo elétrico submetido a uma tensão v(t) e determinar a corrente i(t) que o atravessa (ou o contrário), ou seja, determinar a sua admi-tância equivalente (ou impedância equivalente). Caso a admitância determinada consista num circuito RL paralelo, acres-centa-se um capacitor também em paralelo que tenha uma reatância exa-tamente igual à reatância da parte indutiva determinada. E caso a admi-tância determinada consista num circuito RC paralelo, acrescenta-se um indutor também em paralelo que tenha uma reatância exatamente igual à reatância da parte capacitiva determinada. É tão simples assim! Porém, esta regra só vale para RPS.

Page 26: PicListBr Magazine Dec 2009

26

Caso o circuito em questão não esteja operando em RPS, ou a carga não seja linear (como é a maioria esmagadora dos circuitos eletrônicos), só nos resta apelar para duas soluções: filtros passivos ou filtros ativos, po-dendo ser lineares ou não lineares. Este é um assunto muito extenso e que poderá ser abordado noutra opor-tunidade. Apenas por questão de precisão conceitual, cabe ainda mencionar que a potência aparente S, no caso de RPS, pode ser tratada por um número complexo. Até o presente momento, a abordagem utilizada corresponde exatamente ao módulo (norma) deste número complexo. Quando se opta pela forma complexa, S adquire a seguinte forma:

jQPS +=

Onde P é a potência média real, S é chamado de potência aparente com-plexa, e Q é a potência imaginária (puramente reativa, medida em VA, e que não produz trabalho nem potência útil alguma). Conforme foi de-monstrado:

)cos( φΔ= RMSRMSIVP

A potência imaginária Q é simplesmente definida (por conveniência ma-temática) por:

)sin( φΔ= RMSRMS IVQ

Ela é assim definida para que possa haver a relação triangular entre as potências, que será dada por:

22 QPS +=

O termo Q é a potência imaginária, mais conhecida como potência reati-va, e é o que deseja ser totalmente compensado ou corrigido, isto é, utili-zando-se capacitores para eliminar reatância indutiva, ou indutores para se eliminar reatâncias capacitivas. Ele expressa um consumo de corrente que não realiza trabalho nem po-tência, isto é, contribui para perdas de transmissão (perdas por efeito Joule nos condutores que conectam a carga à fonte de alimentação). Este termo Q é aquele que dá origem, na conta de energia, ao consumo medido em kVArh, que significa quilo volt-ampère reativo-hora. S é medi-do em volt-ampère (VA), P é medido em watts (W) pois é potência real, e Q é medido em volt-ampère-reativo (VAr). Energeticamente o único termo que interessa é P, mas em termos de efi-ciência todos os termos são importantes, e resta ainda deduzirmos o ter-mo Q (potência reativa) diretamente a partir da potência real P através da fórmula trivial:

)tan( φΔ= PQ

Esta última equação deixa claro que, quando a carga é puramente resisti-va (o que estamos sempre buscando, através dos métodos de correção de fator de potência), isto é, quando Δφ=0, Q=0, e portanto P=|S|. Cabe uma correção final: caso seja utilizada a definição de S como potên-cia aparente complexa

jQPS +=

Temos que retificar a definição de fator de potência, que passa a ser:

S

Pfp =

Mas é claro, isso nada muda a consequência fundamental do RPS, que é podermos calcular o fator de potência por:

)cos( φΔ=fp

No final, espero ter abordado tudo o que se refere a fator de potência e deixado claro que é perfeitamente possível termos tensão e corrente num circuito sem que haja absolutamente nenhuma transferência de potência. Esta abordagem pode ser sida bastante teórica, mas diante do fato de que o fator de potência é um conceito puramente teórico sem significado físi-co, era inevitável que a abordagem fosse essencialmente teórica, mas com alguns exemplos práticos simples.

Page 27: PicListBr Magazine Dec 2009

27

Direto da China

Manteremos essa lista de fornecedores asiáticos constante na revista, pois a cada mês podem surgir fornecedores adicionais. www.sureelectronics.net www.dealextreme.com www.chinavasion.com www.gainexpress.com www.kaidomain.com www.focalprice.com www.dhgate.com www.lightinthebox.com www.mymemory.co.uk (memory) www.play-asia.com (jogos) www.eastbay.com (tênis e roupas) www.fragrancex.com (perfumes) www.finishline.com (tênis) www.secondspin.com www.eastbay.com

Pedro Drummond

A DX havia entregue meu pedido? Ou havia entregado? LED aceso ou acendido? Está em dúvida? Coloque um 555 astável... Tá bom, a regra básica é: ser e estar aceso (forma irregular do verbo), ter e haver acendi-do (forma regular). Assim, dizemos que o LED está aceso, mas que eu havia acendido a lâmpada. Detalhe: “acender” é iluminar, “ascender” é subir. Outros exemplos: “eu estava surpreso com aquele encontro”, ou “eu já tinha aceita-do o emprego”. Quer uma exceção? (sempre tem, né?) “O leitor gosta de ser sur-preendido pelo autor...” Outros especiais: “pago”, “ganho” e “gasto”. Use sempre desta forma. Os especialistas discutem isso, mas o consenso da maioria é a preferência pela forma irregular. Aproveitando que o assunto é forma regular e irregular, lembre que o verbo “chegar” não tem forma irregular. Ou seja, não dá pra você dizer que “tinha chego no trabalho mais ce-do”. Nem se fosse verdade.

Pedro Drummond

Conhece o MARIO? Aquele que... Você mostra um circuito defeituoso ao seu amigo e ele fala: “Ah, deixa que eu reme-deio!” Horrível, né? Também acho. Só que ele está certo. O verbo “remediar” faz parte da lista do MARIO. São os verbos terminados em “iar” que têm conjugação irregular. O MARIO é formado por Mediar, Ansiar, Remediar, Incendiar e Odiar. Não quer falar que você intermedeia a negociação? Tudo bem, diga que você “faz a intermedi-ação” – afinal, se você falar certo, vai ficar com fama de burro...

Page 28: PicListBr Magazine Dec 2009

28

Termômetro Enrolado Por Wagner Lipnharski – Orlando Florida.

Existem diversas maneiras de efetuar medição de temperatura, desde o simples termômetro de mercúrio, que tira o sono da mãe preocupada com a febre do filho, ao termômetro que indica quando o peru está pronto no forno, e passando por uma gama enorme de sensores de todo tipo, bem como os chips eletrônicos que já indicam a temperatura em graus, em milivolts, etc. Tam-bém não podemos esquecer dos componentes eletrônicos passivos, tais como resistores (NTC e PTC), bem como junções de diodos e transisto-res que alteram suas características conforme a temperatura. Praticamente todo sensor tem uma faixa de temperatura ideal para trabalho, outros não se comportam bem fora de outra faixa, e outros praticamente são destruídos se usados além do máximo permitido. Esta é a primeira de uma série de matérias que publicarei a respeito de medição de temperatu-ra. Nas próximas edições mostrarei diferentes técnicas e sensores. Nessa edição veremos uma técnica pouco em-pregada, para não dizer nunca; é a bobina de um oscilador LC, daí o termo “termômetro enro-lado”. Essa técnica emprega um simples oscila-dor eletrônico LC. Parte-se do princípio que um oscilador LC tem a sua frequência determinada principalmente pelo valor do indutor e do capacitor, e basica-

mente a fórmula é = √ O valor “L” de um indutor (medido em Henries) é definido por variáveis: quantidade de espiras, diâmetro das espiras, espaçamento entre elas, tipo de condutor, diâmetro do condutor, tipo de núcleo (ar, metal, ferrite, outro), etc. Praticamente todas essas variáveis influenciam no valor “L” do indutor. Uma delas que é o foco dessa matéria é a temperatura. Minúsculas variações de temperatura irão variar o diâmetro do indutor e com ele a frequência do oscilador. No circuito da Figura 1, vemos um simples osci-lador LC utilizando um transistor BF494, o tan-que LC como feedback para a base do transis-tor, e um simples gate HCT para recortar o sinal de forma a ser possível efetuar a contagem de pulsos por segundo num microcontrolador.

A maioria dos transistores NPN, incluindo 2N2222, BC548, BC107, trabalha bem nesse tipo de oscilador, porém poucos como o BF494 con-seguem trabalhar com tensões de alimentação abaixo de 6V. O diagrama da Figura 1 trabalha com alimentação a partir de 3V, requerendo pequenos ajustes nos resistores.

Figura 1

O calculo de frequência do circuito acima (que utiliza só um capacitor), resulta em aproxima-damente 833 kHz: = 1.62 √

Já no circuito abaixo da Figura 2, utilizando ambos os capacitores, a fórmula é mais precisa, e resulta em aproximadamente 666 kHz: = 12 ( )

Onde “Cx” é o resultado do cálculo de capacito-res C1 e C2 em série, cuja fórmula é: = 111 + 12

Até o momento fizemos um oscilador LC funcio-nar, mas como isso pode ser considerado um termômetro? A bobina de fio é feita com um condutor elétri-co metálico, por exemplo, cobre, e metal ex-pande ou contrai sob diferentes temperaturas. Ao dilatar ou contrair, a bobina muda suas ca-racterísticas físicas e altera a sua indutância. Essa mudança afetará a frequência do oscilador e o microcontrolador detectará tal mudança. Medições simples feitas na bancada, utilizando um indutor circular com núcleo de ar, permitiu verificar que se podem obter mudanças de di-versos Hertz na frequência do oscilador, com uma leve mudança de temperatura do ar em torno da bobina.

O Cálculo de um indutor com núcleo de ar, cujo resultado é em microHenries, é: = 0.0393 ∗ ( )6 + 9 + 10

Onde:

N = Número de espiras,

R = Raio médio da bobina,

C = Comprimento da bobina,

E = espessura da bobina. Numa bobina de camada única, a espessura (E) é o diâmetro do fio utilizado. Também é bem possível que se a bobina for montada apertada, o comprimento (C) da bobina seja o número de espiras multiplicado pelo diâmetro do fio. Todos os valores em milímetros. Por exemplo, uma bobina com 42 espiras aper-tadas de fio AWG 24 (0.54 mm de diâmetro), numa única camada, diâmetro interno de 52 mm, comprimento resultante de 23 mm, espes-sura de 0.54 mm, resulta em torno de 102 µH. Não divulgarei os resultados das medições, pois essas variaram de acordo com o formato da bobina, quantidade de espiras, diâmetro do fio, etc, e não consegui chegar num racional lógico a ponto de produzir uma fórmula adequada. Mas deixamos a idéia de que isso é possível, e poderá ser usado. A vantagem desse tipo de sensor é a ampla faixa de temperatura, desde sub-freezing até acima de 300°C, onde simples NTCs e sensores semi-condutores não sobreviveriam. Com tempo hábil, pretendo repetir as experiên-cias de bancada, documentar e divulgar.

Pedro Dummond Ha, meus bons tempos... Para não se confundir mais sobre o “há” ou o “a”, basta lembrar que o “há” é do verbo “ha-ver”, então estamos falando do passado. Assim, “não estudo eletrônica há muito tem-po”, e não “a muito tempo”. Essa é fácil, né? Mas toda hora a gente vê...

Page 29: PicListBr Magazine Dec 2009

29

Sistemas Numéricos Por Wagner Lipnharski – Orlando Florida.

Nesse artigo estarei comentando sobre sistemas numéricos: Decimal, Binário e Hexadecimal. Existe uma grande chance que você já conheça tais sistemas, e se assim for, esse artigo não trará novidade nenhuma a você. Eu tenho um amigo que é neurótico em manter tudo sob controle, os centavos no banco, ele confere o troco das moedinhas, sabe quantos clips de papel tem na gaveta, e pasme, ele tem um caderninho onde controla quantos enlatados tem nos armários da cozinha. Mas assim como isso pode ser neurótico para alguns, para outros é necessidade básica. Siste-mas de contabilidade em empresas, tanto quan-to sistemas de controle de estoque em indús-trias, distribuidoras e lojas, é fundamental e sem eles nada funcionaria direito. Até o padeiro da esquina precisa ter um sistema numérico que o organize e diga quantos pães ele irá fazer com aqueles sacos de farinha empi-lhados. Dará para o final de semana? Faltará pão na padaria? Não vou entrar na história da numerologia, por-que isso não ajudará muito o objetivo dessa matéria, mas é bom saber que ao longo da evo-lução humana usamos diversas maneiras de representar “quantidade”, seja para contabili-zar as cabras, os cavalos, os filhos, a população, ou as riquezas. Portanto estarei salpicando interessante informação histórica. Passamos pela numeração roma-na, que até funcionava, mas tinha limite físico de quanti-dade e não podia ser estendi-da. Por falar em algarismos romanos, pouca gente perce-be que os relógios que usam tais números têm a posição de 4 horas representada por IIII ao invés de IV. Bem, todos conhecem o sistema decimal, ao menos todos deveriam saber, afinal de contas ele nos foi ensinado na escola básica.

Eu sempre tive curiosidade em saber como as outras pessoas mentalmente “vêem” a sequên-cia numérica decimal que usamos. Se você tivesse que mentalizar a tripa de núme-ros de 1 a 1000, de uma vez só, como veria? Eu particularmente vejo os números de 1 a 10 ali-nhados numa fileira horizontal à minha frente se afastando, de 11 a 20 formam uma rampa, de 21 a 30 uma leve rampa à direita, e não sei porque o espaços entre números 26 e 30 são maiores que entre 21 a 25. O número 30 vira à esquerda e continua se afastando de mim, mas isso vai só até 32, vira à direita novamente até 40, quando faz novamente uma escada inclinada até 50, assim continua até 100. Interessante-mente de 100 a 490 é uma reta à direita, leve-mente inclinada, de 490 a 500 é quase uma escada vertical, mas de 501 a 1000 novamente uma reta à direita, levemente inclinada. De Mil em diante repete como do início, a partir de 1. Eu não sei se essa forma de imaginar foi alguma maneira que meu cérebro teve que desenvolver para facilitar cálculos mentais. Creio que os multiplicadores decimais estão todos ali de forma geométrica e tridimensional. Mas acredi-te, eu sou normal. No sistema decimal, obviamente temos 10 dígi-tos, e não é de 1 a 10, é de 0 a 9. O conceito de zero demorou muito tempo para ser adotado e nunca passou pela cabeça dos Egípcios ou Gregos, porém parte integrante da numeração Maia, pasme, usava base 20 e era composta por traços e pontos. Um ponto valia 1 enquanto um traço valia 5. Abaixo a representação do deci-mal 13 em numeração Maia. Tres pontos = 1x3, mais 2 traços (2x5) = 13. O sistema aceitava um máximo de 3 traços e 4 pontos, o que contava de zero a 19 decimal.

Como curiosidade, note que o sistema multipli-cador com base 20, é 1, 20, 400, 8000, etc, e permite fazer as quatro operações facilmente. Ao final dessa matéria estarão tabelas dos sis-temas de numeração Maia, Egípcio e Babilônio. No nosso sistema DECIMAL, um número pode ser composto de 1, 2, 3 ou infinitos dígitos. Como sabemos, cada dígito à esquerda tem o seu valor multiplicado por 10, sobre o multiplicador do seu vizinho à direita. Só para exemplificar, 937

é composto pelo número 7, mais 30, mais 900, e tal multiplicador x10 do 3 e x100 do 9 são meramente posicionais. Para preparar a nossa cabeça anteci-padamente para entender o que vem pela frente, vamos imaginar que o sistema decimal não existe, e tudo o que inventaram até aqui foi um sis-tema de quinquinário (se é que tal palavra existe), onde só temos os

dígitos de 1 a 5, e nem o zero existe.

Então, [RRR] seria escrito 3, [RRRRR] = 5, po-rém [RRRRRRR] não seria 7, porque 7 não exis-te, seria dois além do 5 então seria 12. Heim? Sim, veja, no decimal nós multiplicamos cada

posição dos dígitos à esquerda por x10, x100, x1000, mas nesse quinquinário multiplicaríamos por 5, (x5 x25 x125 x625...) então 12 significa o 2 + 1x5 = 7 (em decimal). Nesse sistema malu-co, 23 seria 13 em decimal (3 + 2x5). E quanto seria 3142? 2 + 4x5 + 1x25 + 3x125 = 422 em decimal. Entender isso é fundamental para entender o resto dessa matéria. O nosso cérebro tem a capacidade de visão volumétrica e de quantidade; ao olhar para o número “5”, conseguimos ter uma idéia do que isso possa significar: cinco pães, cinco cabras, cinco dinheiros. Essa capacidade nos parece simples, mas é extremamente complicada, exi-ge uma enorme capacidade de processamento mental associada à capacidade de imaginar e criar. Alguns animais conseguem aprender de forma cognitiva que o número “5” possa estar dizendo que exista comida atrás da quinta porta a contar a partir da esquerda, mas não será por lógica, será por associação da figura do “5” com a posição física da porta. Se, após 3 anos de treinamento com o tal símio, adicionarmos uma sexta porta, ele jamais entenderá o que signifi-ca o número “6”, poderá novamente aprender, mas não por lógica. Portanto, um circuito eletrônico que é muito mais bobinho que o cérebro de um animal, ja-mais conseguiria entender sistemas numéricos; mas entenderia o mais básico de todos.

O Sistema Binário. Ligado ou Desligado, Tensão ou Sem Tensão, Um ou Zero, é tudo o que um chip consegue enten-der. Lembra do “Quinquinário” da coluna ao lado? e que só usa dígitos de 1 a 5? E que multiplica o dígito à esquerda por x5, x25, x125, etc? O sistema binário é igual, porém ele só tem dois dígitos, Zero e Um, e pronto. Portanto, da mesma forma como o Decimal e o Quinquinário, a contar da direita para a esquer-da, a posição do dígito é multiplicada por 1, x2, x4, x8, x16, x32, x64... e assim infinitamente. Uma forma simples de representar o binário: 2

onde “n” é a posição do dígito Portanto, para ver o quanto vale em decimal um número binário, basta multiplicar o valor de cada dígito pelo valor decimal daquela posição. Então “0110”, a começar da direita para a es-querda seria: 0x1 + 1x2 + 1x4 + 0x8 = 6 (decimal), ou, bastaria usar a fórmula para cada dígito ‘1’, então teríamos ( + ) que resulta em 2+4=6. Lem-brar que o primeiro dígito à direita é , ou 1. Para dar o nome certo aos bois, vamos chamar então esse dígito 0 ou 1, de BIT, pois ele é a menor parte do sistema numérico binário.

Page 30: PicListBr Magazine Dec 2009

30

Portanto, o número binário “0110” é composto por 4 bits. Vamos também denominar posicionamento. O bit mais à direita, o que tem o menor valor, chamaremos de “bit de mais baixa ordem”, ou LSB (Inglês para Least Significant Bit). Por ana-logia, o bit mais da esquerda, o que tem o mai-or valor, chamaremos de “bit de mais alta or-dem”, ou MSB (Inglês para Most Significant Bit). Lembre-se desses acrônimos (LSB e MSB), você muito os usará. Portanto, o binário “0100111010” vale quanto? Da direita para a esquerda:

0 x 1 1 x 2 0 x 4 1 x 8 1 x 16 1 x 32 0 x 64 0 x 128 1 x 256 0 x 512 ______ 314 em decimal

Assim como o Decimal que limita o número de símbolos em 10, o Maia que limita em 20, e o binário que limita em 2, todas as formas de numeração exigem um limite físico multiplica-dor, do contrário teríamos que ter um símbolo diferente para cada número possível. Então, para poder unir a mínima capacidade eletrônica e de computadores com a humana, criamos uma forma de humanos poderem ler os binários de forma mais coerente, e limitamos o número de símbolos binários em 4, criamos um pacotinho de BITS e o chamamos de NIBBLE, do Inglês “mordida”. Mordemos 4 bits de cada vez de uma tripa dos binários e temos diversos Nib-bles. Convertendo o binário “0100111010” aci-ma em Nibbles, alinhados à direita, ficaria:

01 0011 1010 Posição Nibble: 2 1 0 Como o máximo valor possível de 4 bits (Nibble) é 15 decimal, quando todos os bits são 1, mas isso representa 16 combinações quando associ-ando o zero, então o Nibble 0, por ser o da di-reita, tem o seu valor unitário, já o Nibble 1, por estar à esquerda do 0, vale o seu valor ve-zes 16, e por último o Nibble 2, vale o seu valor vezes 256 (16x16). Desta maneira, fica mais fácil para os humanos converterem o binário em decimal. Nibble 0 vale decimal (8+2) 10 x1 = 10, Nibble 1 vale 3 (2+1) x 16 = 48, Nibble 2 vale 1 x 256 = 256, portanto os 3 Nibbles juntos valem 10 + 48 + 256 = 314 (decimal). Agora, se quisermos escrever os valores dos Nibbles de outra maneira que não binário, terí-amos que escrever em Decimal, e então ficaria:

1 3 10

Mas ao juntarmos, ficaria 1310, aquele “10” misturou e confunde, portanto temos que criar

novos símbolos para os valores entre 10 e 15 dos possíveis de cada Nibble. Poderíamos escolher qualquer coisa, mas para não inventar novos símbolos no nosso atual alfa-numérico, então escolhemos letras de A a F. Com isso, cada uma das 16 possíveis combina-ções de cada Nibble (4 bits) passam a ter um único símbolo como abaixo, e criamos um novo sistema numérico que daremos o nome de He-xaDecimal, pois ele usa o Decimal mais 6 (hexa) diferentes símbolos, então Hexa-Decimal.

Binário

Decimal HexaDecimal

0000 0 00001 1 10010 2 20011 3 30100 4 40101 5 50110 6 60111 7 71000 8 81001 9 91010 10 A1011 11 B1100 12 C1101 13 D1110 14 E1111 15 F

Desta maneira, os 3 Nibbles que representam o valor 314 em decimal, agora podem ser escritos em Hexa-Decimal:

13A Para não confundir e identificar de acordo, podemos usar a letra “h” (minúscula) após o número Hexa-Decimal, ou também podemos usar “0x” antes do número. Ambas as maneiras são corretas:

13Ah ou 0x13A Agora, ao encontrar 13Ah e querendo converter para decimal, basta multiplicar cada dígito pelo valor da sua posição. 13A, o “A” está à direita, portanto tem o seu valor unitário 10. Já o “3” está na segunda posição e essa multiplica por 16, portanto 48, no entanto o “1” multiplica por (16x16) 256, portanto 256. Somando tudo, resulta em 314. Então já somos “mestres” em sistema binário e hexa-decimal. Nesse sistema é possível fazer as quatro opera-ções de forma simples, exatamente como faze-mos no decimal.

ADICIONANDO BINÁRIOS Vamos a uma adição binária. 1 + 0 = 1 1 + 1 = 10 (um mais um igual a dois) 10 + 1 = 11 (dois mais um igual a três) 11 + 1 = 1000 (três mais um igual a quatro) Portanto; 1 0 1 1 + (Bh) 0 0 0 1 (1h) ---------- 1 0 + 1 0 1 ---------- 1 1 0 0 (Ch) O conceito do “vai um” continua sendo usado aqui. Ao somar os dois “1” à direita em cima, na cor roxa, o resultado foi “10” (dois), mas só um dígito pode estar no resultado, então fica o “0” e o “1” em itálico vermelho, é o “vai um”, que soma com o “1” em azul e faz o “10” em verde. É o mesmo conceito de somar decimal 8 + 4, o resultado é 12, porém só o 2 vai para o resulta-do e o 1 “vai” somar com o dígito à esquerda. Complicado? Então vamos fazer a conta bit a bit e na horizontal.

1011 +

0001 Rodando para a esquerda, LSB em cima.

1 + 1 1 + 0 0 + 0 1 + 0

E agora somando bit a bit Por convenção vamos chamar o “vai um” de “Carry”, e o carry vai somar sempre, sendo zero ou um, vamos chamar de Carry0 ou Carry1. Ao iniciar a soma o Carry é Carry0.

1 + 1 + Carry0 = 0, sobra Carry1 1 + 0 + Carry1 = 0, sobra Carry1 0 + 0 + Carry1 = 1, sobra Carry0 1 + 0 + Carry0 = 1, sobra Carry0

Resultado = 1 1 0 0

Para fixar, vamos fazer o mesmo em decimal e somar 189 + 54

9 + 4 + Carry0 = 3, sobra Carry1 8 + 5 + Carry1 = 4, sobra Carry1 1 + 0 + Carry1 = 2, sobra Carry0

Resultado = 243

SUBTRAINDO BINÁRIOS Subtração funciona da mesma maneira, mas usa-se um macete de somar o “One’s Comple-ment” (complemento de um). Para subtrair 6h de Bh (1011 – 0110) então primeiro se faz o

Page 31: PicListBr Magazine Dec 2009

31

complemento de 6h. Invertem-se todos os bits (zero vira um e um vira zero) e soma-se um.

0110 1001 + 1 = 1010 (Então o One’s Complement de 0110 é 1010) Agora soma-se o Bh com o resultado do One’s Complement e despreza-se o ultimo carry bit.

1011 + 1010

1 + 0 + Carry0 = 1, sobra Carry0 1 + 1 + Carry0 = 0, sobra Carry1 0 + 0 + Carry1 = 1, sobra Carry0 1 + 1 + Carry0 = 0, sobra Carry1

Despresa-se o ultimo Carry e o resultado de 1011- 0110 = 0101 (decimal 11 – 6 = 5) MULTIPLICANDO BINÁRIOS O que pode parecer difícil na verdade é muito simples. A posição do lado esquerdo do BIT tem o valor dobrado dele, não? Lembre-se, 1, 2, 4, 8, 16, 32, 64 ... Veja só, o número 6, bits 0110, vale o dobro do número 3, bits 0011. Note a similaridade entre eles, 0110 e 0011. O que ocorre aqui é que o número 6 tem os dois bits UM uma posição à esquerda dos bits do número 3. Isso significa que a mesma combinação de bits, deslocada uma posição à esquerda, dobra o valor. O inverso também é verdade; ao deslocar os bits uma posição à direita, divide-se o valor por dois. Os bits 0100101100 quando deslocados um bit para a direita, 0010010110, (o zero do final sumiu) têm o seu valor dividido por 2. Se deslo-carmos novamente o valor original será dividido por 4; novamente? Por 8. Portanto, para multiplicar 01001010 por 8, bas-ta deslocar seus bits 3 vezes para a esquerda, ou, inserir 3 zeros ao final: 01001010 x 8 = 010010100 <- 1 bit deslocado (x2) 0100101000 <- 1 bit deslocado (x4) 01001010000 <- 1 bit deslocado (x8) O valor original 0100 1010 (4Ah) quando multi-picado por 8 (3 shifts à esquerda), resultou em 010 0101 0000 (250h). 4Ah = decimal 74, x8 = 250h, decimal 592; confere. Mas nem todas as multiplicações são por 2, 4, 8, etc. Então usa-se fazer exatamente como se faz em decimal. Porém ainda existem possibilidades de efetuar as multiplicações de forma simplificada quando um dos números for constante. Por exemplo, multiplicar um número por 9. Basta guardar o valor original, deslocar para esquerda 3 vezes (multiplicar por 8) e somar o original, o que resultará em x9. Mas fazendo da forma tradicional: Decimal 6 x 5 = 30

Hexa 6h x 5h = 1Eh 0 1 1 0 x 0 1 0 1 Teremos: N1 = 0110 N2 = 0101 Resultado = 0000 O macete aqui é somar e shiftar para a esquer-da, tantos bits existentes em N1. Inicie olhando o bit mais a direita de N1, no caso é zero, então não soma-se N2 ao Resulta-do, mas shifta-se N2 um bit à esquerda Teremos: N1 = 0110 N2 = 0000 1010 <- shiftou um Resultado = 0000 0000 Novamente, olhe agora o segundo bit da direita de N1, no caso é 1, então soma-se N2 ao Resul-tado, e shifta-se N2 mais um bit à esquerda Teremos: N1 = 0110 Resultado = 0000 0000 + N2 0000 1010 = 0000 1010 N2 = 0001 0100 <- shiftou dois Novamente, olhe agora o terceiro bit da direita de N1, no caso é 1, então soma-se N2 ao Resul-tado, e shifta-se N2 mais um bit à esquerda Teremos: N1 = 0110 Resultado = 0000 1010 + N2 0001 0100 = 0001 1110 N2 = 0010 1000 <- shiftou três Novamente, olhe agora o quarto bit da direita de N1, no caso é 0, então não soma-se N2 ao Resultado, e shifta-se N2 mais um bit à esquer-da Teremos: N1 = 0110 Resultado = 0001 1110 N2 = 0101 0000 <- shiftou quatro Portanto, multiplicando 6h x 5h – 1Eh Em programas, conta-se quantos bits existem em N1 da direita para a esquerda, até o último bit “1” mais à esquerda, e esse será o número de operações como feitas acima, porque quando N1 só tiver zeros à esquerda não fará mais dife-rença no resultado, não haverá mais nenhuma soma de N2 a esse. Divisão em Binário é muito similar à multiplica-ção, na verdade é totalmente inverso.

a) Buscam-se quantos bits em N1 até que não existam mais bits 1 à esquerda;

vamos chamar essa quantidade de “x”.

b) Então se desloca N2 “x” bits à esquer-da. Com isso estamos alinhando N2 com N1.

c) Agora se verifica se N2 é menor que N1; se sim: marca-se um bit 1 no resultado (que no início está zerado), exatamente na posição “x”. Faz-se a subtração N1-N2 e o resulta-do da subtração volta para N1.

d) Decrementa-se “x” e) Shifta-se N2 um bit para a direita f) Operação concluída quando “x” for

zero. Esse processo é rápido e consome somente “x” voltas na rotina [a-e]. Agora já sabemos o que é um sistema Binário e também o Hexa-Decimal. Também sabemos fazer as quatro operações com binários.

Sistema Numérico Maia

Page 32: PicListBr Magazine Dec 2009

32

Atmel AVR e Assembly Parte 1 Por Wagner Lipnharski – Orlando Florida. Já era tempo para iniciarmos uma seção assim, onde poderemos descrever chips de di-versos fabricantes e modo de programa-ção. Tenho certeza que teremos colabo-radores para as próxi-mas edições, descreven-do chips de outros fabri-cantes. Não quero aqui entrar no mérito histórico nem caracterizar evolução ou penetração no mercado, muito menos iniciar uma polêmica sobre linguagens de programação, afinal de contas todo mundo já sabe qual é a melhor mesmo. Esse artigo que terá diversas partes, descreverá o “core” do chip AVR da Atmel, e que poderia ser qualquer um, desde o antigo At90S2313 até os mais modernos e carregados de memória e dispositivos internos, como um AtMega128. A intenção aqui é permitir aos iniciantes na área entender um pouco melhor tais chips e iniciar nessa importante linguagem que é o Assembly, temido por muitos, odiado por outros, amado por tantos. Nunca uma linguagem de programa-ção gerou tanta polaridade entre programado-res, muito mais que time de futebol ou partido político. Que me perdoem os que já têm conhecimento, mas tentarei explicar de forma bem básica e simples, para que qualquer um entenda e tenha a chance de colocar mãos à obra e conseguir programar um AVR em Assembly !!! Iniciarei descrevendo um pouco da parte de hardware, de forma figurativa, para que o estu-dante possa visualizar de que forma tudo estará trabalhando. Também usarei termos em Inglês, que é o idio-ma original e que faz muito mais sentido, e é o que se encontra em manuais técni-cos. Dentro do chip à direita (uma rara fotografia do core de um AtMega88) tem um cara chamado Mr. Core, é esse senhor quem dá vida ao chip, ele é o manda-chuva. Em volta dele existem alguns ajudantes, auxiliares, aten-dentes, mas é o Mr.Core quem faz e acontece. O Core é simplesmente a pastilha eletrônica que é praticamente igual em todos os chips AVR, é o miolo pensante, o centro nervoso. Os ajudantes e auxi-liares são dispositivos adicio-nais que um chip pode ter e outro não, mais memória, uma

porta serial a mais, mais pinos de entrada e saída, etc. Nós vamos pensar sempre no Mr.Core como um cara que recebe nossas ordens e as executa de forma precisa e muitíssimo rápido. Todas as nossas ordens a ele têm uma identifi-cação numérica, que por acaso é seqüencial. Sem importar muito quantas sejam, elas apare-

cem numa telinha para o Mr.Core, uma de cada vez, junto com tal identificação. Da mesma forma como num Rolodex, o Mr.Core tem a capacidade de girar um

botão e ver ordens que já passaram ou avan-çar e ver ordens lá na frente; ele as busca pela identificação. Eu posso mandar o Mr.Core “Pegar o Lápis”, e em seguida dizer “Es-creva”, mas se ele voltar para olhar antes do “Pegar o Lápis”, é bem provável que encontrará uma ordem “Pegue uma Folha de Papel”. Estará tudo lá, um tripão de ordens. Essa janelinha onde aparece uma ordem de cada vez, chama-remos de “Program Counter”, que poderemos traduzir para “Conta-dor de Ordens”. Esse “coun-ter” é exatamente o iden-tificador das ordens, e é ele que diminui ou avança a contagem conforme o Mr.Core gira aquele botão de avan-ço ou retrocesso. Vamos também passar a chamar as “ordens” de “instructions” (instruções). Na mesa do Mr.Core, existem caixinhas, e em cada uma delas cabe um byte, que é um único número que pode ter o valor de zero até 255. Existem muitas caixinhas, mas inicialmente vamos identificar somente 32 delas. Para facili-tar chamaremos cada caixinha de Registrador (registro) e para ficar mais fácil ainda, escreve-remos em cada caixinha a letra R e o número dela, portanto teremos caixinhas R00 até R31.

Por uma questão de facilidade na mesa do Mr.Core, as caixinhas de R16 até R31 esta-rão muito próxi-mas à mão direi-ta dele, que é a mão usada para calcular, pegar coisas, escre-ver, etc, afinal de contas o Mr.Core é des-tro. Então colocaremos as caixinhas de R00 até R15 do lado esquerdo do Mr.Core,

mas ele não consegue facilmente acessar essas caixinhas com a mão direita, precisa ser com a esquerda o que irá requerer dois movimentos na maioria das vezes. Existem casos que com es-forço ele as alcança com a mão direita mesmo. Como o Mr.Core demonstrou necessidade de ter muito mais caixinhas, então instalamos um ar-mário à sua frente, e lá ele tem centenas delas, que identificaremos mais tarde. Algumas da-quelas caixinhas do armário são as usadas pela secretária dele, bilhetinhos, recados de telefo-ne, a caixa de entrada, saída, até o telefone dele está naquele armário, que o Mr.Core con-segue alcançar com a mão esquerda. Só para sacanear um pouco. Na verdade queremos dei-xar a mão direita do Mr.Core o mais livre possí-vel, afinal de contas ele tem que trabalhar rá-

pido. Como todos nós, todas as manhãs quando o Mr.Core entra no escritório dele e assume a posição de traba-

lho, ele tem que primeiro ligar a luz da sala, ligar a cafe-

teira, apontar o lápis, preparar tudo em volta e ter certeza de que quando alguma coisa apa-recer na telinha ele esteja

apto a desempenhar o trabalho a ser feito, e executar as “instructi-

ons” da forma usual.

Essa tarefa de preparação poderá ter o nome de “setup” ou “preset” (arrumar) a

sala. Esse Preset é na verdade acertar as caixinhas, limpá-las do dia anterior, ter certeza de que a secretária dele não vai encontrar lixo pela fren-te, definir até que horas ele vai trabalhar, defi-nir quem pode vir falar com ele, quem terá o direito de interromper o trabalho normal dele, se o cachorro estará solto para alertar da pre-sença de estranhos ou estará dormindo e que se lasque a segurança, etc e tal. Uma vez tudo em ordem e verificado, ele come-ça a olhar na telinha e obedecer instructions. O Mr.Core tem uma calculadora bonita na mão direita. Ela faz no máximo 4 operações, mas hoje ela só faz duas, soma e subtrai, e pior, ela só faz a operação de um Byte com outro. Lem-bre que um Byte é o conteúdo de uma caixinha, e que pode ter qualquer valor entre zero e 255. Coitado do Mr.Core, o resultado da conta da calculadora nunca poderá ser menor que zero ou maior que 255. Mas ele tem diversas caixi-nhas e pode arrumá-las lado a lado e entender números com mais dígitos. Se arrumar 4 caixi-nhas lado a lado, poderá ver 4 Bytes ali dentro, como por exemplo, [005][032][241][097]. Esse é um número enorme. Quer ver? Como cada Byte pode assumir valores entre 00 e 255, então são 256 valores no total, pois o zero conta como um deles. Então aquela caixinha mais à direita será o valor dela mesma, mas a primeira à esquerda valerá o conteúdo vezes 256, a próxima à esquerda valerá o conteúdo x 256 x 256 e a mais a esquerda valerá o conteúdo

Page 33: PicListBr Magazine Dec 2009

33

x 256 x 256 x 256. Complicado? Não. Isso é igual ao sistema decimal que tu aprendeste na escola, unitário, x10, x100, x1000. Aqui no caso, os valores seriam “unitário”, x 256, x 65536, e x 16777216. Esse sistema que conta cada caixinha como valendo 256 chamamos de sistema de octetos; vamos dar outro nome boni-to; sistema Binário, descrito na matéria anterior dessa edição. O Mr.Core trabalha numa certa velocidade, ele lê e executa uma Instrução com base numa batida lá fora, dada por um maluco batendo numa lata de lixo, numa cadência rítmica. Quanto mais rápido o maluco bate, mais rápido o Mr.Core trabalha. Esse maluco é na verdade um cristal oscilador que é ligado do lado de fora do chip e dá a cadência do trabalho, que cha-maremos CLOCK. A maioria dos Chips AVR da Atmel aceitam tra-balhar num máximo de 20MHz, ou, vinte milhões de batidas por segundo, e o coitado do Mr.Core irá tentar executar Vinte Milhões de Instruções por segundo, se usar só a mão direita !!! Quan-do precisar usar a mão esquerda, “pode” acon-tecer que ele precise fazer dois movimentos ou mais entre as mãos e caixinhas, nesse caso, algumas instruções podem precisar mais de uma batida lá na lata de lixo, mais de um pulso de CLOCK. À direita um pedaci-nho minúsculo, me-nos de 2%, da ima-gem toda do Core do AtMega88 ampliado centenas de vê-zes. É impressionante imaginar que toda essa tecnologia, mi-croscópica dessa maneira, e que fun-ciona!!!, custam 3 ou 4 dólares ali na loja da esquina. Essa parte ampliada é um pedacinho do controle e da memó-ria Flash. Vamos voltar então a ver as atividades do Mr. Core no trabalho do dia-a-dia. Já sabemos então que ao alcance da mão direi-ta, o Mr. Core tem as caixinhas (registers) iden-tificadas como R16 até R31. Ele tem alcance direto a tais registradores, ele consegue ler ou alterar diretamente o conteúdo desses registra-dores. Já os registradores R00 a R15, ele preci-sa acessá-los com a mão esquerda, o que o im-pede de lê-los ou alterá-los imediatamente. Por exemplo, para ler ou alterar o conteúdo do registrador R02, ele precisa copiar o conteúdo de R02 para um dos registradores da mão direi-ta, por exemplo, R18, e então usá-lo. Mas al-gumas coisas ele consegue fazer diretamente com a mão esquerda. Explicaremos adiante. Essa conversa toda é só para chamar a atenção e manter em mente que registradores R00 a R15 nem sempre podemos acessar diretamente.

A calculadora que também está próxima à mão direita do Mr. Core permite, por exemplo, que ele possa somar o conteúdo do registrador R19 (que é um byte – lembra? 8 bits, 2 nibbles...) com o conteúdo do registrador R29, e o resulta-do ser colocado no próprio R19. O uso dessa calculadora permite não só adição, mas também subtração, e é importante lembrar que o regis-trador de destino do resultado é sempre o pri-meiro. Somando R29+R18 colocará o resultado em R29, mas somando R18+R29 o resultado vai para R18. O Mr. Core também tem as portas e janelas muito próximas da mão direita. Essas portas e janelas dão acesso ao mundo externo, ou às prateleiras e armários à volta dele. Ele pode, por exemplo, copiar o conteúdo de R22 para uma porta de saída e seus pinos físicos do chip, de imediato, e esses 8 bits estarão disponíveis para você ligar LEDs, por exemplo. Ele também pode de imediato ler 8 bits de uma janela ou prateleira e colocar em R22. Mas ele só pode fazer esses movimentos com portas e janelas com registradores R16 a R31. Estas portas e janelas, a partir de agora chama-remos de I/O (input/Output), só podem ser acessadas com a mão direita; Agora chamare-mos os R16 a R31 de High Registers (registrado-

res da parte alta), e R00 a R15 de Low-Registers (parte baixa); pois bem, querendo mover um byte de R04 para um I/O, ele terá que primeiro copiar R04 para qualquer um High-Register e então mover desse registrador para a porta I/O. O inverso também é verdadeiro. Byte de I/O não pode ser movido diretamente para um Low-Register, terá primeiro que ser gravado num High-Register e então copiado para o Low-Register de destino, se assim quiser. Mas quem são esses I/Os (janelas e portas)? São todas as outras caixinhas e prateleiras no chip, como por exemplo, os pinos externos do chip, os outros registradores de controle em geral, os counters (contadores), os timers (temporizado-res também contadores), os registradores de controle de comunicação, até mesmo o regis-

trador que conterá o Byte a ser transmitido ou recebido pelo controlador de comunicação, e tantos outros. É uma lista razoavelmente gran-de, e cada um tem uma função específica. Um em especial, por exemplo, controla se o Core continuará trabalhando a todo vapor, ou se dá uma relaxada sem desligar energia, consumindo bem menos até que se comande o contrário. Em determinadas situações o Core não precisa ficar tão agitado, eventualmente por algum tempo ele não precisa fazer nada, mas não queremos desligar a energia, queremos mantê-lo prontinho para retomar atividades. Essas situações chamaram de “Sleep”, ou “Low Power Mode”, são ativadas mudando alguns bits num registrador especial de I/O. Existe também internamente no Core uma me-mória mais ampla, é um armário comprido num corredor, chamada de SRAM (Static Random Access Memory) – Memória de Acesso Não Se-quencial (randômica). Essa memória é compos-ta por uma pancada de caixinhas, iguais aos registers, porém em muito maior quantidade, que pode variar de modelo para modelo de chip, 128, 512, 2048 Bytes ou mais. A memória SRAM usa tecnologia diferente dos registradores, está fisicamente em local dife-rente dentro do chip, e não se deve pensar nela como sendo registers. É um armário separado.

Na memória SRAM é onde gravamos dados a serem processados imediatamente, é como se fosse a nossa mesa de trabalho, onde abrimos arqui-vos, classificamos, mudamos, organiza-mos, calculamos, e ao final devolvemos ao destino, que pode ser o mundo externo, ou outro dispositivo de armazenamento. Tanto a Memória SRAM quanto os Registrado-pres perdem o conte-údo quando desliga-mos a energia que alimenta o chip. Chamamos isso de Memória Volátil.

O Core também tem acesso a tal memória SRAM usando instruções especiais, que podem ou não usar alguns High-Registers como carteiros (ou seja, quem aponta onde na memória o tal Byte será gravado ou lido). Também existe outro tipo de memória, chama-da FLASH. Parte dessa memória dá para ver na parte avermelhada no lado esquerdo superior da imagem ao lado, e é onde podemos gravar a sequência de comandos e instruções que que-remos que o Core execute quando em operação. É exatamente nessa memória FLASH onde fica o tal “programa”. É ali que é gravado o que se transfere para o chip, durante o processo de “programação”.

Page 34: PicListBr Magazine Dec 2009

34

A memória FLASH não perde os dados quando desligamos a energia do chip. Devido ao tipo de tecnologia, ela mantém o que foi gravado para sempre, até ser apagada numa operação especi-almente feita por um equipamento Programa-dor. Então, a memória FLASH contém BYTES que o Core irá decodificar e determinar o que fazer em seguida. O programa é composto por inú-meros bytes, e nos chips AVR cada instrução é composta por 2 ou 4 bytes. De acordo com o valor binário do primeiro byte, o Core identifica e determina o que fazer com tais bits e os bits do próximo ou próximos bytes. Isso significa que o programa é composto por uma sequência de instruções e mais instructi-ons. Essa longa sequência pode ocupar desde poucos bytes até milhares deles. Quanto mais complexo o programa, maior será. Mas como o Core não se perde entre tantas instruções? Um Special Registrador no grupo dos I/Os é um camarada conhecido como Pro-gram Counter, a função dele é exatamente manter o Core informado de onde anda, e qual o endereço na memória de onde está lendo instruções, daí o nome “Program Counter”, contador de instruções, abreviado como “PC”. Normalmente o Core não tem permissão de mudar o conteúdo da memória FLASH, mas ele pode ler bytes de qualquer endereço dessa me-mória e movê-los para registradores, e usá-los como bem convier. É assim, por exemplo, como se deixa gravados em meio a um programa, dados e informações a serem mostradas num display, menus de sele-ção, texto em geral, etc. Esse texto (dados) não é instruction, apesar de estar lado a lado com instruções na memória FLASH, e cuidados são tomados para não permitir o Core tentar deci-frar tais dados como se fossem instructions, caso contrário “o barraco cai”. Todavia existem modelos mais avançados de AVRs que dão permissão ao Core para alterar a memória FLASH. A finalidade disso é permitir atualização do programa da FLASH feita pelo Core, quando recebendo um novo programa via dispositivo normal de comunicação, sem preci-sar usar um equipamento Programador de Flash, apesar de que a primeira gravação da Flash deverá ser feita via tal Programador. A tecnologia da memória FLASH permite uma quantidade limitada de ciclos de apagamentos, algo em torno de 1000 vezes. Ou seja, o mesmo chip pode ser reprogramado muitas vezes antes do circuito de apagamento da FLASH começar a falhar. Existe ainda outra memória, de tecnologia ainda diferente da Flash, da SRAM e dos Registers, que chamamos de EEPROM (Electrically Erasable Programmable Read Only Memory) que significa Memória Programável para Leitura, de Apaga-mento Elétrico. Baita nome para dizer que é uma memória que se pode gravar, não perde os dados quando se desliga a energia, mas que se pode apagar tais

dados eletricamente antes de gravá-los nova-mente. Essa memória então pode ser gravada, lida e regravada pelo Core, porém ela é mais lenta que a SRAM e permite uma quantidade limitada de ciclos de apagamento, normalmente por volta de 100 mil ciclos. A finalidade básica dessa memória é guardar informações a serem usadas durante o proces-samento a posterior. Ali se guarda, por exem-plo, número de série do equipamento, a última posição de uma chave no painel, a seleção de um menu a recuperar na próxima vez que ligar o aparelho, valores, tabelas, funções, etc. Quem ainda não ouviu falar em Cookie de browsers de Internet? Eles ficam ali no seu PC esperando você acessar novamente aquele website, e ao acessar, o Cookie já preencherá os dados usados no mês passado, ou lembram o produto que você viu, etc. Pense na memória EEPROM (ou E2Prom) como a área onde Cookies do PC são gravados. O processo de leitura ou gravação da memória EEPROM é diferente de tudo. Ali no Core existe um “funcionário” que é responsável por isso, é o gerenciador da memória EEPROM. O Core in-forma a esse funcionário o endereço e o Byte a gravar, o funcionário vai lá e grava e informa quando terminou. É o mesmo procedimento para ler uma EEPROM, o Core “pede” o Byte de um determinado endereço da EEPROM, e em pouco tempo o tal funcionário entrega o Byte lido num registrador em especial. Bem, então aprendemos que existem diversos tipos de memória, ou lugares onde podem ser guardados Bytes:

• Low Registradores (R00 a R15) • High Registers (R16 a R31) • Memória SRAM (dados a curto prazo) • Memória EEPROM (dados a longo prazo) • Memória FLASH (programa)

A ordem acima é também de velocidade. O Core consegue trabalhar em velocidade de CLOCK nos Registers, quase o mesmo para me-mória SRAM, mais lentamente na EEPROM e bem mais lentamente na FLASH. “Do que eu estava falando mesmo?” Hmmm. Pois é, às vezes nos perde-mos numa conversa longa e não lem-bramos mais como retornar ao assunto principal. Para que isso não aconteça com o Mr. Core, foi criado um procedimento cha-mado STACK (em por-tuguês: Pilha). Quando o Core está executando uma se-quência de instruções, às vezes em meio a isso ele tem que repetir uma sequência de instru-ções em especial. Por exemplo, digamos que na

mesa do Mr. Core existam milhares de formulá-rios a preencher e assina. Então o Mr. Core mandou fazer um carimbo com a assinatura dele e ganha tempo ao invés de repetir o procedi-mento de assinar manualmente cada página. Quando um programa possui determinada se-quência de instruções a ser feita de tempos em tempos ao longo de uma sequência de insctru-ções, é mais fácil criar esse “carimbo” e, quan-do necessário, usá-lo. Mas assim como o Mr. Core não mandou fazer um carimbo para cada página (mandou fazer um só), aqui também isso é verdadeiro. Criamos uma sequência deinstru-ções, que podemos chamar de Sub-Rotina (roti-na) e a usamos quando necessário. Essa Sub-Rotina pode estar lá mais para o canto da me-mória Flash, e sabendo onde está podemos fazer o Program Counter (lembra dele?) apontar para aquela sub-rotina, assim o Core irá executá-la e “carimbar essa página”. Mas veja a mesa do Mr. Core, ele estava escre-vendo a página, precisou do carimbo, largou a caneta, foi lá no canto, pegou o carimbo, ca-rimbou e largou o carimbo no canto. Alguma coisa tem que fazer o Mr. Core lembrar o que ele estava fazendo antes de ir buscar o carimbo, de forma que ele possa continuar a escrever o texto na página e não quebrar a linha de pen-samento sobre o que estava escrevendo. “Do que eu estava falando mesmo?” Hmmm. O STACK vai lembrar. Funciona assim: Quando o Mr. Core precisou do carimbo, ele marcou num bloquinho de papel ao lado, o que precisava fazer em seguida do carimbo. Ao carimbar e largar o dito cujo no lugar, ele volta no bloquinho e lê o que fazer em seguida. Esse bloquinho é o Stack. Imagine uma situação mais complexa. Mr. Stack está escrevendo, agora precisa carim-bar, ele anota no bloquinho o que deve escrever em seguida ao carimbo. Larga a caneta e vai buscar o carimbo. Ao pegar o carimbo no canto da mesa, percebe que não tem a almofada do carimbo, e o carimbo está seco. Tem que ir

buscar a almofada. Mas antes disso, ele volta ao bloquinho e anota que após umedecer o carim-bo ele tem que carimbar ali no meio da página. Ele não pode ir umedecer o carimbo e esquecer onde carimbar. Então vai até o armário buscar a almofada do ca-rimbo. Ao chegar lá encontra o armário trancado. Ele tem que ir até o Office-Boy para pegar a cha-ve e destrancar o armário, mas antes de ir até o Office-Boy ele retorna ao bloquinho e anota que ao retornar com a chave ele terá que abrir a porta do armário e umedecer o carimbo. Ao retornar com a chave, abre o

armário e não sabe o que fazer, então olha para o bloquinho, e ahhh, umedecer o carimbo... e

Page 35: PicListBr Magazine Dec 2009

35

agora? bloquinho... ahhh, retornar à mesa e carimbar no meio da página. Para cada desvio da tarefa em andamento, de-verá haver um retorno para a instrução exata-mente a seguir de quando houve o desvio. Cada vez que “chama-se” uma sub-rotina em algum lugar da memória Flash, o endere-ço da próxima instrução que seria executada se não fosse feita a chamada à sub-routine, é guar-dada no Stack, de forma que ao ter-minar a sub-routine, o Stack diga ao Program Counter o que fa-zer. Se durante a execução da sub-routine é necessário chamar outra sub-routine, não tem problema; o endereço da próxima instrução a executar na primeira sub-routine é também guardado no Stack; ao terminar a segunda sub-routine, o Stack informa para o Program Coun-ter para onde retornar, que é no próximo ende-reço da primeira sub-routine, que continua executando, e ao final retorna para a coisa principal, e continua. O STACK é isso mesmo, uma pilha, e a cada vez que um endereço é necessário ser guardado no Stack ele empilha esse endereço sobre o último ali guardado, e outro sobre esse, de forma que ao recuperar tais endereços, é só pegar o últi-mo, o último, novamente, etc. Igualzinho às folhinhas do bloquinho; basta ir ler a última escrita e saber o que fazer, arranque a folhinha, a nova última é a próxima coisa a fazer, e assim continua. Então o Stack permite que sub-rotinas sejam chamadas em meio a sub-rotinas, em meio a rotinas, etc, sem que se perca o fio da meada, sem que o Program Counter não saiba para onde ir quando uma dessas sub-rotinas concluir o trabalho. Mas como o Stack é algo muito bacana, o Mr. Core resolveu que pode querer usar o Stack também não só para guardar endereços de re-torno, mas também Bytes de Dados por um tempo muito curto. Digamos que ele PRECISE (e não tem outra ma-neira) de usar o registrador R25 para um cálcu-lo, mas R25 contém um Byte que ele não pode perder. Então ele primeiro precisa salvar o conteúdo de R25 em algum lugar. Ele poderia copiar R25 para R28, e depois recuperar, mas quem sabe exatamente se o conteúdo de R28 pode ser destruído e receber o Byte de R25? A maneira mais fácil é copiar R25 para o Stack, usar R25 para o que for necessário, e ao final recuperar o Byte do Stack para R25. Então o Stack serve de área temporária.

Como a cada gravação no Stack “aumenta uma folhinha no bloquinho” e a cada recuperação do Stack se retira uma folhinha, é necessário algum funcionário auxiliar do Mr. Core para colocar ou tirar folhinhas. Esse é o trabalho do STACK

POINTER (SP). De uma forma sim-ples, a cada Byte que é gravado no Stack, o Stack Pointer di-minui um e aponta para um endereço mais baixo do Stack. Gravou ou-tro? SP diminui um. E por aí vai. Quer recuperar um Byte do Stack? Sem problemas, o SP aumenta um, lê o Byte e entrega ao Core.

O Stack Pointer faz um trabalho extremamente importante na sala do Mr. Core, pois um erro qualquer nesse sistema e lá vai o Mr. Core com a chave do armário tentar abrir a cafeteira e depois carimbar a testa do Office-Boy por enga-no. Muito bem, então aprendemos que o Stack pode manter Bytes temporariamente. Esses bytes podem ser o endereço onde uma rotina deve continuar a rodar após retornar de uma sub-routine, mas esses Bytes também podem ser simplesmente 8 bits do conteúdo e qualquer registrador, ou outro significado. Também entendemos que o Stack Pointer é quem diz ONDE no Stack o próximo Byte será salvo, e/ou qual é o Byte a recuperar. Quando se quer salvar o conteúdo de R18 no Stack, basta pedir ao Mr.Core para obedecer a instrução PUSH R18, bem assim mesmo, “push” de empurrar, empurre o conteúdo de R18 no Stack. Digamos que o Stack Pointer esteja apon-tando para o endereço 05Eh, e que o conteúdo de R18 seja B2h (binário 1011 0010). Ao execu-tar a instrução PUSH R18, o valor B2h será gravado no endereço 5Eh do Stack e após isso o Stack Pointer irá diminuir 1 do seu valor, e a-pontará agora para o endereço 5Dh do Stack, para a possível próxima instrução PUSH. Para recuperar o valor original (B2h) para R18, então usamos a instrução POP R18. Pop de “recuperar do Stack”. Ao executar a instrução POP R18, o Mr.Core primeiro adiciona 1 ao Stack Pointer, que estava 05Dh e passa a apon-tar o endereço 05Eh. E em seguida lê o conteú-do daquela posição do Stack, e lá estará o con-teúdo antigo de R18 (0B2h). Mas a instrução POP não sabe de quem era o byte 0B2h originariamente. O Mr. Core execu-tou POP R18, e o valor vai para R18, mas ele poderia ter executado POP R22, e aquele mesmo Byte 0B2h então seria transferido para o Registrador 22. Hmmmm. Então eu posso Sal-var algo de um determinado Registrador no Stack e Recuperar em outro. Pode sim.

Mas se a intenção é copiar o conteúdo de um registrador para outro, então existe uma instru-ção pópria para isso, chama-se MOV Rx, Ry. “Mov” de “mover”. Digamos que R10 contenha o valor 0F1h, e R29 contenha o valor 012h. Ao executar a instrução MOV R10, R29 o conteúdo de R29 será copia-do para R10. Ambos os registradores, R10 e R29 agora terão o conteúdo 012h, e o conteúdo original de R10 (0F1h) será perdido. Não quer perder o conteúdo de R10?

PUSH R10 MOV R10, R29

O valor 0F1h de R10 será salvo no Stack, e em seguida o conteúdo de R29 será copiado para R10. Assim, pode-se fazer o que se queira e ao final pode-se recuperar o valor 0F1h que está no Stack, para R10 ou para qualquer outro regis-trador.

POP R10 Mas como é que uma rotina faz para salvar o endereço de retorno no Stack, ao chamar outra rotina? Como isso acontece? Vamos usar o exemplo acima: Precisamos salvar R10

PUSH R10 Agora Mover conteúdo de R29 para R10

MOV R10, R29 Agora Adicionar o conteúdo de R17 em R10

ADD R10, R17 Agora Mover o resultado (em R10) para R29

MOV R29, R10 Recuperar o conteúdo original de R10

POP R10 Hmmm, ADD ? nova instrução, Adicionar. ADD R10, R17 faz uma adição dos conteúdos dos registradores R10 com R17 e coloca o resultado no registrador do lado esquerdo, ou seja, R10. Mas digamos que a parte matemática da adição não esteja aí embutida na rotina, e sim em outra rotina, e que esta esteja no endereço 0215h da memória Flash. Precisamos salvar R10

PUSH R10 Agora Mover conteúdo de R29 para R10

MOV R10, R29 Agora Adicionar o conteúdo de R17 em R10, mas essa instrução está numa subrotina no endereço 0215h da Flash, então precisamos chama-la:

CALL 0215h Agora Mover o resultado para R29

MOV R29, R10 Recuperar o conteúdo original de R10

POP R10 CALL ? Desvio de Chamada. Aquele CALL 0215h acima, será decodificado pelo Mr.Core que moverá o valor 0215h para o Program Coun-ter (lembra dele?) e esse será o próximo ende-reço a ser lido da Flash, cujo conteúdo será a próxima instrução a ser executada. Mas como saber o retorno para fazer o MOV R29, R10? Que é a próxima instrução após o CALL ?

Page 36: PicListBr Magazine Dec 2009

36

Aha! Então o ANTES de executar o CALL e mo-ver o 215h para o Program Counter, o Mr.Core irá mover os dois bytes (é, dois) do endereço da próxima instrução (MOV R29, R10) para o STACK, um byte e depois o outro, e só então irá saltar para o endereço 0215h e executar o ADD R10, R17. Vamos imaginar que as instruções e endereços onde estão na memória Flash sejam:

0118h PUSH R10 0119h MOV R10, R29 011Ah CALL 0215h 011Bh MOV R29, R10 011Ch POP R10 ... ... 0215H ADD R10, R17 0216H RET

Quando o Core executa a instrução (PUSH R10) em 0118h, o Program Counter é automatica-mente incrementado para 0119h. Então vai executar a 0119h (MOV R10, R29), o Program Counter é incrementado para 011Ah. Ao iniciar a decodificação para executar a 011Ah, o Core percebe ser uma instrução de CALL (chamada em desvio) para o endereço 0215h, o Program Counter é incrementado para 011Bh, mas como é uma instrução de CALL, então o Program Counter é salvo no Stack, pri-meiro o Low Byte (1Bh), o Stack Pointer decre-menta um, então o High Byte (01h), Stack Poin-ter decrementa um novamente. Então o Program Counter é carregado com o valor 0215h, que é para onde o programa deve ir, devido à instrução CALL 0215h. A próxima instrução a ser executada está no endereço 0215h, (ADD R10, R17), é feita a adição, resultado para R10 e o Program Counter é incrementado para 0216h. Irá executar a instrução em 0216h, que é um RET (Return). Essa instrução faz o equivalente a dois POP do Stack. Então o Stack Pointer é incrementado, o byte no Stack apontado pelo SP (01h) vai para o Program Counter High Byte, novamente o SP é incrementado e o próximo Byte do Stack (1Bh) vai para o Program Counter Low Byte, e então agora o Program Counter contém 011Bh, e ao executar a instrução nesse endereço, estará retornando para a próxima instrução da rotina que estava quando chamou a rotina de adição em 0215h. Então aprendemos que CALL nnnn faz o Pro-gram Counter (PC) saltar para esse endereço “nnnn”, e quando encontrar uma instrução RET (return) o PC irá saltar de volta para a proxima instrução ao ultimo CALL, e que o Stack é usado para guardar dois bytes referentes à esse ende-reço de retorno. Após o RET, o Stack Pointer (SP) estará apontando para o mesmo endereço do Stack antes do CALL.

Bem, chega de Stack. É importante conhecer como o Stack funciona, pois é uma ferramenta importante do Core, e para o programador, porém se mal usado causará problemas. Já aprendemos então as seguintes instruções:

PUSH POP MOV ADD CALL RET

Na estrutura AVR existe um outro CALL, que é o RCALL (Relative Call), que economiza um byte na memória Flash e faz um Chamada Relativa para o novo endereço, com relação ao endereço da instrução RCALL. Por exemplo, se a instrução CALL estiver no endereço 011Ah (como ao lado) e a chamada estiver no endereço 014Ah, então no código executável pelo Mr.Core, o salto será de somen-te 30h bytes de distancia. A instrução não con-terá o valor 014Ah, mas 30h. O RCALL pode saltar 129 endereços à frente e 127 para trás. Na verdade, a instrução CALL só é usada em chips que tenham memória Flash maior, e per-mite chamar uma rotina em qualquer ponto de um ambiente de 16 bits, ou seja, memória Flash de 64kBytes. Normalmente em chips menores se usa só a instrução RCALL. A instrução RET funciona igual para ambas. Mas chega disso. Vamos ao lado prático e físico.

AVR Laboratório Simulado Um microcontrolador AVR possui portas de co-municação com o mundo externo, chamadas de I/O (Input / Output). Cada porta possui 8 pinos

ou menos. Cada pino pode ser configu-rado a ler o mundo externo e

passar tal informação à um registrador, ou confi-

gurado como saída e fazer valer no pino,

um nível de ten-são (zero ou um)

programado pelo Core. Para o exercício que segue, usarei um velho amigo AVR, o At90S2313, que é um chip de bai-xo custo ainda existente no mercado. O substi-tuto direto desse é o AtTiny2313, que possui algumas pequenas diferenças de pinagem e uso, com vantagens de consumo, tamanho e disposi-tivos adicionais internos. O At90S2313 é um chip PDIP (plastic dual in-line), pinos espaçados em 1/10 de polegada, 20 pinos no total. Funciona desde 3 a 5V e com clock de até 10MHz. No chip da figura vemos a terminação -10PC, que significa 10MHz, P=DIP, e o C=Temperatura Comercial. Existe o -10PI,

que suporta Temperatura Industrial, mais frio e mais calor que o -10PC. A figura que segue é a representação dos pinos do AT90S2313. Observando o “notch” (entalhe) num dos lados do chip (parte de cima na foto da coluna ao lado, contamos os pinos no sentido anti-horário, iniciando pelo pino 1, no topo à esquerda. Nos chips Atmel existe um pequeno triângulo branco para indicar o pino 1, veja na foto ao lado. Ao contar para baixo e dar a vol-ta, obviamente o pino 20 desse chip estará do lado oposto do pino 1, no topo à direita.

De acordo com o datasheet que pode ser visto no site da Atmel: http://www.atmel.com/dyn/resources/prod_documents/doc0839.pdf

Nos pinos 4 e 5 deve ser conectado um cristal oscilador, de qualquer frequência até 10MHz. As frequências mais comuns são 1MHz, 2MHz, 4MHz, etc, podendo usar qualquer frequência, mesmo o cristal de baixo custo para TV NTSC 3.579545 MHz, ou de PAL-M 3.575611 MHz. No pino 1 (RESET) liga-se um capacitor de 1µF para Terra. Ao alimentar o circuito o período de carga desse capacitor fornece o pulso nega-tivo (/RESET) suficiente para o RESET do chip. Os pinos 2, 3, 6 a 9 e 11, são da porta “D” e identificados como PD0, PD1, PD2, PD3, PD4, PD5 e PD6. Nesse chip, essa porta tem só 7 pinos. Todos eles têm função secundária sele-cionável por programa. Por exemplo, pino PD0 também pode trabalhar como entrada de comu-nicação serial, Receive Data (RXD). Já a Porta B tem os 8 pinos disponíveis, de PB0 até PB7, nos pinos de 12 a 19. Com exceção do pino PB2 e PB4, todos os outros também podem exercer atividade secundária. Para o Laboratório Prático (2ª parte) usaremos: 1 x At90S2313 3 x baterias alcalinas AA e soquete ou uma fonte de +5Vcc (mínimo de 100mA) 2 x LEDs de qualquer cor 2 x resistores de valor entre 330 e 1kΩ 1 x programador de AVR (serial, paralelo, USB) Software AVRStudio4 instalado 1 x Cabo de conexão 1 x Protoboard para montar o circuito Porém para o Laboratório Simulado, objeto dessa pri-meira parte da matéria, usaremos somente: Software AVRStudio4 instalado

Page 37: PicListBr Magazine Dec 2009

37

AVRStudio4 pode ser feito download gratuíto diretamente da Atmel: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 ETAPA 1 – AVR STUDIO 4 Para iniciar, rode o AVRStudio4, surgirá uma tela como ao lado. Clique em “NEW PROJECT”. Surgirá uma nota tela como ao lado. Em Project Type: Clique em “Atmel AVR Assembler” Em Project Name: Escreva “LEDS” (por exemplo) O mesmo nome aparecerá em Initial File: LEDS .asm (mantenha assim) Em baixo clique em “Finish” O projeto LEDS estará criado. O AVRSTUDIO abrirá as outras telas para prosse-guir com o projeto. Note do lado esquerdo a lista de arquivos e diretórios do Projeto. (Arquivos) No centro à direita (Programa) é onde escreve-rá o programa em Assembly. Em baixo existe a área de Mensagens, com orelhas a selecionar: Build (resultados da compi-lação), Message (mensagens genéricas), Find In Files and Breakpoints verá mais tarde. Note também os menus em cima; Build and Debug, tu os usará em seguida. Então na área PROGRAMA, escreva exatamente como aparece na próxima tela.

Page 38: PicListBr Magazine Dec 2009

38

Notar: .include “2313def.inc” irá incluir diretrizes especiais sobre o chip At90S2313 para o compilador. Preste atenção ao ponto antes de “include” e aspas em volta do nome do arquivo a incluir. .equ e .def renomeiam a PORTA B (PortB) e os registradores R23, R24 e R25. .CSEG e .ORG 0 definem que a partir desse momento o texto escrito deverá ser considerado Código (Code Segment) e a partir do endereço zero (.ORG 0) Start: é um label normal, usado para identi-ficar a posição física na memória daquela ins-trução à direita. O mesmo para Loop: De-lay200ms: e Delay200ms1: Note que todos os labels possuem dois pontos “:” ao final. Note na instrução do label Start: LDI R16, 0b11111111 Significa LoadImmediate (carregar o registrador R16 com um valor imediato constante na própria instrução, todos bits 1, binário. É assim que se define binário 0bxxxxxxxx, da mesma forma como se escreve 05Ah para hexadecimal. Deci-mal pode ser escrito 156d ou só 156, como no label Delay200ms: Então clique no topo, menu Debug, abrirá uma janela, selecione em baixo: “Select Platform and Device” Abrirá a tela ao lado. No Debug Platform (lado esquerdo): AVR Simulator e então no Device (lado direito): AT90S2313 Tem que escolher nessa ordem. Clique embaixo Finish Agora no topo, menu Build, selecione: Build and Run, ou pressione Ctrl+F7, como a tela ao lado. O AVRSTUDIO irá compilar o programa, ativar o simulador e abrir outras telas, mostrando os registradores do lado direito e outras funções do lado esquerdo. Também indicará na parte de baixo (mensagens) se a compilação completou bem sem erros, ou mostrará os erros. Caso ocorra algum erro, tente clicar sobre a tal linha da mensagem do erro, o cursor pulará para a tal linha no área do programa onde o tal erro foi encontrado, onde você poderá corrigi-lo. Tente abrir (alargar) o window do AVRSTUDIO no seu monitor de forma a poder ver todas as áreas.

Os frames internos do AVRStudio são individu-almente expansíveis, podem ser alargados, ou diminuidos. Acerte para melhor trabalhar. Se a compilação terminou com sucesso, veja também que agora já aparece uma seta amarela ao lado do label Start:, significa que o simulador já está pronto para iniciar a simulação.

Page 39: PicListBr Magazine Dec 2009

39

Tenha certeza que no menu [VIEW, TOOLBARS], esteja selecionado I/O, isso abrirá um frame do lado direito da tela, a janela I/O VIEW, assim:

I/O VIEW (Direita da Tela) Também note que do lado esquerdo da tela deverá existir uma janela Processor View, co-mo abaixo. Caso contrário, ative essa janela no menu [VIEW, TOOLBARS, PROCESSOR].

PROCESSOR VIEW (Esquerda da Tela)

Veja também na janela do Processor View, existe o conteúdo dos registradores R00-R31, o famoso Program Counter, o Stack Pointer, etc. Clicando no PORTB do I/O View, ajuste a largura do frame para poder ver os oito bits do DDRB, PINB e PORTB. DDRB define quais pinos serão entradas ou saí-das. PINB é o nível lógico dos pinos como En-trada. PORTB é o nível lógico do bits do regis-trador de saída, e é esse que você prestará atenção durante a simulação, pois mudarão de cor, indicando mudança de nível lógico. Qualquer bit de qualquer registrador pode ser alterado manualmente pelo clicar do mouse sobre ele. Veja o I/O VIEW ao lado, mudei os três primeiros bits do PORTB, deixando-o 0xE0. Isso pode ser muito útil ao simular chaves, cir-cuitos externos, etc.

Se esse programa fosse gravado de verdade no chip, este deveria se comportar exatamente como a simulação. No Processor View, veja na penúltima linha o Stop Watch, com valor de 0.00us. Observe tam-bém o Cycle Counter = 0. Esse é o número de clock cycles o processador usou até um determi-nado ponto da simulação. O Stop Watch signifi-ca o tempo decorrido para até aquele ponto. Esses dois indicadores podem ser zerados cli-cando o botão direito do mouse com o cursor sobre eles. Reset StopWatch e Reset Cycle-Counter. Esses indicadores são especialmente importantes para definir tempo ou clock cycles em rotinas de tempo. Coloca-se o cursor da simulação no início da rotina a testar, se zera os contadores e manda-se rodar a rotina. Chegou a hora de rodar o simulador. Coloque o cursor do mouse no início da Label LOOP: na área de programa, clique o botão esquerdo do mouse.

Veja acima, o ícone “Run to Cursor” ou pres-sione Ctrl+F10 O simulador irá rodar por todas as instruções em alta velocidade, e irá parar na linha do mouse. Como aquele label é o início de um loop, a cada apertar do Ctrl+F10 ele dará uma volta. Zere o CycleCounter e o StopWatch, e pressione novamente “Run to Cursor” ou pressione Ctrl+F10. Verá que o CycleCounter e StopWatch avançaram para 120125 cycles e 30031.25 us, porque está usando a Frequency de 4MHz.

Essa é a velocidade do clock simulado, como se

estivesse usando um crystal de 4MHz no protoboard. Para mudar a velocidade do clock do simulador vá em [De-bug – Simulator Options (em baixo)] Após compilar, se pode ver o arquivo listing do assembly gerado, na área de files à esquerda da tela, desde que esteja selecionada a opção para gerar tal arquivo. Veja em [Project – Assembler Options – Create List File].

Ao lado o ícone do RUN (ou

tecla F5), que faz o programa rodar sem pa-rar, como se fosse no chip real. Após clicar RUN, clique em Togle Register Window e veja os registradores R23 e R24 mu-dando de valor. A velocidade que você os vê não é real, mas

a contabilização de tempo no Processor View (Stop Watch e Cycle Counter refletem o que seria real, levando em conta a frequência do cristal. Pode-se rodar o simulador de outras formas, passo a passo, ou pulando sub-rotinas, ou se pode criar pontos especiais de paradas (breakpoints) para análise de registradores, etc. Na segunda parte dessa matéria iremos progra-mar um chip real a funcionar na bancada.

Page 40: PicListBr Magazine Dec 2009

40

FIP - Fonte de Instrumentos PicListBr Parte 2

Por Wagner Lipnharski – Orlando Florida. Só para não deixar em branco essa matéria nes-sa edição, vamos explorar a parte de suprimen-to de energia da FIP (Fonte de Instrumentos Piclistbr). A idéia básica é definir os elementos básicos e imprescindíveis na parte de suprimento de e-nergia dessa fonte. Em primeiro lugar, o cabo de alimentação a ser usado. Defino por ser um cabo de fonte de PC, encontra-se em todo lugar, de baixo custo e suporta plenamente a corrente necessária no primário dessa fonte, que pode chegar a 5 ou 6 Amperes. Esse cabo deve possuir o terceiro pino de terra, e aconselho que a parte fêmea seja em ângulo de 90° a fim de evitar esmagamento do cabo na traseira da FIP contra a parede, etc.

O receptáculo desse cabo deve ser o conector próprio para ele, também encontrado em fontes de PC sucata ou obviamente novo nas lojas. Pode conter filtro de alta frequências ou não. Abaixo um modelo muito simples de plástico com terminais para solda. Esse modelo exige corte específico na caixa, que também pode ser feito em acrílico tapando um furo retangular na caixa de metal.

Existem modelos com alojamento para fusível, o que é recomendado, eliminado soquete de fusí-vel interno ou furação na caixa para tal. O in-

conveniente desses modelos é que o fusível acaba ficando antes do interruptor on/off.

Essa fonte DEVE possui fusível de proteção. Consi-derando que ela poderá consumir de 20 a 300 W, tal fusível não será superior a 3.5 ou quatro Ampères x 250vac.

Nessa entrada de AC deve-se incluir varistores de proteção contra descargas elétricas, para tensão 50% acima da tensão da rede elétrica. A chave liga/desliga principal dessa fonte deve-rá ser capaz de suportar mais de 5 Ampères continuamente, isolação de 250Vac. Deverá ser instalada no painel frontal da FIP e fácil de ligar ou desligar. A fiação desse interruptor deve ser muito bem isolada e deverão interromper a FASE da alimentação, e ser instalado entre o cabo de alimentação e o fusível principal. To-das as conexões dessa área de 117Vac devem possuir botinas de borracha, ou seja, não podem possuir nenhuma parte metálica exposta. Essa Fonte de Instrumentos será basicamente pesada, construída em metal, com diversas divisórias internas e sub-paineis, o que aumen-tará muito a rigidez de construção. Ela deverá sobreviver uma queda ao chão, sem nenhum dano, nem soltar os circuitos internos e compo-nentes pesados, como transformador, dissipado-res, capacitores, placas, etc. Apesar dessa fonte de instrumentos não gerar calor substancial, podemos já de início determi-nar a existência de um pequeno ventilador para criar um fluxo de ar no interior e evitar acumulo de calor interno. Aberturas ou furos na base frontal da caixa permitirão a entrada de ar por baixo dos circuitos. Lembrar que essa Fonte de Instrumentos Piclist-br, é um equipamento que contém diversos instrumentos internos, alimentados por uma fonte de alimentação única que promoverá +5, +12 e -12Vdc para tais circuitos. Essa mesma fonte de alimentação também servirá de fonte ajustável de tensão e corrente, e que pode chegar a +30 ou +40V com até 10A, depende basicamente do transformador e circuito regu-lador. O transformador de alimentação poderá ser de núcleo de ferro seção quadrada ou mesmo to-roidal, lembrando que o toroidal promove me-nos perdas e menos ruído eletromagnético. Em alguns casos o toroidal é recomendado, porém costuma ser um pouco mais incômodo para ins-talar devido ao formato. Como regra para essa fonte, eu recomendaria que se pensasse em transformador que forne-cesse no mínimo 25Vac no secundário, e que

poderia ser com ou sem Center-tap. Se tiver Center-tap, então seria 25+25. Outros podem querer maiores tensões de saída, então a sugestão é partir logo para um trans-formador que forneça 35 a 40Vac no secundário.

120Vac – 24VCT 10A – 240W

Marlin P. Jones (www.mpja.com) A potência desse transformador deve ser coe-rente com o que se quer obter na saída. Pen-sando em obter 40V 3A, isso forneceria 120W para a carga, portanto pense logo num trans-formador que suporte pelo menos 30% a mais de potência, nesse caso, 160W seria recomendado. Primário 117Vac 1.5A, secundário 40Vac 4A.

117Vac – 24VCT 12A – 290W

(www.jameco.com) Deve-se também lembrar que ao dimensionar o transformador, quanto maior melhor. Nesse caso acima, precisando 120W na carga, pode-se pensar logo num transformador que forneça 200W. Trabalhará frio e com melhor, porém com maior custo, tamanho e peso.

115-230Vac / 36VCT 1.5A - 54W

(www.jameco.com)

Page 41: PicListBr Magazine Dec 2009

41

Devemos lembrar que a tensão do secundário do transformador é medida em RMS, o pico da senóide é em torno de 1.41 vezes maior. Ao retificar tal senoide, perde-se a queda de ten-são nos diodos retificadores, e é bom sempre pensar numa perda de 2V. Portanto, a tensão resultante sobre os capacitores de filtro será a tensão RMS do secundário do transformador, menos 2V, vezes 1.41.

110/220Vac – 24VCT 4A – 96W

Marlin P Jones (www.mpja.com) Portanto, um transformador de 25Vac no secun-dário, será (25-2) x 1.41 = 32.4Vdc nos capaci-tores. Claro que existirá o ripple da fonte, que é a descarga desses capacitores pelo consumo da carga da fonte, durante o período em que a senóide não consegue recarregá-los, o que po-demos calcular em ser não maior que 1V. Nesse caso pode-se pensar que a tensão útil média, armazenada nos capacitores seja 31.5Vdc. Abaixo um transformador toroidal de 300W, excelente candidato para uma fonte de muito boa potência e qualidade. Baixa perda de ten-são na fiação. Em aberto fornece 31.6Vac, com 6ª fornece 30.2Vac, com 11.3A fornece 29.5Vac. Todas as medições com os dois secundários em paralelo. Note que esse transformador não é CT, ou seja, tem dois secundários isolados, o mesmo para os dois primários de 115Vac.

115+115Vac –30+30Vac 10A – 300W

AN3230 – www.antekinc.com Diâmetro 4.7”, Altura 2.9”, Peso: 3.2kg

Preço online: US$36.00

Outro modelo a considerar é o AN2232, 200W, mesmas características, 115+115, 32+32Vac, 3.1A em paralelo, preço US$29.00 Também vou considerar a possibilidade de exis-tir um segundo transformador de baixa potencia para alimentar os instrumentos internos dessa

caixa, algo como 12+12Vac 3A, ou em torno de 50W, e que possamos produzir uma fonte +12 / -12 e +5Vcc. Um toroidal sugerido para essa pequena fonte é o AN0512 da AntekInc, abaixo, diâmetro 3.4”, altura 1.6”, peso 900g, preço US$13, pode for-necer 4.1A sob 10.8Vac.

Em qualquer caso, o retificador ideal é uma ponte retificadora que se pode mparafusar no chassi metálico da FIP. Existem retificadores assim para 5, 8, 10, 15, 20, 30A, encontrado no mercado por preço baixo.

Essa ponte à esquerda suporta até em torno de 5A, não reco-mendo o uso dessas para a FIP, pontes com o dobro da capaci-dade costumam custam não mais que 20 a 30% a mais.

Essa ponta à direita e as abaixo suportam entre 10 e 15A, porém não reco-mendadas a retificar cor-rentes em excesso de 10A.

Já as próximas pontes suportam mais de 15A e são recomendadas para a FIP, caso for usar algum transformador que possa fornecer até 10

ou 12A. Numa retificação de onda completa o maior problema é a dissipação térmica. Consi-derando que uma ponte dessas promove uma

queda de tensão de 1.4 a 1.5V constantemente, haverá dissipação pico na ordem de 15W, prova-velmente uma média de 10W. Essa é a maior preocupação em ser uma ponte mais robusta e com maior área de contato mecânico no dissi-pador ou chassi da FIP. Toda a fiação no secundário do transformador deverá ser reforçada para minimizar perdas. Recomenda-se usar fios curtos, capazes de su-portar boa temperatura. Essa é uma região da fonte que haverá aquecimento, e é onde deve-mos tomar todo cuidado. O calculo do capacitor ou capacitores de filtro deverá ser feito com cuidado. Pequenos capaci-tores promovem um ruído ripple acentuado, já capacitores muito grandes atenuarão bastante o ruído ripple, porém causam stress de excesso de corrente ao ligar a fonte; para a ponte retifica-dora, ao transformador, à fiação e até ao fusível de proteção. Sempre existe um meio termo. A recomendação é usar capacitores conhecidos como “computer grade”, por possuírem parafu-sos nos bornes de fixação, onde se pode usar terminais elétricos nas pontas dos fios. É claro que capacitores com terminais de solda também podem ser usados, porém a construção, fixação e conexão exigirão soldar os fios, o que torna o trabalho mais difícil, até mesmo para manuten-ção futura. Abaixo um capacitor “Computer Grade”

É recomendado fixar esses capacitores mecani-camente na base da caixa da FIP, usando anéis adequados, como se vê abaixo.

Ambos os fios saindo do negativo e positivo da ponte retificadora deverão obrigatoriamente ir primeiro aos capacitores de filtro e dai prosse-

Page 42: PicListBr Magazine Dec 2009

42

guir para o terra (negativo) e para o circuito pré-regulador ou regulador de tensão. Os capacitores deverão estar entre a ponte retificadora e o circuito regulador de tensão. Deve-se também instalar um resistor conhecido como “bleeding” nos terminais dos capacitores, de forma a promover um pequeno consumo no transformador e também para que tais capacito-res se descarreguem ao desligar a fonte. O mo-tivo principal aqui é “segurança”. Abaixo podemos ver uma construção adequada de um sistema transformador + retificador + capacitor (com anel fixador) + resistor bleeding. Nessa construção vemos um fusível de segurança instalado na saída do capacitor.

Apesar de dois capacitores de 10 mil micro Fa-rads custar mais do que um único de 20 mil micro Farads, recomendo a instalação de dois capacitores em paralelo. Existem diversos motivos para isso. Primeiro que com isso se reduz a ESR (resistência série interna) média dos capacitores, segundo que se cria redundância em caso de pane de um capa-citor, terceiro que normalmente capacitores menores possuem perfil mais baixo e permitem serem alojados numa área menor e com maior facilidade. Devemos lembrar que essa fonte de alimentação da FIP pode e deve ser montada com componen-tes da melhor qualidade possível. Esse equipa-mento irá ter muita utilidade na bancada, pro-vavelmente estará ligado o tempo todo, deverá suportar todo tipo de abuso e deverá sobreviver em perfeito estado de funcionamento por mui-tos anos. Portanto, o investimento vale o custo. Exageros em fontes de alimentação nunca são demais, dimensionar essa etapa da fonte com 50% adicionai de capacidade não faz mal a nin-

guém e fará tal fonte trabalhar sem stress e sem sobrecarga por muitos anos. Não pretendo especificar fabricante nem mode-lo de componentes para essa etapa da fonte, porém o assunto pode ser discutido na lista de discussões Piclistbr, considerando fornecedores nacionais, ou mesmo locais de cada cidade. As diferentes potências que cada um poderá montar para essa etapa da fonte, torna difícil uma padronização, mas podemos considerar que para atender as necessidades dos circuitos e placas adicionais da FIP, e fornecer tensão ade-quada (econômica) para uma bancada de testes de desenvolvimento, essa etapa deveria poder suprir um mínimo de 15Vdc e 4A, ou seja, 60Watts. O circuito sugerido para essa etapa contempla 2 possibilidades no primário do transformador e 2 no secundário. As alternativas para o primário é que o trans-formador tenha só um enrolamento, adequado à voltagem da rede elétrica, ou que possua 115+115Vac, permitindo utilizar essa fonte mesmo em locais com rede elétrica de 220Vac. As alternativas para o secundário é que o trans-formador tenha Center-Tap, o que é recomen-dado, ainda melhor se possuir dois enrolamentos separados, como é o caso dos transformadores toroidais mostrados na página anterior. Assim, pode-se montar uma fonte com bi-polaridade de saída, o que pode ser útil em determinadas, porém raras aplicações. É mais difícil imaginar uma aplicação que exija +18 e -18V com consu-mo de 5 Amperes. Tecnicamente, os circuitos e placas adicionais da FIP podem requerer tensões tipo +12 e -12Vdc, e como já foi dito antes, é possível pos-suir um segundo transformador menor só para alimentar tais circuitos e também fornecer +12, -12, +5 e +3.3Vdc fixos no painel da FIP, para baixo consumo e possível alimentação até 2A. Inicialmente um circuito básico de entrada pode ser visto abaixo. A entrada consta de 3 fios, Terra, Fase e Neutro. O interruptor principal de energia é ligado diretamente ao fio da Fase. Após o interruptor temos 3 varistores compatí-veis com 50% a mais da tensão da rede, interli-gados em triângulo e conectando os três fios da entrada. Então temos um filtro de linha, neces-sário para isolar ruídos elétricos provenientes da linha e reduzir a sua interferência na fonte.

Logo após o filtro temos dois capacitores de desacoplamento de alta freqüência para terra. Então vemos o fusível no fio da Fase e ligado ao transformador. O fio do Neutro que passa pelo filtro liga direto ao transformador. Vemos no exemplo o transformador com dois primários ligados em paralelo, ou série, depen-dendo da tensão da rede. O secundário do transformador do exemplo possui dois enrola-mentos separados, que podem ser ligados em série e o centro ligado ao terra, como um CT (Center tap) normal. Uma ponte de diodos retifica em onda completa a senóide de saída dos enrolamentos do secun-dário. Como já dito anteriormente, essa ponte de diodos deverá suportar pelo menos o dobro da corrente total nominal da fonte. Após a retificação, dois capacitores; um maior para o lado positivo, outro menor para o lado negativo. É bem provável que, o uso da tensão negativa da fonte tenha uso limitado, portanto não precisaríamos um grande capacitor de filtro nessa tensão. Em paralelo com tais capacitores, podemos ver dois capacitores pequenos, de 100nF, cuja fina-lidade é a de eliminar qualquer ruído de alta frequência. Ainda em paralelo temos dois resistores blee-ders para descarregar os capacitores quando a fontes for desligada, e também promover uma pequena corrente de consumo durante a opera-ção normal. Aos pinos de saída; +VCC, GND e –VCC, serão ligados outros circuitos, pré-reguladores, inter-ruptores secundários, LEDs indicadores, etc. Ainda nesses pinos serão ligados divisores resis-tivos a fornecerem tensões mais baixas aos cir-cuitos ADC do microcontrolador mestre da FIP, a fim de determinar se a tensão DC primária da fonte está dentro dos limites considerados nor-mais, como uma análise constante da saúde da FIP. Na próxima edição poderemos ter tais circuitos testados e aprovados, e também parte do cir-cuito do pré-regulador, regulador principal, regulador de baixa potência de +5V, +12 e -12 no painel da FIP. Wagner Lipnharski – Orlando Florida.

Page 43: PicListBr Magazine Dec 2009

43

Osciloscópio LCD PicListBr Parte 1Como sempre idéias de novos projetos surgem no nosso grupo, um osciloscópio LCD não fugiria das garras dos voluntários. Foi assim que após inúmeros e-mails de suges-tões e motivações em geral, iniciamos a discutir alguns circuitos e funções de tal osciloscópio, incluindo a possibilidade de produção modular, onde cada etapa poderia ser discutida e desen-volvida por diferentes participantes, e que, dife-rentes módulos possam ser interligados. Teríamos então os seguintes módulos: • Entrada analógica, que seria basicamente a

entrada do osciloscópio, • Conversão de sinal, que seria o ADC (ana-

log-digital converter), • Oito ou mais entradas digitais para servir de

analisador lógico, • Controle e Display portátil, • Transferência para um PC, • Software de PC para controle e display. Desta maneira fragmentada, tenderíamos a con-

cluir módulo após módulo, ou, diferentes módu-los poderiam ser produzidos independentemen-te, ao mesmo tempo ou não, desde que as dire-trizes e definições técnicas básicas sejam defini-das de antemão. Durante diversas semanas discutimos no grupo qual o melhor circuito de entrada, atenuadores, ganhos, problemas, possibilidades de sucesso, encrenca, etc. Ao final decidimos por um possí-vel circuito que estará sendo testado na prática. No momento da produção desta matéria, o cole-ga Alain Mouette, um dos ferrenhos voluntários para o desenvolvimento desse módulo, está prestes a testar a etapa de entrada analógica na bancada; atenuadores e ganhos nos amplifica-dores operacionais, desempenho ao longo da banda de DC a 1MHz AC, determinada a ser o limite para esse circuito, etc. As outras etapas também estão sendo discutidas e consideradas: tipo de LCD e painel, bem co-mo programa de transferência para PC, usando USB e/ou Serial, etc. Temos que notar que, o volume de dados a transferir por leitura é baixo, não maior que um máximo de 4kBytes. Também já existem voluntários no grupo a pla-

nejar, desenhar e escrever os programas para Windows; controle e display. Creio que na Terceira Edição dessa revista te-remos maiores novidades a respeito. Novamente reforço a idéia de que temos que tomar cuidado em diferenciar o que é um Proje-to e o que é um Mutirão. Um projeto é algo que é desenvolvido por alguns, e que, se concluído com sucesso pode resultar num Mutirão de Compras, quando se consegue melhores preços por volume, junto aos fornecedores. Com certa frequência no nosso grupo, tem ocor-rido idéias de novos produtos e projetos, e quase sempre são ditos como “mutirões”, o que não é verdade. Teriam essa classificação se a grande maioria do grupo participasse efetivamente no desenvolvimento ou produção. A produção de circuito impresso ou compra de materiais em maior volume poderia sim, ser considerada “Mutirão de Compras”.