AVR Nebenläufig ein US-020

OP #3207090
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
Gast #3207102
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
OP #3207109
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
#3207141
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.
#3207180
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren