Hallo ICh will eine zugnummererkennung bauen, die barcodes auslesen kann. Die barcodes sind an die unterseite der Loks geklebt. In regelmäßigen abständen befinden sich löcher im gleis, die eigendlich für schrauben gedacht sind.(märklin C und M-gleis) ICh habe vor din diese löcher jeweils 2 glasfasern hineinzustecken. Eine glasfaser soll zu einer Infrarot-LED führen, die dauerhaft leuchtet, die andere zu einer Infrarot-Fotodiode. wenn nun ein zug über ein loch fährt sollte es den barcode auslesen können. Ist so etwas möglich???? HAt das schon mal jemand probiert??? Als CPU würde ich einen Atmega8 für 1,55€ nehmen. Wie schnell muss der getaktet werden wenn die geschwindigkeit bei < 1,4m/s liegt???Brauch ich einen externen takt??? oder reicht der interne??? Mfg Flashbanger
Ja. Nein. (ich zmd. nicht) 1Mhz wird wohl mehr als ausreichen. Nein. Ja.
Wie gross ist der der Abstand zwischen den beiden Glasfasern? Das wird der kritische Punkt sein. Ansonsten kann ich mir schon vorstellen, das man das hinkriegen kann. Vielleicht mal einen Testaufbau machen und unter Idealbedingungen versuchen: Licht aus Glasfaser raus, auf Spiegel und mit der zweiten Glasfaser wieder einfangen. Wenn das funktioniert wäre dann die Erkennung von dem Barcode dran und erst danach würde ich versuche, das in das Gleis einzubauen.
>>Wie gross ist der der Abstand zwischen den beiden Glasfasern?<<
Tja das kommt drauf an wie dick meine glasfasern sind.
Wenn ich eine kleine trennwand dazwischen kriege dann würde das problem
gelöst sein oder???
Mei 2. Problem wäre, das der Code ja mit unterschiedlicher
geschwindigekeit über den sensor fährt. Der ICE schnell die Bimmelbahn
langsam. ICh müsste eine Flanken-erkennung einbauen. Wie lange darf den
das kabel wischen CPU und Fotodiode sein?? Ich hatte vor an einen CPU
mehrere Scanner anzuschließen, um besonders viele scanner für besonders
wenig geld zu kriegen.
ich würde vorab auch mal in Richtung RFID nachdenken.
Ja doch da hab ich die vermutung, das wenn der radius eines senders eine lok auf dem benachbarten gleis finden könnte und es daher zu fehlern kommt. Außderdem könnte es mein Digitalsytem stören. (mein digitalsystem arbeitet mit 37khz bzw 74khz Mfg Flashbanger
Avagotech, früher Hewlett-Packard, stellt zwei ICs für Barcodescanner her: http://www.avagotech.com/Uproducts/parametric-search.jsp?navId=H0,C1,C6369,C5069 HBCS-1100 und HEDS-1500, Durchmesser allerdings 8 mm, max 8,33mm
Hoppla, so stimmt die URL: http://www.avagotech.com/products/parametric-search.jsp?navId=H0,C1,C6369,C5069 das U war reingerutscht
Ich hab sone Abtastung mit LWL schon mal versucht, bin aber gescheitert, was aber nicht heißt dass es nicht geht. Soweit ich noch weiß hab ich am Ende des LWLs einfach kein vernünftiges Signal bekommen. Der erste LWL beleuchtet den Barcode ziemlich schwach und von dem Streulicht wird nur wenig vom 2.LWL aufgenommen. Mit OP -Verstärker/Filter sollte da aber was herauszuholen sein. Alternativ könnt ich mir auch eine Gabellichtschranke an den Schienen vorstellen und eine gedruckte Kunststofffolie unter der Lok, wird aber Platzmäßig ziemlich eng. ABu
oder aber die Gabellichtschranke quasi "aufbiegen" und von unten (eventuell durch die Löcher) gegen den Barcode gucken lassen. Dann wären die LWL ebenfalls aus dem Spiel...
ozo wrote: > oder aber die Gabellichtschranke quasi "aufbiegen" und von unten > (eventuell durch die Löcher) gegen den Barcode gucken lassen. Dann wären > die LWL ebenfalls aus dem Spiel... Das gibt es als Reflexkoppler schon fertig ;-) Bei LWL sehe ich etwas das Problem, dass sehr wenig Licht freiwillig in die Faser geht. Da wird man wahrscheinlich mit Fokusierung arbeiten müssen.
Ich erinnere mich noch an eine spezielle Reflexlichtschranke, deren Sendediode und Empfangstransistor in einem bestimmten Winkel zueinander (ca. 30° ?) angeordnet waren, und deren Focus ca. 5mm vor der Stirnfläche war bzw. ist. Der Durchmesser des IR-Strahls im Focus war glaub ich auch deutlich unter 1mm... ...nur leider kann ich dat Dingens nirgends mehr finden... Gruß, Magnetus
Nachtrag: Hab bei Farnell so nen Ding gefunden (steht aber leider nix zum Durchmesser im Focus dabei) http://de.farnell.com/jsp/Optoelektronik/Lichtschranken/HONEYWELL/HOA1405-2/displayProduct.jsp?sku=1201181 Gruß, Magnetus
SO wär es auch möglich.... hab mal bei einem CD-spieler abgeschaut. MFG Flashbanger
So arbeiten auch die richtigen Barcodescanner. Braucht aber solide Optik, aber die braucht man sowieso. MFG Falk
Nicht nur Spiegel, sondern HALBdurchlässiger spiegel, wenn du ein paar alte CD/DVD laufwerke rumliegen hast, könntest du ja versuchen diese nutzen (also die Optik),... grüüüße
Jalmar Tschakert wrote: > Hallo > > ICh will eine zugnummererkennung bauen, die barcodes auslesen kann. > > Die barcodes sind an die unterseite der Loks geklebt. In regelmäßigen > abständen befinden sich löcher im gleis, die eigendlich für schrauben > gedacht sind.(märklin C und M-gleis) > Hallo Flashbanger, genau so was hatte ich auch mal vor für die Märklin K-Gleise. hab es aber aus Zeitgründen nicht weiter verfolgt. Ich hatte damals eine Reflexlichtschranke ins Auge gefasst und mir auch bei Völkner-Elektronik besorgt. Die kann man zwischen den Schwellen montieren. Leider gibt es Völkner-Elektronik nicht mehr, aber bei Conrad-Elektronik ist die Lichtschranke heute noch erhältlich. Art. Nr. 182230-62 hier ist das Datenblatt dazu. http://www2.produktinfo.conrad.com/datenblaetter/175000-199999/182230-da-01-de-Reflex-Lichtschranke_MRL_601.pdf Leider will die Conrad-Apoteke für das Ding 13,09 Teuros was eine Unverschämtheit ist. Du kannst sie auch für etwas weniger Geld beim Hersteller direkt ordern. Dort gibt es dann auch Staffelpreise. Hier der Link. http://www.karl-volkmann.de/ibv/ibvmrl/mrl.htm Bei Volkmann findest du auch eine Verstärker-Schaltung für die Lichtschranke. http://www.karl-volkmann.de/ibv/ibvmrl/Schaltung%20090-070.pdf Gib mal ML601 bei einer Suchmaschine ( GOOGLE ) ein, da findest du dann viele nützliche Seiten. Einen Strichcode wirst du damit wohl erkennen können, aber bestimmt keinen EAN-Barcode. Dafür dürfte die Auflösung zu gering sein. Gruß Peter
> > genau so was hatte ich auch mal vor für die Märklin K-Gleise. > hab es aber aus Zeitgründen nicht weiter verfolgt. > > Ich hatte damals eine Reflexlichtschranke ins Auge gefasst und mir auch > bei Völkner-Elektronik besorgt. Die kann man zwischen den Schwellen > montieren. Danke peter aber ich hab nur C bzw M gleise, und da komm ich nicht wirklich zwischen die schwellen ohne die bettung zu veltzzen. Da ich vllt irgenwann mal verkaufen muss kann ich die gleise nicht modifizieren. OK ein paar alte kaputte CD-ROM laufwerke und CD spieler hab ich. Da werd ich mal schaun. Wenn nicht gibt es doch solche spiegel auch zu kaufen. MfG Flashbanger
Ich habe so meine Zweifel ob das mit den CD Laufwerken eine so gute Idee ist. Deren Optiken sind für Laser im sichtbaren Spektrum ausgelegt. Ob das mit einer ungerichteten Lichquelle geht bezweifel ich. Weiterhin sind viele Kunststoffe und Glassorten für manche IR-Spektren undurchsichtig. Ich hoffe nur keiner von euch kommt auf die Idee die orginal Laserdiode der CD-Laufwerke zu verwenden. In einem solchen Falle ist es nur eine Frage der Zeit bis sich jemand die Augen kaputt macht weil er in den Strahl geschaut hat. cu Hauke
@ Hauke Sattler (hauke) >Ich habe so meine Zweifel ob das mit den CD Laufwerken eine so gute Idee Ich auch, aber . . . >ist. Deren Optiken sind für Laser im sichtbaren Spektrum ausgelegt. Irrtum, die originalen CD-Player arbeiten mit infrarotem Licht. DVD ist was anderes. Und ein Blue-Ray Laufwerk würde ich dafür nicht zerlegen ;-) >Ob das mit einer ungerichteten Lichquelle geht bezweifel ich. Richtig, ein Laser muss schon her, zumal die Optik dafür gebaut ist. >Ich hoffe nur keiner von euch kommt auf die Idee die orginal Laserdiode >der CD-Laufwerke zu verwenden. In einem solchen Falle ist es nur eine >Frage der Zeit bis sich jemand die Augen kaputt macht weil er in den >Strahl geschaut hat. Käse. 1. hat der Laser weniger als 0,5mW, und zweitens ist er nur genau auf der CD fokusiert. 10mm weit weg ist es nur noch ein Kegel wie aus einer Taschenlampe. MFG Falk
OK das CD heutzutage immernoch mit ausschließlich 780 nm ausgelesen werden, habe ich übersehen. Ich dachte bisher, dass durch die "neuen" (im Vergleich zur der orginalen Audio CD) Spezifikationen auf eine niedrigere Wellenlänge umgesattelt wurde (um auch CD-R und CD-RW zu verarbeiten). Was die Ungefährlichkeit angeht, muß ich sagen dass Falk nur teilweise Recht hat. Die allermeisten CD-Laufwerke haben zwar Laserklasse 1 (Die zugängliche Laserstrahlung ist ungefährlich) aber ich habe in meiner Grabbelkiste ein altes Laufwerk mit einer 3B Klassifikation gefunden. (Die zugängliche Laserstrahlung ist gefährlich für das Auge und in besonderen Fällen auch für die Haut. Diffuses Streulicht ist in der Regel ungefährlich). Man sollte sich also schon genau überlegen was man da macht. Aber sonst kann ich nur sagen Nachbau auf eigene Gefahr. cu Hauke
Aber Ideal wäre das schon, in der Einheit hat man alles was man braucht, Strahlungsquelle, Optik und Sensor. Einfscher gehts doch kaum, ok die Fokussierung ist eine Sache die Kopfzerbrechen bereiten könnte. Damit sich keiner die Augen verdüselt kann man doch links und rechts von der Einheit je einen Reedkontekt verbauen, beide parallel verschalten und in reihe vor die Laserdiode hängen, noch einen Magneten unter die Lok und basta.
apropos laserdiode aus cd-laufwerken: http://madgyver.roboterbastler.de/index.php?id=24,86,0,0,1,0 ok, es ist ein dvd-brenner, aber die leistung ist schon beachtlich...
nachtrag: eigentlich wollte ich die seite hier posten: http://www.felesmagus.com/pages/lasers-howto.html gemessene 235mW. WOW!
sieht mir zu gefärlich aus. ICh experimentier einfach mal drauf los (mit infrarot)
JA das sind beachtliche leistungen, ich war erstaunt darüber das die Laserklassenspezifikationen sich nicht auf die emittierte Leistung sondern aus dem brutkasten entweichende leistung beziehen. Wichtig beim experimentieren ist auch ein "ACHTUNG LASER" warnschild aufzustellen. HAt schon jemand erfahrung wie gut ein ~200mW Laser zum abisolieren von Kabeln ist?? grüüße
Also falls das mit der Optik nicht klappt, so hätte ich noch eine eher simple Idee, die mir aber recht vielversprechend erscheint: Wie wäre es, wenn du unter den Zügen hintereinander kleine Magnete befestigst, die einen Binärcode der Zugnummer darstellen? Die ersten 2 bits müssten dabei immer gesetzt sein, damit du die Geschwindigkeit analysieren und dich auf die nächsten Bits kalibrieren kannst. Das Auslesen würde dann über eine normales Reed Relais gehen. Je nachdem wie viele Züge du hast, kannst du dann die Länge des Binärcodes anpassen. Dieses Relais müsstest du natürlich irgendwie unterbringen. Vielleicht kannst du ja die Kabel durch das 2mm Loch führen und das Relais auf den Schienen befestigen. Gruß, Thomas
Vielen dank für deinen Tipp Breti. Leider gibt es bei der Magnet-methode ein problem. Wenn man mit einem magneten über eine weichen-zunge fährt, dann magnetisiert sich die zunge lnagsam. NAch ein paar monaten hat man dann das problem, das der weichenantrieb nicht mehr stark genug ist um die zunge zu bewegen. Ist natürlich schlecht wenn der PC denkt weiche 1 ist geschaltet und sie ist es aber noch nicht. Eine andere methode wäre es eine Ifralot LED an die lok zu hängen und eine fotodiode in das borloch in den gleisen. Die led müsste dann seriell ständig einen CODE "blinken". Hat aber den nachteil, das man sehr viel aufwand an der lok hat als nur einen aufkleber dranzukleben. MFG Flashbanger
Warum soll eine PLCC4 IR-LED mit integriertem IR-Transistor nicht gehen ? Das müsste bei 2-5mm Entfernung zum Barcode doch gehen. Gruß Hagen
Hi Schon mal über Lichtleiter nachgedacht? MfG Spess
Siehe Ursprungsposting... Jalmar Tschakert wrote: > (...) > ICh habe vor din diese löcher jeweils 2 glasfasern hineinzustecken. > > Eine glasfaser soll zu einer Infrarot-LED führen, die dauerhaft > leuchtet, die andere zu einer Infrarot-Fotodiode.
Hallo Jalmar, > Eine glasfaser soll zu einer Infrarot-LED führen, die dauerhaft > leuchtet, die andere zu einer Infrarot-Fotodiode. Die Glasfasern, die ich kenne, bestehen alle aus etlichen Einzelfasern. Wenn du das Bündel auftrennst, kannst du die eine Hälfte der Fasern zum Senden und die andere zum Empfangen nehmen. Gruß, Michael_K
Ich würde mir die Selbstentwicklung eines Barcodelesers nicht antun. Es gibt fertige Barcode-Lesestifte in Kugelschreibergröße mit RS232-Schnittstelle. Der decodierte Barcode wird als Folge von ASCII-Zeichen über die serielle Schnittstelle geschickt, diesen String kannst du dann wahlweise mit Mikrocontroller oder auch mit einem PC weiterverarbeiten. Google "Barcode-Lesestift" MfG, Andy
So ein barcode lesestift kostet aber ein paar gute EURO. wenn ich auf meiner anlage viele dieser dinger verbaue geht das dann schon ins geld und käufliche zugerkennungssyteme lohnen sich dann wieder. Glasfaser gibts doch auch starr. Die müsste ich dann durch die löcher auf die in der bettung liegende schaltug führen. SOllte eigendlich kein großes problem sein. brauch ja auch keine langen lichtleiter sondern nur 2 cm pro stück. MfG Flashbanger
Tag Ich hätte einen etwas anderen Ansatz für die Zugerkennung. Optische Lösungen wie Baarcodescanner haben 2 gewaltige Nachteile. Nachteil Nr. 1 ist dass man die Optik immer wieder von Staub und Öl reinigen muß. Außerdem lösen sich die Aufkleber mit der Zeit von den Locks. Ich vermute einmal dass es sich um eine "digitale" Modelleisenbahn handelt. Ich kenne mich zwar nur mit den analogen DC Versionen (Rocco, Kleinbahn und Lima) aus, aber es müsste doch bei der digitalen Version auch die Möglichkeit geben dass die Lok Daten zurücksendet? Wenn dass möglich ist, dann könnte man ja kleine, vom restlichen Schinennetz abgetrennte Abschnitte machen bei denen die Lock nach ihrer ID gefragt wird. Dadurch weis man die aktuelle Position der Lok und kann über die Geschwindigkeit der Loks die ungefähre Position zwischen den Punkten ermitteln. Wenn das nicht möglich ist, bzw. optisch gearbeitet werden soll, kann man auch an der Unterseite der Loks IR-LED's anbringen, die codiert (z.B. mit dem RC5 Fernbedienungscode) ihre ID aussenden. Diese ID kann dann an kleinen Lesestationen ausgewertet werden. Diese Lesepositionen kann man z.B. als InDuSi Magneten bei den Signalen tarnen. Eventuell auch als Heißläufer-Überwachungssensoren oder auch als Gleisanschlusstöpfe. Dies dürfte wesentlich einfacher sein als mit empfindlichen und gefährlichen Lasern zu arbeiten. Man muß sich nur einmal vorstellen was passiert wenn man nur mal kurz etwas an der Bahn richten will und dabei versehentlich in den Laserstrahl blickt. mfg Sepp
@Sepp: Bei den Lasern von DVD/CD ist die brennweite wie schon erwähnt max 10mm, daher besteht bei "ordentlichen" gebrauch also keine gefahr,... grüüüße
Laser??? wenn dan ifrarot. Zwar gibt es dei möglichkeit mit einer lok zu senden, aber nur in der aller neusten version des Digital-protokolls. ICh selber nutze aber noch das Alte Märklin Motorola II Format, was nur one-way unterstütz. Die idee einer infra-rot sendenden lok hatte ich auch schon. der nachteil ist man muss die lok bzw auch die wagen, wenn man eine art wagen-zählung machen will verändern. Dadurch würden manche loks an wert verlieren. Außerdem sind manche loks aus Metall, wodurch bohren sehr schwierig ist. Was haltet ihr von ultraschall-gebeepe?? Gibt es frequenzen die man wirklich nicht hört??? so ein mücken-schreck soll man ja nicht hören aber ich hör da trotzdem so ein surren. MfG Flashbanger
ich frage nochmal: Warum soll eine IR-Sendediode mit IR-Empfangstransistor, zb. als SMD nicht funktionieren ? Die billigen Barcodehandscanner die man über den Code drüberziehen musste hatten doch auch diese Technik. Von Osram gibts solche Teile in einem PLCC4 Gehäuse, also ca. 3x3 Millimeter groß. Und dann gibts doch diese Diebstahl-Dongles die mit so einem Metallstreifen arbeiten. Gruß Hagen
Vor zig Jahren gab es in Puttgarden am Fähranleger nach Rodby/Dänemark eine Modellbahnanlage, bei der auch Zugnummern angezeigt wurden. Es handelte sich wie so oft um eine H0-Anlage. Auf Nachfrage erzählte der Betreiber dann auch, wie das System funktionierte: Per Reflexlichtschranke! Ich habe das System mit einem Apple ][ in der Art nachgebaut, dass ich auf meine N-Loks von unten einen zweitigen Strichcode geklebt habe und im Gleis jeweils zwei "handelsübliche" Reflexlichtschranken eingenbaut habe. Die eine war zur Takterkennung, die andere zur Adresserkennung. Ich war damals 13 oder so... Was spricht eigentlich dagegen, die Lichtschranken zwischen die Schwellen zu packen? Beim K-Gleis sollte das problemlos gehen. Das M-Gleis würde wohl ein paar Bohrungen benötigen. Hat überhaupt schon jemand mal was mit "popeligen" Reflex-Lichtschranken (wenn ich sie finden sollte, würde ich auch die Bezeichnung posten) ausprobiert? Laser ausm CDROM-Laufwerk ausbauen - son Quatsch. Da ist die Ansteuerung aufwändiger als ein Loch in ein M-Gleis zu bohren.
korrekt, und mal eben 100 Sensoren zu bauen geht damit auch nicht so kostengünstig. Gruß Hagen
zb. IS471, IS489, S4506, S4810 bei http://www.csd-electronics.de/de/index.htm sind Photo-IC für Infrarot mit Linse, Verstärkung und Schmitttrigger. Oder http://catalog.osram-os.com/catalogue/catalogue.do?favOid=0000000200032e0a00020023&act=showBookmark alles in einem IC. http://catalog.osram-os.com/catalogue/catalogue.do;jsessionid=2517A6D75159515153A0C8AAEF770426?act=downloadFile&favOid=0200000200009bb4000300b6 Auf den Barcode klebst du noch am Anfang/Ende einen dieser Neodymmagnete und kannst so per Reedkontakt den Begin eines Barcodes ermitteln. So sparrst du Strom für die Reflexlichtschranke. Der Reedkontakt holt quasi die MCU aus dem Powerdown. Gruß Hagen
Ich würde auch eine Reflexlichtschranke nutzen. In (alten) Walkmans werden die zur Drehrichtungserkennung / Geschw.erk. genutzt. Den Barcode sollte man dabei aber auf "Spiegelfolie" kleben/drucken. Bei einer sauberen Justage sollte das laut Bauchgefühl gehen. Das kann man aber auch sehr simpel "mal eben so" ausprobieren: Lichtschranke, Gleis, Wagen, Oszi (oder DMM) - ab gehts. Klaus.
So hab mal ein schaltplan gemacht, wo wie ich mir das vorstelle. Erst mal eine offline-version also ohne gleis als normaler Strichcode-leser. MfG Flashbanger PS://ICh hab glaub ich vergessen zu schaun ob ich beiden led's die richtige polung hab.
Texas Advanced Optoelectronic Solutions (http://www.taosinc.com/) hat kleine Photodiodenarrays (z.B. mit 64 oder 128 Photodioden) im DIL-8-Gehaeuse. Z.B. der TSL1401R-LF hat 128 Pixel und kostet um die 8$/ Stueck. Angesteuert wird er digital mit einer Clock und einem Start-Puls. Er hat einen Analogausgang und gibt nach dem Startpuls bei jeder steigenden Flanke der Clock einen Pixel aus. Die Belichtungszeit kann durch den Takt gesteuert werden.
Wozu ? Das Teil verkompliziert doch alles. Wenn eine normale Kombination aus IR-Sendediode und IR-Phototransistor nicht die ausreichende "Leistung" bingt warum sollte dann ein IR-Dioden-Sensor-Array mehr bringen ? Der Zug soll doch im Fahren identifiziert werden, also gäbe es nur das Problem den Barcode so zu kodieren das der AVR im richtigen Takt, zur Geschwindigkeit des Zuges betrachtet, auswertet. Ich meine auch das man nicht unbedingt mit 2 Barcodes arbeiten müsste, also 1. mit Code der 2. mit Takt als Referenz. Das ist zwar eine gute Idee aber die alten Handscanner haben das ja auch nur mit einer Diode/Transistor gemacht. @Jalmar: du möchtest mit einem AVR gleich mehrere solcher Barcode-Stationen auswerten ? Ich hätte mich für einen ATTiny entschieden der nur eine Station darstellt. Quasi ganz kompakt Gruß Hagen
JA eigendlich wollte ich einen Atmega8 als mehrfach dekoder nutzen, vor allem weil er mit 1,50€ sehr günstig ist und viele sachen wie RS232 in I2C schon onboard hat. Mal ne kurze frage. Wenn ich durch mein mein Loch jeweils 5 =0,5mm glasfasern stecke , diese dann mit einem Crip am oberen ende mit schrupfschlauch zusammen mache. Kann ich dann die sender LED bzw die fotodiode mit schrupfschlauch am anderen ende der fasern befestigen und gibt es schrupfschlauch der von innen mit Alu-folie beklebt ist, so dass er das licht in den leiter leitet?? Naja ich dachte das ich eine abtastfrequent von 512khz nehmen würde, und den COde durch ein langes Startbit sowie ein Stopbit "einkessel" MfG Flashbanger
Bei dem Lichtleiter kann ich nicht helfen, mein Name ist Hase ;) Aber wie kommst du auf 512Khz Abtastfrequenz ? Ich würde erstmal ganz simpel vorgehen. IR Sendediode immer an, Phototransistor per INT abfragen, zb. ICP des Timers. Der notwendige Prescaler dafür richtet sich dann nach minimaler Barcodestreifenbreite, Prozessortakt und maximale Geschwindigkeit des Zuges. Einfach max. Geschwindigkeit im Maßstab zur minimalen Breite der Barcodestreifen umrechnen und dann weist du wieviele µs oder ms ein solcher Streifen benötigt um über die LEDs zu fahren. Den Prescaler würde ich dann so 4 mal höher einstellen. Oder einfach mal par Prescaler umrechnen nach der minimale und maximale Geschwindigkeit, das ergäbe dann den notwendigen Aufbau des Barcodes, also dessen Länge. Das mit dem Startbit ist gut. Also kurz weiß, dann lang schwarz und dann nochmal halbe länge weiß. Dann beginnt der Barcode. Das dürfte ausreichend sein um auf die Geschwindigkeit des Zuges zu synchronisieren. Allerdings fand ich die Idee einen dieser superkleinen aber auch starken Neodymmagneten als Auslöser zu benutzen garnichtmal so schlecht. Höchstwahrscheinlich gehts aber auch ohne. Aber als erstes würde ich den mechanischen Aufbau austesten und mit simplem Oszi das Schaltverhalten überprüfen. Gruß Hagen
@Jalmar: Du bekommst industrielle Kunststoff- und auch Glasfaser Lichtleiter mit kombiniertem Sende- und Empfangspaket in nahezu jedem Durchmesser; u.a. auch in 2mm. Glasfaser ist teuer und bringt bei Deiner Applikation keine Vorteile - Kunststoff ist im Einkauf billig, wird jedoch teilweise sehr teuer verkauft. Wenn Du davon welche brauchst, kann ich Dir sicher helfen. Die passende Adaption gibt es bei Farnell und Conrad zu kaufen. Lichtleiter haben i.d.R. keine fokussierende Optik, so dass die Reichweite als Taster zwar locker ausreichen würde, aber der Barcode schon sehr dicht vorbei laufen müsste um einzelne Streifen zu differenzieren. Ich würde daher einen eigenen, gröberen Code erzeugen und abtasten. @Hagen: Ich hänge schon seit Tagen an der Sensortaste, die Du vor einiger Zeit in der Codesammlung propagiert hast und komme da einfach nicht mehr weiter. Ich bin jetzt echt aufgeschmissen und brauche dringend Hilfe - muss auch nicht umsonst sein :-\ Würde mich freuen, wenn Du mir eine kurze Mail an beyourself_@web.de schicken würdest :) Stefan
>Ich meine auch das man nicht unbedingt mit 2 Barcodes arbeiten müsste, >also 1. mit Code der 2. mit Takt als Referenz. Das ist zwar eine gute >Idee aber die alten Handscanner haben das ja auch nur mit einer >Diode/Transistor gemacht. Ich war damals wie schon erwähnt erst 13...und habe es in Applesoft Basic programmiert. Inzwischen würde ich es mit unterschiedlich breiten Balken und Pausen realisieren. Als "Protokoll" würde sich sowas wie ein Ethernet-Rahmen anbieten: Vorneweg eine Präambel, die dem Controller hilft, sich auf den Code bzw. die Geschwindigkeit des Zuges zu synchronisieren (vielleicht auch, um den Controller zu wecken). Dann 8 oder mehr Bits Dateninformation (wenn man die Pausenlängen auch noch variiert, verdoppelt sich die Informationsmenge etwa). Vielleicht dahinter noch eine Checksumme. Wie Klaus schon schrieb: ausprobieren!
Was mir noch eingefallen ist: Wenn man die Periode zwischen zwei gleichen Flanken (z.B. steigende) variiert, kann man die Auswertung sehr einfach per InputCapture machen. Problematisch wird es nur, wenn man die Auswertung an einer Beschleunigungsstrecke machen will...
SO würde das abtasten der zahl 1 (4bit) im U/t-diagramm aussehen. Die beiden SB sollen den Recoder an und ausschalten. ICh hatte vor beim erfassen des Start-Bits die Fotodiode mit 500khz abzufragen. Die werte sollten dann im ramm gespeichert werden bis das Stopbit "durchgeht". Dann kann die auswertung beginnen. DA der Controller die länge zwischen SB1 und SB2 kennt kann er die geschwindigkeit des Zuges errechnen. Dann kann er die Rohdaten mehrmals prüfen und schließlich an den PC übermitteln. Sollte dich bei den messergebnissen mal ein kleiner fehler unterschleichen kann der Controller einfacher entscheiden ob es sich um ein schmutzfleck oder um einen Strich handelt, da er ja für jeden stich mehrere werte hat. (block-erkennung) Fährt ein zug mit 1,5m/s vorbei. Dann braucht der 1,5cm lange CODE 1/100 sekunde. wenn wir ein 10 Bit +2x Doppel-SB also 14 bit haben dann dauert ein strich nur noch 1/1400 sekunde. Wenn ich mit 500khz abfrage dann kreig ich von jedem strich 357 Abtastungen.(1/1400 * 1/500.000). Wenn jetzt von 357 abtastungen 1%falsch sind also 3 stück, dann fällt das nicht ins gewicht. MfG Flashbanger
Ich würde mich auch auf eine Sync Preämbel festlegen die die syncronisation des µC bzgl. der Geschwindigkeit des Zuges erlaubt, eine Schwierigkeit währe aber noch, falls der Zug ,bzw. die Lock, keine konstante Geschwindigkeit fährt, da würd ich keine Redundanzprüfung sondern eher ein korrekturterm mit einbringen um evtl. abweichungen zu korrigieren. Hat jemand eine idee bzgl. RFID? Ich habe mich mit diesem Thema noch nicht beschäftigt... Grüüüße
So schnell kann der zug aber seine geschwindigkeit nicht ändern und selbst wenn dann erfasst der scanner die durchschnittsgeschwindigkeit. Außerdem weis der PC nacher ob er einen zug geschleunigt hat oder nicht. MfG Flashbanger ICh muss mir jetzt erstmal ein ozilloscop mit TV-ausgang bauen.
Ich würde die schwarzen Balken immer in gleicher Breite machen und die weisen Lücken je nach 0 oder 1 unterschiedlich breit machen. Eine 0 zb. so breit wie die schwarzen Balken und eine 1 dann 1.5 mal so breit. Die Synchronisation erfolgt dann auf die schwarzen Balken, also ausmessen des Low-Pegels am Empfänger. Oder für 0 Bit 0.75mal so breit wie die schwarzen Balken und 1 Bit 1.25mal so breit wir schwarz. Das ergibt dann einen gleichmäßig langen Barcode wenn bei den 8 Bits die Hälfte der Bits 0 und 1 sind. Pulsen würde ich erstmal garnicht, also IR-Sende-LED mit 20mA Dauerstrom betreiben. Wenn das dann funktioniert dann gepulst arbeiten aber im Grunde nur um 1.) durch höreren Pulsstrom eine größere Reichweite zu erzielen 2.) durch den Dutycycle Strom einzusparen, also 10% On-Time 90% Off-Time 3.) durch die synchrone Auswertung des Empfänges Störungen zu unterdrücken Aber erstmal die ganz einfache Variante um zu sehen ob es mechanisch, optisch überhaupt geht. Gruß Hagen
Selbst wenn der pc nachher weiß ob der zug beschleunigt hat oder nicht, muss dieser dann die RAW daten bekommen, das ginge halt nur mit, wie oben erwähnt, vielfaches an abtastfrequenz, dann könnte der pc die daten berechnen,... Ich will nicht sagen leichter, aber mit einer korrektur postämbel im barcode wärs definitiv "korrekt",... (meiner meinung nach) grüüüüße
Arbeitet man ohne gepulstes Absampeln, wie vorgeschlagen 250-500Khz, sondern per ICP wie ich es für den Anfang vorschlage, dann beträgt die maximale Abtastfrequenz XTAL / Prescaler. Also auch hier gibts quasi eine obere Schranke der Auflösung, eine Abtastfrequenz, die eben maximal 8 Mhz bei internen Oszi sein kann. Gruß Hagen
Hi Hagen, ich glaub ich hab jetzt verstanden was Du meinst, du Syncronisierst auf den Weißen Balken per Timestamp, durch den ICP, dadurch ist die der Schwarze balken zwischen den weißen klar, also ist der schwarze länger als der Weiße balken davor und danach, bzw. kürzer als der davor und der danach, der rest wird als lesefehler zugeordnet,.. aber wie willst Du gewährleisten das der ICP ein Logical Change wahrnimmt, (habe noch net mit IR gearbeitet), also rising Edge bzw. Falling Edge?? Sei gegrüüßt,..
Also, ICP Interrupt wird benötigt. Dort liest man das ICP register aus und setzt die Flanke auf die man triggern möchte um. Das alles ist zeitkritisch aber mit par Assembleranweisungen erledigt. Zusätzlich kannst du den Noisecanceler noch aktivieren. Du hast dann im Speicher zb. ein Array mit 8x 16 oder 8 Bit Integern die du reihum befüllst. Abwechselnd immer für schwarz der Timerwert, weiß der Timerwert. Du könnest aber auch den letzen ICP Wert global speichern und davon den neuen ICP Wert abziehen. Das ergäbe dann die Anzahl der Timertakte pro Balken (schwarz oder weis). Der aktuelle ICP wert landet dann in diesem globalen Register als neuer Wert. Den Barcode würde ich sogar nochmal anderst aufbauen. Eine 1 besteht aus weiß mit zb. 5 Millimeter Breite + 10 Millimeter schwarz. 0 ist 10 Millimeter weiß und 5 Millimeter schwarz. Der Barcode beginnt mit zb. 20 Millimeter schwarz am Anfang. Ein Bit ist also immer 15 Millimeter auf dem Barcode unabhängig ob 1 oder 0 Bit. Das hätte den Vorteil das der Barcode mit jedem Code immer gleich lang wäre. Eine Unterscheidung ob nun 0 oder 1 Bit ist ganz einfach. Es entscheidet sich an der Frage "welcher Impuls ist länger, der 1. oder 2." Zusätzlich würde ich zur Fehlerkorrektur den Barcode in der Länge verdoppeln. Also 16 Bits für einen 8 Bit Code. Der erste Teil wäre das Byte ganz normal, der 2. Teil das gleiche Byte aber invertiert. Die Breitenangaben von oben sind natürlich nur Beispiele. Um so kürzer die Balken um so kleienr der Barcode aber auch um so schneller muß man abtasten bei einer vorgegebene Maximalgeschwindigkeit der Züge. Du musst also ausgehend vom Takt des AVRs ausrechnen wieviele Takte du in der ICP ISR minimal benötigst. Das umgerechnet mit der maximalen Geschwindigkeit der Züge ergäbe die minimale Breite der Balken des Barcodes. Damit wäre der AVR aber dann zu 100% ausgelastet. Nehmen wir mal einen AVR mit 16Mhz an. Die ICP ISR benötigt mal grob gerechnet 128 Takte. Also 125000 Balken pro Sekunde könnte der AVR erfassen. Ein Zug hat Maximalspeed von 64km/h = 17777mm/sec. 17777 / 125000 = 0.142mm wäre die minimalste Breite eines Balkens im Barcode wenn ich jetzt nicht falsch gerechnet habe. Angenommen der Balken ist 1 mm minimal breit, dann wäre der AVR zu 15% ausgelastet. Dummerweise hat der AVR aber nur einen ICP :( Du musstest bei der Auswertung mehrer Barcodes also per Timer und Software arbeiten. Deshalb der Vorschlag einen der ATTiny zu benutzen, pro Barcodeleser. So kannst du diese per TWI oder SPI untereinander vernetzen. Das ist natürlich nur ein Vorschlag, ich habe sowas selber noch nicht aufgebaut. Deshalb auch meine Meinung das Teil erstmal ganz simpel zu machen. Also ohne gepulste IR-Sendediode uä. Ich würde erstmal schauen ob die Mechanik und Optik realisierbar ist und auch von der Geschwindigkeit her funktioniert. Gruß Hagen
Achso, das ganze käme ohne Synchronisation aus. Solange der Zug mit annähernd konstanter Geschwindigkeit drüber fährt ist das ohne Synchronisation auswertbar. Das einzigste worauf wir synchonisieren ist der längere Anfangimpuls des Barcodes. Den erkennen wir weil die nachfolgenden Impulse ja alle kürzer sind. Wenn wir den 1. normalen Balken auf diese Weise ermittelt haben müssen wir nur noch in Zweierschritten die gemessenen Werte untereinander vergleichen. Ist der 1. länger als der 2. ist das Bit eine 0 ansonsten eine 1. Selbst wenn der Zug abbremst oder beschleunigt mittem im Barcode dürfte die Fehlerrate klein sein, da ja nur das relative Verhältnis zweier aueinanderfolgenden weiß/schwarz Balken entscheidend ist. Ich denke mal das du sogar auf das lange Array der Meßwerte verzichten kannst und das alles live in der Interruptroutine ausrechnen kannst. Der Timer muß bis 2^x druchlaufen, zb. bis 0xFFFF. So ist es auch fast kein Problem wenn das ICP register überläuft. Gruß Hagen
Sry hagen, ich formuliere meine Frage anders, wie gewährleistest Du Hardwareseitig das der ICP einen Logical Change wahrnimmt ,(je nach sensor ist klar aber generell, notfalls könnte man noch auf den analogen comperator ausweichen),.. grüüße
Wie wäre es wenn du an die Züge selbst smd LEDs befestigst, also quasi erstmal zwei mit definiertem Abstand zum syncen und dann eben in codierten Abständen, dann bräuchtest du nur noch einen Receiver an deine Glasfaser (oder einfach eden Phototransistor direkt an die Bohrung). Das sollte auch nicht zu dick auftragen wenn du die einfach unten ranklebst (ohne groß zu bohren). Da sich der Code auch nicht ändert könntest du auch mit einem Vorwiderstand auskommen. Da müssten sogar 3 LEDs pro zug reichen, einfach den Abstand, sozusagen analog verändern, Zug 1 5mm, Zug 2 10mm .... Hängt natürlich von der Anzahl der Züge ab wie genau das von Statten gehen muss. Mit einem Schmittrigger brauchst du nichtmal eine Optik, die allerdings im schlimmsten Fall auch eine Pappe mit Löchern sein könnte. Nur so als Idee. -Wiebel
.... Barcode würde ich symetrisch anordnen dann kann die lok auch bei geänerter fahrtrichtung erkannt werden z.B. nach einer Kehre die Nummer mit den aktiv sendenden Locks könnte man viel weiter spinnen z.B. IR-Baken entlang der Strecke aufstellen wie bei Buss und Bahn in Berlin an Knotenpunkten üblich. ....
Das mit der Symmetrie wurde schon erwähnt, so dass der zweite Teil gegenüber dem ersten invers ist: 1001|0110 Obwohl ich diese Idee von aktiven Locks auch schon hatte, glaube ich das dies den (wiederverkaufs-)Wert der Locks und wagen eher beeinträchtigt,... Daher ist der Vorschlag von einen Barcodescanner doch eher was,.. >>Kennt jemand die Pinnbelegung von etwaiige CD/DVD Laserelektronik an die man >>sich orientieren kann?? grüüüße
>Sry hagen, ich formuliere meine Frage anders, >wie gewährleistest Du Hardwareseitig das der ICP einen Logical Change >wahrnimmt ,(je nach sensor ist klar aber generell, notfalls könnte man >noch auf den analogen comperator ausweichen),.. Jedesmal wenn der ICP Interrupt auslösst schaltest du diesen in seinem Trigger um. Also am Anfang wartest du auf weißen Balken, es muß also von Schwarz->Weiß getriggert werden. In diesem 1. Falle heist das "kein reflektiertes Licht->reflektiertes Licht". Ja nach Beschaltung des Fototransistors also auf HIGH oder LOW Pegel triggern. Dann wird der 1. ICP Interrupt ausgelösst also wird der Triggerpunkt negiert. Dann kommt der 1. schwarze Balken und der ICP Iterrupt lösst erneut aus. Das ICP register ist die Länge des weißen Balken in Timerticks und wird global gespeichert. Der Trigger für den ICP wird nun wieder negiert. Im nächsten ICP Interrupt steht im ICP Register nun die Länge in Timerticks von schwarzen Balken. Dieser Wert wird verglichen mit dem zuletzt global gespeicherten ICP Register. Ist der größer oder kleiner, je nach Definition, ist es ein 0 oder 1 Bit. Nun den Triggerpunkt wieder negiert und darauf gewartet das der nächste schwarze Balken beginnt usw. usw. Übrigens habe ich mich mal schlau gemacht, die Annahme das der Zug mit 64km/h fährt, die von oben, ist Wahnsinn. Mit 3km/h wäre man im Modellbau schon sehr schnell. Somit ist die Rechenleistung des AVRs bei weitem ausreichend. Den Barcode würde ich 8 bit symmetrisch machen, also 16 bit wie oben schon gesagt. So sparrst du dir eventuell all die Fehlerüberprüfungen. Dh. in deiner ICP-ISR schiebst du einfach nach 32 ISR Aufrufen exakt 16 Bits in einen uint16 rein. Nur wenn also 32 ISR Aufrufe erfolgten und das Low Byte die Bitgedrehte Form des High Bytes ist hast du einen korrekten Barcode erkannt. Lichtreflexionen aufgrund der Achsen des Zuges oder anderer Störungen könntest du damit eliminieren. Und es hat eben den Vorteil das die Fahrrichtung des Zuges unwichtig ist. Gruß Hagen
Für den ATMega88 zb. im TCCR1B Register das ICES1 Bit. Damit stellst du ein ob der ICP auf LOW oder HIGH am ICP-Pin triggern soll. Ja nach Beschaltung deines Fototransistors, meisten LOW Aktiv, dh. wenn Licht reflektiert wird liegt am ICP Pin LOW an. Dazu den Fototransistor per Pullup gegen VCC schalten und am Kollektor zum ICP Pin verbinden. Das wäre der Aufbau den ich als erstes mal testen würde. Im TCCR1B Register noch das Bit ICNC1 setzen, Input Capture Noise Canceler. Dann musst du nur noch berechnen welcher Prescaler für den 16 Bit Timer1 die beste Wahl im Verhältnis MCU Taktfrequenz und Min/Max Zug/Barcodegeschwindigkeit gilt. Das sollte dann so eingestellt werden das mit der langsamsten und schnellsten Zugdurchfahrt der ICP Wert nicht zu klein ist oder überlaufen kann. Gruß Hagen
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.