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
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.
Oh, ich war vielleicht im Text nicht ganz klar: Die Spannungsversorgung des HC-SR04 ist in meinem Fall sehr wohl 5V.
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
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.
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.