BOC BOARD - Placa Microcontrolada para Aplicações Robóticas e Sistemas Controlados

Bolsista: Marco Antonio Santuci Carvalho (PIBIC/CNPq) #9514376
boc@dcc.ufmg.br
Orientador: Mário Fernando Montenegro Campos (DCC-UFMG)
mario@dcc.ufmg.br

Resumo

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.

Introdução

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.

Objetivo

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.

Descrição Geral do Projeto

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.

Escolha dos principais circuitos

Escolha do microcontrolador

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:

  • CPU RISC de alta performance com apenas 35 instruções;
  • Clock de 20Mhz com ciclo de instrução de 200ns;
  • 4K x 14 de memória de programa EPROM e 192 x 8 de memória de dados RAM;
  • 33 pinos de I/O;
  • 2 módulos CCP (Capture, Compare, PWM);
  • 3 módulos de timer (temporizadores/contadores);
  • 8 canais de A/D de 8 bits;
  • Comunicação serial via interfaces SPI/I2C, USART;
  • 12 fontes de interrupções.

Escolha do circuito de controle e acionamento dos motores

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:

  • Registradores de posição, velocidade e aceleração de 32 bits;
  • Filtro PID digital programável com coeficientes de 16 bis;
  • Intervalo de amostragem derivativa programável;
  • Gerador de comportamento de velocidade trapezoidal interno;
  • Velocidade, posição desejada e parâmetros do filtro podem ser mudados durante o movimento;
  • Modos de operação em velocidade e posição;
  • Interface com encoder incremental em quadratura com entrada para pulso de índice (Index Pulse).

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]

Circuito de comunicação

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.

Definição de outros circuitos

Para complementação do projeto, outros circuitos foram projetados e implementados tais como:

  • Circuito de Reset – consistindo de uma chave tipo push-bottom, resistor, diodo e capacitor de forma a fazer o reset manual do microcontrolador.
  • Circuito sinalizador – constituído de três leds de cores diferentes (vermelho, verde, amarelo) para sinalizar estados do circuito tais como dados recebidos, bateria ok, etc.
  • Circuito oscilador – composto de um CI da ECS Inc International, oscilador duplo, capaz de gerar clocks para o microcontrolador PIC(20MHz) e circuito controlador do motor, LM629(5MHz).
  • Memória Serial – Memória tipo Flash EEPROM capaz de armazenar dados temporários, mesmo com o circuito desligado. Para este propósito foi usado a memória Microwire (3 pinos de controle) 93LC66 da Microchip. Outras memórias com capacidade menor e mesma tecnologia podem ser utilizadas(ex. 93LC56). Os dados a serem armazenados são principalmente os ganhos (Kp, Ki e Kd) dos controladores e as trajetórias pré programadas.
  • Circuito de alimentação – Composto de um circuito regulador 5V, LM2940 da National Semiconductors que possui baixas perdas, ou funcionamento a partir de pequena diferença entre tensão de entrada e tensão de saída .

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.

Desenvolvimento das placas de circuito impresso

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:

  • Microcontrolador, memória, circuito de reset, osciladores, suporte para comunicação, leds, conector de expansão – colocados na placa superior
  • Circuito de controle e acionamento dos motores (correntes maiores) – colocados na placa inferior

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:

Figura 2 – Placa Superior

Figura 3 – Placa inferior

Descrição do funcionamento do circuito

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.

Figura 5 – Pinagem do LM629

Descrição dos pinos:

  • Pino 1 – Index input (IN) à recebe do encoder do motor o pulso opcional de índice. Ativo em nível lógico baixo.
  • Pinos 2 e 3 – Sinais de entrada do encoder (A,B) à recebem do encoder o sinal em quadratura de duas fases fornecidas por um encoder incremental.
  • Pinos 4 a 11 – Porta de I/O ( D0 a D7) à porta de dados bi-direcional que se conecta ao microcontrolador. Usada para escrever comandos e dados no LM629 e para ler dados e o byte de status do LM629.
  • Pino 12 – entrada chip select (CS) à usado para selecionar o LM629 para operações de escrita e leitura. Ativo em nível lógico baixo.
  • Pino 13 – entrada de leitura (RD à usado para ler status e dados. Ativo em nível lógico baixo.
  • Pino 15 – entrada de escrita (WR) à usado para escrever comandos e dados. Ativo em nível lógico baixo.
  • Pino 16 – entrada de seleção de porto (PS) à usado para selecionar porta de dados ou comandos. Seleciona porta de comandos quando em nível lógico baixo e porta de dados quando em nível lógico alto. Os seguintes modos são controlados pelo pino 16:
    • Comandos são escritos na porta de comandos quando o pino 16 está em nível lógico baixo;
    • O byte de status é lido da porta de comandos quando o pino 16 está em nível lógico baixo;
    • Dados são escritos e lidos via porta de dados quando o pino 16 está em nível lógico alto.
  • Pino 17 – Saída de interrupção (HI) à este pino quando ativo em nível lógico alto alerta o microcontrolador que uma condição de interrupção ocorreu.
  • Pino 18 – Saída de sinal (SIGN) à fornece a direção de rotação do motor.
  • Pino 19 – Magnitude de saída (MAG) à fornece a magnitude do sinal de PWM para o motor.
  • Pinos 20 a 25 – Não utilizados (NU).
  • Pino 26 – Entrada de clock (CLK) à recebe o clock do sistema.
  • Pino 27 – Entrada de reset (RST)à reseta o LM629. Ativo em nível lógico baixo.
  • Pino 28 – Alimentação à tensão de alimentação (5V).

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:

  • Posição:
    • P = posição desejada (unidade = pulsos do encoder)
    • R = No de linhas do encoder(no caso utilizado, 16)*4(resolução do sistema, sinais em quadratura)
    • P = R* No desejado de revoluções
    • P(codificado) = valor de P em hexa completados com zeros a direita até 32 bits
  • Velocidade:
    • V = velocidade desejada (unidade = (pulsos do encoder)/segundo)
    • T = período de amostragem = 2048/fCLK
    • C = fator de conversão = 1 min/60s
    • V = R*T*C*velocidade desejada em RPM
    • Vescalado = V*65536
    • Varredondado = round(Vescalado)
    • Vcodificado = valor em hexa de Varredondado
  • Aceleração
    • A = aceleração desejada (unidade = pulsos/segundo/segundo)
    • A = R*T*T*aceleracão desejada(ver/Seg2)
    • Aescalado = A*65536
    • Aarredondado = round(Aescalado)
    • Acodificado = valor em hexa de Aarredondado

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
  • Nota 1: Comandos podem ser executados “On the fly” durante o movimento.
  • Nota 2: Comandos não aplicados durante a execução do movimento.
  • Nota 3: Comandos podem ser executados durante o movimento se a aceleração não for mudada.
  • Nota 4: Comando não necessita de código porque a leitura do status byte na porta de comando é totalmente suportada por hardware.

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.

Teste da placa microcontrolada

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].

Modos de funcionamento da placa

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.

Configuração da placa

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

Características Elétricas da Placa

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

Limitações e desvantagens da placa microcontrolada

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:

  • Quando a placa for utilizada apenas com dois motores, para se ter o funcionamento de entradas analógicas na placa é necessário colocar o jumper J8 na posição 6-9 ao invés da posição 1-9. Com isso o circuito de medição de bateria pode ser utilizado e o pino 2 (res1) do conector de expansão pode ser utilizado.
  • Quando a placa for utilizada para se controlar quatro motores, perde-se as entradas analógicas e deverá ser configurada de acordo com o modo de funcionamento com uma placa superior e duas superiores como descrito anteriormente.

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.

Dificuldades encontradas

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.

Conclusões

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.

Planejamento futuro

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:

  • Divulgar em Revista de eletrônica especializada, o conteúdo principal do projeto desenvolvido, de forma a que todos tenham acesso ao projeto facilmente em nível nacional.
    [Nota do autor] O projeto da Placa Boc Board foi publicado na Revista saber eletrônica no 336 de Janeiro de 2001 sob o título “Placa Microcontrolada para Robôs Móveis”. A Referência para o artigo da revista pode ser encontrada aqui.

Como parte dos planos futuros, sugerimos as seguintes tarefas:

  • Teste da placa com um módulo de comunicação RF;
    [Nota do autor] Com a retomada do projeto Boc Board em 2002 por alunos do Verlab, a Boc Board foi testada com tranceiver da radiometrix e funcionou perfeitamente.
  • Teste da placa com duas placas inferiores mais uma placa superior e duas placas inferiores mais computador;
  • Implementação de um programa no computador (host) para controle da placa de maneira mais fácil e interativa;
  • Utilização da placa no projeto MIROSOT da UFMG;
    [Nota do autor] Em 2002, alunos do Verlab deram continuidade ao projeto MIROSOT através da utilização da Boc Board como placa base para um robô móvel
  • Implementação de um módulo de programação e upgrade dos microcontroladores para a nova família 16F87X;
    [Nota do autor] A Boc Board foi testada em 2002 com o microcontrolador 16F877 e funcionou perfeitamente.
  • Testes com um sistema operacional de tempo real, tipo o Micro C OS para aumentar o desempenho computacional da placa microcontrolada.

Enfim, acredito que muitas tarefas ainda podem ser feitas com esta placa.

Referências

[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

Anexos

Anexo 1 – Relatório sobre os times da 4a Copa Mundial de Futebol de Robôs

Anexo 2 – Microcontroladores utilizados nos times de Futebol de Robôs

Anexo 3 – Esquemático do circuito projetado

  1. Placa Superior PDF
  2. Placa Inferior PDF
  3. Placa de Comunicação Serial PDF

Anexo 4 – Placas de Circuito impresso do circuito

  1. Placa Superior PDF
  2. Placa Inferior PDF
  3. Placa de Comunicação Serial PDF

Anexo 5 – Programas utilizados no teste da placa

Anexo 6 - Modificação do circuito da placa Inferior da Boc Board

projetos/bocboard/index.txt · Última modificação: 2007/05/14 16:51 (edição externa)