PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 4 Sensoren -> 1 Signal



maze2k
11.11.2005, 23:54
Ich möchte gerne das Signal von 4 Sensoren "addieren", sodass ich am Ende ein Ergebnis habe, wie z.B. beim Asuro beim drücken der Taster.

(Also wenn man den äußersten Taster drückt dann ist der Wert 1, beim nächsten 2, beim nächsten 4, dann 8 usw. Bei mehreren Tasten werden diese Werte addiert. Da alle Werte zweier-Potenzen sind gibt das brauchbare Werte, die eindeutig sind also in dem Fall eine Binärkodierung von 0 bis 63, also eine Binärzahl der Länge 6)

Ich bräuchte am Ende nur eine Binärzahl der Länge 4, da ich vier ganz einfache Sensoren aneinander schalten möchte. Kann man das irgendwie in Hardware realisieren? Wenn möglich selbst lötbar und mit Teilen, die ich z.B. bei Pollin oder Conrad bekomme?

Danke für eure Hilfe schonmal im Voraus :)

Ratber
12.11.2005, 09:30
Du meinst einfache Digitale Signale ala "Ein/Aus" ?
Und wie möchtest du sie denn einlesen und womit bzw. wohin ?

Also ich kann mir aus deiner anfrage einiges herauslesen und vorstellen aber mit etwas mehr Informationen könnte man klarer Blicken.

Mach meinentwegen ne Zeichnung wenn du es nicht anders beschreiben kannst.

bad-joker
12.11.2005, 09:40
Beim Asuro ist das soweit ich weiss mit einem Widerstansnetzwerk gelößt. Je nachdem welchen Taster du schließt, hast du eine andere Spannung die du dann mit einem AD Eingang ausliest. Das kannst du eventuell gleich machen. Oder hast du keinen yC. Dann soltest du dir mal Zählerbausteine anschaugen, bei denen man Werte laden kann. An diesen Eingängen legst du deine Taster dran und drückst laden. Am Zählerausgang kriegst du dann deine Zahl raus. Den "normalen" Zählereingang hengst du einfach auf Masse.
Tom

maze2k
12.11.2005, 10:23
Ja, ich habe einfache "Ein/Aus"-Schalter (Neigungsschalter).

Ich möchte vier davon aneinander schalten. (Je einen für links, rechts, vorne, hinten).

Ich möchte aber damit nicht vier Ports an meinem µC, oder was auch immer das dann am Ende sein wird, belegen, sondern würde gerne einfach nur einen Wert/Spannung/o.ä. ablesen müssen.

Zuerst möchte ich es an der seriellen Schnittstelle testen. Danach, wenn alles so klappt wie ich es gerne hätte, werde ich es mit einem µC aufbauen.

Ratber
12.11.2005, 11:27
Ach so

Nen einfachen Wandler von Parallel auf Seriell wenn du über die Schnittstelle gehen willst.

Fürn Analogeingang über Widerstände (Pegel)

Mußt dich nur entscheiden

Manf
12.11.2005, 11:49
Dies ist die Schaltung mit der beim ASURO die Tasten kombiniert werden.

https://www.roboternetz.de/phpBB2/viewtopic.php?t=4737

https://www.roboternetz.de/phpBB2/files/wandler_.jpg

maze2k
12.11.2005, 20:56
D.h. ich baue die Schalter einfach mit Widerständen aneinander und lese dann am Ende die Spannung ab?

Wie genau lese ich die Spannung über die seriellen Schnittstelle? Geht das? Oder brauche ich dann noch zusätzliche Hardware?

PICture
12.11.2005, 21:29
Hallo maze2k!
Du kannst die Spannung nicht direkt über die serielle Schnittstelle einlesen, weil es analog Signal ist. Um die analoge Spannung digital einlesen zu können brauchst Du ein A/D Wandler mit serieller Interface.
Ich würde Dir aber vorschlagen die Tasten (Sensoren) in einen Schieberegister LOAD-en und danach seriell einlesen.
MfG

maze2k
12.11.2005, 21:38
Wo würde ich denn so einen A/D-Wandler bzw. ein Schieberegister bekommen? Bei Pollin hab ich nichts gefunden :(

PICture
12.11.2005, 21:53
Als Schieberegister kannst Du z.B. 74xxx165 oder 74xxx166 nehmen. Die gibt es z.B beim Reichelt. Wenn Du es mit einem Schieberegister machst, brauchst Du kein A/D Wandler und keine ASURO Schaltung.

maze2k
13.11.2005, 01:25
Und wo bekomme ich ein Schieberegister bzw. die Teile dafür? Das besteht ja wohl aus mehreren Flipflops. Da brauche ich ja auch wieder irgendeinen Taktgeber oder? Ich wollte halt eine Schaltung aufbauen, die so einfach wie möglich ist.

Vielleicht kann mir ja jemand mit einem kleinen Schaltplan aushelfen.

Wie gesagt ich habe vier Neigungsschalter und würde die gerne an der seriellen Schnittstelle ablesen. Aber das nur mit einem Wert, d.h. die Schalter sollen wie gesagt so wie beim Asuro die Taster zusammengeschaltet sein.

PICture
13.11.2005, 01:36
Egal was für eine Lösung Du wählst, mußt Du einen Generator aufbauen, der nach der Schließung eines Sensors an Masse, die 8 bits (1 Byte) mit bestimmter Baudrate in die COM schickt.

maze2k
13.11.2005, 01:46
und wie würde ich das machen? Geht es nicht auch, wenn ich es softwaremäßig vom PC aus abfrage?

SprinterSB
13.11.2005, 01:52
Falls du direkten Zugriff auf die Schnittstelle hast, kannst du auch die Signale direkt auswerten, ohne serielles Protokoll.

Der COM-Port hat 5 Eingänge:
Pin 1 (DCD)
Pin 2 (RxD)
Pin 6 (DSR)
Pin 8 (CTS)
Pin 9 (RI)

Falls ein Schalter schliesst, legst du das einfach über nen Widerstand nach GND (Pin 5) und testest den entsprechenden Ports per Software ab.

PICture
13.11.2005, 01:54
so weit ich weiß nicht. Man kann nur softwaremäßig prüfen, ob ein byte empfangen wurde. Ich habe früher verschiedene Hardware gebaut, die mit einem PC per serielle Schnitstelle komuniziert hat und in ASM programmiert.

PICture
13.11.2005, 01:58
Aber die Möglichkeit, die @SprinterSB genannt hat ist natürlich auch möglich, Du brauchst ja bloß 4 bits...

SprinterSB
13.11.2005, 02:01
Das geht sogar von Java aus. Sollte Java mächtiger sein als Assembler? :-k

Von C++ aus verwende ich die Steuerleitungen auch, zum Reset einer Schaltung, etc (dort auch als Ausgang). Evtl muss man die Flussteuerung ausstellen.

@maze2k:
Falls du RS232 fahren willst und ohnehin gedenkst, später ohnehin einen µC einzusetzen, dann kannst du auch gleich den µC verwenden, um die Daten zum PC zu schicken -- sofern der Kamerad über eine UART verfügt.

Mit irgendnem Schieberegister oder parallel->seriell Latch must du das Zeug immern nocht zum PC schaufeln...

maze2k
13.11.2005, 10:58
Ich wollte es erstmal ohne µC aufbauen. Aber auf jeden Fall danke für die Tipps!

@SprinterSB: hast du ein Code-Beispiel, wie ich die einzelnen Signale in Java abfrage?

Ich habe bisher nur Bytes empfangen und gesendet.

SprinterSB
13.11.2005, 11:14
Das ist leider plattformabhängig und nicht im Standard-Java.
Als API gibts ne commapi (javax.comm)

Da gibt's so was wie

SerialPort.IsDTR() etc oder .notifyOnCTS(), zusammen mit .addEventListener() und Implementierung von SerialPortEventListener

maze2k
14.11.2005, 13:29
Aber die Möglichkeit, die @SprinterSB genannt hat ist natürlich auch möglich, Du brauchst ja bloß 4 bits...

Ja aber ich möchte nur einen Eingang verwenden...

clupus
03.02.2006, 15:19
Grundsätzlich gilt: Du musst auf einem PIN ein Bit deines Wortes (4 Bit) übertragen.

Wenn die Daten digital ankommen sollen, müssen sie erst "serialisiert" werden. (-> Schieberegler/Multiplexer) Dabei ist es aber nötig, dass der µC "weiß" wann er die Daten abgreifen kann. Es gibt dann also 2 Möglichkeiten: Der µC steuert selber welcher PIN anliegt (weitere Output-Pins nötig)
Der µC fragt regelmäßig die Leitung ab und prüft so, ob Daten anliegen (vgl. RS232-Schnittstelle). Dazu ist es aber essentiell, dass der µC genau weiß, in welchem Takt er abfragen muss (Zeitkritisch!) und dass ein Protokoll festgelegt wurde (Leitng. ist normal Hi, bei Übertragung kurz Lo, dann Daten, Parität, Stopp-Bit, etc). Es ist also auf beiden Seiten Logik nötig (wahrscheinlich nicht gewollt)
Ich befürchte also, dass du da nach dem Simens Luftanker suchst.

MfG
Christian