PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Projektbeschreibung eines Anfängers



Jeti
22.02.2009, 10:40
Hallo an Alle,

vielleicht haben ja einige von euch schon das 6-Radfahrzeug gesehen welches ich zusammenkonstruiert habe. Die Mechanik ist soweit ja auch fertig (zumindest im CAD) und wartet darauf langsam gebaut zu werden.

Deswegen wird die Elektronik immer wichtiger. Das Ganze stellt für mich jedoch eine ziemliche Herrausforderung dar da ich gelinde gesagt bis vor 3 Wochen eigentlich noch nie etwas mit Elektronik zu tun hatte. Ich hab die letzte Zeit nun damit verbracht mich einzulesen und hab mir ein Konzept zurecht gelegt wie ich es nun angehen würde. Das Konzept ist auch noch nich fertig und es sind noch Fragen offen, aber das wichtigste für mich ist mal zu wissen ob die Richtung stimmt oder ob ich in meiner Blauäugigkeit Dinge übersehen habe die mir nachher in den Rücken treten. Deswegen würd ich hier kurz vorstellen was ich bis jetzt habe und Hoffe das ihr mich dann auf Denkfehler, Lücken oder sonstiges Aufmerksam macht.

Die Rahmenbedinungen sind:
Digitale Eingänge: 15
Digitale Ausgänge: 35
Analoge Eingänge: 15
Analoge Ausgänge: 0

Das ganze soll von einem Laptop verarbeitet und via USB ausgegeben werden. Da ich schnell darauf gestoßen bin das USB-Interfaces bauen für den Leihen in kürzerer Zeit nicht möglich ist hab ich beim Stöbern den IO-Warrior56 gefunden der hier ja auch ab und an besprochen wird. Wenn ich das richtig verstanden habe nimmt dieser mir ja die USB-Arbeit ab. Die analogen Eingänge würde ich mit A-D-Wandlern auf ein 8-Bit Digitalsignal umfandeln. Nu währe ich also bei 170 DI/O´s. Da mir das deutlich zu viel ist habe ich angefangen die Datenleitungen in wichtige und nicht so wichtige einzuteilen. Die nicht so wichtigen wollte ich jetzt über mehrere 4-Mux bündeln.

Das heißt also alle analogen Eingänge würden bei mir auf einen 4-Mux laufen, der das Signal nacheinander auf einen A-D-Wandler gibt. Dieser gibt dann das Ganze an den IO-Warrior weiter. Damit mach ich aus 120 Eingängen (15*8 ) nur noch 5 Eingänge (1*A-D-Wandler Ausgang + 4 Steuerleitungen für den Mux) bekomme aber nur noch 1/16 der Datenverarbeitungsgeschwindigkeit. Der IO-Warrior hat wenn ich das richtig verstanden habe die Möglichkeit alle 1/100s durch den USB abgefragt zu werden. das würde dann Bedeuten das ich jeden analogen Eingang alle 0,16s abfrage oder?

Das selbe hab ich noch mit den weniger wichtigen digitalen Eingängen gemacht wobei ich stets die selben 4 Steurleitungen für alle Mux benutzen würde.

Soweit glaube ich zumindest mal das ich es verstanden habe aber nun gibts noch ein paar Unsicherheiten. Die 35 digitalen Ausgänge habe ich natürlich auch unterteilt. Für die benötige ich 2*4-Demux. Und da hab ich ne Frage die ich einfach nicht gefunden habe. Behällt ein Demux seinen Ausgang bei bis ein neues Signal auf diesen kommt oder fällt dieser danach wieder auf "0" oder "1" ab? Wenn er seinen Ausgang beibehält währ das schick, ansonsten müsste ich ja denke ich noch mir Flipflops eine Schaltung bauen die mir das Signal hällt bis zur nächsten Ansteuerung.
Ich hab dann noch ein paar wichtige Datenleitungen, aber über die hab ich ehrlich gesagt noch nich detailliert nachgedacht. Das kommt dann später nach.

Das ich sie Signale die ich ausgebe noch mit Transistoren verschalten muss ist mir klar. Möchte ich quasi nur die Datenverarbeitung besprechen.
Das ganze ist jetzt natürlich doch ne ganze menge Text geworden.

Würde mich freuen über Anregungen, und Sorry schon mal wenn sich da einige "dämliche Anfängerfehler" drin verstecken.

Gruß
Jeti

Dirk
22.02.2009, 13:46
Hallo Jeti,

grundsätzlich macht es mir auch Spaß, so ein neues Projekt in Gedanken zu begleiten.

Allerdings geht das nur sehr eingeschränkt, wenn du nur "Rahmenbedingungen" (Digitale Eingänge: 15 Digitale Ausgänge: 35 Analoge Eingänge: 15 Analoge Ausgänge: 0) angibst, ohne dass ich mir auch nur in Ansätzen vorstellen kann, was du mit den vielen I/Os machen willst.
Wenn du z.B. die Sensoren/Aktoren nennst, die du auf deinem Gefährt auslesen/ansteuern willst, könnte man besser "mitdenken" (naja, so gut das eben geht ...).

Gruß Dirk

PICture
22.02.2009, 17:38
Hallo Jeti!

Deine Überlegung über Umschaltfrequenz für mehrere Eingänge ist richtig. Ich kenne den I/OWarrior56 nicht, vor allem wieviel Bits bei einer Abfrage eingelesen wird, deshalb kann ich nichts genaueres sagen.

Die analoge MUX sind kontaktlose Umschalter und ändern an den Signalen nichts, ausser seinen eigenen Widerstand seriell einzuschalten. Auf dem Ausgang existiert das Signal aus dem gewähtem Eingang permanent.

MfG

Jeti
22.02.2009, 19:06
@ Dirk

Also ich hab mal die Excelltabelle angehängt mit der ich das ganze geplant habe. Ich hoffe daraus wird deutlich was ich meine.

Zum besseren Verständnis, fett geschrieben sind alle Dinge die ich als Zeitkritisch erachte und die deswegen nicht durch nen Mux dürfen.

Hier noch ne kleine Aufstellung wie sich die Tabelle zusammensetzt:

2 x Türen, 4 Endschalter und 2 Motoren mit je 2 Steuerleitungen
Radstellung an 4 Rädern mit Potis, 4 Motoren mit je 2 Steuerleitungen
6 x Antriebe mit 2 Steuerleitungen je über PWM gesteuert
6 x Drehzahlmesser als Impulsgeber
1 x PC-Klappe mit 2 Endschaltern und 1 Motor mit 2 Steuerleitungen
1 x Seilwinde mit 2 Endschaltern und 1 Motor mit 2 Steuerleitungen
6 x Überstrommessung (zur verhinderung von schäden wenn eine Klappe nich zugehen kann weil sie blockiert ist)
1 x Feststellbremse und einmal Kontrolle ob sie wirklich angezogen hat.

Der Rest müsste denke ich klar sein. Wenn nich einfach Nachfragen

@PICture

also im Datenblatt steht wenn ich das richtig verstanden habe das der IO-Warrior56 immer 8 Bit auf einmal ausließt. Ich bin mir jetzt bloß nicht sicher ob er immer 8 Bit durch den USB schaufelt oder ob er die 8 alle 1/100s prüft... falls es jemanden interessiert, den IO-Warrior gibt es unter:

http://www.codemercs.com/index.php?id=127&L=0

Du hast geschrieben
"Die analoge MUX sind kontaktlose Umschalter und ändern an den Signalen nichts, ausser seinen eigenen Widerstand seriell einzuschalten. Auf dem Ausgang existiert das Signal aus dem gewähtem Eingang permanent."

Jetzt bin ich mir nich sicher, ob ich das verstanden habe, ein DEMUX hat ja nur einen Eingang und in meinem Fall 16 Ausgänge. Meine Frage war nun wenn ich den Ausgang 1 Gefählt habe und über den Eingang eine "1" übertragen habe was passiert dann mit diesem Ausgang wenn ich nun den Ausgang 2 wähle, behällt der seinen Zustand oder kehrt der wieder in den Ursprungszustand zurück?

Gruß
Jeti

PICture
22.02.2009, 21:57
Die MUX und DEMUX besitzen kein Speicher. Die Pegel der nicht gewählten Ausgänge kann man in der Wahrheitstabelle (function table) des Bauteils finden.

MfG

Volker-01
22.02.2009, 22:13
Ich glaube für sein Projekt wirst du mit dem IO-Warrier nur bedingt freude haben. So wie ich das sehe wirst du mit der PWM Probleme haben. Mit einfach nur Ports Toggeln wird da nix drin sein. Da wird dir vermutlich die nicht vorhandene Echtzeitfähigkeit von USB Probleme machen. Gerade unter Windows wird erst richtig lustig. Für die Motorsteuerung wirst du daher warscheinlich nicht um eine andere Lösung mit entsprechender Intelligenz herum kommen.

Gruß, Volker

Ach so, eines hab ich noch vergessen: Auch das einlesen deiner Drehzahlgeber wird in bezug auf die Echtzeitfähigkeit auch probleme machen.

Jeti
23.02.2009, 08:20
Hi Volker,

Bei den Hauptantrieben und den Drehzahlmessern hatte ich schon überlegt das es zu Problemen kommen kann. Ich bin aber darauf gestoßen das ich den Pin nur 100 mal pro sekunde abfragen kann, das heißt ich könnte ja nur drehzahlen mit bis zu 6000 Umbrehungen messen (vorrausgesetzt ich hab nur 1 inkrement pro Umdrehung was ich eigentlich als zu wenig gedacht habe)

Was ich mir da sporadisch überlegt hatte is ob ich vielleicht Microcontroller nehmen soll die das für mich übernehmen. Die also Quasi zählen weil es die ja mit viel größeren Geschwindigkeiten gibt und das Ergebnis durch den IO-Warrior melden. So hätte ich es dann auch bei den Antrieben gemacht das der IO-Warrior ne PWM an nen Microcontroller weiter leitet und der dann die eigentliche PWM generriert... was da so alles dran hängt weiß ich leider noch nicht.

Würde das aber funktionieren oder ist da ein versteckter Trick dabei?

Gruß
Jeti

Volker-01
25.02.2009, 00:32
Denke nicht, das dir das zufriedenstellende Ergebnisse liefern wird. Der IO-Warrier wird dir auch nur ne PWM mit max 100Hz liefern können, wenn das nicht irgend wie in Hardware zur Verfügung gestellt wird und das ist zu wenig für ne Motorsteuerung.

Ich würde dir wirklich raten einen kleinen Controller (z.B. ATmegaXXX ) zu nehmen und dann, damit du es mit der Anbindung an den PC net so schwer hast, nen FT232 o.Ä. dahinter hängen. Dann kannst du die Motorsteuerung sowie die Drehzahlmessung vom Controller machen lassen. Beispiele hierzu gibts hier im Forum ja des öfteren. Nebenher kann der dann auch die paar Pins, die du sonst noch abfragen bzw. ansteuern wills für dich abarbeiten. Das iss mit nem ATmega kein Problem.

Alternativ kannst du auch, wenn du den IO-Warrier unbedingt nutzen möchtest, nen Controller an die I²C oder SPI-Schnittstelle der Warriers hängen und dann nur die Motorsteuerung und drehzahlmessung auslagern. Nur weis ich nicht, wie gut die Schnittstellen auf dem IO-Warrier nutzbar sind.

Zeitkritische Dinge wie z.B. Motorsteuerung und Drehzahlmessung auf jeden Fall auf nem Controller machen und dann nur die Geschwindigkeitsbefehle vom PC ausführen bzw. die Drehzahl zyklisch an den PC melden. (Das reicht dir warscheinlich auch, wenn du die 3...5 mal Pro Sekunde schickst.)

Gruß, Volker