Hi liebe Experten, ich habe mal einen Sensor US-020 angeschlossen, und überlege gerade, wie ich denn nun nebenläufig einen Abstand messen könnte. Sprich: Mein Hauptprogramm wäre gewiss nicht die Messung eines Abstands, reiner Test, das mach ich nur mal nebenbei. Idee 1: ISP. Einfach über MOSI ein Byte rüberschieben und über MISO analysieren. - Problem: Reicht glaube ich nicht, eine 8 bit Serie senden reicht wohl kaum. Ich könnte aber auch mehere Byte schieben... Idee 2: Einfach einen Timer und antriggern. Das finde ich eigentlich ganz sympathisch, aber nun: Wie bekomme ich nun die Zeitdifferenz gelesen? Den zweiten Interrupt auf das Echo vom US-020? Sprich: Ich will ja eigentlich nicht in der Interruppt-Routine auf die Antwort warten! Danke für Tipps! LG, Jens
Der Code für deine zweite Idee (auf einem Arduino) sähe so aus:
1 | digitalWrite(trigPin, LOW); //resetting trigger |
2 | delayMicroseconds(10); |
3 | |
4 | digitalWrite(trigPin, HIGH); //triggering |
5 | delayMicroseconds(30); |
6 | digitalWrite(trigPin, LOW); |
7 | |
8 | duration = pulseIn(echoPin, HIGH); //reading the duration |
9 | |
10 | distance = (duration / 2) / 29.1; //calculating the distance |
Funktioniert für mich wunderbar, der Delay könnte dir Probleme machen, wenn du das nebenbei laufen haben willst. Henrik
Henrik S. schrieb: > Der Code für deine zweite Idee (auf einem Arduino) sähe so aus: > >
1 | digitalWrite(trigPin, LOW); //resetting trigger |
2 | > delayMicroseconds(10); |
3 | >
|
4 | > digitalWrite(trigPin, HIGH); //triggering |
5 | > delayMicroseconds(30); |
6 | > digitalWrite(trigPin, LOW); |
7 | >
|
8 | > duration = pulseIn(echoPin, HIGH); //reading the duration |
9 | >
|
10 | > distance = (duration / 2) / 29.1; //calculating the distance |
> > Funktioniert für mich wunderbar, der Delay könnte dir Probleme machen, > wenn du das nebenbei laufen haben willst. > Hi Henrik, wenn ich Deinen Code richtig lese, dann reicht einfaches antriggern aus, um die Resonanz zu bekommen. Sprich: Die Distanz. War mir nicht ganz klar. Vom Ossi her sieht es so aus, als müsste ich gewisse Stabilität erreichen. Das Teil muss sich nach antriggern erst mal fangen. Bei Bewegung ist der Ausgang nicht stabil. Das mag aber auch am Ossi liegen. Ich schau mir das mal näher an. Danke schon mal. Jens
Henrik S. schrieb: >der Delay könnte dir Probleme machen, > wenn du das nebenbei laufen haben willst. Messerscharf erkannt... Oliver
@ J. W. (ontheway) >ich habe mal einen Sensor US-020 angeschlossen, und überlege gerade, wie Kein Mensch kennt den. Siehe Netiquette. >Idee 1: ISP. Einfach über MOSI ein Byte rüberschieben und über MISO >analysieren. SPI, nicht ISP. >- Problem: Reicht glaube ich nicht, eine 8 bit Serie senden reicht wohl >kaum. Ich könnte aber auch mehere Byte schieben... Du sprichst in Rätseln. Siehe oben. >Idee 2: Einfach einen Timer und antriggern. Das finde ich eigentlich >ganz sympathisch, aber nun: Wie bekomme ich nun die Zeitdifferenz >gelesen? Den zweiten Interrupt auf das Echo vom US-020? Sprich: Ich will >ja eigentlich nicht in der Interruppt-Routine auf die Antwort warten! Siehe Mulitasking.
J.W., ich habe den Eindruck, dass Du nicht weisst, wie so ein US-Sender bzw. -Empfänger anzusteuern ist. Das empfangene Signal ist viel zu schwach und der US-Wandler viel zu hochohmig, um direkt ein Signal erzeugen zu können, das auf der MISO-Leitung vom MC wahrgenommen würde. Du musst es erst verstärken. Ein paar Anregungen kannst Du hier http://www.rn-wissen.de/index.php/Ultraschall-Interface finden; aber auch sonst gibt's im Net reichlich Literatur und Schaltpläne. Ciao, mare_crisium
Hallo, @ Harald: Bei mir funktioniert das problemlos, ohne Verstärker etc. @ Oliver: Danke für das Kompliment, aber wie würde man das lösen? Henrik
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.