Hallo zusammen, ich möchte gerne über einen PC entfernte Dioden ein- und ausschalten können. Es sollten wenig möglichst Leitungen / Drähte benötigt werden, als Buslänge ist maximal um die 20 Meter zu rechnen. Das ganze sollte möglichst störungs- / ausfallsicher + kostengünstig sein. Dioden wären es um die 100. Meine erste Idee war I2C. An jeder LED wäre dann ein I2C Baustein der per DIP-Schalter seine eigene Adresse erhält. Liegt diese Adresse auf dem "Bus" sollte die entsprechende LED leuchten. Die Verkabelung wäre somit auch sehr flexibel. Die Steuerung würde ich per PC über den Seriellen-Port vornehmen and welchen die zwei I2C Drähte angeschlossen sind (oder bei Linux gibt's sogar I2C Treiber...?). Hat jemand schon einmal so etwas gemacht? Da ich mich sehr wenig auskenne - funktioniert das so überhaupt, welche Bausteine bräuchte ich dafür? Peter
Wie dezentral sind denn die Dioden? Alle 100 an einem anderen Ort, oder jeweils einige davon beieinander?
Nein die sind verteilt, jeweils so 30-50cm Abstand. Kann man sich wie bei einem Weihnachtsbaum vorstellen ;-)
Unabhängig davon würd ich den seriellen Port am PC nicht zweckentfremden, sondern so wie vorgesehen als UART verwenden. Also einen uC dazwischen als Bridge zwischen der UART und dem endgültigen Bussystem. Andere Idee: das Ganze ist ja eine reine Einbahnstraße, eine Rückmeldung wird wohl nicht erforderlich sein. Also einen leistungsstarken Treiber in die RS232-Leitung und dann die Tx parallel an alle Stationen. Mit nicht allzu hoher Bitrate (beispielsweise 9600 Bit/s) dürfte das gehen. Dann sparst du dir auch den Koppel-uC. Abgesehen davon würde ich keine einzelnen Telegramme mitsamt Adresse und Daten verschicken (Riesen-Overhead!), sondern Summentelegramme, also ein Telegramm durch eindeutigen Anfang und eindeutiges Ende gekennzeichnet (z.B. durch 100 ms Pause zwischen den Telegrammen), welches die Daten für alle Teilnehmer enthält (jeweils 1 Bit), die suchen sich dann anhand ihrer ID eins raus. Das nur als Anregung.
:-) Nimm 5 mega48, alle per I2C angeschlossen, und hänge die 100 LEDs an die vielen vielen freien Pins. Die Adresse kannst du bequem per Software vergeben und sparst dir ausserdem die DIP-schalter. Für den ISP brauchst du nur ein Wannenstecker (MISO, MOSI, SCK zu allen mega48), die jeweilige Reset-Leitung der Atmels kann man dann z.B. auf einen DIP-Schalter legen. Ein mega48 kostet bei Angelika 1,45 EUR, und ist so meines Wissens der mit Abstand günstigste frei programmierbare "I2C-Portexpander" :-) Gruss
Oha waren meine Vorschreiber schnell :-))) UART ist natürlich auch eine gute Idee, dann kannst du mit einem Max232 dazwischen wunderbar mit dem PC kommunizieren. Der Rest würde ich der Geschwindigkeit wegen trotzdem mit I2C machen.
danke für die zahlreichen antworten bisher rs232: mh, wollte ich eigentlich nicht nehmen, da die kabel ja viel dicker sind und auch teurer. bei i2c bräuchte ich nur zwei dünne drähtchen? µc: einen µc wollte ich eigentlich auch vermeiden, da ich den ja erst noch programmieren müsste? auch würde ich mir ja so 5 "inseln" bauen welche untereinander per i2c verknüpft sind, wenn ichs richtig verstanden habe. falls an der lösung kein weg dran vorbeiführt, gibt's da schon fertigen bzw. sehr ähnlichen code für? brauch ich dann noch programmier-karten, eeprom brenner oder dergleichen? gibt es keine super simple lösung, bei welcher ich mir 100x CHIP-X kaufe, jedem per dip schalter sage höhre auf adresse X und falls diese anliegt (oder übertragen wurde) setzte pin X auf 1? :-)
ein solcher Chip ist mir nicht bekannt, vielleicht mag es da welche geben, aber bei der anforderung an den preis die du da stellst, wirst du das wohl vergessen koennen. 1.) jede led bekommt einen einen eigenen µC TINY11,12,13 wie auch immer im acht poligen Dipgehäuse und die adresse per Software programmiert. Das ist gerade bei den AVRs super einfach und preiswert. Man muss nicht unbedingt in C oder ASM programmieren können für sowas reicht locker auch Basic aus. Das kostet dich aber auch ca. 50-100€ bei dem Versender aus dem hohen Norden. Vorteil jede Led kann mit nur drei Leitungen (+,-,Steuersignal) angefahren werden. 2.) Oder du nimmst mehrere µC zum Bleistift Tiny2313 der hat dann 14 ausgangspins (zwei für i2c und uart sind schon belegt) und baust kleine inseln also immer 14 leds die von einem Controller gesteuert werden, dann ist der verdrahtungsaufwand auch nicht so groß. 3.) du nimmst einen großen AVR atmega16 mit 32 i/os und baust das ganze mit einer matrixverschaltung. 5 * 20 auf, dass wiederrum ist aber hoher verdrahtungsaufwand. Aber so wie du das gerne hättest möglich wenig verdrahtung, möglichst billig und ohne µC seh ich da keine chance.
Wieso ist bei rs232 das kabel dicker? Kannst Du genauso mit einen dünnen Draht machen. Da Du ja nur senden musst reicht ein verdrilltes Paar aus. Bei I²C sinds 3 Drähte mit der Masse und das ist nach meiner Erfahrung störanfälliger bei längeren Leitungslängen. Es gibt zwar I²C Portbausteine die glaub ich bis 8 Ausgänge haben doch sind die teuerer als ein Tiny. Ich würd nach Tip 2 von Bastian vorgehen.
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.