Hallo, ich habe nur beschränkte Elektronikkenntnisse, da ich eigentlich eher aus der Software komme, habe allerdings schonmal als kleines Kind paar Schaltungen aus Büchern nachgelötet und in der Ausbildung mit TTL-Technik gearbeitet. Jetzt wollte ich privat für meine Modeleisenbahnanlage per Computer (RS232 Schnittstelle oder USB) 128 LEDs ein- und ausschalten können. Mein Plan wäre folgender: (* 1) USB-Schnittstelle -> 2) USB/RS232 TTL Converter ) -> 3) RS232 8-Bit -> 4) Demultiplexer 4-zu-128 -> 5) Flipflops -> 6) 128 Stück LEDs *optional Für 2) würde ich folgendes einsetzen: http://www.virtualvillage.de/usb-rs232-konverter-ttl-pegel-f-virtuelles-com-port-003602-010.html?utm_source=googlebase&utm_medium=shcomp , falls ich auch noch TTL-Schaltungen hinterbauen will und die benötigte 5V brauch. Wenn ich vom Rechner z.B. das Bitmuster 00001000 rausschicke, soll z.B. LED Nr. 8 angehen (und auch anbleiben, deswegen dachte ich an einen Flipflop). Wenn ich nochmal 00001000 rausschicke soll die LED wieder ausgehen. Ist meine Schaltungsidee so richtig oder benötige ich noch weitere Bauteile? Kann mir jemand sagen ob es so ein Demultiplexer 4-zu-128 gibt? Oder muss ich mich über mehrere Demuxes hintereinandergeschaltet bedienen? Außerdem wäre es schön zu wissen welche genauen Bezeichnungen die Bauteile haben, damit ich mir die bei Reichelt/Conrad/... zusammenkaufen kann.
:
Verschoben durch Moderator
Hallo! Mal mir bitte mal die Logiktabelle eines > Demultiplexer 4-zu-128 auf. Ich bin gerade etwas blind. wie soll die Eingangsbelegung z.B. für LED 78 aussehen?
Der Knackpunkt heißt 4). Da scheinst Du Dir etwas Falsches vorzustellen. Eine RS-Schnittstelle liefert die Daten seriell an. Das sind also 8 Bits, zeitlich nacheinander, auf einer einzigen Leitung und dazu noch eingebettet in Start-und Stopbits. Das Gegenstück, das daraus wieder irgendwelche parallel verarbeitbare Daten macht, heißt nicht 4-zu-irgendwas-Demultiplexer, sondern (meist) UART.
Hi, wahrscheinlich ein totaler overkill, aber vielleicht ist es was für dich: http://hobbyelektronik.org/w/index.php/USBLotIO Damit sparst du dir die USB-UART-Bridge. Einziges Problem: Du brauchst geeignete Hardware, um den AVR zu programmieren, da der Reset-Pin deaktiviert ist. Lässt du allerdings die Lesemöglichkeit weg (habe noch nicht getestet, ob es mit der gleichen Firmware geht), reicht etwas STK200-kompatibles zum "Brennen". Togglen der Bits kannst du direkt über das Konsolenprogramm machen. Ansonsten: Mux ist unfug, da du nur eine LED gleichzeitig leuchten lassen kannst. Besser ist es, Schieberegister zu verwenden. Damit ist es zwar etwas komplizierter, die Ausgänge zu togglen (entweder alle Register nochmal durchtakten, Werte einlesen und zu verarbeiten oder gleich in der Software die Zustände merken). HTH
@Route_66: Oh, da hast du leider Recht, habe ganze Zeit den Demuxer falsch berechnet. So müsste er aber richtig aussehen: Eingänge: s0, s1, s2, s3 Daten: x0, x1, x2, x3 Ausgänge: y0, y1, y2, ... , y61, y62, y63
1 | s3 s2 s1 s0 ; x3 x2 x1 x0 ; y63 y62 y61 y60 ... y7 y6 y5 y4 y3 y2 y1 y0 ; LED Nr. |
2 | --------------------------------------------------------------------------------- |
3 | 0 0 0 0 ; 0 0 0 1 ; 0 0 0 0 ... 0 0 0 0 0 0 0 1 ; 1 |
4 | 0 0 0 0 ; 0 0 1 0 ; 0 0 0 0 ... 0 0 0 0 0 0 1 0 ; 2 |
5 | 0 0 0 0 ; 0 1 0 0 ; 0 0 0 0 ... 0 0 0 0 0 1 0 0 ; 3 |
6 | ... |
7 | 0 0 0 0 ; 1 0 0 1 ; 0 0 0 0 ... 0 0 0 0 1 0 0 0 ; 1 und 4 |
8 | ... |
9 | 0 0 0 1 ; 0 0 0 1 ; 0 0 0 0 ... 0 0 0 1 0 0 0 0 ; 5 |
10 | 0 0 0 1 ; 0 0 1 0 ; 0 0 0 0 ... 0 0 1 0 0 0 0 0 ; 6 |
11 | ... |
12 | 0 0 0 1 ; 0 1 1 0 ; 0 0 0 0 ... 0 1 0 0 0 0 0 0 ; 6 und 7 |
13 | ... |
14 | 0 0 0 1 ; 1 0 0 0 ; 0 0 0 0 ... 1 0 0 0 0 0 0 0 ; 8 |
15 | ... |
16 | 1 1 1 1 ; 0 0 0 1 ; 0 0 0 1 ... 0 0 0 0 0 0 0 1 ; 61 |
17 | 1 1 1 1 ; 0 0 1 0 ; 0 0 1 0 ... 0 0 0 0 0 0 1 0 ; 62 |
18 | 1 1 1 1 ; 0 1 0 0 ; 0 1 0 0 ... 0 0 0 0 0 1 0 0 ; 63 |
19 | 1 1 1 1 ; 1 0 0 0 ; 1 0 0 0 ... 0 0 0 0 1 0 0 0 ; 64 |
Komme mit 4 Eingängen und 4 Dateneingängen nur auf 64 Ausgänge. Das doch richtig oder? Halt 16 (s) x 4(x) ;-) Natürlich könnte ich auf mehr kommen falls ich mit einem Dateneingang wie:
1 | x3 x2 x1 x0 ; LED Nr. |
2 | --------------------- |
3 | 0 0 0 0 ; 1 |
4 | 0 0 0 1 ; 2 |
5 | 0 0 1 0 ; 3 |
6 | 0 0 1 1 ; 4 |
7 | 0 1 0 0 ; 5 |
8 | 0 1 0 1 ; 6 |
9 | 0 1 1 0 ; 7 |
10 | 0 1 1 1 ; 8 |
die LEDs adressieren könnte, wobei das erste glaube ich einfacher ist. 64 LEDs werden mir aber auch reichen. @mizch: Danke, habe noch nie mit UARTs gearbeitet bzw. gesehen, werde mich da mal ein wenig reinlesen was das genau ist. Evtl. ist ja das die Lösung die ich suche :-) @hownottobeseen: Ja, an so eine AVR-Lösung denke ich auch dauernd, wollte aber die Kosten und den Aufwand dafür sparen :-) Wegen der Sache dass nur eine LED leuchten kann, damit wäre ich zufrieden. Aber so wie ich das in meiner Demux-Schalttafel aufgemalt habe geht das nicht? z.B. LED 6 und 7 leuchten bei:
1 | s3 s2 s1 s0 ; x3 x2 x1 x0 ; y63 y62 y61 y60 ... y7 y6 y5 y4 y3 y2 y1 y0 ; LED Nr. |
2 | --------------------------------------------------------------------------------- |
3 | 0 0 0 1 ; 0 1 1 0 ; 0 0 0 0 ... 0 1 0 0 0 0 0 0 ; 6 und 7 |
Schon mal vielen Dank euch für die Denkanregungen!
Peter Uhlmann schrieb: > Wenn ich vom Rechner z.B. das Bitmuster 00001000 rausschicke, soll z.B. > LED Nr. 8 angehen (und auch anbleiben, deswegen dachte ich an einen > Flipflop). Wenn ich nochmal 00001000 rausschicke soll die LED wieder > ausgehen. Hallo, das wird so nicht funktionieren - du bzw. der Rechner weiss nicht, ob die LED aktuell an ist oder aus. Synchronisieren durch gleichzeitigen Neustart ist nur Murks. Du brauchst einen Befehl zum Einschalten und einen zum Ausschalten, das ist aber bei 128 LEDs kein Problem. Gruss Reinhard
Im goßen und ganzen ist das kein Problem. Du schickst Befehle via RS232/USB zu einem µC und dieser steuert deine LEDs! Habe sowas ähnliches mal mit einem PIC16F877 gemacht.
Achso, würde das irgendwie gehen wenn ich das Bitmuster 0000 (x0...x3) an alle Schalteingänge sende um die LEDs alle auszuschalten? Dachte an so ein "State triggered, transparent Flip-Flop (Latch)", wie er unter der Java-Simulation bei http://www-ihs.theoinf.tu-ilmenau.de/~sane/projekte/flipflop/embed_flipflop.html gezeigt wird. Da habe ich ja eine Set/Reset Leitung, allerdings muss für den Reset Spannung anliegen, was ja bei einem Bit 0 schlecht geht und Bit 1 soll ja die LED einschalten.
Hallo, schau dir doch mal http://www.light-at-night.com/ an. Wir haben im Modellbahnklub solche Dinger im Einsatz. Ein einfaches Prinzip und zeigt einen möglichen Ansatz um soetwas selber zu bauen. mfg Rene
Ich würde hier einfach ein Byte übertragen und die Bits aufteilen: Bit 7 --> 1=LED on / 0=LED off Bits 6-0 --> LED-Adresse (0...127) Allerdings wird das mit den Muxen und den Flipflops etwas schwierig, weil du ja die Information speichern willst. Da mußt du irgendwoher noch ein Datenübernahmesignal für ein einzelnes FF erzeugen. Zudem wirst du bei einer Baudrate von z.B. 9600 dann ca. 130 ms brauchen, um alle LEDs umzuschalten. Die bessere Möglichkeit wäre, ähnlich wie bei DMX-512 die Bits einfach nacheinander in 16 Bytes (16*8Bit) zu packen, und diese als Paket loszuschicken. So würde ich das machen.
Der Zeitverbrauch wäre egal, also wäre ich auch mit 130ms zufrieden :-) Naja, sollte nicht länger als 1sek dauern. Hätte nicht gedacht dass es so aufwendig wird, deshalb reduziere ich das auf eine 8x8 LED-Matrix. Dann brauche ich nebenbei eh noch 64 Schalter, die ich separat bediene, die wollte ich seriell (RS232) per Polling abchecken ob die geschaltet sind oder nicht und per Software auf dem Rechner resultierend einige LEDs schalten. Für die LED-Matrix gucke ich mir grad dies hier an: http://www.mikrocontroller.net/articles/LED-Matrix , da gibt es so ein MAX72xx Treiber, allerdings werde ich wohl auch noch so ein Atmega8 uController/Programmer/... brauchen, oder? Da komme ich ja schon locker auf Kosten von mehr als 50-70 Euro wenn ich richtig gucke, was meint ihr? Neue Idee: Für die LED-Matrix: 1) Rechner USB/RS232 -> 2) Atmega8 -> 3) MAX72xx -> 4) LED-Matrix Für die Schalter-Matrix analog: 1) Rechner USB/RS232 -> 2) Atmega8 -> 3) MAX72xx -> 4) Schalter-Matrix Bei der Schaltermatrix ist der Kommunikationsweg nur andersrum, da werden die Schalterstellungen halt ausgelesen und an den die RS232/USB Schnittstelle übertragen. Evtl. eignet sich da sogar ein Atmega16 mehr? Weil 8bit für LED-Matrix und 8bit für Schalter-Matrix und ich so nur ein Bauteil verwende?
Hi Nun, wenn du noch nicht ausgestattet bist, was µC betrifft, ja, das läppert sich. Allerdings dürfte für dich das Pollin Board interessant sein. Du kannst es gleich für deine Anwendung benutzen und brauchst lediglich die Platine zur Ansteuerung deiner Matrix. Die 5 V Erzeugung ist nicht ganz so leistungsstark, aber Pollin hat auch nette Netzteile für billig, die obendrein auch genügend Power haben. z.B. bekommst du für 5 € ein Netzteil 5 V, 12 V und 24 V Wenn du 100 LED mit 20mA betreibst, kommst du auch auf 2 A und das könnte dir ein einfacher 5V Festspannungsregler schon gewaltig übel nehmen. Ok, an den Rest der Gemeinde, bevor hier wieder das STK empfohlen wird. Pollin ist ein Billiganbieter und sein Board ist nix tolles, aber für das Geld, ich hab's ja schonmal geschrieben, kann man die Platine gleich als Anwendung mit verplanen und nicht als reine Programmierstation sehen. Die 15€ sind da nich zu viel für. Die Signale holt man sich überein altes IDE-Kabel auf eine separate Platine, wo dann die Relaistreiber und exteren Schaltkreise verwurschtelt werden. Da das Pollin-Board auch eine RS 232 Schnittstelle hat, kann ein Rechner locker die Steuerung einer alten Eisenbahnanlage übernehmen. Wird übrigends eines meiner nächsten Projekte sein, mittels einer µC-Karte und einem PC-Programm ähnlich Siemens CFC beliebige Steuerungsaufgaben zu erledigen....Falls interesse besteht, einfach nachfragen. Gruß oldmax
Hast du die 128 LEDs denn alle an einer Stelle? Ansonsten wird das ja ein heftiger Drahtverhau, da wäre es eigentlich günstiger, den Adressraum auf mehrere Clients aufzuteilen, die dann untereinander nur drei Drähte (Masse, 5 V oder 12 V, serielles Signal) benötigen. Jeder decodiert dann nur noch "seinen" Teilbereich.
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.