Upload
duonglien
View
214
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DIRETORIA DE GRADUAÇÃO E EDUCAÇÃO PROFISSIONAL
DEPARTAMENTO ACADÊMICO DE ELETRÔNICA DEPARTAMENTO ACADÊMICO DE INFORMÁTICA
CURSO DE BACHARELADO EM ENGENHARIA DA COMPUTAÇÃO
BRUNO OENNING
FELIPE LISBOA
PAULO RENAUX
RENAN PAZINI
THAINÃ MONTEIRO
AUTOMODELO COM SISTEMA PARK ASSIST
TRABALHO DE DISCIPLINA – OFICINA DE INTEGRAÇÃO 3
CURITIBA
2014
BRUNO OENNING
FELIPE LISBOA
PAULO RENAUX
RENAN PAZINI
THAINÃ MONTEIRO
AUTOMODELO COM SISTEMA PARK ASSIST
Trabalho de Disciplina de Graduação – Oficina
de Integração 3, apresentado ao Curso de
Engenharia de Computação, do Departamento
Acadêmico de Eletrônica e do Departamento
Acadêmico de Informática, da Universidade
Tecnológica Federal do Paraná – UTFPR, como
requisito parcial para obtenção da aprovação na
disciplina.
Professor(es): Guilherme Alceu Schneider
Gustavo Benvenutti Borba
CURITIBA
2014
RESUMO
OENNING, Bruno; LISBOA, Felipe; RENAUX, Paulo; PAZINI, Renan; MONTEIRO,
Thainã. Automodelo com Park Assist. 2014. - - f. Monografia (Curso de
Engenharia de Computação), Departamento Acadêmico de Eletrônica,
Departamento Acadêmico de Informática, Universidade Tecnológica Federal do
Paraná. Curitiba, 2014.
O recurso de estacionamento automático (conhecido como Park Assist) é pouco
encontrado entre os automodelos da atualidade, sendo restrito a automodelos de
maior custo. Outro recurso também é o sensoriamento de objetos próximos dos
para-choques dianteiros e traseiros. O estacionamento automático real pode ser
implementado de diferentes formas. Baseado no algoritmo de manobra em arco e
utilizando sensores infravermelhos de proximidade, o projeto foi desenvolvido para
mostrar a aplicação do algoritmo em um protótipo desenvolvido pela equipe. A
fundamentação teórica e cada uma das etapas e a implementação serão descritas
neste documento.
Palavras chave: Automodelo. Park Assist. Sensor de Infravermelho. Manobra em
Arco.
ABSTRACT
OENNING, Bruno; LISBOA, Felipe; RENAUX, Paulo; PAZINI, Renan; MONTEIRO,
Thainã. Automodelo com Park Assist. 2014. - - f. Monografia (Curso de
Engenharia de Computação), Departamento Acadêmico de Eletrônica,
Departamento Acadêmico de Informática, Universidade Tecnológica Federal do
Paraná. Curitiba, 2014.
Automated parking (also known as Park Assist) is a resource rarely found in modern
cars, being restricted to more expensive models. Other resource present in modern
cars is proximity sensing based on the car’s sides and bumpers. Automated parking
can be implemented in different ways on real modern cars. Based on the algorithm
arc maneuver and using infrared proximity sensors, this project was developed to
display the application of this algorithm on a prototype, developed by the team.
Needed theory for developing the project and each of the parts of its implementation
will be described in this document.
Keywords: Model Car. Park Assist. Infrared Sensor. Arc Maneuver.
LISTA DE FIGURAS
Figura 1: Ponte H ...................................................................................................... 16
Figura 2: Ponte H com o sentido da corrente ............................................................ 17
Figura 3: Tensão em PWM........................................................................................ 18
Figura 4: Chave Ótica ............................................................................................... 18
Figura 5: Trajetória do Park ....................................................................................... 20
Figura 6: Ângulo de direção de geometria ................................................................ 20
Figura 7: Planejamento da trajetória do estacionamento. ......................................... 21
Figura 8: Forma geométrica do triângulo formado na realização da manobra. ......... 21
Figura 9: Plataforma com motores do automodelo. ................................................... 23
Figura 10: Entrada e saída do driver de motores ...................................................... 24
Figura 11: Driver de controle dos motores ................................................................ 25
Figura 12: Encoder .................................................................................................... 26
Figura 13: Circuito para leitura do encoder ............................................................... 26
Figura 14: Disposição dos sensores no automodelo. ................................................ 29
Figura 15: Medições e Distâncias em diferentes ambientes ..................................... 31
Figura 16: Medição Absoluta vs. Distância Real ....................................................... 32
Figura 17: Interface gráfica da estação base ............................................................ 34
Figura 18: Diagrama de estados para detecção de vaga. ........................................ 36
Figura 19: Diagrama de estados para a realização da baliza. .................................. 37
Figura 20: Foto do driver dos motores ...................................................................... 38
Figura 21: Foto do driver de corrente acoplado ao circuito ....................................... 38
Figura 22: Foto dos jumpers utilizados para integrar circuitos .................................. 39
Figura 23: Foto do automodelo com o arduino e os circuitos auxiliares .................... 39
Figura 24: Cenário de Testes .................................................................................... 40
Figura 25: Automodelo com molde em papel fotográfico .......................................... 41
Figura 26:Início da detecção da vaga ....................................................................... 42
Figura 27: Manobra na vaga de 88cm ....................................................................... 42
Figura 28: Fim da manobra ....................................................................................... 43
Figura 29: Automodelo tentando estacionar em vaga menor que o mínimo ............. 43
Figura 30: Automodelo ignora o espaço menor que o mínimo e segue adiante ....... 44
Figura 31: Obstáculo interrompendo a manobra do automodelo .............................. 45
Figura 32: Estacionamento em vaga de 66 cm ......................................................... 45
Figura 33: Demonstração de automodelo estacionando em vaga de 66 cm ............. 46
Figura 34: Localização do Código ............................................................................. 63
LISTA DE TABELAS
Tabela 1: Terminais destinados a interrupção de cada modelo do Arduino .............. 15
Tabela 3: Comandos e descrição. Fonte: Autoria própria ......................................... 33
Tabela 4: Pinagem Sensores .................................................................................... 65
Tabela 5: Pinagem Motores ...................................................................................... 68
Tabela 6: Pinagem Encoder ...................................................................................... 68
SUMÁRIO
1. INTRODUÇÃO ........................................................................................... 9
1.1 TEMA ......................................................................................................... 9
1.2 DELIMITAÇÃO DO ESTUDO ................................................................... 11
1.3 PROBLEMA ............................................................................................. 11
1.4 OBJETIVOS ............................................................................................. 12
1.4.1 Objetivo Geral........................................................................................... 12
1.4.2 Objetivos Específicos ............................................................................... 12
1.5 JUSTIFICATIVA ....................................................................................... 12
1.6 PROCEDIMENTOS METODOLÓGICOS ................................................. 13
1.7 EMBASAMENTO TEÓRICO .................................................................... 13
1.8 ESTRUTURA DO TRABALHO ................................................................. 14
2. FUNDAMENTAÇÃO TEÓRICA ............................................................... 15
2.1 ARDUINO ................................................................................................. 15
2.2 PONTE H ................................................................................................. 16
2.3 PWM ......................................................................................................... 17
2.4 CHAVE ÓPTICA ....................................................................................... 18
2.5 SENSOR INFRAVERMELHO .................................................................. 19
2.6 GEOMETRIA DE ACKERMAN ................................................................. 19
2.7 PROCESSING.......................................................................................... 22
2.8 ZIGBEE .................................................................................................... 22
3. DESENVOLVIMENTO DO PROJETO ..................................................... 23
3.1 MOTORES E PLATAFORMA DO AUTOMODELO .................................. 23
3.2 DRIVER DE CONTROLE DOS MOTORES ............................................. 24
3.3 ENCODER ............................................................................................... 25
3.4 MEDIÇÃO DA DISTÂNCIA PERCORRIDA .............................................. 27
3.5 CÁLCULOS PARA O TAMANHO DA VAGA ............................................ 28
3.6 CONSTRUÇÃO DE SENSORES DE INFRAVERMELHO ....................... 29
3.7 ESTAÇÃO BASE ...................................................................................... 33
3.8 COMUNICAÇÃO SEM FIO ...................................................................... 35
3.9 ALGORITMO DE PARK ASSIST .............................................................. 35
4. RESULTADOS ......................................................................................... 38
5. ENSAIO .................................................................................................... 42
6. CONSIDERAÇÕES FINAIS ..................................................................... 47
7. APÊNDICES............................................................................................. 51
7.1 APÊNDICE A – Cronograma .................................................................... 51
7.2 APÊNDICE B – Riscos ............................................................................. 51
7.3 APÊNDICE C – Entregas ......................................................................... 59
8. ANEXOS .................................................................................................. 62
8.1 ANEXO A – Biblioteca de Motores e Sensores ........................................ 62
9
1. INTRODUÇÃO
Este capítulo tem como objetivo apresentar o tema e os objetivos do projeto, bem
como as delimitações de estudos e a problemática do sistema Park Assist. O embasamento
teórico para implementação do projeto, os procedimentos metodológicos adotados e a
justificativa, também serão apresentados nas outras seções.
1.1 TEMA
O Park Assist consiste em um sistema para auxiliar os motoristas na manobra de
baliza. Além disso, pode ser considerado um item de segurança pois o sistema é composto
de sensores com um alto grau de precisão (com uma margem de erro não influenciável na
aplicação), podendo evitar acidentes no decorrer da manobra.
Existem diversos algoritmos de Park Assist. Alguns deles utilizando uma abordagem
de controle não linear, contendo metodologias que monitoram o ângulo de direção e a
velocidade. Entretanto devido á complexidade do modelo não linear, essa abordagem para
uma análise simplificada não tem como ser realizada. Outros modelos de controle de Park
Assist se baseiam na trajetória estimada do veículo onde o mesmo estima uma trajetória,
puramente trigonométrica. Essa abordagem, entretanto, é passível de erros devido a não
garantia do comportamento do automodelo durante a manobra. Outros estudos
relacionando essa abordagem visam garantir o controle e estabilidade do veículo na
trajetória, porém as formas de controle aumentam a dificuldade e assemelham a
complexidade do controle não linear. A manobra em Arco é uma metodologia simplificada
do sistema de Park Assist, levando em consideração o ângulo máximo de direção do
veículo, relacionado diretamente com o raio que ele consegue descrever em movimento.
Para a determinação do raio, é utilizado o princípio de direção de Ackerman, o qual
define a relação entre os eixos dianteiros do veículo e o eixo de direção.
A partir do surgimento das primeiras carruagens, que possuíam um eixo dianteiro
móvel a qual determinava a direção que a mesma tomava, alguns problemas de
performance e inconvenientes começaram a surgir. Um destes inconvenientes era o grande
vão livre necessário ao redor das rodas para permitir o seu movimento completo.
Por volta do ano de 1816 George Langensperger estabeleceu as condições
geométricas necessárias para o esterçamento com pivotamento nas rodas. Estas condições
foram de grande serventia por dois grandes motivos. Primeiro, estas condições reduziam o
10
atrito das rodas em manobras que envolviam baixa velocidade e segundo descreviam arcos
de manobras com pequenos raios.
Devido a grande importância das condições estabelecidas por George, um outro
grande visionário, Rudolph Ackerman, através de um acordo estabelecido com
Langensperger patenteou a ideia. Assim em Londres a partir de 1817 a “geometria de
Ackerman” ficou amplamente conhecida.
A geometria de Ackerman, como ficou conhecida, basicamente consiste num arranjo
geométrico de ligações na direção de um veículo projetado para resolver o problema do
trajeto da roda interior, que é a roda que fica do lado do centro de uma curva, e exterior
sendo necessário traçar circunferências de diferentes diâmetros.
Quando um veículo é manobrado, segue um caminho que é parte de uma
circunferência cujo o centro se encontra na linha que se estende a partir do eixo fixo. Com o
lado exterior da roda à curva a ser percorrida na circunferência é maior que o lado interior.
Considerando assim os dois lados da roda, a geometria de Ackerman realiza a disposição
automaticamente inclinando os pivots de direção para dentro. Este engenho garante que
qualquer que seja o ângulo da direção, as rodas vão traçar circunferências concêntricas e
os torques do sistema de direção tendem a crescer uniformemente com o ângulo de
esterçamento fornecendo assim uma resposta adequada ao motorista.
Basicamente o sistema Park Assist funciona da seguinte forma, o motorista que
deseja estacionar o seu veículo deve localizar uma possível vaga e então passar próximo a
mesma com velocidade reduzida. Essa velocidade é necessária para que os sensores
presente no veículo possam determinar se a vaga é suficiente para o mesmo. Caso o
espaço seja suficiente para realizar a manobra, o sistema Park Assist pode ser ativado para
que a baliza seja realizada de forma automática. [1]
O projeto tem como tema o desenvolvimento de um automodelo em escala reduzida
com sistema de Park Assist, a fim de demonstrar a problemática da baliza automática.
11
1.2 DELIMITAÇÃO DO ESTUDO
O projeto consiste em um automodelo com sensores de distância infravermelhos, no
qual será implementado o sistema de Park Assist. O algoritmo realiza a manobra de
estacionamento, a partir de uma posição paralela à vaga. Para o chassi especificado (28
cm de comprimento), o comprimento mínimo da vaga é de 88 cm. A teoria e os cálculos
para a obtenção deste valor serão detalhados no trabalho.
Para que o sistema seja ativado, o primeiro passo é acionar o sistema de detecção
de vaga. Este estágio é responsável por verificar se um determinado espaço paralelo ao
veículo é suficiente para a realização da baliza. Se a suposta vaga possuir o espaço
mínimo para a manobra, o motorista deve então posicionar o automodelo paralelamente a
vaga e acionar o sistema. A partir deste momento, o motorista deve deixar o controle do
veículo e a baliza será realizada de forma automática.
O sistema de Park Assist que será implementado no automodelo possuirá também
um controle detecção de colisão, dianteira e traseira. Esse atuará somente durante a
manobra do Park, ou seja, quando a manobra de baliza automática estiver sendo
executada e caso um obstáculo venha a bloquear a trajetória da manobra, o veículo
imediatamente interrompe a baliza até que não exista mais obstáculo obstruindo a sua
trajetória.
1.3 PROBLEMA
O projeto consiste na implementação do sistema Park Assist em um pequeno
automodelo. Entre os problemas abordados neste projeto podemos citar a construção e a
manipulação de sensores de infravermelho para determinação da vaga, bem como o
algoritmo de Park Assist prevendo supostas colisões e cálculo do espaço da vaga.
Com o desenvolvimento do projeto, a pergunta que se pretende responder é: Existe
a possibilidade de se realizar uma manobra automática em um automodelo, utilizando
sensores de infravermelho e um algoritmo para o Park automático?
A base para o desenvolvimento deste projeto é o estudo dos algoritmos de Park
Assist e as diferentes metodologias para a realização da manobra utilizados atualmente em
veículos automotores, como por exemplo o veículo Tiguan da Volkswagen. [2]
12
1.4 OBJETIVOS
Nesta seção são apresentados os objetivos geral e específicos do trabalho, relativos
ao problema anteriormente apresentado.
1.4.1 Objetivo Geral
Desenvolver um sistema de Park Assist utilizando sensores infravermelho.
Implementar um controle para evitar colisões utilizando sensores de infravermelho, para uma
melhor viabilidade.
1.4.2 Objetivos Específicos
Construir a placa de controle dos motores do automodelo.
Desenvolver o algoritmo para o controle dos movimentos do automodelo.
Construir sensores de distância utilizando emissores e receptores de Infravermelho.
Desenvolver um controle para leitura dos sensores.
Aplicar um algoritmo para manipulação dos sensores afim de evitar possíveis
colisões.
Desenvolver um algoritmo para realizar a baliza automática.
Implementar um algoritmo para realizar a verificação do espaço onde se pretende
estacionar o automodelo.
Criar uma interface de comunicação sem fio com a estação base para o envio e
recepção de dados.
1.5 JUSTIFICATIVA
O Park Assist surgiu com o intuito de auxiliar os motoristas na execução da baliza.
Para muitos motoristas, o ato de realizar uma baliza é um grande problema que pode
causar prejuízos financeiros e até mesmo graves acidentes. Tendo em vista este grande
desafio, muitas das grandes empresas do ramo automobilístico estão desenvolvendo
tecnologias para o Park Assist, que trazem conforto e segurança aos motoristas.
13
A justificativa para o desenvolvimento deste projeto é a implementação de uma
plataforma para a análise de algoritmos de Park Assist considerando os sensores de
infravermelho.
1.6 PROCEDIMENTOS METODOLÓGICOS
Adaptação do chassi do automodelo.
Teste dos motores contidos no chassi do automodelo.
Confecção e estudo dos sensores infravermelhos;
Análise da resposta do sensor IR x Distância;
Desenvolvimento e implementação de um encoder para controle da distância
percorrida e da velocidade;
Estudo do Xbee para comunicação sem fio entre o automodelo e a estação base;
Implantação dos sensores de infravermelho ao redor do chassi do automodelo;
Estudo da plataforma Arduino.
Desenvolvimento de um driver para controle de tensão dos motores.
Testes com o automodelo montado para verificação do algoritmo;
Desenvolvimento do software contendo a interface de comunicação Xbee para envio
e recepção dos dados.
1.7 EMBASAMENTO TEÓRICO
Para o desenvolvimento do Park Assist, serão utilizados como referencial teórico
para a geométrica de Ackerman e metodologia de estacionamento os artigos [6], [9], [10] e
[11].
14
1.8 ESTRUTURA DO TRABALHO
O trabalho terá a seguinte estrutura.
Capítulo 1 - Introdução: Apresentação da problemática do Park Assist: delimitação do
que o projeto abordará e seus objetivos.
Capítulo 2 – Fundamentação teórica: base teórica para o desenvolvimento do projeto.
Capítulo 3 – Desenvolvimento do Projeto: desenvolvimento e análise dos resultados
obtidos com o projeto,
Capítulo 4 – Resultados: exposição dos trabalhos efetuados no projeto e os testes
realizados.
Capítulo 5 – Considerações finais : descrição sobre os objetivos atingidos do trabalho e
referência sobre aprimoramentos do algoritmo e futuras implementações.
15
2. FUNDAMENTAÇÃO TEÓRICA
2.1 ARDUINO
O Arduino consiste em uma plataforma open source de hardware baseada em um
microcontrolador e em um ambiente de desenvolvimento de software integrado a qual
possui portas analógicas, digitais e entradas RX e TX para comunicação serial. A
plataforma possui alguns comandos para controle de hardware presente no mesmo, entre
eles estão o PinMode, DigitalWrite, DigitalRead e AttachInterrupt.
O PinMode tem como objetivo basicamente declarar um terminal (conexão de
hardware) como entrada ou saída. O comando DigitalWrite determina o nível lógico de um
terminal, HIGH para o nível alto e LOW para o nível baixo. Já o comando DigitalRead
possui a função de realizar a leitura dos niveis lógicos HIGH e LOW. Para interrupções de
hardware a plataforma oferece o comando AttachInterrupt que desvia o fluxo de
processamento principal para uma rotina de tratamento de interrupção, ou seja, quando
acontece um evento externo uma interrupção é disparada e um código para tratar essa
interrupção é executado. A Tabela 1 apresenta os terminais destinados à interrupção para
cada modelo do arduino.
Tabela 1: Terminais destinados a interrupção de cada modelo do Arduino
Board Int
0
Int
1
Int
2
Int
3
Int
4
Int
5
Uno 2 3
Ethernet
Mega2560 2 3 21 20 19 18
Leonardo 3 2 0 1 7
Due
16
2.2 PONTE H
A ponte H, como é comumente conhecida, é um circuito eletrônico que permite o
acionamento de motores elétricos de corrente contínua com diferentes tensões e sentidos
de rotação. É composta basicamente de quatro “chaves” de comutação com o formato de
um H como pode ser observado na Figura 1.
Figura 1: Ponte H, fonte:McManis [12]
Na ponte as chaves são acionadas em pares. O acionamento deve ser feito de forma
que as chaves do mesmo lado da ponte não sejam acionadas ao mesmo tempo, o que
causaria um curto circuito. O objetivo da ponte H é tornar possível o movimento do motor no
sentido-horário e no sentido anti-horário. Quando os interruptores High Side left e Low Side
right estão ligados e os outros desligados a corrente terá o sentido do terminal positivo para
o negativo, fazendo o motor girar no sentido horário como mostra a Figura 2 com o sentido
da corrente na cor verde.
17
Figura 2: Ponte H com o sentido da corrente em verde quando os terminais High Side Left e Low Side Right estão conectados, fonte: McManis [12]
No caso em que as chaves “High side right” e “Low Side left” estão ligadas e as
outras duas desligadas o motor possuirá rotação no sentido anti-horário.
Existem diversos componentes que podem ser utilizados como “chaves” dessa
ponte, entre eles estão relés e transistores.
2.3 PWM
O Pulse-width modulation (PWM), em português modulação por largura de pulso,
consiste na modulação de um sinal através da largura do pulso do sinal, ou seja, os pulsos
possuem tamanho variável, como podemos observar na Figura 3 onde o PWM é
representado em azul e a tensão alternada correspondente a esse PWM é apresentada em
vermelho.
.
18
Figura 3: Tensão em PWM em azul e tensão em corrente alternada em vermelho, fonte: [7]
Esta técnica é utilizada para acionamento de motores elétricos, pois o torque é
mantido em baixas velocidades.
2.4 CHAVE ÓPTICA
A chave óptica consiste em um componente constituído por um emissor e um
detector de raios infravermelho. Quando um feixe de infravermelho é emitido do emissor
para o receptor e não há nada interrompendo o fluxo, a tensão de saída de uma chave
óptica é igual ao nível lógico HIGH. Já quando existe um obstáculo obstruindo o feixe do
raio infravermelho a tensão de saída da chave é igual ao nível lógico LOW.[13]
Figura 4: Chave Ótica
19
2.5 SENSOR INFRAVERMELHO
Sensores infravermelhos se utilizam da intensidade de luz infravermelha no ambiente
para a detecção de distância. Um emissor é responsável por enviar um sinal infravermelho
até o obstáculo, e um receptor deve receber a luz infravermelha refletida através do
obstáculo. A variação dos raios infravermelhos recebidos pelo receptor geram uma variação
de tensão no mesmo. [15]
2.6 GEOMETRIA DE ACKERMAN
A geometria de Ackerman [8], como ficou conhecida, consiste num arranjo
geométrico de ligações na direção de um veículo projetado para resolver o problema do
trajeto da roda interior, que é a roda que fica do lado do centro de uma curva e exterior
sendo necessário traçar circunferências de diferentes diâmetros.
Quando um veículo é manobrado, o mesmo segue um caminho que é parte de uma
circunferência cujo o centro se encontra na linha que se estende a partir do eixo fixo. Com o
lado exterior da roda à curva a ser percorrida na circunferência é maior que o lado interior.
Considerando assim os dois lados da roda, a geometria de Ackerman realiza a disposição
automaticamente inclinando os pivôs de direção para dentro. Este engenho garante que
qualquer que seja o ângulo da direção, as rodas vão traçar circunferências concêntricas e
os torques do sistema de direção tendem a crescer uniformemente com o ângulo de
esterçamento, fornecendo assim uma resposta adequada ao motorista.
Com base nestes estudos e cálculos determinados por Ackerman é possível
determinar o tamanho mínimo necessário para estacionar um veículo.
Basicamente pode-se dividir a manobra em três etapas: A primeira consiste no
alinhamento paralelo do automodelo com o veículo da frente, que corresponde a trajetória
do ponto ‘N’ ao ponto ‘P’ como mostra a Figura 5.
A segunda e a terceira etapa são de fato as etapas consideradas automáticas do
Park Assist e correspondem as etapas do ponto ‘P’ ao ponto ‘O’ e do ponto ‘O ao ponto ‘Q’
da Figura 5.
20
Figura 5: Trajetória do Park. Fonte [8]
Para os cálculos algumas definições são necessárias, onde :
d : distância entre os pontos de contato da roda traseira
l : comprimento entre parte dianteira e traseira do automodelo
ei1 : ângulo interior da roda da frente
ei2 : ângulo externo da roda da frente
RS1 : raio do 1º ângulo de direção de curvatura
S2 : raio do 2º ângulo de direção de curvatura
do : largura do automodelo
Figura 6: Ângulo de direção de geometria. Fonte: [8]
Os ângulos de direção de curvatura do automodelo como apresentados na figura 6,
podem ser definidos através da seguinte formula:
(1)
21
Figura 7: Planejamento da trajetória do estacionamento. Fonte [8]
A Figura 7 apresenta o planejamento da trajetória do estacionamento, onde se tem
uma forma geométrica de um triângulo que é apresentado na com maior enfoque.
Figura 8: Forma geométrica do triângulo formado na realização da manobra. Fonte: Autoria própria
Considerando o Teorema de Pitágoras o qual relaciona que o quadrado do
comprimento da hipotenusa é igual à soma dos quadrados dos comprimentos dos catetos,
temos para o cálculo da vaga a seguinte relação:
22
(2)
Os ângulos α e β podem ser determinados através das seguintes expressões:
(3)
(4)
Os comprimentos dos arcos ‘PO’, que corresponde a distância do ponto P até o
ponto O e do arco ‘QO’ que corresponde a distância do ponto Q até o ponto O da Figura 6 e
podem ser determinados através das seguintes expressões:
(5)
(6)
2.7 PROCESSING
O processing é uma linguagem de programação baseada em Java e ambiente de
programação, utilizada amplamente por estudantes. A linguagem oferece integração com
Arduino e permite criações gráficas de forma rápida e simplificada. Com esta linguagem de
programação e ambiente de desenvolvimento, a programação torna-se mais simples para
comunicar com porta serial por já possuir bibliotecas nativas para tal uso. [14]
2.8 ZIGBEE
Protocolos de comunicação sem fio vêm sendo utilizados em larga escala em
sistemas embarcados. Entre esses protocolos esta o ZigBeee, que possui um baixo
consumo de energia e uma infraestrutura simples de rede. Além disso o ZigBee transmite
por uma frequência de 2,4 GHz e um alcance aproximado entre 10 a 100 metros.
Existem basicamente dois modos de operação, o modo API e o modo Transparente.
O modo Transparente funciona de forma que todos os pontos possam receber dados.[18]
23
3. DESENVOLVIMENTO DO PROJETO
3.1 MOTORES E PLATAFORMA DO AUTOMODELO
Para o desenvolvimento do automodelo são necessários motores para a
movimentação e uma plataforma para servir como base para a eletrônica embarcada e os
motores. Os motores e a plataforma do automodelo foram obtidos através de um carrinho
de brinquedo de controle remoto, do qual foi retirada a parte eletrônica de controle dos
motores e comunicação. Na Figura 9 é apresentada a plataforma do automodelo com os
motores.
Figura 9: Plataforma com motores do automodelo. Fonte: Autoria própria
O automodelo é composto por dois motores de corrente contínua com escovas,
sendo um dianteiro e um traseiro. O motor dianteiro tem como objetivo controlar o ângulo
de movimentação do automodelo, ou seja, é responsável pela direção. Já o motor traseiro é
responsável pela tração do automodelo.
A plataforma do automodelo como observado na Figura 9 é composta basicamente
de plástico.
24
3.2 DRIVER DE CONTROLE DOS MOTORES
O driver de controle de tensão nos motores tem como objetivo controlar o motor de
forma a rotacionar no sentido horário e anti-horário. Outra funcionalidade do driver é variar
a velocidade dos motores mantendo o torque. Para isso o driver deve receber uma tensão
em PWM apresentada na seção 2.3 e fornecer uma tensão correspondente para os
motores, como é apresentado na Figura 10.
Figura 10: Entrada e saída do driver de motores. Fonte: Autoria própria
Para a construção do driver foram utilizados os circuitos integrados L298[18] e
4N25[17]. Os datasheets dos mesmos podem ser encontrados na seção de anexos. O
circuito integrado L298 [18] consiste em um circuito com duas pontes H, conforme
apresentada na seção 2.2. Esse circuito integrado exerce a função do driver para controle
dos motores, ou seja, recebe uma tensão modulada em PWM e fornece uma devida tensão
para o motor. Já o circuito 4N25 [17] é um circuito optoacoplador, que tem como objetivo
desacoplar eletricamente o circuito dos motores do gerador de PWM. Caso não se utilize
está técnica pode ocorrer de o gerador de PWM funcionar de maneira incorreta, devido ao
ruído gerado pelos motores. Na Figura 11 é exibido o circuito completo do driver.
25
Figura 11: Driver de controle dos motores Fonte: autoria própria.
3.3 ENCODER
O sistema de Park Assist necessita de um sistema para medir a distância
percorrida, pois no sistema é necessário verificar se a vaga possui tamanho suficiente para
realização da manobra. Um dos componentes necessários para medir a distância
percorrida é o encoder, que foi desenvolvido com 8 furos como apresentado na Figura 12.
26
Figura 12: Encoder. Fonte: Autoria própria
Para a leitura do encoder foi acoplada uma chave ótica apresentada na seção
2.4, que quando posicionada na direção de um dos furos do encoder, ou seja, não está
interrompida, a tensão de saída é próxima de 0V e quando interrompido, não está na
direção de nenhum dos furos do encoder a tensão de saída é próxima a 5V. O circuito
integrado C860NP[18] juntamente com um resistor pode ser utilizado para realizar essa
função.
A saída de tensão possui algumas variações, ou seja, não possui dois valores de
tensão constante para a chave ótica interrompida e não interrompida. Para resolver pode-se
adicionar o circuito integrado LS7404 [19] que é uma porta lógica NOT, com isso o circuito
de leitura do encoder possui somente duas tensões de saída 0V e 5V. Na Figura 13 é
apresentado o circuito para a leitura do encoder na qual a saída da leitura está conectada
ao Arduino.
Figura 13: Circuito para leitura do encoder. Fonte: Autoria própria
27
3.4 MEDIÇÃO DA DISTÂNCIA PERCORRIDA
Para a medição da distância percorrida é necessária à utilização de um encoder e
um leitor de encoder apresentados na seção 3.3. Além disso, utilizamos o Arduino
apresentado na seção 2.1. O microcontrolador possui portas para tratamento de
interrupção, ou seja, quando acontecer uma interrupção na porta o processador executa um
código a fim de tratar a interrupção. A distância percorrida é calculada com o auxilio de um
contador que é incrementado quando existe uma interrupção na chave ótica causada pelo
encoder. A função de interrupção utilizada incrementa o contador somente quando há uma
transição de LOW para HIGH. A distância é dada pela formula abaixo:
( 7 )
onde:
r : raio da roda em cm;
n : número de interrupções;
π : 3,14
d : distância percorrida em cm;
No projeto o raio da roda é de 2,5 cm. Assim temos a seguinte equação abaixo
(8)
Substituindo os valores, chegamos a seguinte expressão:
(9)
28
3.5 CÁLCULOS PARA O TAMANHO DA VAGA
O cálculo do tamanho da vaga foi realizado utilizando como parâmetro os conceitos
apresentados na seção 2.6 referentes à geometria de Ackerman.
Para os cálculos, primeiramente os seguintes parâmetros foram aferidos:
ei1 = 19,1º
ei2 = 21,5º
l = 17,51cm
d = 8,01 cm
Através das formulas de (5) e (6) e os parâmetros definidos acima, os seguintes
cálculos foram realizados:
(7)
RS1 = 54,57
(8)
RS2 = 48,45
Considerando a equação (2) temos que:
AC = 103,02
Utilizando a equação (3) temos:
= 58,01º (9)
e assim:
β = 58,01º
29
Levando em conta a relação do Teorema de Pitágoras relatada na equação (2)
temos que:
(10)
e, portanto o tamanho da vaga calculado para o projeto é de:
3.6 CONSTRUÇÃO DE SENSORES DE INFRAVERMELHO
Os sensores de infravermelho no projeto tem como objetivos a medição do tamanho
da vaga, com o auxílio do encoder, e a detecção de colisão dianteira e traseira. Para a
medição do tamanho da vaga foram utilizados dois sensores laterais e para a detecção de
colisão um sensor dianteiro e um traseiro. A Figura 14 apresenta a disposição dos sensores
no automodelo.
Figura 14: Disposição dos sensores no automodelo. Fonte: Autoria própria
O desenvolvimento dos sensores de infravermelhos foram realizados pela equipe
através de um emissor IR e um receptor IR acoplados um ao lado do outro. O receptor por
sua vez foi protegido em sua base com uma capa preta para evitar a recepção de sinais
emitidos diretamente pelo emissor. O princípio de funcionamento do conjunto é baseado na
30
reflexão da luz infravermelha no obstáculo e a captação alguns milissegundos após pelo
emissor.
Para a medição dos sensores de infravermelho foi desenvolvido um algoritmo
descrito no pseudo código no Quadro 1. O tempo de espera entre emissão e leitura foi
calculado baseado na velocidade da luz que é 299792458 m/s. Ou seja, em 1 milisegundo
de espera a luz poderia ser refletida a 149896 metros. Isso nos garante que a luz foi
refletida já que os sensores são utilizados para um obstáculo a no máximo 10 cm de
distância.
Desliga emissor
Aguarda 1 ms
Lê o Infra Vermelho ambiente
Liga o Emissor
Aguarda 1 ms para reflexão
Le o Infra Vermelho no sensor
Valor lido = IR sensor - IR ambiente
Quadro 1: Pseudo código para leitura dos sensores de infravermelho
Os sensores desenvolvidos apresentaram uma particularidade, reagiam de forma
diferente para ambientes com intensidades de iluminação diferentes. Portanto foi
necessário desenvolver um algoritmo de calibragem dos sensores.
Antes disso efetuou-se medições de cada um dos 4 sensores iR em ambientes
diferentes. Alguns resultados podem ser vistos nos gráficos da Figura 15.
31
Figura 15: Medições e Distâncias em diferentes ambientes
32
Percebeu-se que cada sensor, mesmo que em condições diferentes de iluminação
ambiente apresentavam uma curva de resposta semelhante, que só diferiam em alguns
pontos.
Com base nisso e nos gráficos levantados utilizou-se regressão lagrangiana para encontrar
uma fórmula matemática para a curva. Como o algoritmo de lagrange fornecia uma função
de segundo grau a resposta era negativa em alguns trechos, o que não é aceitável.
O resultado utilizando o algoritmo de lagrange pode ser visto no gráfico da figura
Figura 16.
Figura 16: Medição Absoluta vs. Distância Real
Efetuando-se uma nova análise dos gráficos percebeu-se que seria possível supor
um comportamento linear para os sensores em 2 trechos sem grandes perdas de precisão.
De 10 cm a 4cm e de 4.01 cm a 1 cm. Ainda percebeu-se que a medição referente a 1 cm
era a que mais variava e as outras até 4.01 cm estavam atreladas a ela. Com essa última
observação foi possível desenvolver um algoritmo de calibração que leva em conta o valor
medido de um obstáculo a 1 cm do sensor para criar a função matemática que descreve o
sensor. Assim cada sensor ao longo do uso do automodelo, após a calibração, possui uma
função matemática que o descreve gerada a partir de interpolação linear de 3 pontos fixos e
1 ponto inserido com a calibragem.
O algoritmo de calibração executado no reset do micro controlador em pseudo
código.
33
1 BEEP para calibração For sensores Do BEEP número de vezes referente ao sensor Enquanto (Valor sensor < 100) // sem obstáculo a 1 cm Salva valor para 1cm BEEP de confirmação Próximo sensor
BEEP longo de fim de calibração
E pseudo código de conversão de valores medidos
Faz a medição absoluta Efetua a interpolação linear com o valor calibrado Retorna o valor em cm
3.7 ESTAÇÃO BASE
A estação base tem como função no projeto o envio dos comandos de
movimentação do automodelo em modo livre (sistemas de Park Assist e detecção de vagas
desligados) e comandos para iniciar a detecção de vagas e a baliza. Na Tabela 2 são
apresentados os comandos implementados pela estação base.
Tabela 2: Comandos e descrição. Fonte: Autoria própria
Comando Descrição Comando
F1, F2 ou F3 Mover para frente com potência 1, 2
ou 3
T1, T2 ou T3 Mover para trás com potência 1, 2
ou 3
D ou E Girar rodas dianteiras para a direita
ou esquerda
FD e FE Mover para frente e para a direita ou
mover para frente e esquerda,
34
respectivamente
TD e TE mover para trás e para a direita ou
mover para trás e esquerda
P iniciar algoritmo de estacionamento
S parar movimentação
Para o desenvolvimento da estação base foi utilizada a linguagem de programação
Processing. A interface gráfica implementada pode ser visualizada na Figura 17 onde são
apresentadas as leituras de sensores e as instruções para a operação da mesma.
Figura 17: Interface gráfica da estação base. Fonte: Autoria própria
35
3.8 COMUNICAÇÃO SEM FIO
Para o desenvolvimento da comunicação sem fio utilizou-se o protocolo ZigBee
apresentado na seção 2.8 implementado no Xbee. O modo utilizado para comunicação
Xbee foi o modo transparente, pois o já havia sido desenvolvida uma comunicação serial
com a estação base o que facilitou o acoplamento do mesmo. O padrão de dados a enviar
para comunicação seguiu o padrão apresentada na Tabela 2 da seção 3.7.
3.9 ALGORITMO DE PARK ASSIST
O algoritmo de Park Assist foi segmentado em duas partes, uma parte para a
detecção de vaga e outra para realizar a manobra. A parte de detecção de vagas
basicamente utiliza da técnica da medição de distância percorrida apresentada na seção
3.4 e da leitura de sensores exibida na seção 3.6. A Figura 19 exibe o diagrama de estados
para essa detecção.
36
Figura 18: Diagrama de estados para detecção de vaga. Fonte: Autoria própria
O algoritmo de detecção de vagas portanto realiza a leitura dos sensores laterais e
caso estejam livres é iniciada a contagem do tamanho da vaga. Se os sensores
continuarem livres até o tamanho estipulado da vaga, que é 88 cm ,o automodelo envia
para a estação base uma mensagem notificando uma mensagem que o a manobra de
baliza pode ser iniciada.
A manobra de estacionamento para ser realizada deve respeitar as seguintes proposições:
O automodelo deve estar paralelo com a vaga
O automodelo deve estar a uma distância lateral fixa, pois o método funcionará de
acordo com os cálculos do raio do veículo.
37
A Figura 19 apresenta o diagrama de estados para a realização da baliza.
Figura 19: Diagrama de estados para a realização da baliza.Fonte: Autoria própria
A baliza é realizada utilizando os conceitos apresentados na seção 2.6.
Com objetivo de explorar o tema foi realizada uma segunda modelagem para
realização da manobra da baliza. A segunda implementação leva em consideração a leitura
de sensor lateral para determinar quando trocar o ângulo da direção. Esse método
entretanto exige uma calibração fina dos sensores, influenciando a qualidade da manobra.
38
4. RESULTADOS
O início do projeto após a adequação do chassi foi a confecção da placa contendo o
driver dos motores, na qual foi montada a ponte H e as conexões do encoder.
Figura 20: Foto do driver dos motores
Devido as restrições de corrente do Arduino, foi necessário a utilização de um driver
de corrente, escolhido o LM2803 [21], com a funcionalidadede de melhorar a potência dos
sensores IR,
Figura 21: Foto do driver de corrente acoplado ao circuito
39
Inicialmente os cabos utilizados para as conexões dos sensores foram montados a
partir de cabos de rede, porém por serem rígidos, os problemas de mal contato se tornaram
constantes. Para solucionar o problema, foram confeccionados kits de cabos flexíveis,
resolvendo praticamente todas as questões de mal contato do projeto.
Figura 22: Foto dos jumpers utilizados para integrar circuitos
Para melhor fixação do Arduino, o chassi foi perfurado para permitir a inserção de
parafusos, os quais foram posicionados no local dos furos que o próprio Arduino possui.
Isso garantiu a melhor estabilidade da placa.
Figura 23: Foto do automodelo com o arduino e os circuitos auxiliares
40
Para a realização do ensaio do projeto, foi criado um cenário de testes, com as
superfícies brancas especificadas nas restrições e modularizado, permitindo o ajuste do
espaço da vaga em cada teste.
Figura 24: Cenário de Testes
41
Por fim foi customizada a parte externa do automodelo, através de um molde
impresso em papel fotográfico e estruturado para ficar mais rígido e permitir a fixação no
carrinho.
Figura 25: Automodelo com molde em papel fotográfico
42
5. ENSAIO
De acordo com a delimitação, o teste inicial de manobra fez uso do sistema de
detecção da vaga dentro do espaço ensaiado de 88cm.
Figura 26:Início da detecção da vaga
Figura 27: Manobra na vaga de 88cm
43
Figura 28: Fim da manobra
Outro teste realizado também foi o para verificar se o automodelo realmente é capaz
de detectar uma vaga. Nesse caso foi ajustado o cenário para um tamanho inferior ao
mínimo da vaga.
Figura 29: Automodelo tentando estacionar em vaga menor que o mínimo
44
Figura 30: Automodelo ignora o espaço menor que o mínimo e segue adiante
Nesse caso o automodelo não sinalizou que existe uma vaga válida e por isso o
sistema tenta novamente localizar uma vaga.
O outro teste também envolve as leituras dos sensores dianteiro e traseiros, para
evitar uma colisão durante a manobra do Parking.
A partir do instante que o sensor localiza um objeto a frente muito próximo, o carrinho
interrompe a manobra e aguarda até a remoção do obstáculo para poder continuar a
manobra, isso tanto para o sensor dianteiro quanto o traseiro.
45
Figura 31: Obstáculo interrompendo a manobra do automodelo
O último teste teve como objetivo verificar o tamanho mínimo o qual o automodelo é
capaz de estacionar, usando somente a função Park Assist, sem verificar o tamanho da
vaga. O tamanho mínimo da vaga alcançado foi de 66cm.
Figura 32: Estacionamento em vaga de 66 cm
46
Figura 33: Demonstração de automodelo estacionando em vaga de 66 cm
Ao realizarmos algumas melhorias no eixo dianteiro do automodelo, de forma que o
ângulo de curvatura interior e exterior referente a roda fossem maiores, conseguimos uma
redução no tamanho da vaga. Estes ângulos estão diretamente envolvidos nos cálculos
seguindo a geometria de Ackerman.
Os novos ângulos interior e exterior do automodelo passaram a ser de:
ei1 = 30,1º
ei2 = 35,5º
Realizando novamente os cálculos através das formulas (5), (6), (9) e (10),
chegamos a um novo tamanho mínimo para a vaga correspondente a:
47
6. CONSIDERAÇÕES FINAIS
Para desenvolvimento de um sistema de park assist a equipe entrou em contato com
diversas áreas e aplicou o conhecimento da maior parte das disciplinas cursadas. A equipe
como um todo se envolveu no projeto nas áreas de planejamento, software, hardware,
testes e apresentação do produto desenvolvido.
Partiu-se do princípio de modelos pré-existentes no mercado automobilistico e a
equipe pode aprofundar seus conhecimentos através de uma ampla pesquisa da biografia
que seria utilizada para embasamento do desenvolvimento do projeto. Nesse momento a
equipe foi surpreendida por estudos realizados sobre parking de veículos no ano de 1816
que já previam manobras para estacionar carroças o qual a equipe baseou grande parte do
algoritmo desenvolvido nesse trabalho.
A pesquisa assim como a implementação do projeto proveu valiosos conhecimentos
principalmente na área de sensoriamento ao passo que a equipe desenvolveu um sistema
completo de sensoriamento, desde a implementação eletrônica do sistema, a montagem e a
solda dos componentes do sensor, o encapsulamento do sistema, o desenvolvimento de
um driver para utilização do sistema e sua integração com o software embarcado.
O tempo foi um grande fator limitante para a equipe já que o semestre letivo possuí
somente 4 meses. Mesmo assim a equipe pode contornar o fato utilizando seu período de
recesso para o desenvolvimento bem como um bom planejamento e as escolhas certas do
que seria implementado.
A aplicação do algoritmo baseado na trajetória em arco, de acordo com a geometria
do automodelo foi a fundamentação da proposição simplificada para a problemática do Park
Assist. A Partir dos calculos e dos testes com o automodelo ficou claro a equipe que a
escolha de tal metodologia para ser seguida se mostrou bastante eficiente, visto que
encima das delimitações do projeto, os nossos objetivos foram alcançados.
Assim que os objetivos do projeto foram alcaçados uma das medidas para
otimização do projeto adotada pela equipe foi a de melhorar os angulos de inclinação das
rodas dianteiras do automodelo. Com esta melhoria podemos perceber um ganho
48
significativo na redução do tamanho da vaga, que chegou a ser 20% menor que o
tamanho especificado no início do projeto.
O aprimoramento do sistema incluindo a função de alinhamento do veículo, e
otimização do espaço para manobra trariam melhorias substanciais ao projeto, visto que
assim o automodelo em questão se tornaria bem mais robusto. A substituição dos sensores
por uma câmera traria uma melhor precisão na detecção de obstáculos e determinação do
espaço para a manobra da baliza. Porem por questões de prazo e delimitações da
disciplina, tais melhorias não puderam ser implementadas.
A plataforma Arduino é um incrível meio para desenvolvimento devido a sua
acessibilidade em custo e facilidade para diversas implementações. Tal plataforma
escolhida pelo grupo atendeu todas as expectativas com relação a processamento de
código e envio e recepção dos dados.
A linguagem Processing utilizada pela equipe para realizar a recepção dos dados
bem como o envio do feedback ao automodelo, foi considerada ótima pela equipe visto que
a mesma é bastante simples de se programar e atendia as necessidades da equipe. Vale
ressaltar aqui, que a partir deste projeto todos os membros da equipe adquiriram um novo
conhecimento sobre esta linguagem que é o Processing.
Com relação a estrutura fisíca do automodelo, foi necessário ser feito uma adaptação
na estrutura física externa do automodelo, para que o mesmo pudesse vir a comportar os
novos componentes que nele foram agregados. Tais modificações tiveram que ser bastante
cautelosas, visto que não poderíamos agregar muito peso ao automodelo. Sendo assim
materiais como os utilizados para a fixação dos sensores bem como os próprios fios
utilizados foram selecionados visando agregar um menor peso ao automodelo.
Por fim a equipe pode concluir o trabalho tendo adaptado um carrinho de controle
remoto tradicional, construído um sistema de sensoriamento, desenvolvido um sistema
embarcado de park assist com controle sem fio e um software para controle e
acompanhamento do veículo. Os objetivos foram compridos de acordo com o planejado e o
projeto poderá servir de base para novas equipes que desejem trabalhar com sistemas de
auxílio a estacionamento como também sistemas que utilizem sensoriamento infravermelho.
49
7. BIBLIOGRAFIA
[1] A. GUPTA e R. DIVEKAR, “Autonomous Parallel Parking Methodology for Ackerman
Configured Vehicles,” Department of Electronics and Telecomunication, p. 6, 2011.
[2] Volkswagen, Volkswagen, [Online]. Disponível em:
http://www.volkswagen.co.uk/technology/parking-and-manoeuvring/park-assist. [Acesso
em 19 Agosto 2014].
[3] “Introduction,” [Online]. Disponível em: http://arduino.cc/Guide/Introduction. [Acesso em
19 Agosto 2014].
[4] “Pulse Width Modulation,” [Online]. Disponível em: en.wikipedia.org/wiki/Pulse-width-
modulation. [Acesso em 19 Agosto 2014].
[5] P. L. Candido, “GT Zero,” 05 Maio 2014. [Online]. Disponível em:
http://gtzero.com.br/park-assist/. [Acesso em 19 Agosto 2014].
[11] H. Park, S. BAEK e S. LEE, “IR Sensor Array for a Mobile Robot,” International
Conference on Advanced Inteligent Mechatronics, p. 6, 2005.
[12] C. McMANIS, “H-Bridges: Theory and Practice,” 23 Dezembro 2006. [Online]. Disponível
em: http://www.mcmanis.com/chuck/Robotics/tutorial/h-bridge/. [Acesso em 19 Agosto
2014].
[13] “Chave Óptica,” [Online]. Disponível em: http://www.labdegaragem.org/loja/photo-
sensor.html.
[14] “Processing.org,” [Online]. Disponível em: https://www.processing.org/.
[15] “Sensor de Infravermelho,” [Online]. Disponível em: http://robolivre.org/conteudo/sensor-
de-infravermelho. [Acesso em 19 Agosto 2014].
[16] “ZigBee,” [Online]. Disponível em: http://www.rogercom.com. [Acesso em 20 Janeiro
2012].
[17] “4N25, 4N26, 4N27, 4N28” [Online] Disponível em:
http://www.vishay.com/docs/83725/4n25.pdf [Acesso em 28 Agosto 2014]
[18] "C860NP Chave Ótica Interruptiva sem abas"
http://www.cromatek.com.br/pdf/opto/C860NP.pdf [Acesso em 28 de Agosto de 2014]
[19] "DUAL FULL-BRIDGE DRIVER"
https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf [Acesso em 28 de Agosto de
2014]
50
[20] "HEX INVERTER SN54/74LS04"
http://pdf.datasheetcatalog.com/datasheet/motorola/SN54LS04.pdf [Acesso em 28 de Agosto de
2014]
[21] "ULN2803A Darlington Transistor Arrays" http://www.ti.com/lit/ds/symlink/uln2803a.pdf
[Acesso em 28 de Agosto de 2014]
51
7. APÊNDICES
7.1 APÊNDICE A – Cronograma
7.2 APÊNDICE B – Riscos
Projeto: Carrinho de Controle Remoto com Sistema Park Assist
1º Etapa: Identificação do Risco
Denominação do Risco: chassi do carrinho No da Identificação:
01
Descrição do Risco: chassi base do carrinho de controle remoto
2º Etapa: Avaliação do Risco
Impacto: Alto: ( ) Médio/Alto: () Médio: (x) Médio/Baixo: ( ) Baixo: ( )
Explique: probabilidade de quebra durante o manuseio incorreto
52
Probabilidade: Alto: ( ) Médio/Alto: () Médio: ( ) Médio/Baixo: ( ) Baixo: ( x )
Explique: chassi significativamente reforçado, ao menos que haja quedas excessivas
dele.
3º Etapa: Resposta ao Risco
Estratégias e Ações: necessidade de substituição da base
Impacto Reavaliado: remontagem das
estruturas de controle
Probabilidade Reavaliada: rápida
substituição
Elaborado por: Felipe Lisboa Data: 07/05/2014
1º Etapa: Identificação do Risco
Denominação do Risco: motores DC do carrinho No da Identificação:
02
Descrição do Risco: danificação dos motores
2º Etapa: Avaliação do Risco
Impacto: Alto: ( ) Médio/Alto: ( ) Médio: ( x ) Médio/Baixo: ( ) Baixo: ()
Explique: probabilidade de queima caso haja uma sobretensão nos motores
Probabilidade: Alto: ( ) Médio/Alto: () Médio: ( ) Médio/Baixo: ( ) Baixo: ( x )
Explique: manuseio incorreto no motor dianteiro poderá expor ele a tensões acima da
aceitável.
53
3º Etapa: Resposta ao Risco
Estratégias e Ações: necessidade de substituição dos motores
Impacto Reavaliado: remontagem das
estruturas de controle
Probabilidade Reavaliada: depende do
encaixe do motor, caso não seja igual ao
modelo anterior.
Elaborado por: Felipe Lisboa Data: 07/05/2014
54
1º Etapa: Identificação do Risco
Denominação do Risco: manuseio do Arduino No da Identificação:
03
Descrição do Risco: manuseio da placa, alimentação, entradas e saídas.
2º Etapa: Avaliação do Risco
Impacto: Alto: ( ) Médio/Alto: (x) Médio: ( ) Médio/Baixo: ( ) Baixo: ()
Explique: probabilidade de queima ou dano a placa com o microcontrolador
Probabilidade: Alto: ( ) Médio/Alto: () Médio: ( ) Médio/Baixo: ( ) Baixo: ( x )
Explique: programação de pinagem incorreta ou ligação incorreta nos pinos da placa
3º Etapa: Resposta ao Risco
Estratégias e Ações: Necessidade de substituição da placa
Impacto Reavaliado: religamento dos
componentes a placa
Probabilidade Reavaliada: rápida
substituição, visto que os componentes
estão encaixados nela
Elaborado por: Felipe Lisboa Data: 07/05/2014
55
1º Etapa: Identificação do Risco
Denominação do Risco: manuseio da placa de controle
dos motores
No da Identificação:
04
Descrição do Risco: manuseio incorreto da placa confeccionada para controle dos
motores
2º Etapa: Avaliação do Risco
Impacto: Alto: ( ) Médio/Alto: () Médio: (x) Médio/Baixo: ( ) Baixo: ( )
Explique: Probabilidade queima de componentes
Probabilidade: Alto: ( ) Médio/Alto: () Médio: ( ) Médio/Baixo: ( ) Baixo: ( x )
Explique: ligação incorreta da alimentação do circuito de controle
3º Etapa: Resposta ao Risco
Estratégias e Ações: necessidade de substituição placa
Impacto Reavaliado: necessidade de
confecção de uma nova placa
Probabilidade Reavaliada: após a
confecção a substituição da placa no
projeto é rápida.
Elaborado por: Felipe Lisboa Data: 07/05/2014
56
1º Etapa: Identificação do Risco
Denominação do Risco: manuseio da placa zigbee No da Identificação:
05
Descrição do Risco: manuseio incorreto do módulo zigbee podendo danifica-lo
2º Etapa: Avaliação do Risco
Impacto: Alto: ( x ) Médio/Alto: ( ) Médio: ( ) Médio/Baixo: ( ) Baixo: ( )
Explique: ligação incorreta do zigbee pode queimar a placa, não permitindo o uso. E
tempo de espera de chegada da nova placa.
Probabili
dade:
Alto: ( ) Médio/Alto: ( ) Médio: ( ) Médio/Baixo: ( ) Baixo: ( x )
Explique: boa documentação base sobre as conexões
3º Etapa: Resposta ao Risco
Estratégias e Ações: necessidade de substituição
Impacto Reavaliado: reavaliação dos
contatos antes da reinstalação
Probabilidade Reavaliada: substituição
rápida no projeto.
Elaborado por: Felipe Lisboa Data: 07/05/2014
1º Etapa: Identificação do Risco
Denominação do Risco: problemas com o encoder No da Identificação:
06
Descrição do Risco: problemas na implementação e ajustes do encoder para a
57
leitura da velocidade do carrinho.
2º Etapa: Avaliação do Risco
Impacto: Alto: (x) Médio/Alto: ( ) Médio: ( ) Médio/Baixo: ( ) Baixo: ()
Explique: problema no uso do algoritmo do Park Assist.
Probabilidade: Alto: ( ) Médio/Alto: ( ) Médio: ( ) Médio/Baixo: ( ) Baixo: ( x )
Explique: vários integrantes da equipe já trabalharam com encoders
3º Etapa: Resposta ao Risco
Estratégias e Ações: necessidade de confecção e garantia de funcionamento
Impacto Reavaliado: necessidade de uma
remodelagem do algoritmo, baseando
puramente na leitura dos sensores de
distancia.
Probabilidade Reavaliada: aumento da
complexidade do algoritmo.
Elaborado por: Felipe Lisboa Data: 07/05/2014
58
1º Etapa: Identificação do Risco
Denominação do Risco: implementação do algoritmo de
Park Assist
No da Identificação:
07
Descrição do Risco: modelagem incorreta do algoritmo de Park Assist
2º Etapa: Avaliação do Risco
Impacto: Alto: (x) Médio/Alto: () Médio: ( ) Médio/Baixo: ( ) Baixo: ( )
Explique: não atendimento da proposta do projeto
Probabilidade: Alto: ( ) Médio/Alto: () Médio: ( ) Médio/Baixo: ( ) Baixo: ( x )
Explique: a metodologia do algoritmo não necessita de análise de muitas variáveis.
3º Etapa: Resposta ao Risco
Estratégias e Ações: Necessidade de ajuste do algoritmo
Impacto Reavaliado: necessidade de
testes para a conformidade do projeto.
Probabilidade Reavaliada: possibilidade
de funcionar de acordo com o
especificado.
Elaborado por: Felipe Lisboa Data: 07/05/2014
59
1º Etapa: Identificação do Risco
Denominação do Risco: desenvolvimento do sensor de
distância
No da Identificação:
08
Descrição do Risco: não funcionamento do sensor utilizando leds de infravermelho
2º Etapa: Avaliação do Risco
Impacto: Alto: ( ) Médio/Alto: () Médio: (x) Médio/Baixo: ( ) Baixo: ( )
Explique: perda do sensoriamento de distância
Probabilidade: Alto: ( ) Médio/Alto: () Médio: ( ) Médio/Baixo: (x) Baixo: ( )
Explique: já foram realizados alguns testes envolvendo o sensor.
3º Etapa: Resposta ao Risco
Estratégias e Ações: necessidade da substituição do sensor.
Impacto Reavaliado: necessidade de
mudança no controle de sensoriamento.
Probabilidade Reavaliada: substituição
rápida no projeto.
Elaborado por: Bruno Oenning Data: 07/05/2014
7.3 APÊNDICE C – Entregas
60
Projeto: Carrinho de Controle Remoto com Sistema Park Assist
Entrega 1 – Protótipo do carrinho
Estudo dos sensores
Resposta do motor
Algoritmo inicial de Park Assist
Aplicação da estação base simplificada: controle básico
Entrega 2 – Aprimoramento do carrinho
Ajuste da precisão dos sensores
Aprimoramento do sistema embarcado
Aprimoramento do algoritmo de Park Assist
Aplicação com aprimoramento da interação
Ajuste de documentação dos aprimoramentos
Entrega 3
Manipulação de sensores traseiros e dianteiros para detecção de colisão
Aprimoramento do algoritmo com os novos sensores
Envio do feedbak para estação base
Visualização dos dados da estação base no software
Ajuste na documentação da modelagem
Entrega 4 – Testes e análise do trabalho
61
Calibração dos sensores para demais casos
Tentativa de abordar alguns casos particulares de parking (manobras adicionais)
Aprimoramento visual do software da estação base
Especificação final e detalhamento da modelagem da aplicação final
62
8. ANEXOS
8.1 ANEXO A – Biblioteca de Motores e Sensores
Biblioteca de motores e
sensores
63
1. Descrição das Bibliotecas de Função
Para que pudesse ser feita a modularização do sistema embarcado utilizou-se o conceito de
bibliotecas na plataforma arduino. Dessa forma foi possível separar as implementações dos
códigos da leitura e controle dos sensores e dos motores.
Para o correto funcionamento das bibliotecas os seus respectivos códigos devem estar
localizados na pasta libraries do Arduino. Conforme Figura 34 - Localização do Código.
Figura 34 - Localização do Código
1.1. Biblioteca Sensores
A biblioteca dos sensores é responsável pelo controle dos sensores infravermelho utilizados no
projeto. O controle realizado nos 4 sensores é feito através da ativação do emissor
infravermelho e a leitura do valor recebido no receptor após um determinado tempo. A bibloteca
também é responsável por filtrar a incidência ambiente de luz no espectro infravermelho. Além
disso é feita a amostragem das medições a fim de garantir mais veracidade na leitura.
O resultado da leitura dos sensores é um valor sem unidade que deve ser convertido para
distância através da parametrização realizada por outros algoritimos do processo.
1.1.1. Algoritmo de Leitura
Para cada sensor infravermelho do projeto o código a seguir é executado:
Conforme explicado anteriormente esse processo é repetido conforme a quantidade de
amostras desejadas por medição.
digitalWrite(pinosEmissores[sensorCount],LOW); // desliga o emissor para captar a luz ambiente delay(10); // delay para ler valores ambientIR = analogRead(pinosSensores[sensorCount]); // luz ambiente digitalWrite(pinosEmissores[sensorCount],HIGH); // emite ir delay(10; obstacleIR = analogRead(pinosSensores[sensorCount]); // medição do sensor Ir distance+= ambientIR-obstacleIR; // diferenca entre ambiente e medido
64
1.1.2. Funções
O algorítimo de leitura é invisível aos outros módulos que farão uso das leituras, portanto
somente algumas funções públicas são acessadas.
1.1.2.1. Função leSensores
Entradas: Nenhuma.
Retorno: Printa na porta Serial a leitura de todos os sensores para debug.
Função: Utilizada para testar todos os sensores do projeto e acessar dados para calibrá-los.
1.1.2.2. Função leSensorFrente
Entradas: Nenhuma
Retorno: Retorna o valor referente a distância do sensor da frente até o obstáculo.
Função: Efetua a medição da distância em valor absoluto do sensor frontal até o obstáculo(se
houver).
1.1.2.3. Função leSensorLadoFrente
Entradas: Nenhuma
Retorno: Retorna o valor referente a distância do sensor lateral frontal até o obstáculo.
Função: Efetua a medição da distância em valor absoluto do sensor lateral frontal até o
obstáculo(se houver).
1.1.2.4. Função leSensorTras
Entradas: Nenhuma
Retorno: Retorna o valor referente a distância do sensor traseiro até o obstáculo.
Função: Efetua a medição da distância em valor absoluto do sensor traseiro até o obstáculo(se
houver).
1.1.2.5. Função leSensorLadoTras
65
Entradas: Nenhuma
Retorno: Retorna o valor referente a distância do sensor lateral traseiro até o obstáculo.
Função: Efetua a medição da distância em valor absoluto do sensor lateral traseiro até o
obstáculo(se houver).
1.1.3. Pinagem
A pinagem, ou seja, onde os sensores estão ligados fisicamente ao microcontrolador é
configurável através do código da biblioteca. Para o projeto foram utilizados os seguintes pinos
e sensores conforme Tabela 3 - Pinagem Sensores.
Tabela 3 - Pinagem Sensores
Sensor Emissor Receptor
Lateral Frontal 37 A1
Lateral Traseiro 31 A0
Traseiro 35 A5
Frontal 33 A4
1.1.4. Utilização
Para a utilização da biblioteca dos sensores deve-se efetuar no início do código o include da
biblioteca através da chamada #include <Sensor.h> e logo declarar o objeto da classe Sensor
Sensor sensor. A partir daí as funções já podem ser utilizadas normalmente conforme o
exemplo a seguir.
int distanciaMaxima=200;
if(sensor.leSensorLadoFrente()>distanciaMaxima){
//efetua algo
}
66
1.2. Biblioteca Motores
A biblioteca dos motores é responsável pelo controle dos motores utilizados no projeto. O
controle realizado nos 2 motores, um para mover o automodelo para frente a para trás e outro
para esquerda e direita é feito através de modulação de pulso PWM.
Apesar de ser uma biblioteca destinada aos atuadores(motores) ela também é responsável pelo
sensoriamento de distância percorrida pelo automodelo, de forma a controlar o momento ideal
para cessar o acionamento dos motores.
O resultado das chamadas das funções da biblioteca é a distância real percorrida pelo
automodelo.
1.2.1. Algoritmo de Acionamento do Motor
A função a seguir é utilizada para mover o protótipo para frente. Enquanto a distância desejada
não for atingida o motor é acionado durante um tempo previamente estipulado(delayMs) e então
os motores são parados até a próxima iteração.
A biblioteca pode ser configurada para reverter os motores no final da distância percorrida. Essa
função move o veículo para o sentido oposto por um tempo pré estipulado(relacaoFreio).
O acionamento em nível de hardware é realizado pelas funções privadas da bibloteca
acionando analogicamente por meio de PWM as portas dos motores conforme código de
exemplo:
void Motor::moveFront(int pwm) { analogWrite(tractionMotor[0],0); analogWrite(tractionMotor[1],pwm); }
distanciaDesejada=distancia; distanciaPercorrida=0;//zera odometro temporario while(distanciaPercorrida<distanciaDesejada){ moveFront(potencia); delay(delayMs);//distancia sera dita com o encoder stopAll();
} if(reverter>=1){ //ativa os motores no sentido contrário moveBack(potencia); delay(delayMs/relacaoFreio); stopAll(); }
67
1.2.2. Encoder
Para a utilização correta do encoder inicialmente a biblioteca informa ao microcontrolador a
porta e a função responsável por receber e tratar a interrupção gerada pelo sensor.
Então a cada interrupção a função acresce a uma variável de distância percorrida o valor
referente a:
O raio da roda utilizada no projeto foi de 2 cm. O valor 8 é referente a quantidade de
furos(interrupções) do encoder.
1.2.3. Funções
O algoritmo de controle dos motores também é transparente aos outros módulos que farão uso
dos atuadores, portanto somente algumas funções públicas são acessadas.
1.2.3.1. Função moveFrente
Entradas: (int,int) Distância em cm, potência 0-255.
Retorno: Retorna a distância real percorrida em centímetros.
Função: Utilizada para mover o automodelo para frente a uma determinada potência por uma
determinada distância em centímetros.
1.2.3.2. Função moveTras
Entradas: : (int,int) Distância em cm, potência 0-255.
Retorno: Retorna a distância real percorrida em centímetros.
Função: Utilizada para mover o automodelo para trás a uma determinada potência por uma
determinada distância em centímetros.
1.2.3.3. Função moveEsquerda
Entradas: (bool,int,int) Frente-true Trás-false, distância em cm, potência 0-255.
Retorno: Retorna a distância real percorrida em centímetros.
68
Função: : Utilizada para mover o automodelo para a esquerda para frente ou trás a uma
determinada potência por uma determinada distância em centímetros.
1.2.3.4. Função moveDireita
Entradas: (bool,int,int) Frente-true Trás-false, distância em cm, potência 0-255.
Retorno Retorna a distância real percorrida em centímetros.
Função: : Utilizada para mover o automodelo para a direita para frente ou trás a uma
determinada potência por uma determinada distância em centímetros.
1.2.3.5. Função getOdometro
Entradas: Nenhuma
Retorno: Retorna o valor referente a distância total percorrida até o momento.
Função: Utilizada para controle de distância percorrida pelo automodelo.
1.2.4. Pinagem
A pinagem, ou seja, onde os motores e o encoder estão ligados fisicamente ao microcontrolador
é configurável através do código da biblioteca. Para o projeto foram utilizados os seguintes
pinos e sensores conforme Tabela 4 - Pinagem Motores e Tabela 5 - Pinagem Encoder.
Tabela 4 - Pinagem Motores
Motor Pinos Enable
Direção 12,11 8
Tração 10,9 8
Tabela 5 - Pinagem Encoder
Encoder Pino
Encoder Distância 0
69
1.2.5. Utilização
Para a utilização da biblioteca dos motores deve-se efetuar no início do código o include da
biblioteca através da chamada #include <Motor.h> e logo declarar o objeto da classe Motor
Motor motor. A partir daí as funções já podem ser utilizadas normalmente conforme o exemplo a
seguir. A função move o veículo 5cm(distância) a uma potência 100 (0-255) para frente(true).
boolean frente=true;
int distanciaDesejada=5;
int potencia=100;
int distanciaReal = motor.moveEsquerda(frente,distanciaDesejada,potencia);