Forum: Mikrocontroller und Digitale Elektronik Barcode scanner der in ein ca 2mm großes loch passt.


von K. A. (flashbanger)


Lesenswert?

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

von janein (Gast)


Lesenswert?

Ja.
Nein. (ich zmd. nicht)
1Mhz wird wohl mehr als ausreichen.
Nein.
Ja.

von ozo (Gast)


Lesenswert?

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.

von K. A. (flashbanger)


Lesenswert?

>>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.

von crazy horse (Gast)


Lesenswert?

ich würde vorab auch mal in Richtung RFID nachdenken.

von K. A. (flashbanger)


Lesenswert?

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

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Hoppla, so stimmt die URL:
http://www.avagotech.com/products/parametric-search.jsp?navId=H0,C1,C6369,C5069
das U war reingerutscht

von Abu (Gast)


Lesenswert?

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

von ozo (Gast)


Lesenswert?

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...

von Thomas B. (yahp) Benutzerseite


Lesenswert?

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.

von Magnus Müller (Gast)


Lesenswert?

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

von Magnus Müller (Gast)


Lesenswert?

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

von Kai S. (Firma: ZeuSWarE GmbH) (zeusosc)


Lesenswert?

abo

von K. A. (flashbanger)


Angehängte Dateien:

Lesenswert?

SO wär es auch möglich.... hab mal bei einem CD-spieler abgeschaut.


MFG Flashbanger

von Falk B. (falk)


Lesenswert?

So arbeiten auch die richtigen Barcodescanner. Braucht aber solide 
Optik, aber die braucht man sowieso.

MFG
Falk

von Kai S. (Firma: ZeuSWarE GmbH) (zeusosc)


Lesenswert?

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

von Peter S. (sandmannnn)


Lesenswert?

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

von K. A. (flashbanger)


Lesenswert?

>
> 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

von Hauke S. (hauke)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Hauke S. (hauke)


Lesenswert?

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

von SintesiMoe (Gast)


Lesenswert?

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.

von déjà vu (Gast)


Lesenswert?

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...

von déjà vu (Gast)


Lesenswert?

nachtrag:
eigentlich wollte ich die seite hier posten:
http://www.felesmagus.com/pages/lasers-howto.html

gemessene 235mW. WOW!

von K. A. (flashbanger)


Lesenswert?

sieht mir zu gefärlich aus. ICh experimentier einfach mal drauf los (mit 
infrarot)

von Kai S. (Firma: ZeuSWarE GmbH) (zeusosc)


Lesenswert?

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

von Breti (Gast)


Lesenswert?

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

von K. A. (flashbanger)


Lesenswert?

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

von Hagen R. (hagen)


Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

Hi

Schon mal über Lichtleiter nachgedacht?

MfG Spess

von Magnus Müller (Gast)


Lesenswert?

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.

von Michael K. (michael_k)


Lesenswert?

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

von Andreas Haimberger (Gast)


Lesenswert?

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

von K. A. (flashbanger)


Lesenswert?

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

von Sepp -. (sepp_o)


Lesenswert?

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

von Zeusi (Gast)


Lesenswert?

@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

von K. A. (flashbanger)


Lesenswert?

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

von Hagen R. (hagen)


Lesenswert?

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

von Rahul D. (rahul)


Lesenswert?

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.

von Hagen R. (hagen)


Lesenswert?

korrekt, und mal eben 100 Sensoren zu bauen geht damit auch nicht so 
kostengünstig.

Gruß Hagen

von Hagen R. (hagen)


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

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.

von K. A. (flashbanger)


Angehängte Dateien:

Lesenswert?

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.

von Sascha (Gast)


Lesenswert?

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.

von Hagen R. (hagen)


Lesenswert?

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

von K. A. (flashbanger)


Lesenswert?

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

von Hagen R. (hagen)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

@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

von Rahul D. (rahul)


Lesenswert?

>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!

von Rahul D. (rahul)


Lesenswert?

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...

von K. A. (flashbanger)


Angehängte Dateien:

Lesenswert?

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

von Zeusi (Gast)


Lesenswert?

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

von K. A. (flashbanger)


Lesenswert?

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.

von Hagen R. (hagen)


Lesenswert?

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

von Zeusi (Gast)


Lesenswert?

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

von Hagen R. (hagen)


Lesenswert?

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

von Zeusi (Gast)


Lesenswert?

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,..

von Hagen R. (hagen)


Lesenswert?

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

von Hagen R. (hagen)


Lesenswert?

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

von Kai S. (Firma: ZeuSWarE GmbH) (zeusosc)


Lesenswert?

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

von Michael W. (wiebel42)


Lesenswert?

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

von winne (Gast)


Lesenswert?

....

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.

....

von Zeusi (Gast)


Lesenswert?

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

von Hagen R. (hagen)


Lesenswert?

>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

von Hagen R. (hagen)


Lesenswert?

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
Noch kein Account? Hier anmelden.