Forum: Mikrocontroller und Digitale Elektronik AVR Nebenläufig ein US-020


von J. W. (ontheway)


Lesenswert?

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

von Günter (Gast)


Lesenswert?

Hallo Jens,
soll das ein Rätsel sein?
Günter

von Henrik S. (Gast)


Lesenswert?

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

von J. W. (ontheway)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

Henrik S. schrieb:
>der Delay könnte dir Probleme machen,
> wenn du das nebenbei laufen haben willst.

Messerscharf erkannt...

Oliver

von Falk B. (falk)


Lesenswert?

@ 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.

von Harald M. (mare_crisium)


Lesenswert?

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

von Henrik S. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.