Jump to content

Recommended Posts

Geschrieben

Hallo,

 

ich möchte Lichtschranken bauen und würde gerne wissen, ob das, wie es mir denke, mit Tinkerforge möglich ist:

 

Ich habe an die Verwendung eines IO-16 Bricklets gedacht, der per Master Brick (und USB) an einen PC oder Raspberry Pi angeschlossen wird. Am IO-16 möchte ich dann z.B. Gabellichtschranken anschließen und per Interrupt den Zeitpunkt der Unterbrechung des Sensors feststellen. Im Falle eines PCs würde ich C# einsetzen und entsprechend in der Callback-Funktion DateTime.Now aufrufen. Die Frage: Bekomme ich damit eine Genauigkeit von einer Millisekunde hin? Oder wäre dann eine Python-Lösung auf Grundlage eines Raspberry Pi besser geeignet oder gar notwendig?

 

Ich habe leider keine Information darüber gefunden, wie lange es zwischen Eingangssignal und Aufrufen des Callbacks dauern kann (oder ob es womöglich noch variiert).

Geschrieben

Die Tinkerforge-Module haben eine maximale Genauigkeit von 1ms (bedingt durch USB Transfer). Bei Aufruf des Callbacks kann es meiner Erfahrung nach zu einer minimalen Verzögerung kommen, bis der Callback die Anwendung erreicht, d. h. ich würde aktuell nicht davon ausgehen, dass der Callback immer mit dem Timestamp der auslösenden Millisekunde an der Anwendung ankommt (da liegt eine USB-Stecke und eine Netzwerkstrecke dazwischen).

 

Die Übertragungszeit dürfte relativ konstant sein.

Kommt es Dir auf das Delta zwischen zwei Callbacks an oder die absolute Zeit in Millisekunden? Hier spielt ja auch die Genauigkeit des Zeitgebers im PC eine Rolle.

 

Die Programmiersprache wird eher wenig Einfluss auf die Genauigkeit haben.

Geschrieben

Mir geht es um das Delta zwischen zwei Unterbrechungen, aber dann möglichst in Millisekunden. Wenn die Verzögerung immer auf die Millisekunde gleich ist, ist alles in Ordnung. Wäre halt die Frage...

 

Ansonsten habe ich gelesen, dass die Callbacks gecached werden und der Mikrocontroller Timer besitzt. Wäre es dann nicht möglich den realen Zeitpunkt der Unterbrechung abzufragen? Also dass der Zeitpunkt erfasst wird, dann in Ruhe über USB übertragen wird und auf Seite des Computers ausgelesen werden kann?

Geschrieben

Ich habe bei mir z.B. ein SoundIntensity-Bricklet am laufen, welches ab einer bestimmten Lautstärke alle 40ms einen Callback wiederholen soll. Das klappt relativ gut, aber nicht mit 100% Genauigkeit.

 

Beispiel - die erste Zahl ist jeweils eine relative Millisekunde des Callbacks, der alle 40ms kommen sollte:

10629 1271
10669 1154
10709 1337
10749 1282
10789 1177
10829 1342
10869 1285
10909 1432
10950 1403
10990 1328
11030 1433
11070 1263
11109 1136
11149 1153
11191 1097
11230 1145
11270 1350
11310 1262
11351 1048
11391 1259
11431 1310
11471 1297
11512 1228
11552 1185
11592 1087
11632 1076
11672 1057
11712 1012
11752 1363
11792 1289
11833 1308
11873 1354
11913 1178
11953 1148

 

Hier kannst Du sehen, dass es mal eine Millisekunde mehr oder weniger sein kann. Tendenziell kommen in 40 Sekunden bei mir keine 1000 Callbacks, sondern eher nur 999, d. h. es gehen pro Callback wohl ein paar Mikrosekunden verloren (für meine Anwendung ist das ausreichend).

 

Geschrieben

Danke für die Zeiten! Ich bin schwer am überlegen mir die Hardware einmal zu beschaffen und zu gucken, wie gut das funktioniert. Weitere Anwendungsfälle hätte ich notfalls genug und vielleicht muss ich einfach damit leben, dass es auch mal wenige Millisekunden Abweichung geben kann, wenn ich mir nicht selber aufwändig eine eigene Schaltung entwerfe. Das wäre mir nämlich aktuell zu viel Aufwand...

Geschrieben

Ja :)

 

Dann hätte ich noch zwei Fragen:

 

Am IO-16 würde ich gerne 10 LEDs anschließen, jeweils 5 grüne (Reihe) und 5 rote (Einzelne). Nur habe ich keine Ahnung, wie ich die Vorwiderstände berechnen soll :-\

 

Zweite Frage: Ich würde gerne eine Gabellichtschranke am IO-4 anschließen, habe aber auch hier keine Ahnung, wie das vonstatten geht.

 

Kann mir noch jemand etwas zu den beiden Punkten sagen? :)

Geschrieben

Mit

5 grüne (Reihe)
meinst Du 5 in Reihe schalten (immer alle gleichzeitig ein) oder eine kleine LED Leiste mit 5 einzelnen LEDs betreiben?

 

Für 5 Grüne in Reihe bräuchtest nämlich 5*1,9V, also 9,5V und die könntest Du nicht mit dem IO16 schalten. Du nimmst 3,3V Spannung oder 5V? Davon ist der Widerstand abhängig.

Geschrieben

Mir geht es darum, dass die fünf grünen LEDs entweder alle zusammen an oder aus sind. Wenn die Spannung so nicht reicht, dann kann ich die aber sonst auch einzeln anschließen und setze dann im Programmcode alle Signale "gleichzeitig". Der Zeitunterschied dürfte ja klein genug sein, dass man nicht sieht, dass die LEDs einzeln angehen, oder?

 

Da ich möglichst ohne weitere Stromquelle auskommen möchte (wenn möglich), würde ich wohl auf die 3,3V setzen.

 

Aber wenn wir schon dabei sind: Beim ersten Testaufbau hätte ich dann folgende Komponenten:

 

- Master Brick

- IO-16 mit je 5 grünen und roten LEDs, ggf. noch zwei gelbe

- IO-4 mit zwei Lichtschranken (CNY 37), nimmt die Signale auf und liefert den Strom

- Voltage/Current Brick

 

Reicht da die Stromversorgung über einen einzelnen USB-Anschluss? Ich glaub zwar schon, aber lieber nochmal fragen... :)

Geschrieben

Alle 5 in Reihe geht mit dem IO16 nicht.

Jede LED einzeln ansteuern geht. Bei 3.3V, 15mA und 1,9V an der LED brauchst du jeweils einen Vorwiderstand von 100 Ohm.

 

Den Strom kannst du ja jetzt ausrechnen. Vergiss nicht dass der Master und die Bricklets selbst auch noch Strom brauchen.

Aber wenn ich das im Kopf so überschlage sollte das der USB mit 500mA hergeben.

 

Geschrieben

Ok, cool :) Danke schonmal für eure Hilfe. Ich hoffe ich komme heute Abend dazu alle Widerstände zu berechnen und schreibe sie hier dann nochmal sicherheitshalber rein, bevor ich die Bestellung abschicke.

Geschrieben

So, im Anhang dann mal meine Schaltung :) Am IO-16 hätte ich dann 5 rote, 5 grüne und 2 gelbe LEDs, wobei niemals alle zusammen eingeschaltet sind. Da würde der Strom ja auch nicht reichen...

 

Am IO-4 dann zwei Gabellichtschranken. Passt das vom Layout und sind die Widerstände richtig?

 

Bei den LEDs gucke ich dann nochmal, welche genau ich im Endeffekt nehme. Die Widerstände passe ich dann noch entsprechend an.

 

@Nic: Grad mit den Lichtschranken bin ich mir sehr unsicher... Laut Produktblatt sind 60mA angegeben, also deutlich mehr als der IO-4 liefert. Aber bei dir scheint es ja auch funktioniert zu haben.

 

Edit: Anhang entfernt, da die Schaltung, wie ich jetzt weiß, definitiv falsch war. Sonst macht sich am Ende noch jemand was kaputt.

Geschrieben

Oh man, so langsam verzweifel ich wirklich :( Dank dem Beitrag von Nic habe ich nun verstanden, wie es mit einer Lichtschranke am IO-4 funktioniert. Warum es funktioniert, verstehe ich aber immer noch nicht... Trotzdem habe ich nun ewig versucht die Schaltung so hinzubiegen, dass ich zwei Lichtschranken (an zwei verschiedenen Eingängen) anschließen kann. Das bekomme ich aber einfach nicht hin. Kann mir hier nochmal jemand auf die Sprünge helfen?

 

Und um die Idee mal etwas weiterzuspinnen: Könnte man am IO-4 auch vier Lichtschranken betreiben?

Geschrieben

Du kannst an eine IO4 bis zu 4 Lichtschranken anschließen, an eine IO16 bis zu 16 Stück.

 

Vielleicht hilft es zum Verständnis (bei 4 Lichtschranken):

 

Den leuchtenden Teil der Lichtschranken kannst du alle parallel an die Spannungsversorgung anschließen (3,3V -> Widerstand -> (+Seite)Lichtquelle der Lichtschranke -> (-Seite)Lichtquelle der Lichtschranke -> GND).

 

Jetzt kommt die andere Seite. Die meisten die ich kenne haben einen Fototransistor. Quasi ein Schalter, der bei Lichteinstrahlung geschlossen ist und wenn das Licht weg geht, dann ist der offen.

Wenn du es nun folgenden Aufbau machst: (3,3V -> ("+Seite")Transistor der Lichtschranke -> (D-Seite)Transistor der Lichtschranke -> [Kabel an IO-Port]+[Widerstand 1KOhm] -> GND.

 

Damit schalten dann 4 Lichtschranken unabhängig voneinander.

 

Beste Grüße

Jörg

Geschrieben

Ok, ich habe mich nochmal damit beschäftigt. Also ich denke den Anschluss bekomme ich nun hin, danke.

 

Aber eine Frage bleibt dann noch: Der IO-4 bietet pro Ausgang 6mA. Bei vier Lichtschranken hätte also jede LEDs lediglich 1,5mA zur Verfügung. Kann das wirklich reichen? Bei herkömmlichen LEDs muss ich ja mit ca. 15 mA rechnen. Klar, die leuchten auch stärker, aber trotzdem...

 

EDIT: Achja, nicht zu vergessen natürlich die Fototransistoren als solches, die von dem einen Ausgang ja auch noch ein wenig Strom abhaben möchten. Ich kann mir nicht vorstellen, dass das reicht.

Geschrieben

Hmm, möchtest du die Lichtschranken mit der IO4 auch einschalten? Wenn ja, dann musst du ein wenig mehr Beschaltung hinzufügen.

 

Wenn nein sollte das IO4 auf der dauerstromversorgung (+ und GND Ausgänge) genug sttom liefern können.  Heisst aber auch, wenn du Tinkerforge an Spannung anachließt, dann sind die Lichtschranken an und verbrauchen Strom. Die IO Ports sind in diesem fall eingänge und sind hochohmig, also fließt da sehr sehr wenig (vernachlässigbar) strom rein.

 

Habe gerade nachgeschaut (überflogen), leider sagt die Doku nichts über den max. theoretischen Strom am 3V3 Ausgang aus. Ja ja ich weiss alle Spannungsversorgungsausgänge kommen vom Stack. Daher theoretisch ;)

Geschrieben
die Doku nichts über den max. theoretischen Strom am 3V3 Ausgang

Weil das eig. nur von der angeschlossenen Stromquelle abhängig ist. Den 3V out am IO4 verwende ich u.a. als Versorgung für 10 Cree-LEDs, ca.250mA.

Geschrieben

Wenn ich dich jetzt richtig verstanden habe, bezieht sich die Angabe des maximalen Ausgangsstromes nur auf die vier digitalen Ausgänge und der fünfte Ausgang liefert so viel Strom, wie der Stack bereitstellen kann? Dann wäre das analoge Out-Bricklet bei mir ja völlig nutzlos?

Geschrieben
maximalen Ausgangsstromes nur auf die vier digitalen Ausgänge

Wenn du damit die 4 IO Pins meinst und jeweils als Ausgang/Output konfiguriert sind, kann pro Ausgang max. 6mA konsumiert werden.

und der fünfte Ausgang liefert so viel Strom, wie der Stack bereitstellen kann

Wenn du damit den "Output only" 3.3V meinst :D, dürfte das nur von dem dünnen Aderquerschnitt und der Länge des Bricklet-Kabels begrenzt sein, Bastian von TF nannte einmal ca. 1A maximal.

Dann wäre das analoge Out-Bricklet bei mir ja völlig nutzlos?

Nicht unbedingt ;D für das nächste Projekt sicher hilfreich...

Join the conversation

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

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...