Mehrere Sensoren abfragen
Hi Leute,
eine große Herausforderung :-):
Ich möchte ja meinen Roboter mit einem Mainboard und am Parallelport angeschlossener, selbsterstellter Platine aufbauen.
Nun ergibt sich das folgende Problem: Ich kann schlecht alle Sensoren zusammen am Parallelport anschließen. Somit bräuchte ich eine Art Verteilerstelle, die mir nur bestimmte Sensorendaten an den Parallelport liefert.
Im Endeffekt soll das dann so aussehen:
Der PC gibt aus dem Parallelport z.B. auf den ersten paar Pins folgende Kombination aus: 1011 (= elf). Der Controller auf dem angeschlossenen Board soll dann erkennen, welcher Sensorwert verlangt wird und ihn auf den Eingängen des Parallelports anzeigen.
Ich hoffe, ihr versteht was ich meine. Ich hatte dabei an einen Chip gedacht, in den die Sensoren irgendwie ihre Werte schreiben. Dazu benötige ich nach meiner Auffassung wiederrum einen Taktgeber, der pro Takt von Sensor zu Sensor springt, den Widerstandswert des Sensors in einen A/D-Wandler gibt (pro Sensortyp benötige ich nur einen A/D-Wandler!?) und der A/D-Wandler den Wert mit der Adressierung (z.B. 1011) in den Speicher-IC schickt. Wenn nun der PC die Speicheradresse 1011 des ICs aufruft, sollte dann der Wert an den Parallelport übergeben werden.
Frage: Ist meine Idee so richtig? Wie geht das??
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
so hatte ich mir das vorgestellt (siehe Attachment).
Zur Erläuterung:
Taktgeber gibt Takt (vielleicht so etwas wie 100 Hz).
Zähler zählt bei jedem Takt um eins hoch (binär).
Zusätzlich springt auch dieses imaginäre Umschalter-IC um einen Sesnor nach rechts.
Erläuterung dieses "Umschalt-ICs": Ich suche eine möglichst einfach aufgebaute Schaltung, die es mir ermöglicht, bei jedem Takt einen anderen Eingang mit dem Ausgang zu verbinden, vergleichbar mit einem Lauflicht: Zuerst wird S0 mit dem Ausgang verbunden, beim nächsten Takt ist nur S1 mit dem Ausgang verbunden, dann S2, usw.
Der noch analoge Wert aus dem "Umschalter-IC" (ursprünglich aus den Sensoren wird im A/D-Wandler zu einem 8-Bit-Code umgewandelt und zusammen mit dem Code des Zählers als Adressierung in einem Speicher-IC gespeichert (siehe Datenblatt oben).
Beispiel:
Sensorwert: 10101101 = 173 dezimal = z.B. 30°C vom Temperatursensor (kommt vom Digitalwandler)
Adressierung: 00000010 = 2 dezimal = der 2te abgefragte Sensor (kommt vom Zähler)
Wenn der letzte Eingang des "Umschalt-ICs" erreicht ist, wird der Pin I/O (Lesen/Schreiben) auf "Lesen" gesetzt, damit der PC die Werte aus dem Speicherchip lesen darf. Außerdem wird der Zähler auf Null gesetzt (Reset) und der Takt unterbrochen.
Ich sehe gerade, dass der Transistor für U (Takt zum Unschalter-IC) unsinnig ist, da der Takt ja sowieso unterbrochen wird.
Weiter unten (links) sieht man die 8 Ausgänge des LPT-Ports des PCs (die Leitung, die Dioden und der Transistor (links) bitte wegdenken, auch die sind unsinnig). Wenn man nun auf die Ausgänge die Adresse eines Sensorwerts angibt, wird er auf den I/O - Ports des Speicher-ICs ausgegeben, wenn I (Transistor links) durchschaltet (I/O auf "High" = Lesezugriff). Wenn er nicht durchschaltet, bekommt der Parallelport keine Informationen (nicht auf der Zeichnung enthalten, die Ausgänge des Parallelports bekommen auch noch Transistoren, damit nur Werte nach aussen gegeben werden, wenn Lesezugriff besteht).
Jetzt fragen sich vielleicht einige: Warum Lesebeschränkung? Ganz einfach: Man kann bei dem Speicher-IC nur lesen ODER schreiben, die Ports A0 bis A7 (A/D-Wandler->Speicher) werden sowohl als Eingänge als auch als Ausgänge benutzt, je nach Stand vom Pin "I/O". Bis nun alle Sensorwerte des Roboters im Speicher-IC sind, verstreicht natürlich Zeit (Bei 20 Sensoren und einer Taktfrequenz von 100 Hz sind dies 0,2 Sekunden). In dieser Zeit kann der PC die Speicherwerte des ICs nicht lesen, da - wie gesagt - die Pins des ICs lesen ODER schreiben aufeinmal können. Nach den 0,2 Sekunden wird nun der IC für den Lesezugriff geöffnet und der PC kann die Sensordaten lesen.
Nicht auf meiner Skizze: Nach der Zeit, die zum Schreiben benötigt wird, gibt es eine Taktunterbrechung, die wiederrum nur einige Zeit andauert. In dieser Unterbrechungsphase darf der PC die Daten der Sensoren lesen (geht ja relativ schnell).
Lest es euch ein paar Mal durch, ich hoffe IRGENDJEMAND versteht, was ich will.
Das einzige Problem, was ich habe: Ich brauche so einen "Umschaltschaltkreis", der mir bei jedem neuen Takt einen neuen Eingang auf den Ausgang des Schaltkreises legt.
Oder ihr sagt: Das ist alles schwachsinn, das macht man anders! Dann sagt es mir bitte!!!
Danke im Voraus, euer
Victor