Você está na página 1de 68

[Analógico •Digital •Microcontroladores & Sistemas •Áudio •Medição & Teste]

R$ 15,90 - Ano 9 - Mensal - EDIÇÃO BRASILEIRA - N.º 102


Novembro 2009
Setembro 2010

www.elektor.com.pt
www.elektorbrasil.com.br
www.elektorbrasil.com.br

Construa um placar de
mensagens a LEDs em um dia
Usando a plataforma para
desenvolvimento de protótipos mbed

Alimentação
00102
e RFID sem fios ISSN 1676-790X

9 771676 790007

Construa o seu próprio


sistema de sensores RFID

Placa de expansão para o Cetro


InterCeptro abre as portas para você!
Flexibilidade
Placas de circuitos impressos
sob medida para seu projeto

A Circuibras é a melhor opção no fornecimento de


placas de circuito impresso para sua empresa.

Utilizamos o que há de mais moderno em


equipamentos e tecnologia, além de quase 25 anos
de experiência na produção, desde face simples a
multilayers de alta complexibilidade.

Uma empresa flexível, que alia qualidade com prazos


reduzidos e em qualquer quantidade. A CIRCUIBRAS
é a melhor solução em circuitos impressos.

ESTÊNCIL ELETROFORMADO

A partir de agora os clientes


da CIRCUIBRAS podem contar
com mais esta facilidade. Seu
estêncil pode ser enviado
junto com seu pedido, com
preços reduzidos.

PROTÓTIPOS E PRODUÇÃO EM ESCALA


PRAZOS REDUZIDOS
PLACAS 100% GARANTIDAS
MULTILAYERS ATÉ 16 CAMADAS

Mais informações sobre nossos produtos acesse:


www.circuibras.com.br

Circuibras Indústria de Circuitos Impressos Profissionais


Rua Lodovico Kaminski 2351 | Curitiba | PR | CEP 81260 040
Fone/Fax (41) 3314-9000 | www.circuibras.com.br | comercial@circuibras.com.br
Fundador
António Bento
Administração
Setembro 2010
Jorge Bento e Helder Lemos
Controller
n.º 102
Pedro Lemos - pedro.lemos@editorialbolina.com
Editor Internacional
João Martins

Gerente Geral
Benedito Gonçalves
Publisher
Victor Hugo Visval Piiroja
victor.piiroja@editorialbolina.com
Índice
Editor
Fernando Gaio
fernando.gaio@editorialbolina.com
Diretor Financeiro
Márcio Reginaldo - marcio.reginaldo@editorialbolina.com
Editor de Arte Hardware & Software
Flávio Bissolotti - flavio.bissolotti@editorialbolina.com
Arte
Milton Oliveira - milton.oliveira@editorialbolina.com
8 Placa de expansão para o Cetro
Wesley Costa - wesley.costa@editorialbolina.com
Marketing e Eventos 20 Sites essenciais para o desenvolvimento
de sistemas embarcados
Marcela Petty - marcela.petty@editorialbolina.com
Produção gráfica
Rafael Gomes - rafael.gomes@editorialbolina.com
36 Pequenos e Open Source
44 Rádio-computador ATM18
Diretor Técnico
Eng. Marcos Paulo de Souza Silva
marcos.paulo@editorialbolina.com
Jornalista Responsável
Fernando Gaio (MTb 32960)
Executivo de Conta
Luciano Itamar – Tel./fax: (11) 4195-0363 - INFORMAÇÃO
luciano.itamar@editorialbolina.com

Impressão
32 Construa um placar de
Van Moorsel
mensagens a LEDs num dia
58 Linux emum chip
Editorial Bolina Brasil Ltda
Alameda Pucuruí, 51-59 Bloco B - 1030
62 Barramentos de curta distância na prática
Tamboré - Barueri - São Paulo
CEP 06460-100 – Telefax: (11) 4195-0363

As opiniões expressas em artigos assinados não correspondem


IDEIAS PARA PROJETO
necessariamente às opiniões dos editores.
Os artigos, desenhos e fotografias não podem ser reproduzidos
total ou parcialmente sem a permissão prévia por escrito 40 LED como sensor óptico
da empresa editora da revista.

Portugal
40 Pisca-pisca com lâmpada incandescente
Bolina Portugal, Lda.
Tel.: +351 21 413-1600 - Fax.: +351 21 413-1601
Ed. Central Park - R. Alexandre Herculano, 3 - 3º B 41 LED como sensor óptico
2795-240 Linda-a-Velha - Portugal

Espanha 42 Circuito para teste do valor mínimo de tensão de funcionamento


Editorial Bolina, S.L.
Rufino González, 13 - 4ª Planta - 28037 Madri
Tel. +34 91 327 07 02 – Fax +34 91 754 26 68 43 Indicador de baixo nível de tensão
DIREITOS DE REPRODUÇÃO
©Elektor International Media BV, 2010
The Elektor House, Allee 1, Limbricht, the Netherlands
56 Interface de áudio digital para computador
Tel +31 46 4389444
Fax +31 46 4370161 60 Estabilização de temperatura
61 Aquecimento automático
A revista Elektor Eletrônica & Microinformática também possui
edições na Holanda, Alemanha, França, Inglaterra, Suécia,
Finlândia, Grécia, Índia, Portugal, Polônia e Espanha.

Assinaturas e Números Atrasados


Editorial Bolina Brasil Ltda.
Alameda Pucuruí, 51-59 – Bl.B Conj.1030
Tamboré, Barueri, SP
MEDIÇÃO & TESTE
CEP 06460-100 – Telefax (11) 4195-8591
assinaturas@editorialbolina.com
24 Alimentação e RFID sem fios
PROPRIEDADES E DIREITOS
Os editores farão todos os esforços para que o material mantenha
total fidelidade ao original e não poderão ser responsabilizados 66 Testador para diodos zener
por erros gráficos surgidos.
As opiniões expressas em artigos assinados não correspondem
necessariamente às opiniões dos editores.

música & iluminação


Todos os desenhos, fotografias, layouts de circuitos impressos e
textos publicados são propriedade da Segment B.V. e não podem
ser reproduzidos e transmitidos por qualquer meio, seja qual for
o motivo, incluindo fotocópias e escaneamentos, integralmente
ou em partes, sem a permissão por escrito dos editores. 14 Receptor DMX512 de três canais
Questões técnicas
Nós podemos responder apenas a questões relativas a projetos
publicados há, no máximo dois anos, na Elektor Eletrônica &
Microinformática. Todas as dúvidas, questões e sugestões devem
ser encaminhadas ao Diretor Técnico da revista. Passatempo & Modelismo
Para a compra de componentes e kits consulte o site
www.elektorbrasil.com.br. Apenas o componentes de projetos
publicados nos últimos dois anos são mantidos em estoque. 50 Pisca-piscas eletrônicos

elektor 09-2010 3
NOTÍCIAS

EDITORIAL Rohde & Schwarz no mercado de osciloscópios


Os últimos dias têm sido marca-
dos pela forte pressão exercida por
alguns países como Índia, Líbano,
Arábia Saudita, Emirados Árabes
Unidos e muitos outros no Oriente
Médio e no norte da África, sobre
empresas que prestam os requisi-
tados serviços de mensagens ins-
tantâneas e eletrônicas. Entre essas
empresas citamos Google, Skype e
RIM, para que cumpram medidas de Em um evento para a imprensa especializada referências nos tradicionais nichos desse
realizado na sede da empresa, em Munique, negócio dão à empresa uma posição de
segurança e não interrompam o for- Alemanha, a empresa está expandindo o liderança. Respondendo aos pedidos dos
necimento do serviço. seu já extenso portfólio de equipamentos nossos consumidores, estamos comple-
Os governos alegam que em nome de teste e medição. “Nossos clientes espe- mentando nossa linha e indo na direção de
ram que ofereçamos uma linha completa de um mercado interessante, ainda que alta-
da segurança nacional e espionagem produtos, o que inclui os osciloscópios,” diz mente competitivo, exatamente o tipo de
eletrônica, militantes possam trocar o presidente e CEO Michael Vohrer. “Para desafio que gostamos de assumir na Rohde
informações e promover ataques, atender essa demanda, estaremos apre- & Schwarz,” declara Vohrer.
sentando um total de seis novos produtos
como o ocorrido em 2008, quando dos quais estamos extremamente orgulho- Duas famílias
militantes paquistaneses utilizaram sos.” Esses produtos são construídos a par- Para otimizar a demanda de seus consumi-
celulares e telefones por satélites tir do comprovado conhecimento da Rohde dores, a empresa está introduzindo duas
& Schwarz, onde há a integração entre o novas linhas de produtos com um total de
para promover o ataque em Mum-
digital e o analógico, o desenvolvimento seis novos instrumentos. A família R&S RTO,
bai, que resultou na morte de 166 do software e do hardware, bem como a abrange osciloscópios com largura de banda
pessoas. Acredita-se também na produção, todos levados a cabo dentro da de 1GHz e 2GHz, e é direcionada para o seg-
empresa. O resultado: osciloscópios com mento de alta performance. “Nosso foco
utilização da telefonia pela internet.
a mais alta taxa de aquisição ativa de sinal aqui é na alta velocidade e ótima resolução
A RIM, fabricante do BlackBerry, do mercado atual, o primeiro sistema de de sinal, dois importantes fatores para as
com receio de proibição nos seus trigger completamente digital, e operação aplicações na vida real,” explica Josef Wolf,
por tela de toque (touch-screen) para uma diretor da subdivisão de osciloscópios.
aparelhos e serviços, fornecerá solu-
maior facilidade no uso. Com essa entrada “Essas características combinadas à nossa
ções técnicas ao governo da Arábia numa nova área, a empresa pretende garan- inovadora interface por tela de toque, per-
Saudita com o intuito de auxiliar no tir seu crescimento no longo prazo. mitem aos usuários realizar testes, mesmo
O mercado de osciloscópios tem sido sólido os complexos, bem como trabalhos de
acesso a dados codificados transmi-
por décadas e está em constante cresci- medição num tempo mínimo.”
tidos pelo aparelho. mento. “Os osciloscópios são uma neces- A família R&S RTM é destinada ao uso uni-
Assim, o governo de forma legal sidade para toda a indústria da eletrônica,” versal, onde quer que seja necessário medir
explica Michael Vohrer. “Nós estamos vis- um sinal elétrico. “Em pesquisa, nas esco-
poderá interferir numa sociedade, e
lumbrando um mercado mundial com um las ou em laboratórios apenas como hobby,
quem sabe exercer o controle mais volume em torno de um bilhão de dóla- todos precisam de osciloscópios,” diz Wolf.
de perto, retirando a nossa privaci- res. Dessa forma, a Rohde & Schwarz está É por isso que nós estamos oferecendo osci-
focando estrategicamente não apenas na loscópios com características sólidas man-
dade. Será que voltaremos a usar o
sua base existente de clientes em áreas tendo uma boa relação custo/benefício no
velho e bom pombo-correio? como comunicação sem fio, ou defesa e segmento médio de até 500 MHz.
indústria aeroespacial, mas em novos clien- Quando se trata de equipamentos mais bási-
tes, particularmente aqueles que formam cos, com largura de banda de até 350 MHz,
Marcos Paulo de S. Silva
as bases do mercado da eletrônica. Os mais a subsidiária da Rohde & Schwarz, Hameg
Diretor Técnico de 75 anos de experiência e suas mais altas Instruments, um fornecedor já estabelecido

4 09-2010 elektor
NOTÍCIAS

baixo e uma exata correlação entre o trig-


ger e o sinal. Além disso, o trigger digital se
rearma imediatamente após um evento de
trigger. A lentidão na restauração típica dos
triggers analógicos foi eliminada de forma
que as falhas do sinal não passam mais
despercebidas.
O conversor A/D single-core nos osciloscó-
pios R&S RTO também ajuda a garantir uma
grande precisão. Ele opera em uma taxa de
1010 amostras por segundo. A abordagem
tradicional para obter essas altas velocida-
des de conversão é a de usar vários con-
versores A/D lentos operando em paralelo
com uma compensação de tempo. Pelo fato
dos conversores A/D não apresentarem um
comportamento sempre consistente, de um
para outro, pode ocorrer uma falta de sin-
cronia entre eles. Em comparação, o conver-
sor de 8 bits com mais de sete bits efetivos
A família R&S RTO, abrange osciloscópios com largura de banda de 1GHz e 2GHz, e é
direcionada para o segmento de alta performance da Rohde & Schwarz proporciona uma faixa
dinâmica muito alta. O resultado é a mínima
distorção do sinal e baixo ruído inerente.
com mais de 20 anos no ramo de osciloscó- a princípio com dois e quatro canais e com Os osciloscópios da empresa apresentam
pios e equipamentos de medição acessíveis, largura de banda de 1 GHz e 2 GHz, com operação por tela de toque (touch-screen),
preenche a demanda do mercado. uma taxa de amostragem de 1010 amos- que redefine o conceito de facilidade na uti-
A Rohde adquiriu essa companhia em tras por segundo. lização. Com caixas de diálogo semitrans-
2005 com o intuito de chegar a novos con- Segundo a empresa, osciloscópios comuns parentes, janelas de medição móveis, barra
sumidores no segmento de equipa-men- capturam sinais em apenas 0,5 por cento de ferramentas configurável e ícones de
tos de baixo custo. No começo de 2008, do ciclo de aquisição. Eles gastam a maior previsão com as forma das ondas ativas, os
a Hameg aumentou satisfatoriamente sua parte do tempo armazenando, processando usuários pode executar mesmo as tarefas
linha de produtos, introduzindo osciloscó- e apresentando os dados enquanto os erros de medição mais complexas com rapidez
pios digitais em uma faixa de frequência que acontecem nesse meio tempo perma- e eficiência. Com sua tela de toque de 10,4
de até 350 MHz. necem indetectáveis. Para corrigir esse polegadas, o instrumento atinge o perfeito
problema, a Rohde & Schwarz aumentou o equilíbrio entre praticidade e portabilidade.
Rápidos, precisos e fáceis de usar tempo de captura em vinte vezes, elevando- Completando sua linha de osciloscópios, a
Osciloscópios são utilizados atualmente em o a 10% do ciclo de aquisição. Um circuito companhia também oferece uma gama de
quase todos os campos da eletrônica - dos integrado dedicado especial permite o pro- provas ativas e passivas. As provas ativas não
circuitos digitais à eletrônica de potência, cessamento em tempo real dos valores das apenas tem propriedades de medição dife-
bem como na engenharia de RF. Do ponto medições digitais numa taxa sem preceden- renciadas, mas também incorporam duas
de vista do utilizador, as qualidades cruciais tes. Como resultado, os novos osciloscópios novas características: o botão micro, que
de um osciloscópio são a velocidade com a podem analisar um milhão de formas de pode assumir uma série de funções dife-
qual ele detecta erros e a precisão com que onda por segundo. Mesmo com essa taxa de rentes para controlar diretamente o osci-
ela mostra as formas de onda. Para esse aquisição, todas as opções de ajuste e fun- loscópio; e a R&S ProbeMeter, um voltíme-
fim, a nova família de osciloscópios R&S ções analíticas continuam disponíveis sem tro embutido que permite medidas em CC
RTO surge com a capacidade de analisar reduzir a velocidade de medição. precisas para checagens rápidas em fontes
um milhão de formas de onda por segundo. A Rohde & Schwarz também usou uma de tensão ou pontos de operação, indepen-
Ela também apresenta o primeiro sistema nova abordagem no sistema de trigger. dente das configurações do canal em uso do
de trigger digital implementado num osci- Com a arquitetura implementada para o osciloscópio.
loscópio, o que minimiza a possibilidade de trigger inteiramente digital, pela primeira Os modelos de 2 e 4 canais da linha R&S RTO
trigger jitter. Sua interface totalmente rede- vez em osciloscópios, o trigger e os dados com largura de banda de 1 GHz e 2GHz, bem
senhada permite uma perfeita visualização, adquiridos dividem uma trilha comum bem como as respectivas provas ativas e passi-
mesmo no caso de medições complexas. como uma única base de tempo. O resul- vas estão disponíveis na Rohde & Schwarz.
Os novos osciloscópios estarão disponíveis tado é um trigger jitter extremamente www.rohde-schwarz.com.br/br

6 09-2010 elektor
Hardware & Software

InterCetro abre
portas para si!
Placa de expansão
para o Cetro
Clemens Valens (Elektor)

Há alguns meses atrás apresentamos o Cetro, um sistema


para o desenvolvimento rápido de protótipos equipado com
um microcontrolador de 32 bits. Sendo este um sistema bastante
poderoso por si só, se o complementarmos com uma placa de expansão,
para facilitar o acesso aos seus vários periféricos, as possibilidades crescem
exponencialmente. Com uma caixa adequada, é possível montar e instalar as
duas placas num sistema final de forma profissional, sem fios pendurados ou módulos
presos com “fita”. É o que se chama prototipagem rápida e inteligente!

Ficam assim delineadas, de forma genérica as especificações esforçamo-nos por tornar o InterCetro o mais flexível possível. Em
para o InterCetro, a placa de expansão para o Cetro [1] de múl- qualquer caso, o número de aplicações que poderia precisar para
tiplas interfaces. Embora o desenvolvimento desta placa tenha utilizar todos os periféricos simultaneamente é bastante limitado.
sido fortemente influenciado pelo Cetro, esta pode ser utili-
zada com qualquer outro sistema similar baseado em micro- Descrição detalhada
controlador, desde que caiba no espaço originalmente reser- É agora é a hora de analisar o esquema do circuito da placa de
vado à placa Cetro. O InterCetro funciona com tensões de 3,3 V e expansão InterCetro. Dado o grande número de portas implemen-
5 V, sendo que é perfeitamente adequada para PICs, AVRs e outros tada, o circuito é grande, mas ainda assim suficientemente fácil de
microcontroladores. seguir (Figura 2).
Feita a introdução, é hora de descobrir o que tem a placa Inter-
Cetro para oferecer. Para dizer a verdade, até tem bastante para RS-232, RS-485 e RS-422
oferecer (Figura 1)! Duas portas RS-232, duas portas RS-485 (ou As portas RS-232 e RS-485 partilham dois conectores sub-D de 9
uma porta RS-422), uma porta DMX512, uma entrada/saída MIDI, vias. Optamos por utilizar conectores macho para garantir a com-
uma porta I2C, uma porta SPI (ou PS/2), espaço para um módulo patibilidade com os portas sérial do PC. No lado do microcontro-
WIZnet Internet, quatro saídas analógicas (conversor D/A), entra- lador, as quatro portas são ligadas a blocos de terminais que lhe
das analógicas (conversor D/A), E/S digitais (lógica, PWM), quatro permitem escolher quais vão ser ligados a uma dada porta COM.
LEDs, um conec- O Cetro dispõe apenas
tor JTAG , um
supor te para Funciona com todos os microcontroladores de duas UARTs, uma
das quais está mais ou
pilha de relógio, menos reservada para
um pequeno espaço para protótipos, conectores de expansão, e o módulo Bluetooth (embora este possa ser desligado), mas é
por fim uma fonte de alimentação de 5 V. Tudo isto numa placa sempre possível produzir UARTs em software (modo bit banging).
de circuito impresso que cabe exatamente em uma atrativa caixa Se optar por utilizar outros microcontroladores, com mais UARTs,
de desenho italiano de 18×20×5,4 cm. a placa InterCetro está preparada para as suportar através destas
Antes de correr para o Serviço Elektor para encomendar esta extra- portas.
ordinária placa, tenha atenção ao fato de não ser possível utili- Dois interruptores DIP permitem-lhe poupar um pino de seleção
zar todos os periféricos simultaneamente. Apesar do Cetro ofe- da saída para aplicações que apenas transmitam em RS-485. Dois
recer imensos periféricos, dispõe apenas de cinquenta pinos, o outros interruptores oferecem a possibilidade de ligar resistências
que implica a partilha de pinos entre alguns deles. Ainda assim de terminação se estas forem necessárias.

8 09-2010 elektor
Hardware & Software

Características técnicas
• Compatível com todos os tipos de • 4 saídas analógicas.
microcontroladores. • I2C, SPI, PS/2.
• Internet. • E/S digitais (lógica, PWM).
• 2 × RS-232, 2 × RS-485. • JTAG para o Cetro.
• Compatível com DMX512. • Funciona com 3,3 V ou 5 V.
• MIDI.

O conector USB do
Cetro é partilhado pela
conexão USB/Sérial e
RS-232 Internet
pela porta USB propria- USB
mente dita. Tiramos partido
do InterCetro para adicionar
um conector USB especial para RS-485 DAC
a conexão USB/Sérial do Cetro. DMX-512 ADC
O integrado que implementa esta
separação é, aliás, o único compo-
nente de montagem em superfície SCEPTRE
desta placa.
MIDI SPI
DMX512
Uma das duas portas RS-485 é também
ligada a um conector XLR para aplicações
DMX512. Esta norma especifica um conector
fêmea de 5 pinos para um transmissor DMX, SD card I2 C
mas muitas aplicações utilizam cabos XLR de 3
vias. A placa de circuito impresso permite a mon- 100174 - 12
tagem de qualquer uma das alternativas, para que
ninguém fique descontente!
Figura 1. Diagrama de blocos da placa de expansão InterCetro.
Interface Digital para Instrumentos Musicais (MIDI)
A porta MIDI consiste apenas numa entrada e numa saída. Para (MISO e INT) podem ser um nível demasiado baixo para controla-
poupar algum espaço na placa de circuito impresso, não conside- dores alimentados a 5 V. Por essa razão adicionamos dois elevado-
ramos a porta MIDI THRU (passagem). Dado que o InterCetro pode res de tensão. Estes podem contudo afetar a velocidade máxima de
funcionar com 3,3 V e 5 V, são utilizados dois interruptores DIP comunicação, sendo que se deseja alimentar todo o circuito a partir
para garantir uma corrente de saída de 5 mA, habitual na norma de uma tensão de 3,3 V, é sem dúvida preferível não os montar e
MIDI, em qualquer um dos casos. Ainda assim, se por acaso se fazer uma conexão direta em vez de montar Q1 e Q2.
esquecer dos interruptores na posição de 3,3 V quando o circuito Note que o InterCetro não dispõe de uma fonte de alimentação de
funcionar com uma tensão de 5 V a corrente na saída é de apenas 3,3 V, uma vez que já existe uma no Cetro. Assim, se utilizar um
10 mA, o que é perfeitamente aceitável para a maioria dos isola- outro microcontrolador que funcione com 5 V, mas pretender uti-
dores ópticos, até (ou especialmente) nos mais antigos. lizar este módulo para Internet, deve também disponibilizar uma
A porta MIDI ocupa as mesmas portas/pinos do microcontrolador tensão de 3,3 V.
que as portas RS-232 e RS-485.
DAC e MUX
SPI, PS/2 e Internet O Cetro tem um conversor digital/analógico (D/A) de 10 bits. Para
O InterCetro oferece um conector mini-DIN de 6 vias para expe- o tornar um pouco mais flexível, adicionamos um demultiplexa-
riências com a porta SPI. As conexões deste conector foram feitas dor analógico de quatro canais. Desta forma, o InterCetro passa
de forma a manter a compatibilidade com a porta PS/2, permi- a dispor de quatro saídas analógicas, disponíveis no conector de
tindo a conexão de um mouse ou teclado, ou até dos dois. Note 25 vias sub-D K22.
que é altamente desaconselhável ligar ou desligar equipamentos O ganho dos estágios de saída é ajustável (talvez até ajustável, por
quentes nesta porta (isto é, quando o circuito está alimentado). razões de simplicidade), e estes são sempre alimentados a partir
A porta SPI é partilhada com o módulo WIZnet WIZ812MJ. Este da tensão de 5 V, sendo que um sistema de 3,3 V pode produzir
módulo, que implementa uma pilha TCP/IP em hardware, foi des- sinais analógicos até (praticamente) 5 V. O ganho é configurável
crito em [2] e oferece várias interfaces para microcontrolador, através de resistências ajustáveis de 25 voltas. Se pretender um
incluindo a interface SPI aqui utilizada (uma vez que o Cetro não ganho unitário, pode omitir estas últimas e ligar as entradas inver-
dispõe de uma porta paralela). soras diretamente às saídas. Esta simples modificação vai-lhe per-
Este módulo permite o acesso à Internet e é alimentado por uma mitir poupar alguns dólares.
tensão de 3,3 V, mas aceita sinais até 5 V. Contudo, os sinais de saída O (de)multiplexador IC6 contem na realidade dois multiplexa-

elektor 09-2010 9
Hardware & Software

VCC +3V3 +5V +3V3

K16 J6
A 1 55 4
R9 MIDI IN GND GND
USB_D+ 2 54 3 P1.19
DPOS P1.19/TRACEPKT3
470R

1 3 USB_D- 3 53 2
DNEG 3V3
R7 4 52 1 VREF
IC4 +5V MOD1 VREF
4N35-M 220R 4 5
2 J3
5 6 1 P0.21 1 5
P0.21/PWM5/AD1.6/CAP1.3 J5
K7 D1 P0.22 2 6 51 9 P1.27
P0.22/AD1.7/CAP0.0/MAT0.0 P1.27/TDO
P1.27 15 16 P1.18 3 7 50 8 P1.28
P1.18/TRACEPKT2 P1.28/TDI
P0.11 13 14 1N4148 P0.25 4 8 49 7 P0.23
P0.25/AD0.4/AOUT P0.23/VBUS
P0.9 11 12 4 2 P1.17 5 9 48 6 RESET
P1.17/TRACEPKT1 RESET
P0.1 9 10 P0.28 6 10 47 5 P1.29
P0.28/AD0.1/CAP0.2/MAT0.2 P1.29/TCK
P1.26 7 8 P0.29 7 11 46 4 P0.20
VCC P0.29/AD0.2/CAP0.3/MAT0.3 P0.20/MAT1.3/SSEL1/EINT3
P0.16 5 6 8 12 45 3 P0.19
3V3 P0.19/MAT1.2/MOSI1/CAP1.2
P0.8 3 4 A K17 P0.30 9 13 44 2 P0.18
R4 MIDI OUT R5 P0.30/AD0.3/EINT3/CAP0.0 P0.18/CAP1.3/MISO1/MAT1.3
P0.0 1 2 P1.16 10 14 43 1 P1.30
P1.16/TRACEPKT0 P1.30/TMS
39R

39R
3 1
R10 R11
J4 090559 Sceptre J2
180R 5 4 180R 1 15 42 14 P1.20
2 GND P1.20/TRACESYNC

8
S2-8 *9 7
S2-7 * 10 P0.31
P0.0
2
3
16
17
P0.31/UP_LED/CONNECT P0.17/CAP1.2/SCK1/MAT1.2
41
40
13 P0.17
12 P0.16
P0.0/TXD0/PWM1 P0.16/EINT0/MAT0.2/CAP0.2
P1.31 4 18 39 11 P0.15
P1.31/TRST P0.15/RI1/EINT2/AD1.5
P0.1 5 19 38 10 P1.21
P0.1/RXD0/PWM3/EINT0 P1.21/PIPESTAT0
P0.2 6 20 37 9 P0.14
P0.2/SCL0/CAP0.0 P0.14/DCD1/EINT1/SDA1
P1.26 7 21 36 8 P1.22
VCC P1.26/RTCK P1.22/PIPESTAT1
P0.3 8 22 35 7 P0.13
P0.3/SDA0/MAT0.0/EINT1 P0.13/DTR1/MAT1.1/AD1.4
P0.4 9 23 34 6 P0.12
P0.4/SCK0/CAP0.1/AD0.6 P0.12/DSR1/MAT1.0/AD1.3
P1.25 10 24 33 5 P0.11
C18 P1.25/EXTIN0 P0.11/CTS1/CAP1.1/SCL1
R38 P0.5 11 25 32 4 P1.23
P0.5/MISO0/MAT0.1/AD0.7 P1.23/PIPESTAT2
NC P0.6 12 26 31 3 P0.10
100n P0.6/MOSI0/CAP0.2/AD1.0 P0.10/RTS1/CAP1.0/AD1.2
P0.7 13 27 30 2 P0.9
9 P0.7/SSEL0/PWM2/EINT2 P0.9/RXD1/PWM6/EINT3
S2-1 I 2C GPIO-A P1.24 14 28 29 1 P0.8
16 1 20 VDD 21 IO0 P1.24/TRACECLK P0.8/TXD1/PWM4/AD1.1
INTA GPA0
P0.14 22 IO1
S2-2 GPA1 1 59 56 VBAT
15 2 19 23 IO2 PWRSWC VBAT
INTB GPA2 2 60 57
IC5 24 IO3 PWRSWH GND
GPA3
25 IO4 JP9
GPA4
RESET 18 26 IO5
RESET GPA5 +5V +5V
P0.2 12 27 IO6
SCL GPA6 3
P0.3 13 28 IO7 R22
SDA GPA7 1 DAC0
IC7.A 100R
VCC MCP23017 K23 2
-E/SP 1 IO8 1
GPB0 C15 C14 4
R37 R36 R35 2 IO9 2
GPB1 IC7 R23
3 IO10 3 C8
100n 100n
47k

47k

47k

GPB2 11 C4
4 IO11 4 10k
GPB3 16
15 5 IO12 5 100n
A0 GPB4 P1.23 6 VDD 10n
16 6 IO13 6 INH
A1 GPB5 P1.22 10
17 7 IO14 7 A
A2 GPB6 P1.21 9 IC7 = TS924IN 5
8 IO15 8 B IC6 R27
3 4 5 GPB7 12 7 DAC1
VSS 9 X0 IC7.B 100R
14 6
10 P0.25 13 X1
X
I 2C GPIO-B X2
15
14 13 12 11 R24
X3 C9
S2-3 S2-4 S2-5 C5
4052N 10k
1 100n
Y0
R45 5 10n
P0.15 3 Y1
100R Y 2
Y2
4 10
Y3 R28
VEE VSS 8 DAC2
K14 IC7.C 100R
7 8 9
2 1
4 3
R25
P0.15 6 5 C10
C6
8 7 10k
100n
R43 10n

100R
MUX
2
3 1 +5V 12
P0.25 R29
Level shifter 14 DAC3
JP3 1-2: 5V IC7.D 100R
13
JP1 2-3: 3V3
1 3
+5V LD1117V50
+3V3 +5V R26
P0.3 2 IC9.B C11

BS170 VCC
* C7
10k
3 1 100n
10n
K19 +5V VCC
2 1
Q3 JP6 IC9.A
4k7

4k7

VCC R34 R21


3 D3 7805 * D2
3
2
1
+3V3
4
K21
R42 R41
5 1N5817 1N5817 JP2
6 1-2: 3V3 VBAT
RJ-11 2-3: 5V
4k7

4k7

Q4
C12 D4 C13
BAT1

10u 100u
16V 1N5817 16V
BS170
P0.2
2
1 3 D5
Level shifter K8 1N5817
JP4 1-2: 5V
1 R47
USB_D-
JP5 2-3: 3V3 2 100R
3 1
3 R46
R44 C19 USB_D+
2 4 100R
100R
10n 1kv 5
S2-6
R15
P0.14 6 11 R58
100R
1M
MINI-USB
A A

10 09-2010 elektor
Hardware & Software

Figura 2. Esquema completo do circuito da placa


VCC
InterCetro. As dimensões do circuito são bastante
consideráveis, dado o elevado número de componentes, R39
IC2 8 C16

47k
mas nada muito complicado. K3 VCC
R1 1 S1-1

120R
15 16 1 100n
R
13 14
VCC 2 7 8
11 12
K15.B 2
9 10
3 6
7 8
3
K20 5 6 4
D
1 2 3 4 S1-2 RS485-A/DXF
2 A
GND
P1.24 3 4 1 2 1
5
P1.26 5 6 P1.25
SN65HVD08P
P0.31 7 8 P1.31 P1.19 7 NC3FBH2
P0.30 9 10 P1.16 VCC
P0.28 11 12 P0.29 DXF-512
K4 R40
P1.18 13 14 P1.17 IC1
15 16 8 C17

47k
P1.23 15 16 P0.11 R2 3 S1-3
VCC
13 14 K15.A
P1.22 17 18 P1.21 5

120R
11 12 1 100n 4
P0.16 19 20 P0.17 R
9 10
P1.20 21 22 P1.30 2 7 6 3
7 8
P0.18 23 24 P0.19
5 6
P0.20 25 26 P1.29 3 6 A
3 4 2
1
RESET 27 28 P0.23
1 2 4
P1.28 29 30 P1.27 D
S1-4 RS485-B NC5FBH
4
P1.19 31 32 VBAT GND
33 34 5
SN65HVD08P
P1.20 5
EXTENSION
K5
+5V +3V3 P1.27 15 16
COM2 A
P0.11 13 14 C3 VCC K1
P0.9 11 12 1
6
P0.1 9 10 470n 2
2 7
P1.26 7 8 3
1 V+ 16 8
P0.16 5 6 C1 C1+ 4
9
P0.8 3 4 IC3 5
100n 3
P0.0 1 2 C1Ð
9 8
R2OUT R2IN
10 7
T2IN T2OUT A
VCC 12 13
K6 R1OUT R1IN
11 14
15 16 T1IN T1OUT K2
4
13 14 C2 C2+ 1
6
R70 R57 R71 R72 11 12 MAX3232EEPE 2
470n 5 15 7
9 10 C2Ð 3
560R

560R

560R

560R

V- 8
7 8 4
6 9
D6 D7 D8 D9 5 6 C20 5
3 4
1 2 470n COM1
A
P1.28

P1.29

P1.30

P1.31

VCC

VCC
R20 R19 R18 R17
P0.5
K13
NC

NC

NC

NC

K18
VREF 1 2 VCC P0.6 1 2
P1.31 NTRST 3 4 GND
3 4
P1.28 TDI 5 6 GND PS/2-SPI
P1.30 TMS 7 8 GND P0.4
5 6
P1.29 TCK 9 10 GND
P1.26 RTCK 11 12 GND P0.7
P1.27 TDO 13 14 GND A
+3V3
RESET NSRST 15 16 GND
VCC +3V3
JP7 DBGRQ 17 18 GND
2 12 4
DBGACK 19 20 GND 3V3D D0
21 3
JTAG enable 3V3D D1
R30 R31 6
JTAG D2
1 MOD2 5
4k7

4k7

R16 R14 R13 R12 Q1 D3


1 8
MOSI D4
10k

4k7

10k

10k

2 7
1 MISO D5
JP8 23 10
SCLK D6
2 BS170 24 9
WIZ CS SCS D7
WIZ812MJ
A
Suporta 5V A0
31
K22 P1.28 3
22 32
RESET A1
1 GPIO7 R69 IO7 RESET 28 33
IO6 R68 GPIO6 14 100R INT A2
100R 2 GPIO5 R67 IO5 1 VCC +3V3 34
IO4 R66 GPIO4 15 100R JP13 A3
100R 3 GPIO3 R65 IO3 26 35
IO2 R64 GPIO2 16 100R 2 RD A4
100R 4 GPIO1 R63 IO1 WIZ RST 25 36
IO0 R62 GPIO0 17 100R WR A5
100R 5 DAC1 DAC1 R32 R33 27 37
DAC0 DAC0 18 CS A6
6 DAC3 DAC3 P1.29 3 38
4k7

4k7

DAC2 DAC2 19 Q2 A7
7 SSEL0/PWM2/EINT2 R6 P0.7 13
P0.0 R3 TXD0/PWM1 20 100R A8
100R 8 TXD1/PWM4/AD1.1 R48 P0.8 P0.16 39 14
P0.1 R8 RXD0/PWM3/EINT0 21 100R LINKLED A9
100R 9 RXD1/PWM6/EINT3 R50 P0.9 30 15
P0.21 R49 PWM5/AD1.6/CAP1.3 22 100R TX_LED A10
100R 10 RTS1/CAP1.0/AD1.2 R52 P0.10 BS170 29 16
P0.25 R56 AOUT/AD0.4/CAP1.3 23 100R R60 D11 RX_LED A11
100R 11 DTR1/MAT1.1/AD1.4 R54 P0.13 17
P0.12 R53 DSR1/MAT1.0/AD1.3 24 100R 560R A12
100R 12 AD1.7/CAP0.0/MAT0.0 R51 P0.22 +3V3 TX 11 18
P0.15 R55 RI1/EINT2/AD1.5 25 100R GND A13
100R 13 40 19
R59 D10 GND A14
560R
A
RX INTERNET

100174 - 11

elektor 09-2010 11
Hardware & Software

dores, sendo que, como não gostamos de desperdiçar preciosos O conector sub-D de 25 vias (K22) permite o aceso a uma seleção
recursos, o multiplexador não utilizado está acessível através do de várias portas do microcontrolador. Assim, podem-se encon-
bloco de terminais de 8 vias, o que lhe permite ligar este multiple- trar aqui as saídas PWM, certas entradas analógicas, as saídas digi-
xador à saída do conversor D/A, ou a uma das entradas analógicas tais, algumas interrupções e algumas E/S básicas. Cada um destes
do Cetro, ou até a ambas. sinais é protegido por uma pequena resistência de limitação de
corrente. Esta proteção é bastante rudimentar, sendo que deve
I2C e GPIO sempre evitar descuidos, ligando ou desligando algum periférico
O Cetro tem duas portas I2C, uma das quais acessível sem interferir com a alimentação ainda ligada, por exemplo.
grandemente com as restantes funções. É nesta porta que ligamos O bloco de terminais de 34 vias (K20) permite o acesso aos res-
o conector de 6 vias RJ11 através de um elevador de tensão. Passa tantes sinais do microcontrolador. Estas conexões não têm qual-
assim a ser possível ligar um periférico I2C de 3,3 V (por exemplo, quer tipo de proteção, sendo que deve ter uma atenção redobrada
um controlador Nunchuck para o console de jogos Nintendo Wii) sempre que as utilizar. Estes terminais estão no lado oposto a uma
a uma placa InterCetro que funcione com 5 V (ou 3,3 V); este ele- pequena área de placa perfurada onde pode montar alguns com-
vador de tensão é bidirecional. O prático Terminal de Bolso des- ponentes para criar uma nova interface à sua medida. Existe tam-
crito juntamente com a bancada para automação de motores de bém uma fileira de contatos (furos) de cada lado do microcontro-
combustão [3] funciona com 5 V, sendo também possível utilizá-lo lador, para acesso direto a todos os sinais do mesmo.
com o Cetro a 3,3 V. O Terminal de Bolso dispõe de um mostrador
LCD, cinco botões de pressão e um codificador rotativo, todos eles Fonte de alimentação e bateria
acessíveis através da interface I2C. Durante a fase de desenvolvimento de aplicações o Cetro vai estar
O circuito de elevação de tensão utilizado foi obtido numa nota ligado a um computador através de um cabo USB, diretamente
de aplicação da Philips (ou NXP) [4]. É simultaneamente simples, no próprio Cetro ou através da placa InterCetro. Nesta situação,
engenhoso e bidirecional. Consideremos num primeiro exemplo o a porta USB pode fornecer toda a energia necessária. Para aplica-
sinal SDA (P0.3), com uma tensão de funcionamento do microcon- ções onde a conexão USB não seja possível, ou sequer necessá-
trolador de 3,3 V e uma tensão de saída de 5 V (ou seja, todos os ria, ou se for necessária uma corrente superior à que a porta USB
jumpers estão na posição 1 e 2). Se a linha SDA (no modo de saída) pode fornecer, a placa InterCetro dispõe também de uma fonte
no terminal fonte do FET Q3 estiver a 0 V, Q3 conduz e como tal a de alimentação de 5 V. Foi considerada a utilização de dois tipos
tensão de saída (dreno) distintos de reguladores
fica também a 0 V. Se de tensão, um 7805 ou
SDA estiver a 3,3 V, Q3 é Código fonte e hardware open source um regulador de baixa
desligado e a saída fica a queda de tensão do tipo
5 V, graças à resistência pull-up R21. 1117, que por qualquer razão não têm a mesma disposição de
No sentido oposto, quando SDA está configurado como entrada, pinos. Logo, deve ter um cuidado especial quando ligar um des-
o funcionamento é mais engenhoso. Se o dreno estiver a 0 V, o tes reguladores.
diodo supressor em Q3 conduz e leva a fonte de Q3, e SDA, aos 0 A fonte de alimentação da placa InterCetro tem prioridade sobre
V. Isto leva à subida de Vgs, o FET começa a conduzir, e SDA fica os 5 V da porta USB, através do diodo D4, tornando a tensão de
definitivamente a 0 V. Se o dreno estiver a 5 V, a resistência de saída do regulador cerca de 0,3 V superior à da porta USB. Os
pull-up R34 garante que a entrada SDA fica com um nível de 3,3 V. outros diodos (D2, D5 e o outro D2 no Cetro) tomam conta do
Na porta I2C é também ligado um integrado de expansão de por- resto. Um fator importante a ter em conta é que quando as placas
tas da Microchip. Este integrado é compatível com 3,3 V e 5 V, são alimentadas a partir da porta USB, a tensão de alimentação
sendo que não são necessários elevadores de tensão. Oferece não é exatamente 5 V, mas mais provavelmente 4,7 V. Já quando
16 E/S programáveis com interrupções e muitas outras possibi- o circuito é alimentado pela fonte de alimentação na placa Inter-
lidades. Uma vez que se trata de um dispositivo que funcione no Cetro, a tensão é efetivamente 5 V.
barramento I2C (embora também esteja disponível numa versão A tensão de funcionamento da placa InterCetro VCC é selecionada
SPI), requer um endereço de acesso. Este pode ser configurado através de JP2. Conforme mencionado anteriormente, o InterCetro
utilizando três interruptores, isto apesar de um endereço I2C ser não gera uma tensão de 3,3 V, mas aproveita a tensão com este
constituído por sete bits. O próprio integrado preenche os restan- valor proveniente da placa Cetro. Se optar por utilizar um outro
tes quatro bits mais significativos, sendo que o seu endereço tem microcontrolador mas precisar desta tensão, deve garantir a sua
sempre a forma 0010xxx onde xxx representa a posição dos três geração de outra forma.
interruptores (0×20 a 0×27 em hexadecimal). Uma pequena desvantagem da placa Cetro é a ausência da ten-
A porta A do integrado está acessível através do conector sub-D de são da respectiva bateria nos conectores de expansão, isto apesar
25 vias. A porta B está ligada ao bloco de terminais de 9 vias K23. da placa dispor dessa mesma bateria. Se utilizar uma outra placa
com microcontrolador, o InterCetro dispõe do seu próprio suporte
JTAG, LEDs e outros conectores de bateria de relógio. Mas atenção! Se ligar a bateria do Cetro ao
O conector JTAG está ligado de acordo com a norma definida para InterCetro não encaixe uma outra bateria em BAT1.
microcontroladores ARM, isto é, 20 contatos com resistências de Pode ligar um interruptor em JP9 para comandar a alimentação do
pull-up (opcionais). Para ativar o modo JTAG deve ser colocado o Cetro. Isto é especialmente útil se o Cetro for alimentado a partir
jumper JP7 no Cetro e em seguida deve ser feito um reset à placa. de uma bateria. Não se esqueça de ligar os contatos do interruptor
Quatro LEDs, para montagem a 90 graus, por baixo da placa do do Cetro aos do InterCetro, que ficam imediatamente por baixo.
Cetro (não seriam visíveis de outra forma), partilham alguns dos
sinais da porta JTAG. Se houver suspeitas que estes interfiram com Conclusão
a comunicação JTAG, não tenha receio de os remover. A placa InterCetro utiliza apenas componentes convencionais,

12 09-2010 elektor
Hardware & Software

Figura 3. Combinação do Cetro + InterCetro + WIZ812MJ.

com a única exceção do conector USB, e portanto é bastante sim- (100174-1)


ples de montar. Além disso, pode montar apenas os componentes Artigo original: InterSceptre opens doors (and ports!) for you – June 2010
que estamos acostumados a utilizar, podendo evitar assim alguns
conectores bastante caros. Internet
A placa de circuito impresso do InterCetro foi projetada para caber
numa caixa que, para além da inerente proteção, lhe permite dar [1] http://www.elektorbrasil.com.br/revistas/2010/junho/reinar-
um aspecto profissional a todo o conjunto, podendo este ser uti- com-o-Cetro.1386681.lynkx (“Reinar com o Cetro”, Elektor Nº
lizado diretamente numa aplicação final sem embaraços. 99, Junho de 2010).
Escolhemos a caixa Teko 935.5 (branca) ou 935.9 (preta), que con- [2] http://www.elektorbrasil.com.br/revistas/2010/fevereiro/servi-
tém duas tampas plásticas que formam a estrutura principal (úteis dor-web-r32c.1256279.lynkx (“Servidor Web R32C”, Elektor Nº
para fixar também o módulo Bluetooth do Cetro), e dois painéis 95, Fevereiro de 2010).
frontais, suportados pelas mencionadas tampas. Estas unem-se
entre si através de um par de parafusos. A caixa que pode ver no [3] http://www.elektorbrasil.com.br/revistas/2009/julho-no-88/
nosso protótipo foi-nos gentilmente cedida pela Okatron [6], o bancada-para-automacao-de-motores-de-combustao.1009095.
distribuído francês da Teko. lynkx (“Bancada para automação de motores de combustão”,
A placa InterCetro é inteiramente disponibilizada, tal como o Cetro, Elektor Nº 88, Julho de 2009).
com a filosofia open source, e como tal os diagramas e os desenhos [4] ics.nxp.com/support/documents/interface/pdf/an97055.pdf
da placa de circuito impresso são disponibilizados gratuitamente em
formato Eagle no site da Elektor, assim como a lista de componen- [5] www.teko.it/en/prodotti/famiglia/FP/serie/30
tes e alguns pequenos programas para testar e utilizar o InterCetro. [6] www.okatron.fr

elektor 09-2010 13
música & iluminação

Misturador de luzes com


interface DMX

Receptor DMX512 de três canais

Dirk Gehrke e Walter Nitzold (Alemanha)

O sistema DMX512-A já é há muito tempo largamente utilizado em sistemas de iluminação de palco.


O controlador que vamos apresentar utiliza um microcontrolador MSP430 para comunicar com o
barramento DMX e gerar os sinais de controle PWM para três excitadores de potência para LEDs. O
endereço DMX pode ser configurado através de micro-interruptores.

O DMX512, também conhecido como bytes. A velocidade de comunicação e o Iluminação indireta de paredes
DMX512/1909, é um protocolo de comu- tamanho máximo dos pacotes permitem a Um sistema de iluminação indireta é cons-
nicação digital entre controladores e repetição da informação a uma frequência tituído por barras de luz que iluminam a
equipamentos de iluminação. Baseia-se de 44 Hz. Tal como se poderá desprender do parede a partir de baixo ou de cima. No
na interface RS485, muito utilizada em nome do protocolo, existem 512 canais de projeto descrito neste artigo, estas barras
ambientes industriais pela sua excelente controle independentes, cada um com uma de iluminação são constituídas por uma ou
imunidade ao ruído, garantida através de resolução de 8 bits. Podem ser ligados, no mais placas de circuito impresso estreitas,
um método de transmissão diferencial. máximo, 32 receptores em série. No caso cada uma delas equipada com três LEDs
Esta interface pode ser utilizada para ligar de se pretender ligar mais de 32 recepto- de potência de 350 mA. Podem ser ligadas
um controlador a um ou mais receptores, res, terão de ser instalados repetidores. diversas placas destas em série.
num barramento com um comprimento Cada segmento série tem de ser terminado O receptor DMX512-A de três canais vai
até 455 m. Em teoria, este comprimento por uma resistência de 120 Ω, para evitar a receber e processar o sinal DMX e com-
pode atingir os 1000 metros. A velocidade reflexão dos sinais. O cabo de interconexão parar o endereço com o valor definido
de transmissão normalmente utilizada é deve obedecer algumas recomendações, pela posição dos micro-interruptores DIP.
de 250 kbits/s, sendo os dados transfe- muitas vezes ignoradas na prática. A cone- Em seguida, gera três sinais PWM de
ridos em pacotes com o máximo de 513 xão é feita com interfaces XLR de 3 ou 5 vias. 8 bits que vão controlar os andares de

14 09-2010 elektor
música & iluminação

potência de corrente constante. Tabela 1. Conexões da placa três entradas de conversão A/D (A0, A1 e
Como se pode ver no diagrama de blo- adaptadora DMX para JTAG. A2) ou a oito pinos de E/S.
cos, apresentado na Figura 1, o compo- Pinos conector Dada a reduzida largura da placa de cir-
nente principal é um microcontrolador Pinos conector da placa do cuito impresso optou-se pela interface Spy-
MSP430 que recebe os sinais lógicos pro- JTAG MSP430 receptor by-Wire para a programação. Esta interface
venientes de um receptor RS-485 inte- DMX512-A utiliza apenas um pequeno número de
grado. Segundo as especificações, devem NL 1 linhas, mantendo o conteúdo de todas as
ser utilizadas interfaces XLR de 5 pinos. As funcionalidades de programação e depu-
interfaces de 3 pinos, apesar de não serem 9 2 ração. Deste modo consegue-se manter a
aconselhadas, são de fato as mais utiliza- 1 3 placa suficientemente estreita para caber
das na prática, razão pela qual se optou  7 4 numa calha de alumínio, sem sacrificar
igualmente por este tipo de interfaces. No todas as funcionalidades de programação/
 4  5
esquema apresentado na Figura 2 pode- depuração e sem utilizar um conector JTAG
se ver as conexões das interfaces XLR de 3 NL 6 de 14 pinos.
pinos, macho e fêmea. NL = Não Ligado. Isto significa, por outro lado, que terá de
A tensão de alimentação é fornecida por fabricar um adaptador entre o conector
um adaptador de 12 V/1 A ligado ao conec- JTAG e a interface de 6 pinos existente na
tor J1. As três fontes de corrente constante trolador MSP430 através dos pinos AVcc placa. Os pinos do adaptador são apresen-
(Figura 3) são alimentadas diretamente e DVcc, devidamente desacoplada por tados na Tabela 1.
por este transformador. O regulador linear capacitores entre estes pinos e a massa. A Para utilizar o protocolo DMX é necessá-
de tensão U8 (TPS71550) fornece uma ten- resistência de pull-up para o pino de Reset rio atribuir um endereço a cada receptor.
são regulada de 5 V para o integrado dedi- garante a inicialização em modo normal. Para isso é utilizado um conjunto de micro-
cado ao barramento RS485 (U9). A tensão Para iniciar em modo de programação é interruptores DIP que permitem definir
de 3,3 V para o MSP430F2274 é regulada utilizado o sinal de reset proveniente do um endereço codificado binariamente. As
a partir da tensão de 5 V através de uma próprio programador. fontes de corrente constante U1, U5 e U7
resistência série (R25) e de um diodo Zener Para permitir a expansão do circuito, as podem ser ligadas ou desligadas pelo sinal
(D4). portas não utilizadas podem ser aces- Enable proveniente do pino P2.4. O sinal
sadas através dos conectores J3 e J4. DMX é recebido pelo módulo USCI (UC0)
MSP430 Deste modo, o usuário pode acessar a um do MSP430. Este módulo apenas consegue
A tensão de 3,3 V é fornecida ao microcon- módulo de comunicação adicional (UC1), processar sinais RS-232. Para converter os

J3
J4
D1 +12V
J1
DC U8 ~ 3V3 U1 3 J2

Input TPS71550 TPS62110


1

J5 5V

DMX
XLR D2
U9 U3 U5 DMX

RS485 MSP430 TPS62110


J4 3 3
J4 J5
2 2
XLR

SW1
1 DMX DMX 1
J3 D3
ON 1 U7
Spy by Wire
2
3
TPS62110 081004 - 12

4
5
6
7
081004 - 13

Figura 2. Diagrama esquemático da


placa adaptadora para o receptor DMX e
Figura 1. Diagrama de blocos do receptor DMX de três canais e excitadores de potência. conexões para o cabo de alimentação AC.

elektor 09-2010 15
música & iluminação

+3V3

R7
C6 C10 C24 C25

47k
100n 10u 10u 100n

U8
+5V
38 39 14 TPS715xxDCKR
+12V
J1 J2 DVCC DVCC AVCC +12V R25 +3V3
RST 5 37 TST 4 5
RST/NMI/SBWDAT TEST/SBWCLK IN OUT 330R
C9
U3
9 P3.0 3 1
P3.0/UC1STE/UC0CLK NC FB/NC
2n2
10 P3.1
P3.1/UC1SIMO/UC1SDA GND
P2.0 6 11 P3.2 D4
P2.0/ACLK/A0/OA01 P3.2/UC1SOMI/UC1SCL C11 2 C12 C13
P2.1 7 12 P3.3
P2.1/TAINCLK/SMCLK/A P3.3/UC1CLK/UC0STE
P2.2 8 23 1u 1u 4u7
DMX DMX P2.2/TA0/A2/OA0I1 P3.4/UC0TXD/UC0SIMO R9
DIMM-LED-BL 27 24 RX
DMX DMX P2.3/TA1/A3/VREF-/Ve P3.5/UC0RXD/UC0SOMI 36k
NET-EN 28 25 BZX84C3V3
P2.4/TA/A4/VREF+/VeR P3.6/A6/OA012
P2.5 40 26 +3V3
P2.5/Rosc P3.7/A7/OA1I2
SW1
RX 15 29
P4.0/TB0 P1.0/TACLK/ADC10CLK 2 1
16 30 ON 1
+5V +3V3 P4.1/TB1 P1.1/TA0 4 3
17 MSP430F2274 31 2

G+

R+

B+
P4.2/TB2 P1.2/TA1 6 5
18 32 3 J4
J3 P4.3/TB0/A12/OA0O P1.3/TA2 8 7 P3.3
P2.1 DIMM-LED-GR 19 33 4
P4.4/TB1/A13/OA1O P1.4/SMCLK/TCK 10 9 P3.2
DIMM-LED-RE 20 34 5
P4.5/TB2/A14/OA013 P1.5/TA0/TMS 12 11 P3.1
8 TST 21 35 6
P4.6/TBOUTH/A15/OA1I P1.6/TA1/TD1/TDI/TCL 14 13 P3.0
VCC RST 22 36 7

XOUT/P2.7
1 P4.7/TBCLK P1.7/TA2/TDO/TDI P2.5
J5

XIN/P2.6
U9 R 1 7 4 6
7 2 P2.2
B RE P2.0 G+ R+ B+
D8
6 3 DVSS DVSS PwPd AVSS
A DE ASMT
4 1 4 3 Y1 2 41 13 -MT00
D
G- R- B- -00001
GND
R29 R6 R8 2 3 5
5
SN65HVD3082EDGK C7 32kHz C8
100k

10k

68k
12p 12p

R-

B-
G-
DIMM-LED-RE DIMM-LED-GR DIMM-LED-BL

G+
R+

B+
NET-EN

NET-EN

NET-EN
G-

B-
R-

D5 D6 D7
+12V +12V +12V
L1 LL4148 L3 LL4148 L4 LL4148
2 15 2 15 2 15
VIN SW VIN SW VIN SW
3 14 6uH8 D1 3 14 6uH8 D2 3 14 6uH8 D3
VIN SW VIN SW VIN SW
R26 R4 R27 R17 R28 R24
U1 R1 U5 R16 U7 R20
4 13 4 13 4 13
330R

330R

330R
348R

348R

348R
EN PG 1M EN PG 1M EN PG 1M
R3 R15 R21
8 10 FB = 1.153V 8 10 FB = 1.153V 8 10 FB = 1.153V
VINA FB 960R VINA FB 960R VINA FB 960R
R2 ASMT R18 ASMT R22 ASMT
TPS62110RSA -MR00 TPS62110RSA -MG00 TPS62110RSA -MB00
1k33

1k33

1k33
-AGH00 -AGH00 -AGH00
5 5 5
SYNC SYNC SYNC
7 6 7 6 7 6
LBI LBO LBI LBO LBI LBO
U2 U4 U6
AGND

AGND

AGND
PGND
PGND

PGND
PGND

PGND
PGND
R5 R19 R23
PwPd

PwPd

PwPd
GND
GND

GND
GND

GND
GND
C1 C2 C3 C4 C5 C14 C17 C16 C18 C15 C23 C20 C21 C22 C19
0R51

0R51

0R51
9 11 12 17 1 16 Vref = 2.5V 9 11 12 17 1 16 Vref = 2.5V 9 11 12 17 1 16 Vref = 2.5V
10u 10u 1u 22u 22u 10u 10u 1u 22u 22u 10u 10u 1u 22u 22u
TL431AIBDZ TL431AIBDZ TL431AIBDZ

A A A
081004 - 11

Figura 3. Esquema elétrico completo do receptor DMX de três canais.

sinais RS-485 em sinais RS-232 é utilizado rente nominal contínua até 1,5 A. Com os de tensão de 170 mV a 350 mA, ou seja,
o conversor SN65HVD3082E (U9). valores indicados no esquema, o circuito uma potência dissipada de apenas 63 mW.
Os sinais PWM são gerados recorrendo aos gera uma corrente de apenas 350 mA por Se for utilizada uma corrente mais elevada,
temporizadores A e B do MSP430F2274. canal, a partir de uma tensão de alimen- o valor da resistência R5 pode ser reduzido.
Estes sinais controlam as fontes de corrente tação entre 5 e 17 V. Todavia, esta solução degrada ligeira-
constante U1, U5 e U7. Através de software O conversor redutor U1 está configurado mente a precisão, fazendo com que o
é possível gerar até três sinais PWM com como fonte de corrente e não como regula- ponto de funcionamento se altere face a
apenas dois temporizadores. Esta técnica dor de tensão. Em vez de um divisor de ten- uma mudança abrupta na carga. Com uma
foi utilizada no artigo LED RGB para ilumi- são, é utilizada uma resistência cuja queda resistência de 0,51 Ω para R5 a precisão é
nação ambiente publicado na edição de de tensão é proporcional à corrente de de 10% a 500 mA, 5% a 1A e 2% a 2A. Os
Agosto de 2008 da Elektor. saída. Como o regulador espera uma ten- cálculos para a determinação do valor dos
são de realimentação de 1,135V na entrada componentes estão descritos na caixa de
Fontes de corrente constante do amplificador de erro, a potência dissi- texto apresentada mais à frente.
As três fontes de corrente constante são pada na resistência R5 seria muito elevada. Como o TPS62110 possui uma tensão de
implementadas com conversores reduto- Para uma corrente de 350 mA seria neces- saída máxima de 17 V é possível ligar dois
res síncronos com transistor de potência sária uma resistência de 3,3 Ω e para 1,5 ou mais LEDs em série. Basta garantir que a
integrado (TPS62110). A Figura 4 apre- A uma resistência de 0,8 Ω, ou seja, uma soma da queda de tensão em todos os LEDs
senta o circuito em torno de U1. A fre- potência dissipada de 0,4 W ou 1,7 W. Para mais a queda de tensão na resistência R5
quência de comutação elevada (1 MHz) diminuir a potência dissipada é utilizado seja inferior à tensão de entrada do con-
possibilita a utilização de componen- um método que consiste em aplicar uma versor. Além disso, os capacitores de saída
tes externos relativamente pequenos. A pequena tensão de polarização na entrada C4 e C5 têm de suportar a tensão de saída
indutância é de 6,8 µH enquanto que cada do amplificador de erro, para que a queda correspondente.
um dos capacitores de saída, ligados em de tensão na resistência R5 se reduza no As três fontes de corrente são idênticas
paralelo, é de 22 µF. A corrente de pico mesmo valor aplicado. No circuito apresen- (construídas com U1, U5 e U7) e excitam
no andar de potência é de 2,4 A, sendo tado na Figura 2 o valor da resistência R5 os três LEDs de potência (vermelho, verde
por isso possível utilizar LEDs com cor- é de 0,51 Ω, correspondendo a uma queda e azul).

16 09-2010 elektor
música & iluminação

Software DMX = valor do microinterruptor + 8 x várias configurações de endereço possí-


A execução do programa pode ser dividida (valor do microinterruptor DIV 8) veis, que pode ser baixada a partir do site
em duas fases. Na primeira o MSP430 é ini- DIV representa a operação de divisão da Elektor. Os valores binários presentes
cializado. Depois o programa passa a rece- inteira. nessa tabela podem ser utilizados direta-
ber e processar sinais DMX, de acordo com mente na configuração dos micro-interrup-
o respectivo protocolo. Depois de definir o endereço, pode utilizar tores. Se corrigir o erro na placa de circuito
A inicialização inclui os temporizadores A e a fórmula anterior para calcular que slot impresso, pode ignorar a falha na faixa de
B, que geram os sinais PWM, a porta para- da trama DMX vai ser processado pelo sis- endereços possíveis.
lela 1, para leitura do endereço que vai ser tema. Está disponível uma tabela com as O módulo USCI tem de ser configurado
comparado com o endereço recebido na
trama DMX, e a porta de comunicações
USCI, utilizada para a recepção dos dados
Cálculo dos componentes para a fonte de corrente
DMX. Durante esta fase também são lidos Depois de determinar a corrente de funcionamento para o circuito da Figura 2 (350 mA,
os parâmetros de configuração armazena- por exemplo) e de escolher o valor da resistência R5, pode-se calcular os valores da mal-
dos na memória do MSP430, que são utiliza- ha de resistências formada por R2 e R3. Existe sempre um compromisso entre a precisão
dos para a configuração do clock para 8 MHz. de regulação e a potência dissipada em R5. A precisão aumenta com a queda de tensão
Os temporizadores vão funcionar perma- nessa resistência, mas também aumenta a dissipação de potência. Os cálculos seguintes
nentemente no modo contínuo, utilizando são baseados numa corrente de 1 mA através do divisor resistivo.
o sinal de clock principal. As saídas dos
temporizadores são utilizadas para gerar Vsense = I LED × R 5 = 350 mA × 510 mΩ = 179 mV
os sinais PWM autonomamente, sem inter-
venção da CPU, até que o microcontrolador
VR 3 = VFB −Vsense = 1.153V − 0.179V = 0.974 V
entre no modo 3 de economia de energia.
As portas utilizadas aqui também têm de
VR 3 974 mV
ser inicializadas. Para isso é selecionado o
R3= = = 974 Ω
modo de módulos periféricos no tempo- 1mA 1mA
rizador e as portas USCI. Os micro-inter- → resistência selecionada: 887 Ω
ruptores para definição de endereço estão VR 2 = VREF −VFB = 2.5V −1.153V=1.347V
ligados à porta número um, sendo que
esta tem de ser inicializada como porta de
VR2 1.347V
entrada em modo paralelo. O MSP430 pos- R2= = = 1.347 kΩ
sui uma funcionalidade especial que torna 1mA 1mA
→ resistência selecionada: 1,33 KΩ
desnecessárias as resistências de pull-up kΩ
ou pull-down externas. Estas resistências
estão integradas no próprio microcontro-
lador. Para reduzir o consumo de energia
todas as portas não utilizadas são configu-
radas como saídas, para evitar que fiquem
flutuantes. DIMM-LED-RE
NET-EN

R+

R-

D5
+12V
Os micro-interruptores vão definir um L1 LL4148
código binário. A conversão do endereço 2
3
VIN SW
15
14 6uH8 D1
VIN SW
desejado para o formato binário pode ser U1 R1
R26 R4
4 13
330R

feita com a calculadora do computador ou


348R

EN PG 1M
R3
uma calculadora científica. Todavia, tem de 8
VINA FB
10 FB = 1.153V
R2
960R
ASMT
TPS62110RSA
ter em conta um pequeno erro de projeto: -MR00
1k33

-AGH00
5
o pino P1.3/TA2 foi erradamente ligado a 7
SYNC
LBI LBO
6

um pino do conector J4, em vez de ligar ao U2


AGND

PGND
PGND

R5
PwPd
GND
GND

C1 C2 C3 C4 C5

conjunto de micro-interruptores SW1. Este


0R51

9 11 12 17 1 16 Vref = 2.5V
10u 10u 1u 22u 22u

erro impede a utilização de alguns endere- TL431AIBDZ

ços DMX. Para contornar estes endereços A

pode-se utilizar a seguinte fórmula:

Endereço para comparação com a trama Figura 4. Fonte de corrente constante implementada com um TPS62110.

elektor 09-2010 17
música & iluminação

corretamente para conseguir receber os


Start Init
sinais DMX. O parâmetro mais importante
LPMO é o baud rate. A norma DMX especifica uma
velocidade de 250 kbit/s. Com um clock de
Byte Received 8 MHz consegue-se obter facilmente este
valor dividindo-o por 32. A modulação não
Get Address é necessária, porque o resultado é obtido
Break Yes Yes
Received Byte Set STATE a partir de uma divisão inteira. O MSP430
Occured = 0x00 = STARTB
? ? detecta o início da trama DMX procurando
No No
por um erro de break no fluxo de dados.
No Decrement Yes
Set STATE
Para processar corretamente o sinal, a
Dmx_channel_ DMX_ STATE
count = 0 channel_count = STARTB = IDLE recepção de caracteres errados tem de estar
? ?
No
ativada no módulo USCI.
Yes
Depois de estar concluída a fase de inicia-
Dmx_field_count = 0 STATE Yes Increment Dmx_field_count lização, os temporizadores são colocados
Set STATE = STARTADDR = STARTADDR Store next DMX channel
Store 1st DMX channel ? no modo LPM0, saindo deste modo apenas
No quando detectam a chegada de um novo
No
caractere. Como no final de cada trama
Dmx_field_count
=2 é enviado um ‘Space for Break’, que de
?
Yes
acordo com a norma deve ter uma duração
Store TACCRI value mínima de 88 µs, o microcontrolador pode
Set TBCCR1
Set TBCCR 2 utilizar este fato para se sincronizar com o
Enable Timer Overflow Int
Set STATE = IDLE fluxo de dados. O erro causado pelo Space
for Break é reportado pelo módulo USCI
081004 - 15 quando é recebido um novo caractere, o
que permite ao software utilizar este fato
Figura 5. Fluxograma da máquina de estados. para detectar o início de uma nova trama.
Cada vez que é recebido um caractere, o
conteúdo das variáveis de estado da USCI
e dos registros de dados é armazenado em
variáveis, para que possam ser processadas
pela máquina de estado, ou para outros fins.
Antes de tudo, é necessário verificar o pri-
meiro valor no Slot 0, denominado de Start
Code. Se for um zero, a recepção de dados
pode continuar, porque este valor corres-
ponde ao código de identificação para as
aplicações de regulação de luminosidade.
O endereço DMX definido pelos micro-
-interruptores é lido e a máquina de esta-
dos avança para o estado seguinte. A con-
tagem de slots recebidos é decrementada
e o endereço é comparado com o endereço
Figura 6. Placa adaptadora com conectores XLR e interface para alimentação.
recebido. Quando é recebido o primeiro
canal de regulação de luminosidade, este
valor e o valor dos dois canais seguintes,
são armazenados num vetor. Depois de
terem sido recebidos todos os valores, os
registros dos temporizadores são atua-
lizados. É importante garantir que estes
registros só são atualizados quando ocorre
o overflow do contador, caso contrário os
LEDs poderiam piscar erradamente, devido
operações de escrita assíncronas nos regis-
tros. No caso do temporizador B a sincro-
nização é feita automaticamente graças a
uma função especial interna, configurada
durante a inicialização do módulo. Para o
temporizador A é necessário implementar
uma rotina de interrupção por overflow. O

18 09-2010 elektor
música & iluminação

Misturador de luzes com interface DMX


Sobre os autores
Dirk Gehrke nasceu em Munster (Westphalia, Alemanha) Walter Nitzold estuda Engenharia Eletrotécnica, Ramo
e obteve o grau de Engenharia em Sistemas de Comunicações de Telecomunicações, desde 2005 na HTKW Leipzig
na Universidade Técnica de Dortmund. Em 1998 foi contratado (Colégio de Tecnologia, Economia e Cultura de Leipzig).
pela Texas Instruments como Engenheiro de Aplicações (FAE) Efetuou um estágio no departamento de FAEs da Texas
tendo trabalhado em Inglaterra, França, Estados Unidos e mais Instruments em Freising, onde trabalhou com o MSP430.
recentemente na Alemanha (Freising). Desde 2006 é diretor Depois disso desenvolveu aplicações com o MSP430 num Centro
da unidade de desenvolvimento de negócios para produtos de Investigação em Leipzig. Em 2009 começou a trabalhar
analógicos para a Europa, Médio Oriente e África. no seu projeto final de curso, na área das comunicações móveis.
Contato: www.ti.com/europe/csc Walter possui uma bolsa da fundação Karl Kolle.

Figura 7. Placa de circuito impresso do receptor DMX.

valor PWM mais recente para o canal asso- uma nova trama. mato PCAD, e os desenhos para a constru-
ciado ao temporizador A é armazenado Na Figura 5 pode ver toda a lógica da ção da placa.
temporariamente numa variável, e a flag máquina de estados.
de interrupção é ativada. Quando ocorre Expansão e alterações
uma interrupção, o registro do tempori- Placa de circuito impresso e Podem ser efetuadas várias alterações ao
zador pode então ser atualizado em sin- downloads circuito. Pode-se, por exemplo, utilizar
cronia com o overflow do temporizador. A placa do adaptador com as interfaces dois canais DMX512-A de 8 bits em cas-
Os valores escritos nos registros TxCCRs DMX e o conector de alimentação pode ser cata e o MSP430 para gerar sinais PWM
quando ocorre o overflow não são os mes- visualizada na Figura 6 (o esquema elétrico com uma resolução de 16 bits para o con-
mos valores que são extraídos da trama é apresentado na Figura 2). A placa de cir- trole de luminosidade. Pode também uti-
DMX. O programa utiliza três vetores cuito impresso estreita para o receptor de lizar o sistema para controlar um motor
de 256 entradas cada, armazenados na três canais DMX é apresentada na Figura passo-a-passo com o integrado DRV88xx.
memória de programa do MSP430. O tipo 7 (esquema elétrico na Figura 3). Os LEDs O conector J4 na placa DMX pode ser uti-
de dados destes valores é inteiro, o que D1, D2 e D2 podem ser montados como lizado para implementar uma interface
corresponde a valores entre 0 e 65535. Os componentes individuais (vermelho, verde sem fios com a ajuda da placa RF2500T,
valores da faixa DMX são utilizados para e azul) ou como um único LED RGB colo- por exemplo. Esta montagem pode ser
endereçar os valores nestes vetores. Os cado na posição D8. A placa com os conec- assim utilizada para comunicar com o
valores armazenados nestes endereços são tores DMX liga à placa com os LEDs de um controlador principal sem utilizar cabos.
copiados para os registros dos temporiza- dos lados. Pode ser ligada outra placa no Outra ideia passa por incluir todos os 512
dores. Isto possibilita o armazenamento de outro lado e ainda uma terceira no fim da canais na gama de endereços possíveis,
valores específicos para cada LED, de modo segunda. apresentar o endereço num LCD ou uti-
a que as variações de luminosidade sejam O arquivo compactado, que pode ser bai- lizar dois botões ou um codificador para
idênticas, independentemente da cor ou xado do site da Elektor, contém um arquivo alterar o endereço.
LED utilizado, já que as suas característi- Excel com a lista de componentes, uma
cas não são lineares. tabela com os endereços, o código C para
Depois de todos os registros estarem atu- o firmware, os arquivos Gerber para a placa (081004)
alizados, a máquina de estados volta para de circuito impresso, o esquema e o dese- Artigo original: LED Mixer with DMX Interface
o estado inicial, onde fica aguardando por nho das placas de circuito impresso em for- March 2010

Internet (datasheet do SN65HVD3082E).


http://focus.ti.com/lit/ds/symlink/tl431a.pdf
www.OpenDMX.net (projetos DMX open source).
(datasheet TL431A).
http://focus.ti.com/lit/ds/symlink/msp430f2274.pdf
http://focus.ti.com/lit/ug/slvu254/slvu254.pdf
(datasheet do MSP430F2274).
(guia de utilização do TPS62110EVM-346).
http://focus.ti.com/lit/ds/symlink/sn65hvd3082e.pdf

elektor 09-2010 19
Hardware & Software

20 x Open Source


Sites essenciais para o desenvolvimento
de sistemas embarcados
Jens Nickel (Elektor)
A expressão código fonte aberto (Open Source) pode trazer-lhe imediatamente à memória vários pro-
gramas para PC. Contudo, para o projetista de sistemas embarcados é importante descobrir a grande
variedade de programas de código fonte aberto, ferramentas de programação e plataformas de har-
dware também gratuitas disponíveis hoje em dia. Estes não só lhe permitem poupar o custo das one-
rosas licenças, como os respectivos fóruns são um recurso valioso de aprendizagem. Sondamos alguns
especialistas para descobrir as ferramentas da sua preferência.
O software Open Source oferece inúmeras como editores, programas de documentação, deste tamanho. A quantidade de material
vantagens: o produto é independente do ferramentas de compilação (toolchains, para disponível para tantos sistemas e plata-
fabricante, não existem custos de licença, a vasta maioria dos microcontroladores), sis- formas diferentes é simplesmente eston-
e a qualidade final do produto é na grande temas operacionais e bibliotecas de funções, teante. Optamos antes por perguntar a
maioria dos casos superior, uma vez que é todas elas com código fonte aberto. Vale tam- quatro especialistas que projetos abertos
normalmente suportado por uma grande bém a pena mencionar o número crescente de recomendariam, dos quais tenham inclu-
comunidade de usuários. A disponibilidade hardware aberto e livre, incluindo placas com sive beneficiado pessoalmente.
do código fonte de um programa dá-lhe microcontroladores onde os circuitos, placas
a possibilidade de corrigir por si próprio de circuito impresso e arquivos de desenho Hardware
alguns erros que possa encontrar, alterar o eletrônico CAD estão disponíveis gratuita- (Sugestões de Clements Valens, Elektor, França)
comportamento do programa ou até adi- mente para o usuário, de modo que este os
cionar novas funções. Se o código não for possa alterar, melhorar ou adicionar funções à Arduino
muito complexo vai certamente aprender sua medida, para uma aplicação em particular. Esta plataforma muito popular oferece uma
bastante com a experiência. O hardware aberto é sempre suportado por gama de microcontroladores e placas de
Estas características por si só deveriam ser software e bibliotecas adequadas, sendo que desenvolvimento simples, que podem ser
suficientes para que qualquer projetista de a aprendizagem do sistema é sempre muito adquiridas já montadas. O site tem um fórum
aplicações para microcontroladores consi- rápida. ativo e um grande número de programas
dere as vantagens da utilização do código Qualquer tentativa de descobrir todos os exemplo, que garantem um tempo mínimo
fonte aberto. De fato, podemos encontrar projetos deste tipo, disponíveis na Internet, de aprendizagem e passagem à prática.
uma grande variedade de ferramentas para PC estaria condenada ao fracasso num artigo http://arduino.cc

Licenciamento zir no mercado um projeto embarcado para fins comerciais deve


começar por procurar conhecer com detalhe todos os detalhes das
Embora o termo código fonte aberto OSS (Open Source Software),
licenças apropriadas. Talvez seja prudente procurar o conselho le-
indique que a sua utilização não requer o pagamento de licenças
gal de um especialista antes de se comprometer e assinar qualquer
de utilização, na realidade são poucos os programas que não im-
compromisso.
põe algum tipo de restrições. A maioria dos programas OSS tem
Para fins puramente pessoais ou de avaliação não existem restri-
uma licença que controla as condições nas quais o programa pode
ções práticas na utilização desse mesmo software. Ainda assim, é
ser utilizado. A mais conhecida é a licença GNU GPL (General Pu-
necessário fazer referência aos direitos de cópia (copyright) e licen-
blic License). Esta licença bastante estrita permite a modificação
ça no código fonte.
ou expansão do programa original desde que a versão modificada
No site da Open Source Initiative (OSI) pode ficar conhecendo me-
seja também publicada sob a mesma licença GPL. Aqui se incluem
lhor as várias licenças e familiarizar-se com respectivas característi-
quaisquer programas que rodam num sistema operacional GPL ou
cas: www.opensource.org/licences/alphabetical.
que utilizem bibliotecas de funções GPL. Quem planeja introdu-

20 09-2010 elektor
Hardware & Software

Openmoko níveis publicamente. Muito útil para construir Crypto-avr-lib


Nada menos do que uma pilha de software peças para robôs e objetos de arte. Uma biblioteca de rotinas de encriptação oti-
completa para um celular inteligente (smart http://fab.cba.mit.edu mizadas para o controlador ATmega. Licen-
phone) na forma de um projeto de código ciada sob a versão 3 da licença GPL. Contate
fonte aberto. O celular em questão é o Neo o autor para outros tipos de licença.
FreeRunner. Estão também disponíveis placas Bibliotecas e ferramentas http://www.das-labor.org/wiki/
de desenvolvimento e depuração. (Sugestões de Benedikt Sauter, www.ixbat.de) AVR-Crypto-Lib/en
www.openmoko.org
uIP/lwIP
Duas excepcionais pilhas de rede, a primeira FreeRTOS
GNU Radio & Universal Software das quais para microcontroladores de 8 bits. O FreeRTOS é um núcleo de sistema operacio-
Radio Peripheral A IwIP é um desenvolvimento posterior da pri- nal em tempo real de pequenas dimensões,
O projeto GNU Radio é um conjunto de ferra- meira, e é mais adequada para controlado- que suporta um grande número de famílias
mentas para implementar um rádio definido res de gama média. Contudo, a licença da uIP de microcontroladores. Pode ser utilizado em
por software. O hardware de especificação não é tão estrita, e permite a sua utilização aplicações comerciais e permite a utilização
aberta utilizado neste projeto é a placa USRP- em produtos comerciais. de programas sem a divulgação do respectivo
Board (Universal Software Radio Peripheral), www.sics.se/~adam/uip código fonte, isto é, fechado.
baseada numa FPGA. www.freertos.org
www.sics.se/~adam/lwip/
www.gnuradio.org

LUFA (antigo MyUSB) Pode encontrar em outro artigo desta


KiCAD Uma vasta biblioteca de aplicações para inte- revista uma lista de sistemas operacio-
Esta é uma das melhores suites de programas ragir com dispositivos AVR com suporte para nais Open Source.
CAD para produção de hardware. Inclui todas USB (Host e Device). A aplicação de demons-
as ferramentas necessárias para o desenho de tração permite a emulação de um teclado e
circuitos e placas de circuito impresso. Possibi- muitos outros dispositivos (dispositivos de U-Boot
lita também a visualização 3D da placa final. armazenamento em massa, E/S de áudio, Bootloader universal, com um grande
http://kicad.sourceforge.net/wiki/index.php etc.) num controlador AVR. número de rotinas para controle de memó-
www.fourwalledcubicle.com/LUFA.php ria, interface com UART, cartões SD, rede e
USB, entre outros periféricos. Concebido ori-
Fab Lab Pilha USB para LPC2148 ginalmente como um sistema de inicializa-
Este é um projeto fora do comum mas muito Os adeptos da plataforma ARM devem con- ção para microcontroladores, o suporte de
interessante, permitindo corte 3D por laser, siderar a biblioteca USB implementada neste hardware alargado entretanto alcançado
impressoras 3D e outras máquinas de utiliza- projeto. Foi escrita para os Philips LPC2148 permite o seu uso como base para módulos
ção geral. Seguindo a tradição open source, que têm um núcleo compatível com ARM7. em código C.
os detalhes de todos os objetos estão dispo- http://wiki.sikken.nl/index.php?title=LPCUSB www.denx.de/wiki/U-Boot

Arduino: hardware simples, linguagem de Fab Lab: fábrica gratuita para LUFA: USB leve para AVRs,
programação semelhante ao C, bom fórum. projetos abertos. muito código com exemplos.

22 09-2010 elektor
Hardware & Software

uIP: TCP/IP para controladores de 8 bits, .NET Micro Framework: código Kdevelop: completação automática de
com o código bem documentado. fonte aberto da Microsoft. expressões e muito mais (foto: kdevelop.org).

Embedded Filesystems Library Kdevelop Tera Term


Um sistema de arquivos FAT- muito útil, O Kdevelop é um ambiente de desenvolvi- Um programa de emulação de terminal para
especialmente quando a memória é o seu mento integrado capaz de satisfazer as neces- acessar a portas COM, suporta também o
recurso mais escasso. A licença GPL inclui sidades do programador mais exigente. Fun- protocolo de comunicação Telnet. Uma ótima
uma cláusula que permite a conexão está- ciona em MS Windows, Max OSX, Linux, Sola- ferramenta de depuração para escutar comu-
tica do seu código fonte fechado com esta ris e FreeBSD. É também possível expandi-lo nicações série.
biblioteca. com recurso a plug-ins. http://ttssh2.sourceforge.jp
http://efsl.be www.kdevelop.org

Ferramentas de compilação GNU


.NET Micro Framework Programmer’s Notepad As ferramentas de compilação GNU estão dis-
Esta biblioteca reduzida de funções .NET Um editor ligeiro mas eficiente para a escrita poníveis para a grande maioria das arquite-
é muito compacta e é agora código fonte de código fonte aberto. Permite a produção turas de processadores, como AVR, Coldfire,
aberto, sendo suportada por diversas pla- simples, rápida e confortável de programas. ARM, MIPS, PowerPC e Intel x86. Estas ferra-
taformas ARM. É programável através da Pode ser expandido com extensões. mentas incluem não só compiladores para C,
variante de C orientada a objetos C#. Entre www.pnotepad.org C++ e na maioria dos casos também Java (GCC
os recursos suportados incluem-se I2C, significa GNU Compiler Collection), mas tam-
Ehternet e muitos outros. Ajuda a reduzir bém ferramentas de conexão (Linkers), com-
o tempo de desenvolvimento. Doxygen pilação de código Assembly (Assemblers),
www.microsoft.com/netmf/default.mspx Uma ferramenta inteligente para a gera- depuradores (Debuggers) assim como biblio-
ção automática de documentação para tecas de funções C (libc é a biblioteca stan-
código (C, C++, Java, etc). O programa- dard C). Estas ferramentas são utilizadas por
Ferramentas para PC dor cria etiquetas (tags) no código fonte, outros projetos de código fonte livre como o
(Sugestões de Antoine Authier e Jerry Jacobs, com base nas quais o Doxygen gera docu- WinAVR, que implementa um ambiente de
Laboratório da Elektor) mentação extensiva em formato PDF ou desenvolvimento mais familiar para acelerar
HTML. É também útil para obter a estrutura o desenvolvimento.
do código em arquivos não comentados.
Eclipse www.stack.nl/~dimitri/doxygen Coleção de compiladores GNU:
Este é um bom ambiente de desenvolvi- http://gcc.gnu.org
mento. Tem uma estrutura modular que o WinMerge
torna muito fácil de configurar. Existem cerca Uma boa ferramenta para a comparação e WinAVR:
de 1000 módulos de expansão plug-in (de sincronização de código. O programa permite http://winavr.sourceforge.net
código fonte aberto e comercial) para uma também a comparação do conteúdo de pas-
ampla gama de linguagens de programação tas e arquivos e apresenta os resultados num Yet another GNU ARM toolchain:
e sistemas finais. Consulte o artigo publicado formato visual de texto que torna a compre- www.yagarto.de
na edição da Elektor de Janeiro de 2007. ensão muito fácil. (091033)
www.eclipse.org http://winmerge.org/ Artigo original: 20 x Open Source – March 2010

Eclipse: poderoso ambiente de desenvolvimento Programmer’s Notepad: Expressões WinAVR: compilador, depurador, programador,
de software com cerca de 1000 plug-ins. regulares, Unicode e muitas outras funções. tudo o que é necessário para projetistas AVR.

elektor 09-2010 23
MEDIÇÃO & Teste

Alimentação e RFID sem fios

Construa o seu próprio


sistema de sensores RFID
Martin Ossmann (Alemanha)

Neste artigo vamos descrever como construir um leitor RFID e o seu próprio conjunto de etiquetas. Mais,
vamos também mostrar como transformar as etiquetas RFID em sensores sem fios e sem fonte de alimen-
tação interna.

As etiquetas RFID baseadas no chip RM1402 EM4102. Mas, o mais interessante neste pro- mos capazes de fabricar as nossas pró-
são muito baratas, mesmo em peque- jeto é o fato de podermos ver como cons- prias etiquetas RFID. Além disso, a taxa
nas quantidades, e são fáceis de encon- truir as nossas próprias etiquetas RFID e de transferência de dados oferecida pelo
trar no mercado [1]. Neste projeto vamos adaptá-las a qualquer aplicação que tenha- EM4102 não é muito elevada, estando
utilizar um integrado EM4095 montado mos em mente. Vamos também ver como bem dentro das capacidades de um micro-
em uma placa de circuito impresso para incluir sensores nestas etiquetas. Estes sen- controlador simples.
transferir dados de uma etiqueta RFID sores são isolados eletricamente e podem O circuito apresentado na Figura 1 é uti-
para a placa ATM18. A placa para o leitor ser movidos livremente, pois não necessi- lizado para determinar a energia disponí-
RFID está disponível com os componentes tam de qualquer conexão por fio. vel na bobina de recepção. O leitor RFID
SMD já montados. Também pode ser utili- possui uma bobina com os valores reco-
zada para construir um leitor RFID com um Transferência de Energia mendados (uma indutância de 750 µH,
ATtiny2313. O programa que acompanha O integrado EM4102 da etiqueta RFID constituída por 85 espiras de fio de cobre
este artigo, e que pode ser baixado gratui- recebe energia através de acoplamento esmaltado com 0,25 mm de seção, com
tamente a partir do site da Elektor, contém indutivo, a uma frequência de 125 kHz. diâmetro de 50 mm). A bobina do recep-
rotinas gratuitas para a leitura de dados do Sabendo isto, não há razão para não ser- tor (L1) é formada por 95 espiras for-

24 09-2010 elektor
MEDIÇÃO & Teste

Características
Leitor RFID: Software open source:
• Microcontrolador standard (ATtiny2313) • Leitor RFID
• Compatível com etiquetas EM4102 e • Etiqueta RFID para:
semelhantes - Etiqueta RFID standard (ID fixo)
• Saída RS232 - Etiqueta RFID com duplo ID
- Etiqueta RFID com ID comutável
mando uma indutância de 1 mH, sin-
Etiquetas e sensores RFID: - Etiqueta RFID com ID configurável
tonizada para a frequência de 125 kHz
• Microcontrolador standard (ATtiny13) -E  tiqueta RFID com duas entradas
através de C1. As bobinas de emissão e analógicas
de recepção são sobrepostas, com uma • Compatível com EM4102
• Entradas analógicas e digitais para -E  tiqueta RFID com sensor de
separação de 20 cm. A corrente e a ten- temperatura
sensores
são foram medidas com diferentes valo-
• Leituras transmitidas utilizando o ID do
res de R. O gráfico do lado esquerdo da Disponibilidade:
RFID
Figura 2 apresenta os valores de tensão No Serviço Elektor está disponível um kit
• Placa separada para programação e testes
medidos em função da corrente. O grá-
contendo um módulo leitor, placas de cir-
fico da direita apresenta a potência trans-
cuito impresso e microcontrolador já progra-
mitida. Estes gráficos foram obtidos com
mado (ver Lista de componentes).
um capacitor de sintonia 200 pF acima e
abaixo do valor ideal, para demonstrar a
sensibilidade do circuito a desvios na sin-
toniza. Olhando para os gráficos conclui- nesta carga que o microcontrolador utiliza reduzido, caso contrário deixa de ser pos-
se que com uma tensão de 3 V é possível para transmitir os dados. Contudo, o nível sível extrair o sinal de clock para o CPU.
transmitir algumas dezenas de miliwatts. de sinal não pode ser excessivamente A placa de circuito impresso (Figura 4) foi
Um microcontrolador ATtiny funcionando
a 1 MHz consome cerca de 2 mA com uma
tensão de 3 V. Se funcionar a 125 kHz, a
corrente consumida é inferior a 0,1 mA,
sendo que não deverá ser difícil utilizar
este princípio para o alimentar.
L1 I
O EM4102 envia a sua identificação modu-
lando a carga no leitor. A transferência de EM4095 * C1

Placa
cada bit utiliza 64 ciclos da portadora de 1mH *
125 kHz, que corresponde a uma taxa de C1
R

transferência de 1952,125 bits por segundo. 4x BAT43 U


Um pacote completo pode ser transmitido 10u

em 32,768 ms. É possível utilizar a própria


100051 - 14
portadora de 125 kHz para fornecer o sinal
de clock ao controlador, com a vantagem
de podermos assim garantir o sincronismo
com o leitor. O consumo do microcontrola-
dor é também muito inferior quando este Figura 1. Circuito para medir a energia transferida pelo leitor para a bobina de recepção
funciona a esta frequência, como foi visto da etiqueta RFID.
anteriormente. A desvantagem é que o
microcontrolador terá apenas 64 ciclos de
clock para calcular o próximo bit a ser trans-
mitido. Para otimizar a eficiência do código
o microcontrolador (ATtiny13) foi progra- U[V] P[mW]

mado em assembler.
40 40

RFID de fabricação caseira 30 30

Na Figura 3 podemos ver o diagrama


completo do circuito para a etiqueta RFID. 20 20

O sinal de clock para o microcontrolador é 10 10


obtido através de um circuito ressonante
formado por L1 e C1. Simultaneamente, 0
0 1 2 3 4 5 I[mA]
0
0 1 2 3 4 5 I[mA]
o sinal alternado de 125 kHz é retificado 100051 - 15

e fornecido ao microcontrolador, para o


alimentar. T1 permite que o circuito res-
sonante seja carregado e é a modulação Figura 2. Resultados da medição de transferência de energia: tensão, corrente
e potência.
elektor 09-2010 25
MEDIÇÃO & Teste

D1 D2
L1 *
4x C1
BAT43
D3 D4 1n8

GND 1mH

R2 R1 R3
Listagem 1. Decodificação Manchester.

330R
+5V
4k7

1k
if ( PIND & 4 ) { inBit=1
C3 C2
; }
if ( inBit==OldBit ) {
8

100n 10u
25V
VCC

RESET 1 7 PB2 Duration +=1 ;


PB5 IC1 PB2 GND
K1 2
PB3 PB1
6 PB1 }
PB4 3 ATtiny13 5 PB0 T1
PB2
PB4 PB0 else {
GND

PB0 PB1 if (Duration>=12) {


PB4
PutInFifo(OldBit) ; }
4

BS170
if (Duration>=4) {
PutInFifo(OldBit) ; }
GND 100051 - 11 Duration=1 ;
OldBit=inBit ;
Figura 3. Circuito para uma etiqueta RFID utilizando um ATtiny13. }

desenvolvida no laboratório da Elektor. A ligada ao conector K3 (Figura 7). A bobina Um bit de dados possui exatamente 16
bobina é ligada em paralelo com C1, por é ligada aos terminais ANT1 e ANT2, e períodos de interrupção (Figura 8).
isso as conexões ficam adjacentes a este deve ter uma indutância de 750 µH. Este O código apresentado na Listagem 1
componente. O leitor é formado por uma valor não é crítico, pois o EM4095 conse- decodifica o sinal recebido. Este código
placa SMD [1] com o EM4095. O projeto gue regular a frequência através de uma mede o intervalo de tempo durante o
não utiliza a biblioteca BASCOM contida PLL interna. Se assim não fosse, dificil- qual um determinado valor lógico perma-
no sistema ATM18. Em vez disso são uti- mente a frequência estaria corretamente nece fixo na porta D.4. Quando este nível
lizadas partes de um programa em C sintonizada com a frequência da etiqueta, lógico muda, significa que foram recebi-
escrito pelo autor anteriormente, utili- fixada em 125 kHz. dos um ou dois novos meios bits, com o
zando o WinAVR/GCC. Os dados provenientes da etiqueta são valor igual a OldBit. Dependendo da dura-
O circuito para o leitor RFID, apresentado demodulados no EM4095 [3] e enviados ção medida, são armazenados um ou dois
na Figura 5, é muito simples e pode ser para o microcontrolador com codificação meios bits no FIFO (PutInFifo(OldBit)),
facilmente construído numa placa de Manchester. A primeira tarefa do micro- para serem processados mais tarde.
protótipos. Para facilitar ainda mais, a controlador é decodificar estes dados. A rotina de decodificação utiliza os valores
placa de circuito impresso (Figura 6) já Para isso a rotina de interrupção dispara armazenados no FIFO. A primeira tarefa é
está desenhada. A placa com o EM4095 é 31250 vezes por segundo (8 MHz / 256). reconhecer o início de um pacote de dados.
Para isso, o programa move a sequência
armazenada no FIFO através de registros
Lista de componentes: (Etiqueta RFID) (PCI 100051-1) até encontrar a sequência de sincronização.
Resistências: R3
Em seguida, os dados são decodificados e
D4
D3

R1= 1 kΩ enviados pela porta RS232 (19200 baud,


R1

(c)Elektor

R2= 4,7 kΩ T1 8N1). Enquanto estes bits são colocados na


C3
R3= 330 Ω saída, podem estar sendo recebidos novos
C1

C2
Capacitores:
meios bits no FIFO.
C1= 1,7 nF (ver texto) IC1 K1
Este leitor RFID pode ser utilizado para ler
R2
V100

C2= 10 µF/25 V quaisquer etiquetas RDIF standard, com-


D2
D1

C3= 100 µF/25 V 100051-1 patíveis com o EM4102 [4].


Bobinas: Figura 4. Placa de circuito impresso para a
L1= 1 mH (ver texto) etiqueta RFID. Bobinas
Tanto para o leitor como para as etiquetas,
Semicondutores: é mais fácil fabricar as bobinas em casa
D1a D4= BAT43 Diversos: do que tentar obtê-las no mercado, dado
IC1= ATTiny13-20PU programado K1= Conector de 6 vias, em ângulo que, tipicamente, apenas se encontram
(Refª 100051-41)* PCI (Refª 100051-1)*
disponíveis em grandes quantidades. Não

26 09-2010 elektor
MEDIÇÃO & Teste

RST

+5V
+5V
K1
C1
R2 R1 MISO 1 2
K2

20
100n SCK 3 4 MOSI
1

1k

1k
RST 5 6

VCC
6 GND
1
2 PA2/RESET
T1 19 SCK GND
11 7 IC1 (SCK) PB7 +5V
2 18 MISO
3 PD0 (RxD) (MISO) PB6
3 17 MOSI R3
8 PD1 (TxD) (MOSI) PB5
6 16

1k
10 4 PD2 (INT0) PB4
BS170 R4 7 15
9 PD3 (INT1) (OCI) PB3
K3 8 14 D1
5 PD4 (T0) ATtiny2313 PB2

2k2
9 13
PD5 (T1) (AIN1) PB1
11 12
SUB-D9 PD6 (ICP) (AIN0) PB0
IC2

XTAL1

XTAL2
D2 +5V

GND
K4 1N4007 78L05
3 1

10
K5
X1 3
1

2
2 C2 C3 C4
8Mhz
100u 100n 10u
25V 25V

GND GND 100051 - 13

Figura 5. Diagrama do circuito para o leitor RFID utilizando um ATtiny2313. A placa EM4095 é ligada ao conector K3.

é necessário um medidor de indutâncias. Lista de componentes: (Leitor RFID)


Na nota de aplicação AN411 da EM Microe-
(PCB # 100051-3) Diversos:
lectronic, “RFID made easy” [5], é apresen- K1= Conector de 6 vias (2x3)
tada uma fórmula que permite facilmente Resistências: K2= Interface sub-D de 9 vias, em ângulo,
calcular a indutância deste tipo de bobinas R1;R2;R3= 1 kΩ montagem PCI
com base no diâmetro do fio (d), diâmetro R4= 2,2 kΩ K3= Barra de terminais SIL de 5 vias
K4= Barra de terminais SIL de 5 vias, em
da bobina (D) e no número de espiras (N):
Capacitores: ângulo
C1;C3= 100 nF K5= Interface para adaptador de alimen-
µ0 DN 1.9  D  C2= 100 µF/25 V tação, diâmetro de 2,1 mm
L= ln  C4= 10 µF/25 V
2 d Módulo RFID, placa SMD com o EM4095
Semicondutores: (Refª 080910-91)*
D1= LED vermelho, 3 mm PCI (Refª 100051-3)*
O autor fez várias bobinas e mediu a sua D2= 1N4007
indutância. Os resultados, apresentados IC1= ATTiny2313-20PU programado * Kit de componentes, com módulo RFID
na Tabela 1, mostram que os valores medi- (Refª 100051-42)* (080910-91), placas de circuito impresso
dos diferem dos obtidos utilizando a fór- IC2= 78L05 (100051-1/2/3) e microcontroladores
mula anterior em cerca de 10%, um valor X1= Ressonador cerâmico de 8MHz programados (100051-41/42) (Refª
T1= BS170 100057-71).
suficientemente próximo para poder ser O software e os desenhos das placas de cir-
utilizado na prática. Os valores apresenta- Bobinas: cuito impresso podem ser baixados a partir
dos na tabela são muito úteis como ponto L1= 1 mH (ver texto) do site da Elektor.
de partida para construir as suas próprias
bobinas.
R4
Software RFID
K3 v100
K2

A etiqueta RFID tem de ser programada K4


(c) Elektor
100051-3

X1
IC2
R1

para se comportar exatamente como


C1

IC1
C4

uma etiqueta RFID normal. A frequência


de clock é de 125 kHz e cada meio bit dura
C2

32 ciclos de clock. Está, por isso, fora de


K5
C3

D1 5 1
questão realizar cálculos complexos entre 6 2
T1

cada dois bits. Contudo, pode ser utilizado R3


K1
D2

o gerador PWM do Timer0. O temporiza- R2

dor é configurado como contador até 64


(colocando o registro OCR0A a 64-1 = 63) Figura 6. Placa de circuito impresso para o leitor.

elektor 09-2010 27
MEDIÇÃO & Teste

Manchester Code
0 1 1 0 1

64
Timer 0
0
100051 - 16

Figura 7. Protótipo do leitor. A bobina de recepção está ligada à placa do EM4095. Figura 8. Codificação Manchester.

com um ciclo de trabalho de 50% (OCR0B rupção (Listagem 2). Pacote de dados
= 32). O gerador PWM pode ser configu- O registro IntBit contém o bit a ser trans- A Tabela 2 apresenta a estrutura de um
rado para gerar uma transição ascendente mitido. IntMail é colocado a 1 de cada vez pacote de dados completo.
ou descendente quando o contador atinge que um bit é aceite. O programa principal O pacote começa com nove bits a um.
32. Na Figura 8 o valor do temporizador é é apenas responsável por gerir o fluxo de Esta sequência de uns não pode ocor-
apresentado em baixo e os dados codifica- bits de dados e de verificação. Para garan- rer em mais nenhum lado do pacote,
dos com codificação Manchester em cima. tir um funcionamento confiável tendo em sendo por isso utilizada para identificar
Podemos por isso gerar um bit a zero ou conta a instabilidade da tensão de alimen- o seu início. Os dados são enviados em
a um de acordo com a codificação Man- tação, o detector de falha de alimentação seguida, em dez grupos de quatro bits
chester, simplesmente alterando um bit do microcontrolador é configurado para (ou nibbles). Os primeiros dois contêm a
nos registros do gerador PWM. Esta alte- 1,8 V e o watchdog ativado. identificação. Após cada nibble é enviado
ração é realizada por uma rotina de inter- um bit de paridade. Após os dez nib-
bles é enviado um novo bit de paridade,
seguido de um zero. No total, o pacote
é constituído por 9+10×(4+1)+4+1 = 64
bits. Como a portadora é de 125 kHz, o
envio destes 64 bits demora exatamente
32,768 ms, correspondendo a uma taxa
de transmissão de 1935,125 bits por
segundo.
Para utilizar este protocolo num sensor
RFID dispomos de oito nibbles para os
dados e dois para a identificação, num
total 40 bits. Estes bits serão suficientes
para muitas aplicações. Se forem neces-
sários mais, este projeto pode mesmo
assim servir de base para um projeto mais
ambicioso.

Construção de etiquetas RFID


Na Figura 9 pode-se ver o protótipo da
etiqueta RFID com a placa de circuito
impresso da Figura 4 (cujo esquema se
apresenta na Figura 3). Para facilitar a sin-
Figura 9. Etiqueta RFID com todos os componentes.
tonia do circuito ressonante o capacitor e
Os sensores são ligados ao conector.

28 09-2010 elektor
MEDIÇÃO & Teste

8x 1M

C1

100n
16 K1
VCC
11 1
D0 PL PB2
12 2
D1 IC1 CP PB0
13 9
D2 Q7 PB4
14 7
K1 D3 Q7
3
R1 D4 GND
VCC 4 74HC165
D5
15k

PB2 5
D6 DS
10
3
PB0 6 15
2 D7 CE
PB4
1
8
GND
DS1820
100051 - 18

100051 - 17

Figura 11. Conexão de um sensor de Figura 10. Este circuito de expansão permite ligar até oito interruptores à
temperatura DS1820 à etiqueta RFID. etiqueta RFID.

a bobina são ligados através de um conec- duas possibilidades: determinar a posição energia é a maior preocupação, já que
tor. Deste modo, é possível experimentar do interruptor ou alterar o código ID aper- toda a etiqueta é apenas alimentada pela
várias bobinas e verificar qual consegue tando o botão. O programa está incluído bobina. Uma opção simples será a utili-
maximizar o alcance na prática. Durante no arquivo referente a este artigo. O inter- zação de um conversor paralelo/série. A
os testes verificou-se que o maior alcance ruptor é ligado entre a porta B.4 (pino 3 Figura 10 mostra um circuito que pode
era conseguido utilizando um capacitor do ATtiny13) e a massa. ser ligado ao conector K1 da placa.
com um valor teórico 10% superior ao Numa dada aplicação pode ser necessá-
calculado. rio verificar o estado de outras entradas. RFID com dois conversores A/D
O código fonte, escrito especificamente Como estamos utilizando um microcon- O ATtiny13 integra dois conversores A/D,
para esta aplicação, pode ser baixado trolador, isso não é difícil. O consumo de tornando possível utilizar a etiqueta para
em [6] e alterado para incluir novas fun-
cionalidades. O conector K1 na placa de
circuito impresso pode ser utilizado para
ligar interruptores, potenciômetros ou
outros sensores, que podem ser moni-
torizados pelo leitor RFID. Os sensores +5V +5V
sem fios podem ser utilizados em diver- K1
sas aplicações, podendo ser colocados C1 PB1 1 2
em partes móveis ou em locais onde seja PB2 3 4 PB0
100n
desejável um isolamento galvânico entre RST 5 6

o leitor e o sensor. Podem também ser +5V GND


8

utilizados em ambientes úmidos ou sub-


VCC

K2 +5V GND
RST 1 7 PB2 K3
mergidos em líquidos, ficando o sensor PB3 2
PB5
IC1
PB2
6 PB1
em local seco. PB3 PB1
PB1 PB4 3 ATtiny13 PB0 5 PB0 PB2
PB4
PB3 PB0
GND

ID dinâmico e monitoração PB4


4

Para o nosso primeiro exemplo vamos


considerar uma etiqueta RFID progra-
mada, de modo a mudar o seu código de GND GND
identificação através de um interruptor.
100051 - 12
Esta ideia pode ser utilizada para desen-
volver uma etiqueta RDIF de acesso capaz
de abrir mais de uma porta.
A primeira versão utiliza um interruptor
Figura 12. Circuito adaptador para programação e depuração de erros do
para trocar de código. Dispomos assim de
microcontrolador ATtiny13.

elektor 09-2010 29
MEDIÇÃO & Teste

Lista de componentes: (adaptador de programação/depurador)


(PCI 100051-2)
K3
K2
V100
Capacitores:

1
2
C1= 100 nF

(c) Elektor
100051-2

5
6
Semicondutores: IC1 K1
C1
IC1= ATTiny13-20PU (para programação,
testes) medir tensões. No conjunto de arquivos
Figura 13. Montagem da placa do circuito encontra-se um programa que permite
Diversos: adaptador. converter o valor presente nas duas entra-
K1= Conector de 6 vias (2x3) das analógicas e enviá-lo para o leitor
K2= Conector de 5 vias, em ângulo
K3= Conector de 6 vias, em ângulo RFID. A tensão de referência é a própria
PCI (Refª 100051-2)* tensão de alimentação do ATtiny13, o que
tem vantagens e desvantagens. Se pre-
tender ler a posição de um potenciôme-
tro, com o ponto médio ligado à entrada
Internet analógica, partilhando a alimentação com
[1] http://www.elektorbrasil.com.br/ [5] “RFID made easy”: www.emmicro
o microcontrolador, não há problema. O
valor obtido vai ser independente da ten-
revistas/2010/fevereiro/atm18- electronic.com/webfiles/product/
são de alimentação, já que esse valor vai
com-inteligencia-rfid.1256338.lynkx rfid/an/an411.pdf
subir e descer proporcionalmente com a
(“ATM18 com inteligência RFID”, [6] http://www.elektorbrasil.com.br tensão de alimentação, que é também
Elektor Nº 95, Fevereiro de 2010). a tensão de referência. Trata-se de uma
[7] “RFID principles of operation”: www.
[2] “Leitor Elektor para dispositivos RFID”, emmicroelectronic.com/webfiles/ conversão. Podem ser medidas acelera-
Elektor Nº 62, Maio de 2007. ções com base no mesmo princípio, uti-
product/rfid/an/wireless.pdf
lizando o sensor MMA7260. Em outros
[3] Leitor RFID EM4095: www.emmicroe-
casos pode ser utilizado um diodo Zener
lectronic.com/webfiles/product/
ou um pequeno regulador de 3,3 V para
rfid/an/an404.pdf alimentar tanto o microcontrolador como
[4] Datasheet do EM4102: www.em- o sensor. Para medir tensões absolutas é
microelectronic.com/webfiles/ fundamental utilizar uma tensão de refe-
product/rfid/ds/em4102_ds.pdf rência bem definida. Para isso, pode ser
utilizado um LM395, que fornece uma
tensão precisa de 2,5 V e consome pouca
corrente. Esta tensão pode ser fornecida
à entrada de um dos conversores A/D e
utilizada para medir a tensão de alimen-
tação. A medida do segundo conversor
pode então ser calculada com precisão.

Sensor de temperatura RFID


O último exemplo ilustra a conexão de um
sensor de temperatura DS1820 da Dallas/
Maxim. A interface utiliza apenas um fio,
mais a massa, e pode ser facilmente imple-
mentada em software. Este tipo de inter-
face é muito prática, mas lenta. O micro-
controlador não poderá comunicar com o
leitor RFID quando estiver comunicando
com o sensor. O leitor será simplesmente
forçado a aguardar um pouco mais pelo
preâmbulo. Depois de ler os dados do sen-
sor de temperatura, o microcontrolador
formata essa informação e envia-a para
o leitor. A Figura 11 mostra como ligar o
DS1820 à placa RFID. Em princípio, o sof-
tware pode ser adaptado para ser utilizado
com diversos tipos de sensores baseados
Figura 14. O circuito adaptador pode ser ligado diretamente ao leitor para testes. na comunicação 1-Wire.

30 09-2010 elektor
MEDIÇÃO & Teste

Tabela 1. Indutância de bobinas com núcleo de ar.


D [mm] d [mm] N L [µH] (calculado) L [µH] (medido)
50 0,25 100 1050 1000
50 0,25 75 608 577
50 0,25 40 184 170
25 0,12 150 1143 1000
Depuração do sensor RFID 25 0,12 100 529 470
Os exemplos descritos anteriormente
25 0,12 80 346 310
apresentam várias ideias para construir
as suas próprias etiquetas. Mas, para isso 25 0,12 75 306 273
é preciso também ter em mente o teste e 23 0,12 80 313 275
a depuração de erros. A abordagem mais 20 0,12 100 405 360
simples é a utilização de uma interface ISP.
30 0,12 50 175 160
Infelizmente, a utilização desta interface é
incompatível com o tipo de alimentação. 100 0,25 65 1047 1130
A bobina não é capaz de fornecer energia D = diâmetro da bobina d = diâmetro do fio N = número de espiras

Listagem 2. Rotina de interrupção para codificação usando PWM.


.org 3 ; timer 0 overflow jumps here
TIM0OV:
sbi PORTB,0 ; flag start of interrupt routine
in SREGsave,SREG ; save status
cbi PORTB,0 ; end of test pulse
andi IntBit,1 ; test that bit
brne DOone ; and go to DOzero or DOone
DOzero:
out TCCR0A,PWMmode1 ; clear OC0B on compare match, set OC0B at TOP
ldi IntMail,1 ; flag as fetched
out SREG,SREGsave ; restore status
reti
DOone:
out TCCR0A,PWMmode0 ; set OC0B on compare match, dlear OC0B at TOP
ldi IntMail,1 ; flag as fetched
out SREG,SREGsave ; restore status
reti

suficiente para programar o microcon-


Tabela 2. Estrutura do pacote de dados utilizado pela etiqueta RFID EM4102.
trolador. Para resolver este problema foi
desenvolvido o circuito apresentado na Preâmbulo 1 1 1 1 1 1 1 1 1
Figura 12. O ATtiny13 pode então ser pro-
gramado através da interface ISP (conec- ID cliente 0 0 0 0 0
tor K1 na Figura 13) e os sensores ligados 1 1 1 1 0
através do conector K3 desta placa, ou K1
da placa RFID. O conector K2 é ligado ao data0 0 0 0 1 1
conector K4 do leitor. É este que fornece o data1 0 0 1 0 0
sinal de clock de 125 kHz e processa o fluxo
de dados pela porta B.1. Com esta confi- data2 0 0 1 1 0
guração torna-se fácil programar e testar data3 0 1 0 0 1
novos programas para sensores RFID.
data4 0 1 0 1 0

data5 0 1 1 0 0

(100051) data6 0 1 1 1 1
Artigo original: Wireless Electricity meets RFID
data7 1 0 0 0 1
June 2010
Bit de paridade 0 1 1 0 0

elektor 09-2010 31
informação

Construa um placar de
mensagens a LEDs num dia
Usando a plataforma para
desenvolvimento de protótipos mbed
Clemens Valens (Elektor)

Quando o meu amigo Grégory me mostrou um painel com 64×32 pixels de LEDs bicolores, adquirido num
site da Internet por cerca de 50 dólares, encomendei imediatamente um. Isto seria a grande oportunidade
de dar algum uso ao módulo mbed ARM que possuía. Uma questão que permanecia na minha cabeça, será
que este projeto seria tão fácil de implementar quanto o equipamento que criou o mbed?

A primeira vez que ouvi falar sobre o mbed foi quando estava lendo
um artigo sobre o mesmo na Circuit Cellar (#227). Fiquei imedi-
atamente seduzido pelo conceito, e com muita vontade de testá-
lo. Uma vez que tínhamos as relações adequadas para este caso
consegui obter um software beta para o sistema mbed e alguns
módulos para “brincar”. Esses módulos beta baseiam-se no proces-
sador LPC2368 ARM7 da NXP. Pouco depois, quando foi introduz-
ido o módulo ARM Cortex-M3 usando o processador LPC1768 da
NXP no sistema mbed consegui arranjar também um desses novos
módulos. Tudo o que precisava agora era encontrar uma aplicação
para estes módulos. Para os que não leram o artigo de Tom Cantrell
(não têm qualquer desculpa pois esse artigo pode ser obtido gra-
tuitamente na Internet [1]) vou começar por explicar brevemente
o conceito que está por detrás do módulo mbed.

O que é então o mbed?


mbed (pronunciado como embed) consiste numa plataforma para Figura 1. Esta é a página de Internet que mostra o arquivo HTML no
módulo mbed. Basta criar uma conta e começar!
desenvolvimento rápido de protótipos com processadores ARM,
desenvolvida e suportada pela ARM. Embora existam dois módulos
mbed diferentes, ambos baseados em processadores da NXP, penso ras maiúsculas) mass storage device, contendo um arquivo HTML.
que não será possível comprar o que tem o processador ARM7. É de Quando abrir este arquivo você é redirecionado diretamente para a
se esperar ainda outros módulos que utilizem circuitos integrados página de login do mbed (se estiver conectado à Internet), Figura 1.
de outros fabricantes, mas não espere isso agora. Assim à primeira Depois de criar uma conta pode começar imediatamente a progra-
vista, um módulo mbed parece exatamente igual a qualquer outra mar, porque o compilador (gratuito e de utilização ilimitada) está à
placa de avaliação para microcontroladores com alguns LEDs, um sua disposição on-line. É verdade, não é preciso instalar nada! Plug-
botão de reset e um conector USB. É pequeno (25×53 mm), com 40 and-Play, em cinco minutos está pronto para trabalhar. Mas isso não
pinos espaçados de 2,54 mm, e não existe muito mais na placa além é tudo. O equipamento do mbed fez quase todo o trabalho mais com-
do microprocessador, cinco LEDs, um botão de pressão e um conec- plexo, desenvolvendo para nosso uso uma biblioteca de suporte para
tor USB. Num dos lados da placa podemos ver o microprocessador todos os periféricos do microprocessador, e outros. Foram provavel-
e no outro lado um transceiver Ethernet DB83848 e uma memória mente inspirados pelo Arduino, dado que implementaram concei-
Flash série de 16 Mbit (AT45DB161). O segundo processador, um tos semelhantes como o DigitalIn/Out e AnalogIn/Out. Esta biblio-
ARM 7 LPC2148 (com o nome de mbed interface no módulo com o teca permite-lhe concentrar-se apenas na sua aplicação em vez de
LPC1768), é quase tão potente como o microprocessador principal, se envolver em toda a programação de baixo nível de manipulação
e é aqui que podemos esperar toda a inovação. O mbed interface dos registros. Uma verdadeira economia de tempo, uma vez que
faz com que o módulo apareça no seu computador host como um os microprocessadores ARM têm um bilião de registros. Quando
dispositivo de armazenamento de dados, MBED (ter atenção as let- o seu código fonte on-line compilar sem quaisquer erros o sistema

32 09-2010 elektor
informação

Este artigo tem


como objetivo servir como
uma breve introdução ao sistema de
desenvolvimento de protótipos mbed. E faz parte do
concurso NXP mbed a ser lançado na Conferência de Sistemas Embarcados
ESC (Embedded Systems Conference) em Boston (EUA) ainda este ano
de 2010, organizado em conjunto pela Elektor e a Circuit Cellar. Fique atento!

sugere-lhe que baixe o executável. Deve gravar este no “disco” MBED


e depois pressionar o botão de reset. O circuito integrado mbed inter- V+

face programa então o microprocessador mbed e começa a execu- S


0V
tar a sua aplicação. Parece fácil, não? Quando o seu projeto estiver
terminado pode armazenar tudo num arquivo em formato zip para V+
motivos de arquivo, ou outro. O site de Internet do mbed [2] desem- L
0V
penha uma parte muito importante em todo o conceito. Além do
compilador vai ainda encontrar no site explicações detalhadas sobre V+
R1/R2/G1/G2 Bit 63 Bit 62 Bit 61 Bit 2 Bit 1 Bit 0
as funções existentes na biblioteca mbed num manual (Handbook), 0V
projetos de exemplo num “livro de receitas” (Cookbook), um blog,
V+
um fórum e muito mais. Pode também publicar os seus projetos para EN
outros usuários poderem usufruir dos mesmos assim como utilizar 0V
100501 - 12
projetos de outros. É um conceito aberto e estruturado para servir
uma comunidade. A única coisa que definitivamente não é aberta é a
biblioteca mbed, o que é, obviamente, muito desapontante. Porquê? Figura 2. O diagrama temporal do painel de 32 linhas e LEDs parece
Porque é muito difícil perceber se a biblioteca é realmente eficiente, bastante simples. No entanto, existe uma sutileza escondida na
palavra de quatro bits R1/R2/G1/G2: R1/G1 controlam as 16 linhas
se contém erros, ou se é realmente adequada para o que pretende
superiores do painel, R2/G2 controlam as 16 linhas inferiores. As-
fazer. A biblioteca mbed implementa as funções mais comuns con-
sim, este padrão tem que ser repetido apenas 16 vezes para desen-
sideradas na maioria dos casos muito úteis, mas não lhe permite tirar
har as 32 linhas. O sinal EN controla a alimentação para os LEDs.
o máximo partido do microprocessador, em todas as suas vertentes. Ativando este sinal (ativo no valor lógico baixo) durante algum
Seguramente compreensível, porque, caso contrário, seria muito tempo depois de uma linha ter sido escrita obtemos resultados
mais difícil, para não dizer mesmo um “inferno”, utilizar o sistema, mais agradáveis do que o ativando contínuo.
para aqueles que precisam saber exatamente como a biblioteca lida
com todos os bits e registros do processador. Claro que você pode
optar por fazer um pouco de engenharia inversa e analisar o arquivo no controlador estão acessíveis, mas não todos ao mesmo tempo. Se
executável para ver como os registros são tratados, mas isso retira por exemplo, precisar de três portas série, não vai pode ter também
todo o conceito de rapidez ao sistema. Além disso, se a biblioteca for um barramento I2C. A fonte de alimentação (0 V; entrada de 4,5 V a
atualizada vai ter que fazer tudo outra vez. E agora que estou numa 14 V, saída de 5 V USB e saída de 3,3 V), a interface Ethernet e a porta
fase de “bater”, vou também mencionar o LED azul que indica quando USB têm pinos dedicados, existe ainda uma entrada de reset e dois
a placa está ligada, tem uma luz tão brilhante que me faz doer os pinos IF (estes são para a porta USB da interface mbed). Os 25 pinos
olhos mesmo quando temos imensa luz ambiente. Quando é que os restantes podem ser usados para entradas/saídas GPIO ou qualquer
projetistas vão perceber que não é preciso fazer passar uma corrente outra função que possam desempenhar.
de várias dezenas de miliamperes através dos LEDs modernos? Um
pequeno brilho agradável teria sido mais do que suficiente. Embora o Aplicação
microprocessador possua 100 pinos, o módulo tem apenas 40. Estes O objetivo deste nosso projeto é construir um placar de mensagens
foram selecionados de tal forma que todos os periféricos integrados com um processo simples de enviar e apresentar mensagens! A

elektor 09-2010 33
informação

Hardware
O modo como liguei o mostrador ao módulo mbed está ilustrado
MOD2 na Figura 3. Como a maioria dos pinos do mbed podem ser con-
1
GND VOUT
40 figurados como GPIO, simplesmente comecei pelo primeiro dis-
2
3
VIN VU
39
38
ponível (pino 5). Mais tarde, adicionei um botão de pressão ao pino
VB IF–
+3V3 4
NR IF+
37 20, porque estava mais próximo do botão. Por razões de compati-
5
6
RD–
36
35
bilidade optei por controlar o mostrador com tensões de 3,3 V em
MOD1 RD+
+5V
7
TD–
34 vez dos 5 V especificados, isto porque o módulo mbed é de 3,3 V
1
GND A
2 8
TD+
33
e o mostrador permite fazer isso. Depois de já dominar o controle
3 4 9 32
GND B D–
5
GND C
6 10
D+
31 do display alimentei-o com uma tensão de 5 V, o que também fun-
7
EN D
8 11 30
cionou sem problemas, a vantagem é que obtive um brilho muito
9 10 12 29
R1 G1
11
GND G2
12 13 28 mais elevado. O mostrador foi alimentado por uma fonte de alimen-
13
GND L
14 14 27
tação de bancada separada dado que é necessário uma corrente de
15
GND S
16 15 LPC1768 26
16 25 alguns amperes quando todos os LEDs estão acessos, coisa que o
GND

LED PANEL
17 24
módulo mbed não pode fornecer. Alimentei o módulo mbed a partir
S1 18 23
19 MBED 22 da porta USB. Tive um bocado de trabalho para implementar o pro-
20 21
tocolo sérial que não era nada complicado pela simples razão de
NEXT PAGE
que o manual do mesmo continha um erro. Na tabela da página 8 e
100501 - 11
9 onde estamos os números dos pinos dos sinais L e S, os números
Figura 3. O diagrama do circuito é realmente bastante simples uma estão trocados no que diz respeito ao esquema de pinos do conec-
vez que não existe nenhum componente especial para controlar tor apresentado imediatamente antes. O código exemplo extraído
o painel de LEDs. Repare que nesta configuração básica o módulo do documento funcionou sem problemas, mas o meu próprio
mbed é alimentado pelo barramento USB, sendo que o painel de código não. Uma coisa muito frustrante. Depois de resolvido este
LEDs precisa de uma fonte de alimentação separada dado que neces- problema tudo correu bem, e consegui rapidamente acessar um
sita de mais corrente do que aquela que o módulo mbed é capaz de pixel em qualquer lugar do display que eu quisesse numa das quatro
fornecer. Tenha em atenção também que embora o painel de LEDs cores disponíveis (vermelho, verde, laranja e preto). É interessante
esteja especificado para funcionar a 5 V, este também funciona com
referir neste momento que a biblioteca mbed tem funções de pino
3,3 V sem qualquer problema. O painel alimentado a 5 V e contro-
e barramento. Parece lógico usar a função BusOut tanto para efet-
lado por um módulo mbed alimentado a 3,3 V também funciona!
uar o endereçamento do barramento como para enviar os dados,
mas constatamos que a função de barramento é muito mais lenta
eletrônica atual remete-nos muitas vezes para a interface USB e foi do que a função do pino. Acabei usando quatro chamadas à função
por isso que acabei utilizando o módulo mbed. Como o módulo é DigitalOut para enviar os dados pelo barramento e uma chamada à
visto como um dispositivo de armazenamento de dados USB com 2 função BusOut para a palavra de endereço muito mais lenta. A razão
MB torna-se muito fácil carregar arquivos com mensagens de texto para esta diferença de desempenho seria provavelmente muito mais
no próprio módulo recorrendo a um simples editor de texto num com- clara se o código fonte da biblioteca mbed estivesse publicado.
putador. Esta é uma interface bastante intuitiva e confortável, e até os
que não são engenheiros conseguem entender. O manual de usuário Pontos e fontes
do painel LCD (DE-DD103_Ver1.0_EN.pdf [3]) deu-me a entender que É hora de começar a escrever caracteres no display. Os caracteres
precisava efetuar uma grande manipulação de bits dado que a sua precisam de uma fonte e efetuar o mapeamento dos bits (bitmap-
interface série não obedecia a um barramento SPI standard, ou algo ping) de uma fonte é um trabalho intensamente árduo. Muitas
semelhante. A Figura 2 mostra o diagrama temporal. O mostrador con- pessoas estiveram ocupadas durante muito tempo, ao longo dos
siste em 32 linhas de 64 LEDs bicolores, isto é, um total de 4096 LEDs! últimos anos, efetuando o mapeamento dos bits para uma fonte e
O endereçamento das 64 linhas (32 linhas bicolores) é um pouco estra- desenvolvendo ferramentas úteis que possam fazer isso automati-
nho, isto porque o endereço do barramento apenas possui quatro bits camente, por exemplo o “The Dot Factory” [4] (Figura 4). Esta fer-
de comprimento sendo que só consegue endereçar diretamente 16 ramenta do Windows faz com que seja uma brincadeira de crianças
linhas. Este problema é solucionado dividindo o mostrador em dois converter qualquer fonte que esteja instalada no seu PC em arquivos
de 16 linhas cada e usando um barramento de 2 bits de dados. Os dois código fonte e cabeçalho de linguagem C. Selecione a fonte, con-
mostradores de 16 linhas são endereçados em paralelo e os dois bits figure algumas opções e clique o botão Generate. A única coisa
de dados selecionam o LED vermelho e verde para a linha. O mostrador esquisita é que não pode gravar os arquivos; vai ter que cortar e
tem memória suficiente apenas para duas linhas, uma superior e uma colar num outro editor de texto. Contudo, esta é uma pequena
inferior. Isto significa que o mostrador tem que ser atualizado continu- inconveniência secundária para esta pequena e agradável ferra-
amente para que possa apresentar uma mensagem ou imagem. Uma menta gratuita, sendo que criei os arquivos desta forma sem fazer
vantagem desta técnica é que o mostrador não vai consumir cerca qualquer reclamação e importei-os para o meu projeto mbed. Adi-
de 40 A, ou coisa parecida, quando todos os LEDs estiverem acessos. cionando o código para o mostrador tornou-se muito fácil colocar
Depois de uma linha ter sido escrita tem que ser ativada usando o sinal os caracteres que queria no local onde queria.
EN. Este sinal determina o brilho do display mas junto com isso afeta
também a velocidade de atualização do display. Por sua vez, isto con- Adicionando um arquivo de sistema INI
trola a cintilação do mostrador assim como a velocidade de desliza- O próximo passo seria criar um modo de colocar mensagens no
mento do texto no mesmo, desde que o deslizamento do texto não sistema. Esta foi a razão principal pela qual optei por um módulo
utilize um temporizador separado e dependa diretamente da veloci- mbed: este tem uma interface USB e a biblioteca mbed disponi-
dade de atualização. biliza um sistema de arquivos muito conveniente. Tudo o que tive

34 09-2010 elektor
informação

que fazer foi adicionar uma linha de código ao meu programa para
que tudo funcionasse:

LocalFileSystem local(“local”);

Agora, o meu programa era capaz de ler os arquivos que copiei


do meu PC para o dispositivo de armazenamento de dados MBED.
Tinha decidido usar um arquivo do tipo INI para os meus arquivos de
mensagem. Pretendia várias páginas, a navegação através das pági-
nas seria possível graças ao botão de pressão. Cada página seria uma
seção no arquivo INI e seria possível especificar o texto para cada
linha, numa base de seção a seção. Com a minha fonte do tipo Arial
e dimensão 8 tinha espaço para quatro linhas por página sem que
os caracteres passassem para outras linhas. Voltei outra vez à Inter-
net para pesquisar por uma biblioteca C simples para arquivos INI. Figura 4. The Dot Factory: Porque será que os autores se esquece-
Optei por escolher uma, a inih [5]. Esta revelou-se uma boa opção ram de implementar uma função para gravar arquivos?
uma vez que foi muito fácil usar a biblioteca e não precisei mais de
cinco minutos para a integrar no meu projeto.
o arquivo binário (.ar) podem ser carregados. Contudo, esta não é a
Tempo de parar maneira mais fácil e compreensível, e também não é suportada pela
Cheguei a um ponto onde as funcionalidades começavam a ser mais equipe do mbed. No entanto, algumas pessoas encontraram méto-
complexas. Em primeiro lugar, claro, deveria ser possível deslizar dos para trabalhar com o mbed off-line.
a mensagem: para a esquerda, para a direita, sem deslizamento,
e ainda deslizar com diferentes velocidades. Esta seria difícil! Os Conclusão
caracteres começaram a ficar desfocados e de difícil leitura. Esta Enquanto estive trabalhando no projeto usei a placa mbed beta com
funcionalidade foi deixada fora, mas encontrada uma outra rapida- o LPC2368, mas para este artigo tive que usar a placa mbed com
mente: cada linha tem a sua própria cor e a sua própria posição de o LPC1768. Trocar entre os dois módulos revelou-se ser extrema-
início (x,y). Tentei muitas outras coisas mas finalmente fiquei pelas mente simples; tudo o que foi preciso fazer foi selecionar o mbed
funcionalidades mencionadas anteriormente mais o saltar página. correto a partir de uma lista no menu de compilador. O código rec-
ompilado funcionou imediatamente de primeira sem ter que efet-
Problemas com a ferramenta uar qualquer alteração. No final das contas cheguei a conclusão que
A construção desta aplicação demorou um dia de trabalho inteiro. o sistema mbed é muito legal. Este projeto não obriga a grandes
Não a fiz toda em sequência, mas teria conseguido se a minha agenda demandas do mbed, e a interface Ethernet também vale a pena ser
tivesse-me permitido. Definitivamente, utilizar o módulo mbed em experimentada. Embora, pessoalmente, não recomende o módulo
vez de uma outra placa de microcontrolador poupa enormes quanti- mbed para utilização profissional ou para o desenvolvimento de
dades de tempo tal como acontece com a biblioteca mbed. Não foi software de consumo de qualidade porque temos muito pouco,
necessário inspecionar um único registro do processador ARM nem ou mesmo nenhum, controle sobre as ferramentas e biblioteca. É
sequer tive que consultar o datasheet do processador ou o manual definitivamente uma excelente ferramenta para rapidamente tes-
de programação. A pequena experiência que tive com o sistema tar um tipo de conceito. É também excelente para aqueles projetos
mbed antes de começar este projeto também deve ter ajudado um onde precisa de um pouco mais de capacidade de processamento
pouco, dado que já sabia o que esperar da biblioteca mbed. O único do que aquele que conseguimos obter de sistemas como o Arduino.
impedimento mais sério era o servidor mbed ir abaixo ou bloquear. Temos que tirar o chapéu a toda a equipa do mbed que consegui
Isto aconteceu uma vez durante a execução de todo o meu projeto, disponibilizar uma ferramenta tão boa e versátil como esta.
desperdiçando um bom número de horas. Lá estávamos nós alegres (100501)
a programar quando de repente: bum! Foram-se todas as ferramen- Artigo original: Building a Scrolling LED Message Board in one Day
tas… E não há ninguém com quem você possa gritar (qual é aquele – September 2010.
número de telefone do helpdesk do sistema mbed?). Outra incon-
veniência é que o compilador ou o servidor parece que de vez
em quando bloqueiam. Isto é um bocado chato porque parece que
vamos perder aquelas alterações brilhantes que acabamos de fazer Internet
ao nosso código. O que acontece exatamente não sei, mas é preciso [1] Easy (E)mbed, An Alternative Approach to Embedded Programming,
fechar e depois abrir novamente a janela do compilador sem poder Tom Cantrell, Circuit Cellar #227, Junho 2009, pp 68-72. (Down-
gravar o seu trabalho. A equipe do mbed deveria adicionar algum load gratuito em www.circuitcellar.com/archives/viewable/Can-
tipo de gravação temporária para podermos recuperar o ambiente,
trell-227.pdf).
caso pretendessemos, dado que isto aconteceu várias vezes. Note
que não tem que usar o compilador on-line. O arquivo executável [2] mbed.org
que você baixa e programa no dispositivo alvo é apenas um arquivo [3] LED panel: www.sureelectronics.net/goods.php?id=718
binário, sem nenhum formato de arquivo proprietário. Se conseguir
[4] The Dot Factory: www.pavius.net
reproduzir um arquivo deste tipo com um conjunto de ferramentas
você está à vontade para usar a placa mbed. A biblioteca mbed tam- [5] INI Not Invented Here: code.google.com/p/inih/
bém pode ser usada uma vez que o arquivo de cabeçalho (header) e [6] Software: www.elektorbrasil.com.br/100501

elektor 09-2010 35
Hardware & Software

Pequenos e Open Source


Sistemas operacionais de pequena
dimensão de código fonte aberto
Harald Kipp (Alemanha)

O artigo Femto OS publicado na edição da Elektor do mês passado foi para muitos dos nossos leitores
um ponto de partida para o mundo dos sistemas operacionais multitarefa para microcontroladores. Se
a curiosidade o levou a procurar na Internet por soluções alternativas, certamente encontrou inúmeros
projetos deste tipo, também Open Source.

Não deixa de ser irônico que a imensa capa- taneamente. O termo técnico é multitarefa, o direito de execução. Como resultado, a
cidade da Internet para armazenar a tota- e as suas vantagens foram amplamente dis- aplicação é protegida de interrupções arbi-
lidade do conhecimento humano nem cutidas no artigo do mês passado [1], utili- trárias por parte de outras tarefas ou pelo
sempre facilite este tipo de pesquisa. Na zando o Femtos OS como exemplo. A comu- sistema operacional. Na prática, isto fun-
sua primeira tentativa, o autor deparou- tação de uma tarefa para outra é chamada ciona adequadamente, uma vez que grande
se com pelo menos 30 projetos de código de mudança de contexto e esta operação parte das aplicações passa boa parte do seu
fonte aberto para microcontroladores de pode ser mais ou menos demorada con- tempo de execução em espera, aguardando
8 bits. Dito isto, muitos deles parecem ter forme o tipo de sistema operacional. a ocorrência de eventos externos (e normal-
entrado em coma profundo, e apenas cerca mente quando entra neste modo de espera
de metade parecem ter sido atualizados cede o processador). O sistema operacio-
nos últimos seis meses. Assim, esta pes- Aplicação nal Nut/OS (ver tabela), utilizado no Elektor
quisa restringe-se efetivamente a projetos Internet Rádio [2], demonstra isto de forma
ativos, mesmo que este critério possa ser bastante clara.
subjetivo e não leve em conta o mérito ou a
qualidade dos projetos mais estagnados. É Biblioteca de execução A mudança de contexto é efetuada com o
claro que podem haver tesouros escondidos auxílio de pequenas rotinas em assembly
em alguns destes projetos adormecidos, incluídas no próprio sistema operacional,
que apenas esperam que alguém os redes- que tornam a transição para um outro tipo
cubra. A vantagem do código fonte aberto de CPU naturalmente mais difícil. Ainda
é a facilidade com que se pode avaliar a qua- Sistema operacional assim, o projeto Protothread do Instituto
lidade de um dado projeto, uma vez que se Sueco para a informática demonstrou que é
tem acesso a todo o seu código fonte. possível implementar multitarefa utilizando
Estamos então em posição de respirar apenas código C puro. A única desvantagem
fundo e avançar para a questão crucial: o é que as variáveis locais não estáticas per-
Hardware
que é efetivamente um sistema operacio- dem o seu valor em mudanças de contexto.
nal? Até os peritos têm dificuldade em dar Esta técnica é utilizada extensivamente no
uma resposta exata. Mas de forma geral um sistema operacional Contiki (ver tabela).
Figura 1. A necessidade de acessar as
sistema operacional cumpre duas funções: bibliotecas de funções durante a execução
a gestão de recursos e a ocultação dos deta- torna as aplicações dependentes do O processo multitarefa preemptivo coloca
lhes do hardware do programador. Entre hardware e do sistema operacional (1). maiores desafios quer ao sistema opera-
os recursos temos a unidade de processa- O acesso através do sistema operacional cional quer à aplicação. Neste cenário uma
mento (CPU), a memória e dispositivos de (2), em oposição a chamadas diretas (3), é tarefa pode ser interrompida em qualquer
E/S. Os detalhes do hardware são ocultados outra forma de reduzir a dependência em instante, assim que o disparo de um evento
para a aplicação, para que esta possa cor- relação a um hardware particular. inicie outra tarefa com maior prioridade.
rer em diferentes configurações de hard- Para o programador, cada tarefa tem que
ware sem modificação. Existem dois tipos essenciais de multitarefa ser tratada como uma rotina de interrup-
ao nível do sistema operacional, o coopera- ção. Se já programou com interrupções,
Gestão do CPU cional e o preemptivo. está certamente familiarizado com as
Todos os sistemas operacionais aqui apre- Num sistema multitarefa cooperacional potenciais armadilhas. Acessos a variáveis
sentados facilitam a execução de várias cada mudança de contexto acontece apenas globais podem levar a erros se não forem
tarefas simultaneamente, ou quase simul- quando uma tarefa cede voluntariamente tomadas precauções. As rotinas têm tam-

36 09-2010 elektor
Hardware & Software

Pesquisa
Esta lista inclui apenas os sistemas operacionais que suportam pelo menos um microcontrolador de 8 bits e que estão atualmente em desen-
volvimento. Em Plataformas listamos apenas as famílias genéricas, nas quais alguns membros em particular podem não ser suportados. A
licença indicada é a licença original, sob a qual podem haver algumas pequenas diferenças na licença concreta de cada SO.

Projeto Plataformas Licença Notas Internet


BeRTOS AVR, ARM GPL Vários controladores, gráficos www.bertos.org
AVR, ARM, MSP430, Coldfire,
ChibiOS/RT GPL Seguro, desenho estático http://chibios.sourceforge.net
H8S, x86
6502, ARM7, AVR, MSP430,
Contiki BSDL TCP/IP, 6LoWPAN, gráficos www.sics.se/contiki
Z80, etc.
Muito pequeno e compacto
Femto OS AVR GPL www.femtoos.org

ARM, AVR, MSP430, Coldfire,


FreeRTOS GPL Distribuição ampla www.freertos.org
x86, PPC, etc.
FunkOS AVR, ARM, MSP430 Sleepycat Gráficos http://funkos.sourceforge.net
HACK-RTOS Zilog CPUs GPL Compacto, apenas assembly www.hack-rtos.ru
Helium HCS08, Coldfire GPL Pequeno núcleo http://helium.sourceforge.net
Nano-RK AVR GPL Rede de sensores www.nanork.org
Nut/OS ARM, AVR BSDL TCP/IP, semelhante a POSIX www.ethernut.de
NuttX 8052, ARM, Z80, etc. BSDL TCP/IP, API POSIX http://nuttx.sourceforge.net
AVR, ARM, Blackfin, MSP430,
scmRTOS LGPL C++ http://scmrtos.sourceforge.net/ScmRTOS
etc.
TinyOS ARM, AVR BSDL Rede de sensores, nesC www.tinyos.net
TNKernel ARM, PIC24, HCS08, Coldfire BSDL API ITRON www.tnkernel.com
YAVRTOS AVR LGPL Simple task scheduler www.chris.obyrne.com/yavrtos

bém tipicamente de ser reentrantes [3], isto a zero. Como é óbvio, a rotina de alteração Todos nós já passamos pela situação em que
se forem utilizadas simultaneamente por do estado do semáforo não pode ser cha- emprestamos livros mas não nos recorda-
várias outras tarefas. A principal vantagem mada diretamente, mas apenas por uma mos a quem, e um sistema operacional
da multitarefa preemptiva é ainda assim rotina do sistema operacional. Se necessá- passa pelos mesmos problemas, especial-
óbvia, as tarefas de maior prioridade podem rio, essa rotina trata também da mudança mente em aplicações escritas em C. Por esta
ser atendidas com um atraso mínimo. de contexto. Existem uma variedade de razão particular, os criadores do ChibiOS/RT
A escolha do melhor método para aplica- outros mecanismos comparáveis, a maio- (ver tabela) evitaram totalmente a utiliza-
ções reais depende efetivamente de cada ria dos quais funcionam sob o mesmo prin- ção de gestão dinâmica de memória. Isto
situação concreta. Alguns sistemas opera- cípio básico. também permite contornar um outro pro-
cionais, ainda assim, oferecem ambas as Na multitarefa preemptiva os requisitos de blema relacionado com a fragmentação de
variantes, como é o caso do FreeRTOS e do sincronismo são naturalmente mais exi- memória, no qual toda a memória disponí-
Femto OS (ver tabela). gentes, e a própria operação de mudança vel acaba por se fragmentar em pequenos
de contexto é mais onerosa do que no pedaços, devido às constantes operações de
Controle de tarefas método cooperacional. Se a necessidade de alocação e libertação.
Independentemente do tipo de multitarefa proteção contra chamadas de outras tarefas
utilizado, as tarefas devem ter a capacidade durar apenas breves instantes, pode-se em Controle de entradas/saídas
de serem executadas reciprocamente. Afi- alternativa definir uma zona crítica na qual O controle de E/S, mesmo hoje em dia, não
nal de contas, faz pouco sentido que uma se impedem mudanças de contexto. Isto é está totalmente integrado em todos os sis-
tarefa de envio de dados seja iniciada antes comparável à desativação de interrupções temas operacionais (antigamente apenas
da tarefa anterior ter disponibilizado os em programas sem sistema operacional. os sistemas operacionais top eram obriga-
dados necessários para esse envio. Uma Praticamente todos os sistemas operacio- dos a fornecer esta funcionalidade, uma vez
técnica já amplamente estabelecida faz uso nais implementam alocação dinâmica de que os sistemas em questão faziam parte do
dos semáforos (mais concretamente, pense memória. Desta forma, o sistema operacio- núcleo do sistema).
num semáforo como uma cancela dos cami- nal pode reservar memória para uma tarefa Em sistemas operacionais como o Linux
nhos de ferro). Na sua forma mais simples conforme e sempre que necessário. E de o próprio núcleo (kernel) trata de toda a
uma dada variável semáforo é atualizada igual forma, quando essa memória já não funcionalidade de gestão de entradas/saí-
por uma tarefa de um valor zero para um. for necessária, pode ser libertada para pos- das. Os sistemas operacionais mais básicos
A próxima tarefa que tente fazer a mesma terior utilização por outras tarefas. Os siste- oferecem um suporte muito limitado ou
operação nesta variável é bloqueada até que mas menores cuja memória é muito limi- mesmo nenhum suporte deste gênero. Mas
a primeira tarefa faça o reset do semáforo tada são beneficiados deste mecanismo. isto pode não representar um problema sig-

elektor 09-2010 37
Hardware & Software

Compatibilidade mínimo (apenas um controlador de 8 bits).


Qualquer programador que pretenda migrar uma aplicação de um sistema operacional O Contiki torna possível não só o início dinâ-
mico de processos durante a execução, mas
para outro pode encontrar dificuldades. As funções específicas para um dado sistema
implementa inclusive uma interface gráfica
operacional (iniciar uma tarefa, determinar prioridades, etc.) podem obstruir a sua
com usuário (GUI) para esse fim (Figura 2).
compatibilidade. Qualquer migração para um outro sistema operacional vai automati- Não é sequer necessário uma porta para
camente esbarrar nestas funções, e todo o processo vai ser mais problemático. Siste- monitor e mouse, uma vez que o Contiki tem
mas operacionais como o Nuttx ou TNKernel (ver Tabela), que foram orientados no sen- um servidor VNC [5] integrado com suporte
tido de uma compatibilidade com as normas POSIX [7] e/ou ITRON [8] são as exceções TCP/IP. Assim, basta lançar um navegador
nestes pequenos sistemas embarcados. (browser) no PC, onde uma aplicação em
Java roda um cliente VNC para representar
nificativo se o hardware oferecer interfaces gement Unit), cada aplicação pode ser pro-o ambiente gráfico do sistema operacional
relativamente básicas que possam ser con- tegida das ações das restantes. Se um pro-embarcado. Este até tem a sua própria apli-
trolados diretamente pela aplicação. Ainda grama em erro tentar reservar memória cação para navegar na Internet, como pode
assim, esta abordagem falha um dos princí- que pertence a um outro programa, o sis- constatar ao dar um duplo clique no ícone
pios essenciais de um sistema operacional, tema operacional simplesmente isola esse correspondente. É assim perfeitamente
que passa por esconder os detalhes do sis- primeiro programa faltoso. Uma vez que a possível consultar a Internet usando um
tema operacional do usuário. Geralmente mudança de contexto entre processos com pequeno processador de 8 bits!
isto aplica-se não só aos comandos de E/S proteção tem custos significativos em ter-
clássicos, mas também a outras funções mos de desempenho, existe uma alternativa Ambiente de desenvolvimento
dependentes de hardware, como a leitura que passa por rodar várias tarefas de forma Para adaptar os pequenos sistemas opera-
ou ajuste da data e hora do sistema. quase concorrente no interior de um único cionais ao hardware disponível e às aplica-
Na realidade, os sistemas operacionais rara- processo, as chamadas threads. Nesta situ-
mente concedem acesso direto aos coman- ação, as várias threads partilham a memória
dos de entrada/saída clássicos necessários do processo. É aqui que as fronteiras com
para as aplicações, mas fornecem antes uma os sistemas operacionais (familiares) para
chamada biblioteca de execução runtime PC se esbatem. Não é assim surpreendente
onde são ligadas em conjunto aplicações e que no domínio dos sistemas operacionais
sistema operacional (Figura 1). Estas biblio- embarcados de código fonte aberto, o Linux
tecas são normalmente suficientemente fle- seja o líder de mercado incontestado.
xíveis para cobrir uma ampla gama de fun- Os sistemas menores não têm normalmente
ções standard sem suporte do sistema ope- capacidade de gerir múltiplos processos. O
racional, pelo menos das normas C89/C99 sistema operacional é normalmente “encai-
[4] válidos para programas em C. xado” em bibliotecas de funções que são
compiladas e ligadas diretamente com a Figura 2. O Contiki oferece uma interface
Processos e tarefas aplicação, gerando um único arquivo biná- de usuário gráfica (GUI), que pode ser
Os sistemas operacionais para processado- rio. Subsequentemente este arquivo é carre- controlada a partir de um browser num PC.
res de 32 bits ou superior oferecem natural- gado no sistema destino e é executado num
mente funções adicionais. São frequente- único processo. A multitarefa é neste caso
mente baseados num núcleo monolítico que restrita a várias threads em um único pro- ções em questão, estes precisam ser pre-
guarda e executa aplicações na memória cesso, designado multithreading. A falta de viamente configurados. Na grande maio-
RAM em tempo real, o que permite a execu- proteção de memória torna muito simples ria dos casos essa configuração passa pela
ção de várias aplicações concorrentemente que uma rotina em falta desestabilize ou edição do código fonte num PC, consul-
(multiprocessamento). Utilizando um hard- mesmo pare todo o sistema. tando a documentação adequada, e a exe-
ware dedicado conhecido como Unidade de O sistema Contiki demonstra ser possível cução subsequente do programa Make (ou
Gestão de Memória MMU (Memory Mana- obter resultados notáveis até com hardware semelhante) para compilar o dito sistema,
de forma a cumprir os seus requisitos. Em
Internet alguns casos são fornecidos programas con-
venientes de configuração, como é o caso
[1] “Femto OS”, Elektor Nº 101, Agosto de 2010.
do sistema operacional Nut/OS (Figura 3),
[2] “EIR –Elektor Internet Rádio”, Elektor Nº 75, Junho 2008 (http://www.elektorbrasil. ou pequenos programas de configuração
com.br/revistas/2008/junho/eir-–-elektor-internet-radio.523255.lynkx). assistida, os chamados wizards, como os
[3] http://pt.wikipedia.org/wiki/Reentr%C3%A2ncia fornecidos com o BeRTOS e Helium (ver
Tabela).
[4] http://en.wikipedia.org/wiki/Standard_C_library
Infelizmente, não há garantias que os pro-
[5] http://en.wikipedia.org/wiki/Virtual_Network_Computing gramas de compilação e conexão, utiliza-
[6] www.opensource.org/licenses/alphabetical dos da forma habitual para o desenvolvi-
mento de firmware, se integrem de forma
[7] http://en.wikipedia.org/wiki/POSIX#POSIX-oriented_operating_systems
harmoniosa com o seu sistema operacional
[8] http://en.wikipedia.org/wiki/ITRON selecionado.

38 09-2010 elektor
Hardware & Software

Pode também acontecer que as ferramen-


tas de desenvolvimento recomendadas
não estejam disponíveis para a versão do
sistema operacional que tem instalado no
seu PC. Os usuários de Mac OS são frequen-
temente esquecidos, mas mesmo eles não
devem desanimar. A melhor solução passa
por procurar um ambiente de desenvolvi-
mento que funcione sob Linux. Essas ferra-
mentas podem normalmente ser instaladas
a partir dos pacotes de código fonte até em Figura 3. A configuração de um sistema operacional Nut/OS é extremamente prática.
OS X. Além disso existem emuladores de
Linux, como o Fink para Mac e o Cygwin ou
MinGW para Windows.
Ao instalar aplicações de dimensões subs-
tanciais, torna-se também inevitável ter de
identificar e corrigir erros. Mesmo recor-
rendo a depuradores com conexão direta
ao circuito (in-circuit), todo o processo é
lento e demora muito tempo, uma vez que
cada alteração tem de ser transferida para
o sistema alvo antes de poder ser testada.
Com uma interface de programação ade-
quada compatível, como é o caso do Nuttx
ou Nut/OS, pode-se começar por testar as
suas aplicações num PC. Normalmente,
apenas são necessárias algumas alterações Figura 4. Os usuários do kit de avaliação LM3S8962 Ethernet Evaluation Kit da
antes de transferir o programa para o sis- Luminary podem optar entre um sistema operacional comercial ou o FreeRTOS, que
tema embarcado. Mais prático ainda é a uti- é disponibilizado sob licença GPL.
lização de um simulador, como o fornecido
pelo Contiki.

Licenças
Todos os entusiastas que programem exclu-
sivamente para deleite pessoal e sem quais-
quer fins comercias podem utilizar software
de código fonte aberto sem qualquer tipo
de preocupações. Contudo, esta liberdade
tem limites, especialmente no que diz res-
peito à partilha de licenças com terceiros.
A mais popular licença GNU GPL (Gene-
ral Public Licence) é bastante estrita neste
aspecto [6]. Se optar por uma biblioteca de
funções com licença GPL, qualquer aplica-
ção que a utilize deve também obrigatoria-
mente publicar o seu código fonte, igual-
mente sob uma licença GPL. Contudo, esta
licença permite a inclusão de exceções à
licença original. Para software no domínio
das aplicações embarcadas estas exceções Figura 5. As páginas de projetos de sistemas operacionais (esta é do BeRTOS) são
são normalmente a regra, explicando assim o melhor sítio para encontrar o respectivo código fonte, documentação, truques e
que seja possível a venda de kits de avalia- dicas e também notícias atualizadas.
ção com sistemas operacionais de código priamente ditas permaneçam abertas. atenção as condições de uma licença, sendo
fonte aberto como o FreeRTOS (Figura 4). As licenças BSD são relativamente mais que reserve uma parte do seu tempo para
Com a licença LGPL (Lesser General Public suaves, e exigem apenas que sejam retidas este estudo antes de escolher um sistema
Licence) programas que utilizem biblio- informações relativas à autoria e direito de em particular!
tecas de funções sob esta licença podem cópia (copyright) nas distribuições de pro-
permanecer como código fonte fechado, gramas e bibliotecas sob esta licença. (091035)
desde que as alterações às bibliotecas pro- Vale sempre a pena ler e compreender com Artigo original: Small & Open Source – March 2010

elektor 09-2010 39
IDEAS PARA PROJETO

S1

R1 R3

820R

1M
D1
8 4
BT1
R
1N4148 7
DIS divisor de tensão que mantém o cátodo do LED mesmo abaixo da
IC1
9V 2
OUT
3 tensão de disparo. Quando a luminosidade ambiente é suficiente-
TR
D2
7555
mente grande o LED apresenta algumas centenas de millivolts, que
6
THR são adicionados à tensão na junção de R1/R2 e mantém o pino 2
CV acima do 1/3 do nível de disparo.
1 5
R2 Neste estado, o pino 3 de saída do 7555 está próximo de zero
C1
fazendo com que o diodo 1N4148 esteja inversamente polarizado,
390R

100n
permitindo que a corrente fotovoltaíca gerada pelo LED flua para
o pino 2 (entrada de disparo).
1
070386 - 11
Quando o nível de luminosidade do meio ambiente desce bastante
a tensão no LED cai e o pino 2 passa a ficar abaixo do nível de dis-
paro. O 7555 gera então um pulso, o 1N4148 passa a estar direta-

LED como sensor mente polarizado e o LED ilumina-se. No final do período de tempo
definido por R3 e C1 o monostável entra em reset e descarrega

óptico C1, ficando pronto para outro ciclo. O LED desliga-se por breves
instantes durante este tempo o que lhe permite funcionar como
sensor de luz ambiente novamente.
Geoff Nicholls (Alemanha)
O circuito apresentado na Figura 2 funciona com a luz do dia, o
Os LEDs vermelhos comuns são normalmente usados como emis- LED pisca com luz forte e desliga-se com luz ambiente fraca. Neste
sores de luz mas também podem ser usados como sensores ópti- caso, o 7555 está configurado para funcionar como astável e faz
cos. Um único LED pode funcionar até como emissor de luz e piscar o LED através do diodo 1N4148, desde que o pino 4 de reset
detector no mesmo circuito! permaneça sensivelmente abaixo dos 600 mV. Se a luz ambiente
A ideia básica é iluminar o LED com uma forma de onda retangular for muito baixa o LED não será capaz de gerar tensão suficiente
aproveitando o tempo em que o sinal está alto para iluminar o LED no pino 4 e a saída do 7555 fica próximo de zero, o que impede o
e o restante tempo para funcionar como sensor que detecta a cor- LED de acender.
rente fotovoltaíca gerada pela luminosidade do meio ambiente. O LED funciona como emissor de luz quando a saída do pino 3 está
Os dois circuitos que aqui apresentamos utilizam alguns compo- no nível alto e como sensor quando a saída está no nível baixo.
nentes de baixo custo para demonstrar como um LED pode fun- O primeiro circuito pode ser usado para indicar a posição dos inter-
cionar como sensor e indicador. ruptores da luz, fechaduras, etc. durante a noite.
O circuito da Figura 1 funciona como iluminação para a noite – O segundo circuito é ideal para um simples jogo com um indica-
o LED fica apagado em ambientes com luminosidade e acende dor de alvo, o LED alvo deve acender-se quando é atingido pela
quando o nível da iluminação ambiente desce abaixo de um deter- luz de um ponteiro laser. O capacitor C1 pode ser incrementado
minado valor. O temporizador CMOS 7555 está configurado para para mais ou menos 10 µF para aumentar o tempo em que o LED
funcionar como monostável e dispara quando a tensão do pino está ligado.
2 é inferior a 1/3 da tensão de alimentação. R1 e R2 formam um Ambos os circuitos podem ser usados como interruptores de
toque num quarto iluminado; cobrindo o LED com um dedo muda
o estado da saída do 7555.
S2
O circuito integrado temporizador deve ser do tipo CMOS uma vez
que o projeto do circuito requer correntes de entrada muito baixas
R1 para funcionar corretamente. Nos nossos protótipos foi utilizado
o dispositivo ICM7555 da Intersil.
10k

(070386-1)
8 4
BT1 Artigo original: LEDs double as photosensors – January 2010
R
7
DIS
R2
IC1
9V

Pisca-pisca com
2 3
1M

TR OUT
D1
6
7555
THR

C1
1
CV
5
1N4148
D2
lâmpada incandescente
100n
D. Prabakaran (Índia)
Neste circuito usamos dois MOSFETs IRF511 configurados como
2 070386 - 12 multivibrador astável simples para ligar e desligar alternadamente

40 09-2010 elektor
IDEIAS PARA PROJETO

+12V

LA1 LA2

12V 10W 12V 10W

C2

100n
R2
22M espaciais para comunicar entre satélites.
T2
C1
O sistema é composto por uma seção de transmissão e outra de
recepção, Figura 1 e 2, respectivamente.
R1 100n IRF511 O circuito do transmissor é constituído basicamente por um mul-
tivibrador astável (IC1) que gera um conjunto de pulsos, que serve
22M

T1
como sinal de modulação de entrada para o circuito com o diodo
laser. A forma de onda de saída que aparece no pino 3 do NE555
IRF511
tem um tempo no estado alto dado por:
060249 - 11
0,69 × (R1+P2) × C2 [s]

duas lâmpadas incandescentes. Os valores dados para a resistência E tempo no estado baixo dado por:
e capacitor definem uma frequência de comutação de aproxima-
damente 0,33 Hz. Ao variar a resistência ou o capacitor podemos 0,69 × P1 × C2 [s]
obter quase qualquer frequência de comutação. Se aumentar C1
e C2, ou R1 e R2, a frequência de comutação diminui. Se diminuir A frequência deste sinal retangular pode ser ajustada para cerca
os valores a frequência de comutação aumenta. de 1 kHz. O divisor de tensão R2-R3-P3 reduz a amplitude de pico
Contrariamente à maioria dos dispositivos semicondutores, os dos pulsos de cerca de 8 V para 3 V. O ampop IC2, o transístor T1
MOSFETs de potência podem ser ligados em paralelo, sem ser e os componentes associados constituem o circuito de controle
preciso nenhum circuito de partilha de corrente especial, com para o diodo laser D3. A corrente do diodo laser é comutada entre
o objetivo de controlar cargas com correntes maiores. Isso pode zero e cerca de 90 mA. O nível de corrente superior nesta configu-
ser uma característica importante quando o circuito se destina a ração é determinado pela tensão no pino 3 de IC2, que devido ao
ser usado para ligar um conjunto de lâmpadas incandescentes de fenômeno de terra virtual do amplificador operacional, também
elevada potência, porque a resistência da lâmpada inicialmente é
muito mais baixa do que quando está à temperatura normal de +9V
funcionamento.
Uma lâmpada típica de 12-14 V tem aproximadamente uma R1
C1 C4 D3
4k7

impedância de 6 Ω no estado frio. Quando é aplicada uma tensão


100n 100n
de 12 V, a corrente inicial é da ordem dos 2 A. A mesma lâmpada, 8 4
LASER

para funcionar a 12 V, precisa apenas de aproximadamente 200 D1 D2 R


7
mA. A impedância a quente aproxima-se tipicamente dos 60 Ω, ou 2x DIS
IC1
IC2
1N4001 R2 1
dez vezes a impedância a frio. Este constrangimento deve ser consi- P1 P2
2
TR OUT
3
2k2
3 7
5
T1
6
derado quando da escolha do dispositivo semicondutor para con- 10k 10k 6
NE555 R3
2
LF356
THR
trolar a lâmpada incandescente.
1k2

4 2N2222
CV
(060249-1) 1 5

Artigo original: Incandescent Lamp flasher – January 2010 P3


R4
C2 C3
33R

10k
100n 100n
2W

Comunicação com laser +9V


C5

BT1 100n
Raj. K. Gorkhaili (Nepal)
9V
Comunicar com laser não é nenhuma novidade. Pode estar fami- -9V
liarizado com os cabos de fibra óptica que transportam os nos-
sos sinais telefônicos em torno do globo. Nesse caso, o raio laser S1
é usado como uma portadora que é depois modulada pelo sinal a BT2
transmitir. No receptor, o sinal enviado é recuperado separando-
9V
o da portadora.
Esta ideia para projeto descreve uma conexão laser sem fios que
pode ser usada para transmitir informação em linha de visada 080024 - 11
direta entre duas estações. O princípio básico de funcionamento -9V

da conexão sem fios é idêntico ao aplicado à fibra óptica. A comu-


nicação por ligações laser sem fios é muito popular em aplicações 1
elektor 09-2010 41
IDEAS PARA PROJETO

+9V

D4 C6 C9

100n 100n
BPX65
R7 R8
T2
de corrente através do diodo laser. Não exceda as especificações
68k 1k5
do fabricante!
IC3
1
2N2222 3. Alinhe a placa do transmissor e do receptor de modo a assegurar
3 7
5
6 IC4 que a luz do laser incide no fotodiodo.
LF356
2 3
1
7
OSC
4. Verifique a amplitude do sinal à saída de IC3 (pino 6). A ampli-
5
4
LF356
6
tude do pulso deve estar situada no intervalo de 3-5 V.
2
4
5. Se tudo estiver funcionando corretamente, deve conseguir ouvir
R5 R6 R9
LS1 o tom de 1 kHz no alto-falante.
470R

820R

1k5

6. Faça experiências com o alcance do sistema com linha de visada


direta – este vai depender da potência do laser e da óptica usada.
+9V (080024-1)
C7 C8
Artigo original: Communication with a laser – January 2010
BT3 100n 100n

9V
-9V
Atenção
Nunca olhe diretamente para o raio laser. Observe e cumpra todas
S2
as precauções de segurança fornecidas pelo fabricante do disposi-
BT4
tivo emissor de luz.
9V

2 -9V
080024 - 12
Circuito para teste do
valor mínimo de tensão
de funcionamento
aparece no pino 2 (dividido por R4). Vladimir Mitroivic (Croácia)
Já que não se senti confuso com as tensões de alimentação com
O receptor consiste basicamente num conversor corrente/tensão que os processadores e computadores modernos funcionam, é um
seguido por um amplificador não inversor, construído em torno desafio conseguir verificar até que ponto uma tensão de alimenta-
de IC3, cujo ganho é calculado da seguinte forma: ção de um circuito eletrônico, completamente analógico, pode ser

(R6+R7) × R6

O ganho para este estágio pode ser selecionado de forma a obter


a amplitude de sinal suficiente na sua saída. A saída controla -V
um pequeno alto-falante através do transistor T2 ligado como
seguidor de emissor. O ganho unitário do estágio tampão con- R1 R2 R3 R4

struído em torno de IC4 permite visualizar o sinal recebido num


10k

10k
1k

1k

osciloscópio, caso o pretenda.


Tanto o transmissor como o receptor são alimentados a partir de C1 C2

duas pilhas de 9 V de modo a obter uma tensão de alimentação


47n 47n
simétrica de ±9 V.
T1 T2 BZ1
Os dois circuitos são bastante simples podendo ser facilmente
montados numa breadboard ou numa placa perfurada para
protótipos. 2x BC559
2x AC542
...........
Para configurar o sistema,
090422 - 11
1. Ajuste o potenciômetro P1 e P2 para obter um conjunto de pul-
sos com uma frequência de aproximadamente 1 kHz no pino 3
do NE555.
2. Ajuste o potenciómetro P3 de modo a obter o valor desejado

42 09-2010 elektor
IDEIAS PARA PROJETO

VCC
IC1 = LM393D

R2 R1

Tabela 1.

220R
220R
Transistor Tensão de corte Tensão P1
D2
de condução
3 8
BC559B 470 mV 520 mV 1k 1
IC1.A
2
AC542 130 mV 190 mV 4
D1

3V3
baixada mantendo o circuito completamente operacional.
O circuito em teste, aqui apresentado, consiste num normal mul- 080381 - 11

tivibrador astável construído com um par de transistores PNP e


um pequeno alto-falante piezoelétrico para sinalizar que a ele-
trônica ainda está trabalhando. O funcionamento do circuito é
também verificado com um osciloscópio, porque para baixas ten-
sões de alimentação o alto-falante piezoelétrico pode não con-
seguir produzir um nível de som muito alto. exemplo, TTL), reinicie o microcontrolador ou desligue a sua apli-
O circuito foi testado e a sua resposta analisada. Para as suas cação antes de utilizar a aplicação (estado indefinido) devido a
próprias experiências, siga a sequência. um nível de tensão muito baixo.
1. Aplique uma tensão de alimentação de -1 V e observe se o cir-
cuito começa a oscilar. O circuito utiliza apenas um único comparador do circuito
2. Lentamente decremente a tensão de alimentação (sim, para integrado LM393D. Em alternativa, sinta-se livre para usar um
0 V) até que o circuito deixe de oscilar. LM339.
3. Repetidamente ligue e desligue a tensão de alimentação, de O LM393D compara as duas tensões, V1 na entrada inversora
cada vez com uma tensão ligeiramente mais alta, até que o cir- (-) e V2 na entrada não inversora (+). Quando V2 < V1, a saída
cuito comece novamente a funcionar. do comparador é colocada ao nível baixo, ou seja, à massa (ou
quase). Quando V2 > V1, a saída vai para o nível lógico alto, ou
Foram testados dois pares de transistores (BC559B e AC542). Os seja, (quase) para o valor da tensão de alimentação positiva.
resultados são apresentados na Tabela 1. Um circuito que está
operacional com apenas 130 mV! Incrível, não? Será que a Intel Um diodo de zener de 3,3 V (D1) e uma resistência de 220 Ω
vai seguir na direção do germânio dentro de pouco tempo? (R3) formam um regulador de tensão usado para estabelecer
Como é óbvio, as suas experiências precisam de uma fonte de uma tensão de referência (V1) de 3,3V na entrada inversora. A
alimentação com um ajuste de tensão baixo e muito preciso na resistência R3 limita a corrente através do diodo zener (D1) para
gama de 0-1 V. Se não tiver um instrumento deste tipo, pode um valor inferior a 6 mA, fazendo com que o diodo permaneça
usar um divisor de tensão de elevada corrente alimentado, diga- polarizado inversamente e conduza até mesmo quando a tensão
mos, a 5 V com uma derivação a 1 V. da bateria desça a 4,65V.
(090422-1)
Artigo original: How low can it go? – January 2010 O potenciômetro ajustável R2 permite ajustar o valor da tensão
V2 na entrada não inversora acima do limiar de 3,3 V quando a
tensão de alimentação VCC está acima dos 4,65 V. A saída do
comparador comuta então para o valor lógico alto uma vez que
a saída do transistor está desligada. Por conseguinte, o LED é

Indicador de baixo
também desligado.

nível de tensão
Quando VCC desce abaixo dos 4,65 V, a tensão V2 desce abaixo
do nível de V1. Isto faz com que a saída do comparador seja
colocada ao valor da tensão de alimentação negativa (GND). O
Lars Nas (Suécia) fluxo de corrente em R1 faz com que o LED acenda. A resistên-
Este circuito é um sistema de monitoração de baixo nível de ten- cia R1 foi calculada para limitar a corrente no LED em aproxi-
são para dispositivos de +5 VVCC. Pode ser usado para moni- madamente 15 mA.
torar a tensão de uma bateria indicando quando o nível de tensão
desce abaixo de um determinado valor pre-definido. A saída do (080381-1)
circuito pode ser ligada diretamente à parte lógica digital (por Artigo original: Low voltage indicator – January 2010

elektor 09-2010 43
Hardware & Software

Rádio-computador ATM18
Usando o chip DSP SI4735
Burkhard Kainka e Wolfgang Rudolph
(Alemanha)
Era uma vez quando a recepção
de rádio era tão simples. Bastavam
apenas três componentes e um
conjunto de alto-falantes. A melhor
recepção ocorria após o pôr-do-
sol, esticando um fio para a antena
ao longo do comprimento de um
jardim e um pouco de paciência
podia captar várias estações de
rádio. Atualmente, pode efetuar
um trabalho semelhante usando o
poder computacional de milhares
de transistores “amontoados” num
minúsculo circuito integrado.

Um dos primeiros tipos de receptor de rádio são do sinal usando uma ou mais frequên- SDR (Software Defined Rádio). Este é um
foi o receptor por detecção. Uma bobina e cias intermediárias tem permanecido inal- conceito totalmente novo que tem pouco
mais um capacitor variável eram responsá- terado. Um projeto de rádio clássico desta em comum com a concepção tradicional
veis por selecionar a frequência que querí- época usava bobinas, capacitores variá- de recepção rádio. O software SDR utiliza
amos captar. Um pequeno pedaço de cristal veis, filtros de frequência intermediária e um programa de computador para realizar
que você pode provavelmente encontrar no uma série de outros componentes. Muitas as funções normalmente desempenhadas
seu jardim serve perfeitamente como ele- das características mais importantes de um pelo hardware do receptor. Os parâme-
mento retificador de sinal. Pendure um fio receptor, tais como a rejeição a sinais espú- tros do receptor podem ser alterados na
longo da janela para a rua e adicione um rios, seletividade e rejeição a sinais eleva- hora com um tempo de atraso mínimo. Já
conjunto de alto-falantes de alta impedân- dos, entre outras, dependiam muito do tipo mostramos em outros artigos publicados
cia (2x2000 Ω) e pronto. Naqueles tempos, de filtros utilizados no projeto. Com a cres- pela Elektor o que é possível fazer com o
isto consistia na vanguarda da tecnologia. cente sofisticação da tecnologia todos os Software Defined Radio. Com o hardware
Com o passar dos tempos o detector a cris- processos como a demodulação AM e FM, reduzido ao mínimo, não vai encontrar
tal foi substituído pelos mais confiáveis decodificação estéreo e informação RDS, componentes RF convencionais na placa
diodos. Longe vão os dias de pesquisar a são implementados por circuitos integra- de circuito impresso. A frequência inter-
superfície do cristal com a ponta de um fio dos altamente especializados. Finalmente, mediária (FI) é digitalizada pela placa de
fino para encontrar um defeito na estru- temos assistido ao lançamento de rádios som do computador para posterior pro-
tura cristalina, onde se obteria o melhor num único circuito integrado, primeiro para cessamento. O programa SDR que roda
efeito de retificação. Com o tempo, as vál- AM, e posteriormente para FM, de modo num PC encarrega-se de todo o resto. Lar-
vulas abriram caminho para os transistores que quando nos propomos construir um gura de banda ajustável, diferentes técni-
e agora os rádios estão cheios de transis- rádio utilizando estes componentes não cas de demodulação, controle automático
tores específicos para alta-frequência. O há quase nada para fazer. de nível, de fato existem muito poucos
grande salto veio com o desenvolvimento parâmetros que não podem ser alterados.
do receptor de rádio super heterodino que Software Radio No final da cadeia, um conversor D/A na
não foi muito melhorado durante anos. Mais recentemente surgiu a idéia de um placa de som disponibiliza o sinal de áudio
Também o complexo método de conver- Software receptor de estações de rádio demodulado para um conjunto de alto-

44 09-2010 elektor
[ tracoleal.com.br ]
Hardware & Software

Características principais do SI4735


• Faixa VHF: 64-108 MHz
• Faixa LW: 153-279 kHz
• Faixa MW: 520-1710 KHz
• Faixa SW: 2,3-21,85 MHz
• PLL com VCO integrado
• Controle automático de frequência (AFC)
• Controle automático de ganho (AGC)
• Regulador de tensão LDO integrado
• Decodificador digital FM estéreo
• Frequência de referência programável
• Controle digital de volume
• RDS
• Saída digital de áudio opcional
• Interface de 2 ou 3 fios
• Tensão de alimentação: 3,3 V (típico)
• Encapsulamento QFN de 20 pinos (3x3x0,55 mm)
Figura 1. O rádio de 3x3 mm.

falantes ativos. que apenas precisa de uma antena, uma


fonte de alimentação e dois alto-falantes
Rádio DSP
Enquanto que a primeira vaga dos progra-
ativos para conseguir decodificar um sinal
de recepção VHF estéreo. É necessário Comunicações
mas SDR estava definida (como o próprio muito pouco hardware adicional, basta Módulo SCO-0601
nome sugere) em software, ou seja, a par- uma bobina e um capacitor. Para contro-
tir de um programa que rode num com- lar o rádio vamos usar a Placa AVR ATM18
putador, os mais recentes chips de rádio da Elektor. O módulo foi desenvolvido para estudos
digital que têm aparecido não utilizam o dos princípios de comunicações analógi-
computador e não são, portanto, no ver- Os circuitos integrados DSP que estão pre- cas e digitais, facilitando a compreensão
dadeiro sentido da palavra SDRs. O proces- parados para funcionar com sinais de RF
samento do sinal recebido pelo receptor é são normalmente dispendiosos e consu- dos assuntos relacionados com as dis-
efetuado num integrado usando um pro- midores de muita energia, mas o mesmo ciplinas de telecomunicações. Estuda os
cessador digital de sinal (DSP). O contro- não se pode dizer do SI4735 da Silicon Labs tipos de formas de ondas envolvidas nos
lador externo apenas interpreta coman- (www.silabs.com). Este é um receptor DSP
dos enviados pelo usuário e informa o cir- contendo todos os estágios de RF neces- processos de modulação e demodulação,
cuito integrado o que deve ser feito. Como sários: sintetizador de frequência, conver- multiplexação, códigos de linha, entre
exemplo extremo desse conceito, vemos sor A/D, DSP e conversor D/A tudo num outros, bem como suas características e
aqui um circuito integrado de 3x3 mm pequeno encapsulamento SMD minús-
propriedades fundamentais. Visite-nos na
internet e conheça as soluções DATAPOOL
FM / SW
Si4734/35 mais adequadas para sua necessidade.
ANT

FMI RDS DOUT


LNA (Si4735)
DIGITAL OUTROS MÓDULOS PARA COMUNICAÇÕES
AUDIO DFS
(Si4735)
GPO/DCLK
Módulo 8801
AGC LOW-IF

MW / LW AMI ADC DAC ROUT


ANT
LNA DSP
RFGND
ADC DAC LOUT
AGC

2.7 - 5.5 V VDD


CONTROL
GND LDO AFC VIO
INTERFACE 1.5 - 3.6 V
SCLK
RCLK

SEN

SDIO
RST

090740 - 12

Figura 2. Diagrama de blocos do SI4735 (fonte: www.silabs.com).

elektor 09-2010 www.datapool.com.br


Hardware & Software

Listagem 1. Inicialização e configuração. I2cwbyte 34


Config Timer0 = Pwm , Prescale = 1 , Compare A I2cwbyte &H12
Pwm = Clear Down I2cwbyte &H00
Start Timer0 I2cwbyte &H02
Pwm0a = 128 ‘Xtal/2/(255) = 31373 Hz OC0A/ PD6 I2cwbyte &H01
Ref = 31373
Ddrd.4 = 1 ‘Reset SI4735 H = High(ref)
Waitms 100 L = Low(ref)
Ddrd.4 = 0 I2cwbyte H
Waitms 100 I2cwbyte L
I2cstop
Ffm = 8880 ‘Start freq FM *10 kHz End Sub
Vol = 63 ‘Volume 0...63
… Sub Fm_tune_freq();
I2cstart
Sub Fm_start() I2cwbyte 34
Init_fm I2cwbyte &H20
Waitms 200 I2cwbyte &H00
Refclock H = High(ffm)
Waitms 5 L = Low(ffm)
Rx_volume I2cwbyte H
Waitms 5 I2cwbyte L
Fm_tune_freq I2cwbyte &H00
End Sub I2cstop
End Sub
Sub Init_fm()
I2cstart Sub Rx_volume()
I2cwbyte 34 I2cstart
I2cwbyte &H01 I2cwbyte 34
I2cwbyte &H00 I2cwbyte &H12
I2cwbyte &H05 I2cwbyte &H00
I2cstop I2cwbyte &H40
End Sub I2cwbyte &H00
I2cwbyte &H00
Sub Refclock() I2cwbyte Vol
I2cstart I2cstop
End Sub

culo! O circuito integrado apresentado na razoavelmente boas o que o torna ideal para
Figura 1 é um receptor AM/FM completo. utilizar no projeto de rádios portáteis, rádios
A banda de AM está compreendida entre com despertador ou leitores de MP3, e celu-
os 153 kHz (onda longa) até aos 21,85 MHz lares, que cada vez mais oferecem a possibi-
(onda curta, na banda dos 13 metros), com lidade de ouvir rádio com um receptor inte-
filtros de largura de banda selecionável e grado. O primeiro projeto de um rádio por-
uma seção de controle de ganho especial- tátil usando um DSP da SI já está disponível.
mente sofisticada. A recepção de sinais O objeto deste exercício, naturalmente, não
VHF compreende a banda entre os 64 MHz é para comprar um rádio já pronto, funcio-
até aos 108 MHz, com um decodificador nando, mas sim perceber como é fácil fazer
estéreo integrado e um sistema de decodi- o nosso próprio receptor de rádio. Em pri-
ficação de sinais RDS. O circuito integrado meiro lugar precisamos de um microcon-
também fornece informação de indicação trolador para permitir trocar dados com o
do nível de sinal recebido (RSSI) em dBμV e circuito integrado de rádio e que consiga
o nível da relação sinal/ruído (SNR) em dB. exibir algumas informações como a fre-
O SI4735 pode ser usado como medidor do quência de recepção e volume, entre outras.
nível de sinal RF recebido. É aqui que entra a nossa Placa ATM18, em
Figura 3. O SI4735 é soldado a uma placa conjunto com o SI4735 podemos construir
de suporte. As especificações do circuito integrado são um receptor realmente versátil com pouco

46 09-2010 elektor
Hardware & Software

Listagem 2. Procura de estação e Freq = 256 * R2


apresentação do estado da unidade.
Freq = Freq + R3
Sub Fm_seek_freq_up() Rssi = R4
I2cstart Snr = R5
I2cwbyte 34 Lcdpos = 2 : Lcdline = 3 : Lcd_pos
I2cwbyte &H21 Lcdtext = Str(freq) + „ „ : Lcd_text
I2cwbyte &H0C Lcdpos = 8 : Lcdline = 3 : Lcd_pos
I2cstop Lcdtext = Str(rssi) + „ „ : Lcd_text
End Sub Lcdpos = 12 : Lcdline = 3 : Lcd_pos
Lcdtext = Str(snr ) + „ „ : Lcd_text
End Sub
Sub Fm_seek_freq_down()
I2cstart Sub Fm_rsq_status()
I2cwbyte 34 I2cstart
I2cwbyte &H21 I2cwbyte 34
I2cwbyte &H04 I2cwbyte &H23
I2cstop I2cwbyte &H00
End Sub I2cstop
I2cstart
Sub Fm_tune_status() I2cwbyte 35
I2cstart I2crbyte Status , Ack
I2cwbyte 34 I2crbyte R1 , Ack
I2cwbyte &H22 I2crbyte R2 , Ack
I2cwbyte &H3 I2crbyte R3 , Ack
I2cstop I2crbyte R4 , Ack
I2cstart I2crbyte R5 , Ack
I2cwbyte 35 I2crbyte R6 , Ack
I2crbyte Status , Ack I2crbyte R7 , Nack
I2crbyte R1 , Ack I2cstop
I2crbyte R2 , Ack Rssi = R4
I2crbyte R3 , Ack Snr = R5
I2crbyte R4 , Ack Lcdpos = 8 : Lcdline = 3 : Lcd_pos
I2crbyte R5 , Ack Lcdtext = Str(rssi) + „ „ : Lcd_text
I2crbyte R6 , Ack Lcdpos = 12 : Lcdline = 3 : Lcd_pos
I2crbyte R7 , Nack Lcdtext = Str(snr ) + „ „ : Lcd_text
I2cstop End Sub

IC2
2950LP3.3 ANT1

+5V
L1
R1 R2 R3
1uH
C1 C2
3k3

3k3

3k3

D1
2x
100n 100n BAT43
D2

11 10 3 4 2
VDD VIO RFGND AMI FMI C3
PD4 L
5 13
RST ROUT
47u
PD5 7 IC1 16
SCLK DFS
15
DOUT
PD7 8 17
SDIO DDCLK
R4 Si4736 C4 R
PD6 9 14
3k3 RCLK LOUT
32kHz
GND SEN GP01 GP02 47u
R5
12 6 19 18
6k8

GND

090740 - 11

Figura 4. As conexões do módulo de rádio à placa AVR ATM18.

elektor 09-2010 47
Hardware & Software

Detector imperfeito. Este é um ponto no cristal onde existe uma lacuna ou


um par de lacunas na estrutura cristalina.
Mesmo antes dos diodos se tornarem comercialmente disponíveis,
era possível proceder à retificação de sinais HF usando um tipo Este defeito Schottky, como ficou conhecido, indica que o detec-
de detector de envolvente que era capaz de detectar a amplitude tor de cristal foi realmente uma primeira variante do conhecido
de sinais RF modulados em amplitude. Em primeiro lugar, era ne- diodo Schottky.
cessário um pequeno fragmento de sulfureto de chumbo (galena) Naturalmente, este “defeito” funciona bem hoje em dia para trans-
ou cristal de pirite de ferro. Este cristal era ligado a uma braçadeira missões AM como funcionava no início da época das comunica-
de metal que servia também de conexão elétrica para este diodo ções rádio, e não deve ser difícil encontrar um cristal adequado,
rudimentar. A outra conexão consiste na ponta de um fio muito existem frequentemente na natureza. Seria interessante efetuar
fino pressionando levemente contra a superfície do cristal (nor- uma regressão aos primórdios da eletrônica para construir um de-
malmente, com a ajuda de uma pequena mola). A ponta é desloca- tector destes que, afinal de contas, é a raiz de todos os aparelhos
da sobre a superfície do cristal com a mão até encontrar um ponto de rádio modernos.

esforço adicional. um suporte para circuitos integrados, ou entre o estado de alta impedância (Alto) e
soldando os pinos diretamente. Para com- o de baixa impedância (Baixo). Esta é uma
O diagrama de blocos do circuito integrado pletar o circuito receptor apresentado na prática normal para processar os sinais no
da Figura 2 mostra o esquema típico de um Figura 4 é preciso adicionar algumas resis- barramento I2C.
receptor de rádio de fase e quadratura, tências, uma bobina e dois diodos. Os dois
semelhante ao que foi usado no nosso diodos Schottky protegem a entrada con- Além disto, o receptor precisa também de
receptor de onda curta. Neste caso, con- tra impulsos RF elevados sendo que não um sinal de clock para utilizar como refe-
tudo, a decodificação do sinal não é efetu- são estritamente necessárias para o fun- rência de sintonia. No nosso caso usámos
ada pelo software do PC externo, mas sim cionamento do circuito. O circuito pode um cristal de 32,768 kHz, mas o integrado
através de DSP integrado no chip. O micro- ser construído num pequeno pedaço qua- suporta outras frequências. O valor do
controlador externo atua como interface drado de placa perfurada para protótipos. clock de referência é enviado para o inte-
de controle com o usuário. O circuito integrado necessita de uma ten- grado durante a fase de inicialização. O seu
são de alimentação de 3,3 V nos pinos VDD valor mínimo é de 31,130 kHz e o máximo
Interface com a placa ATM18 e VIO (VDD só suporta no máximo 3,6 V). de 40 MHz, são usados divisores internos
Vai precisar apenas de alguns fios para Certifique-se de que não é ligada acidental- para gerar o sinal de clock interno de 32
ligar a tensão de alimentação, o sinal de mente aos 5 V. kHz (aproximadamente). Há que ter em
reset e o barramento I2C da placa ATM18 atenção que tons gerados por frequências
à placa do rádio, antes de ter mais elevadas podem afetar
um receptor de rádio total- negativamente o desempenho
mente funcional. O circuito do receptor, por esse motivo
integrado produz um sinal de foi escolhido um clock de refe-
saída de áudio com uma qua- rência de cerca de 32 kHz. O
lidade surpreendentemente microcontrolador ATmega88
boa e o estágio de recepção não tem qualquer problema em
possui uma ótima sensibili- gerar esse sinal a partir de uma
dade de entrada, mesmo com das suas saídas PWM. A preci-
antenas pequenas. O único são e estabilidade da sintonia
circuito adicional necessário do receptor estão assim, em
é um amplificador estéreo. última instância, referenciadas
Um conjunto de alto-falantes Figura 5. Apresentação do estado no LCD. ao cristal de 16 MHz utilizado
ativos, como por exemplo os na placa ATM18.
utilizados nos computadores funciona per- O SI4735 tem uma série de interfaces
feitamente bem. Para os leitores que pre- digitais, mas no nosso circuito usamos A placa ATM18 também está ligada a um
tendem recepcionar emissões AM podem o barramento I2C. Este necessita de ape- display LCD através dos sinais B1 e B2.
mais tarde efetuar algumas pequenas alte- nas dois fios, um para o SDA e outro para Estão também ligados três botões a B0, B3
rações, muito simples, ao receptor. o SCL. Estes transportam comandos para e B4 que permitem selecionar as seguintes
O circuito integrado é disponibilizado com o circuito integrado e recebem informa- funções no rádio:
um encapsulamento QFN que por ser tão ções sobre o estado do circuito integrado
pequeno se torna difícil de soldar. A solu- de volta para a placa ATM18 (ATmega88). S1 ao PortB.0: efetua a pesquisa; se pres-
ção passa por usar uma placa de suporte Além disso, é necessária também uma siona por um tempo curto efetua uma
para o integrado com o chip pré-mon- conexão para a entrada de reset do inte- pesquisa para cima, se pressionar durante
tado (Figura 3). A placa de suporte tem grado, com uma resistência de pull-up mais algum tempo efetua uma pesquisa
a mesma configuração que um circuito para os 3,3 V. Esta atua como um deslo- para baixo.
integrado DIP de 20 pinos podendo ser cador de nível quando a porta de saída do S2 ao PortB.3: terminal negativo do
montado no circuito final recorrendo a microcontrolador da placa ATM18 comuta alto-falante.

48 09-2010 elektor
S3 ao PortB.4: terminal positivo do A frequência da nova estação é lida usando
alto-falante. Fm_tune_status. Além disso, existem
outros registros internos que armazenam
O display mostra a frequência de recepção, mais informação. Especialmente interes-
o nível de sinal e relação sinal/ruído. sante é o nível de sinal recebido (RSSI) e
a relação sinal/ruído (SNR) do sinal rece-
Software bido. Estes valores são enviados para o
O software para controlar o circuito inte- LCD quando a nova estação é encontrada
grado foi escrito em Bascom. A Listagem 1 (Figura 5). Enquanto estamos na mesma
mostra parte do software que trata da ini- estação não é necessário alterar a frequên-
cialização e configuração do chip. Depois da cia apresentada, mas o nível de sinal rece-
inicialização, o SI4735 precisa de um pulso bido pode variar, pelo que periodicamente
de reset que é aplicado através de DDRD.4 é invocada Fm_rsq_status para obter os
do registo de direção de dados. Isto força o parâmetros mais recentes e enviá-los para
pino de saída de reset momentaneamente o mostrador.
para o nível lógico baixo e depois o libera.
Depois do reset, o circuito integrado está Trabalho em progresso
pronto para efetuar comunicações através Analisando a versatilidade deste circuito
do barramento I2C (o seu endereço I2C é o integrado seria realmente difícil utilizar
34). cada uma de suas características numa
aplicação simples e única. Com um pouco
O SI4735 é agora inicializado para receber de imaginação é possível usar este chip em
sinais FM ou AM enviando os correspon- projetos de rádio e experimentar interfa-
dentes comandos. A subrotina Init_FM ces de usuário totalmente diferentes. E que
define a saída estéreo analógica e a entrada tal um conceito de botão único usando um
de clock externo. O ATmega88 gera o sinal potenciômetro ou codificador rotativo? A
de clock na sua saída PWM Output A do introdução direta de uma frequência é
Timer 0. O sinal de clock tem uma frequên- também possível, assim como estações
cia de 31,373 Hz e esta informação é for- predefinidas. Um rádio com temporiza-
necida na rotina refClock de modo que o dor vai permitir-lhe não perder nenhum
receptor de rádio pode calcular a divisão. dos seus programas favoritos. A funcio-
Usando o FM-Tune-Freq a frequência pre- nalidade de RDS do SI4735 também per-
tendida é representada como um múltiplo mite a exibição da identificação da esta-
de 10 kHz de modo que uma frequência de ção, informação de texto de rádio, hora
88,8 MHz é enviada como 8880. do dia e muito mais, desde que o software
Isso é basicamente tudo o que é preciso necessário esteja presente para decodificar
para fazer com que o receptor fique pronto a informação.
e funcione. O nível do volume de saída É notável que os avanços da tecnologia, de
pode também ser ajustado no intervalo uma só vez, consigam juntar todo o traba-
que vai desde 0 a 63. lho da construção de um receptor de rádio
A frequência de partida é de 88,8 MHz. e torná-lo um processo muito menos inte-
Este valor pode ser alterado para outra fre- ressante. Agora, com a versatilidade de
quência pretendida. Durante a sua opera- um dispositivo como o SI4735 somos con-
ção, é necessário utilizar o procedimento frontados com um conjunto totalmente
de busca interna da estação (Listagem 2) diferente de desafios, e de repente tudo se
para alterar a estação recebida. Um breve torna novamente interessante!
toque no botão S1 invoca Fm_seek_freq_
up para efetuar uma pesquisa para cima,
enquanto que um toque mais demorado (090740-1)
invoca Fm_seek_freq_down para uma pes- Artigo original: The ATM18 Radio Computer
quisa para baixa. February 2010

elektor 09-2010
Passatempo & Modelismo

Pisca-piscas eletrônicos
As raízes da Inteligência Artificial
Abraham Vreugdenhil (Holanda)

O ato de comunicar acontece à nossa volta constantemente,

quer seja entre pessoas, entre animais e também entre

computadores. Serve para indicar a localização

de alimentos, no caso das abelhas ou formigas,

ou simplesmente para socializar como fazemos

muitas vezes. Neste artigo

vamos explorar a comunicação

entre pisca-piscas, de um

modo engraçado e barato.

Os pisca-piscas acendem a
parte inferior do abdômen para
atrair membros do sexo oposto. No
escuro, oferecem um espectáculo fasci-
nante. O objetivo é procurar, encontrar e
comunicar com membros do outro sexo.
Estes objetivos são comuns a muitas apli- mente baixa (2400 baud no nosso caso)
cações eletrônicas. Mas, até que ponto é pode estabelecer-se facilmente um canal
possível utilizar este conceito no desen- de comunicação entre vários robôs.
volvimento de pisca-piscas eletrônicos? Para se orientar, o pisca-pisca terá de ser
A base para esta idéia é a comunicação melho (IV), recorrendo ao circuito apre- capaz de olhar à sua volta. Para isso, será
entre pequenos robôs eletrônicos. Cada sentado na Figura 1. A utilização da porta montado em cima de um servomotor.
um terá de procurar e reconhecer outros sérial do microcontrolador permite fazê-lo Um servo normal roda apenas em 270
robôs, através de emissores e receptores simplesmente através da função print x. graus, mas neste caso o servo irá rodar
de infravermelhos. A “memória” de cada A portadora de 36 kHz é gerada por uma continuamente (ver seção Alterações ao
um destes pisca-piscas terá a forma de outra saída do microcontrolador. A cone- servo). Assim que reconhecer um seme-
oito LEDs bicolores, para que seja visível, e xão das duas saídas com um simples diodo lhante, acende-se um LED vermelho nessa
indicará em que direção é que se encontra permite modular o sinal RS323 a 36 kHz. direção. Se o detectar novamente, nessa
o correspondente. O pisca-pisca desloca- Para receber este sinal é utilizado um mesma posição, o LED passa a cor de
se através de um servomotor. Tudo isto é receptor infravermelho especial (SFH laranja e a partir daí para verde em cada
controlado por um simples microcontro- 5110). Este receptor tem a vantagem nova detecção. Quando deixar de “ver”
lador ATmega88. de possuir um filtro a 36 kHz integrado, esse outro robô (que pode entretanto ter
obtendo-se à saída o sinal RS232 já demo- ido embora), a sequência inverte-se, pas-
Funcionamento dulado e pronto a ser entregue à entrada sado de verde para vermelho, e por fim
Os objetivos principais são procurar e sérial do microcontrolador. Se for utilizada apagando-se.
comunicar, através de um sinal infraver- uma velocidade de comunicação relativa- Quando o robô roda, o anel de LEDs roda

50 09-2010 elektor
Passatempo & Modelismo

+5V
S2 K2

R13 R11 R1 R2 R3
C5
D1 D3 D5 D7

470R

22k
4k7
22k

22k
Servo 100n
R7

20
7
220R

VCC

AVCC
23 R8
C6 C7 PC0 (ADC0)
RST 1 24 220R
PC6 (RESET) PC1 (ADC1)
10u 16V 100n 28 25 R9
PC5 (ADC5/SCL) PC2 (ADC2)
27 26 220R
PC4 (ADC4/SDA) PC3 (ADC3) D2 D4 D6 D8
R10
14 220R
PB0 (ICP) IC1
igualmente, para que os LEDs que esti- D9 K1
SPI
15
16
PB1 (OC1A)
PB2 (SS/OC1B)
verem apontando numa dada direção se LD271
R12
6
4
5
3
MOSI
MISO
17
18
PB3 (MOSI/OC2)
PB4 (MISO)
mantenham orientados. Os 8 LEDs bicolo- IC2 2 1 SCK 19 ATmega88-16PI T4

220R
PB5 (SCK) R14

2
6
PD4 (XCK/T0) 4k7
res estão ligados numa matriz, para pou- 1 2
PD0 (RXD) PD5 (T1)
11
R15
T1

PB6 (XTAL1/TOSC1)

PB7 (XTAL2/TOSC2)
3 12 BC547
PD1 (TXD) PD6 (AIN0) 4k7
R6
par pinos de entrada/saída. Cada coluna é TSOP2236
4
PD2 (INT0) PD7 (AIN1)
13
R16
BC547
T2

3
5
4k7

47R
PD3 (INT1)
21 T3
ligada por um transistor BC547. Quando AREF R17
BC547

GND

GND
C1
4k7

uma das saídas de PD4 a PD7 passar para

10

22
10u
R5 R4
X1 BC547
BZ1
S1
o estado lógico um o transistor corres-

22k
C2 C3 C4

pondente entra em condução e uma ou 22p 22p 4n7

100014 - 11
mais saídas de PC0 a PC3 transita igual-
mente para o estado lógico um, para
acender o LED correspondente. Passado Figura 1. O esquema para o pisca-pisca é muito simples. No entanto, não deixa de ser
um curto intervalo de tempo, outro tran- capaz de efetuar uma comunicação inteligente.
sistor é ligado, permitindo que outros 4
LEDs possam ou não ser ligados. Como
isto acontece a uma velocidade elevada, ou para a esquerda. A sua resistência é do site da Elektor. Consiste, basicamente,
parece que todos os 16 LEDs se iluminam medida por um conversor A/D de 10 bits num ciclo infinito que envia repetida-
ao mesmo tempo. Na realidade, é imple- e o valor do bit menos significativo é uti- mente o número um através da instrução
mentado um pequeno atraso no pro- lizado para tomar algumas decisões. Este print. O pisca-pisca vai rodar 45 graus
grama, para que a iluminação dos LEDs bit vai variar frequentemente, porque está numa direção aleatória, dependente das
se faça mais lentamente, para imitar os dependente de variações de luminosidade variáveis servo_dir e verificar se recebeu
pisca-piscas verdadeiros. praticamente imperceptíveis. Consegue- algum caractere através da porta sérial,
se assim um gerador pseudo-aleatório de com a instrução A = Ischarwaiting(). Se
Quando o circuito é ligado existe a opção um bit, um pouco primitivo, mas eficiente. for esse o caso, a variável Target é colo-
de calibrar o servo, ativada pelo botão O transdutor piezoelétrico é controlado cada em um.
S1. A resistência de 22 kΩ garante que a através de uma resistência de 47 Ω e de
entrada PB1 do microcontrolador perma- um pequeno capacitor eletrolítico de 10 A variável de 16 bits com o nome Long_
nece no estado lógico um quando o botão µF/16 V. Escolha um transdutor com caixa, Led contém a informação sobre o estado
não é pressionado. O processo de calibra- pois aqueles que se vendem sem estar dos oito LEDs bicolores. O LED menos
ção inicia-se quando essa entrada é colo- montados numa caixa dificilmente pro- significativo corresponde ao LED1, de
cada em zero. duzirão um som alto. cor verde. O segundo bit corresponde
Os periféricos disponíveis contam com ao LED1 vermelho, e por aí adiante. Esta
uma resistência dependente da luminosi- Software variável é atualizada continuamente atra-
dade (LDR), um transdutor piezoelétrico e O “cérebro” do nosso pisca-pisca é vés da chamada L_led_bew(servo_dir_2,
um divisor resistivo. O LDR é utilizado para constituído pelo software que roda no Target), em função da direção que o servo
criar um processo aleatório para determi- ATmega88. O programa FireFly_v1.bas deve tomar (servo_dir_2) e do fato de ter
nar se o servo deve rodar para a direita pode ser baixado gratuitamente a partir ou não sido detectado um alvo (Target). A

Linguagem de programação
O programa para o pisca-pisca foi escrito em BASCOM AVR. Este compilador foi escrito especialmente para os microcontroladores AVR
da Atmel, como o ATmega88.
Esta linguagem de programação permite dar os primeiros passos em microcontroladores e robôs, dada a variedade da documentação
e exemplos disponíveis. A versão de demonstração do compilador permite compilar código até 4 kB, mais do que suficiente para apli-
cações como esta. A versão registrada não tem limites na dimensão do programa e permite acessar a ajuda especializada.
O ATmega88 também pode ser utilizado com um bootloader. Trata-se de um programa residente no microcontrolador e que permite
dispensar o cabo ISP, podendo programar o microcontrolador através da conexão IV. Para isso, tem de obter o bootloader na Internet
[2] e adicionar a rotina que gera a portadora de 36 kHz. Depois, passa a poder reprogramar o microcontrolador com o módulo USB-IV,
sem precisar de qualquer cabo.

elektor 09-2010 51
Passatempo & Modelismo

velocidades de rotação diferentes, deter- Alternativamente, terá de utilizar mesmo


minadas pela subrotina Ijken. Esta rotina um clock externo.
é chamada quando o botão S1 for pressio- Quando o programa é baixado para o
nado enquanto o Pisca-pisca é ligado. Se microcontrolador, a memória EEPROM é
este for ligado sem que S1 esteja pressio- também reescrita. Consequentemente,
nado, o microcontrolador retira a infor- terá de calibrar o servo sempre que repro-
mação de que necessita diretamente da gramar o ATmega através da porta ISP.
EEPROM. Caso não existam valores lá
armazenados, o pisca-pisca não funciona. Utilização
A placa de circuito impresso desenhada
Programação para este projeto está disponível no Ser-
O ATmega88 pode ser facilmente progra- viço Elektor (Refª 100014-1). Contém um
mado através do Bascom AVR e do progra- anel de oito LEDs bicolores, o emissor IV,
mador ISP-Programmer [1]. Este progra- o receptor IV, conectores para o servo e
mador é simples de construir recorrendo para o programador ISP, dois pinos de
a uma placa de periféricos LPT e três resis- contato para o suporte da bola de pin-
Figura 2. Tenha cuidado com as definições tências entre 300 e 500 Ω. O microcon- gue-pongue e, claro, o microcontrolador.
dos fuse bits do ATmega! Se configurar trolador vem por definição programado Para evitar que o sensor de IV detecte as
valores errados o microcontrolador pode para utilizar o oscilador interno de 8 MHz emissões IV da própria placa, tem de ser
nunca mais poder ser programado via e dividir essa frequência por 8, para obter separado por uma pequena chapa metá-
interface ISP. o sinal de clock. Estas definições provo- lica com 15x15 mm. Os espaços abertos
cam problemas de temporização ao servo, podem ser tapados com tinta corretora,
sendo que terão de ser alteradas. O fuse por exemplo, um truque simples mas
rotina de interrupção que roda em back- bit C (Figura 2) tem de ser desativado eficaz. A bola de pingue-pongue pode
ground salta constantemente para a sec- para que o microcontrolador funcione a 8 ser suspensa com um pedaço de corda
ção Display_led, onde os próximos quatro MHz e não a 1 MHz. de piano com 18 ou 20 cm, enrolado de
bits da variável Long_Led são copiados modo a formar uma mola. São necessários
para as posições correspondentes dos oito Existem vários fuse bits com diferentes dois pequenos furos na bola, para a pren-
LEDs bicolores. funções, para definir velocidades de clock, der. A bola irá ficar montada diretamente
Na rotina principal, baseada na medição clock interno, clock externo e outras. por cima do LED IV, de modo a difundir a
da LDR, toma-se a decisão em relação à Tenha muito cuidado ao alterá-los. Se, sua radiação em todas as direções.
direção em que o servo deve rodar. Se por exemplo, ativar o fuse bit associado à A placa de circuito impresso é fixada ao
o bit menos significativo for um o servo utilização de um clock externo, o micro- servo. As pilhas podem ser colocadas num
roda para a esquerda, caso contrário roda controlador não pode ser programado único suporte para quatro pilhas do tipo
para a direita. Este comportamento vai via ISP. Nesse caso, só o conseguirá repro- AAA, ou em dois suportes de duas pilhas
dar um aspecto mais real ao pisca-pisca. gramar com um programador avançado, do tipo AA. Os suportes podem ser fixados
Existe uma rotina dedicada a tarefas espe- capaz de colocar o pino de reset a 12 V, com um pouco de velcro ou fita adesiva
cíficas do servo. Cada tipo de servo possui para que o microcontrolador se reinicie. de dupla face. O transdutor piezoelétrico

Lista de componentes Capacitores:


C1;C6= 10 µF/16 V, radial
Diversos:
X1= Cristal de quartzo 12 MHz
Resistências: C2;C3= 22 pF BZ1= Sirene
R1;R3;R5;R11= 22 kΩ C4= 4,7 nF S1= Botão de pressão (Tyco Electronics
R2;R14;R15;R16;R17= 4,7 kΩ C5;C7= 100 nF FSM4JH)
R4= LDR A9060 (Conrad Electronics # S2= Micro-interruptor (C&K ET01MD1CBE)
145475) Semicondutores: K1= Barra de terminais de 2x3 vias
R6= 47 Ω D1;D2;D3;D4;D5;D6;D7;D8= LED bicolor de
R7;R8;R9;R10;R12= 220 Ω 5 mm Servomotor
R13= 470 Ω D9= LED IV de 5 mm Bola de pingue-pongue
T1;T2;T3;T4= BC547 PCI (Refª 100014-1).
IC1= ATmega88 programado (Refª 100014-41)

52 09-2010 elektor
Passatempo & Modelismo

Agora que o sistema já conhece as posi-


ções do servo, falta saber a que velocidade
se move. Para isso, pressione S1 nova-
mente. Libere o botão quando o motor
tiver efetuado duas voltas completas.
Repita mais uma vez este procedimento
(o motor irá agora rodar no sentido con-
trário). O microcontrolador pode agora
calcular o tempo necessário para servo
rodar 45 graus.

Consumo de corrente
O pisca-pisca é alimentado por quarto
pilhas do tipo AAA (LR03). Os oito LEDs
mais o transmissor e receptor infraver-
melho, o controlador e o servomotor, con-
somem cerca de 100 mA. A capacidade
típica de uma boa bateria alcalina AAA
situa-se entre os 900 mAh e os 1150 mAh,
garantido o funcionamento do pisca-pisca
por cerca de 10 horas com um conjunto
de baterias novas. Também podem ser
utilizadas baterias recarregáveis. Toda-
via, se optar por baterias recarregáveis,
O protótipo pode parecer tenha muito cuidado com os curto-circui-
inacabado, mas é por isso mesmo tos. Numa bateria alcalina, quando a cor-
que se chama protótipo. rente é muito elevada, a tensão cai rapi-
damente, mas no caso de baterias recar-
regáveis, a tensão mantém-se elevada
pode ser montado do mesmo modo. podendo destruir alguns componentes.
A base para o servo pode ser feita a par-
tir de um disquete velho de 3,5”. Basta Experiências
fazer um furo de 2 ou 3 mm e parafusá-lo A comunicação IV faz-se através de um
diretamente no servo. Para evitar que o sinal RS232 modulado a 36 kHz, com
disquete deslize, pode-se colocar pés de 2400 baud. O sinal pode ser facilmente
borracha. gerado, ou detectado, por exemplo, com
um módulo USB-IV. A Conrad Electronics
Calibração comercializa um módulo destes, com
Os vários tipos de servos são ligeiramente a referência 99313-89. Através deste
diferentes entre si. Por isso, é necessário módulo pode determinar se o pisca-pisca
calibrar o sistema. O programa prevê esta está emitindo radiação IV. Pode-se igual-
situação. Se o circuito for ligado enquanto mente iluminar o pisca-pisca e ver se este
estiver pressionando o botão S1, o micro- reage à luminosidade.
controlador vai rodar o servo com uma O transdutor piezoelétrico não é utilizado
velocidade decrescente. Quando parar, neste programa, mas pode ser utilizado
terá de liberar o botão. Pressione-o nova- para, por exemplo, apitar quando encon-
mente. O servo vai voltar a rodar devendo, trar outro pisca-pisca.
uma vez mais, liberar o botão quando este O divisor resistivo também ainda não é
parar. A primeira fase corresponde a um utilizado. O microcontrolador pode medir
ajuste aproximado, que é corrigido com a tensão na junção do divisor resistivo
maior precisão na segunda passagem. (metade da tensão de alimentação) com

elektor 09-2010
Passatempo & Modelismo

Alterações ao servo
Os servos funcionam com um sinal de entrada de 1 a 2 ms, repetido a cada 20 ms.
Um sinal de 1 ms, indica ao servo que deve rodar completamente numa dada di-
reção. Se o sinal for de 1,5 ms, o servo deverá colocar-se na posição central e no caso
de ser 2 ms, deverá rodar completamente na outra direção. Normalmente, rodam ap-
enas num ângulo de 270 graus, mas na nossa aplicação pretendemos que rode com-
pletamente. É por isso necessário efetuar algumas alterações.
São duas as modificações necessárias: remover a trava mecânico, para permitir uma
rotação completa de 360 graus, e substituir o potenciômetro por duas resistências
fixas, para que a eletrônica do servo pense sempre que o eixo se encontra na posição
central.
1 Comece desmontando o servo (Fotografia 1) e, com uma lâmina afiada, remova a
trava na engrenagem final (Fotografias 2 e 3). Agora remova parcialmente o poten-
ciômetro. Existem dois tipos de potenciômetros. Nos servos mais econômicos, como
o Hitec-300 utilizado no protótipo, o eixo do motor é comum a engrenagem final,
sendo que a remoção do potenciômetro se complica um pouco. Se o servo possuir
um rolamento separado para a roda dentada final, podemos simplesmente removê-
lo. No primeiro caso, é mais fácil modificar o potenciômetro em vez de o remover.
Abra o potenciômetro (Fotografia 4) e remova o ponto móvel e a parte que roda
dentro do potenciômetro, com um pequeno berbequim e canivete (Fotografia 5).

2 A pista de carbono do potenciômetro não é necessária, portanto remova-a. O poten-


ciômetro irá ser substituído por duas resistências na placa de circuito impresso do
servo. Primeiro, meça a resistência do potenciômetro (tipicamente 5 kΩ) e escolha
duas resistências que juntas possuam o mesmo valor. No nosso caso duas resistências
de 2,2 kΩ ou 2,7 kΩ eram suficientes. Substitua o potenciômetro por essas resistên-
cias (Fotografia 6). Tem de montá-las de modo que a eletrônica do servo pense que o
potenciômetro esteja ligado no ponto médio.
Antes de montar o servo, verifique que as partes móveis podem se mover livremente.
Monte o servo (Fotografia 7) e verifique mais uma vez se o servo consegue rodar 360
graus.
3

4 5 6

uma resolução de 10 bits (1024 passos de mensagem e procuram todos uma men- ências e alterações ao código, havendo
0 a 5 V). Esta medida pode servir para ava- sagem semelhante. Quando recebem algo imenso espaço para experimentar.
liar o estado das baterias. Em teoria, o fun- que reconhecem, respondem. Poderiam (100014-1)
cionamento do servo altera-se à mediada também ter, cada um deles, um nome ou Artigo original: Fun with Fireflys – April 2010
que a tensão de alimentação baixa. Este número de identificação distinto. Neste
comportamento pode ser compensado, caso, responderiam a mensagens diferen-
se o microcontrolador for capaz de medir tes. O programa pode também ser alte- Internet
a tensão de alimentação. rado para que o pisca-pisca reconheça [1] http://8051help.mcselec.com/index.ht
Os circuitos para os vários pisca-piscas apenas alguns pisca-piscas específicos. ml?sampleelectronicsispprogrammer.htm
são todos iguais. Enviam todos a mesma Enfim, podem ser feitas diversas experi- [2] http://mcselec.com

54 09-2010 elektor
25 a 28 de outubro
Transamerica Expo Center | São Paulo

O Mais Qualificado Evento


de Telecom e TI da América Latina
em sua 12ª edição.

Premium
PATROCINADORES
já confirmados

Master

Gold

Sponsors

APOIO EDUCACIONAL

Cordenadores de Painéis
CONGRESSO

Carlos Christiane Eduardo Levy Guido Graça


Alberto Pelajo Orlando Jr. Sermoud
Sardenberg Globo
CBN

Heloísa José Fernandes José Márcio Maria Lydia Mauro Peres


Magalhães Pauletti Mendonça Flandoli
Diário do Comércio CNT Gazeta

Miriam Nadja Silvio Thais Costa Wilson


Aquino Haddad Genesini Brasil Econômico Moherdaui

www.futurecom.com.br Garanta já sua participação


Organização Para patrocinar, ligue: 55 41 3314-3200
e Promoção:
IDEIAS PARA PROJETO

Interface de áudio digital para


computador
Joseph Kreutz (Alemanha) tro de 0,3-0,5 mm (AWG 28-24) e um secundário com 12 espiras
As motherboards de computador e muitos outros dispositivos do mesmo tipo de fio são enrolados num anel de ferrite L44-X830
estão equipadas com entradas e saídas digitais de áudio com for- da Epcos (12,5 mm de diâmetro). Qualquer anel de ferrite com
mato S/PDIF, mas que apenas aceitam níveis de sinal TTL. Apesar α = 2200 nH/√número de espiras, serve.
da sua inquestionável utilidade, as interfaces ópticas estão sempre O sinal TTL do dispositivo do computador é aplicado à seção do con-
em falta. O projeto apresentado neste artigo destina-se a preencher trolador de IC3. A saída invertida é aplicada ao transformador TR2
essa lacuna. através de C6 e R7. O transformador TR2 utiliza o mesmo anel de
O circuito receptor consiste numa interface S/PDIF com transforma- ferrite que o transformador TR1, mas tem 20 espiras para o primá-
dor isolado, baseado na seção de recepção do circuito integrado IC3, rio e oito para o secundário. Tem que se certificar de que liga o seu
um controlador/receptor SN75179B ou equivalente. Esta parte do primário com a fase invertida, para compensar a inversão do sinal
circuito está configurada de forma que a sua saída produz um sinal introduzida por IC3. A saída não invertida da seção controladora de
com nível zero se não houver nenhum sinal de entrada. O receptor IC3 está ligada a um transmissor óptico TOTX173. Naturalmente,
óptico IC2 é um TORX173. As portas lógicas IC1b a IC1d estão liga- não existe qualquer problema em usar ao mesmo tempo a saída
das para formar uma porta OR para juntar os sinais para a saída TTL, digital elétrica e óptica.
de onde são depois aplicados ao equipamento a que se destinam. A construção deste circuito não requer nenhum comentário especial.
Inútil será dizer que a entrada óptica e a entrada elétrica não podem Cada circuito integrado precisa de ser desacoplado por um capacitor
ser usadas ao mesmo tempo, caso contrário, será impossível decodi- de 0,1 µF o mais próximo possível dos seus pinos de alimentação, e
ficar e utilizar os sinais de entrada. IC1a em conjunto com os diodos o desacoplamento geral de todo o circuito em relação às baixas fre-
D1 e D2, e as malhas R2/C1 e R3/C2 têm como função a indicação quências é implementado por um capacitor eletrolítico de 10 µF/16
de surgimento de alguma condição de erro, caso em que os LEDs V. A tensão de alimentação de 5 V pode ser obtida a partir do equipa-
indicam o respectivo problema. mento eletrônico onde a interface vai ser instalada.
O transformador TR1 é muito difícil de fazer: um primário consti- (090611-1)
tuído por seis espiras de fio de cobre esmaltado com um diâme- Artigo original: Computer digital audio interface – February 2010

+5V +5V

LED1 IC2
TORX173
Indicador de colisão D1
1
IC1.A

Óptico
R1
1N4148
470R & 3
D2
C3
R2 R3 +5V 2 4 5 6
C1 C2 1N4148 100n
+5V
100k

100k

22n 22n
C9
R4
IC1.B
100n
3k3

&
*
IC1.D C4 S/PDIF
S/PDIF (TTL) IC3 1 TR1
&
IC1.C R5 22n
8
2
&
330R

R
7

S/PDIF (TTL) 6
3 R6
D 5
3k3

4
SN75179B S/PDIF
*
C5 R7
TR2
470R
22n

+5V
IC4
IC1 = 74HCT00 TOTX173
+5V
3
R8
2
Óptico

8k2
14 4
C7 C8
IC1
C6 1
10u 100n
7
100n

090611 - 11

56 09-2010 elektor
INFORMAÇÃO

Linux em um chip
O desenvolvimento
nunca foi tão fácil!
Jerry Jacobs e Thijs Beckers (Elektor)

O Linux embarcado em um único integrado é muito


mais comum do que se possa imaginar. É muito prová-
vel que o seu modem ADSL ou o seu roteador o utilizem. E o
mesmo se aplica aquele celular inteligente que utiliza o Google Android. Neste artigo, vamos demonstrar
como você pode começar rapidamente a desenvolver aplicações com o Linux integrado.

Neste artigo vamos utilizar a placa nanoLIAB da Linux-in-a-Box [1], por converter a imagem binária em ASCII, uma vez que as transmis-
cujo elemento central de processamento é um microcontrolador sões através da porta serial são baseadas em texto. Contudo, uma vez
ARM AT91RM9200. Na placa podemos encontrar um controlador que a placa já dispõe de um sistema funcional e estável, e todas as
de rede Ethernet 10/100 Mbit, uma porta serial e um conversor aplicações compiladas funcionaram corretamente, não vimos neces-
D/A para áudio. A placa contém também 16 MBytes de memória sidade de modificar o firmware.
flash e 32 MBytes de RAM. Esta placa é perfeita para realizar uma
aprendizagem, uma vez que é acompanhada por uma excelente Aplicações
documentação e com o Linux Embarcado [3] já instalado, sendo A Listagem 1 exemplifica como é fácil escrever um programa atra-
que pode começar a trabalhar de imediato. vés da criação de um pequeno arquivo de comandos (script) para
uma aplicação de console. O script pode ser transferido do com-
Início putador para a placa através de um programa ftp (a placa tem
Assim que ligar a alimentação da placa, o bootloader vai come- um servidor ftp funcionando). Tenha em atenção que os arqui-
çar por configurar o hardware. Em seguida, o núcleo (kernel) do vos transferidos ficam na memória RAM, e não na memória flash.
sistema operacional é carregado em memória. Um dos objetivos Como tal, desaparecem ao desligar a alimentação da placa.
do núcleo é funcionar como uma interface entre a aplicação e o
hardware subjacente. O código deste núcleo é executado quando Se utilizar o comando ‘tar –c led_counter.tar led_counter.sh’ o arquivo
o bootloader de início termina e transfere a execução para a loca- de comandos é colocado no interior de um arquivo tar [4] no PC, para
lização da memória RAM onde esse mesmo núcleo foi carregado. garantir que os caracteres de fim de linha são preservados correta-
Pode-se acompanhar o progresso do bootloader e do kernel atra- mente. Quando a sessão serial tiver terminado a transferência deste
vés da porta serial (Figura 1). Conforme podemos ver, o programa arquivo para a placa, pode descompactá-lo já na placa utilizando o
de inicialização vai mostrando alguns parâmetros da configuração comando ‘tar –xf led_counter.tar’. Em seguida tem que ativar o bit de
do kernel, tal como o endereço MAC, o endereço IP e a pasta a par- execução do script, pois de outra forma não vai conseguir executar.
tir de onde as restantes aplicações são carregadas.

Para interagir com a placa (e controlá-la) optou-se por um PC com


uma distribuição Linux Ubuntu [3], onde se executa um programa de
emulação de terminal para as sessões interativas com a placa nano-
LIAB. Estas sessões permitem enviar comandos para a placa e alterar
as suas configurações. As sessões interativas decorrem através de
uma porta serial. Na máquina Ubuntu deve-se dar o comando ‘cu -l
/dev/ttyS0 -s 115200’, que cria uma conexão através da porta serial
ttyS0 (esta é o nome em Linux equivalente ao habitual COM1 utili-
zado em sistemas Windows). Se a placa for ligada em outra porta
serial deve-se substituir ttyS0 pela porta serial correta. Se a porta
serial for criada através de um adaptador USB, deve utilizar um nome
do gênero ttyUSB, seguido pelo número da porta.

Instalação
Em teoria é possível modificar o firmware e transferi-lo para a memó- Figura 1. Durante o carregamento do núcleo
ria flash na placa através da interface serial. Para tal importa começar do sistema operacional vemos as várias configurações
e o estado dos diversos periféricos passando pela tela.

58 09-2010 elektor
INFORMAÇÃO

Para isso basta executar o comando ‘chmod +x led-counter.sh’. Pode Listagem 1. Script led_counter.sh.
agora rodar o script através do comando ‘./led_counter.sh’. #!/bin/bash
#
Controladores # nanoLIAB led shell script
No Linux é normalmente possível acessar às configurações dos #
dispositivos e do núcleo de execução através de arquivos e pas- # This script writes values in binairy to the
tas virtuais. Para cada dispositivo é reservado um arquivo virtual # four leds on the board with 1 second
na pasta /dev. Como exemplo, pode escrever dados modulados interval.
em PCM diretamente no dispositivo /dev/snd (desde que esteja
disponível um sistema de conversão D/A adequado) e estes são # The array of the possible values
passados para o conversor D/A, sendo que como resultado, vai VALUES=( 1 2 3 4 5 6 7 8 9 A B C D E F )
poder ouvir o respectivo som. Configurações como o reencami-
nhamento de IPs num roteador Linux podem ser ativadas escre- # Write every value in VALUES to the device
vendo um ‘1’ em /proc/sys/net/ipv4/ip_forward. # with nanoctrl
for value in ${VALUES[*]}; do
Este método de controle tem como principal vantagem a facilidade, # Display written data and write to leds
tornando-se muito simples de configurar o núcleo de execução echo “Writing 0x$value to leds”
(kernel). Tudo isto pode também ser automatizado, inserindo estes nanoctrl -l $value
comandos em arquivos adequados (shell scripts). O interpretador de
comandos (shell) mais popular em Linux é o bash [5]. # Wait one second
sleep 1
Porquê Linux? done
A utilização do Linux Embarcado reduz a quantidade de código a ser
produzido durante a fase de desenvolvimento, evitando assim a escrita
de código dedicado para os controladores de cada componente indi- um portal com notícias sobre os últimos dispositivos com suporte
vidual de hardware. O Linux Embarcado combina todos os controla- para Linux. É o site ideal para se atualizar com todas as novidades
dores, como por exemplo os necessários para o monitor, para a pilha sobre os dispositivos com Linux (Embarcado).
TCP/IP e para o áudio, num único bloco. Assim, não precisa se preocu- (091034)
par com a escrita (e depuração) de controladores estáveis e pode-se Artigo original: Linux on a Chip – March 2010
concentrar na tarefa principal: a sua aplicação.
Internet
Outra grande vantagem da utilização de um sistema operacional [1] www.liab.dk
de código fonte aberto como o Linux Embarcado é que este não
[2] www.elinux.org
depende de empresas comerciais para atualizações de firmware e
correções. Estas atualizações são habitualmente muito dependentes [3] www.ubuntu.com
da placa, e como tal são normalmente disponibilizadas pelo fabri- [4] http://pt.wikipedia.org/wiki/TAR
cante da mesma. Pode também obter suporte direto para a placa
[5] http://pt.wikipedia.org/wiki/Bash
Linux-in-a-Box (gratuitamente) no fabricante [1].
[6] www.beagleboard.org
Nos casos onde o fabricante não se envolveu em grande medida com [7] www.linuxfordevices.com
o desenvolvimento do sistema, constata-se normalmente que outros
projetistas continuaram o desenvolvimento para os seus próprios
projetos. Pode também encontrar projetistas com ideias distintas
sobre o propósito inicial do software. Um bom exemplo é o Embed-
ded Linux BeagleBoard [6].

O que se segue?
Neste artigo demos-lhe uma pequena amostra do Linux Embar-
cado. As possibilidades são praticamente infinitas, uma vez
que tem a liberdade para adaptar tudo às suas necessidades. A
documentação não é certamente um problema, uma vez que na
Internet vai encontrar uma ampla variedade de documentação.
Um bom livro pode ser igualmente útil, especialmente quando
se dedicar a alguma área mais específica. A possibilidade de se
deparar com alguns problemas está sempre presente, mas para a
grande maioria dos projetos de código fonte aberto a existência
de um fórum de discussão é uma garantia. Nestes vai normal-
mente poder encontrar pessoas com os mesmos problemas e que
habitualmente partilham e discutem as soluções encontradas.
Falta recomendar um site fundamental: o Linux for Devices [7] é

elektor 09-2010 59
IDEIAS PARA PROJETO

Estabilização de temperatura
Thomas Schott (Alemanha) 1
Foi necessário criar um controlador de
temperatura para um pequeno forno
usando o mínimo de hardware de
modo a manter os custos o mais baixo
possível. O primeiro projeto tinha como
objetivo realimentar a saída do sensor
de temperatura para um comparador
seguido por uma porta inversora NAND
4093. Isto produzia um sinal simples
de controle on/off para atuar um relé
que comutava um elemento de aque-
cimento. A inércia térmica do sistema
resultou em uma regulação de tempe-
ratura muito pobre (Figura 1), com a
temperatura atingindo valores dema-
siadamente superiores e inferiores ao
pretendido.
O desafio agora era melhorar as carac-
terísticas do controlador, sem aumen-
tar os custos do hardware. O resultado
pode ser visualizado na Figura 2. Tal
como anteriormente a saída do sensor
realimenta a entrada de um compara-
dor, com um 4093 (com a sua caracte- ˆ
rística de entrada Schmitt trigger) na
saída do comparador. Uma outra porta
NAND foi usada para construir um osci-
lador de onda triangular para o capa-
citor C1.
Esta forma de onda é somada à tensão
proveniente do sensor de temperatura
na entrada do comparador. O ajuste
de P1 controla a amplitude da onda.
Agora, quando o sinal do sensor de
temperatura se aproxima do nível pre- 2
tendido, o sinal alternado, sobreposto,
gera uma forma de onda modulada em
largura de pulso na saída do compara-
dor. Isto tem o efeito de introduzir uma
característica de controle proporcional
na resposta do controlador. Depois de
ajustar P1 para um desempenho otimi-
zado, a melhoria na regulação da tem-
peratura pode ser visualizada na Figura
3. Com o circuito do controlador insta-
lado, o forno em teste melhorou bas-
tante a estabilidade da sua tempera-
tura a longo prazo.

(090075-1)

Artigo original: Temperature stabilisation –


January 2010

60 09-2010 elektor
IDEIAS PARA PROJETO

Aquecimento automático
Vladimir Mitrovic (Croácia)

+6V

LM335

R1 R3 R6 R7 R8 R9
3k9

10k

1k

1k

1k

1k
1%
adj R6...R9 = SMD

3 T1
1
IC2A
2
BC327
R5
IC1
1M
adj C4
R11
R2 R4 R10
120Ω

47n
180Ω
10k

IC2 = TL062
10k D1
1%

LM335
080612 - 11

-9V

Este simples circuito ajuda os circuitos inte- mento de forma propor- alguns segundos (isto é, até
grados (ou outros dispositivos) que depen- cional através de um tran- que aqueça plenamente) e
dem da sua temperatura de funcionamento sistor PNP (T1). Estando depois continua reduzindo
alcançar o mais rapidamente possível a sua em série com o elemento a sua luminosidade até que
temperatura ótima de funcionamento, e de aquecimento, o LED D1 a temperatura de funciona-
mantém essa 3 temperatura estável. O ele- atua como um indicador mento seja alcançada.
mento de aquecimento é formado por um óptico do estado do cir- No que diz respeito à pre-
conjunto de resistências SMD posicionadas cuito: à medida que a tem- cisão e estabilidade da
sobre a face inferior, por baixo do circuito peratura ambiente muda, a temperatura do disposi-
integrado em questão. O sensor utilizado é intensidade do LED também tivo alvo, vai depender
um LM335 fixado na parte superior do dis- se altera. Contudo, o LED também serve para muito do grau de acoplamento térmico
positivo alvo do controle de temperatura. ajuste: deixe que o circuito chegue à tem- entre: (1) o elemento de aquecimento
O ampop TL061 (ou outro semel- peratura de aquecimento otimizada por ele (resistências SMD), (2) o dispositivo ao
hante) compara a queda de tensão nos próprio e depois ajuste a resistência ajustável qual estamos tentando controlar a tem-
terminais do sensor de temperatura R2 até que a luz do LED comece a diminuir. A peratura e (3) o sensor de temperatura
LM335 com um valor predefinido, ajus- próxima vez que a alimentação for ligada, o (LM335). (080612-I)
tando a corrente no elemento de aqueci- LED vai acender com bastante brilho durante Artigo original: Keep it warm – January 2010

elektor 09-2010 61
Informação

SPI, Microwire e companhia…


Barramentos de curta distância na prática
Dr. Bernd vom Berg e Peter Groppe

Uma importante aplicação das comunicações


série síncronas são os barramentos de curto
alcance, que possibilitam a interconexão simples
e confiável entre diversos circuitos integrados
na mesma placa de circuito impresso, entre
diferentes placas ou módulos num bastidor, ou entre
um equipamento e o seu painel de controle.

Sistemas deste tipo são designados por dispositivos de barra- 3-wire


mentos série (síncrono), conexão entre circuitos integrados, ou No projeto do interface 3-wire, apresentado na Figura 1, os
simplesmente barramentos de curto alcance. Os exemplos mais engenheiros da Maxim/Dallas consideraram o seguinte: quando
conhecidos são o barramento SPI, Microwire, 3-wire e I2C. Neste se analisa as transferências de dados série com mais detalhe,
artigo vamos dar uma olhada nos três primeiros. torna-se óbvio que aparentemente o dispositivo master está
enviando dados para o dispositivo slave ou então o dispositivo
Microwire slave está enviando dados para o master – mas não ambos ao
Este barramento série síncrono foi introduzido pela Natio- mesmo tempo. Por outras palavras, a transferência de dados é
nal Semiconductor como um dos primeiros modos para ligar geralmente half-duplex, mesmo quando é possível ter um fun-
periféricos sériais aos seus microcontroladores COP. Os qua- cionamento full-duplex.
tro modos possíveis da interface sérial síncrona, das quais
o Microwire utiliza o modo 0, são também designados por Isto significa que precisa-
modos SPI (Serial Peripheral Interface): frequentemente, os mos apenas de uma única
circuitos integrados periféricos de outros fabricantes são des- linha para transmissão
critos como “dispositivos com compatibilidade SPI/Micro- de dados DQ, onde
wire”, o que significa que o chip deve ser contro- o sentido de trans-
lado de acordo com o modo 0 e que não fun- ferência de dados
ciona nos outros modos. é alterado con-
forme neces-
Interface SPI (Serial Peripheral sário: temos
Interface) assim uma
A sigla SPI é usada como um termo comunica-
para descrever todos os quatro ção bidire-
modos de comunicação de cional em uma
dados sérial síncrona (Tabela única linha de dados.
1) e foi introduzido pela Moto-
rola no seu microcontrolador Por vezes o pino DQ no dispositivo slave é uma
6805. Contudo, as coisas não estão entrada e outras vezes uma saída, e o mesmo acon-
perfeitamente normalizadas e um circuito tece, como é claro, para o dispositivo master. Isto eco-
integrado SPI tem sempre que ser verificado para nomiza um pino digital de E/S às custas de algumas regras
saber exatamente em qual dos quatro modos funciona. rígidas para o processo de transferência de dados:
O modo 0 é o mais comum (porque é compatível com o Micro-
wire) mas alguns fabricantes também utilizam outros modos 1. Quando a alimentação é aplicada pela primeira vez o disposi-
de funcionamento. Uma análise mais detalhada do datasheet, tivo slave tem sempre que esperar por uma mensagem do dis-
em particular aos diagramas temporais e à descrição da inter- positivo master antes de continuar. A conexão do slave é assim
face sérial, é essencial. inicialmente uma entrada.

62 09-2010 elektor
Informação

Tabela 1. Nomes mais usados para as conexões das portas série de vários periféricos.
Sinal Nome genérico Nome específico Motorola Nome específico Maxim/Dallas
Clock SCLK SCK, CLK SCK, CLK
Transmissão (master para slave) SO/SI MOSI: master out – slave in DOUT/DIN (data out/in) ou DQ
Transmissão (slave para master) SO/SI MISO: master in – slave out DOUT/DIN ou DQ
Ativação de dispositivo slave /CS (chip select) /SS (slave select) /RESET, /RST, LOAD
Alguns dispositivos slave necessitam de um sinal ativado ao nível lógico baixo para serem ativados (/CS, /SS
ou LOAD), enquanto outros dispositivos slave necessitam de um sinal ativado ao nível lógico alto (/RST).

2. O dispositivo master é responsável por despertar o disposi-


tivo slave. O dispositivo slave pode responder ao despertar emi-
tido pelo master de duas formas possíveis. Se o dispositivo mas-
CLK
ter enviar configurações ou comandos, estes são processados Micro- Dispositivo
pelo slave, que permanecerá no modo de recepção. Em alter- controlador DQ (Data Input/Output) periférico
nativa, se o dispositivo master requisitar o envio de dados, o
dispositivo slave comuta para o modo de transmissão. Quando RST
a transmissão termina o dispositivo slave retorna automatica-
mente para o modo de recepção ficando à espera de uma nova
mensagem de comando do dispositivo master.
040241 - 2 - 11

As regras de transmissão garantem que apenas um dos dispo-


sitivos coloca dados na linha DQ do barramento de cada vez, Figura 1. Interface 3-Wire.
enquanto que o outro recebe os dados.
o byte recebido.
Aplicações O esforço necessário para implementar este tipo de comuni-
Atualmente existem vários circuitos integrados no mercado cação sérial síncrona no software é mínimo.
compatíveis com a norma SPI para as mais diversas aplicações
(Tabela 2). Vamos escolher três periféricos dos mais interessan- 2. Se o microcontrolador em questão não tiver um módulo SPI
tes e analisar o seu funcionamento com mais detalhe. Vamos integrado, o protocolo de comunicações sérial síncrona vai ter
ligar os circuitos integrados a um microcontrolador da série que ser implementado usando linhas digitais de E/S que este-
8051 e usar software escrito em C51. Claro que podem ser jam disponíveis. O programador tem que atuar nos respectivos
usados outros tipos de microcontroladores: os vários módulos pinos de E/S individualmente para o nível baixo e alto no sof-
SPI e implementação do protocolo são bastante conhecidos e
estão bem documentados. Podem igualmente ser usadas outras
linguagens de programação. Juntamos um pacote de dados e DIN CS REFAB REFC
informação detalhada (incluindo os datasheets) relacionados 1 2 12 11
com os circuitos integrados em discussão. Esta informação está SCLK
disponível para download a partir do site da Elektor. 3
OUTA
DAC 8
LATCH DAC A
Existem duas maneiras possíveis de implementar um barra- A
mento de comunicação SPI num microcontrolador:
OUTB
DATA (8)

1. Se o microcontrolador já tiver todo o hardware necessá- DAC 9


LATCH DAC B
rio para implementar a interface integrada, o software tem B
16-BIT SHIFT REGISTER

que configurar os parâmetros CPOL e CPHA nos registros SFR


(Special Function Register) relevantes. Em seguida, o byte de
DAC OUTC
dados a transmitir é armazenado no registro SFR de transmis- LATCH DAC C
10
são e depois, assim que o comando de início for enviado, a C
transferência de dados é controlada de forma completamente
autônoma, tudo controlado pelo módulo de hardware SPI.
CONTROL (8)

MAX512
Este método pode alcançar a taxa de transferência de dados MAX513
mais alta possível.
LOUT
LATCH
14
A operação de recepção é igualmente simples. O módulo
de SPI recebe os bits em formato série autonomamente (de
4 5 7 6
acordo com o modo de transferência especificado em CPOL RESET VDD VSS GND
e CPHA) e depois informa o microcontrolador, usando, por 040241 - 2 - 12

exemplo, um sinal de interrupção quando um byte completo


for recebido. O software da aplicação pode depois processar Figura 2. Diagrama de blocos do MAX512.

elektor 09-2010 63
Informação

Tabela 2. O mundo do barramento SPI.


Conversores de dados Conversores A/D e D/A
Memórias EEPROM e Flash EPROM
Módulos de clock Relógio em tempo real (RTC)
Sensores Temperatura, pressão, etc
Controladores de displays Matriz de LEDs, LCD alfanumérico
Interfaces séries assíncronas UART
Controladores de barramento CAN, USB
Diversos Potenciômetros digitais, amplificadores controlados digitalmente, etc

Para a recepção, o sinal de clock tem também de ser gerado


novamente “à mão” e o estado do pino de entrada lido durante
CS
tCSPWH
tCSS tCSH
tCH a transição do sinal de clock correta. Os pulsos do sinal de clock
SCLK
e os bits de dados têm que ser contados com exatidão.

tDS
tCL
Estas “funçoes” são designadas normalmente por método “bit
tDH
banging” (manipulação ao nível do bit), onde um protocolo de
DIN comunicação sérial síncrono ou assíncrona é emulada usando
tOD pinos individuais de uma porta de E/S atuando e lendo individu-
almente esses pinos através de software. Embora este método
LOUT
não resulte num programa especialmente mais complicado de
040241 - 2 - 13
desenvolver, torna a comunicação de dados consideravelmente
mais lenta comparada ao que se pode alcançar se usarmos um
Figura 3. Diagrama temporal do barramento SPI (SPI modo 0). chip com um módulo de comunicações integrado.

Como estamos trabalhando com um microcontrolador da série


tware, de modo a gerar o sinal de clock apropriado e assegurar 8051 temos que utilizar a técnica de manipulação ao nível do
que os bits de dados são transmitidos na transição correta do bit uma vez que a maioria dos microcontroladores desta série
sinal de clock. não possuem um módulo SPI integrado.

SEG A–SEG G, DP DIG 0–DIG 7

Excitadores de segmentos Excitadores de dígitos


8

8 Registro Shutdown
Código B Registro de modo
V+ Modulador
ROM com
de intensidade
contorno Registro de intensidade
por largura
Registro de limite
RSET de varrimento de pulso
Corrente de 8 Registro de teste do display
referência
para segmento SRAM 8x8
porta dupla Circuito de
multiplexagem
Registro de para varrimento
8 descodificação
8
LOAD (CS) de endereço

DIN D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 DOUT

CLK
(LSB) (MSB)
040241 - 2 - 15
Apenas MAX7221

Figura 5. Diagrama de blocos do MAX7219.

64 09-2010 elektor
Informação

UREFAB UREFC +5V


extern

+5V
MAX7219
MAX
VCC VCC 512 Digital OUT LOAD VCC
RESET Digital OUT DIN
Digital OUT DIN Digital OUT CLK
Digital OUT SCLK GND GND
Digital OUT CS
ISET
GND GND
+5V
10k
GND

UOUTA UOUTB UOUTC LED display


040241 - 2 - 14
040241 - 2 - 16

Figura 4. Conexão do MAX512 ao microcontrolador. Figura 6. Conexão do MAX7219 ao microcontrolador.

MAX512
Conversor D/A controlado via sérial Registro de estado e
CLK lógica de controle
SPI modo 0, compatível com Microwire
DQ
Este circuito integrado contém três conversores D/A com uma Endereço
e Reset Sensor de temperatura
resolução de oito bits. A Figura 2 mostra o diagrama de blocos RST

do dispositivo, a Figura 3 o diagrama temporal do barramento


Disparo de temperatura elevada TH
THIGH
SPI e a Figura 4 as conexões ao microcontrolador.
+5V Disparo de temperatura baixa TL TLOW

MAX7219 +5V TCOM


Controlador para display de matriz de LEDs sérial GND Lógica digital de comparação
SPI modo 0, compatível com Microwire, conexão em 040241 - 2 - 17

cascata
O MAX7219 pode controlar até 8 x 8 = 64 segmentos de LED
individuais de forma multiplexada. Possui ainda um módulo
decodificador BCD, sendo igualmente adequado para contro-
lar uma matriz de LEDs individuais ou de 7-segmentos, ou de
8-segmentos. O circuito integrado tem ainda uma saída DOUT Figura 7. Diagrama de blocos do DS1620.
que facilita a conexão em cascata de mais dispositivos, permi-
tindo construir mostradores de vários tamanhos.
A Figura 5 mostra o diagrama de blocos do circuito integrado, Sistema µC DS1620 +5V
e a Figura 6 como este pode ser ligado a um microcontro- Digital IN/OUT DQ
lador. Para ligar vários dispositivos em cascata, ligue o pino
Digital OUT CLK/CONV
DOUT do primeiro dispositivo ao pino DIN do segundo, e
Digital OUT THIGH 1 470Ω
assim por diante; o sinal de clock e a entrada de carregamento RST

(load) são ligados em paralelo. +5V +5V TLOW 1 470Ω

GND GND TCOM 1 470Ω


DS1620 040241 - 2 - 18
Termômetro controlado via sérial com termostato
SPI modo 3, interface 3-wire
Este dispositivo contém um termômetro para medição da tem-
peratura, assim como um termostato para controlar a tempera- Figura 8. Conexão do DS1620 ao microcontrolador.
tura. A Figura 7 mostra o diagrama de blocos do dispositivo e a
Figura 8 as suas conexões ao microcontrolador.
O circuito integrado utiliza uma comunicação bidirecional sobre comutar o seu pino de E/S entre os modos de saída e entrada
um barramento com uma única linha. Em primeiro lugar, o dis- como seja necessário.
positivo master envia um comando para o DS1620 (por exem-
plo, ‘efetuar a medição da temperatura agora’) e o DS1620 res-
ponde com o valor de temperatura medido. A linha DQ é assim (040241-1)
usada em ambas as direções, e o dispositivo master tem que Artigo original: SPI, Microwire & friends – March 2010

65 elektor 09-2010 05-2010 elektor 65


MeDIÇÃO & Teste

Testador para diodos zener


5mA
S1.A
20V +32V 10mA
S2.A
560R
TR1
0V
4x 50mA

560R
200V
1N4007 3V3 63R
ICONST = VZ (3,4 V) – VBE (0,6 V) / resistên-
(3V4)
cia emissor
230V

0V6
24V

20V
S2.B
0V BD244 Um diodo zener de 20 V limita a tensão de
10VA
200V
1N4007
saída a 20 V (ou, se possível, a 19,9 V) de
2k2
20V

1000u 35V
forma a evitar a saturação do voltímetro
100mA T
TR2
1mA
S1.B
20V S2.C digital. Um diodo 1N4007 em série com a
+250V
2k1
5mA 0V
saída da fonte de corrente previne uma situ-
230V 4x 10mA 200V ação de curto-circuito. Neste caso, S2.C está
230V

8k2
24V

1N4007 9V1 925R

(8V9) também na posição de 20 V.


0V6

Posição 200 V
5VA

BF470
1N4007
O interruptor S2.A redireciona os 24 V AC
para o transformador TR2, que aumenta a
180k

200V

10u 350V
tensão de 24 V para 230 V. Este é um trans-
TR3

DP1 = 19,99V
0V formador 230 V/24 V/5 VA convencional.
820k

O retificador em ponte que se segue gera


82k
DP2 = 199,9V 200V 20V

+17V 7805 +5V


4x S2.D
uma tensão contínua de cerca de 250 V. O
230V

12V

1N4007
150k

15k

+5V P2 P0 P3 0
1k

transistor BF470 é também ligado como


5VA
1u 1u fonte de corrente constante. Não é fácil
47k 4k7 encontrar transistores PNP de alta tensão
1000u 35V 100u 35V 0 IN+ – o BF470 é utilizado para excitação de
Velleman PMLED/5
100k
090181 - 11 vídeo em tubos de raios catódicos. Neste
caso, o interruptor S1.B muda a resistência
Jean Herman (Bélgica) tensão de aproximadamente 5,6 V é nulo e de emissor de forma a gerar três correntes
O circuito descrito em seguida permite veri- acima deste valor é positivo (contudo, isto distintas: 1 mA, 5 mA e 10 mA (veja os cál-
ficar o funcionamento correto de diodos não se verifica necessariamente em todas culos acima). Uma vez que os diodos têm
zener até 200 V, assim como determinar as marcas). Pode-se determinar este valor uma tensão superior, estas correntes são
a sua tensão inversa de ruptura (note que medindo a tensão nos terminais do diodo, menores. Mas mesmo com 10 mA e 200 V,
a expressão diodos zener apenas se aplica assim como a sua temperatura enquanto o transistor BF470 tem de dissipar 2 W com
para tensões entre 2 V e 5,6 V, para tensões este é percorrido por uma corrente cons- a saída em curto-circuito, isto é, para um
superiores a 5,6 V é correto utilizar o nome tante (10 mA). diodo zener de 200 V.
diodos por avalanche, uma vez que este é Este dispositivo tem duas faixas de tensão,
o efeito predominante). A estabilidade da 0-20 V e 0-200 V, o que requer pelo menos Posição 0 V
tensão num diodo zener depende da sua dois transformadores distintos. Para gerar Note que o seletor S2 tem também uma
resistência interna e do seu coeficiente de todas as tensões necessárias utilizamos posição central onde nada está ligado.
temperatura. Assim, para obter uma carac- três pequenos transformadores convencio-
terização completa, é necessário obter a nais. O transformador TR3 é utilizado ape- Nesta posição pode testar o isolamento de
tensão inversa de ruptura sob várias cor- nas para obter a tensão de 5 V DC para o um diodo normal, assim como de válvu-
rentes, o que também é possível com este módulo voltímetro digital. las de gás regulado (Gas Regulator Tubes)
instrumento. O interruptor S2 (A a D) é um seletor de ten- como as OA2, OB2, e também de resistên-
A resistência interna pode ser determinada são de quatro posições, com uma posição cias dependentes da tensão VDR (alguns
com a fórmula RINT = dV/dI. O diferencial central adicional para desligar. são polarizados). A precisão da medição do
dV é obtido submetendo o diodo em teste a voltímetro vai indicar o verdadeiro valor da
duas correntes diferentes (por exemplo, 10 Posição 20 V tensão zener e a deriva de temperatura da
mA e 5 mA). A diferença na tensão medida Na posição S2.A, correspondente a 20 V, o tensão do dispositivo.
em ambos os casos (por exemplo, 6,6 V e transformador TR1 alimenta um retificador
6,3 V) é o valor de dV (6,6 V – 6,3 V = 0,3 V), em ponte, cuja tensão contínua resultante O seletor S2.D muda o ponto decimal
e dI é naturalmente a diferença entre as cor- é de cerca de 32 V. O transistor BD244 é entre 19,99 V e 199,9 V, embora a sensi-
rentes (dI = 5 mA). Torna-se assim possível ligado como fonte de corrente constante. O bilidade esteja sempre nos 199,9 mV. Não
calcular o valor de RINT (0,3/0,005 = 60 Ω). interruptor S1.A permite alterar a resistên- se esqueça de retirar a ponte da solda que
O coeficiente de temperatura de um diodo cia de emissor de forma a gerar três corren- está normalmente encaixada no módulo
zener depende da sua tensão inversa. Para tes distintas, 5 mA, 10 mA e 50 mA. A cor- voltímetro P3.
um diodo com uma tensão inversa inferior rente gerada pelo BD244 pode ser calculada (090181)
a 5,6 V, o coeficiente é negativo, para uma de forma aproximada por: Artigo original: Zener diode tester – March 2010

66 05-2010 elektor

Você também pode gostar