Forum: Mikrocontroller und Digitale Elektronik HC-SR04, 3.3V Attiny und nur ein Pin -> möglich?


von Sebastian W. (sebastian_w29)


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

von Jojo S. (Gast)


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.

von Sebastian W. (sebastian_w29)


Lesenswert?

Oh, ich war vielleicht im Text nicht ganz klar: Die Spannungsversorgung 
des HC-SR04 ist in meinem Fall sehr wohl 5V.

von schaunurvorbei (Gast)


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

von schaunurvorbei (Gast)


Lesenswert?

http://www.robot-electronics.co.uk/htm/srf05tech.htm


Mein HY-SRF05 hier weicht in der Bestückung deutlich von der
Abbildung in obigem Link ab!

Es befindet sich hier ein MAX3232 auf der Platine.
Ich habe noch nicht ausprobiert, ob er damit auch bereits bei 3,3 Volt 
zuverlässig funktioniert.

von Sebastian W. (sebastian_w29)


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.

von Michael (Gast)


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.

von Sebastian W. (sebastian_w29)


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

von Felix A. (davinciclaude)


Angehängte Dateien:

Lesenswert?

Jaja der Thread ist alt, bin aber mit dem gleichen Problem hier 
gelandet: 3V3 uC + HC-SR04. Den Murks mit Pins kurzschliessen und dann 
einfach mit einem GPIO den Echo-Pin overriden wollte ich nicht. Darum 
das Ding mit dem Spannungsteiler, siehe Anhang. Funktioniert wunderbar.

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.