Hallo Zusammen,
meine Erfahrungen mit Programmieren und PICs sind schon sehr lange her
und daher eingerostet, bräuchte bisschen "Starthilfe".
Für die Modelleisenbahn möchte ich an verschiedenen Stellen kleine
Servo-Motoren einsetzen. Diese sollen sich "nur" zwischen zwei
Positionen hin und her bewegen. Die beiden Positionen müssen aber
individuell für jeden Servo eingestellt werden, die Einstellung der
Geschwindigkeit beim Wechsel von der einen zur anderen Position wäre
super.
Folgende Randbedingungen:
- Die Schaltung sollte relativ einfach sein, da sie mehrfach (ca. 10x)
aufgebaut werden muss, am besten interner Oszillator und Servo direkt
vom PIC ansteuern
- Die Schaltung sollte zwei Eingänge haben, "Pos 1" und "Pos 2", die
jeweils über einen 5V Impuls (ca. 0,5 sec) angesteuert werden. Manchmal
gibt es nur ein Eingangssignal, das bleibt dann so lange auf 5V wie der
Servo auf der anderen Position bleiben soll. Um nur eine Schaltung und
Software für beide Varianten zu haben wäre die Idee mit einem Jumper
"Rast" / "Tast". Steht der Jumper auf Tast gehen beide Eingänge auf den
PIC, Impulse schalten um. Steht der Jumper auf Rast bekommt der Eingang
2 dadurch dauerhaft 5V. Beim booten des PICs wird der Eingang 2 für 2-3
Sekunden abgefragt und damit die Software auf Rast bzw Tast gestellt.
Sollte es noch einen freien Eingang geben könnte der Jumper auch direkt
auf einen Eingang.
- Es sollte je einen Poti für den rechten Anschlag und einen für den
Drehwinkel geben
- Schön wäre ein weiterer Poti für die Geschwindigkeit, alternativ auch
hier ein Jumper für "Schnell" und "Langsam" (z.B. Wechsel innerhalb 3
Sekunden)
- Ein PWM Ausgang sollte zum Servo gehen
- Zwei Ausgänge sollten über jeweils eine LED den aktuellen Zustand
anzeigen (Pos 1 / Pos 2). Was die LEDs während dem langsamen Wechsel
anzeigen ist egal.
Nun zu den Fragen:
- Was für einen PIC würdet ihr dafür empfehlen?
- Seht ihr das als realistische und machbare Anforderungen?
- Habt ihr andere oder bessere Ideen zur Realisierung?
Im Voraus schon mal vielen Dank !
Hallo Walter Tarpan,
vielen Dank für die schnelle Antwort.
Warum zwei PWM Ausgänge?
Um die zwei Servo Positionen zu erreichen muss das PWM Signal verändert
werden, aber nicht zwei Ausgänge zu einem Servo, oder ?
Würde ein PIC 16F684 (nur ein CCP Out) reichen?
Oder müsste es mindestens ein PIC 16F873 sein?
DANKE
Mathias Bähr schrieb:> Was für einen PIC würdet ihr dafür empfehlen?PIC12CE529 oder ATtiny13 sprich: der kleinste SO8 uC, auch Padauk
PMS150C-S08 ist sehr fast ein PIC.
Am einfachsten programmiert sich das aber mit Arduino Modellbauservo
Library auf einem AVR.
> Seht ihr das als realistische und machbare Anforderungen?
Sicher.
> Habt ihr andere oder bessere Ideen zur Realisierung?
Modellbau ist prinzipiell eine gestörte Umgebung, in der man darauf
achten muss, dass auch bei Fehlanschluss und Fehlbedienung die Teile
heile bleiben. Das ist mehr Konstruktionsaufwand als der Rest.
MaWin schrieb:> PIC12CE529 oder ATtiny13 sprich: der kleinste SO8 uC, auch Padauk> PMS150C-S08 ist sehr fast ein PIC.
Wie kann ich mit einem 8 Pin Chip alle in den Randbedingungen
beschriebenen I/Os realisieren? Brauche mindestens 5 INs und 3 OUTs.
Oder mache ich einen Denkfehler?
Mathias B. schrieb:> Wie kann ich mit einem 8 Pin Chip alle in den Randbedingungen> beschriebenen I/Os realisieren? Brauche mindestens 5 INs und 3 OUTs.> Oder mache ich einen Denkfehler?
Ich denke
GND, VCC, Servoimpuls, In1, In2 und Analogeingang für Position1 und
Position 2 und Geschwindigkeit, macht 8.
Konfiguration geht über die Eingänge beim Einschalten der Versorgung.
Wie oft willst du die Endpunkte und Geschwindigkeit ändern?
Je mehr Hardware, um so früher fällt das System aus...
Die Positions- und Geschwindigkeitsparameter kann man schon länger im
(integrierten) EEPROM/NVRAM des Controllers speichern.
Signale schaltet man eigentlich auch nicht gegen (+), sondern gegen GND,
weil die Controller meist integrierte PullUp-Widerstände an den Portpins
besitzen.
Allerdings kenne ich mich nicht (mehr) mit PICs aus - die waren bei mir
Ende der 1990er aktuell (als Conrad noch eine der wenigen Lieferquellen
für Privatleute war, und wurden umgehend durch AVR ersetzt).
Ich hatte damals auf einem PIC16C84 (oder so) auch mal einen
Servo-Tester programmiert.
Ich denke auch, dass du die Parameter in den Pic bringst und dann
jeweils schreibst, wenn die Konfiguration geändert werden soll. Also
keine Schalter-Orgien und auch keine Analogeingänge für sowas wie
"Endposition-links". Wenn du die Servo-Programme nutzt, dann reduziert
sich alles auf das Festlegen der Parameter und das Speichern im EEprom.
Da du nicht schreibst, ob du eine analoge oder eine digitale Bahn hast,
kann man erst mal keine weiteren Tips geben. Wenn du allerdings diese
"Servo-Module" tatsächlich insulär einsetzen willst, dann mach das so
wie in deinem Entwurf. Bau ein Modul möglichst auf Lochraster auf und
spiele damit. Bedenke aber, dass dein Schaltplan noch kein endgültiger
Plan sein kann! Du hast jegliche Entstör- oder Stützkondensatoren nicht
eingezeichnet und auch die "richtige" Beschaltung der Analogeingänge
fehlt. Hier gilt was MaWin sagte...Modellbahn/bau bedeutet auch immer
eine gestörte Umgebung. Dein Servo soll schließlich keinen Steptanz
aufführen, wenn eine Lok vorbeirattert!
Viel Spass, Rainer
Mathias B. schrieb:> Warum zwei PWM Ausgänge?
Weil ich die Anforderung falsch gelesen habe. Ich hatte zuerst
verstanden: zwei Servos pro Controller.
Die Potis für die Anschläge sind wahrscheinlich der Teil, der von der
ganzen Aktion den größten Platz auf der Leiterplatte benötigt.
Mathias B. schrieb:> Würde ein PIC 16F684 reichen?
Klar. Der hat genug Pins, PWM und ADC.
Aber die Fragen klingen nach einem Erstlingsprojekt. Also steht und
fällt das damit, ein gutes Start-Tutorial zu finden. Als
Erstlingsprojekt ist das nicht übel. Ein klares Ziel und überschaubarer
Aufwand. Ob es gutes Lehrmaterial die PIC 16F684 gibt, weiß ich nicht.
Hallo,
habe da mal eine Servo-Steuereung gemacht, allerdings mit nRF2401,
könntest aber evtl. unerwünschtes ausklammern/streichen.
Hat als links-rechts-Fernsteuerung für Lenkung Modellschiff gedient.
Der Code funktioniert sicher auch mit einem PIC16F684, fallst du schon
so einen rumliegen hast, evtl. sind nur kleine Änderungen nötig.
Gruss Jochen-Paul
Vielen Dank an alle für die Antworten und Tipps !
Das Bild sollte keinesfalls einen Schaltplan darstellen, eher ein
"Wunsch-Blockschaltbild".
Der Platzbedarf für die Potis ist problemlos. Über eine grafische
Oberfläche könnte ich mir die Einstellung der Positionen über den
Computer vorstellen, aber in Assembler oder C stelle ich mir das bei der
Stückzahl eher aufwendig vor. Alle Positionen müssen bei der
Inbetriebnahme eingestellt werden und später vielleicht noch vereinzelt
ein bisschen angepasst werden.
Wenn ich das richtig verstanden habe ist PIC die ältere und eher auf
Assembler basierte Variante, AVR die neuere und eher auf C basierte
Variante, richtig?
Jeder Typ hat seine Vor- und Nachteile und es kommt eher ein bisschen
darauf an was man mag oder kennt, oder?
DANKE
Mathias Bähr schrieb:> Wenn ich das richtig verstanden habe ist PIC die ältere und eher auf> Assembler basierte Variante, AVR die neuere und eher auf C basierte> Variante, richtig?
Nein.
> Jeder Typ hat seine Vor- und Nachteile und es kommt eher ein bisschen> darauf an was man mag oder kennt, oder?
Ja.
Wenn deine Kenntnisse „schon sehr lange her und daher eingerostet“ sind
würde ich Dir einfach ein Arduino-Modul empfehlen - egal welche CPU.
Gibt es in allen Größen, Servo-Ansteuerungen sind als 2-5 Zeiler zu
realisieren. Sehr einfache IDE, sehr einfach handhabbar.