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 !
Noch eine Ergänzung zur Info: Habe ein PICkit 3 und MPLAB X IDE und MPLAB IPE (je v5.50)
Du meinst Modellbauservos, oder? Dann kann das jede MCU mit mindestens zwei PWM-Ausgängen mit Leichtigkeit. Nimm einfach die, die Du hast.
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: > Brauche mindestens 5 INs und 3 OUTs. Schaltplan statt Prosa wäre besser gewesen...
Mathias Bähr schrieb: > - Habt ihr andere oder bessere Ideen zur Realisierung? Pololu Maestro USB Servo Controllers
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.
H. H. schrieb: > Schaltplan statt Prosa wäre besser gewesen... Sorry, Anfängerfehler ;-) Das ganze anbei als Bild ...
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.
:
Bearbeitet durch User
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.
Ja, Arduino wäre höchst preiswert und einfach. https://www.instructables.com/Sweep-Servo-Motor-With-Arduino-Nano/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.