Mittels Dopplerradar lassen sich Geschwindigkeiten von bewegten Objekten bestimmen. Basis bildet der Dopplereffekt. Vom Sensor wird eine elektromagnetische Welle mit einer bestimmten Frequenz ausgesendet. Trifft diese auf ein ruhendes Objekt, so wird eine Welle mit gleicher Frequenz reflektiert. Diese trifft dann wieder auf den Sensor und wird mit der ausgesandten Welle im sog. Mixer überlagert. Das Resultat ist eine sog. Schwebung. Besitzen die beiden Wellen die selbe Frequenz, so besitzt die überlagerte Schwebung eine Frequenz von 0 Hz.
Trifft die ausgestrahlte Welle aber auf ein bewegtes Objekt, so wird je nach Bewegungsrichtung die reflektierte Welle eine höhere (bei Annäherung des Objekts) bzw. niedrigere (bei Entfernung des Objekts) Frequenz besitzen.
Überlagert sich nun diese reflektierte Welle mit der ausgesandten, so entsteht eine Schwebung mit der Frequenz (f_ausgesandt – f_reflektiert). Diese wird an den Arduino weitergeleitet und von diesem gemessen. Die Frequenz der reflektierten Wellen bzw. in weiterer Folge auch die Frequenz der Schwebung hängt von der Geschwindigkeit v des bewegten Objekts ab. Aus der Schwebungsfrequenz lässt sich also die Geschwindigkeit des bewegten Objekts berechnen.
Als Sensor kommt das weit verbreitete Modul HB100 zum Einsatz. Dieses kann für wenige Euro auf ebay erstanden werden.
Hinweis: Probleme hatte ich mit der Spannungsversorgung des HB100. Verwendete ich direkt den +5V-pin des Arduino, so konnte ich damit keine gute Sensibilität erzielen. Deshalb wählte ich für beide Schaltungsvarianten einen LM317 Spannungsregler und wählte die Widerstände so, dass der LM317 ca. +5.1V lieferte. Damit versorgte ich dann den HB100.
Variante 1:
Variante 2:
Arduino-Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
/* FreqMeasure - Example with LCD output * http://www.pjrc.com/teensy/td_libs_FreqMeasure.html * * Slightly modified by @3zuli for use with HB100 doppler radar module * * This example code is in the public domain. * * Frequency input pin: 8. Connect the IF pin from the preamp board to this pin. * This should work with Arduino Uno, Nano, Pro mini and simillar. * For other boards, see the FreqMeasure documentation (link above). * */ #include <Wire.h> #include <FreqMeasure.h> #include <LiquidCrystal_I2C.h> //LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display. ACHTUNG: Adresse kann auch 0x3F sein !!! LiquidCrystal_I2C lcd(0x3F,16,2); // Anschlüsse: // GND - GND // VCC - 5V // SDA - ANALOG Pin 4 // SCL - ANALOG pin 5 double sum = 0; int count = 0; float f; // Frequenz float v; // Geschwindigkeit // ======================== // ======== SETUP ========= // ======================== void setup() { Serial.begin(57600); lcd.init(); // initialize the lcd // Print a message to the LCD. lcd.backlight(); lcd.setCursor(0,0); lcd.print("Dopplerradar"); lcd.setCursor(0,1); lcd.print("Version 1.0"); delay(4000); lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); lcd.setCursor(0,0); lcd.print("f = "); lcd.setCursor(0,1); lcd.print("v = "); FreqMeasure.begin(); } // ================================ // ======== HAUPTSCHLEIFE ========= // ================================ void loop() { if (FreqMeasure.available()) { // average the readings together sum = sum + FreqMeasure.read(); count = count + 1; if (count >= 10) { f = FreqMeasure.countToFrequency(sum / count); v = f / 19.49; // conversion from frequency to kilometers per hour lcd.setCursor(4,0); lcd.print(" "); lcd.setCursor(4,0); lcd.print(f); lcd.print(" Hz"); lcd.setCursor(4,1); lcd.print(" "); lcd.setCursor(4,1); lcd.print(v); lcd.print(" km/h"); Serial.print("v = "); Serial.println(v,1); delay(50); sum = 0; count = 0; } } } |