Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
Os microcontroladores estão escondidos dentro de
inúmeros produtos atualmente. Se um forno de
microondas tem um LED ou visor LCD e teclado, ele
contém um microcontrolador. Todos os automóveis
modernos contêm ao menos um microcontrolador (e
podem ter até 6 ou 7): o motor é controlado por um
microcontrolador, bem como os freios antitravamento o
controle de velocidade de viagem e assim por diante. A
maioria dos aparelhos com controle remoto contém um
microcontrolador: TVs, VCRs e sistemas de som de
alta fidelidade entram nesta categoria. Além disso,
também têm microcontroladores: câmeras SLR e
câmeras digitais, telefones celulares, filmadoras,
impressoras a laser, telefones (as que possuem identificador de chamadas, memória para
20 números, etc.), pagers, além de refrigeradores, lava-louças, lavadoras de roupas e
secadoras (os que possuem visores e teclados). Basicamente, qualquer produto ou
dispositivo que interaja com o usuário possui um microcontrolador interno.
Neste artigo, você irá entender o que são os microcontroladores e como eles funcionam.
Também mostraremos como você pode começar a trabalhar com
microcontroladores (criaremos um relógio digital e um termômetro digital com
microcontrolador). No processo, você aprenderá muito sobre como eles são usados em
produtos comercializados.
O que é um microcontrolador?
Um microcontrolador é um computador. Todos os computadores (independentemente
de ser um computador de mesa (desktop), um grande mainframe ou um
microcontrolador) possuem várias características em comum:
Em muitos produtos, como os fornos microondas por exemplo, a demanda sobre a CPU
é bem baixa e o preço é um aspecto importante. Nesses casos, os fabricantes utilizam
chips de microcontrolador dedicado: chips que foram projetados originalmente para
serem CPUs econômicas, pequenas, de baixo consumo e embutidas. O Motorola 6811 e
o Intel 8051 (em inglês) são bons exemplos desses chips. Também existe uma linha de
controladores populares chamados de "microcontroladores PIC" criados por uma
empresa chamada Microchip (em inglês). Nos padrões atuais, eles são incrivelmente
minimalistas; mas extremamente econômicos quando adquiridos em grandes
quantidades e geralmente conseguem atender às necessidades de um projetista de
dispositivos com apenas um chip.
Usando microcontroladores
Em Como funcionam as portas eletrônicas, mostram-se os dispositivos TTL série
7400, também onde comprá-los e como utilizá-los. O que se descobriu é que muitas
portas podem ser necessárias para implementar dispositivos simples. Por exemplo, no
artigo sobre relógio digital, o relógio projetado pode conter 15 ou 20 chips. Uma das
grandes vantagens de um microcontrolador é que o software (um pequeno programa que
você escreve para ser executado no controlador) pode tomar o lugar de muitas portas.
Neste artigo, portanto, nós usaremos um microcontrolador para criar um relógio digital
(será um relógio digital caro de proximadamente US$ 200). Nesse processo você irá
aprender o essencial para trabalhar com microcontroladores.
A propósito, eles são chamados de "Stamps" (selo, em inglês) porque são do tamanho
aproximado de um selo postal.
A Parallax fabrica duas versões do Stamp BASIC: o BS-1 e o BS-2. Aqui vão algumas
diferenças entre os dois modelos:
O BASIC Stamp específico que será utilizado aqui é chamado de "BASIC Stamp
Revisão D" (mostrado abaixo).
Você pode observar pela tabela anterior que não é possível construir nada muito
complexo com o BASIC Stamp. O limite de 75 linhas de instruções (os 256 bytes de
EEPROM podem armazenar um programa BASIC de cerca de 75 linhas) no BS-1 é
bem restrito. No entanto, pode-se criar algo bem interessante e o fato de o Stamp ser tão
pequeno e alimentado por bateria significa que ele é bem versátil.
Como funcionam os microcontroladores
por Marshall Brain - traduzido por HowStuffWorks Brasil
Neste artigo
1.
Introdução
2.
O que é um microcontrolador?
3.
Usando microcontroladores
4.
Programando o BASIC Stamp
5.
Brincando com um BASIC Stamp
6.
Criando um relógio digital (particularmente caro)
7.
Construindo um termômetro digital
8.
Mais informações
9.
Veja todos os artigos sobre Componentes
Operações:
• + - adição
• - - subtração
• * - multiplicação (low-word)
• ** - multiplicação (high-word)
• / - divisão
• // - módulo
• max - retorna o máximo entre 2 valores
• min - retorna o mínimo entre 2 valores
• & - AND
• | - OR
• ^ - XOR
• &/ - NAND
• |/ - NOR
• ^/ - XNOR
• =
• <>
• <
• <=
• >
• >=
• AND
• OR
Variáveis
Todas as variáveis no BS-1 têm nomes pré-definidos (que podem ser substituídos pelos
nomes que você desejar). Lembre-se que como há apenas 14 bytes de RAM
disponível então todas as variáveis são preciosas. Aqui estão os nomes padrão:
Como existem apenas 14 bytes de memória, w0 e b0/b1 estão no mesmo local na RAM
e w1 e b2/b3 também, e assim por diante. Além disso, bit0 até bit15 residem em w0 (e,
portanto, em b0/b1 também).
Pinos de E/S
Você pode ver que 14 das instruções em BS-1 têm a ver com os pinos de E/S. A razão
para tal ênfase é o fato que os pinos de E/S são a única maneira de o BASIC Stamp
conversar com o mundo. Há oito pinos em BS-1 (numerados de 0 a 7) e 16 pinos em
BS-2 (numerados de 0 a 15).
Os pinos são bidirecionais, o que significa que pode-se ler valores de entrada neles ou
enviar valores de saída para eles. A maneira mais fácil de enviar um valor a um pino é
usar as funções HIGH ou LOW. A declaração high 3 envia 1 (+5 volts) para o do pin 3.
LOW envia um 0 (Terra). O pino 3 foi escolhido arbitrariamente aqui - podem-se enviar
bits para qualquer pino de 0 a 7.
Há várias instruções interessantes de pinos de E/S. Por exemplo, POT lê a configuração
em um potenciômetro (resistor variável) se for conectado a um capacitor como a
instrução POT espera. A instrução PWM envia sinais modulados por largura do pulso.
Instruções como estas podem facilitar bastante a conexão de controles e motores ao
Stamp. Veja o documento indicado para detalhes da linguagem. Também existe o livro
Programming and Customizing the BASIC Stamp Computer de Scott Edward que pode
ser extremamente útil porque contém exemplos de projetos.
Você pode obter um kit inicial do fabricante, Parallax (em inglês) ou de um fornecedor
como Jameco (em inglês). Da Parallax, pode-se pedir o BASIC Stamp D Starter Kit
(peça número 27202). Da Jameco, pode-se pedir a peça de número 140089. Você
receberá o Stamp (mostrado abaixo), um cabo de programação, software e instruções. O
kit custa cerca de US$ 79 nos dois fornecedores.
Instalar o Stamp é fácil. Você o conecta na porta paralela do seu PC. Então você roda
um aplicativo DOS para editar seu programa em BASIC e faz o download dele para o
Stamp. Aqui está uma imagem de um editor comum (livro do Scott Edward):
Para executar o programa neste editor, você pressiona ALT-R. O aplicativo do editor
verifica o programa BASIC e então o envia por cabo para o EEPROM no Stamp. Então
o Stamp executa o programa. Neste caso, o programa produz uma onda quadrada no
pino de E/S 3. Se você conectar uma ponta de prova ou um LED ao pino 3 (veja o artigo
sobre portas eletrônicas para detalhes), verá o LED acender e apagar duas vezes por
segundo (ele muda de estado a cada 250 milisegundos por causa dos comandos de
pausa). Este programa rodaria por várias semanas com uma bateria de 9 volts. Pode-
se economizar energia encurtando o tempo que o LED fica aceso (talvez ele fique ligado
por 50 milisegundos e desligado por 450 milisegundos) e também usando a instrução
NAP ao invés de PAUSE.
Digamos que você queira usar os pinos de E/S no BASIC Stamp para mostrar valores
numéricos. No artigo sobre relógio digital, vimos como fazer a interface para um visor
de LED de 7 segmentos usando um chip 7447. Os 7447 funcionam bem junto com o os
BASIC Stamp. Você poderia ligar quatro dos pinos de E/S direto num 7447 e
facilmente mostrar um número entre 0 e 9. Já que o Stamp BS-1 possui oito pinos de
E/S, é fácil acionar dois 7447 diretamente desta maneira.
Para um relógio, precisamos de um mínimo de quatro dígitos. Para acionar quatro 7447
com oito pinos de E/S, precisamos ser um pouco mais criativos. O diagrama a seguir
mostra um possível método:
Neste diagrama, as oito linhas de E/S do Stamp entram a partir da esquerda. Este
método usa quatro linhas que entrm em todos os quatro 7447s. Então as outras quatro
linhas do Stamp ativam os 7447 em seqüência ("E" nos chips significam "Enable", ou
Habilitação que em um 7447, isto seria uma entrada "apagado" informada no pino 5).
Para fazer este arranjo funcionar, o programa BASIC no Stamp inseriria o primeiro
dígito nas quatro linhas de dados e ativaria o primeiro 7447 mudando o pino E com a
primeira linha de controle. Então enviaria o valor para o segundo dígito e ativaria o
segundo 7447, seqüenciando assim todos os quatro 7447s repetidamente. Conectando as
coisas de forma um pouco diferente, pode-se fazer isso apenas com um 7447. Usando
um chip 74154 demultiplexador e alguns drivers, você poderia acionar até 16 dígitos
usando este método.
Isso é uma forma padrão de controlar visores de LED. Por exemplo, se você tem uma
antiga calculadora LED, ligue-a e sacuda-a enquanto olha o visor. Você verá que apenas
um dígito por vez está iluminado. O método é chamado multiplexar o visor.
Ainda que este método funcione bem para relógios e calculadoras, ele tem
dois problemas:
• o visor pode ser acionado por um simples pin I/O. Como o visor contém lógica
que permite ao Stamp comunicar-se com ele serialmente, então apenas um pino
de E/S é necessário. Adicionalmente, o comando SEROUT no Stamp BASIC
lida com a comunicação serial facilmente, tornando essa comunicação com o
visor simples;
• o LCD pode mostrar textos alfanuméricos: letras, números e até mesmo
caracteres personalizados;
• o LCD consome bem pouca energia - apenas 3 miliamperes.
O único problema é que um destes visores custa US$ 59. Obviamente, você não
incluiria um desses na sua torradeira. Se você estivesse projetando uma torradeira, no
entanto, provavelmente faria um protótipo com um destes visores e então criaria chips e
software personalizados para acionar LCDs bem mais baratos no produto final.
Para acionar um visor destes, você simplesmente o alimenta com +5 volts e terra (o
Stamp fornece ambos a partit de uma bateria de 9 volts) e conecta um dos pinos de E/S
do Stamp à linha de entrada do visor. A forma mais fácil que encontramos para conectar
os pinos de E/S do Stamp a um dispositivo como um LCD é usar uma ferramenta wire-
wrap (Jameco peça número 34577) e um fio calibre 30 de wire wrap (Jameco peça
número 22541). Assim, não é necessário soldar e as conexões ficam compactas e
confiáveis.
Embora este método seja simples e funcione, não é muito preciso. Se você quiser maior
precisão, um bom método seria conectar um chip de relógio tempo real ao seu Stamp.
Assim, a cada segundo aproximadamente, você pode ler as horas do chip e exibi-las.
Um chip de relógio de tempo real usa um cristal de quartzo para obter uma excelente
precisão. Chips de relógio geralmente contêm também informações de datas e suportam
correções de ano bissexto automaticamente.
Uma maneira fácil de fazer a interface do chip de tempo real a um Stamp é usar um
componente chamado Pocket Watch B.
O Pocket Watch B está disponível tanto pela Jameco (peça número 145630) quanto pela
Parallax (peça número 27962). Esta peça é do tamanho de uma moeda de 1 real e
contém o chip de relógio, cristal e uma interface serial; assim, apenas um pino de E/S é
necessário para se comunicar com ele. Este componente custa aproximadamente US$
30.
O DS1620 possui dois modos: em um modo, ele age como um chip de termostato
próprio, e em outro modo você o acopla a um computador e o usa como um
termômetro. A EEPROM armazena lembra do modo atual bem como das temperaturas
ajustadas para o termostato.
• o pino 1 no DS1620 é o pino de dados. Você lê e grava bits de dados neste pino;
• o pino 2 no DS1620 é o pino do relógio. Você temporiza o deslocamento de
dados como entrada e saída do registrador de deslocamento com este pino;
• o pino 3 no DS1620 é o pino de reset/seleção. Você configura o pino 3 alto para
selecionar o chip e comunicar-se com ele.
symbol RST = 0
' linha seleciona/reseta em 1620
symbol CLK = 1
' linha de clock para registradores de deslocamento no 1620
symbol DQ = 2
' linha de dados no 1620
symbol DQ_PIN = pin2
' representação do pino para DQ
symbol LCD = 3
' liha de dados para o LCD
inicio:
low RST
' deseleciona o 1620 a menos que esteja conversando com ele
high CLK
' pino de clock do 1620 por "default" em nível alto
pause 1000
' esperar a inicialização do termômetro e do LCD
setup:
high RST
' seleciona o 1620
b0 = $0C
' $0c é o byte de comando do 1620
' dizendo "Write Config"
gosub shift_out
' envia-o ao 1620
b0 = %10
' %10 é o byte de comando do 1620
' para configurar o modo do termômetro
gosub shift_out
' envia-o ao 1620
low RST
' deseleciona o 1620
pause 50
' atraso de 50ms para a EEPROM
start_convert:
b0 = $EE
' $EE é o byte de comando do 1620
' para iniciar conversões
high RST
' selecionar o 1620
gosub shift_out
' envia-o ao 1620
low RST
' desseleciona o 1620
' Este é o loop principal
' - lê e mostra a temperatura a cada segundo
loop_principal:
high RST
' selecionar o 1620
b0 = $AA
' $AA é o byte de comando do1620
' para ler a temperatura
gosub shift_out
' enviá-lo ao 1620
gosub shift_in
' lê a temperatura
' a pertir do 1620
low RST
' deselecionar o DS1620.
gosub display
' mostra a temperatura em graus C
pause 1000
' aguarda um segundo
goto loop_principal
' A subrotina shift_out envia o que estiver no
' byte b0 para o 1620
shift_out:
output DQ
' configura o pino DQ para
' modo de saída
for b2 = 1 to 8
low CLK
' preparar para carregar o bit
' no 1620
DQ_PIN = bit0
' envia o bit de dados
high CLK
' carrega o bit de dados no 1620
b0 = b0/2
' desloca todos os bits para a direita
' na direção ao bit 0
next
return
' A subrotina shift_in obtêm a
' temperatura em 9 bits do 1620
shift_in:
input DQ
' configura o pino DQ para
' modo de entrada
w0 = 0
' limpa w0
for b5 = 1 to 9
w0 = w0/2
' desloca a entrada para a direita.
low CLK
' pede ao 1620 o próximo bit
bit8 = DQ_PIN
' lê o bit
high CLK
' alterna o pino do clock
next
return
' Mostra a temperatura em graus C
mostra:
if bit8 = 0 then pos
' if bit8=1
' então a temperatura é negativa
b0 = b0 and/ b0
' inverter b0 com o uso de NAND
' a operação NAND com ele mesmo
b0 = b0 + 1
pos:
serout LCD, n2400, (254, 1)
' limpar o LCD
serout LCD, n2400, ("Temp = ")
' mostrar "Temp="
' no visor
bit9 = bit0
' gravar o meio grau
b0 = b0 / 2
' converter para graus
if bit8 = 1 then neg
' ver se a temperatura é negativa
serout LCD, n2400, (#b0)
' mostra temperatura positiva
goto meio
neg:
serout LCD, n2400, ("-", #b0)
' mostra temperatura negativa
meio:
if bit9 = 0 then zero
serout LCD, n2400, (".5 C")
' mostra o meio grau
goto pronto
zero:
serout LCD, n2400, (".0 C")
' mostra o meio grau
Pronto:
return
Se você executar este programa, você verá que ele mostra a temperatura em
graus Celsius com uma precisão de meio grau.
1. ele usa a palavra-chave symbol para configurar várias constantes que tornam o
programa um pouco mais fácil de ler (e também facilitam mover o chip para
diferentes pinos de E/S no Stamp):
2. ele configura os pinos CLK e RST no DS1620 para seus valores esperados;
3. ele escreve um byte de comando na EEPROM do DS1620 para mandar o chip
operar em "modo termômetro". Como o modo está armazenado na EEPROM,
você só precisa fazer isso uma vez, então poderia tecnicamente retirar esta seção
do código do programa após executar o programa uma vez (para poupar espaço
de programa);
4. o programa envia o comando $EE ("$" significa "número hexadecimal" - $EE é
238 em decimal) para dizer ao termômetro para iniciar seu processo de
conversão.
dF = dC * 9/5 + 32
Neste ponto, tivemos sucesso em criar um termômetro extremamente caro. O que você
pode fazer com isso? Aqui vai uma idéia. Digamos que você trabalhe em uma indústria
farmacêutica e está transportando medicamentos pelo país e que devem permanecer
numa certa temperatura todo o caminho ou os medicamentos se deteriorarão. O que
você pode fazer com o Stamp é criar um termômetro de registro de dados. Tanto a
Jameco (peça número 143811) quanto a Parallax (part number 27960) vendem um
equipamento chamado "módulo RAM Pack". Ele contém um chip RAM de 8 kilobytes
(ou 32 kilobytes opcionalmente) de baixa potência com uma interface serial. Você pode
adicionar este componente (ou algo similar) ao seu Stamp e escrever códigos que
gravam leituras de temperatura na RAM a cada minuto. Você pode então colocar seu
Stamp no transporte de medicamentos e ao final da viagem recuperar o Stamp. O
módulo RAM conteria o histórico de temperatura de toda a viagem e você saberia se os
medicamentos foram danificados.
Há muitos tipos de equipamentos interessantes e úteis que você pode construir com seu
Stamp agora que você sabe como funcionam os microcontroladores.
http://www.scribd.com/document_downloads/direct/37525401?
extension=pdf&ft=1305442000<=1305445610&uahk=6oPYmLmAk2PO0rx7SBfUF
ugyQNo