Upload
levi-germano
View
1.295
Download
13
Embed Size (px)
Citation preview
1
MEDIÇÃO DE DISTÂNCIA DOS OBSTÁCULOS UTILIZANDO SENSORES
DE INFRAVERMELHO E PLATAFORMA ARDUINO
CAROLINE A. ALCÂNTARA, FRANCISCO A. ALVES, LUCAS M. BATISTA, PATRICIA M. K. N.
TEIXEIRA, VANESSA B. , WELLINGTON PASSOS Departamento de Engenharia Elétrica, Universidade Federal da Bahia
Rua Prof. Aristides Novis, 2 - Federação- Salvador – Bahia – Brasil E-mails: [email protected], [email protected],
[email protected], [email protected], [email protected], [email protected]
Abstract - This article presents distance measurement by a infrared sensor model GP2Y0A21YK0F and one arduino kit
AtMega2560. The measurement conversion of sensor and the stocked results are performed by the arduino platform. The principles of sensor calibration, the achievment of the funcion volts x distance and the programming were realized by studied concepts in the
disciplines Microprocessed System and Statistic Methods.
Keywords - Arduin, calibration, distance, sensor.
Resumo - Este artigo apresenta um medidor de distância através do sensor por infravermelho modelo GP2Y0A21YK0F e um kit
Arduino AtMega2560. A conversão da medição dos sensores e os resultados armazenados são realizados pela plataforma Arduíno.
Os princípios de calibragem dos sensores, a caracterização da função voltagem x distância e a programação foram realizados utilizando conceitos abordados nas disciplinas Sistemas Microprocessados e Métodos Estatísticos.
Palavras-chave - Arduino, calibração, distância, sensor.
1 Introdução
O projeto de medição das distâncias do objeto
aos obstáculos consiste em utilizar 10 sensores
do tipo infravermelho que produzirão leituras
em formato de tensão ao encontrarem objetos no
seu campo de alcance. Essas leituras foram
captadas pelo Arduino que efetuará a conversão
das tensões em distâncias através de seu código
de programação. As leituras referentes a cada
sensor foram armazenadas pelo Arduino como
um vetor de distâncias o qual podem ser
acessados e enviados caso necessário via
protocolo I2C. As etapas básicas do processo foram: Calibração do sensor, medindo a tensão que
o sensor produz entre uma distância mínima
de 10cm e máxima de 80cm.
Caracterização da curva da função Tensão x
Distância do sensor diante de obstáculos de
cores escuras e claras.
Conversão da leitura analógica do sensor
para formato digital através do Arduino.
Conversão do sinal digital para medidas em
formato de tensão. (O sinal digital virá em
uma faixa entre 0 e 1023, já que estamos
utilizando uma resolução de 10 bits)
Conversão desse valor de tensão para o
valor referente à distância encontrado
através da curva de caracterização calculada
da função Tensão x Distância.
Armazenamento dos valores da distância de
cada sensor em um vetor.
Transmissão serial dos valores da distância
de cada sensor via I2C.
2 Desenvolvimento
2.1 Especificações do Projeto São exigências do projeto: Utilizar 10 sensores modelo
GP2Y0A21YK0F para medir distâncias;
Enviar os valores das distâncias medidas
por cada sensor por um canal I2C;
2
2.2 Sensor de distância GP2Y0A21YK0F GP2Y0A21YK0F é um sensor infravermelho,
composto de uma combinação integrada entre
um PSD (position sensitive detector, detector de
posição), um IRED (infrared emitting diode,
diodo emissor de infravermelho) e um circuito
processador de sinal.
Figura 1 - Diagrama de blocos da organização interna do
sensor GP2Y0A21YK0F
Segundo o datasheet disponibilizado pelo
fabricante, são características relevantes do
dispositivo: Faixa de distâncias de medida: 10 a 80cm; Tipo de saída: tensão analógica entre 0 e
5V; Corrente média de consumo típica: 30mA; Faixa de tensões de alimentação: 4,5 a
5,5V.
O GP2Y0A21YK0F utiliza um método de
triangulação para calcular a distância de um
determinado objeto. Um pulso de luz
infravermelha é emitido pelo emissor e se
propaga até encontrar um objeto. Ao encontrar
um obstáculo, esta luz é refletida e forma-se um
triângulo entre o emissor, o ponto de reflexão e
o detector do sensor, conforme Figura 2.
Figura 2 – Triangulação do sensor GP2Y0A21YK0F
A luz refletida incide no receptor e é transmitida
a um pequeno dispositivo de carga acoplada
(CCD) localizado dentro do sensor, que tem
como função determinar o ângulo de reflexão.
Os ângulos formados no triângulo variam de
acordo com a distância que está o objeto.
Assim, o sensor calcula a distância a partir desse
ângulo de reflexão e emite uma tensão no seu
pino de saída correspondente à distância
detectada. Este método oferece grande imunidade contra a
interferência da luz ambiente e a variação de cor
do obstáculo. Porém, a relação entre a tensão de
saída e a distância torna-se não linear,
aparentando uma curva logarítmica, como
mostra a Figura 3 obtida do datasheet do
dispositivo. É possível observar também que
para distâncias fora da faixa de operação do
sensor, a saída torna-se não proporcional e deve
ser rejeitada.
Figura 3 – Curva característica do sensor
GP2Y0A21YK0F
2.3 Obtenção da curva característica do
sensor A curva característica do sensor, fornecida pelo
datasheet, foi ilustrada na Figura 3. Entretanto,
cada sensor possui um comportamento
específico, devido à sua estrutura interna. Por
isso, foi necessário realizar uma série de
medidas experimentais para verificar a curva
característica de um determinado sensor.
3
Para realizar essa medição, foi necessário
conectar os três terminais do sensor, respeitando
a indicação da Figura 4. A alimentação Vcc
utilizada foi de 5V, que está de acordo com a
condição de operação “Supply voltage”
recomendada pelo datasheet do produto, que
varia de 4,5 a 5,5V. A partir daí, foi possível ler
os resultados de tensão no terminal Vo do
sensor, através de um multímetro, na medida em
que variávamos a distância entre o mesmo e um
obstáculo. Devido à precisão do
GP2Y0A21YK0F, só foi possível medir a
voltagem referente ao intervalo de distância de
10 a 80cm.
Figura 4 – Pinagem referente ao sensor
GP2Y0A21YK0F As medidas foram realizadas com duas cores de
obstáculo diferente: uma folha de papel A4
branco de gramatura 75g/m² e um
paralelepípedo envolvido em couro preto. Os dados referentes ao obstáculo branco podem
ser observados na tabela a seguir:
Figura 5 – Dados da tensão e distância obtidos através de
um obstáculo de cor branca.
Figura 6 – Curva característica da função “Voltagem x Distância” para obstáculo branco.
Visualmente, percebe-se que a curva resultante,
apresentada no gráfico acima, é próxima à curva
fornecida pelo datasheet. Além disso, a partir
desses dados coletados, foi possível encontrar a
equação da curva que mais se aproxima do
comportamento “voltagem x distância” do
sensor. Para isso, foi utilizado o método de
regressão não linear (do tipo potência) no qual
ajustamos a curva da função através de uma
ferramenta no Excel chamada Linha de
Tendência obtendo o seguinte resultado:
Figura 7 – Ajuste da Linha de Tendência realizada no
Excel para amostras feitas com obstáculo branco. A própria ferramenta do Excel nos fornece a
equação da curva que é apresentada abaixo.
d15,5109 V -0,8778 (1)
Sendo: d = distância do sensor ao obstáculo de cor
branca. V = tensão escrita pelo sensor para representar
aquela distância ao obstáculo.
4
O R² indicado no gráfico é um parâmetro,
chamado de coeficiente de determinação, que
avalia a qualidade da regressão. Quanto mais
próximo de 1, melhor o ajuste entre a função e
os dados coletados. O R² varia de 0 a 1,
indicando em porcentagem o quanto o modelo
consegue explicar os valores observados. Nesse caso temos um R² = 0,9982 , o que
significa que 99,82% da variável dependente
consegue ser explicada pelos regressores
presentes no modelo. Quando utilizamos um obstáculo preto para
fazer as medidas da tensão em relação à
distância desse objeto até o sensor, encontramos
um resultado não satisfatório.
Figura 8 – Dados da tensão e distância obtidos através de
um obstáculo de cor preta.
Figura 9 – Curva característica da voltagem x distância.
Neste caso, percebe-se que a curva encontrada
possui distorções em relação à curva referente
ao obstáculo branco, e também em relação à
curva do datasheet. Este resultado pode ser
explicado devido a erros dos operadores da
medição, e pode ser constatado através da
equação encontrada para este conjunto de
medidas, utilizando o mesmo método de
regressão supracitado.
Figura 10 – Ajuste da Linha de Tendência realizada no
Excel para amostras feitas com obstáculo preto. A equação da curva feita pelo Excel é
apresentada abaixo.
d13,262 V -0,769 (2)
Sendo: d = distância do sensor ao obstáculo de cor
preta. V = tensão escrita pelo sensor para representar
aquela distância ao obstáculo. Nesse caso temos um R² = 0,9545 , o que
significa que 95,45% da variável dependente
consegue ser explicada pelos regressores
presentes no modelo. Observamos que o nível de confiança é maior se
trabalharmos com obstáculos de cor branca, já
que a curva das amostras de distância por tensão
que coletamos está mais próxima da equação de
regressão que calculamos. Com um coeficiente
de determinação de 99,82%, referente à análise
de dados do obstáculo branco, temos uma
segurança maior para aplicarmos o método
utilizado para representar a curva característica
do sensor.
2.4 Condicionamento do sinal do sensor O condicionamento de sinais é necessário para
converter os sinais oriundos dos sensores e
então “interfaciar” de forma adequada com o
controlador. Mesmo em aplicações envolvendo
processamento digital, algum tipo de
5
processamento analógico é requerido antes que
a conversão analógico-digital seja feita,
limitando a largura de banda do sinal à no
máximo metade da taxa de amostragem,
“casando” sua amplitude com a faixa de entrada
do conversor e eliminando ruídos no sinal que
venha do sensor. O sensor GP2YOA21YKOF é pouco
susceptível à variação de reflexão sobre o
objeto, a temperatura ambiente e o tempo de
operação do sensor. O datasheet menciona que
para reduzir o ruído, precisa-se colocar um
capacitor de 10 uF entre o terra e a entrada de
voltagem. Mesmo assim, tem uma presença de
ruído. Para eliminar esse ruído, adiciona-se na
saída do sensor um filtro ativo de primeira
ordem.
Figura 11 – Mapeamento do circuito utilizando o
software Protheus Isis 7. Sensor associado a um filtro
passa-baixa.
O ATMEGA2560 contem um único conversor
analógico-digital de 10 bits com uma frequência
de amostragem igual à 15 kHz. Conforme o
teorema de Nyquist, a frequência máxima do
sinal de entrada do conversor deve ser igual ou
menor que 7.5 kHz, desta forma eliminamos o
efeito chamado aliasing ou foldover em que a
alta frequência é medida erroneamente como
sendo de frequência mais baixa. Os valores dos
componentes são escolhidos tal que R1 = R2 =
10kΩ (já que o ganho do filtro passa-baixa
obedece a equação K = -R2/R1 = -1) e C1 =
4,7nF de maneira a ter uma frequência de corte
Fc = 1/(2π.R2.C1) = 3.4 kHz.
2.5 Controlador Arduino Os 10 sensores infravermelhos
GP2Y0A21YK0F são utilizados no projeto na
intenção de medir distância e para isso
utilizamos o microcontrolador Atmega2560 da
plataforma Arduino Mega2560.
O Arduino foi escolhido devido a facilidade de
programação, de obtenção do kit para testes e
pela quantidade de portas analógicas presentes
para conversão Análogico/Digital da tensão dos
10 sensores. São as principais características do Arduino
Mega2560: Tensão de operação: 5V, proveniente de
fonte externa ou da porta USB de um
computador;
54 pinos de entrada e saída digital, sendo 15
portas com capacidade para PWM;
16 pinos de entrada analógica;
Corrente máxima por pino digital de 40mA;
Memória de programa flash de 256KB,
incluindo bootloader;
Memória RAM de 8KB;
Memória EEPROM de 4KB;
Clock de 16MHz.
Suas especificações são visualizadas de forma
clara na Figura 12.
Figura 12 –Plataforma detalhada do Arduino Mega2560
O Arduino é um projeto de circuito baseado em
microprocessador de código aberto, da indústria
Atmel. É uma placa física com circuitos de
entrada/saída simples, microcontrolada e
desenvolvida sobre uma biblioteca que
simplifica a escrita da linguagem de
programação em C/C++. Sua linguagem de
programação é baseado na linguagem Wiring
(prototipagem eletrônica de hardware livre
6
composta por uma linguagem de programação,
um ambiente de desenvolvimento integrado e
um microcontrolador de placa única) e seu
ambiente de desenvolvimento é baseado no
Processing. O Arduino tem a funcionalidade de interpretar
as variáveis do ambiente e transformá-las em
sinal elétrico, através de sensores ligados aos
terminais de entrada, controlando ou acionando
algum outro elemento eletro-eletrônico
conectado ao terminal de saída.
Resumidamente, o Arduino é uma ferramenta de
entrada e saída de dados que pode ser acionada
por um sensor, e depois processada para poder
acionar um atuador. Esse funcionamento é
simplificado no esquema abaixo.
Figura 13 –Diagrama simplificado de funcionamento do
Arduíno. Com o Arduino pode-se desenvolver objetos
interativos, permitindo a entrada de sensores ou
chaves, controlando uma variedade de luzes,
motores ou saídas físicas. Com ele pode-se
manipular o hardware (sensores, portas,
alarmes) através do software. Algumas de suas grandes vantagens de
utilização são: Preço: Relacionando com as outras
plataformas de microcontroladores, o
Arduino possui um preço relativamente
baixo.
Multi-plataforma: O seu software roda no
Windows, Linux e Macintosh OSX.
Utilização simples e clara: O seu ambiente
de programação é de fácil uso e seu código
fonte é aberto e pode ser aperfeiçoado por
programadores mais experientes.
2.6 Lógica de programação, Fluxograma e
código Para conversão de valores de tensão para
valores de distância foi necessário fazer uma
calibragem no sensor infravermelho que
consiste em obter os valores experimentais de
tensão para cada distância. Após várias
medições é possível gerar uma função
matemática para realização dos cálculos no
microcontrolador. É importante salientar que neste relatório
informamos somente a calibragem de um
sensor, por conta da acessibilidade aos materiais
do projeto. No entanto, durante a programação
deixamos uma parte do código reservado para
incluir as outras funções características advindas
das calibrações dos outros 9 sensores. Quando há mudança de cor do objeto de branco
(clara) para preto (escura) ou vice-versa foi
possível perceber que a tensão no sensor muda
mantendo a mesma distância. Isso ocorre, pois a
reflexão do infravermelho será menor quando a
cor do objeto for preta. Nesse projeto iremos
considerar que os objetos encontrados serão da
cor branca. Com as amostras de tensão para cada distância
que obtivemos, encontramos a relação Distância
x Tensão pelo método dos mínimos quadrados.
Essa relação, que será usada durante a
programação, é escrita como:
V26,1049 d -1,13718 (3)
Sendo: d = distância do sensor ao obstáculo de cor
branca V = tensão escrita pelo sensor para representar a
distância ao obstáculo A curva para calibragem foi apresentado no
gráfico abaixo.
Figura 14 - Curva de calibragem construída
utilizando uma folha de papel A4 da Chamex modelo
multi, gramatura 75g/m2, como obstáculo. Com a função da distância bem definida,
iniciamos a escrita do código de programação
do Arduino. Todo código necessita da inclusão de
bibliotecas. Como o nosso código irá conter
7
funções matemáticas, incluímos em nossa
programação a biblioteca math.h. Além disso, nosso projeto deverá conter uma
comunicação serial via I2C que servirá para
enviar os dados dos valores da distância quando
solicitados. Portanto, será necessário incluir a
biblioteca Wire.h. Iniciamos nosso código também com o pré-
processador #define que exige que compilador
ao longo do programa faça a substituição da
constante definida pelo pré-processador por um
valor também pré definido. No nosso caso fizemos #define canaisAD 10
que substitui tudo que estiver escrito como
canaisAD por 10. Esses canais AD são todos os
canais analógicos-digitais que temos para
converter os sinais analógicos advindos dos
sensores. Como possuímos 10 sensores, logo
necessitamos de 10 conversores ADs, então
definimos canaisAD como 10. Declaramos o inteiro i que servirá como valor
que varia entre 0 e 9 para ajudar na função dos
vetores que criamos para armazenar dados. Foi necessário declarar também as constantes
das funções característica de cada sensor, bem
como os expoentes dessas funções. Para tal
criamos dois vetores a[canaisAD] e
b[canaisAD] que armazena as 10 constantes e
os 10 expoentes da função de cada sensor
respectivamente. O esboço de nossa programação inicializa com a
função void setup() no qual se usa para
inicializar variáveis, seleção de pinagens, etc.
Dentro dessa função, é necessário inicializar a
comunicação serial, informando a taxa de dados
em bits por segundo para transmissão de dados
serial. Cada serial possui um nível diferente de
taxa de dados de transmissão que variam entre
300 à 115200 bits por segundo. Como estamos
conectando o computador via serial, este exige
somente uma taxa de 9600 bits por segundo. Nessa função será necessário, também,
inicializar a comunicação via I2C, através da
função Wire.begin(). Depois de criar uma função setup(), que
inicializa e define os valores iniciais, a função
void loop() faz exatamente o que seu nome
sugere, laços consecutivos, permitindo que o
programa continue em seu processo de leitura,
manipulação de dados e escrita. Nas definições de variáveis temos:
float sensor = é o dado enviado pelo sensor ao
encontrar o obstáculo. Esse dado virá na faixa
de 0 a 1023 que é a faixa considerada para a
resolução de 10 bits que estamos utilizando. Como os dados do sensor será um sinal
analógico, é necessário pedir que o compilador
leia esse sinal. Por isso usamos a chamada
analogRead() que permite a leitura do pino que
recebe o sinal analógico. Considerando o canal
de conversão analógico-digital de 10 bits que
estamos utilizando, o Arduino irá mapear
tensões de entrada entre 0 e 5V em valores
inteiros entre 0 e 1023. O que produz uma
resolução de leitura de 5 volts por 1024
unidades. A chamada analogRead() vem especificando
entre os parênteses o pino que recebe o sinal
analógico. Como usamos a porta A0, A1, A2,
A3, A4, A5, A6, A7, A8, A9 como pinos de
entrada dos sinais analógicos (10 portas, pois
usamos 10 sensores), especificamos no
analogRead() o pino (i + 14), sendo i um
número inteiro que varia entre 0 e 9, e 14 o
valor conhecido pelo compilador como porta A0
(15 é a porta A1, 16 é a porta A2, 17 é a porta
A3 e assim sucessivamente). float volt = é a tensão que iremos calcular
através do dado recebido pelo float sensor.
Como o dado do sensor virá numa faixa entre 0
e 1023, para transformar esse número num valor
em Volts usamos a fórmula abaixo:
0.1023
5 sensorvolt
(4)
Sendo: 5 = a tensão máxima em volt (tensão de
alimentação) sensor = o valor recebido do sensor (que varia
de 0 a 1023) 1023 = o máximo valor da faixa recebida do
sensor float dist = é o valor da distância do sensor ao
obstáculo. Esse valor é calculado pela fórmula
(3) já mencionada. Como queremos armazenar
os valores da distância de cada sensor aos
obstáculos, fizemos a variável dist como vetor,
escrevendo como dist [canaisAD - 1]. Como o
vetor distância armazena dados de cada canal
analógico-digital, definimos que este vetor
possui o tamanho igual à dos canaisAD, ou seja,
é um vetor que armazena 10 valores de distância
(que varia de 0 à 9). Ao aplicar a fórmula (3)
para calcular a distância, usamos o vetor dist
como sendo dist [i], com i variando entre 0 e 9.
A fórmula fica:
8
][][][ ibvoltiaidist (5)
A cada valor de i variando de 0 a 9, possuímos
novos valores de tensão calculados para cada
dado recebido pelo sensor. Desta forma, temos
os diferentes valores das distâncias armazenados
no vetor que varia de dist [0] à dist [9]. Observe
também que a[i] é o vetor que armazena as
constantes e b[i] o vetor que armazena os
expoentes da função característica de cada
sensor, definida após calibragem. Para que cada valor do vetor distância seja
escrito no monitor do computador, indicamos a
função Serial.println(dist[i]). Além disso, será
necessário uma interrupção do programa à cada
escrita dos valores das distâncias obtidas. Essa
interrupção é importante para que possamos ver
com clareza os valores no monitor do
computador. Para isso, é necessário utilizar a
função delay(300), no qual colocamos uma
parada de 300 milisegundos (0,3 segundos) de
uma escrita para outra. Para o envio do vetor distância (dist[i]) via I2C,
quando solicitado, implementamos no código a
função Wire.write(int (dist[i])). O valor de i é incrementado (somado 1) cada
vez que um valor de distância for armazenado
no vetor. Quando o valor de i chegar à 10 (valor de
canaisAD) o compilador zera i (coloca i = 0) e
retorna ao início do loop, onde recomeçará a
leitura das distâncias do obstáculo à cada
sensor. Segue adiante o fluxograma que simplifica
todas essas etapas da programação.
Figura 15 - Fluxo de execução do código feito para
Arduino.
O código do programa é indicado abaixo: #include <Wire.h> // Biblioteca I2C #include <math.h> // Biblioteca matemática #define canaisAD 10 // números de canais AD // dos sensores (temos 10
// canais)
int i = 0; //declaração das constantes de calibração de
//cada sensor, usados para calcular distância,
// os valores para outros sensores devem ser
//obtidos como segue no artigo:
const float a[canaisAD] = {26.1049,
constante2,constante3,...,constante10};
const float b[canaisAD] = {-1.13718,
expoente2,expoente3,...,expoente10}; void setup( ) { // Inicializa comunicação serial em 9600
//bits por segundo: Serial.begin(9600);
// Inicia o I2C: Wire.begin( ); } // A rotina roda num loop roda para sempre: void loop( ) {
float sensor = analogRead(i+14);
// porta A0 é chamada de 14 pelo programa, A1
// é 15 e assim sucessivamente
float volt; float dist [canaisAD];
// Imprime o dado para leitura
// cálculo para achar o valor em volts no sensor: volt = 5*sensor/(1023.0);
// cria um vetor que contém canaisAD valores
//de distâncias que serão lidas pelo sensor: dist[i] = a[i]*pow(volt,b[i]);
if( (dist[i] > 70.0) || (dist[i] < 15.0)) {
Serial.print(“Sensor ”);
Serial.print(i);
Serial.println(“ excedeu a faixa”);
}
9
// Imprime no Serial Monitor o valor: Serial.println(dist[i]);
// Envia via I2C os valores das distâncias.
//Envia em formato inteiro, pois não funciona
//com ponto flutuante:
Wire.write(int (dist[i])); delay(300); // Espera 0,3 s i++; if (i = = canaisAD) {
// Se chegar igual a canaisAD volta a 0 e mede o
//valor da primeira porta novamente.
i=0;
} }
3 Resultados práticos
Para implementação e teste do código de
programação do projeto, foi utilizado somente 1
sensor ligado ao Arduino Nano (placa pequena
baseada no ATmega326) no qual possui as
seguintes características: Tensão de operação: 5V, proveniente de
fonte externa ou da porta USB de um
computador;
14 pinos de entrada e saída digital, sendo 6
portas com capacidade para PWM;
8 pinos de entrada analógica;
Corrente máxima por pino digital de 40mA;
Memória de programa flash de 32KB,
incluindo bootloader;
Memória RAM de 2KB;
Memória EEPROM de 1KB;
Clock de 16MHz.
O que diferencia de fato esse Arduino Nano ao
Arduino Mega2560 são as quantidades de pinos
de entrada analógica, pinos de entrada e saída
digital e capacidade de memórias flash, RAM e
EEPROM. No entanto, para efeito de teste da
programação, essa diferença não afetaria nosso
projeto, já que testaremos a programação
utilizando somente 1 sensor. Com o teste
validando a qualidade do nosso programa,
bastou somente alterar o código do programa
para mais 9 sensores, implementando um loop e
criando vetor de dados.
Segue o circuito modelo utilizado para leitura de
dados do sensor e retorno de valores de
distância entre sensor e obstáculo:
Figura 16: Circuito usado para teste de código.
Arduino utilizado para teste, Arduino Nano. Para ligação do sensor à placa do Arduino
utilizamos a referência da pinagem do sensor
encontrada em seu datasheed. Conectamos as 2
entradas do sensor (GND e Vcc) e a saída do
sensor (Vo) às portas do Arduino. Observa-se na imagem que a saída Vo do sensor
está ligado à porta A0 da placa. Esse sinal Vo é
o sinal referente às distâncias do sensor ao
obstáculo, e esse sinal que será aplicado no
nosso programa para definirmos os valores das
distâncias através da equação (5). A porta 5V da placa é conectada ao pino de
entrada Vcc do sensor. Essa porta 5V serve de
alimentação ao sensor e é a tensão proveniente
da alimentação entregue pelo computador ao
Arduino (via USB). A porta GND da placa é conectada ao pino de
entrada GND do sensor para finalizar as
ligações suficiente para a interação entre
microprocessador e sensor.
4 Conclusão
O projeto em questão analisou o comportamento
do sensor infravermelho em diferentes tipos de
obstáculos e permitiu a caracterização da função
Distância por Voltagem através de calibração e
regressão não linear dos valores das amostras.
Foi feita a escolha em trabalhar com a melhor
curva que caracteriza-se nosso sistema, por isso
10
foi feita a análise do coeficiente de
determinação de cada tipo de obstáculo (o da
cor branca e o da cor preta) ficando clara a
maior confiabilidade diante da equação
característica ao se utilizar obstáculo de cor
branca. Diante do objetivo em desenvolver um
programa que informasse ao usuário a distância
dos sensores aos obstáculos, foi possível
perceber a facilidade de manuseio e o bom
desempenho ao se utilizar do microprocessador
Arduino que consegue atender de forma prática
e simples aos objetivos finais no trabalho. De forma geral, os resultados obtidos foram
satisfatórios e fiéis ao esperado teoricamente. O
projeto permitiu o aprofundamento do
conhecimento de microcontroladores e da
facilidade de manipulação de dados que estes
podem nos fornecer. Além disso, o projeto
permitiu enxergar a importância das análises
estatísticas referente às amostras durante
calibração de componentes. A participação no trabalho, nos permitiu
identificar possíveis aplicações do projeto em
trabalhos como sensoriamento de posição de um
robô através destes sensores conectados à
diversas partes da sua estrutura, permitindo até
um estudo da presença do robô no espaço
inserido, informado a sua localização ou mesmo
onde existem obstáculos e como ele deverá agir
diante dessas barreiras físicas. São sugestões para o melhoramento do projeto,
estudar como tornar o sistema de medição de
distância imune a variação de cores, ou até
mesmo permitir que através dos dados enviados
pelos sensores o programa possa identificar e
informar as cores captadas pelos sensores,
ajudando a reconstruir a imagem do ambiente.
5 Agradecimentos
Os autores deste artigo agradecem ao professor
Jés Cerqueira pela colaboração e orientação ao
longo do desenvolvimento do projeto.
6 Referências Bibliográficas
Taylor, C. W. (1994). Power System Voltage
Stability. Ed McGraw-Hill , Inc..
OGATA, Katsuhiko, 2003, Engenharia de
controle moderno. 4. ed. São Paulo: Prentice-
Hall do Brasil
Zuben , Fernando J. V., 2013, Notas de aula do
curso EA616 , DCA/FEEC/UNICAMP
Ibrahim, Dogan, 2006, Microcontroller Based
Applied
DigitalControl John Wiley & Sons, Ltd.
Seguine, Dennis, July 15, 2011, Associated
Application Notes: AN2095, AN2219,Cypress
MCU Application Design Team, Choi, June,
1D/A Converter by Using PWM, 8-bit
Microcontroller Application Note
http://www.mantech.co.za/datasheets/products/
A000047.pdf
http://www.cefetsp.br/edu/sertaozinho/professor
es/Fernando_Fortuna/material_341_3ano.pdf
http://www.acroname.com/robotics/info/articles
/sharp/sharp.html
http://arduino.cc/en/Reference/HomePage
http://www.arduino.cc/