2 Servos mit einem Schalter steuern

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • 2 Servos mit einem Schalter steuern

      Hallo Modellbauer,

      ist es möglich 2 Servos über einen Schalter auf der FB zu steuern ? Genauer gesagt soll es ein Schalter sein, der 3 Positionen hat und die Servos sollen sich wie auf dem Bild verhalten


      links dargestellt ist der Schalter auf der FB, rechts die 2 Servos


      Das heißt:

      Schalterposition 0 ==> Servo 1 und Servo 2 in Ausgangsstellung (gleiche Stellung)

      Schalterposition 1 ==> Servo 1 ist etwas verdreht (Stellung1) , Servo 2 bleibt aber stehen

      Schalterposition 2 ==> Servo1 bleibt auf Stellung 1 und Servo 2 bewegt sich auf "Stellung 2"


      Geht das über einen Mischer ? Oder brauch ich irgendeine Zusatzsoftware ?

      Müsste das über einen Kanal regeln da es praktisch ist und auch kein weiterer mehr frei ist.

      Vielen Dank und Grüße
      Gruß Daniel 8)


      Massey Ferguson is the best, forget the rest !

      Meine Modelle:
      Massey Ferguson 8480
    • Grundsätzlich schaut es schlecht aus würde ich sagen.

      Das einzige was mir noch einfällt und vielleicht funktionieren könnte wäre ein Mischer im Empfänger.

      Welche Fernsteuerung / Empfänger verwendest du ?

      Sonst gebe es nur eine Lösung mit einer externen Schaltung und Arduino aber denke sowas gibt es nicht fertig zu kaufen.

      Liebe Grüße aus Wien
      Franz
    • Hi Daniel,

      wie Franz schon schreibt geht das def. nicht über einen Kanal. Über zwei Kanäle wäre das kein Problem, zwei Mischer und eben beim Servo 2 die Ausgabewerte auf Schalterposition 1 und 2 bleiben gleich, ist z.B.: mit meiner Deviation Firmware aber auch mit wohl fast allen modernen Sendern kein Problem das zu programmieren.

      So nun aber zu Deinem Thema das ganze über einem Kanal zu steuern, ich würde da einen Arduinoproessor im Modell nehmen und den Empfängerkanal auswerten und damit zwei "neue" Servosignale erzeugen.

      Kannst Du einen Arduino programmieren? wenn ja dann wäre das die einfachste und billigste Lösung den einen "fertigen Mischer" im Empfänger kenne ich nicht der sowas kann

      Ich würde das Progranm so aufbauen:

      Ardunio Programm wrote:

      Hauptprogramm
      - Impuls vom Empfänger einlesen

      - Empfängerimpuls auswerten:
      - wenn kleiner als 1400ms dann Position 0
      - wenn zwischen 1401 und 1600 ms dan Position 1
      - wenn größer als 1601 ms dann Position 2
      - Loop Hauptrogramm


      drei Unterprogramme für jede Schaltposition

      Unterprogramm Schalterposition 0
      1. Servoimpuls erzeugen mit 1000ms
      2. Seroimpuls erzeugen mit 1000ms
      Sprung zurück ins Hauptgrogramm

      Unterprogramm Schalterposition 1
      1. Servoimpuls erzeugen mit 1500ms
      2. Seroimpuls erzeugen mit 1000ms (Servob bewegt sich also nicht)
      Sprung zurück ins Hauptgrogramm

      Unterpgramm Schalterposition 2
      1. Servoimpuls erzeugen mit 1500ms (1. Servo bleibt auf Orange)
      2. Servooimpuls erzeugen mit 200ms (2. Servo bewegt sich nun auf grün)
      Sprung zurück ins Hauptprogramm
      So sollte es gehen, im Programm muss Du aber die Positionen der Servos mit den ms festlegen, da hier feste Werte angefahren werden, man könnte aber auch mit dem Programm den Seroimpuls den man zum Auswerten eingelsen hat wieder als max Werte ausgebe, aber dann wird das Programm etwas schwieriger, so sollte es aber echt einfach sein.

      Gruß
      Wolfgang
      Mitglied im MSR Thalmassing Landkreis Regensburg e.V.
      Homepage MSR-Thalmassing
    • Hallo Danke für die Antworten

      Sorry vergessen: Fernsteuerung ist die Graupner MC20hott mit einem GR20 Empfänger (12 Kanal)

      crasy666 wrote:

      Hi Daniel,

      wie Franz schon schreibt geht das def. nicht über einen Kanal. Über zwei Kanäle wäre das kein Problem, zwei Mischer und eben beim Servo 2 die Ausgabewerte auf Schalterposition 1 und 2 bleiben gleich, ist z.B.: mit meiner Deviation Firmware aber auch mit wohl fast allen modernen Sendern kein Problem das zu programmieren.

      So nun aber zu Deinem Thema das ganze über einem Kanal zu steuern, ich würde da einen Arduinoproessor im Modell nehmen und den Empfängerkanal auswerten und damit zwei "neue" Servosignale erzeugen.

      Kannst Du einen Arduino programmieren? wenn ja dann wäre das die einfachste und billigste Lösung den einen "fertigen Mischer" im Empfänger kenne ich nicht der sowas kann

      Ich würde das Progranm so aufbauen:

      Ardunio Programm wrote:

      Hauptprogramm
      - Impuls vom Empfänger einlesen

      - Empfängerimpuls auswerten:
      - wenn kleiner als 1400ms dann Position 0
      - wenn zwischen 1401 und 1600 ms dan Position 1
      - wenn größer als 1601 ms dann Position 2
      - Loop Hauptrogramm


      drei Unterprogramme für jede Schaltposition

      Unterprogramm Schalterposition 0
      1. Servoimpuls erzeugen mit 1000ms
      2. Seroimpuls erzeugen mit 1000ms
      Sprung zurück ins Hauptgrogramm

      Unterprogramm Schalterposition 1
      1. Servoimpuls erzeugen mit 1500ms
      2. Seroimpuls erzeugen mit 1000ms (Servob bewegt sich also nicht)
      Sprung zurück ins Hauptgrogramm

      Unterpgramm Schalterposition 2
      1. Servoimpuls erzeugen mit 1500ms (1. Servo bleibt auf Orange)
      2. Servooimpuls erzeugen mit 200ms (2. Servo bewegt sich nun auf grün)
      Sprung zurück ins Hauptprogramm
      So sollte es gehen, im Programm muss Du aber die Positionen der Servos mit den ms festlegen, da hier feste Werte angefahren werden, man könnte aber auch mit dem Programm den Seroimpuls den man zum Auswerten eingelsen hat wieder als max Werte ausgebe, aber dann wird das Programm etwas schwieriger, so sollte es aber echt einfach sein.
      Gruß
      Wolfgang
      Das kann ich zwar nicht, werde mich aber mal einlesen , danke für die Beschreibung :top



      horstimac wrote:

      Mal V-Kabel 2 nachlesen, sollte das eigentlich können.
      Oder hier https://www.fechtner-modellbau.de/rc-artikel/servo-steller/
      Der Servonaut Trim schaut interresant aus, der sollte das können :rolleyes:
      Gruß Daniel 8)


      Massey Ferguson is the best, forget the rest !

      Meine Modelle:
      Massey Ferguson 8480
    • Moin, moin...

      Ich habe mal ein wenig gecoded.

      Das Programm ist for einen ATTiny85 ausgelegt. Soll es für ein Uno, Nano oder Mini sein, dann die Library "Servo8Bit" durch "Servo" ersetzen und die Pin Definitionen entsprechend anpassen.


      C Source Code

      1. /*
      2. Name: 2Servos.ino
      3. Created: 25.04.2019 11:11:13
      4. Author: Peter Hartmann
      5. */
      6. #include <Servo8Bit.h>
      7. Servo8Bit servo1;
      8. Servo8Bit servo2;
      9. #define PinInputChannel 0
      10. #define PinOutputServo1 1
      11. #define PinOutputServo2 2
      12. // Hier stellst du die Positionen der beiden Servos ein
      13. #define Servo1Position1 1500
      14. #define Servo1Position2 1700
      15. #define Servo2Position1 1500
      16. #define Servo2Position2 1300
      17. void setup()
      18. {
      19. pinMode(PinInputChannel, INPUT);
      20. pinMode(PinOutputServo1, OUTPUT);
      21. pinMode(PinOutputServo2, OUTPUT);
      22. servo1.attach(PinOutputServo1);
      23. servo2.attach(PinOutputServo2);
      24. }
      25. // Add the main program code into the continuous loop() function
      26. void loop()
      27. {
      28. unsigned long inputSignal = pulseIn(PinInputChannel, HIGH);
      29. if (inputSignal > 0)
      30. {
      31. // Kein Timeout, also auswerten
      32. if ((inputSignal > 1000) && (inputSignal <= 2000))
      33. {
      34. if (inputSignal < 1400)
      35. {
      36. // unterste Position (Position 0)
      37. servo1.writeMicroseconds(Servo1Position1);
      38. servo2.writeMicroseconds(Servo2Position1);
      39. }
      40. else
      41. {
      42. if (inputSignal < 1600)
      43. {
      44. // mittlere Position (Position 1)
      45. servo1.writeMicroseconds(Servo1Position2);
      46. servo2.writeMicroseconds(Servo2Position1);
      47. }
      48. else
      49. {
      50. // oberste Position (Position 2)
      51. servo1.writeMicroseconds(Servo1Position1);
      52. servo2.writeMicroseconds(Servo2Position2);
      53. }
      54. }
      55. }
      56. }
      57. // Ein delay ist nicht notwendig, das erfolgt bereits durch pulseIn()
      58. }
      Display All
      Bei einem ATTiny ist die Schltung recht simpel. Du verwendest 3 3-Pin Stiftleisten für die 2 Servoausgänge und den Eingang. Die Masse- und Plus-Pins verbindest du jeweils. An Plus und Minus kommt noch ein Elko zur Pufferung. Dann Plus und Minus an die jeweiligen Pins des Chips, das gleiche mit den Signal Pins.

      So wird der Chip mit über den BEC versorgt. Wichtig!!! Die BEC Spanung darf 5,5V nicht überschreiten, sonst wird der Chip gegrillt. Optional einen Spannugswandler einbauen.
    • gismow wrote:

      Moin, moin...

      Ich habe mal ein wenig gecoded.

      Das Programm ist for einen ATTiny85 ausgelegt. Soll es für ein Uno, Nano oder Mini sein, dann die Library "Servo8Bit" durch "Servo" ersetzen und die Pin Definitionen entsprechend anpassen.


      C Source Code

      1. /*
      2. Name: 2Servos.ino
      3. Created: 25.04.2019 11:11:13
      4. Author: Peter Hartmann
      5. */
      6. #include <Servo8Bit.h>
      7. Servo8Bit servo1;
      8. Servo8Bit servo2;
      9. #define PinInputChannel 0
      10. #define PinOutputServo1 1
      11. #define PinOutputServo2 2
      12. // Hier stellst du die Positionen der beiden Servos ein
      13. #define Servo1Position1 1500
      14. #define Servo1Position2 1700
      15. #define Servo2Position1 1500
      16. #define Servo2Position2 1300
      17. void setup()
      18. {
      19. pinMode(PinInputChannel, INPUT);
      20. pinMode(PinOutputServo1, OUTPUT);
      21. pinMode(PinOutputServo2, OUTPUT);
      22. servo1.attach(PinOutputServo1);
      23. servo2.attach(PinOutputServo2);
      24. }
      25. // Add the main program code into the continuous loop() function
      26. void loop()
      27. {
      28. unsigned long inputSignal = pulseIn(PinInputChannel, HIGH);
      29. if (inputSignal > 0)
      30. {
      31. // Kein Timeout, also auswerten
      32. if ((inputSignal > 1000) && (inputSignal <= 2000))
      33. {
      34. if (inputSignal < 1400)
      35. {
      36. // unterste Position (Position 0)
      37. servo1.writeMicroseconds(Servo1Position1);
      38. servo2.writeMicroseconds(Servo2Position1);
      39. }
      40. else
      41. {
      42. if (inputSignal < 1600)
      43. {
      44. // mittlere Position (Position 1)
      45. servo1.writeMicroseconds(Servo1Position2);
      46. servo2.writeMicroseconds(Servo2Position1);
      47. }
      48. else
      49. {
      50. // oberste Position (Position 2)
      51. servo1.writeMicroseconds(Servo1Position1);
      52. servo2.writeMicroseconds(Servo2Position2);
      53. }
      54. }
      55. }
      56. }
      57. // Ein delay ist nicht notwendig, das erfolgt bereits durch pulseIn()
      58. }
      Display All
      Bei einem ATTiny ist die Schltung recht simpel. Du verwendest 3 3-Pin Stiftleisten für die 2 Servoausgänge und den Eingang. Die Masse- und Plus-Pins verbindest du jeweils. An Plus und Minus kommt noch ein Elko zur Pufferung. Dann Plus und Minus an die jeweiligen Pins des Chips, das gleiche mit den Signal Pins.

      So wird der Chip mit über den BEC versorgt. Wichtig!!! Die BEC Spanung darf 5,5V nicht überschreiten, sonst wird der Chip gegrillt. Optional einen Spannugswandler einbauen.
      Wanhsinn, tausend dank, :res da muss ich mich jetzt erstmal einlesen :D


      knabber wrote:

      Hi,
      schreib doch mal, was Du damit machen möchtest.
      Ich könnte mir vorstellen, dass hier eine mechanische Lösung besser/einfacher ist.

      Gruß
      Herbert
      Ich möchte den Allrad zuschalten auf Stellung 1 und die Diffsperren auf Stellung2 zuschalten.

      Die Logik oder der Kompromiss dahinter soll einfach sein, dass man erst den Allrad verwendet wenns im Gelände nicht mehr geht und dann erst die Sperren. Was man ja in Echt grundsätzlich auch tut.
      Gruß Daniel 8)


      Massey Ferguson is the best, forget the rest !

      Meine Modelle:
      Massey Ferguson 8480
    • Hast du am GR-24 noch einen Anschluss frei?

      Wenn ja könnte es gehen da der GR-24 ja selber Mischer im Empfänger hat.

      Ich werde das mal versuchen.

      Zur Info fast alle Graupner Empfänger haben eingebaute Mischer.

      Servonaut TRIM schaut aber auch gut aus und könnte deine Lösung sein.

      Liebe Grüße aus Wien
      Franz