ETS Geschrieben November 2, 2014 at 18:33 Geschrieben November 2, 2014 at 18:33 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). Zitieren
remotecontrol Geschrieben November 3, 2014 at 08:30 Geschrieben November 3, 2014 at 08:30 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. Zitieren
ETS Geschrieben November 3, 2014 at 09:44 Autor Geschrieben November 3, 2014 at 09:44 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? Zitieren
remotecontrol Geschrieben November 3, 2014 at 14:36 Geschrieben November 3, 2014 at 14:36 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). Zitieren
ETS Geschrieben November 3, 2014 at 19:26 Autor Geschrieben November 3, 2014 at 19:26 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... Zitieren
remotecontrol Geschrieben November 4, 2014 at 15:00 Geschrieben November 4, 2014 at 15:00 Wie heisst es so schön: Probieren geht über Studieren .. Zitieren
ETS Geschrieben November 5, 2014 at 19:18 Autor Geschrieben November 5, 2014 at 19:18 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? Zitieren
remotecontrol Geschrieben November 5, 2014 at 20:05 Geschrieben November 5, 2014 at 20:05 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. Zitieren
ETS Geschrieben November 5, 2014 at 20:40 Autor Geschrieben November 5, 2014 at 20:40 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... Zitieren
raphael_vogel Geschrieben November 5, 2014 at 21:19 Geschrieben November 5, 2014 at 21:19 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. Zitieren
raphael_vogel Geschrieben November 5, 2014 at 21:21 Geschrieben November 5, 2014 at 21:21 BTW: Einen schönen LED Vorwiderstandsrechner findest du hier: http://www.led-rechner.de Zitieren
Nic Geschrieben November 6, 2014 at 08:24 Geschrieben November 6, 2014 at 08:24 Zweite Frage: Ich würde gerne eine Gabellichtschranke am IO-4 anschließen Siehe auch : http://www.tinkerunity.org/forum/index.php/topic,978.msg6872.html#msg6872 Zitieren
ETS Geschrieben November 6, 2014 at 09:50 Autor Geschrieben November 6, 2014 at 09:50 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. Zitieren
ETS Geschrieben November 6, 2014 at 21:02 Autor Geschrieben November 6, 2014 at 21:02 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. Zitieren
ETS Geschrieben November 9, 2014 at 21:26 Autor Geschrieben November 9, 2014 at 21:26 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? Zitieren
JoergK Geschrieben November 10, 2014 at 12:31 Geschrieben November 10, 2014 at 12:31 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 Zitieren
ETS Geschrieben November 10, 2014 at 16:36 Autor Geschrieben November 10, 2014 at 16:36 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. Zitieren
JoergK Geschrieben November 10, 2014 at 17:49 Geschrieben November 10, 2014 at 17:49 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 Zitieren
ETS Geschrieben November 10, 2014 at 18:19 Autor Geschrieben November 10, 2014 at 18:19 Naja, ich habe mir jetzt einfach einen Analog-Out-Bricklet mitbestellt, dann sollte ich auf der sicheren Seite sein Mal gucken, ob dann alles so klappt, wie es ich mir erhoffe. Zitieren
Nic Geschrieben November 11, 2014 at 11:55 Geschrieben November 11, 2014 at 11:55 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. Zitieren
ETS Geschrieben November 15, 2014 at 08:26 Autor Geschrieben November 15, 2014 at 08:26 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? Zitieren
Nic Geschrieben November 17, 2014 at 08:48 Geschrieben November 17, 2014 at 08:48 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ü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 für das nächste Projekt sicher hilfreich... Zitieren
ETS Geschrieben November 17, 2014 at 17:56 Autor Geschrieben November 17, 2014 at 17:56 Hm, toll Mal gucken, dann schicke ich das ggf. zurück. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.