controlo de motores dc para um robô móvel

71
EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET -I- Departamento de Engenharia Electrotécnica Sistema de Controlo de Potência de Motores DC Trabalho Realizado por : Júlio Guerreiro N.º 1674 Luís Oliveira N.º 1654 Trabalho Final de Curso do 1º Ciclo Em Engenharia Electrónica e Computadores Orientador: Prof. António Abreu Outubro/2003

Upload: votruc

Post on 07-Jan-2017

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-I-

Departamento de Engenharia Electrotécnica

Sistema de Controlo de Potência de Motores DC Trabalho Realizado por : Júlio Guerreiro N.º 1674 Luís Oliveira N.º 1654

Trabalho Final de Curso do 1º Ciclo Em Engenharia Electrónica e Computadores

Orientador: Prof. António Abreu

Outubro/2003

Page 2: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-II-

Agradecimentos A equipa que projectou e construiu este robot agradece ao Prof. António Abreu pela

orientação no desenvolvimento do projecto, assim como pelos seus ensinamentos que

estiveram na base de muitas das opções feitas na construção do “RoboTank”.

Gostaríamos ainda agradecer ao Departamento de Electrónica da Escola Superior de

Tecnologia de Setúbal pelo apoio em componentes, equipamentos de laboratório,

oficinas e espaço, que tornaram possível este trabalho, e a todos aqueles que

contribuíram para o sucesso deste projecto, quer através de preciosas sugestões quer de

apoio moral e/ou material.

Em particular agradecemos aos nossos colegas Rui Pimenta e Daniel Santos pela

ajuda prestada na obtenção de determinados componentes.

Page 3: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-III-

Curso :Engenharia de Electrónica e Computadores

Título do projecto : Sistema de controlo de potência de motores DC

Autores :

Júlio Guerreiro N.º 1674

Luís Oliveira N.º 1654

Orientador:

Prof. António Abreu

Projecto concluído em 24 de Outubro de 2003

Page 4: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-IV-

Resumo:

Neste relatório explica-se o projecto de um controlador de um motor CC para

aplicação a um robot móvel terrestre, bem como outros aspectos relacionados com este

tipo de veículo. Mais concretamente, descreve-se como é que todo o sistema foi

projectado, desde a escolha dos diversos componentes, até à forma como se interligam

todas as partes de maneira a se obter uma melhor estabilidade, rigidez e autonomia,

baseado numa arquitectura modular.

Palavras-chave: Microcontroladores, Motores DC, PWM, módulos RF, comunicação

série.

Page 5: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-V-

Title: Power control of DC motors.

Abstract:

We explain, in this report, the design of a DC motor controller to be used on a

terrestrial mobile robot, as well as other aspects related to this kind of vehicle. Actually

we describe how the system was designed, starting from the selection of the parts to the

way they interconnect to obtain better estability, harshness and autonomy, based on a

modular architecture.

KEY-WORDS: Microcontroler, DC motors, PWM, RF Modules, serial communication

Page 6: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-VI-

Índice Agradecimentos ............................................................................................................. II

Índice .............................................................................................................................VI

Lista de Figuras ..............................................................................................................X

Lista de Tabelas .......................................................................................................... XII

Lista de Acrónimos e Abreviaturas .........................................................................XIII

1. Introdução ........................................................................................................... 1

2. Corpo do Relatório......................................................................................... 2

2.1. Estrutura Metálica................................................................................................ 2

2.2. Esquema de Blocos................................................................................................ 3

2.3. Motores.................................................................................................................. 4

3. Interface de Comunicação......................................................................... 5

3.1. Introdução ............................................................................................................. 5

3.2. Algumas Noções Teóricas ..................................................................................... 5

3.3. Comunicação Entre Dois Dispositivos.................................................................. 5

3.4. Descrição dos Pinos e Sinais Utilizados ............................................................... 6

3.5. Pinos de Dados Utilizados .................................................................................... 7

3.6. Estados dos Sinais ................................................................................................. 7

3.7. Formato dos Dados Série ...................................................................................... 8

3.8. Comunicação Síncrona e Assíncrona.................................................................... 8

3.9. Transmissão dos Bits – Baud Rate ........................................................................ 8

3.10. Conversores de Nível RS-232 ............................................................................ 10

3.11. Desenvolvimento................................................................................................ 10

3.12. Testes ................................................................................................................. 11

3.13. Conclusões......................................................................................................... 11

4. MicroControlador ........................................................................................ 12

4.1. Introdução ........................................................................................................... 12

4.2. Algumas Noções Teóricas ................................................................................... 12

Page 7: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-VII-

4.2.1. Microcontrolador ............................................................................................. 12

4.2.2. PWM ................................................................................................................. 13

4.3. Desenvolvimento.................................................................................................. 15

4.3.1. Algoritmo simplificado do programa do microcontrolador............................. 15

4.3.2. Funcionamento do porto série e leitura de comandos ..................................... 16

4.3.3. Loop de espera de novo comando/ Detector de erro de comunicação ............ 17

4.3.4. Funcionamento do módulo de PWM ................................................................ 18

4.3.5. Funcionamento dos leitores de tacómetros ...................................................... 18

4.3.6. Funcionamento do descodificador de comando............................................... 20

4.3.7. Rotinas para acções sobre os motores ............................................................. 21

4.3.8. Rotinas para informações sobre os motores .................................................... 23

4.3.9. Rotina que controla o envio pela porta série ................................................... 24

4.3.10. Código completo do microcontrolador .......................................................... 25

4.4. Testes ................................................................................................................... 25

4.5. Conclusões........................................................................................................... 25

5. Módulos de Potência (drivers) para Motores DC .............. 26

5.1. Drivers ................................................................................................................. 26

5.1. Introdução ........................................................................................................... 26

5.2. Algumas Noções Teóricas ................................................................................... 26

5.3. Desenvolvimento.................................................................................................. 26

5.4. Testes ................................................................................................................... 28

5.5. Conclusões........................................................................................................... 29

6. Ponte em H ................................................................................................. 30

6.1. Introdução ........................................................................................................... 30

6.2. Algumas Noções Teóricas ................................................................................... 30

6.3. Desenvolvimento.................................................................................................. 32

6.4. Descrição do Circuito (figura 6.4) ...................................................................... 32

6.5. Melhorias Introduzidas ....................................................................................... 33

6.5.1. Protecção Contra Sobrecargas ........................................................................ 33

6.6. Placas PCB.......................................................................................................... 35

6.7. Modo de Utilização ............................................................................................. 35

6.8. Testes ................................................................................................................... 36

6.9. Conclusões........................................................................................................... 36

Page 8: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-VIII-

7. Realimentação .......................................................................................... 37

7.1. Introdução ........................................................................................................... 37

7.2. Algumas Noções teóricas .................................................................................... 37

7.3. Desenvolvimento.................................................................................................. 38

7.4. Testes ................................................................................................................... 39

7.5. Conclusões........................................................................................................... 39

8. Alimentação ............................................................................................... 40

8.1. Introdução ........................................................................................................... 40

8.2. Algumas Noções Teóricas .................................................................................. 40

8.3. Desenvolvimento.................................................................................................. 42

8.4. Testes ................................................................................................................... 43

8.5. Conclusões........................................................................................................... 43

9. Carregamento de Baterias............................................................... 44

10. Controlo RF ............................................................................................... 45

10.1. Introdução ......................................................................................................... 45

10.2. Algumas Noções Teóricas ................................................................................ 45

10.3. Modulação por Comutação de Amplitude (ASK) .............................................. 46

10.4. Desenvolvimento................................................................................................ 48

10.5. Testes ................................................................................................................. 48

10.6. Conclusões......................................................................................................... 48

11. Software........................................................................................................ 49

11.1. Introdução ......................................................................................................... 49

11.2. Algumas Noções Teóricas ................................................................................ 49

11.3. Desenvolvimento................................................................................................ 49

11.3.1. Sistema de Utilizadores .................................................................................. 49

11.3.2. Detecção de falhas de comunicação .............................................................. 52

11.3.3. Comando......................................................................................................... 53

11.3.4. Classes Desenvolvidas.................................................................................... 54

12. Conclusões................................................................................................... 56

Referências Bibliográficas ............................................................................ 58

Page 9: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-IX-

Anexos........................................................................................................................ 58

Page 10: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-X-

Lista de Figuras Figura 2.1 – Perspectiva geral da estrutura metálica (vista a partir da frente do veículo) Figura 2.2 – Diagrama de blocos do sistema Figura 3.1 - Ligação série entre 1 DTE (computador) e 1 DCE (dispositivo), usando os

pinos 2 e 3, para transmissão de dados (TD) e recepção dos mesmos (RD). Figura 3.2 - Numeração dos pinos de um conector macho DB-9 (9 pinos). Figura 3.3 - Definição dos estados dos sinais de dados e sinais de controlo. Figura 3.4 - Formato dos dados série. Figura 3.5 - Descrição dos pinos do driver/receiver RS-232: MAX-232. Figura 3.6 - Esquemático do módulo de comunicação Figura 4.1 - Sinais PWM com vários duty cycles Figura 5.1 – Esquema de ligações para o controlo bidireccional de um motor DC Figura 5.2 – Circuito resultante da interligação do circuito de comando e o circuito de

potência.

Figura 5.3 – Esquema interno do driver L298 Figura 6.1 – Configuração de ponte em H Figura 6.2 – Input 2_1 e Input 2_2 com 24 Volts e Input 1_1 e Input 1_2 com 0Volts. Figura 6.3 – Input 1_1 e Input 1_2 com 24 Volts e Input 2_1 e Input 2_2 com 0 Volts. Figura 6.4 – Esquema eléctrico Figura 6.5 – Esquema simplificado Figura 6.6 – Ilustração das placas PCB Figura 7.1 – Tipo de sinais à saída do tacómetro Figura 7.2 – Tipos de codificadores ópticos Figura 7.3 – Circuito de ligações dos tacómetros ao microcontrolador Figura 8.2 – Diagrama de baterias

Page 11: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-XI-

Figura 8.3 – Esquema de Ligações das baterias Figura 10.1 – Receptor AM RF RECEIVERS AM-HRR6-XXX Figura 10.2 – Emissor AM Hybrid Transmitter AM-RTn-XXX Figura 10.3 - Sinal ASK. Figura 10.4 – Espectro de amplitudes de um sinal ASK. Figura 10.5 - Circuito de ligações do módulo RF

Page 12: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-XII-

Lista de Tabelas Tabela 3.1 – Pinos da porta série e sinais correspondentes. Tabela 5.1 – Quadro resumo para a rotação dos motores Tabela 7.1 – Quadro resumo dos tacómetros Tabela 8.1 – Tipo de baterias

Page 13: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-XIII-

Lista de Acrónimos e Abreviaturas PWM – Pulse Width Modulated DTE – Data Terminal Equipment DCE – Data Communication Equipment RS-232 – Recommended Standard number 232 TD – Transmitted Data RD – Received Data RTS – Request To Send CTS – Clear To Send DTR – Data Terminal Ready DSR – Data Set Ready CD – Carrier Detect RI – Ring Indicator LSB – Least Significant Bit MSB – Most Significant Bit LCD – Liquid Cristal Display ASK – Amplitude Shift Keying

Page 14: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-1-

1. Introdução O Projecto RoboTank é um projecto de mecatrónica, pelo que abrange componentes

de hardware (mecânica e electrónica) e de software (programação), realizado no âmbito

da cadeira de Projecto I do Curso de Engenharia em Electrónica e Computadores da

ESTS do Instituto Politécnico de Setúbal. O principal objectivo é realizar o controlo

independente de 2 motores de Corrente Contínua, inseridos num veículo capaz de se

deslocar em qualquer direcção. O controlo dos motores é realizado através de PWM

com realimentação através de encoders.

Convém deste já realçar o facto de que não tivemos qualquer tipo de influência na

escolha de alguns dos materiais empregues na estrutura do veículo, nomeadamente qual

o tipo de material empregue no chassi, quais as dimensões, os tipos de rodas, que tipos

de motores a usar e tipo de baterias.

Basicamente o projecto é constituído por 9 partes: 1 – Estrutura metálica

2 – Motores

3 – Interface de comunicação

4 – Microcontroladores

5 – Drivers

6 – Ponte em H

7 – Realimentação

8 – Alimentação

9 – Software de Controlo

Estas partes representam os tópicos que se abordam no relatório.

Page 15: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-2-

2. Corpo do Relatório Segue-se uma explicação mais detalhada dos blocos que constituem o veículo.

2.1. Estrutura Metálica Como o próprio nome indica, a estrutura é em metal e foi construída por colegas de

anos anteriores, também no âmbito do projecto final de curso. Não fazendo parte do

nosso projecto, damos a conhecer um pouco da estrutura.

A estrutura é constituída por uma base em metal, revestida nas partes laterais por uma

protecção em borracha, como medida de segurança tomada para amortecer eventuais

choques do veículo. Contém ainda duas rodas fixas ligadas a dois motores por meio de

cintas de borracha, assim como duas rodas “loucas”. Existe ainda um contador de

rotações cujo nome técnico é tacómetro, que permite calcular a que velocidade se move

o veículo.

A figura 2.1 representa a configuração da base do RoboTank que assume uma forma

rectangular.

Figura 2.1 – Perspectiva geral da estrutura metálica (vista a partir da frente do veículo)

Page 16: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-3-

As dimensões do veículo são 160×130×35 cm, o que faz com que as manobras de

contorno de obstáculos e prevenção de colisões se tornam complicadas, exigindo uma

maior carga computacional.

2.2. Esquema de Blocos O sistema terá uma constituição do tipo modular, conforme a figura 2.2, em que cada

módulo terá ligação a uma unidade central. Toda a informação relevante será

visualizada num PC.

O diagrama de blocos da figura 2.2 pretende dar uma perspectiva funcional geral do

sistema, agregando todos os blocos.

Figura 2.2 – Diagrama de blocos do sistema De uma forma muito superficial, o funcionamento do sistema é o seguinte:

O PC envia um comando para o microcontrolador e este reage de acordo com o

comando.

Os comandos tanto podem ser de acção (acelerar, travar, para etc.) como de

informação (Velocidade pretendida, PWM gerado, valor dos tacómetros etc.).

Os comando de acção são basicamente comandos de escrita, que alteram o valor do

PWM gerado, enquanto que os comando de informação são meramente de leitura, que

retornam valores para o PC.

Em paralelo existe um processo de contagem de impulsos gerados pelos tacómetros,

que permitem saber a velocidade a que o veículo se movimenta.

Page 17: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-4-

2.3. Motores

Os motores que nos foram previamente fornecidos, são motores da Maxon de CC e

funcionam como uma tensão de alimentação de 24 V.

Não nos é possível especificar mais características desde dispositivo devido ao facto de

não termos acesso ao datasheet, nem mesmo através da internet uma vez que se trata de

um modelo antigo.

Page 18: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-5-

3. Interface de Comunicação

3.1. Introdução Esta interface permite a comunicação entre uma unidade de comando (PC), que faz o

controlo do RoboTank, e o próprio veículo.

O protocolo escolhido para a implementação deste módulo de comunicação foi o RS-

232, devido à facilidade de implementação e às suas características apropriadas para

este tipo de aplicações, como por exemplo a utilização de apenas 3 fios.

A necessidade da utilização deste módulo vem do facto da incompatibilidade de

níveis de tensão existentes entre a porta série de um PC e a porta série de um micro

controlador.

3.2. Algumas Noções Teóricas A comunicação série é o protocolo de baixo nível mais comum usado para

comunicação entre dois ou mais dispositivos. Este protocolo é standard em todos os

computadores pessoais, cuja maioria inclui duas portas série RS-232.

O conceito de comunicação série é simples. Como o próprio nome sugere, a porta

série envia e recebe bytes de informação, um bit de cada vez.

3.3. Comunicação Entre Dois Dispositivos No standard RS-232, os dois dispositivos ligados com cabo série são designados por

DTE (Data Terminal Equipment) e DCE (Data Communication Equipment). Esta

terminologia reflecte-se na origem da norma RS-232 como o standard para

comunicação entre um computador e um outro dispositivo, no nosso caso o

microcontrolador. O computador é considerado um DTE, enquanto que o dispositivo

periférico é assumido como DCE.

Page 19: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-6-

Basicamente a ligação entre um DTE e um DCE é feita como mostra a figura 3.1

Figura 3.1 - Ligação série entre 1 DTE (computador) e 1 DCE (dispositivo), usando os

pinos 2 e 3, para transmissão de dados (TD) e recepção dos mesmos (RD).

3.4. Descrição dos Pinos e Sinais Utilizados A numeração dos pinos de um conector macho de 9 pinos é ilustrada na figura 3.2.

Figura 3.2 - Numeração dos pinos de um conector macho DB-9 (9 pinos).

Os pinos e respectivos sinais associados ao conector de 9 pinos estão contidos na

tabela 3.1.

Tabela 3.1 - Pinos da porta série e sinais correspondentes.

Page 20: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-7-

3.5. Pinos de Dados Utilizados A maioria dos dispositivos com porta série suportam comunicação full-duplex, ou

seja, podem receber e transmitir dados simultaneamente. Assim, pinos separados são

usados para transmitir e receber. Para estes dispositivos, os pinos TD (Transmitted

Data), RD (Received Data), e GND (Ground) são usados. No entanto, alguns tipos de

dispositivos com porta série suportam somente comunicação num sentido (simplex).

Para estes equipamentos, só os pinos TD e GND são usados. Neste projecto foi utilizada

uma comunicação série full-duplex.

O pino TD transporta dados transmitidos do DTE para o DCE. O pino RD transporta

dados recebidos do DTE provenientes do DCE e o pino GND é a massa.

Os outros pinos não são utilizados neste projecto, mas deve ficar a ideia de que

existem pinos de controlo (RTS e CTS, DTR e DSR, CD, e RI) que permitem sinalizar a

presença de dispositivos ligados e controlar o fluxo de dados.

3.6. Estados dos Sinais Os sinais podem estar num estado activo ou estado inactivo. Para sinais de dados, o

estado on (activo) corresponde ao ‘1’ lógico, representado pela gama de valores de

tensão dos sinais de [-3 V , -15 V], enquanto que o estado off (inactivo, ou ‘0’ lógico)

ocorre para tensões no intervalo [+3 V , +15 V].

Para sinais de controlo, o estado on (activo) corresponde ao ‘0’ lógico, ocorrendo para

valores de tensão positivos [+3 V , +15 V]. O estado off (inactivo, ou ‘1’ lógico) ocorre

para tensões na gama [-3 V , -15 V].

A região de tensões entre -3 V e +3 V é uma região de transição: um sinal com uma

tensão pertencente a este intervalo não é interpretado, ou seja, o estado do sinal não é

definido.

Os estados on e off dos sinais de dados e de controlo mostram-se na figura 3.3.

Page 21: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-8-

Figura 3.3 - Definição dos estados dos sinais de dados e sinais de controlo.

3.7. Formato dos Dados Série O formato dos dados série utilizados neste projecto incluem 1 bit de início (start bit),

8 bits de dados e 1 bit de fim (stop bit). A figura 3.4 ilustra o formato dos dados série.

Figura 3.4 - Formato dos dados série.

3.8. Comunicação Síncrona e Assíncrona O standard RS-232 suporta 2 tipos de protocolos de comunicação: comunicação

síncrona e comunicação assíncrona.

3.9. Transmissão dos Bits – Baud Rate Por definição, os dados série são transmitidos 1 bit de cada vez. A ordem pela qual

cada bit é enviado é feita de acordo com as considerações seguintes:

1. O start bit é transmitido com o valor 0;

2. Os bits de dados são transmitidos. O primeiro bit de dado corresponde ao least

significant bit (LSB), enquanto que o último bit de dados corresponde ao most

significant bit (MSB);

3. O bit de paridade (se definido) é transmitido;

Page 22: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-9-

4. Um ou vários stop bits são transmitidos, com um valor 1. Baud Rate O número de bits transferidos por segundo é designado baud rate. Os bits transferidos

incluem, como já visto, o start bit, os bits de dados, o bit de paridade (se definido), e

o(s) stop bits. Por exemplo, 300 baud corresponde a 300 bits/segundo. Quando é

referido um ciclo de relógio, fala-se da baud rate. Baud rates comuns para linhas

telefónicas são 14400, 28800, e 33600. Start Bit e Stop Bits Como a comunicação série utilizada é assíncrona, significa que o byte transmitido

deve ser identificado pelo start bit e stop bits. O start bit indica quando é que o byte de

dado está para começar; o(s) stop bit(s) indica(m) quando o byte foi transferido. O

processo de identificação de bytes com o formato série obedece aos seguintes passos:

1. Quando um pino da porta série está idle (não transmitindo dados), então está num

estado on;

2. Quando os dados estão prestes a ser transmitidos, o pino da porta série alterna para

um estado off devido ao start bit;

3. O pino da porta série alterna novamente para o estado on devido ao(s) stop bit(s),

indicando o fim do byte transmitido.

O(s) stop bit(s) são usados então para sinalizar o fim de um pacote de dados. Valores

típicos correspondem a 1, 1.5, e 2 bits. Uma vez que os dados são sincronizados ao

longo das linhas e que cada dispositivo possui o seu próprio relógio (na comunicação

assíncrona), é possível que os dois dispositivos apareçam ligeiramente

dessincronizados. Assim, o(s) stop bit(s) permitem alguma “folga” ao computador para

compensar desvios nas velocidades dos relógios. Quanto mais stop bits forem usados,

melhor será feita a sincronização entre os diferentes relógios, mas mais lenta será a taxa

de transmissão.

Page 23: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-10-

3.10. Conversores de Nível RS-232 Quase todos os dispositivos digitais requerem níveis lógicos TTL ou CMOS. No

entanto, o primeiro passo na ligação de dispositivos digitais à porta série é transformar

os níveis de tensão RS-232 acima descritos em níveis de 0 e 5 V. Esta operação é

efectuada com conversores de nível RS-232.

Figura 3.5 - Descrição dos pinos do driver/receiver RS-232: MAX-232.

3.11. Desenvolvimento A conversão de níveis tem por base um circuito integrado designado por MAX232,

que permite converter os níveis TTL e RS-232 entre si.

O esquemático do circuito implementado é apresentado na figura 3.6.

Figura 3.6 –Esquemático do módulo de comunicação

Page 24: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-11-

3.12. Testes Para testar a interface de comunicação PC→ Microcontrolador, foi desenvolvido um

software que envia uma sequência de caracteres pela porta série do PC para o módulo

de comunicação. Este por sua vez, estava ligado a um pequeno circuito constituído por

um microcontrolador e um LCD, onde se apresenta a sequência de caracteres enviada

pelo PC.

3.13. Conclusões

Este módulo funcionou como o previsto, sem grandes dificuldades de implementação.

Page 25: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-12-

4. MicroControlador

4.1. Introdução Este módulo tem como objectivo gerar o PWM para os drivers de forma a que o

veículo se possa movimentar e fazer a contagem do número de impulsos dos tacómetros

num determinado intervalo de tempo, de forma a calcular a velocidade real a que o

veículo se movimenta.

4.2. Algumas Noções Teóricas

4.2.1. Microcontrolador O microcontrolador utilizado não foi, como seria esperado, o estudado na cadeira de

microcontroladores (80C51 da Intel ), mas sim o PIC16F876 da Microchip. Esta escolha

foi influenciada por certas capacidades existentes neste microcontrolador e que não

existem no 80C51, nomeadamente um gerador de PWM, que no caso do nosso projecto

é um requisito bastante importante. Para além disso, também existe o factor de

facilidade de programação, visto um programador para um PIC ser fácil de

implementar, o que não acontece com o 80C51, o que nos limitaria a programação do

microcontrolador aos programadores disponíveis na escola.

Eis as principais características do microcontrolador utilizado:

CPU RISC de alta performance

35 instruções

Instruções de um ciclo

Velocidade de operação de 20MHz

8K de memória Flash para programa

368 bytes de memória de dados

256 bytes de memória EEPROM para dados

Interrupções até 14 fontes

Stack de 8 níveis

Power-on reset

Power-up timer

Código de protecção programável

Page 26: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-13-

Temporizador/contador de 8 bits com prescaler de 8 bits

Temporizador/contador de 16 bits com prescaler

Dois módulos de captação, comparação e geração de PWM

Captação de 16 bits, resolução máxima de 12.5ns

Comparação de 16 bits resolução máxima de 200ns

Gerador com resolução máxima de 10 bits

Conversor analógico/digital multicanal de 10 bits

Porto série de recepção e emissão assíncrona e síncrona

Para mais informações sobre o microcontrolador pode-se consultar o datasheet

fornecido pela própria Microchip no seguinte site : www.microchip.com ou então no

CD fornecido com o software do RoboTank.

4.2.2. PWM O Pulse Width Modulation (PWM) é uma poderosa técnica para controlar circuitos

analógicos a partir de circuitos digitais. O PWM é utilizado num vasto campo de

aplicações, como por exemplo: controlo de motores, medidas de temperaturas,

comunicações, etc.

Um sinal analógico é um valor que varia no tempo, com resolução infinita na

magnitude. Uma pilha de 9 Volts é um exemplo disso, a sua saída não é exactamente

9V, varia com o tempo.

Um circuito analógico, por mais intuitivo e simples que seja, nem sempre é atractivo

economicamente, nem prático, e tende a “desafinar” com o passar do tempo, devido ao

desgaste de um ou outro componente.

Os circuitos analógicos tem tendência a aquecer, pois o calor dissipado por cada

elemento activo é proporcional à tensão e à corrente que por ele passa, sendo também

sensíveis ao ruído, devido à sua resolução infinita.

Por sua vez, utilizando circuitos digitais, o custo do equipamento e o consumo irão

ser bastante reduzidos em relação aos analógicos, e muitos microcontroladores, como é

o caso do utilizado PIC16F877, já possuem um módulo de PWM, o que facilita muito a

implementação de circuitos de controlo por PWM.

Page 27: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-14-

De uma maneira simples, o PWM é uma forma de codificar um sinal analógico com

sinais digitais. O dutty cycle de uma onda quadrada é determinado de forma a codificar

um sinal analógico.

Um sinal PWM continua a ser um sinal digital, pois num dado instante é “1” ou “0”.

O valor “1” é o tempo durante o qual a carga é alimentada, e o valor “0” é o tempo

durante o qual a carga não é alimentada. Assim, qualquer sinal analógico pode ser

codificado num sinal digital, como se pode ver na seguinte figura 4.1.

Figura 4.1 - Sinais PWM com vários duty cycles

O primeiro sinal da figura 4.1 é um sinal PWM com 10% de duty cycle, ou seja,

durante 10% do valor do período do sinal este encontra-se “1” e 90% do período

encontra-se “0”.

O segundo e terceiro sinais representam também sinais PWM, agora com 50% e 90%

de duty cycle, respectivamente. Todos estes sinais representam um sinal analógico

diferente.

Page 28: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-15-

4.3. Desenvolvimento O microcontrolador funciona através de comandos que recebe na sua porta série, os

comandos estão divididos em dois grupos, um grupo de comandos de acção, que faz

com que o microcontrolador execute acções sobre os motores (ex: parar, acelerar, travar

etc.), e um grupo de comandos de pedido de informação, que pede informações ao

motor (ex: valor do tacómetro da direita, velocidade pretendida do motor esquerdo etc.).

Estes grupos de comandos estão resumidos nos seguintes quadros :

Comandos de acções sobre os motores:

Comando Acção Como "1" Acelera motor M1 (Direita) MOTOR1 = MOTOR1 + 1 "2" Acelera motor M2 (Esquerda) MOTOR2 = MOTOR2 + 1 "3" Trava motor M1 (Direita) MOTOR1 = MOTOR1 - 1 "4" Trava motor M2 (Esquerda) MOTOR2 = MOTOR2 - 1 "5" Pára motor M1 (Direita) MOTOR1 = 0 "6" Pára motor M2 (Esquerda) MOTOR2 = 0 "7" Anda para a frente motor M1 (Direita) Dir M1 = 0 "8" Anda para a frente motor M2 (Esquerda) Dir M2 = 0 "9" Anda para traz motor M1 (Direita) Dir M1 = 1 “0” Anda para traz motor M2 (Esquerda) Dir M2 = 1 Comandos de pedidos de informação:

Comando Acção "A" Velocidade motor M1(Direita) "B" Velocidade motor M2 (Esquerda) "C" Valor do Tacometro1 (Direita) "D" Valor do Tacometro2 (Esquerda) “E” Valor da Direcção motor M1 (Direita) “F” Valor da Direcção motor M2 (Esquerda)

4.3.1. Algoritmo simplificado do programa do microcontrolador Declaração de Constantes

Declaração de Variáveis

Atendimento de Interrupções

Rotina que recebe os dados da porta série

Rotina que recebe os Impulsos Tacómetro motor esquerdo EXT

Rotina que recebe os Impulsos Tacómetro motor direito RB4

Page 29: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-16-

Rotina de temporizador TIMER0

Inicio do Programa

Limpeza de registos

Habilita interrupções

Inicialização de Leitores de tacómetros (Timer,RB0,RB4)

Inicialização da Porta Série

Inicialização do PWM

Loop de espera de novo comando

Descodificação do comando

Rotinas para acções sobre os Motores

Rotinas para Informações sobre os Motores

Rotina que controla o envio pela Porta Série

Fim Programa

4.3.2. Funcionamento do porto série e leitura de comandos Os comandos chegam ao microcontrolador através da porta série, sendo por isso

necessário configurar esta porta de forma que os comandos recebidos sejam

interpretados correctamente pelo microcontrolador. Eis o código que faz esta

configuração : Inicializa_PortaSerie

bsf STATUS,RP0 bcf STATUS,RP1 ;Banco 1 clrf TXSTA bsf TXSTA,BRGH ;Duplica a velocidade de comunicação clrf SPBRG movlw D'64' ;19200 Kb/s movwf SPBRG bcf TXSTA,SYNC ;Comunicação Assíncrona bcf TXSTA,TX9 ;8 bits de transmissão bcf STATUS,RP0 ;Banco 0 clrf RCSTA bsf RCSTA,SPEN ;Liga a porta série bcf RCSTA,RX9 ;8 bits de recepção bsf STATUS,RP0 ;Banco 1 bcf PIE1,TXIE ;Sem Interrupções em TX

Page 30: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-17-

bsf PIE1,RCIE ;Com Interrupções em RX bsf TXSTA,TXEN ;Transmit Enable bcf STATUS,RP0 ;Banco 0 bsf RCSTA,CREN ;Receive Enable

Como se pode ver o porto série irá funcionar com um baud rate de 19,2Kb/s, com

uma trama de 8 bits, 1 start bit e 1 stop bit. Para além disso foi activada a interrupção de

recepção, fazendo com que ao receber um trama o processo “salte” para o código de

atendimento de pedido de interrupção, código esse que é mostrado de seguida :

btfss PIR1,RCIF ;Recebemos alguma coisa na porta série goto NextInt ;Não. Testa outro pedido de interrupção movf RCREG,w ;lê valor para W movwf rcreg_temp ;guarda Valor bsf FLAGS,new_rcreg ;set flag de que existe novo valor bcf PIR1,RCIF ;limpa pedido de interrupção clrf RCREG ;limpa registo goto ExitInt ;sai do atendimento de interrupções

Tudo o que este código faz é guardar o valor do comando recebido na porta série, em

uma variável designada por <rcreg_temp>, e afectar uma flag (<new_rcreg>), que

indica que recebemos um novo comando. Ambas serão posteriormente interpretadas

pelo processo de descodificação de comando.

4.3.3. Loop de espera de novo comando/ Detector de erro de comunicação A função deste processo é esperar por um novo comando. Quando este chega é

interpretado pelo descodificador de comandos, e executado voltando ao ponto de espera

de novo comando. Para além disso, detectam-se erros que possam ocorrer na

comunicação com o PC, ou seja, passado um determinado tempo sem que se receba

informação proveniente do PC, o veículo pára os motores por razões de segurança. loop incf Com_Error,1 ;incrementa contador de erro de comunicação xorlw b'11111111' ;valor programado para despontar erro de comunicação btfsc STATUS,Z ;Se contador chegou ao fim call paraM1 ;Para Motor 1 call paraM2 ;Para Motor 2 btfss FLAGS,new_rcreg ;teste se existe nova informação goto loop clrf Com_Error ;limpa contador de erro de error de comunicação

Page 31: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-18-

4.3.4. Funcionamento do módulo de PWM A função deste bloco de código é gerar o sinal PWM para o bloco de drivers, de

forma a que posteriormente os motores sejam alimentados e postos a rodar à velocidade

requerida. O módulo gerador de PWM do microcontrolador necessita que se configurem

certos parâmetros, como por se pode ver no seguinte código : Inicializa_PWM

bsf STATUS,RP0 ;Banco 1 movlw d'125' movwf PR2 ;PWM Período de 26khz bcf TRISC,2 ;CCP1 como saída bcf TRISC,1 ;CCP2 como saída bcf TRISC,3 ;Direcção Motor1 bcf TRISC,0 ;Direcção Motor2 bcf STATUS,RP0 ;Banco 0 clrf CCPR1L ;dutyCycle =0 clrf CCPR2L ;dutyCycle =0 clrf T2CON bsf T2CON,TMR2ON ;liga o timer 2 movlw b'00001111' movwf CCP1CON ;configura para módulo pwm movwf CCP2CON ;configura para módulo pwm

A frequência da portadora é 26 KHz. Inicialmente os motores estão parados, como se

pode ver no registos CCPR1L e CCPR2L. Para que o veículo se comece a movimentar,

basta apenas inserir nestes registos um valor suficiente para que o veículo vença a sua

inércia, processo esse que é feito pelas rotinas de acção sobre os motores.

4.3.5. Funcionamento dos leitores de tacómetros O código para ler os impulsos dos tacómetros é bastante simples. Ambos os

tacómetros estão ligados a pinos que geram interrupções assim, basta contar o número

de variações nos pinos. Após terminar um determinado tempo (parametrizado num

contador) gera-se uma interrupção, cujo atendimento transfere o valor da contagem para

variáveis que são posteriormente enviadas quando houver um pedido de informação de

valor do tacómetro.

Page 32: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-19-

;**********************************************************************

; Rotina que recebe os Impulsos Tacómetro motor esquerdo EXT ;********************************************************************** btfss INTCON,INTF ;Recebemos impulso do tacómetro goto NextInt1 incf Tacometro2_temp,1 ; incrementa valor de Tacometro2_temp bcf INTCON,INTF ;Limpa pedido de interrupção

goto ExitInt NextInt1 ;********************************************************************** ; Rotina que recebe os Impulsos Tacómetro motor direito RB4 ;**********************************************************************

btfss INTCON,RBIF ;Recebemos impulso do tacómetro goto NextInt2 movf PORTB,w ;Lê o valor da PORTB para W movwf Temp ;Guarda o valor lido xorwf LastPB,1 ;faz um xor do valor anterior com o lido btfsc LastPB,RB4 ;Testa se houve alteração no pino RB4 call RB4Change ;Alteração no pino RB4 movf Temp,w ;Guarda o valor lido movwf LastPB ;em LastPB bcf INTCON,RBIF ;Limpa Pedido de interrupção goto ExitInt ;Sai do atendimento de interrupções

RB4Change btfsc PORTB,RB4 ;Testa se é flanco ascendente return ;Ignora flanco descendente incf Tacometro1_temp,1 ;incrementa valor de Tacometro1_temp return

NextInt2 ;**********************************************************************; Rotina De Fim de temporizador ;**********************************************************************

btfss INTCON,T0IF goto ExitInt movf Tacometro1_temp,w ;lê valor temporário para W movwf Tacometro1 ;Guarda valor definitivo em Tacometro1 movf Tacometro2_temp,w ;lê valor temporário para W movwf Tacometro2 ;Guarda valor definitivo em Tacometro2 clrf Tacometro1_temp ;Limpa variáveis definitivas clrf Tacometro2_temp ;Limpa variáveis definitivas bcf INTCON,T0IF ;Limpa pedido de interrupção

;********************************************************************** ; Inicialização de leitura de tacómetros ;**********************************************************************

movlw b'00000000' movwf TMR0

bsf STATUS, RP0 bcf STATUS, RP1 ;Banco 1

Page 33: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-20-

bsf TRISB,RB0 ;pino de input bcf TRISB,1 ;pino de output bcf TRISB,5 ;pino de output bcf TRISB,6 ;pino de output bcf TRISB,7 ;pino de output bcf OPTION_REG,T0CS ;modo temporizador bcf OPTION_REG,PSA ;prescaler para timer bsf OPTION_REG,PS2 bsf OPTION_REG,PS1 bsf OPTION_REG,PS0

bcf STATUS, RP0 bcf STATUS, RP1 ;Banco 0

4.3.6. Funcionamento do descodificador de comando O descodificador de comando, descodifica qual o comando recebido, e manda executar

esse comando, como mostra o seguinte código :

movf rcreg_temp,w ;carrega o comando recebido xorlw '1' btfsc STATUS, Z call aceleraM1 movf rcreg_temp,w ;carrega o comando recebido xorlw '2' btfsc STATUS, Z call aceleraM2 movf rcreg_temp,w ;carrega o comando recebido xorlw '3' btfsc STATUS, Z call travaM1 movf rcreg_temp,w ;carrega o comando recebido xorlw '4' btfsc STATUS, Z call travaM2 movf rcreg_temp,w ;carrega o comando recebido xorlw '5' btfsc STATUS, Z call paraM1 movf rcreg_temp,w ;carrega o comando recebido xorlw '6' btfsc STATUS, Z call paraM2 movf rcreg_temp,w ;carrega o comando recebido xorlw '7' btfsc STATUS, Z call direcaoM1Forward movf rcreg_temp,w ;carrega o comando recebido xorlw '8'

Page 34: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-21-

btfsc STATUS, Z call direcaoM2Forward movf rcreg_temp,w ;carrega o comando recebido xorlw '9' btfsc STATUS, Z call direcaoM1Backward movf rcreg_temp,w ;carrega o comando recebido xorlw '0' btfsc STATUS, Z call direcaoM2Backward movf rcreg_temp,w ;carrega o comando recebido xorlw 'A' btfsc STATUS, Z call SendVelM1 movf rcreg_temp,w ;carrega o comando recebido xorlw 'B' btfsc STATUS, Z call SendVelM2 movf rcreg_temp,w ;carrega o comando recebido xorlw 'C' btfsc STATUS, Z call SendTac1 movf rcreg_temp,w ;carrega o comando recebido xorlw 'D' btfsc STATUS, Z call SendTac2 movf rcreg_temp,w ;carrega o comando recebido xorlw 'E' btfsc STATUS, Z call SendDirM1 movf rcreg_temp,w ;carrega o comando recebido xorlw 'F' btfsc STATUS, Z call SendDirM2 clrf rcreg_temp bcf FLAGS,new_rcreg goto loop

4.3.7. Rotinas para acções sobre os motores A função deste processo é realizar a acção pretendida pelo comando recebido sobre os

motores. aceleraM1

movf MOTOR1,w xorlw b'11111111' btfsc STATUS, Z return movf aceleracao_temp,w ;carrega factor de aceleração

Page 35: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-22-

addwf MOTOR1,1 movf MOTOR1,w ;Carrega valor de MOTOR1 movwf CCPR1L ;gera PWM return

aceleraM2

movf MOTOR2,w xorlw b'11111111' btfsc STATUS, Z return movf aceleracao_temp,w ;carrega factor de aceleração addwf MOTOR2,1 ;adiciona factor de aceleração movf MOTOR2,w ;carrega valor de MOTOR2 movwf CCPR2L ;gera PWM return

travaM1 movf MOTOR1,w xorlw b'00000000' btfsc STATUS, Z return movf aceleracao_temp,w ;carrega factor de aceleração subwf MOTOR1,1 ;subtrai factor de aceleração movf MOTOR1,w ;carrega valor de MOTOR1 movwf CCPR1L ;gera PWM return

travaM2 movf MOTOR2,w xorlw b'00000000' btfsc STATUS, Z return movf aceleracao_temp,w ;carrega factor de aceleração subwf MOTOR2,1 ;subtrai factor de aceleração movf MOTOR2,w ;guarda valore de MOTOR2 movwf CCPR2L ;gera PWM return

paraM1 movlw b'00000000' ;valor para parar o motor movwf MOTOR1 ;guarda novo valor para motor1 movwf CCPR1L ;gera PWM return

paraM2 movlw b'00000000' ;valor para parar o motor movwf MOTOR2 ;guarda novo valor para motor2 movwf CCPR2L ;gera PWM return

direcaoM1Forward bcf PORTC,dirM1 ;põe direcção 1 return direcaoM2Forward bcf PORTC,dirM2 ;põe direcção 0

Page 36: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-23-

return direcaoM1Backward bsf PORTC,dirM1 ;põe direcção 1 return direcaoM2Backward bsf PORTC,dirM2 ;põe direcção 0 return

4.3.8. Rotinas para informações sobre os motores A função deste processo é enviar a informação sobre os motores, através da porta série

do microcontrolador. ;Envia velocidade pretendida no motor 1 SendVelM1

movf MOTOR1,w movwf TXREG call JaMandou ;rotina que espera que a trama seja enviada

return ;Envia velocidade pretendida no motor 2 SendVelM2

movf MOTOR2,w movwf TXREG call JaMandou ;rotina que espera que a trama seja enviada

return ;Envia a contagem de impulsos do tacómetro 1 SendTac1

movf Tacometro1,w movwf TXREG call JaMandou ; rotina que espera que a trama seja enviada

return ;Envia a contagem de impulsos do tacómetro 2 SendTac2

movf Tacometro2,w movwf TXREG call JaMandou ; rotina que espera que a trama seja enviada return SendDirM1

btfsc PORTC,dirM1 movlw '1' btfss PORTC,dirM1 movlw '0' movwf TXREG

call JaMandou ; rotina que espera que a trama seja enviada return

SendDirM2 btfsc PORTC,dirM2 movlw '1'

Page 37: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-24-

btfss PORTC,dirM2 movlw '0' movwf TXREG

call JaMandou ; rotina que espera que a trama seja enviada return

4.3.9. Rotina que controla o envio pela porta série A função deste processo é controlar o envio de tramas pelo porto série do

microcontrolador, com o objectivo de evitar o envio de duas tramas em simultâneo.

Depois de enviar informação, é sempre testado se a informação foi enviada, através do

seguinte processo : JaMandou bsf STATUS,RP0 bcf STATUS,RP1 ;Banco 1 Attend btfss TXSTA,TRMT ;Testa se o byte já foi enviado, se não foi espera goto Attend bcf STATUS,RP0 bcf STATUS,RP1 ;Banco 0 return

Page 38: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-25-

4.3.10. Código completo do microcontrolador O código completo do microcontrolador pode ser visto em anexo.

4.4. Testes A melhor forma de testar todo o software desenvolvido, foi aplicá-lo directamente no

veículo.

4.5. Conclusões Houve algumas dificuldades a nível de programação, pois foi a primeira vez que se

programou um microcontrolador da Microchip. Foi necessário aprender um novo

conjunto de instruções, uma nova arquitectura, uma nova forma de configurar os

registos de forma a executarem as tarefas pretendidas, por vezes até através da

experimentação.

Page 39: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-26-

5. Módulos de Potência (drivers) para Motores DC

5.1. Drivers

5.1. Introdução

A função deste módulo é apenas de interface entre o microcontrolador e o módulo de

potência, de forma que os sinais PWM gerados pelo microcontrolador “excitem” as

entradas do módulo de potência.

A escolha do driver recaiu no L298. Cuja datasheet se apresenta em anexo.

5.2. Algumas Noções Teóricas O L298 é um circuito integrado monolítico que possui um excitador duplo de alta

tensão. Ele permite aceitar níveis padrão para a lógica TTL e comandar cargas indutivas

tais como relés, solenóides, motores C.C. e passo-a-passo.

Este dispositivo é fornecido com duas entradas independentes o que permite habilitar ou

incapacitar o dispositivo dos sinais de entrada.

5.3. Desenvolvimento Tendo por base a figura 5.1, fornecida através da datasheet do dispositivo, foi

possível efectuar as ligações para cada um dos motores. Após aplicação dos

correspondentes níveis de tensão às entradas do driver foi observado o correcto

funcionamento de cada um dos motores, estando possibilitado o controlo independente

de cada um deles.

Page 40: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-27-

Figura 5.1 – Esquema de ligações para o controlo bidireccional de um motor DC

O circuito resultante da interligação entre o circuito de comando e o circuito de

potência, será apresentado em seguida :

Figura 5.2 – Circuito resultante da interligação do circuito de comando e o circuito de

potência.

Page 41: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-28-

5.4. Testes Os testes a este dispositivo não ofereceram grandes dificuldades. Inseriu-se o driver

numa breadboard e aplicaram-se os níveis de tensão gerados pelo circuito de comando

(5V). Foi então possível comandar a rotação de cada um dos motores separadamente. A

tabela 5.1 ilustra esta situação.

Tabela 5.1 – Quadro resumo para a rotação dos motores

Figura 5.3 – Esquema interno do driver L298

Page 42: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-29-

5.5. Conclusões Uma vez que um driver L298 permite o controlo de dois motores, optou-se apenas

por utilizar um único driver.

Com base nos esquemáticos apresentados nas figuras 5.1 e 5.2, e após efectuada a

interligação entre o circuito de comando e o circuito de potência, o funcionamento

esperado foi o observado.

Page 43: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-30-

6. Ponte em H

6.1. Introdução A ponte em H foi a parte “visual” mais complicada de realizar devido à potência

necessária para fazer movimentar a estrutura, não devido à complexidade do circuito

electrónico, que é bastante simples, mas sim à escolha apropriada de componentes para

tais potências, bem como a sua compra.

O designado módulo de potência é constituído por duas placas de circuito impresso

nas quais se encontra disposta a electrónica para efectuar o controlo dos motores. Nesta

secção será apresentada toda a informação referente à parte de potência. Será incluído o

esquema electrónico que nos levou ao controlo dos respectivos motores. Depois de

algumas experiências mal sucedidas com outro tipo de dispositivos, optou-se por uma

solução que cumpre os objectivos a que nos propunha-mos.

6.2. Algumas Noções Teóricas Por forma a fazer com que cada um dos motores possa ser controlado em ambos os

sentidos, optou-se por uma configuração de ponte em H, constituída por 2 transístores

de potência do tipo NPN e 2 do tipo PNP, como ilustra a figura seguinte.

Figura 6.1 – Configuração de ponte em H

Page 44: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-31-

Este tipo de configuração funciona da seguinte forma. Quando se liga o sistema, os

transístores encontram-se ao corte, visto que todas as base dos transístores se encontram

com 0V. Ao colocar uma tensão na base do transístores estes passam a conduzir, de

onde é fácil então deduzir, que colocando os transístores a conduzir aos pares (Q1 e Q4

ou Q2 e Q3), estes irão fazer a corrente fluir num determinado sentido, fazendo com que

o motor gire para a direita ou para a esquerda. Como podemos ver mais facilmente nas

seguintes figuras :

Figura 6.2 – Input 2_1 e Input 2_2 com 24 Volts e Input 1_1 e Input 1_2 com 0 Volts.

Figura 6.3 – Input 1_1 e Input 1_2 com 24 Volts e Input 2_1 e Input 2_2 com 0 Volts.

Page 45: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-32-

6.3. Desenvolvimento A concepção deste circuito teve por base a configuração da ponte em H, apresentando

algumas melhorias. Dele faz parte uma protecção contra sobrecargas.

6.4. Descrição do Circuito (figura 6.4)

A disposição dos transístores de potência faz com que conduzam aos pares, bastando

para isso que as entradas designadas por input 2_1 e input 2_2 se encontrem

alimentadas com 24V, ou vice versa, que as entradas input 1_1 e input 1_2 se

encontrem com o mesmo nível de tensão para que o motor inverta o sentido.

Segue-se uma descrição pormenorizada da função de cada um dos componentes que

constituem o circuito eléctrico.

Com base no teste prático feito ao circuito, verificou-se que existia uma corrente de

fuga pela base dos transístores Q11 e Q21 quando o motor estava a parar (como tal,

fornecendo energia). A colocação dos díodos D1 e D2 solucionou o problema.

Os leds 1 e 2 tem a mesma função dos díodos D1 e D2, para além de assinalarem o

sentido de rotação do motor. Ao usar leds de alto rendimento e baixando ligeiramente os

valores de R7 e R8 conseguir-se-á um brilho mais intenso, pois com um sinal PWM o

brilho dos leds baixa em relação a um sinal DC com o mesmo nível de tensão.

De seguida será apresentado o esquema eléctrico bem como a placa de circuito

impresso, que estão na base da configuração da ponte em H.

Page 46: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-33-

AQ3

Q4Q2

Q1

Q12250

Q22250

Q21249

Q11249

D8 D7

D6D5

LED1input2_2 LED2

input1_2

D2D1input2_1input1_1

+V

V124

M1

R168

R218

R3150

R40.1

R7

2.2K R82.2K

R60.1

R50.1

BD 250 BD 250

BD 249 BD 249

BD 241BD 241

BD 241 BD 241

BYV32

BYV32

BYV32

BYV32

0V - 24V

0V - 24V

0V - 24V

0V - 24VNó

Figura 6.4 – Esquema eléctrico

6.5. Melhorias Introduzidas

6.5.1. Protecção Contra Sobrecargas

Foi desenvolvida uma protecção que nos permite controlar o fluxo de corrente que

atravessa cada um dos motores. Para isso existem 3 resistências de potência de 0,1Ω,

formando duas delas um paralelo estando a outra em série (R5 // R6) + R4.

A protecção é activada quando a corrente que atravessa cada uma dos motores

ultrapassa-se os 5 Amperes. As resistências têm por objectivo provocar uma queda de

tensão de 0,75V no nó A, ver figura 6.4

Page 47: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-34-

Expressões referentes ao divisor de tensão, associado à junção base emissor :

VA = R × I V = 0.15 × 5A= 0.75V

VB Q4Q2

VA0.75V

R2150

R186

Rpotênc0.15

Nó A

Figura 6.5 – Esquema simplificado VB = VA × R2 / (R1+ R2), considerando R2 = 150 Ω e que a tensão que polariza

directamente a junção base emissor dos transístores Q2 e Q4 é de aproximadamente

0,5V, valor medido no laboratório.

0.5 = 0.75 × 150 / ( R1 + 150)

R1 = 75 Ω

Obtou-se por um valor aproximado de 86 Ω.

Page 48: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-35-

6.6. Placas PCB Para a implementação do circuito em PCB optou-se por um PCB de dupla fase,

devido a vários motivos.

Um deles deve-se ao facto da complexidade do circuito, bem como do elevado

número de componentes que fazem parte dele. Outro dos motivos é o elevado valor da

corrente que atravessa o circuito, obrigando a que as pistas tenham alguma espessura.

Outra das vantagens deste tipo de PCB é a não utilização de um elevado número de

chantes.

Lado 1 Lado 2

Figura 6.6 – Ilustração das placas PCB

6.7. Modo de Utilização O modo de utilização deste módulo é simples. Por forma a colocar o motor em

movimento, é necessário que as entradas input 2_1 e input 2_2 sejam alimentadas com a

tensão de 24V. Alimentando as outras duas entradas (input 1_1 e input 1_2) faz com

que o motor inverta o sentido de rotação.

Page 49: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-36-

Este valor (24V) é o que permite que o motor tenha um desempenho regular.

6.8. Testes A melhor forma que se encontrou de testar este módulo foi alimentar as entradas e

medir os valores à sua saída.

6.9. Conclusões Este foi sem dúvida o bloco mais difícil de desenvolver devido aos valores de

corrente que iriam atravessá-lo. Foram desenvolvidos e testados vários circuitos, desde

simples drivers como o utilizado no módulo de drivers (L298), a ponte em H simples

com transístores de potência, mas o apresentado revelou-se melhor.

Houve dificuldade na escolha dos componentes apropriados, assim como na sua

aquisição.

Page 50: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-37-

7. Realimentação

7.1. Introdução O objectivo deste módulo é determinar a velocidade a que o veículo se movimenta, a

forma encontrada de o fazer foi através da leitura da velocidade de rotação de cada um

dos motores, para isso foi utilizado um tacómetro em cada motor.

7.2. Algumas Noções teóricas Os tacómetros são dispositivos electromecânicos que convertem energia mecânica em

energia eléctrica. À saída do tacómetro obtém-se uma onda quadrada que varia em

frequência consoante a velocidade de rotação dos motores, ou seja, movimentos

angulares do eixo do motor geram impulsos. Então, à saída do tacómetro teremos sinais

do tipo:

Figura 7.1 – Tipo de sinais à saída do tacómetro

O canal A e B encontram-se desfasados 90º entre si, de forma a que seja possível

detectar o sentido de rotação do encoder. Por sua vez o canal C, gera um impulso

sempre o eixo do tacómetro der um volta de 360º. Os tacómetros, também designados por codificadores, podem ser de dois tipos:

incrementais ou absolutos.

Page 51: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-38-

Os codificadores que devolvem códigos digitais são chamados codificadores

absolutos e os que devolvem pulsos são chamados incrementais. Estes últimos são os

mais utilizados dada a sua simplicidade de construção, versatilidade e facilidade de

aplicação. A figura seguinte ilustra o funcionamento de um codificador incremental

óptico:

Figura 7.2 – Tipos de codificadores ópticos

7.3. Desenvolvimento Consultando a datasheet dos tacómetros que se encontram em anexo retiramos o

seguinte quadro com as descrições dos fios :

Page 52: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-39-

Referência Designação

Castanho 5 a 12 VDC

Azul 0 V (Comum)

Preto Saída A (Canal A)

Branco Saída B (Canal B)

Laranja Saída C (Canal C)

Malha GND

Tabela 7.1 - Quadro resumo dos tacómetros

E implementa-mos o seguinte circuito :

Figura 7.3 – Circuito de ligações dos tacómetros ao microcontrolador

7.4. Testes A melhor forma de testar este módulo foi colocar o motor em rotação e ver num

osciloscópio se as forma de ondas eram as esperadas, o que aconteceu sem problemas.

7.5. Conclusões

A maior dificuldade na implementação deste módulo esteve no código para

contagem dos impulsos, que poderia ter sido feito de várias formas. Em algumas não

se conseguia obter valores constantes de velocidade. O modo como essa contagem

foi implementada está descrito na secção do microcontrolador.

Page 53: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-40-

8. Alimentação

8.1. Introdução O objectivo deste módulo é alimentar todos os circuitos existentes no projecto.

8.2. Algumas Noções Teóricas As baterias escolhidas têm que fornecer corrente suficiente para alimentar os motores

e os circuitos de controlo, ser recarregáveis e ter uma boa autonomia. Como se pode

observar na tabela 8.1, apenas as baterias Níquel-Cádmio, Ni-MH e as Ácido-Chumbo

são aquelas que podem ser utilizadas. Assim, por razões de custo, as baterias de Níquel-

Cádmio são preferíveis às NI-MH e, por razões de peso e segurança, são preferíveis às

de ácido-chumbo. As baterias de Níquel-Cádmio são aquelas em que se obtém uma

melhor relação preço/potência.

Tabela 8.1 – Tipo de baterias

Apesar de não serem aquelas em que se obtém uma melhor relação preço/potência,

pois para isso teríamos que utilizar as baterias de Níquel-Cadmio, as baterias que fazem

parte deste projecto são baterias de ácido - chumbo, com as seguintes características:

Tensão: V=12V

Capacidade: 17Ah

Tipo de célula: Ácido-Chumbo

Comprimento: L=13.4cm

Largura: 6.7cm

Altura: 6.7cm

Peso: 1.170Kg

Page 54: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-41-

O RoboTank está preparado para ser alimentado por três baterias Ácido-Chumbo.

Estas baterias têm a capacidade de debitar 17 Ah.

Uma das desvantagens deste tipo de alimentação é que o carregamento das baterias é

muito moroso (cerca de 12 horas).

Estas baterias irão alimentar os motores e a parte electrónica, através de um conversor

de 5 V.

De modo a que não hajam interferências por parte dos motores, a alimentação destes é

isolada da restante electrónica, tanto pelo regulador de tensão como pela ponte em H.

Figura 8.2 – Diagrama de baterias

Page 55: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-42-

8.3. Desenvolvimento No sistema desenvolvido, iremos necessitar de 3 níveis de tensão diferentes: 5 Volts

para o microcontrolador e outros componentes que trabalham com níveis de tensão

digitais, 12 Volts para a alimentação dos codificadores ópticos e finalmente 24 Volts

para alimentar o módulo de potência e o módulo de drivers.

Foi estipulada a utilização de 3 baterias de ácido de chumbo selado em que uma

bateria seria para gerar as tensões de alimentação de 5 e 12 Volts, e as outras duas para

gerar os 24 Volts.

A partir do parágrafo anterior desenvolveram-se os seguintes circuitos :

Figura 8.3 – Esquema de ligações das baterias

O reguladores de tensão têm o objectivo de estabilizar as tensões nos valores

pretendidos, visto que uma bateria não tem a tensão fixa, tanto pode estar com 13V com

12,5V etc.

Page 56: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-43-

8.4. Testes Este módulo foi testado apenas medindo os valores de tensão à saída com um

multímetro.

8.5. Conclusões Este módulo foi o mais simples de implementar pois apenas utiliza cabos; é preciso

ter atenção à sua secção, pois por eles passam correntes bastante elevadas.

A maior dificuldade é a sua manutenção, pois é necessário estar constantemente a

carregar as baterias, principalmente as que alimentam os motores.

Page 57: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-44-

9. Carregamento de Baterias A utilização de baterias recarregáveis tem sempre associado um processo de

carregamento. Esse carregamento têm de ser efectuado mediante características

específicas, relacionado com o tipo de células e capacidade que compõem a bateria.

Uma regra básica usada para o carregamento é o de carregar a uma taxa igual a um

décimo da capacidade em Amper-hora da bateria. Assim, a utilização de uma bateria

Ácido-Chumbo com uma capacidade de 17 AH deve ser carregada com uma corrente de

1.7 A.

Page 58: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-45-

10. Controlo RF

10.1. Introdução O objectivo deste módulo é o de libertar fisicamente o veículo do PC, deixando de ser

necessário a ligação através de fios. Note-se que, para que a comunicação fosse

bidireccional, seriam necessários dois kits, cada um constituído por um emissor e um

receptor; apenas nos foi disponibilizado um kit. Optou-se por utilizar o kit

disponibilizado, no sentido PC→Robot.

10.2. Algumas Noções Teóricas Neste caso foram usados módulos de emissão e recepção da RF Solutions[8], como

mostra a figura 10.1 e 10.2. São módulos de baixo consumo e reduzidas dimensões o

que os torna ideais para a sua utilização neste projecto.

Figura 10.1 – Receptor AM RF RECEIVERS AM-HRR6-XXX

Figura 10.2 – Emissor AM Hybrid Transmitter AM-RTn-XXX

Estes módulos apenas efectuam transmissão e recepção de dados do tipo binário, e

trabalham na faixa dos 200 aos 450 MHz. O que nos foi disponibilizado trabalha com

uma frequência de 433.9MHz

Page 59: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-46-

O tipo de modulação utilizada por estes módulos é a Modulação ASK, (Amplitude

Shift-Keying). Num sinal ASK é a amplitude de uma portadora que varia no tempo de

acordo com os bits a transmitir. Na figura 10.3 mostra-se um exemplo de um sinal ASK.

"0" "1" "0" "1" "1" "0"

Figura 10.3 - Sinal ASK.

10.3. Modulação por Comutação de Amplitude (ASK)

(‘ASK – Amplitude Shift Keying’)

No caso da modulação ASK, os valores binários são representados por diferentes

amplitudes da portadora. O ‘1’ binário é representado pela presença, a uma amplitude

constante, da portadora, e o ‘0’ representado pela ausência de portadora. O sinal

resultante é da forma :

Normalmente, este tipo de modulação não é usado nas linhas telefónicas devido às

grandes variações de atenuação que podem ocorrer nos circuitos, tornando difícil fixar

um limiar para decidir entre os valores binários ‘0’ e ‘1’.

Page 60: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-47-

O sinal ASK é gerado através da multiplicação entre o sinal de dados e uma

frequência áudio, fa. Este processo provoca um deslocamento do espectro de amplitudes

do sinal de dados para a frequência da portadora áudio. Este processo está ilustrado a

seguir.

Figura 10.4 – Espectro de amplitudes de um sinal ASK.

A largura de banda do sinal modulado é o dobro da largura de banda do sinal digital

original. Isto significa que um sinal original de 110 baud (110 bit por segundo) requer

um sistema ASK de uma largura de banda de 220Hz.

Na modulação no domínio da amplitude (ASK), a amplitude da onda é alterada de

acordo com a variação do sinal da informação. A modulação em amplitude em geral não

é utilizada de forma isolada, pois exige um meio em que a resposta de amplitude seja

estável, uma vez que este tipo de modulação é bastante sensível a ruídos e distorções.

Page 61: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-48-

10.4. Desenvolvimento A utilização deste kits é bastante simples e basta apenas seguir as ligações existentes

na datasheet (ver anexo).

Eis o circuito montado:

Figura 10.5 - Circuito de ligações do módulo RF

10.5. Testes Para testar este módulo ligou-se o circuito transmissor ao PC e utilizou-se um

osciloscópio para visualizar o sinal recebido no receptor, depois de se verificar que esse

sinal era recebido correctamente, inseriu-se o módulo no projecto sem qualquer

problema.

10.6. Conclusões Foi interessante pôr este módulo a funcionar no projecto, devido a sua simplicidade

de implementação e à facilidade que nos dá na movimentação do robô.

Para implementar este módulo na sua totalidade, basta apenas adquirir mais um kit

com uma frequência de trabalho diferente do já existente 433.9MHz e colocá-lo a

funcionar no sentido Robot→PC.

Page 62: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-49-

11. Software

11.1. Introdução A função deste módulo é facilitar a interacção entre o utilizador e o veículo,

fornecendo uma interface mais atractiva que um “monte” de botões e um display.

Sendo assim, o módulo de software, a instalar num PC, permite ao utilizador conduzir o

veículo através das teclas de cursor do teclado, e visualizar algumas informações

importantes.

11.2. Algumas Noções Teóricas A escolha da linguagem de programação para a implementação do software de

controlo do RoboTank teria que passar obrigatoriamente por uma linguagem visual, de

forma a obter ambientes gráficos capazes de atrair e facilitar a utilização deste projecto

por parte dos utilizadores. Como linguagem visual poderíamos optar tanto pelo Visual

C++ como pelo Visual Basic ou mesmo o Delphi, deixando de fora linguagens como o

java, o novo C#, etc., devido tanto à falta de documentação, como do respectivo

software de desenvolvimento. Assim sendo, optou-se pelo Visual Basic devido à

facilidade de utilização e rapidez no desenvolvimento de código. Apesar de não ser tão

potente e rápido como C++ satisfaz plenamente as necessidades do nosso projecto.

11.3. Desenvolvimento

11.3.1. Sistema de Utilizadores Um das partes que constitui o software é uma pequena base de dados que dá acesso

ao próprio software, e que, em simultâneo, permite configurar parâmetros pelo

utilizador, como por exemplo, a porta de comunicação série com o veículo, o factor de

aceleração etc.

A base de dados tem a seguinte estrutura relacional:

Page 63: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-50-

Ao fazer o login no programa, a configuração do utilizador será automaticamente

carregada no software e no próprio veículo.

Para gerir esta pequena base de dados, a aplicação dispõe de um menu Management

que permite alterar configurações, assim como criar e apagar novos utilizadores.

Ao clicar na opção Config, surge no ecrã a seguinte janela:

Page 64: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-51-

que permite configurar a porta série, porta pela qual se comunica com o veículo. A

janela que permite configurar os outros dois parâmetros apresenta-se de seguida.

Factor de aceleração - Permite definir o valor numérico que irá ser incrementado ou

decrementado ao valor da velocidade, consoante a tecla de acelerar ou travar seja

premida. Exemplo: se a velocidade actual for 100 e o factor de aceleração 2 quando a

tecla de acelerar for premida ficamos como uma velocidade de 102, se o factor de

aceleração em vez de 2 fosse 4, ficaríamos com 104.

Binário - Permite definir o valor que será incrementado e decrementado consoante a

tecla de viragem que for premida.

Exemplo: se a velocidade do motor direito e do esquerdo for 100, e o binário 2, ao

premir a tecla de viragem a esquerda, ficaremos com 102 no motor da direita e 98 no da

esquerda. Matematicamente temos Mdireita = Mdireita + Binário e

Mesquerda = Mesquerda – Binário.

Para criar um novo utilizador, basta clicar na opção Create, que dará acesso à seguinte

janela, introduzindo-se para o efeito o nome do novo utilizador e a password pretendida.

Page 65: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-52-

Para criar a sua própria configuração, o novo utilizador deverá sair e voltar a entrar na

aplicação com o respectivo user name e password.

Para apagar um utilizador, bastar clicar na opção Delete, que dará acesso à seguinte

janela.

11.3.2. Detecção de falhas de comunicação Com o objectivo de detectar erros de comunicação entre o PC e o veículo foi

desenvolvido um sistema que detecta esse tipo de erros. O seu funcionamento é bastante

simples, visto que o PC e o veículo estão em constante comunicação, nem que seja

apenas o PC a fazer pedidos de informação (ex: Velocidade do motor da direita.). Basta

apenas um contador que passado um determinado tempo definido sem que haja

comunicação, o veículo pare automaticamente os motores e o PC emita uma mensagem

de erro como a seguinte :

Page 66: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-53-

11.3.3. Comando Para que se possa comandar o veículo criou-se a seguinte janela.

O utilizador interage com o comando através do teclado do PC, a descrição das teclas

utilizadas assim com a sua funcionalidade são as seguintes:

Cursor Up – Acelera o Veículo

Cursor Down – Desacelera o Veículo

Cursor Left – Vira o veículo para a esquerda progressivamente

Cursor Right – Vira o veículo para a direita progressivamente

Barra de espaços – Para o veículo

Q – Marcha para a frente

A – Marcha para trás

Também é possível visualizar informações relativas ao veículo, como a direcção, a

velocidade do motor e valor lido no tacómetro, para ambos os motores.

Page 67: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-54-

11.3.4. Classes Desenvolvidas Do ponto de vista técnico foram desenvolvidas as seguintes classes: Motor Propriedades:

ForwardChar – Caracter que coloca o motor em marcha a frente BackwardChar – Caracter que coloca o motor em marcha a trás Valor – Valor da velocidade do motor ValorMinimo – Valor mínimo que o motor pode atingir ValorMaximo – Valor máximo que o motor pode atingir

AcelerarChar – Caracter para acelerar o motor PararChar – Caracter para Parar o motor TravarChar – Caracter para Travar/desacelerar o motor Métodos

Acelerar() Travar() DirForward() DirBackward()

Eventos

Public Event MotorAcelerou(NovoValor As Integer) Public Event MotorTravou(NovoValor As Integer) Public Event MotorParou(NovoValor As Integer) Public Event ValorMaxAtingido(ValorMaximo As Integer)

Public Event ValorMinAtingido(ValorMinimo As Integer) Encoder Propriedades:

Valor - Valor no tacómetro LeituraChar - Caracter para leitura do tacómetro

Métodos

LerEncoder

11.4. Testes

À medida que o código foi sendo desenvolvido, foi testado a sua funcionalidade.

Page 68: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-55-

11.5. Conclusões

Ao utilizar um novo tipo de linguagem de programação ficamos a aperceber-nos das

suas potencialidades, neste caso o VB, no rápido desenvolvimento de aplicações.

Page 69: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-56-

12. Conclusões

Este projecto implicou, para além do esforço inerente a qualquer trabalho, um

cuidado especial no seu planeamento e desenvolvimento. Queremos com isto dizer que

cada etapa foi antecedida de alguma reflexão e definição de estratégias; a complexidade

deste projecto assim o obrigou.

Definição de objectivos. Nesta fase, que foi constituída basicamente por discussões

entre nós e troca de impressões com o professor orientador do projecto, ficaram

definidos em traços gerais os objectivos do projecto; foi delineada também a

constituição física dos vários módulos, protocolos a usar e lista de componentes.

Preparação teórica. Esta fase coexistiu com a fase anterior durante algum tempo e

foi caracterizada pelo estudo teórico de alguns campos de interesse, e pela investigação

de assuntos de natureza prática como o assembler da Microchip e especificações de

microcontroladores.

Prospecção e aquisição de hardware. Munidos de um esboço de especificação

teórica e prática fizemos um levantamento no mercado do hardware que poderia

satisfazer os nossos requisitos. Esta também é uma fase que existiu sempre com o

projecto, visto que a partir de uma certa altura a aquisição de componentes aconteceu

regularmente.

Os alunos consideram que esta foi uma boa experiência, uma vez que os

conhecimentos adquiridos foram sem dúvida interessantes. Devido à abrangência deste

projecto foi possível aplicar conhecimentos já adquiridos ao longo do curso, e de certa

forma até consolidá-los, mas também existiu um grande esforço de investigação e

aprendizagem de novos conceitos e técnicas. Fica no entanto a noção que quanto mais

se progride em conhecimento mais coisas há que é necessário saber.

No início da construção deste veículo deparamos algumas dificuldades em encontrar

vários componentes, nomeadamente os que foram utilizados na ponte em H.

Page 70: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-57-

Com este trabalho adquiriram-se novos conhecimentos na área de electrónica,

aplicação de sensores, programação de microcontroladores, mecânica, desenho,

construção e montagem de placas de circuito impresso. Este projecto constitui um

precedente para iniciar novos estudos e projectos na área da robótica, o que tem

cativado o interesse de alunos desta escola. Sendo um assunto pouco abordado nas

disciplinas, os alunos muitas vezes têm sugerido novas ideias para este projecto e para

outros possíveis dentro desta área nos próximos anos. Esperemos que este súbito

interesse resulte em novas iniciativas.

Page 71: Controlo de motores DC para um robô móvel

EST Setúbal/IPS – Escola Superior de Tecnologia de Setúbal EST/DEE/ET

-58-

Referências Bibliográficas Notas da disciplina de Sistemas Digitais1 leccionada no 2º semestre de 1996 no âmbito

do Bacharelato em Engenharia de Electrónica e Computadores.

Notas da disciplina de Sistemas Digitais2 leccionada no 1º semestre de 1997 no âmbito

do Bacharelato em Engenharia de Electrónica e Computadores.

Notas da disciplina de Sistemas Digitais3 leccionada no 2º semestre de 1998 no âmbito

do Bacharelato em Engenharia de Electrónica e Computadores.

Notas da disciplina de Microcontroladores leccionada no 1º semestre de 1999 no

âmbito do Bacharelato em Engenharia de Electrónica e Computadores.

Manuais do micro controlador PIC16F877

Perry, Teach yourself visual basic 6 in 21 days ,Sams

Smith & Amundsen, Teach yourself database programming with visual basic 6 in 21

days, Sams

McDonald, Serious ADO universal data acess with VB

http://www.maxonmotor.com/index_a.cfm http://www.datasheetlocator.com/po/ http://www.rfsolutions.co.uk/

Anexos