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
ESTÊNCIL ELETROFORMADO
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
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
elektor 09-2010 3
NOTÍCIAS
4 09-2010 elektor
NOTÍCIAS
6 09-2010 elektor
Hardware & Software
InterCetro abre
portas para si!
Placa de expansão
para o Cetro
Clemens Valens (Elektor)
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
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
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
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
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
elektor 09-2010 13
música & iluminação
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
J5 5V
DMX
XLR D2
U9 U3 U5 DMX
SW1
1 DMX DMX 1
J3 D3
ON 1 U7
Spy by Wire
2
3
TPS62110 081004 - 12
4
5
6
7
081004 - 13
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
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
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
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
PGND
PGND
R5
PwPd
GND
GND
C1 C2 C3 C4 C5
9 11 12 17 1 16 Vref = 2.5V
10u 10u 1u 22u 22u
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
18 09-2010 elektor
música & iluminação
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
elektor 09-2010 19
Hardware & Software
20 09-2010 elektor
Hardware & Software
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).
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
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
mado em assembler.
40 40
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
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
(c)Elektor
C2
Capacitores:
meios bits no FIFO.
C1= 1,7 nF (ver texto) IC1 K1
Este leitor RFID pode ser utilizado para ler
R2
V100
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
Figura 5. Diagrama do circuito para o leitor RFID utilizando um ATtiny2313. A placa EM4095 é ligada ao conector K3.
X1
IC2
R1
IC1
C4
D1 5 1
questão realizar cálculos complexos entre 6 2
T1
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.
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
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
elektor 09-2010 29
MEDIÇÃO & Teste
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.
30 09-2010 elektor
MEDIÇÃO & Teste
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.
32 09-2010 elektor
informação
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”);
elektor 09-2010 35
Hardware & Software
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.
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
38 09-2010 elektor
Hardware & Software
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
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
4 2N2222
CV
(060249-1) 1 5
10k
100n 100n
2W
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
+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
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
10k
1k
1k
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
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
SEN
SDIO
RST
090740 - 12
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
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
elektor 09-2010 47
Hardware & Software
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)
entre pisca-piscas, de um
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
10
22
10u
R5 R4
X1 BC547
BZ1
S1
o estado lógico um o transistor corres-
22k
C2 C3 C4
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
52 09-2010 elektor
Passatempo & Modelismo
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).
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
Premium
PATROCINADORES
já confirmados
Master
Gold
Sponsors
APOIO EDUCACIONAL
Cordenadores de Painéis
CONGRESSO
+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)
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.
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)
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
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).
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
elektor 09-2010 63
Informaçã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.
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
CLK
(LSB) (MSB)
040241 - 2 - 15
Apenas MAX7221
64 09-2010 elektor
Informação
+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
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
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
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
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
12V
1N4007
150k
15k
+5V P2 P0 P3 0
1k
66 05-2010 elektor