Ultrahangos távolságmérő
A pincér robot haladási irányával megegyező irányba szükséges biztonsági okok miatt betenni egy automata védelmet, ami a kezelőtől függetlenül működésbe lép és akadály esetén – a fékúton belül – megállítja a robot mozgását. A robot csak akkor indítható el az elé került akadály irányába, ha az akadály megszűnt. Az akadály érzékelési magassága kb. 400 mm a padló távolságától és enyhén felfelé néznek az ultrahangos távolságmérő szenzorok. ultrahangos távolságmérő
A pincér robotnak egy előre és egy hátra iránya van, valamint jobbra és balra fordulás. Az előre és hátra iránynál nagyobb az érzékelési távolság, míg a forgási iránynál kisebb. Az előre és hátra maximális sebesség maximum kb. 2 km/h lesz, míg a fordulási sebesség ennek a kb. 1/2 – 1/3 része, amihez lényegesebb kisebb fékút tartozik, ezért nem kell minden székláb közeli érzékelésnél azonnal automatikusan megállítani. ultrahangos távolságmérő
Egy lehetséges kiindulási kapcsolási rajz, Arduino programmal ultrahangos távolság méréshez és “LED kijelzéssel”, amihez plusz tranzisztor és relé beszereléssel lehet a “STOP” funkciót elérni amíg az akadály el nem hárul a haladási irányból. ultrahangos távolságmérő
Arduino program:
#define trigPin 7
#define echoPin 6
#define led1 13
#define led2 12
#define led3 11
#define led4 10
#define led5 9
#define led6 8
#define buzzer 3
int sound = 250;
//—————————————————————
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(buzzer, OUTPUT);
}
//—————————————————————
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
//—————————————————————-
if (distance <= 30) {
digitalWrite(led1, HIGH);
sound = 250;
}
else {
digitalWrite(led1,LOW);
}
if (distance < 25) {
digitalWrite(led2, HIGH);
sound = 260;
}
else {
digitalWrite(led2, LOW);
}
if (distance < 20) {
digitalWrite(led3, HIGH);
sound = 270;
}
else {
digitalWrite(led3, LOW);
}
if (distance < 15) {
digitalWrite(led4, HIGH);
sound = 280;
}
else {
digitalWrite(led4,LOW);
}
if (distance < 10) {
digitalWrite(led5, HIGH);
sound = 290;
}
else {
digitalWrite(led5,LOW);
}
if (distance < 5) {
digitalWrite(led6, HIGH);
sound = 300;
}
else {
digitalWrite(led6,LOW);
}
//—————————————————————
if (distance > 30 || distance <= 0){
Serial.println(“Out of range”);
noTone(buzzer);
}
else {
Serial.print(distance);
Serial.println(“cm”);
tone(buzzer, sound);
}
delay(500);
}
// — END
Üzenet küldés: ITT