Speed-Messung mit arduino und Ultraschall hc-sr04-sensor?
möchte ich aus Geschwindigkeits-Erkennung "Gerät" mit Arduino und zwei Ultraschall hc-sr04 wie dieser link. aber ich will es machen mit Ultraschall anstelle von LDR.
aus diesem link. die Art, wie Laser und die ldr-Arbeit, wie diese
Die widerstände dienen als pull-down-widerstände und verkabelte ich die sensoren und setzen Sie Sie in eine Falle, um Sie zu vermeiden die Erkennung von Umgebungslicht. Für jeden Fall wurde ein Loch gebohrt, so dass der Laserstrahl Licht auf den sensor, während die ambient-Licht hat keinen Einfluss auf den sensor.
Das Funktionsprinzip ist einfach: ein Objekt, das vergeht "schneidet" der laser-Balken, dies bedeutet, dass die LDR-sensor erkennt dieser plötzlichen Abfall der Lichtintensität. Zuerst habe ich definiert einen Schwellenwert, unter dem der sensor betrachtet wird ausgelöst, sobald der Wert unter der Schwelle für den ersten sensor mit Arduino wartet auf die zweite, ausgelöst zu werden. Während dieser Wartezeit zählt die Zeit, die zwischen den beiden Ereignissen. Wenn der zweite Lichtstrahl unterbrochen wird, Stoppt der timer, und jetzt ist nur einfache Mathematik. Der Abstand zwischen den 2 sensoren ist bekannt, die Zeit zwischen zwei Ereignissen bekannt ist, und die Geschwindigkeit kann berechnet werden, wie Geschwindigkeit = Strecke/Zeit.
Unter der Arduino-code:
/*
by Claudiu Cristian
*/
unsigned long time1;
int photocellPin_1 = 0; //1st sensor is connected to a0
int photocellReading_1; //the analog reading from the analog port
int photocellPin_2 = 1; //2nd sensor is connected to a1
int photocellReading_2; //the analog reading from the analog port
int threshold = 700; //value below sensors are trigerd
float Speed; //declaration of Speed variable
float timing;
unsigned long int calcTimeout = 0; //initialisation of timeout variable
void setup(void) {
//We'll send debugging information via the Serial monitor
Serial.begin(9600);
}
void loop(void) {
photocellReading_1 = analogRead(photocellPin_1); //read out values for sensor 1
photocellReading_2 = analogRead(photocellPin_2); //read out values for sensor 2
//if reading of first sensor is smaller than threshold starts time count and moves to calculation function
if (photocellReading_1 < threshold) {
time1 = millis();
startCalculation();
}
}
//calculation function
void startCalculation() {
calcTimeout = millis(); //asign time to timeout variable
//we wait for trigger of sensor 2 to start calculation - otherwise timeout
while (!(photocellReading_2 < threshold)) {
photocellReading_2 = analogRead(photocellPin_2);
if (millis() - calcTimeout > 5000) return;
}
timing = ((float) millis() - (float) time1) /1000.0; //computes time in seconds
Speed = 0.115 /timing; //speed in m/s given a separation distance of 11.5 cm
delay(100);
Serial.print(Speed);
Serial.print("\n");
}
gewusst wie: implementieren Sie den code mit Ultraschall HC-SR04 sensoren?
die Codierung ist problem für mich. hoffentlich kann mir jemand helfen...... 🙁
Bitte entschuldigen Sie mein schlechtes Englisch !
InformationsquelleAutor user3215083 | 2014-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es bereits viele Beispiele im internet, so dass, wenn alles, was Sie tun möchten, ist das kopieren, google-sr04 arduino
Aber wenn Sie wissen wollen, wie es zu tun...
Der sr04 hat 4 pins, vin, gnd, trigger, echo.
Die Verbindung vin und Masse an +5 und gnd
Verbinden Sie trigger auf einer digitalen output-pin
Verbinden Sie echo mit einem digital-Eingang pin -
Auslösen, indem Sie niedrig für 2 Mikrosekunden (us) und dann hoch zum 10 uns dann wieder niedrig
Dann erhalten Sie die Ergebnisse mit pulseIn von der echo-pin
Lesen Sie das Datenblatt für mehr Informationen
InformationsquelleAutor Darkroomsource