Bolsista: Marco Antonio Santuci Carvalho (PIBIC/CNPq) #9514376
boc@dcc.ufmg.br
Orientador: Mário Fernando Montenegro Campos (DCC-UFMG)
mario@dcc.ufmg.br
Com o desenvolvimento de robôs cada vez menores surge a necessidade de compactação do hardware sem que o potencial de se agregar novas funções ou comportamentos seja comprometido. Nesse sentido foi desenvolvido um sistema computacional implementado em duas pequenas placas de circuito impresso com barramento proprietário. Uma delas contem um microcontrolador reprogramável com memória local e entradas e saídas digitais e analógicas, possibilitando o uso de diversos sensores e comunicação com computador. A segunda placa agrega funções que permitem o controle PID preciso de motores de corrente contínua, ou outros atuadores com consumo máximo de 4A. O sistema pode conter diversas dessas placas de controle, habilitando o uso de vários atuadores, usualmente necessários em dispositivos robóticos. Um dos pontos chave do projeto é a sua disponibilização por completo na internet, esperando-se, desta forma, que ele seja enriquecido com novas melhorias e idéias de colaboradores para que tanto alunos, professores ou qualquer pessoa interessada, possam desenvolver suas aplicações práticas utilizando o sistema.
A quantidade de “inteligência” embarcada em um robô depende do hardware computacional disponível a ele. Com o desenvolvimento de robôs cada vez menores existe a necessidade de compactação do hardware sem comprometer significativamente a quantidade de inteligência do robô.
Para que se consiga a compactação do hardware é necessário a utilização de componentes eletrônicos que possuam muitas características e que integrem funções de modo a reduzir a quantidade de componentes externos (glue logic), simplificando o projeto, facilitando o layout do circuito e aumentando a robustez. Os microcontroladores atendem estes requisitos. Além de possuirem características de microprocessadores de uso geral, eles tem a vantagem de possuir, no mesmo encapsulamento, memória, dispositivos de I/O, conversores A/D, portas seriais bem como outras facilidades bastante úteis em aplicações eletrônicas em geral e naquelas demandadas pela robótica.
O objetivo deste projeto é o desenvolvimento de uma placa microcontrolada para aplicações robóticas e sistemas controlados.
A princípio pensava-se que a principal utilização do projeto seria em robôs móveis, principalmente os micro robôs. Isto aconteceu porque o projeto inicial previa apenas o controle de dois motores, número mínimo desejado para os robôs móveis. Com o inicio das atividades e projeto do circuito percebeu-se que esta placa também poderá ser utilizada em manipuladores robóticos mais simples visto que será feito um circuito que permite suportar diversos módulos de controle de atuadores.
Por conter um sistema de controle de grande precisão, as suas aplicações são inúmeras e podem ser utilizado por todos aqueles que desejam desenvolver aplicações práticas de controle e automação. Nesse sentido, toda a documentação do projeto estará sendo disponibilizada na Internet. Espera-se, assim que a comunidade possa enriquece-lo com melhorias e idéias.
Vários fatores foram levados em consideração no projeto do circuito. O circuito deveria ser capaz de possuir “inteligência” própria e suporte para controlar e acionar, a princípio, dois motores CC. Deveria também possuir um sistema de comunicação para que também pudesse ser controlado por um computador remoto. A idéia geral do projeto pode ser melhor ilustrada através da Figura 1.
Figura 1 – Idéia Geral do projeto
A escolha de cada um dos circuitos foi inspirada em uma análise que realizamos ao longo de 2 anos e principalmente (ver anexo 1) na 4a Copa Mundial de Futebol de Robôs realizado em agosto/1999 em Campinas-SP. Neste campeonato diversas tecnologias e diferentes circuitos foram adotados para o controle dos microrobôs móveis dos diversos times o que nos permitiu pesquisar as diferentes soluções e adaptar circuitos para o nosso projeto.
Como limitação e desafio para este projeto, decidiu-se adotar as limitações de tamanho impostos pela categoria MIROSOT (Micro Robot Soccer Tournament) de forma que o projeto pudesse, além das aplicações descritas anteriormente, ser testado e avaliado também nesta plataforma. O tamanho da placa do circuito ficou limitado a um quadrado de 75mm.
O circuito microcontrolador é um circuito versátil capaz de ser programado internamente para realização de diversas funções. A escolha do microcontrolador foi feita baseada em estudo (ver anexo 2) para se verificar qual a arquitetura seria mais adequada em nossa aplicação.
Considerando os requisitos técnicos e ecônomicos, o microcontrolador escolhido foi o PIC16C74 da Microchip, que além de apresentar as características desejáveis a seguir, o Laboratório de Visão e Robótica do DCC já possuia kit de desenvolvimento para este microcontrolador com também algumas unidades para testes.
As principais características do PIC16C74 [2] são:
Selecionado o microcontrolador, foi necessário a escolha do circuito de controle e acionamento do motor. O controle do motor poderia ser feito pelo próprio microcontrolador mas como ele não é um circuito especialmente feito para isso e o projeto prevê um controle preciso dos motores (altamente desejado para aplicações robóticas) decidiu-se optar por se utilizar um circuito integrado especializado em controle de motores.
Decidiu-se utilizar para o controle do motor o CI LM629N6, controlador de movimento de precisão da National Semiconductors. Dentre outras características ele possui:
Para acionamento dos motores decidiu-se utilizar uma ponte completa (Ponte H), o circuito integrado L298N. Este CI é capaz de acionar dois motores com corrente de até 2A. Este circuito torna bastante compacto o circuito de acionamento pois não necessita a utilização de transistores, necessitando apenas de diodos externos de proteção (os chamados diodos de “roda livre”).
Devido a um problema encontrado na interface do circuito de controle entre o LM629 e a ponte H L298, foi feita uma alteração no circuito da placa inferior da Boc Board. O CI U7 da placa inferior do projeto anterior a Dez/2002, o inversor 7404, foi substituído por um decodificador de 2 para 4, o TTL 74139. Esta mudança foi necessária para que os sinais do LM629 acionassem de maneira correta a ponte H L298N. Esta modificação é descrita no anexo [6]
Para isso foi implementado um soquete com pinagem baseada em um módulo transceiver UHF da Radiometrix. Trata-se de um módulo de comunicação de dados por RF que é capaz de transmitir dados half duplex em velocidades superiores a 40 Kbps.
O espaço na placa destinado para o circuito de comunicação remoto (utilizando comunicação via rádio) é compartilhado com o circuito de comunicação serial via fio, que foi implementado utilizando um conversor de padrão TTL/RS-232C, o CI Max232 da Maxim-Ic. Com apenas alguns capacitores é possível alimentar este CI com 5V e obter o padrão de sinais TTL ou RS232 em suas saídas de forma a possibilitar a implementação de uma interface serial com a placa microcontrolada.
Devido a limitação de pinos do microcontrolador, os circuitos remoto/serial não podem funcionar simultaneamente. Este é um circuito que não foi totalmente implementado devido a preocupação com o circuito em suportar diferentes modos de comunicação.
Para complementação do projeto, outros circuitos foram projetados e implementados tais como:
Para verificação prévia do funcionamento do circuito projetado, parte dele foi inicialmente montado em Proto-board. Foram programadas algumas rotinas de teste para cada parte do circuito montado antes que ele fosse incluído no projeto. Para funcionamento de certos circuitos algumas modificações tiveram de ser acrescentadas ou refeitas para um funcionamento correto do circuito global. Isto trouxe maior confiança no projeto do circuito e eliminou a maior parte de erros de projeto que comprometeriam o funcionamento da placa de circuito impressa a ser fabricada.
O circuito impresso foi projetado. Percebeu-se que ele ficou grande o bastante de forma a não caber em uma placa com 75mm de lado. Decidiu-se então dividir o circuito colocando o microcontrolador, memória, circuito de comunicação, oscilador, reset, sinalizador em uma placa e outro circuito contendo controle e acionamento de motores, alimentação em outra placa.
O circuito final é mostrado no Anexo 3. Ele está dividido em dois circuitos (placa superior e placa inferior) que se comunicam por meio de dois barramentos que contem os sinais comuns aos dois circuitos que são: as tensões de alimentação, controle de fluxo e dados do controlador do motor e terra.
Para o projeto da placa de circuito impresso foi utilizado, o software EDA Protel versão 98. Este é um software bastante poderoso que permite capturar esquemáticos, desenhar placas de circuito impresso, rotear circuitos, além de várias outras funções.
Primeiramente foram gerados dois arquivos esquemáticos da placa (robo up sch.sch e robo down sch.sch). Depois foi gerado um arquivo de “netlist” que contém todos os componentes e ligações entre eles. Foi criado, posteriormente, através de uma ferramenta “Wizard”, um arquivo contendo o desenho mecânico da placa incluindo suas medidas. Depois, a partir do arquivo de netlist, foi feito o carregamento dos componentes e disposição destes na placa. Com os componentes dispostos na placa foi feita uma configuração de tamanhos de furos, trilhas e ilhas para geração do roteamento da placa. Este roteamento e as trilhas foram conferidas e em alguns casos refeitas, utilizando-se processo manual. Como foram feitas duas placas, este processo foi feito duas vezes.
Durante a geração da placa, foram feitas configurações de acordo com as tabelas abaixo:
Tipo de sinal | Espessura da trilha em milésimo de polegada (mil) |
---|---|
Sinais comuns | 14 |
Terra de sinal | 25 |
Terra analógico | 30 |
VCC | 25 |
Motor OUT | 40 |
Vbat | 30 |
Tabela 1 - Tamanho de trilhas
Componente | Tamanho de ilhas/furos(mil) |
---|---|
Componentes comuns (Cis DIP, resistores, etc) | 60/32 |
Conectores | 70/44 |
Pinos regulador | 80/60 |
Chave H-H on-off | 130/60 |
Diodos chaveadores | 100/60 |
Tabela 2 - Tamanho de ilhas/furos
Foram também definidas prioridades de roteamento de acordo com as classe de sinal conforme mostrado nas tabelas 3 e 4. Este processo teve de ser adotado devido a importância de certos tipo de ligações em relação a limitação de comprimento, susceptibilidade a ruído, etc.
Classe de sinal | Prioridade |
---|---|
Clocks | 4 |
Controle de fluxo | 3 |
Dados | 2 |
EEPROM | 1 |
Placa | 0 |
Tabela 3 - Prioridade no roteamento de sinais – Placa superior
Classe de sinal | Prioridade |
---|---|
Clocks | 6 |
Controle de fluxo | 5 |
Dados | 4 |
Controle do motor | 3 |
Encoder | 2 |
Motor OUT | 1 |
Placa | 0 |
Tabela 4 - Prioridade no roteamento de sinais – Placa inferior
Uma importante característica utilizada durante o processo de criação da placa foi a utilização de uma malha de ligação na camada inferior e superior da placa. Esta malha foi ligada ao terra de sinal e serve para diminuir a impedância de terra reduzindo a emissão de interferência eletromagnética e aumentando a susceptibilidade a ruídos. Esta malha de terra foi criada através de uma ferramenta do software Protel com grid de 20 mil e espessura de trilha de 8 mil.
A disposição dos componentes foi outro fator relevante na criação da placa. Optou-se por dividir os circuitos de acordo com sua função da seguinte forma:
Com o propósito de aumentar a flexibilidade, os circuitos de alimentação foram colocadas em ambas as placas. Quando utilizadas em conjunto preferencialmente deve-se montar o circuito de alimentação na placa superior porque o acesso à chave liga-desliga é mais fácil e o regulador de tensão pode ser montado sobre esta placa, reduzindo a altura final da placa com os componentes.
A disposição dos componentes procurou obedecer critérios que garantissem menor proximidade entre circuitos do mesmo grupo de função. Alguns componentes, como por exemplo os leds, foram colocados na placa superior de forma a facilitar a visualização. Alguns circuitos semelhantes (ex. ligação dos dois motores) utilizaram conceitos de simetria dos componentes, de forma a se ter uma boa disposição dos sinais em cada circuito.
Foram acrescentados ao circuito capacitores de desacoplamento de 0.1uF próximos a cada circuito integrado para suprir “spikes” durante chaveamentos rápidos dos circuitos lógicos.
Para facilitar a depuração e acompanhamento dos sinais mais importantes da placa foi colocado, uma identificação próximo a cada pino de ligação nos conectores que fazem a comunicação da placa inferior com a placa superior e também no conector de expansão.
O circuito montado das duas placas pode ser observado nas figuras 2 e 3 abaixo:
Para um melhor acompanhamento do funcionamento do circuito, o diagrama em blocos é mostrado na figura 4.
Figura 4 - Diagrama em blocos do circuito da placa
Observando-se a figura acima, pode-se ter idéia da distribuição dos circuitos de acordo com cada placa, e como estes circuitos estão interligados.
Na placa superior temos como componente principal, o microcontrolador PIC16C74. Ele é responsável por transmitir e receber dados do circuito de comunicação (serial/RF ou programação), enviar sinais de dados e comandos para o chip de controle LM629, utilizar o circuito de sinalização (leds) para indicação de certos eventos, ler/escrever dados na memória serial e enviar/receber informações para os pinos de expansão.
A memória serial 93Lc66 possui a capacidade de 4Kbytes (512 x 8) e pode armazenar dados importantes da placa microcontrolada, como por exemplo, configurações de ganhos do controlador, rotinas de uso frequente, etc.
O módulo de comunicação e programação permite adicionar à placa uma grande variedade de modos de funcionamento. O primeiro deles é o modo de comunicação RF. Foi previsto no conector de comunicação a ligação de sinais com o microcontrolador de forma a suportar o transceiver half-duplex UHF da Radiometrix. Este transceiver foi escolhido como padrão para o conector de comunicação devido a sua alta taxa de transmissão (40Kbps) e pela sua alta confiabilidade. Caso a comunicação RF seja feita por outro tipo de circuito como o RX1000/HX1000 da RF Monolitics, é possível incorpora-los em uma placa de circuito impresso com tamanho razoável de 33mmx30mm.
Outro modo de comunicação é o modo serial que é uma placa de circuito impresso (33mmx30mm) conectada ao conector de comunicação que contém o chip RS232 que faz a conversão de padrões RS232/TTL. Com esta placa é possível o envio de informações do computador (porta serial) para a placa microcontrolada e vice-versa. Com a implementação de um protocolo específico é possível programar o microcontrolador para receber parâmetros tais como configuração de ganhos, trajetória, mudança de trajetória, armazenagem/leitura de dados, etc.
O ultimo módulo previsto para o encaixe no conector de comunicação é o de programação que permite programar o microcontrolador via serial pelo computador. Este módulo não está disponível no modelo do microcontrolador utilizado por causa da memória de programação ser uma EPROM. Com a utilização de microcontroladores recentemente lançados com memória Flash tais como o PIC16F874 e PIC16F877 que são compatíveis pino a pino com o PIC16C74, é possível a programação deste chip com o desenvolvimento do módulo de programação. Para a utilização deste módulo é necessário mudar o jumper da placa J9 para a posição 2-3 para colocação da tensão de programação VPP no pino de reset.
Nos pinos de expansão da placa podem ser ligados, por exemplo, sensores analógicos ou digitais. Podem ser ligados, também, um outro circuito sinalizador tal como um “buzzer”.
O circuito sinalizador é formado por três leds nas cores de um semáforo ( vermelho, amarelo e verde). Com este circuito é possível a verificação de funcionamento de módulos existentes na placa e também a sinalização de eventos tais como bateria de alimentação fraca, recepção de dados correta/incorreta, etc.
Um circuito não mostrado, e que gera sinais para ambas as placas, é o circuito oscilador. Neste caso optou-se por utilizar um chip com oscilador interno duplo, o ECS200. Este CI possui duas saídas de clock. A primeira é fixa em 20MHz e a segunda pode ser configurada para ter o valor da primeira divido por 2 até 256 . Com isso foi possível a geração dos sinais de clock para o microcontrolador (20MHz) e para o chip controlador (5MHz) em um único chip, o que diminuiu e simplificou o tamanho e número de componentes na placa.
Na placa inferior (Figura 3) encontra-se a parte do controle e acionamento dos motores. Nesta placa foi montado o chip da National Semiconductors, LM629N6. Como a documentação deste chip é bastante extensa, será feita aqui uma breve descrição de seu funcionamento. Maiores podem ser encontradas nas referências [3], [4], [5] e [6].
Na Figura 5 pode-se observar a pinagem do LM629.
Descrição dos pinos:
A figura 6 ilustra a arquitetura interna do controlador LM629. O microcontrolador se comunica com o LM629 através das portas de I/O para facilitar a programação de um comportamento de velocidade trapezoidal e do filtro de compensação digital. O sinal de magnitude PWM fornece para o CI L298 o sinal a ser aplicado no motor. Um encoder incremental acoplado no motor fornece a realimentação para fechamento da malha de controle. O gerador de comportamento de velocidade trapezoidal calcula a trajetória necessária para ambos os modos de velocidade e posição. Em operação, o LM629 subtrai a posição atual (posição realimentada) da posição desejada (gerador de posição) e o erro de posição resultante é processado por um filtro digital para acionar o motor até a posição desejada.
Figura 6 – Arquitetura do controlador LM629 [3]
A Tabela 5 fornece um breve sumário das especificações que o LM629 oferece.
Faixa de posição | -1.073.741.824 a 1.073.741.823 pulsos do encoder |
Faixa de velocidade | 0 a 1.073.741.823/216 pulsos por amostragem, isto é, 0 a 16.383 pulsos por amostragem, com resolução de 1/216 pulsos por amostragem |
Faixa de aceleração | 0 a 1.073.741.823/216 pulsos por amostragem por amostragem, isto é, 0 a 16.383 pulsos por amostragem por amostragem, com resolução de 1/216 pulsos por amostragem por amostragem |
Saída de acionamento do motor | Sinais de 8 bits de PWM com magnitude e direção do motor |
Modos de operação | Posição e velocidade |
Dispositivo de realimentação | Encoder incremental (sinais em quadratura; suporte para pulso de índice) |
Algoritmo de controle | Proporcional Integral Derivativo(PID) mais limite de integração programável |
Intervalos de amostragem | Termo derivativo: programável de 2048/fCLK até (2048*256)/fCLK em passos de 2048/fCLK Termo proporcional e integral: 2048/fCLK |
Tabela 5 - Especificações do LM629
Para se calcular uma trajetória a ser seguida pelo LM629 o seguinte procedimento deve ser utilizado:
Os valores codificados devem ser carregados no LM629 através da instrução LTRJ(Load trajectory).
Para se ter uma pequena idéia dos recursos do LM629, abaixo são indicados seus comandos com respectivas descrições:
Comando | Tipo | Descrição | Código(hexa) | Tamanho(bytes) | Nota |
---|---|---|---|---|---|
RESET | inicialização | Reseta o LM629 | 00 | 0 | 1 |
PORT8 | inicialização | Seleciona saída de 8 bits | 05 | 0 | 2 |
PORT12 | inicialização | Seleciona saída de 12 bits | 06 | 0 | 2 |
DFH | inicialização | Define Home | 02 | 0 | 1 |
SIP | Interrupção | Set Index Position | 03 | 0 | 1 |
LPEI | Interrupção | Interrupt on Error | 1B | 2 | 1 |
LPES | Interrupção | Stop on Error | 1A | 2 | 1 |
SBPA | Interrupção | Set Breakpoint, absolute | 20 | 4 | 1 |
SBPR | Interrupção | Set Breakpoint, relative | 21 | 4 | 1 |
MSKI | Interrupção | Mask Interrupts | 1C | 2 | 1 |
RSTI | Interrupção | Reset Interrupts | 1D | 2 | 1 |
LFIL | Filtro | Load Filter parameters | 1E | 2 a 10 | 1 |
UDF | Filtro | Update Filter | 04 | 0 | 1 |
LTRJ | Trajetória | Load Trajectory | 1F | 2 a 14 | 1 |
STT | Trajetória | Start Motion | 01 | 0 | 3 |
RDSTAT | Report | Read Status Byte | Nenhum | 1 | 1,4 |
RDSIGS | Report | Read Signals Register | 0C | 2 | 1 |
RDIP | Report | Read Index Position | 09 | 4 | 1 |
RDDP | Report | Read Desired Position | 08 | 4 | 1 |
RDRP | Report | Read Real Position | 0A | 4 | 1 |
RDDV | Report | Read Desired Velocity | 07 | 4 | 1 |
RDRV | Report | Read Real Velocity | 0B | 2 | 1 |
RDSUM | Report | Read Integration Sum | 0D | 2 | 1 |
Para o funcionamento do LM629 é necessário que uma sequência específica de instruções seja enviada a ele por meio dos pinos de I/O . O microcontrolador PIC gera todos os sinais de controle e dados para o LM629, programando-o para o funcionamento correto. A seguir é mostrado um fluxograma que descreve a sequência de comandos necessária para execução de uma trajetória simples.
Como o sinal de saída do controlador LM629 é apenas um sinal PWM de magnitude e sinal, para a incorporação do CI L298 como acionador foi necessário a inclusão de um chip inversor, o 74HCT04 para inverter o sinal de magnitude.
Para uma conexão firme e livre de ruídos foi utilizado no projeto o conector .100” x .100” Low Profile Header de 10 posições da marca 3M. Juntamente com os sinais de alimentação, saídas do encoder e saídas para acionamento do motor, foram disponibilizados neste conector alimentação extra e um resistor de forma a polarizar outros dispositivos sensores de velocidade tais como os shaft-encoders ópticos.
Para teste da placa microcontrolada foram elaborados, primeiramente, vários programas em linguagem C contendo funções específicas para execução de tarefas, tais como escrita/leitura do LM629, controle de dados pela serial, comandos do LM629. Este programas foram necessários para auxiliar no desenvolvimento de tarefas repetitivas e para auxiliar na programação.
Feito isto um pequeno programa de demonstração foi desenvolvido para exemplificar as funcionalidades exibidas pela placa. Para testar a comunicação serial foi utilizado o programa hiper terminal, disponível no pacote de acessórios do Windows 95, configurado no modo de comunicação 8N1 com velocidade de comunicação de 9600bps.
A placa envia uma sequência de mensagens através deste programa para o usuário do computador perguntando a ele, a trajetória a ser seguida com a especificação da posição, velocidade e aceleração. É também solicitado o ganho dos controladores. Depois da informações enviadas pelo usuário do computador a placa procede então com o controle dos motores e apresentado ao usuário se ele deseja alteração da trajetória. Durante a execução é apresentado uma sequência luminosa com os leds e o acionamento de um buzzer no conector de expansão.
Através deste programa consegue-se testar todas as principais funcionalidades da placa que funcionaram de maneira adequada. Os programas utilizados para executar o programa de demonstração são apresentados no anexo [5].
A placa microcontrolada projetada, pode ser utilizada em diversos modos de funcionamento para diversos tipos de aplicações.
O modo mais completo de funcionamento da placa pode ser obtido utilizando-se um dos dois modos de comunicação descritos anteriormente (serial e remoto) acoplado uma placa superior com o PIC e duas placas inferiores do LM 629. Com esta configuração é possível o controle via PIC ou via computador de até quatro motores CC independentemente. Para a placa operar nesta forma é necessário a configuração da placa para operar no modo superior-inferior-inferior, descrito no item 3.6 em configuração da placa.
As placas superior e inferior utilizadas conjuntamente é a forma mais comum de utilização da placa (modo superior + inferior). Neste modo pode-se usar ou não os módulos de comunicação disponíveis. Quando estes módulos não forem utilizados é possível a ligação de até nove dispositivos diferentes no conector de expansão sendo 7 deles I/O digitais e 2 deles entradas analógicas. Com esta configuração pode-se controlar até dois motores CC.
As placas superior e inferior podem ser utilizadas também independentemente. A placa superior pode ser utilizada com os módulos de comunicação disponíveis e com isso atuar em conjunto com um PC. Inúmeras aplicações podem ser feitas utilizando-se esta placa separadamente tais como controle de outros dispositivos, recebimento e envio de informações para sensores e atuadores, além de ser uma excelente forma de aplicação didática de programas escritos em assembly e C para estimulação do aprendizado.
A placa inferior pode ser utilizada isoladamente ligando-a através de um computador PC via porta paralela. Neste caso deve ser implementado uma interface de forma a fazer o correto Handshacking entre os dois sistemas. Esta aplicação pode ser útil por exemplo quando se deseja acionar e controlar motores diretamente via computador.
Para os diferentes modos de funcionamento da placa é necessário a configuração de 2 jumpers: o J9, que se encontra na placa superior e o J8 que se encontra na placa inferior.
A tabela abaixo ilustra melhor esta configuração.
Modos de funcionamento da placa | J8 (ligação dos pinos) | J9 (ligação dos pinos) |
Placa superior + placa inferior | 1-9, 2-11, 3-13, 4-15 | 1-2 |
Placa superior + placa inferior + placa inferior | 1-9, 3-11, 5-13, 7-15, 2-10, 4-12, 6-14, 8-16 | 1-2 |
Placa superior | - | 1-2 |
Placa inferior | 1-9, 2-11, 3-13, 4-15 ou 2-10, 4-12, 6-14, 8-16 | 1-2 |
Placa inferior + placa inferior | 1-9, 3-11, 5-13, 7-15, 2-10, 4-12, 6-14, 8-16 | 1-2 |
Placa superior no modo programação | - | 2-3 |
Tabela 2 – Configuração dos Jumpers da placa microcontrolada
As principais características elétricas da placa são descritas abaixo:
Tensão máxima de alimentação | 45V |
Tensão máxima de alimentação dos motores | 45V |
Consumo médio | 350mA |
Máxima tensão de programação | 14V |
Mínima tensão de alimentação | 5,5V |
Máxima capacidade de corrente dos pinos de I/O | 25mA |
Máxima corrente de pico p/ cada motor não repetitiva(t=100us) | 3A |
Máxima corrente de pico repetitiva(80% on – 20% off; Ton=10ms) | 2,5A |
Máxima corrente p/ cada motor em operação DC | 2A |
Máxima taxa de comunicação serial | 9600bps |
Clock do microcontrolador | 20Mhz |
Clock do Controlador LM629 | 5Mhz |
Apesar de várias vantagens serem citadas a favor da placa microcontrolada ela também possui várias limitações e desvantagens. Estas limitações ocorreram em grande parte devido ao tamanho da placa originalmente proposto e também das funcionalidades que deveria possuir que acabaram de uma forma ou de outra comprometendo parte do projeto.
A primeira limitação considerável da placa é quanto aos modos de comunicação. Como o espaço da placa era reduzido não foi possível a incorporação de um modo de comunicação fixo na placa (o modo serial seria mais adequado se houvesse espaço). Com isso optou-se por se fazer um conector multifunção que atendesse tanto para os ambos os tipos de comunicação quanto para a programação do microcontrolador. Desta forma apenas uma das funções pode ser feita de cada vez. Para expandir os pinos do conector de expansão, que pode ser utilizado por exemplo na integração com sensores, alguns pinos do conector multifunção foram alocados também para o conector multifunção. Desta forma também quando o conector multifunção estiver sendo utilizado, é necessário uma verificação para saber se todos os pinos estão sendo utilizados pelo módulo acoplado a ele para o caso de se querer utilizar alguns pinos do conector de expansão.
Uma outra limitação da placa é poder controlar apenas quatro motores de corrente contínua. Devido ao reduzido espaço na placa, optou-se por expandir esta configuração para controle de mais de 2 motores através de alocação de pinos do microcontrolador que são reservados também para o conector de expansão. Esta expansão poderia ter sido feita da maneira clássica com expansão de endereçamento utilizando por exemplo um decodificador de 3 para 8 linhas (74138). Utilizando este tipo de decodificador seria possível a utilização de até oito motores CC mas como isto implicaria em mais um CI na placa optou-se por não acrescenta-lo. Esta limitação ainda afeta o conector de expansão, cujos pinos reservados não poderão ser utilizados caso a placa seja utilizada para controlar 4 motores.
Um outro problema detectado somente quando a placa de circuito impresso já estava em sua fase final de produção foi uma alocação errada dos pinos do microcontrolador em relação aos pinos de entrada e saída e entrada analógica. Desconhecia-se o fato de que o microcontrolador não podia ter seus pinos de entrada analógica configurados desta forma individualmente. Existiam na verdade apenas 8 opções de configuração que comprometeram o funcionamento da placa, gerando algumas considerações nos modos de funcionamento da placa a saber:
Uma outra desvantagem da placa é o seu elevado consumo médio. Isto se deve principalmente a pouca preocupação com o consumo final da placa e também a opção de se utilizar apenas componentes DIP (ao invés de SMD’s) com a finalidade de facilitar o processo de montagem.
Um outro fator a considerar é que a placa microcontrolada só aciona motores CC e mesmo assim estes motores tem que possuir sensor de velocidade tais como encoders magnéticos, shaft-encoders, etc. Caso os motores CC não possuírem algum sensor de velocidade, o circuito controlador LM629 não funciona.
Lista de componentes da placa microcontrolada
Abaixo são listados os componentes utilizados no projeto da placa microcontrolada. Além dos componentes é listado a quantidade e o preço de cada um deles. O custo final da placa pode variar dependendo do fornecedor de componentes e da quantidade de placas de circuito impresso a serem feitas.
Muitos destes componentes são mais baratos do que o quando foram comprados em NOV/99. Estima-se que hoje o custo da placa com todos os seus componentes seja em torno de uns R$250,00.
O projeto da placa de circuito impresso certamente foi o que deu mais trabalho. Três fatores influenciaram neste fato. O primeiro deles diz respeito a demora na definição do projeto do circuito. Para se evitar problemas futuros, houve grande cuidado em projetar a placa para, por exemplo, evitar mal contatos. Com isso demorou-se grande tempo para se definir qual tipo de conector a ser utilizado na fonte e nos motores. O driver de acionamento demorou também para ser definido porque o L298 não era encontrado facilmente e pelo fato de ele ser um componente caro.
O segundo problema foi a falta de prática na utilização do programa para geração do desenho do circuito e da placa de circuito impresso que foi o Protel versão 98. Já familiarizado com o Tango, outro software com o mesmo propósito, foi difícil a utilização da maioria dos recursos existentes no Protel, mas como ele é um software bastante utilizado, houve uma dedicação máxima para aprender a utilização deste programa.
O terceiro fator que dificultou o trabalho foi a pouca prática no que diz respeito a dimensões utilizadas para furação de pinos/componentes, trilhas e vias e também disposição de layers e componentes. Consegui-se ter este trabalho facilitado através de contato com pessoas relacionadas que trabalhavam frequentemente com isso e que ajudaram a superar estas dificuldades.
Ao término do projeto do circuito, foi necessário comprar os componentes para montagem e teste. Uma grande dificuldade para se executar este projeto talvez seja o processo de compra dos componentes. Como a maioria dos componentes são de nova tecnologia, dificilmente são encontrados no Brasil ou quando encontrados, os preços são muito elevados. Desta forma decidiu-se importar os componentes. A maioria foi adquirida na empresa americana Digikey e a compra foi feita pela Internet. Outros componentes tais como o acionador L298 e os diodos de chaveamento rápido (SF34 da Rectron Semiconductor) foram adquiridos na Farnell em São Paulo.
Outra dificuldade encontrada foi a programação do LM629. Este chip, como descrito anteriormente, possui vários comandos e funções e para fazê-lo funcionar corretamente. Um grande esforço foi exigido na descoberta de alguns erros nos manuais da National. Um deles foi relacionado com a parada do motor. Para parar o motor o manual da National citava que certo bit na instrução LTRJ teria de ser setado, quando na verdade verificou-se que a parada se dava quando este bit era resetado. Muito tempo foi gasto tentando entender o funcionamento deste chip que apesar de ser muito eficiente possui uma documentação difícil para se entender e estudar.
[Nota do Autor] Com a revisão do circuito apresentado no anexo [6], o comentário acima sobre os erros no manual torna-se inválido.
O projeto proposto atendeu às expectativas e cumpriu com o seu objetivo que era o desenvolvimento da placa propriamente dita.
Percebi que neste tipo de projeto é necessário um conhecimento detalhado (eletrônico, mecânico) de todos os componentes a serem utilizados para evitar erros pequenos mas comprometedores como foi o caso da troca dos pinos do microcontrolador citado anteriormente.
Com este projeto reconheço que fui capaz de atingir um nível de aprendizado muito elevado em relação ao projeto e desenvolvimento de circuitos eletrônicos dedicados e microcontrolados como este.
Embora a placa tenha funcionamento limitado, em certas situações, espera-se que o desenvolvimento deste trabalho venha motivar outros alunos a desenvolverem projetos relacionados a esta placa ou mesmo utilizarem-na em seus projetos.
Se o projeto pudesse ser refeito (sem restrições como tempo e custo de projeto), certamente faria-se o projeto em grande parte de maneira diferente. Para fazer o que o aluno propôs hoje em dia existem tecnologias alternativas que tornariam o processamento e o desempenho melhores que o apresentado. De inicio, o projeto poderia ser reformulado para a utilização de dispositivos mais poderosos tais como os Processadores Digitais de Sinais, os DSP’s. Outras mudanças seguem no tipo de memória serial a ser utilizada que poderiam ser I2C ou SPI, com capacidade e velocidade maiores do que a utilizada com tecnologia Microwire.
Depois do desenvolvimento da placa existe ainda muito trabalho a ser feito. Proponho realizar a maior parte dele mas certamente com o projeto devidamente documentado estas serão tarefas para novos alunos para que todos possam participar e aprender com este projeto.
Como parte da divulgação do projeto a serem feitas pelo aluno pretende-se:
Como parte dos planos futuros, sugerimos as seguintes tarefas:
Enfim, acredito que muitas tarefas ainda podem ser feitas com esta placa.
[1] JONES, Joseph L. , Flynn, Anita M.- Mobile Robots - Inspiration to Implementation. A K Peters Wellesley, Massachussets - 1993
[2] PIC16C7X Data Sheet – Microchip Technology Inc. – 1997
[3] LM628/LM629 Precision Motion Controller – National Semiconductor – February 1995
[4] ROY, Santanu – Interfacing the HPC and LM629 for Motion Control – National Semiconductor – Application Note 868 – January 1993
[5] LM628/629 User Guide – National Semiconductor – Application Note 706 – October 1993
[6] HUNT, Steven – LM628 Programming Guide – National Semiconductor – Application Note 693 – January 1999
[7] LM2940/LM2940C 1A Low Dropout Regulator – National Semiconductor – June 1999
[8] L298 Dual Full-Bridge Driver – SGS-Thomson – October 1998
[9] BiM-UHF Data Sheet – Radiometrix Ltd – october 1997
[10] Micro-Robot World Cup Soccer Tournament Proceedings 1996-1997 KAIST, Taejon, Korea
[11] CARVALHO, Marco Antonio S., CINTRA, Leandro Pinheiro – Técnicas de Projeto de Circuitos e Placas de Circuito Impresso na Redução de EMI – Seminário da matéria Compatibilidade Eletromagnética – Junho 2000
[12] Non-Volatile Memory Products Data Book – Microchip Technology Inc. – 1998 –
[13] MARTIN, Fred – The Handy Board Project http://el.www.media.mit.edu/groups/el/projects/handy-board/index.html