HC-SR04, 3.3V Attiny und nur ein Pin -> möglich?

OP #3026639
Lesenswert?

Liebe Leute,

ist es möglich, einen Ultraschallsensor HC-SR04 an nur einem Pin eines 
3.3V Attiny zu betreiben?

Mit einem 5V Arduino funktioniert es: Setzt man den Pin auf Ausgang und 
HIGH, so steigt die Spannung von Trigger+Echo auf ca 3V. Die darauf 
folgende fallende Flanke reicht dem HC-SR04 um die Messung auszulösen.

Bei meinem Attiny861 mit 3.3V steigt die Spannung von Trigger+Echo aber 
nur auf 0.7V, wenn man den Pin auf Ausgang und HIGH schaltet.

Hintergrund ist nur ein Bastelprojekt (http://tilda.googlecode.com/), 
bei dem ich langsam keine freien Pins aber noch viele Ideen habe.

Zur Erläuterung der Funktion des HC-SR04: Die Messung wird durch eine 
fallende Flanke am Triggereingang ausgelöst. Es werden mehrere 
Ultraschallimpulse ausgesandt. Dann schaltet der Echoausgang HIGH. Nach 
Empfang der Ultraschallreflektion schaltet Echo wieder LOW. Die Zeit 
Echo HIGH-LOW ist das Maß der Distanz (58 μs pro cm).

In der 5V Arduino-Variante fließt anscheinend für einige μs ein Strom 
von ca. 70mA (0.7V Spannungsabfall über 10Ω) während der HIGH Pin 
Trigger+Echo auf HIGH zwingt. Nicht ganz gesund, oder, auch wenn 
http://code.google.com/p/arduino-new-ping/ schreibt: "Works with many 
different ultrasonic sensor models: SR04, SRF05, SRF06, DYP-ME007 & 
Parallax PING)))™. Option to interface with all but the SRF06 sensor 
using only one Arduino pin.")

Irgendwelche Schaltungsideen für eine saubere Ein-Pin 3.3V 
Attiny-Variante?

Gruß,
Sebastian
Gast #3026684
Lesenswert?

ich habe auch mal mit dem HC-SR04 gespielt und es lieferte bei 3,3V auch 
keine brauchbaren Ergebnisse. Das Problem sind mit Sicherheit nicht 
Signalpegel am Digitalausgang sondern eher das der Oszillator für die US 
Erzeugung nicht mehr ordentlich schwingt oder zuwenig Leistung an den 
Sender liefert. Auf dem Modul ist auch ein MAX232 der mit 5V arbeitet, 
vlt. bringt es was den gegen einen MAX3232 zu tauschen. Eine serielle 
Schnittstelle hat das Modul zwar nicht, aber der MAX wird vermutlich 
verwendet um eine höhere Spg. für den US-Wandler zu erzeugen.
Gast #3027657
Lesenswert?

Ich hab ehier ein HY-SRF05.
Dort liegen Trigger-Eingang und Echo-Ausgang auf dem gleichen Pin,
wenn man den Sensor am zusätzlichen Anschluss entsprechend konfiguriert.
Damit sollte eine Ein-Draht-Lösung möglich sein.
Die klassische Methode mit Standard-Arduino-Sketch funktioniert auch.

In der eBucht: 321054200273
OP #3027844
Lesenswert?

Ok, mit dem HC-SR04 ist es also nicht machbar?

Mal ganz abstrakt: Ich habe ein Gerät mit einem hochohmigen Eingangsport 
für eine 5V-Logik HIGH->LOW Triggerflanke, und einem Ausgangsport mit 
36Ω Pulldown zu Masse während das Gerät wartet und dann später einem 
5V-Logik HIGH Rechtecksignal proportional zur gemessenen Distanz.

Ich habe auf der anderen Seite einen Pin eines 3.3V Attiny861.

Fällt euch eine einfache Schaltung für dazwischen ein? Oder könnt ihr 
bestätigen, dass das nicht einfach machbar ist?

Ich möchte nicht wie wild weitere Sensoren kaufen wenn sich das Problem 
einfach lösen lässt.

LG, Sebastian

PS: Ich könnte den Attiny natürlich mit 5V laufen lassen, bräuchte dann 
aber eine Pegelwandlung für die I2C-Kommunikation mit dem RasPi.
Gast #3028022
Lesenswert?

Schonmal in die IIC-Spezifikation geschaut? Die Pegelwandlung ist dort 
sehr einfach mit zwei Mosfets + 2 PullUps gelöst. Vllt wäre das der 
bessere Weg, anstatt zu tricksen um Schaltungsteile kompliziert 
zueinander passend zu machen, die nur genau wegen des anderen teils 
(RPi) nicht zusammen passen.
OP #3030687
Lesenswert?

Der Attiny ist jetzt auf 5V umgestellt. I2C funktioniert ohne 
Pegelwandler (die 1.8kΩ I2C Pullup-Widerstände des RasPi ziehen 
ausreichend hoch), und der HC-SR04 funktioniert an einem Pin:

Wenn Trigger auf HIGH geht steigt die Spannung dann auf 2.2V, bei 
angenommenen 36Ω pulldown von Echo sind das 60mA. In meiner Software ist 
der Trigger jetzt über TCNT0 busy waiting implementiert, und nicht mehr 
als state machine, um die 10μs minimale Triggerzeit möglichst genau 
einzuhalten und zu verhindern, dass ein Programmierfehler woanders den 
Trigger längere Zeit auf HIGH belässt.

Ich habe auch noch eine kleine Warnung als Kommentar zu 
http://code.google.com/p/arduino-new-ping/wiki/NewPing_Single_Pin_Sketch 
angefügt.

LG, Sebastian

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