
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Jens > Wie steuerst Du die OM eigentlich an, über die RS232? Hmm, im Prinzip ja, aber auch nicht direkt. Für meine Modellanlage (Car-System) brauche ich einige mehre OM's nur um die Kreuzungen zu schalten. Beispiel: Eine Kreuzung (habe ca. 14 geplant) Die Servo-OM steuert den Abbiegevorgang (4 Servos für links,rechts,gerade (feste Werte) und die Ampelumschaltung rot,gelb,grün). Aber um die Autos zu steuern brauch ich noch eine zweite OM, die die Infrarotbefehle (STOP, Fahrstufen, Blinker, Licht usw.) an die Fahrzeuge sendet. Jetzt kannst Du Dir ja ausrechnen das allein für die Kreuzungen "28" RS232 Schnittstellen fällig wären! Ausserdem wäre die Übertragung über RS232 bei der Infrarot-OM viel zu langsam (Unterbrechung der Signale)! >Und wie ist Deine Ansteuerung untergliedert? Ich habe deswegen eine "Master-Slave-Übertragung" (ähnlich I2C) zwischen den OM's programmiert. Der Master empfängt ca. alle 50ms Befehle und Daten (insgesamt 16Byte) vom PC. Da die Daten für einen Slave bei mir immer 2 Byte lang sind, kann ich diese direkt an den entsprechenden Slave senden. Eine Master-Slave-Übertragung dauert ca. 2,5ms bei zwei Byte (könnte man eventuell noch ändern, mehr Bytes). Da die 2,5ms die Infrarotsignale praktisch nicht unterbrechen habe ich auch keine Zeitprobleme mehr. Nun leite ich die Daten über die Infrarot-OM genauso zur Servo-OM weiter, praktisch eine weitere Master-Slave-Übertragung. Und siehe da, aus meinen benötigten 28 RS232-Schnittstellen sind nur noch "2" geworden. >Ich bin auch grade dabei mir einen Servo-Baustein zu erstellen, der wird aber über den I2C-Bus mit Daten versorgt. Meine Untergliederung bzw. Ansteuerung sieht so aus: > > I2C_Start > I2C_Write(Adresse) > I2C_Write(Servo Nummer) > I2C_Write(Servo Position) > I2C_Stop > > Mit dem Byte „Servo Nummer“ spreche ich insgesamt 8 Servos an. Jedes Bit des Bytes steht dafür für einen einzelnen Servo. Sende ich z.B. eine 1, dann wird nur Servo1 angesteuert und sende ich eine 128, dann wird nur Servo8 angesteuert. Beim senden von 255 nehmen dann alle 8 Servos die gleiche Position ein. > Vielleicht kannst Du ja diese Untergliederung für Dein Servo-Baustein übernehmen... Die Daten zu den Servos zu bekommen und sie anzusprechen, auch 2 oder mehrere zusammen ist eigentlich nicht mein Problem, vielmehr meinte ich, wie ich die Servos gleichzeitig auf unterschiedliche Positionen (quasi parallel, Multitasking)drehen lassen kann? Um noch ein bischen mehr Zeit zu sparen. Benötigst Du für Deine Variante mit I2C nicht etliche Bauteile mehr (PCF oder ähnliche)?? Hatte ich auch erst überlegt, aber dann auch schnell wieder verworfen wegen der vielen Bauteile die ich benötigt hätte (Platinengröße, Kosten, Anzahl der Bauteile, Platzprobleme). LG Olaf |
| Antwort schreiben |