Jump to content

Impulse zählen


exilant
 Share

Recommended Posts

Hallo zusammen,

 

ich bin totaler elektronik Laie. Ein paar Kleinigkeiten habe ich zwar schon gemacht aber nichts ernstes. Ich habe da ein Problem und frage mich ob und wie ich es eventuell mit Tinkerforge lösen kann: Ich muss Impulse zählen. Diese treten vergleichsweise selten auf, also im niedrigen einstelligen Hz Bereich, so max. so drei bis vier Impulse/Sek. Diese sollen von einer Lichtschranke oder einem Reed Schalter geliefert werden. Es geht um die Mengenmessung von durchlaufender Textilware. Vereinfacht gesagt wird mit nicht besonders hoher Geschwindigkeit Gewebe von einer Rolle auf eind andere gerollt . Dabei möchte ich zählen, wie oft ein bestimmtes Metallteil (eine Art "Speiche") an einer Lichtschranke oder einem Reedkontakt vorbeiläuft. Dadurch würde ich mit ausreichender Genauigkeit die Menge der umgerollten Ware erfassen können. Allerdings sollten die Impulse quasi gepuffert werden bis meine Software den "Zählerstand" abholt und zurücksetzt.

Die Hardware besteht aus einem Raspberry (mit Akkupack) und verwendet zur  Anzeige des Zählerstandes ein LCD Bricklet. Versuche mit dem IR Bricklet verliefen schon vielversprechend, sind aber bauartbedingt nicht für alle diese Rollen geeignet. Obendrein gingen mir ab und zu Impulse verloren, da - warum auch immer - callbacks nicht ausgeführt wurden. Irgendeine Idee?

 

Grüße,

Martin

 

 

 

Link to comment
Share on other sites

Wenn du die TF-Hardware ganz normal benutzen möchtest, dann kannst du auf deinem Pi per Callback lauschen und dort "puffern". Das wirst du vermutlich im Moment genau so tun. Es sollten eigentlich keine Callbacks "verloren" gehen. Wie meinst du das? Weißt du, dass die Lichtschranke den Impuls wahrgenommen haben muss und der Callback blieb aus?

 

Zum Puffern: Wenn du möchtest, dass dein IR-Bricklet den Zählerstand puffert, dann vermute ich, dass das möglich ist. Allerdings müsstest du dafür das Distance-IR-Plugin modifizieren. Dieses ist in C geschrieben (mit einigen Einschränkungen) und öffentlich verfügbar. Standardmäßig kann es sowas aber noch nicht.

Ich habe aber zeit- und lust-bedingt bisher noch nie selbst versucht ein eigenes Plugin zu kompilieren, kann dir also leider keine tiefergehende Hilfestellung geben.

Link to comment
Share on other sites

Welches IR-Bricklet ist es denn - Distanz oder Temp-IR ?

 

Wenn ich dich richtig verstehe möchtest Du sowas ähnliches machen, wie man mit einem Fahrrad-Computer die Geschwindigkeit des Rades misst ? Dazu werden eig. auch die Impulse gemessen. Nur liegt der Sensor zwar an den Speichen, aber dieser muss sehr nahe zum Empfänger ausgerichtet sein.

 

Mit IR-Sensoren habe ich eher schlechte Erfahrungen gemacht: z.B. IR-Fernauslöser für Kameras/Blitze sind nicht immer zuverlässig in der Detection/Auslösung. Starke Winkelabhängigkeit, Reflexionsgrad der Oberfläche, störlichtempfindlich etc.

M.W. funktionieren deshalb die Fahrradcomputer zuverlässiger mit einem Magneten(Sender) der in einer Spule (Empfänger) an der Radgabel ein Spannungsimpuls induziert. Ev. würde ich mal nach so einem Sensor googeln und diesen ev. an ein IO-Bricklet anschliessen.

 

Gut möglich das der IR für die Erfassung der dünnen Speichen bei Deinen Textilrollen zu langsam, bzw. unzuverlässig ist. Mit der niedr. Frequenz sollten die Callbacks aber allemal funktionieren.

Link to comment
Share on other sites

>Welches IR-Bricklet ist es denn - Distanz oder Temp-IR ?

 

Distanz.

 

>Wenn ich dich richtig verstehe möchtest Du sowas

>ähnliches machen, wie man mit einem Fahrrad-Computer

>die Geschwindigkeit des Rades misst ?

 

Exakt. Ich denke auch, dass ich mit einem Magnetschalter und 'nem IO Bricklet sowas besser als jetzt hinkriege.

Ich werde da mal googlen.

 

Vielen Dank.

 

 

Link to comment
Share on other sites

>...dann kannst du auf deinem Pi per Callback lauschen

> und dort "puffern". Das wirst du vermutlich im Moment

> genau so tun.

Ja. So mache ich das im Moment.

 

>Es sollten eigentlich keine Callbacks "verloren"

>gehen.

Da habe ich mich falsch ausgedrückt: Da ist kein Callback "verloren gegangen" sondern der Distanz Sensor hat nicht mitgekriegt das die "Speiche" vorbeigerauscht ist und folglich gab es keinen Callback. Kommt nicht oft vor, aber öfter als ich es tolerieren kann.

Link to comment
Share on other sites

Ich habe den Thread nur überflogen, sorry, wenn ich was Sinnfreies schreibe:

 

Das Shannon-Theorem besagt, dass eine Abtastfrequenz mindestens doppelt so hoch sein muss wie die höchste Frequenz im abgehörten Signal. Das kann man vom Schema her wohl übertragen würde ich sagen:

 

Wenn die Speiche also vorbeirauscht und dabei jeweils(je nachdem, wie dick sie ist) eine 100stel Sekunde vor dem Sensor ist, dann muss der Sensor mindestens jede 50stel Sekunde abtasten, damit die Speiche nie "übersehen" wird.

kannst du über die Abtastfrequenz nichts verbessern?

 

Hilft der Hinweis?

 

EDIT:

 

Sorry, hab gerade erst gesehen, dass Nic das in etwa schon gesagt hat.

Link to comment
Share on other sites

@Nic: Danke für den Link. Auf "Hallsensoren" bin ich auch gestossen.

 

Aber jetzt tut sich eine weitere Anforderung auf die ich mit TF wohl nicht mehr erfüllen kann: Der Zähler soll Resetfest sein. Er soll den Reset des angeschlossenen Rechners überleben. Da gibt es fertige Lösungen, die sind aber schweineteuer und leider nur via RS232 / RS485 anzuschließen und können viel mehr als ich brauche. Muss ich mich wirklich bei Arduino umtun....

Link to comment
Share on other sites

@exilant: Reset des angeschlossenen Rechners heißt der RaspberryPi?

 

Ansonsten würde ich empfehlen die Modifikation des Plugins zu machen und den Stack per WLAN/Ethernet-Extension (letzteres hoffentlich bald erhältlich) zu realisieren. Mit eigener Stromversorgung, z.B. per USB-Netzteil. Dann ist der Stack unabhängig vom PC.

 

Dann müsste im Fehlerfall sowohl der Host-PC, als auch der STack ausfallen, damit du DInge übersiehst:

Falls nur der PC ausfällt, dann zählt dein Stack einfach intern weiter (dank neuem Plugin) bis der PC wieder da ist.

Falls der Strom vom Stack ausfällt... naja, da gibt es keine Hardware die das per se toleriert :D Und ne USV davor zu tun ist überall möglich ^^

Link to comment
Share on other sites

Ansonsten würde ich empfehlen die Modifikation des Plugins zu machen

Man sollte aber schon erwähnen, dass das keine triviale Angelegenheit ist und Erfahrung und Motivation in hardwarenaher C-Programmierung voraussetzt. Verschärfend kommt hinzu, dass es (noch) keine hilfreiche Einführung zur Modifikation des Bricklet-Codes (Plugin ins Eeprom des Master-Bricks) hier im Portal gibt.

Ev. wird das einfacher mit der OnDevice-API, hierzu wurde schon heute eine

http://www.tinkerunity.org/forum/index.php/topic,1266.msg7787.html#msg7787 von vielen ;D Anfragen gestellt.

 

Der Wunsch nach einem RS232-Bricklet wurde auch schon oft gestellt, und die Chance auf Realisierung dürfte steigen je mehr Interesse es dafür gibt.

Link to comment
Share on other sites

@exilant: Reset des angeschlossenen Rechners heißt der RaspberryPi?

 

Ja, Reset des Hosts an dem der Masterbrick angeschlossen ist.

 

Falls der Strom vom Stack ausfällt... naja, da gibt es keine Hardware die das per se toleriert :D Und ne USV davor zu tun ist überall möglich

 

Nein, es muss nicht hochverfügbar sein. Es soll aber möglich sein, den Host neu zu starten ohne den Zählerstand zu verlieren und der Zähler muss weiter inkrementiert werden.

Ich denke aber, das übersteigt meine Fähigkeiten deutlich-> Elektronik-Laie.

Ich kann nur programmieren....

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...