-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Weichensteuerung mit Servo

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.01.2008
    Beiträge
    16

    Weichensteuerung mit Servo

    Anzeige

    Hallo
    Ich habe mir einen PIC-Programmer zugelegt, bin aber nicht so recht weiter gekommen.

    http://www.conrad.de/goto.php?artikel=191020

    Ich habe ein paar kleine Programme zum laufen gebracht, aber an einen Servo ist nicht zu denken.

    Ich habe folgendes Problem, für eine Modellbahn habe ich eine Steuerung gebaut die über den I2C gesteuert wird. (Gleisbesetztmelder, Fahrstromsteuerung Ab und Zuschalten von Gleisabschnitte).
    Weichen steuere ich mit Handelsüblichen Weichenantrieben über den I2C und Relais. Soweit läuft eigentlich alles Zufriedenstellend.
    Nun bin ich auf die Idee gekommen das sich Weichen viel komfortabler steuern ließen.
    Die jetzige Situation. Die Weichen liegen an oft sehr unzugänglichen Stellenund der Antrieb muß dann von unten genau justiert werden. Eine sehr fummleliege Sache.
    Mein Gedanke, ich lege die Weichenzungen etwa in Mittelstellung und setze von unten einen Servo in Mittelstellung direkt darunter. Nun könnte ich den Servo schrittweise so weit nach rechts und links fahren bis die Weich die Endlage erreicht hat. Diese Werte dann abspeichern und fertig.
    Ich bräuchte also einen PIC, 2 Eingänge um den Servo(Weiche) später anzusteuern (über I2C oder direkt als Ports), 2 oder 3 Eingänge für das Programmieren der Weichenstellung, das könnte über Taster laufen.

    Ich habe mal ein Blockschaltbild gemacht was alles deutlich macht.

    http://www.bildermonster24.de/bild.p...erung0GV6L.jpg

    Nun habe ich auch keine Ahnung von PICs, Assembler, C. Ich programmiere mit Visual Basic und Delphi, also für PICs nicht brauchbar. Aus diese Grund habe ich es mit FlowCode probiert, da bin ich aber auch nicht weiter gekommen.
    Erfahrungen habe ich mit TTL-Technik und alles was dazu gehört.

    Nun meine Frage kann mir jemand helfen so etwas zustande zu bringen.

    Gruß Rolf

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Moin,
    na das klingt ja nach einem netten Projekt. Wolltest du die Servoendlage per Hand justieren, also Daten senden, schauen ob Endlage erreicht, noch eine Position usw., oder wolltest du es elektronisch erfassen? Musst acht geben, dass der Servo nicht die Weiche demoliert, oder in der Endlage immernoch versucht gegenzustellen. Man könnte das vielleicht sogar über den Motorstrom des Servos selbst erfassen, das wäre sicher eine bequeme Lösung.
    Assembler ist leider einiges anders als Hochsprachen, deswegen wirst du etwas Mühe investieren müssen, aber wenn das Grundverständnis da ist, geht auch Assembler lernen schnell. Super Seite zu dem Thema ist www.sprut.de ,alles was ich über Controller weiß hat dort begonnen.
    Es gibt soweit ich weiß einen einzigen Compiler, der Basic für den PIC bereitstellt. Du müsstest mal im Forum oder bei Google suchen, PICBasic oder so, meine ich.

    Ich kann mittlerweile mit Atmel und Pics umgehen, und würde dir wegen Basic zu einem Atmel raten. Aber ein Pic kann das auch.

    Ich würde gerne genaueres zu deinem Plan erfahren. Bis dahin erstmal meine Idee:

    Du brauchst also erstmal ein I2C Interface. Wenn du eine Console oder so dafür hast, bestens, wenn nicht, kannst du dir auch ein Handteil bauen, welches die Daten einfach generiert, sobald du z.B. die Adresse angegeben hast, um die Weiche zu programmieren.

    Die Schaltung muss selber folgendes haben: Ein I2C Interface, entweder in Software oder als Hardware, viele PICs haben bereits ein Hardwareinterface.
    Etwas EEPROM, um die Positionen abzuspeichern, haben auch fast alle PICs.
    Einen freien Pin für den Servo, um dort in Software die Signale zu generieren. Die PWM Hardware von Pics ist weniger geeigent um direkt Servosignale zu erzeugen.
    Wenn du eine Rückmeldung der Weiche möchtest, dann entweder noch 2 freie Pins für Endlagenschalter, oder ein AD-Wandler um den Motorstrom zu messen. In dem Fall muss auf der Platine ein kleiner Shunt sein, um den Motorstrom in einen Spannungsabfall zu wandeln.

    Kennst du das Format um die Weiche anzusprechen, d.h. welche Daten die Schaltstellung links und welche die Schaltstellung rechts auslösen?

    Das ganze muss dann noch mit Spannung versorgt werden, 5V und etwa 300mA, schätze ich, je nach Servo und dessen Stellung.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Ich hab mal etwas gesucht,
    ein geeigneter PIC wäre z.B. der 16F628A, zu bekommen bei Reichelt oder halt als Sample direkt bei Microchip (sogar kostenlos), aber ohne AD-Wandler, nur mit Komparator.

    Ach da hab ich doch glatte den Link zu dem Compiler vergessen
    http://www.melabs.com/products/pbc.htm

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    15.01.2008
    Beiträge
    16
    Hallo

    Danke für deine Antwort.

    Ich weiß ja nicht ob ich richtig liege. So wie ich gelesen habe schaltet ein Servo bei einem Impuls von 1 oder 2 ms in die entsprechende Richtung, eine Position weiter.
    Die Erfassung beim Justieren sollte mit meinen Augen erfolgen, aus den Weichen sollen möglichst keine Korkenzieher werden.
    Zum Justieren würde ich das mit Hand machen wollen(Taster). Dadurch wären dann die Schaltschritte von von Endlage zu Endlage bekannt. Dies könnten dann im EEPROM, sowie auch die jeweilige Endlage (rechts/links) abgespeichert werden.

    Um den Verlust an Weichen bei meinen Versuchen zu begrenzen, werde ich dafür Attrappen verwenden.

    Über die beiden Schaltports, welche von meiner Software angesteuert werden, würde nun die Weiche gesteuert, wozu erst der Wert aus dem EEPROM ausgelesen und dann ausgeführt werden.
    Ich steuere meine Hardware zwar über den I2C, aber ich würde in diesen Fall dazu tendieren nicht den I2C zu verwenden, das würde mich mit Sicherheit bei der Programmierung der PIC/Atmel überfordern.

    Da du mir zu einem Atmel rätst, werde ich mich da mal bei Google etwas schlauer machen, Basic wär für mich ein entscheidendes Argument.
    Zu PICs bin ich nur gekommen, da mir ein entsprechendes Buch in die Hände gefallen war. "Messen, Steuern und Regeln mit PIC-Mikrocontrollern"

    Wenn jemand ein gutes Buch für Amtel-Mikrocontroller empfehlen kann wär ich sehr dankbar. Da ich noch am Anfang stehe, bin ich für jede Richtung offen.
    Erfahrungen habe ich bisher mit der C-Control gemacht, die C-Control ist für diese Aufgabe nicht so geeignet. So das ich mich neu orientieren muß.

    Kannst du mir einen Programmer für einen Atmel empfehlen, der sich ohne sehr großen Aufwand aufbauen lies? Ich werde da aber auch mal die Such-Funktion verwenden, hier wurde mit Sicherheit schon etwas geschrieben.

    Gruß Rolf

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Moin,
    ach mist, jetzt ist es wieder passiert, dass ich jemanden von den Pics vergraule *G* Lange Zeit hab ich fast militant zu denen Gestanden, weil ich immer nur hörte "AVRs sind besser", mittlerweile sehe ich aber auch objektiv die Vorteile.

    Also Bascom wäre der AVR-Basic-Compiler, dort gibt es wohl die meisten Funktionen, die du brauchst schon vorgefertigt (I2C, sogar Servomotoren meine ich, Warteschleifen..).
    Es gibt günstige Programmer, die mit freier Software laufen, für den Parallelport lässt sich das mit einem TTL-Gatter und einem Stück Platine+3 Kondensatoren, Widerständen usw. aufbauen, kosten von unter 10€. Dann gibt es auch noch die USB-Versionen, z.B. MySmartUSB oder so, von MyAVR. Ich selbst hab für AVRs das Atmel AVR ISP MKII, ist schon eins der teuersten mit 45€, ist aber voll in die Entwicklungsumgebung von Atmel, AVR Studio integriert.
    Bascom bringt ne eigene Entwicklungsumgebung mit und nutzt meine ich externe Programme wie PonyProg um den AVR zu brennen.

    Schau mal im Roboternetz Shop http://www.shop.robotikhardware.de oder bei http://shop.embedded-projects.net
    Da gibts Platinen für einen ISP Programmer ab 6,60 oder so, müssen noch mit Teilen für 1,50 bestückt werden und in ein Parallelportgehäuse, fertig.

    Der Vorteil für dich wäre noch, dass AVR mit Bascom sehr oft auf deutschen Seiten besprochen wird und es viele Leute gibt, die dir helfen können. PICs sind häufiger englischsprachig vertreten.

    Die I2C Programmierung ist nicht wild, da PICs und AVRs Hardwaremodule haben. Du musst diese nur nach Datenblatt konfigurieren, eben wie du es willst, und kannst danach Daten schicken, indem du einfach das Byte in ein Register schreibst und ein Bit setzt.
    Empfangen wird ebenfalls per Hardware, du musst nurnoch regelmäßig abfragen, ob es schon ein neues Datenbyte gibt, oder kannst auch einen Interrupt aktivieren, der das automatisch beim Eintreffen behandelt. Das ist wirklich nicht schwer und wird auch in den Datenblättern gut beschrieben, ansonsten gibts hier ne Menge netter Helferlein.

    Die Steuerung des Servos funktioniert so, wie du sagtest, alle 20ms wird ein High-Pegel zwischen 1-2ms länge gesendet. 1,5ms ist Mittelstellung. Du kannst also einfach eine Warteschleife machen, die den Pin High schaltet und abhängig von einer Variablen die gewünschte Zeit abwartet und danach wieder Low schaltet. Das muss sich halt alle 20ms wiederholen. Den Wert der Variablen kannst du dann ins EEPROM schreiben.
    EEPROM schreiben ist nicht ganz so simpel (egal ob PIC oder AVR), da es einen Sicherheitsmechanismus gibt. Du musst zum schreiben eine bestimmte Befehlsreihenfolge einhalten. Das findest du aber auch im Datenblatt, für Assembler, kannst es einfach rauskopieren und in den Code einfügen. Bascom hat wieder fertige Routinen, die du aus einer Bibliothek nimmst.
    Würd mich freuen weiter von dem Projekt zu hören, und was du nun machen willst.
    MfG
    Björn

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    15.01.2008
    Beiträge
    16
    Hallo Björn

    Ich habe nun erstmal eine Menge zu lesen, dabei werden mit Sicherheit neue Fragen auftauchen. Über meine Ergebnisse werde ich berichten.
    Bis dahin bedanke ich mich schon mal für die vielen Anregungen.

    Gruß Rolf

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Nun könnte ich den Servo schrittweise so weit nach rechts und links fahren bis die Weich die Endlage erreicht hat.
    Ich würde vorsichtshalber die Kraft mechanisch begrenzen, z.B. mit einer Feder zwischen Servo und Weiche. Das würde die kleinen Ungenauigkeiten der Servos kompensieren und die Weiche vor Zerstörung schützen.


    Man könnte das vielleicht sogar über den Motorstrom des Servos selbst erfassen, das wäre sicher eine bequeme Lösung.
    Das habe ich mal mit einem 5€-Servo ohne zusätzliche Bauteile versucht. Das war zwar mit einem AVR, das Prinzip sollte aber auch mit einem PIC funktionieren:
    http://www.roboternetz.de/phpBB2/zei...ht=servosensor

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Hallo,

    die Begrenzung der mechanischen Kraft mit einer Feder würde ich vorsichtshalber vorziehen, wie es mic beschrieben hat.

    Wenn du in Basic die Programme schreiben willst, und erst mal Erfahrungen sammeln willst, dann empfehle ich dir die PICAXE-Chips.
    Da gibt es ein einfaches Starter-Set, und du kannst mit Basic arbeiten.

    Es gibt bei der PICAXE auch Befehle die eine einfache Servo-Steuerung
    ermöglichen.


    LINK: http://www.roboter-teile.de/Shop/the...id=61&source=2

    http://www.roboter-teile.de/modules.php?name=Forums

    http://www.picaxe.com

    Gruß Wolfgang

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    15.01.2008
    Beiträge
    16
    Hallo mic und Wolfgang,

    das verwenden einer Feder ist selbstverständlich.
    Bei meinen jetzigen Antrieben habe ich auch Federdraht um die Kraft auszugleichen.


    Auch bietet der Programm-Editor die Möglichkeit, Programme grafisch als Programmablaufplan zu entwerfen und dann in den Controller herunterzuladen
    Hört sich an wie FlowCode, wurde in der Zeitschrift Elector vorgestellt und es wurde auch in einigen Beiträgen verwendet.

    http://www.elektor.de/Uploads/Files/...FLC-60-3_1.pdf

    Gruß Rolf

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Achja, die PICAXE hab ich ganz vergessen. Wenn ich mich nicht täusche, sind das normale PICs mit vorinstalliertem Bootloader und einem "Basicinterpreter". Hab mich aber nie damit beschäftigt. Ich fand die Preise immer etwas hoch im Vergleich zu nackten Chips.
    Oder sind das PICs die du nurnoch per RS232 steuerst und garnicht mehr programmierst?

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •