Ir ao conteúdo

Posts recomendados

Postado

Alguém sabe como se calibra um sensor de refletência( modelo tcrt5000); estou criando um carrinho segue faixa, mas os sensores estão ativando o motor do carro tanto em material preto quanto em material branco, ele somente para quando o carro está a uma certa altura da superfície.

 

Código anexado abaixo.

 

Não sei se a calibração é feita pelo código ou se é possivel fazer no proprio sensor( existe um modelo de sensor de refletancia que da pra calibrar no pelo proprio sensor...)

tcrt5000.jpg

código.txt

  • Curtir 1
  • Membro VIP
Postado

Aparentemente o trimpot é pra isso. Pra isso penso que tem que analisar seu circuito e/ou ler datasheet/manual.

 

Não precisava colocar o cod pra baixar. Tem gente com preguiça de clicar. Baixei seu cod. 'sem querer'...:

#define RightMotorForward 7
#define RightMotorBackward 6
#define LeftMotorForward 5
#define LeftMotorBackward 4
#define sensorL A0
#define sensorR A1
#define FW 55
#define TR 70
#define PAUSE 100
 
void setup(){
pinMode(RightMotorForward, OUTPUT);
pinMode(LeftMotorForward, OUTPUT);
pinMode(LeftMotorBackward, OUTPUT);
pinMode(RightMotorBackward, OUTPUT);
pinMode(sensorL,INPUT);
pinMode(sensorR,INPUT);
Serial.begin(9600);
}
 
void loop(){
int left = analogRead(sensorL);
int right = analogRead(sensorR);
Serial.print("Leitura de luminosidade sensor L: ");
Serial.println(left);
Serial.print("Leitura de luminosidade sensor R: ");
Serial.println(right);
if (left < 100 && right < 100){
moveForward();
}
else if (left > 100 && right < 100){
turnLeft();
}
else if (right > 100 && left < 100){
turnRight();
}
else if (left < 100 && right < 100){
moveStop();
}
delay(PAUSE);
}
 
void moveForward(){
motorLForward();
motorRForward();
delay(FW);
moveStop();
}
 
void turnRight(){
Serial.println("Vira à direita");
motorLForward();
delay(TR);
moveStop();
}
 
void turnLeft(){
Serial.println("Vira à esquerda");
motorRForward();
delay(TR);
moveStop();
}
 
void moveStop(){
digitalWrite(RightMotorForward, LOW);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(RightMotorBackward, LOW);
digitalWrite(LeftMotorBackward, LOW);
}
 
void motorRForward(){
digitalWrite(RightMotorForward, HIGH);
digitalWrite(RightMotorBackward, LOW);
}
 
void motorRBackward(){
digitalWrite(RightMotorForward, LOW);
digitalWrite(RightMotorBackward, HIGH);
}
 
void motorLForward(){
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(LeftMotorBackward, LOW);
}
 
void motorLBackward(){
digitalWrite(LeftMotorForward, LOW);
digitalWrite(LeftMotorBackward, HIGH);
}

Pra resolver seu problema, há opções:

-calibração: refrate num treco preto e anote o valor. O mesmo pro branco

-passe os valores pras comparações do fonte

-rotina de aprendizado: ele mesmo tenta acompanhar a linha ou variações de tons e anota na eeprom os valores. Ele deve trabalhar com diferenças e não com valores fixos. Como na vida, tratar lidar com diferenças é um pouco + difícil mas depois de dominar a técnica, há satisfação garantida.

Não explico como fazer.

Postado

A saída desse sensor não é analógica , é a saída de um comparador LM393, no esquema que encontrei não tem resistor  ligado ao VCC ( esse comparador tem saída open-colector ), então para garantir é melhor acionar o pull-up interno do pino do Arduíno onde ele estiver ligado.

 

Assim, como a saída desse sensor ou é nivel 0 ou é nível 1, não vai conseguir tratar nuançes com esse sensor.

 

Para calibrar é só colocar o sensor na linha escura e ajustar o trimpot de maneira que ocorra a mudança de nível da saída conforme seja colocado em uma linha preta ou numa linha clara ( chão normal ).

 

Paulo

  • Curtir 1
  • Membro VIP
Postado

Se for mesmo comparador, desconsidere então minhas dicas. No caso ndv analogread(). Tem que ser digital read....

Invocando o superpoder do google imagens pra conferir...

41WmcZ7rIZL.jpg

de fato tem duas saídas:analógica e digital. Escolha entre Paulão e eu kk

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...