MEDIÇÃO DE DISTÂNCIA DOS OBSTÁCULOS UTILIZANDO SENSORES
DE INFRAVERMELHO E PLATAFORMA ARDUINO

CAROLINE A. ALCÂNTARA, FRAN...
A luz refletida incide no receptor e é transmitida
a um pequeno dispositivo de carga acoplada
(CCD) localizado dentro do s...
Figura 5 – Dados da tensão e distância obtidos através de
um obstáculo de cor branca.

Para realizar essa medição, foi nec...
curva do datasheet. Este resultado pode
explicado devido a erros dos operadores
medição, e pode ser constatado através
equ...
processamento analógico é requerido antes que
a conversão analógico-digital seja feita,
limitando a largura de banda do si...
composta por uma linguagem de programação,
um ambiente de desenvolvimento integrado e
um microcontrolador de placa única) ...
funções matemáticas, incluímos em nossa
programação a biblioteca math.h.
Além disso, nosso projeto deverá conter uma
comun...
dist[i]  a[i]  volt b[i ]

O código do programa é indicado abaixo:

(5)

#include <Wire.h> // Biblioteca I2C
#include <m...
// Imprime no Serial Monitor o valor:
Serial.println(dist[i]);

Segue o circuito modelo utilizado para leitura de
dados do...
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 cl...
Próximos SlideShares
Carregando em…5
×

Medição de distância dos obstáculos utilizando sensores de infravermelho e plataforma arduino

1.939 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.939
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
42
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Medição de distância dos obstáculos utilizando sensores de infravermelho e plataforma arduino

  1. 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: carolinedealcantara@gmail.com, franciscoalvessf@gmail.com, lucasmarbatista@gmail.com, patriciamartinezkn@gmail.com, bryvanessa@gmail.com, passos.well@gmail.com 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  As etapas básicas do processo 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.  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. 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)  Introdução Transmissão serial dos valores da distância de cada sensor via I2C. foram: 2 Desenvolvimento  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.  Utilizar 10 sensores modelo GP2Y0A21YK0F para medir distâncias; Conversão da leitura analógica do sensor para formato digital através do Arduino.  Enviar os valores das distâncias medidas por cada sensor por um canal I2C;  2.1 Especificações do Projeto São exigências do projeto: 1
  2. 2. 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. 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. 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 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 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. Figura 2 – Triangulação do sensor GP2Y0A21YK0F 2
  3. 3. Figura 5 – Dados da tensão e distância obtidos através de um obstáculo de cor branca. 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 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 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 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. V  15,5109  d -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. 3
  4. 4. curva do datasheet. Este resultado pode explicado devido a erros dos operadores medição, e pode ser constatado através equação encontrada para este conjunto medidas, utilizando o mesmo método regressão supracitado. 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. ser da da de de 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 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. V  13,262  d -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. Figura 8 – Dados da tensão e distância obtidos através de um obstáculo de cor preta. 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 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 à 4
  5. 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. 2.5 Controlador Arduino 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. 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. 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. 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 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. 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 5
  6. 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. 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. 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. 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: Figura 13 –Diagrama simplificado de funcionamento do Arduíno. d  26,1049  V -1,13718 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 utilização são:    grandes vantagens (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 de A curva para calibragem foi apresentado no gráfico abaixo. 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 Figura 14 - Curva de calibragem construída utilizando uma folha de papel A4 da Chamex modelo multi, gramatura 75g/m2, como obstáculo. 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 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 6
  7. 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. 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). 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. 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: 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(). volt  5  sensor 1023.0 (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: 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: 7
  8. 8. dist[i]  a[i]  volt b[i ] O código do programa é indicado abaixo: (5) #include <Wire.h> // Biblioteca I2C #include <math.h> // Biblioteca matemática 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. #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: 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])). 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( ); 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. } // A rotina roda num loop roda para sempre: void loop( ) { Segue adiante o fluxograma que simplifica todas essas etapas da programação. 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”); } Figura 15 - Fluxo de execução do código feito para Arduino. 8
  9. 9. // Imprime no Serial Monitor o valor: Serial.println(dist[i]); Segue o circuito modelo utilizado para leitura de dados do sensor e retorno de valores de distância entre sensor e obstáculo: // 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 Figura 16: Circuito usado para teste de código. Arduino utilizado para teste, Arduino Nano. 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:         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. 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. 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 9
  10. 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. 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 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. http://arduino.cc/en/Reference/HomePage http://www.arduino.cc/ 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: PrenticeHall do Brasil 10

×