Baliza Para Robô
Baliza
Para Robô
A Baliza de Robô utiliza um microcontrolador de 8 pinos PIC12C508A OTP (One Time Programmable – programável uma única vez). Há muita controvérsia sobre o tipo de microcontrolador a ser prestigiado em um projeto como este.
Existem pelo menos três fabricantes de microcontroladores adequados a esta aplicação e é um pesadelo tentar definir o melhor tipo a utilizar.
O problema é: cada tipo tem a sua própria linguagem e seu próprio conjunto de idiossincrasias. Alguns chips têm características boas e outros possuem características diferentes, alguns têm linhas que são exclusivamente de entrada, outros têm mais linhas ou mais memória, etc, etc, etc...
Coletar todos os fatos, preparar um conjunto de instruções, apresentar todas as informações sobre a operação do chip, criar programas de exemplo e delinear um projeto para ensinar como escrever um programa leva meses e meses de desenvolvimento.
Isso se resume ao seguinte:
A família PIC tem a maior quantidade de informação e suporte disponível na Internet, na forma de projetos e exemplos. Pesquise você mesmo. Para outros modelos, as informações quase não existem.
Nós já fizemos um exercício completo para o PIC12C508A e PIC16F84, e derivar para um processador diferente requer iniciar novamente todo o processo de desenvolvimento.
O custo de todos os processadores, na categoria dos mais baratos, é quase o mesmo e as características bastante similares (quando você não os utiliza em seu limite extremo), assim, por que não “remar a favor da maré”.
É muito frustrante cada processador ter a sua própria linguagem pois isso é uma barreira enorme para incorporarmos uma segunda ou terceira linha de componentes em um curso de desenvolvimento.
Nós já fornecemos todo o software e hardware para o desenvolvimento de uma série de projetos usando o PIC12C508A e há pouquíssima vantagem em mudar para outro componente apenas porque ele é a “sensação do momento”.
Apenas quando alguma coisa surpreendente (tal como a capacidade de reprogramação) aparecer para um componente de 8 pinos, nós mudaremos.
"Nada é bom ou ruim, o pensamento faz a diferença".
A Baliza de Robô está disponível na forma de kit, ou já montada.
Há pelo menos três maneiras para você construir a Baliza de Robô:
Você pode comprar uma Baliza de Robô já pronta.
Você pode comprar um kit com um chip pré-programado.
Você pode comprar um kit com o chip em branco.
Você pode comprar um kit com um chip limpo e modificar o programa utilizando um PIC16F84 e um soquete adaptador.
Você vai precisar do Programador Multi Chip para queimar seu chip se você não obtiver um pré-programado em um kit..
Arquivos e informações:
Como regravar um '508A’.
Todos os arquivos da Baliza de Robô. Essa janela contém o bloco de notas (notepad.exe) Clique em notepad.exe e ele irá abrir. Arraste um arquivo para a janela do bloco de notas e o seu conteúdo será exibido!
Programador Multi Chip – vai ‘queimar’ o seu chip.
MPASM – converte seu arquivo ‘.asm’ em um arquivo ‘.hex’ para queimar no chip.
ICPROG.exe e um arquivo de ajuda: ICPROG-Help.zip - software para gravação (queima).
(Veja Queimando um Programa para ajuda em configurar o ICProg)
Provador Lógico (kit) – uma peça de equipamento de testes muito útil – novamente utilizando um PIC12C508A!
A Baliza de Robô é uma luz giratória. Nós a chamamos de Baliza de Robô porque ela foi originalmente projetada para ser uma implementação para um robô, mas ela pode ser usada em muitas aplicações.
Ela pode ser usada, por exemplo, como sinalizador no alto do mastro de um barco, como uma luz de alerta em uma bicicleta. O autor viu um dispositivo similar em uma loja por US$ 99!
Este é outro projeto que mostra a versatilidade do PIC12C508A. Ele é um chip pequeno e muito conveniente para todo tipo de aplicação.
Mesmo em um projeto como este, ele ocupa o lugar de pelo menos dois chips. Mas os LEDs estão em modo chaveado, em um ciclo de trabalho de 50% a 500Hz e seria difícil realizar tudo isso com menos de 3 chips. O modo chaveado economiza aproximadamente 30% da corrente (de 30 a 20 mA). Uma explicação completa é dada no artigo. Você pode modificar o e
A Baliza de Robô completa
Há mais neste artigo do que um chip e alguns LEDs.
É um bom começo para os dois tópicos que estamos cobrindo em nosso curso de eletrônica.
Estes tópicos são:
Programando um chip PIC12C508A
Utilizando um Provador Lógico
Desenvolver um projeto envolve três áreas de trabalho diferentes. O autor tem uma área na qual ele constrói os protótipos. Ela tem um ferro de solda, equipamento de teste e todas as peças necessárias para prototipação.
Outra área é onde acontece a escrita, incluindo o desenho do circuito e onde são vistas as páginas dos livros e mais a biblioteca de livros relacionados. A última área tem o computador, o Programador Multi Chip e é onde as páginas são digitadas para a Internet (e livros futuros).
Eu penso que seu ambiente será semelhante. Na maioria das vezes, as oficinas ficam separadas dos computadores e você terá outra seção chamada “biblioteca”, onde manterá os livros e na qual as coisas podem ser escritas e delineadas.
Este projeto envolve as três áreas, e mais. Ele introduz o Provador Lógico para auxiliar com o desenvolvimento e teste do projeto e como produzir programas para o PIC12C508A de 8 pinos.
Mesmo um projeto simples como este pode requerer alguma resolução de problemas e o Provador Lógico que nós projetamos é um dos melhores que há para fazer diagnósticos.
Ele é tanto um provador lógico quanto um injetor de pulsos e também produz uma série de tons e melodias para testar amplificadores de áudio.
Nós falamos sobre a sua utilidade neste projeto no decorrer do texto.
Nós mostraremos também como produzir um programa para o PIC12C508A. Esse chip normalmente é muito difícil de ser utilizado pois não é ‘amigável ao usuário’. É um dispositivo que só se programa uma vez (One Time Programmable), e se o programa não funcionar corretamente, o chip estará perdido.
Para desenvolver um programa você precisa de uma série de versões EPROM (também chamadas de versões “Windows”), bem como de uma lâmpada ultravioleta. Isso aumenta consideravelmente o custo de desenvolvimento e torna-o impraticável para o hobista. Nós “cortamos” os custos e desenvolvemos uma abordagem nova, brilhante.
Essa abordagema também é discutida no artigo.
Há muito a ser visto, então, vamos começar...
O projeto tem quatro níveis diferentes de envolvimento:
1. Você pode comprá-lo pronto para ser usado.
2. Você pode comprar um kit com um chip de 8 pinos pré-programado. Isso vai exigir de você apenas soldagem e não vai envolver nenhum trabalho de programação.
3. Você pode comprar o kit com um PIC12C508A em branco e queimar o seu próprio programa.(Você vai precisar do Programador Multi Chip).
4. Você pode modificar o circuito, usar o Provador Lógico para testá-lo, escrever um programa em um PIC16F84, usar um soquete adaptador, queimar um programa em um PIC12C508A e estar envolvido com o projeto em sua totalidade.
O CIRCUITO
TIPOS DE TRANSISTORES
Na maioria dos nossos projetos nós especificamos transistores BC 547 e BC 557 para indicar um transistor NPN ou PNP que não tenha exigências especiais. Isso representa um transistor depropósito geral, básico e simples.
As especificações para esse tipo de transistor são geralmente aceitas como:feito, torná-lo reverso, invertê-lo ou randomizá-lo. Isso normalmente exigiria 4 ou 5 chips. O display pode ser desligado em presença de luz forte. Um foto-transis
tAlg
Capacidade de Voltagem no coletor-emissor: aprox. 25v Capacidade de corrente de trabalho: aprox. 100mA ganho de DC: aprox 100
umas revistas usam os termos TUN e TUP para Transistor Universal NPN e Transistor UniversalPNP respectivamente.
O BC 547 e o BC 557 são os transistores mais “baixos” ou “simples” que você pode obter. Eles apresentam uma capacidade de corrente de trabalho mínima e também uma capacidade de voltagem bastante baixa e isso quer dizer que qualquer outro transistor pode ser utilizado como substituto. O uso de transistores como BC 547 e BC 557 é comum em revistas por todo o mundo. Eles são um dos primeiros tipos de transistores a ser aceito prontamente no projeto de equipamentos e todos os técnicos compreendem as suas características.
Se nós especificássemos tipos como BC182L ou BC214L muitos leitores prontamente iriam dizer: “Por quê foi utilizado esse transistor?”.
Nós queremos manter o circuito de fácil compreensão e por isso especificamos o tipo mais simples. A maioria dos nossos circuitos vai usar qualquer um dos tipos de propósito geral e quando indicarmos um tipo diferente, você terá que procurar nas especificações para descobrir a razão.
Geralmente há duas razões para selecionar um tipo de transistor diferente do BC547 ou BC557. Normalmente é por VOLTAGEM ALTA ou CORRENTE ALTA.
Essas necessidades aumentam enormemente o custo de um transistor e por isso nós não os especificamos a menos que seja absolutamente necessário.
COMO O CIRCUITO TRABALHA
O circuito usa cinco saídas do chip para controlar 16 LEDs. Dois LEDs são colocados em paralelo em cada saída (algo que você realmente não deveria fazer) de forma que eles acendam ao mesmo tempo. Quatro linhas são usadas para produzir uma “corrida-4-em-4” e uma linha é usada para selecionar entre dois bancos. Quando a linha de seleção (GP4) estiver HIGH, o transistor BC 547 é LIGADO e os primeiros quatro LEDs da seqüência são ativados pelas saídas mencionadas acima. Quando a linha de seleção estiver LOW, os próximos quatro LEDs da seqüência são ativados. Isso dá uma ação de 180°. Os LEDs na outra metade do display também são ativados nessa hora e assim a seqüência é completada. Dois LEDs correm ao redor do display ao mesmo tempo. RELAÇÃO MARCA-ESPAÇO
Você vai perceber que cada saída controla um par de LEDs em paralelo. No nosso caso, eles não podem ser colocados em série uma vez que a queda de voltagem através de cada LED é de 2,2 V (são LEDs de alto-brilho). A voltagem através de dois LEDs seria 4,4 V mais .35 V através de cada transistor e isso não fornece uma voltagem significativa para o resistor limitador-de-corrente. Se a alimentação cair 1 V os LEDs não irão acender.
O único problema com este tipo de projeto é a necessidade dos LEDs serem idênticos. Em outras palavras, eles precisam ser do mesmo lote ou fabricante.
Se dois LEDs com características diferentes forem utilizados, um irá roubar a voltagem de acionamento do outro e isso produzirá uma saída bastante indesejada.
Os LEDs do kit são de alto-brilho e podem ser vistos a 100 metros de distância.
Agora vamos ver outros dos componentes.
Os três componentes através da linha de força são importantes.
O capacitor de 100n através do chip é para fornecer uma boa partida para o oscilador no interior do chip.
O eletrolítico de 100µ ajuda a manter o brilho dos LEDs quando a bateria estiver fraca e o resistor de 10k esvazia o eletrolítico quando o circuito é desligado. Sem o resistor, uma voltagem bem pequena permanecerá no eletrolítico e isso irá manter a memória em várias células no interior do chip.
Quando o chip está se desligando, o conteúdo de algumas células se mistura e se o micro é desligado nesse estado, ele vai falhar ao iniciar novamente (ele não possui detecção de “quedas” para prevenir isso).
O foto-transistor Darlington MEL-12 coloca LOW na linha de entrada do micro quando ele detecta a presença de luz e o programa é mantido em um looping, esperando por HIGH nessa linha.
O funcionamento do foto-transistor já foi visto no nosso Curso Básico de Eletrônica, na página 47.
Usando um resistor de baixo valor no seu coletor faz com que ele necessite de um alto nível de luminosidade para desligar o circuito. Se um valor alto for usado na carga, uma pequena quantia de luz irá desligar o circuito.
O programa executa um ciclo antes de encerrar na presença de luz forte, para provar que está funcionando corretamente.
Uma pequena cobertura preta pode ser colocada sobre o foto-transistor para manter o circuito funcionando o tempo todo.
Um LED é capaz de ser ligado e desligado muito rapidamente. Ele produz luz pela passagem da corrente por um cristal e não através do aquecimento de um filamento como em uma lâmpada incandescente. Isso quer dizer que o LED irá ligar e desligar muito rápido já que não há um filamento para consumir tempo em aquecer e esfriar.
Há duas maneiras para ativar um LED. Uma é entregar-lhe uma corrente fixa e a outra é entregar pulsos de corrente.
Uma das coisas surpreendentes sobre um LED é a entrega de pulsos de corrente. Se você o alimentar com pulsos curtos, ligeiramente mais altos de corrente, a luminosidade produzida será a mesma que você teria caso o alimentasse com uma corrente constante um pouco mais baixa.
Fornecendo os pulsos a uma taxa de repetição acima de 100 Hz você será incapaz de perceber qualquer oscilação (tremeluzir) e a energia total consumida pelo LED será menor.
É isso o que nós fizemos neste projeto. Os LEDs não são acionados com uma corrente constante, mas pulsados em cerca de 500 Hz.
LISTA DE COMPONENTES
2 - 100R Todos resistores 1/4 watt 5%.
4 - 470R
1 - 4k7
1 - 47k
1 - 100n capacitor "multicamadas"
1 - 100u 16volts eletrolítico
16 - LEDs vermelho 5mm Alto Brilho
1 - 1N 4004 diodo retificador
1 - BC 547 transistor
5 - BC 557 transistors
1 - MEL-12 transistor photo Darlington
1 - capa preta para MEL-12
1 - 8pin IC socket
1 - PIC12C508A chip (com rotina))
1m - solda fina
1 – Placa de CI Baliza de Robô
SOLDAGEM
O kit vem com solda muito fina para apresentar a você o “melhor recurso já disponibilizado para soldagem”.
Solda fina torna a soldagem muito mais fácil. A qualidade do seu trabalho de solda vai se aperfeiçoar muito e você não vai mais querer voltar a usar solta grossa novamente.
Certifique-se de aplicar uma pequena quantidade de solda à junção uma vez que o único item real que você quer na solda é a fusão. É a fusão que torna a junção pequena e brilhante. Ela faz as coisas ‘aderirem’ melhor. Você pode ver que as bordas da junção apresentam uma adesão melhor às trilhas quando você usa solda nova.
Todas as nossas placas são pré-estanhadas e possuem uma mascara de solda ao redor dos pontos de soldagem, assim a solda só vai aderir aos lugares necessários.
Você não vai mais querer usar uma placa sem essas características após ter trabalhado com uma de nossas placas.
Aqui vai uma pergunta incomum: “Qual o tempo de vida da solda?”
“Cerca de 5 segundos!"
A solda é absolutamente inútil sem resina, e a resina precisa ser derretida para realizar seu trabalho de limpeza.
Assim, a vida da solda é o tempo no qual a resina está derretendo e evaporando. É por isso que você tem que aplicar a solda na junção. Tentar carregar solda quente na ponta do ferro de soldar é impraticável. Ela estará absolutamente INÚTIL no momento que chegar até a junção. Algumas vezes você pode “grudar” um componente usando solta morta em um terminal para mantê-lo em posição provisoriamente. Então você solda o outro terminal com solda “nova” e refaz a primeira conexão também com solda nova.
CONSTRUÇÃO
Antes de começar, decida aonde você vai utilizar o projeto assim você pode trabalhar o posicionamento dos LEDs. Eles podem ser dispostos radialmente ou alinhados, para produzir uma miniatura de um sinalizador para uma maquete de trens.
O tipo de LED também pode ser mudado. O Kit contém LEDs de 5 mm de alto-brilho, mas podem ser mudados para LEDs difusos de qualquer outra cor e tamanho.
Há apenas um ponto a considerar. Cada saída controla dois LEDs em paralelo e eles precisam ser do mesmo tipo, pois a queda de voltagem através deles deve ser muito próxima. Por exemplo, um LED em um par ligado em paralelo não pode ser de cor diferente do outro pois cada cor tem sua queda de voltagem característica, e o LED com a queda menor vai roubar a voltagem do outro. Se um LED não recebe sua voltagem característica ele não vai ACENDER. Essa é uma das maiores diferenças entre um LED e uma lâmpada. LEDs alternados na seqüência podem ser de cor diferente.
Coloque o soquete de CI primeiro. Use nosso identificador de resistores para diferenciar o de 470R do 4k7. Coloque no máximo três ou quatro componentes de cada vez e corte os terminais depois de tê-los soldado. Se os LEDs forem ficar voltados para fora, radialmente, insira seus terminais nos furos e dobre-os de forma que o corpo do LED apenas toque a borda da placa.
Assegure-se que o terminal mais curto é identificado como cátodo e coincide com a linha na legenda desenhada na placa.
O terminal curto do MEL-12 é o coletor. Mantenha o foto-transistor longe a da placa para evitar que ele se aqueça demais durante a soldagem.
Os últimos itens a serem soldados são os terminais da alça da bateria. Eles podem ser soldados no lado inferior da placa para uma aparência esmerada.
Acople o chip ao projeto e conecte a alimentação de 6 V. Os LEDs vão acender, efetuando duas rotações por segundo. Se a velocidade for aumentada (alterando o valor do delay no programa), o efeito será perdido. Seus olhos irão ver muitos LEDs ACESOS ao mesmo tempo.
PLACA DE CIRCUITO IMPRESSO BALIZA DE ROBÔ
Note a disposição do foto-transistor Mel-12
Esperançosamente a Baliza de Robô não irá funcionar quando for ligada. Isso pode parecer uma coisa surpreendente de se dizer, mas o único momento em que se começa a aprender alguma coisa é quando alguma coisa sai errada.
O autor trabalhou em mais de 35000 aparelhos de TV e milhares de outros aparelhos através de todo seu curso Universitário e MAIS DE UMA VEZ o conceito de que um circuito pode não funcionar veio à tona!
A abordagem de um instrutor em geral era: projete isto ou aquilo e ele irá funcionar na PRIMEIRA TENTATIVA! Mas isso não é a realidade.
E quando alguma coisa não funciona, é quando você realmente começa a aprender.
Mesmo um projeto simples como a Baliza de Robô pode ser usado como uma experiência de aprendizado.
Você pode utilizar um multímetro para checar as voltagens nas saídas e um Provador Lógico para verificar as linhas para ver o que está acontecendo.
SE NÃO FUNCIONAR
Se você montou um kit, há muito poucas razões para o projeto não funcionar.
O chip já vem pré-programado e a placa de circuito impresso mostra exatamente aonde cada componente é instalado.
A única possibilidade é um componente ligado de forma invertida. Ele pode ser um LED, um CI ou uma pilha invertida na caixa de baterias. Há apenas um transistor BC 557. Certifique-se que ele está na posição correta. Verifique todas as soldas, pois uma junção pode ter sido esquecida ou uma mínima quantidade de solda pode estar formando uma ponte entre duas conexões.
É difícil imaginar que um resistor esteja no lugar errado, mas o de 470R tem apenas uma cor diferente do de 4k7 e eles podem ter sido confundidos. Peça a alguém que examine o seu trabalho, pois é muito difícil detectarmos nossos próprios erros.
Utilize o terminal Injetor do Provador Lógico para acionar os LEDs. Os pinos 3, 5, 6 e 7 vão ligar 4 LEDs cada quando o chip for removido da placa uma vez que os dois transistores de queda precisam de um HIGH ou LOW bem definido em apenas dois LEDs para funcionarem. O injetor vai detectar um LED danificado ou invertido, uma falha em uma trilha ou uma solda ‘esquecida’.
Se o programa em um PIC16F84 não funcionar você terá que verificar todo o projeto até um ponto em que possa determinar se a falha é de hardware ou software.
Coloque um chip pré-programado no projeto e certifique-se que o circuito está funcionando corretamente antes de trabalhar no seu programa.
Tudo o que você faz deve ser feito em pequenos passos. Esse é o único caminho que pode garantir que você vai resolver o problema.
Certifique-se de que o programa no PIC16F84 foi compilado para um PIC16F84 no MPASM e corretamente gravado pelo IC_Prog.
Uma vez que o programa para o PIC16F84, encontrado em Arquivos da Baliza, estiver funcionando, você pode começar a modificar o código para as suas próprias necessidades.
MIGRANDO
Adaptar um programa de um processador para outro pode criar uma série de problemas. Você tem que saber as diferenças e limitações de cada processador. Uma transferência só é realmente possível entre processadores de mesma família. Felizmente o PIC12C508A é uma versão menor do PIC16F84 e quase todas as instruções podem ser utilizadas. Há, entretanto, um certo número de instruções que não podem ser usadas e uma série de coisas com as quais você deve ter cuidado.
Uma lista completa das diferenças é fornecida no Curso de Programação PIC, página 24.
A tabela abaixo é um resumo dessas diferenças e uma vez memorizadas você pode escrever um programa para o PIC16F84 (usando SOMENTE instruções comuns aos dois chips) e o seu programa não terá que ser alterado quando o código for compilado para um PIC12C508A:
PIC16F84
(migrando para um PIC12C508A) PIC12C508A
Arquivos: 0Ch a 4Fh
Use apenas arquivos: 0C a 1FArquivos: 07 a 1Fh
Use apenas arquivos: 0C a 1F
Memória: 000 a 2FFh (1024 bytes)
Use apenas memória até 1FEhMemória: 000 a 1FFh (511 bytes)
Use apenas memória até 1FEh
O programa é escrito em EEPROM – pode ser apagado e reescrito 1000 vezes
O programa pode ser escrito apenas uma vez em cada local. Veja regravando um ‘598A.
CALL opera em toda a memória
CALL opera até 0FFh
RETURN
RETURN não está disponível - use RETLW 00 a 0FFh
RB0 – linha entrada/saída
RB1 – linha entrada/saída
RB2 – linha entrada/saída
RB3 – linha entrada/saída
RB4 – linha entrada/saída
RB5 – linha entrada/saídaGP0 – linha entrada/saída
GP1 – linha entrada/saída
GP2 – linha entrada/saída
GP3 – SOMENTE entrada
GP4 – linha entrada/saída
GP5 – linha entrada/saída
Pilha de 8 níveis de altura
Pilha de 2 níveis de altura
ADDLW - não disponível
SUBLW - não disponível
OPTION 0DFh – Torna GP2 uma entrada e desabilita picos fracos de sinal
EEPROM - 64 bytes
EEPROM - 0 bytes
oO diagrama a seguir mostra as linhas de entrada/saída para o PIC12C508A equivalendo ao PIC16F84:
MODIFICANDO O PROGRAMA
O programa Baliza de Robô pode ser completamente reescrito ou apenas parcialmente modificado para se adequar a qualquer necessidade.
É bem simples ver como o programa funciona e como ele foi apresentado em um estilo “fluente” chamado “programação linear”, no qual o micro avança pelo programa e não diverge para sub-rotinas. Isso faz o programa parecer maior devido à repetição de instruções, e tem uma razão de ser: Esse tipo de programa pode ser colocado EM QUALQUER LUGAR em um PIC12C508A já que nenhuma instrução CALL é necessária. Se uma instrução CALL for utilizada, o programa só poderá residir nas primeiras posições 0FFh de um ‘508A.
Normalmente uma rotina de Delay seria chamada (CALL rotina) depois de cada saída ser ligada ou desligada (e apenas uma rotina de delay seria necessária), mas no nosso caso o delay inclui um ciclo de trabalho de 50% no qual cada saída é ligada e desligada para pulsar o LED com corrente e cada rotina de delay é diferente.
A linha de seleção (GP4) não pode ser pulsada uma vez que ela seleciona entre dois bancos diferentes de LEDs e assim cada saída (GP0, GP1, GP2 e GP4) deve ser pulsada.
Os LEDs diagonalmente opostos são iluminados ao mesmo tempo no display e essa característica não pode ser alterada. Você pode ter um, dois ou três pares de LEDs acesos ao mesmo tempo para conseguir diferentes efeitos.
Você também pode alternar os efeitos, se você pretende utilizar o projeto como um sinalizador miniaturizado em uma maquete de trem, por exemplo. O display pode rodar para frente, depois para trás, então parar, ou ainda piscar.
O chip não será sobrecarregado com qualquer escolha na seqüência de acendimento, pois os LEDs são controlados por transistores de amplificação e o chip está entregando menos de 10 mA em cada saída.
O chip, o resistor de carga para o MEL-12 e o transistor de esvaziamento na alimentação tomam aproximadamente 2 mA, deixando cerca de 20 mA para dois LEDs em paralelo. Uma vez que o tempo LIGADO representa 50% do tempo total, a corrente de pico em cada LED é 20 mA, fazendo a corrente média ser de 10 mA. Isso produz um brilho constante no LED equivalente ao de uma corrente constante de aproximadamente 20 mA.r Darlington foi incluído para detectar a luz ambiente.