Guten Abend, ich möchte einen Parallax Ping))) Sensor mit einem Raspberry Pi ansteuern. Dieser Sensor hat nur eine Signalleitung. Zunächst benötigt dieser Sensor einen Impuls und gibt danach auf der selben Leitung einen Implus zurück (wobei diese zweite Impluslänge für die gemessene Entfernung des Sensors steht). Mein Problem dabei ist, dass mein Raspberry es nicht rechtzeitig schafft den Modus des Pins von Output (für das Startsignal) auf (Interrupt)Input umzustellen. Nun wäre meine Idee gewesen, dass ich den Startimpuls auf einem Pin sende und mit einem anderen Pin den Implus des Sensors empfange. Nun benötige ich ein(e) Bauteil/Schaltung die das Startsignal an den Ultraschallsensor gibt, aber nicht an meinen Empfangspin. Leider fällt mir kein (kleines) Bauteil oder keine einfache Schaltung ein die dies löst. Hat jemand eine Idee für mich? Beste Grüße, Christoph
Hast Du ein Darenblatt zu dem Sensor? Hat der Sensor OC Ausgang? Kannst Du am Raspi OC Ausgang machen? Bist Du sicher dass der Raspi Realtime kann? Gruss Chregu
Christoph schrieb: > Mein Problem dabei ist, dass mein Raspberry es nicht rechtzeitig schafft > den Modus des Pins von Output (für das Startsignal) auf (Interrupt)Input > umzustellen. Das ist nicht ein Problem des Raspberry, sondern ein Problem deiner Programmierung.
Christoph schrieb: > Nun benötige ich ein(e) Bauteil/Schaltung die das Startsignal > an den Ultraschallsensor gibt, aber nicht an meinen Empfangspin. Das "Bauteil" müsste doch Software heißen! Du weißt doch in der SW, ob du gerade am Senden bist - und dann den Empfangspin ignorieren - oder eben beim Empfangen, um ihn dann auszuwerten. Wenn ein Interrupt notwendig sein sollte, dann ist dieses Ignorieren sicher auch im IRQ-Handler möglich. Bei einem 'normalen' µC würde ich das ohne IRQ machen.
Christoph schrieb: > Dieser Sensor hat nur eine Signalleitung. Zunächst benötigt dieser > Sensor einen Impuls und gibt danach auf der selben Leitung einen Implus > zurück (wobei diese zweite Impluslänge für die gemessene Entfernung des > Sensors steht). Mein Problem dabei ist, dass mein Raspberry es nicht > rechtzeitig schafft den Modus des Pins von Output (für das Startsignal) > auf (Interrupt)Input umzustellen. Wofür der Interrupt? Wenn der µC eh' zu langsam ist, dann kannst du auch gleich pollen. Allerdings wundert mich, wie man einen GHz Boliden so umständlich niederknechten kann, dass der für was "zu langsam" ist. Und zudem für eine Schallaufzeit! Die kann man ja fast auszählen. Beim Donner klappt das tadellos...
:
Bearbeitet durch Moderator
Schonmal danke für eure Hilfe. Als Datenblatt habe ich nur dieses Dokument gefunden: http://www.crustcrawler.com/products/Nomad/docs/PING%20Documentation-v1.6.pdf Die Umstellung auf einen Interrupt dauert deswegen solange, da das Prioritätsscheduling mir da gelegentlich einen Strich durch die Rechnung macht. Ohne IRQ zu pollen möchte ich nur sehr ungern, auch wenn es nur ein kurzer Zeitraum ist, da mehrere Messungen in kürzeren Zeiträumen gemacht werden. Vielleicht könnte ich mit einem Flag Signalisieren dass die ISR bei meinem Senden effektiv nichts machen soll, allerdings dachte ich dass es eine schönere Lösung gibt. (da die Funktion dennnoch aufgerufen werden würde)
Hi Wenn der µC wirklich zu langsam ist und der Sensor NUR ein HIGH oder LOW zum STarten braucht, kannst Du den Pin als Ausgang schalten, und dann auf Eingang umschalten. Durch einen ggf. notwenigen PullUp/-Dn Widerstand wird der Start-Pegel eingenommen. Das Signal des Sensor 'übertüncht' das Pull-Signal und kann eingelesen werden. So z.B. einen HC-SR04 an einer PicAxe betrieben (dort aber HIGH zu PULSIN) MfG
Christoph schrieb: > Die Umstellung auf einen Interrupt dauert deswegen solange, da das > Prioritätsscheduling mir da gelegentlich einen Strich durch die Rechnung > macht. Vielleicht solltest du überlegen, beispielsweise einfach einen Arduino Clone für 2€ mit der Ultraschallmessung zu beauftragen und die Ergebnisse deinem Linux-Rechner über einen dort laufenden MQTT-Broker per Schnittstelle deiner Wahl zukommen zu lassen. So ein kleiner, autonomer µC ist für soetwas deutlich handlicher, als jetzt anzufangen, irgendwelche Hardware zu stricken, nur weil dir die Echtzeitfähigkeit auf dem RPi fehlt.
Wieso nicht einen Ein- und einen Ausgang miteinander verbinden? Solange Du nicht zwei Pins als Ausgang einrichtest (und diese miteinander verbindest), sollte es keine Probleme geben. Da normalerweise auf diesen Rechnern Linux läuft, ein System, bei dem man prinzipiell nicht immer alles, und vor allem zu jeder Zeit machen darf, bleibt das befummeln der Pins immer ein (vor allem zeitliches) Problem. Auf dieser Ebene ist ein kleiner Atmel oder Pic, als echter Echtzeitlümmel, die bessere und genauere Lösung.
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.