Nessa aula irei ensinar a como montar o circuito e programar um sensor de distância infravermelho Sharp. Esses sensores são ideais para detecção de objetos, diferente dos sensores Ultrassônicos, que utilizam o som para medição, esse utiliza a luz. Possuí grande precisão e alta facilidade para implementação.
Irei abordar suas 3 principais variações:
GP2Y0A41SK0F (4cm a 30cm)
- Especificações:
-
- Dimensões: 29,5mm × 13,0mm × 13,5mm
- Alimentação: de 4,5 V até 5,5 V
- Distância medida: 4cm à 30cm
- Massa: 3,5g
-
- Consumo médio de corrente : 12 mA (nota: este sensor consome corrente em rajadas grandes e curtas, e o fabricante recomenda colocar um capacitor de 10 µF ou maior sobre o VCC e GND perto do sensor para estabilizar a linha de fornecimento de energia)
- Período de atualização: 16.5 ± 4 ms
- Mais sobre: datasheet
-
GP2Y0A21YK (10cm a 80cm)
- Especificações:
- Dimensões: 44.5 mm × 18.9 mm × 13.5 mm
- Alimentação: de 4,5 V até 5,5 V
- Distância medida: 10cm à 80cm
- Massa: 3,5g
- Consumo médio de corrente: 30 mA (nota: este sensor consome corrente em rajadas grandes e curtas, e o fabricante recomenda colocar um capacitor de 10 µF ou maior sobre o VCC e GND perto do sensor para estabilizar a linha de fornecimento de energia)
- Período de atualização: 38 ± 10 ms
- Mais sobre: datasheet
GP2Y0A41SK0F (20cm a 150cm)
- Especificações:
- Dimensões: 44.5 mm × 18.9 mm × 13.5 mm
- Alimentação: de 4,5 V até 5,5 V
- Distância medida: 20cm à 150cm
- Massa: 5g
- Consumo médio de corrente: 33 mA (nota: este sensor consome corrente em rajadas grandes e curtas, e o fabricante recomenda colocar um capacitor de 10 µF ou maior sobre o VCC e GND perto do sensor para estabilizar a linha de fornecimento de energia)
- Período de atualização: 38 ± 10 ms
- Mais sobre: datasheet
Circuito:
O circuito para um sensor sharp é bem simples, mas é importante ressaltar que devido à alguns picos de tensão, o fabricante indica, opcionalmente, a inserção de um capacitor de 10 µF ou maior em seu VCC e GND.
O circuito para os 3 sensores é igual:
É importante lembrar que os capacitores muitas vezes possuem polaridade, geralmente indicada por uma faixa colorida impressa no capacitor, habitualmente indicando o polo negativo.
Programação:
Sua programação também não é complicada, basta apenas aplicar as constantes referente a cada sensor no código.
GP2Y0A41SK0F – (4cm a 30cm):
/* | |
Código para o Sensor Sharp GP2Y0A41SK0F(4cm a 30cm) | |
*/ | |
int Valor_do_sensor = 0; //Valor lido pelo sensor | |
int Valor_em_cm = 0; //Valor lido pelo sensor convertido em cm | |
int Pino_do_sensor = A0; //Pino Analogico* no qual você conectou o sensor | |
void setup() | |
{ | |
pinMode(Pino_do_sensor, INPUT);//declara o Pino do sensor como entrada de valores | |
Serial.begin(9600);//Inicia o serial com velocidade de comunicação igual à : 9600 | |
} | |
void loop() | |
{ | |
Valor_do_sensor = analogRead(Pino_do_sensor); //estamos defininddo que o Valor do sensor será igual ao valor da leitura Analógica do Pino do sensor | |
Valor_em_cm = 13*pow(Valor_do_sensor * 0.0048828125 , -1); //estamos modificando o valor lido pelo sensor para que ele equivala à medida cm | |
Serial.print("Valor lido = "); //Vai printar no Serial o a frase "Valor lido = " | |
Serial.print(Valor_em_cm);//Vai printar na frente do "Valor lido = ", o valor em cm do sharp | |
Serial.println(" cm");//vai printar cm na frente do valor e quebrará a linha. | |
delay(250);//faz com que cada leitura demore 250 milisegundos para acontecer | |
} |
GP2Y0A21YK – (10cm a 80cm):
/* | |
Código para o Sensor Sharp GP2Y0A21YK(10cm a 80cm) | |
*/ | |
int Valor_do_sensor = 0; //Valor lido pelo sensor | |
int Valor_em_cm = 0; //Valor lido pelo sensor convertido em cm | |
int Pino_do_sensor = A0; //Pino Analogico* no qual você conectou o sensor | |
void setup() | |
{ | |
pinMode(Pino_do_sensor, INPUT);//declara o Pino do sensor como entrada de valores | |
Serial.begin(9600);//Inicia o serial com velocidade de comunicação igual à : 9600 | |
} | |
void loop() | |
{ | |
Valor_do_sensor = analogRead(Pino_do_sensor); //estamos defininddo que o Valor do sensor será igual ao valor da leitura Analógica do Pino do sensor | |
Valor_em_cm = (6762/(Valor_do_sensor-9))-4; //estamos modificando o valor lido pelo sensor para que ele equivala à medida cm | |
Serial.print("Valor lido = "); //Vai printar no Serial o a frase "Valor lido = " | |
Serial.print(Valor_em_cm);//Vai printar na frente do "Valor lido = ", o valor em cm do sharp | |
Serial.println(" cm");//vai printar cm na frente do valor e quebrará a linha. | |
delay(250);//faz com que cada leitura demore 250 milisegundos para acontecer | |
} |
GP2Y0A41SK0F – (20cm a 150cm):
/* | |
Código para o Sensor Sharp GP2Y0A41SK0F(20cm a 150cm) | |
*/ | |
int Valor_do_sensor = 0; //Valor lido pelo sensor | |
int Valor_em_cm = 0; //Valor lido pelo sensor convertido em cm | |
int Pino_do_sensor = A0; //Pino Analogico* no qual você conectou o sensor | |
void setup() | |
{ | |
pinMode(Pino_do_sensor, INPUT);//declara o Pino do sensor como entrada de valores | |
Serial.begin(9600);//Inicia o serial com velocidade de comunicação igual à : 9600 | |
} | |
void loop() | |
{ | |
Valor_do_sensor = analogRead(Pino_do_sensor); //estamos defininddo que o Valor do sensor será igual ao valor da leitura Analógica do Pino do sensor | |
Valor_em_cm = 10650.08 * pow(Valor_do_sensor,-0.935) - 10; //estamos modificando o valor lido pelo sensor para que ele equivala à medida cm | |
Serial.print("Valor lido = "); //Vai printar no Serial o a frase "Valor lido = " | |
Serial.print(Valor_em_cm);//Vai printar na frente do "Valor lido = ", o valor em cm do sharp | |
Serial.println(" cm");//vai printar cm na frente do valor e quebrará a linha. | |
delay(250);//faz com que cada leitura demore 250 milisegundos para acontecer | |
} |