Hallo zusammen,
ich habe folgende Frage:
Mit welchem Code kann ich bei dem Arduino Uno zwei Servomotoren zur selben Zeit ansteuern, sodass beide aber eine andere Bewegung ausführen? Ich habe schon an eine H-Brücke gedacht, das ist aber doch nur mit Gleichstrommotoren möglich, oder? Der eine Servomotor soll von 0° nach 90° gehen der andere dafür von 180° nach 90°. könnte mir jemand vielleicht einen Code geben oder einen hilfreichen Tipp? Der Hintergrund zu meiner Frage ist nämlich folgender: Ich bin gerade dabei einen Roboterarm für ein Schulprojekt zu entwerfen. Ein Servomotor soll am ende den ganzen Arm bewegen könnten, jedoch schafft ein Servomotor das nicht, das ganze Gewicht des Armes zu halten. Daher habe ich mir zwei Stück besorgt, die jeweils auf einer Seite des Arm stehen und eine gute und sichere Bewegung ermöglichen sollen. Daher müssen sich beide Servos auch gleichzeitig Bewegen.
Ich bin dankbar für eure Tipps!
Servos bekommen ein PWM-Signal.
Wenn Du also zwei Servos hast, die gegenläufig agieren sollen, brauchst Du zwei Pins, die PWM ausgeben.
Dann kommt es auf die EInbaulage an.
SInd beide gleich eingebaut, musst Du im setup() einen in die "Endstellung" 180° und den anderen in die Ausgangsstellung 0° bringen.
Durch gleichzeitige Änderung des PWM-Signals machen die dann ihren jeweils vorgesehenen Weg.
Okay, alles klar. Ich verstehe wie das gemeint ist. Schonmal Vielen Dank dafür! Wäre es vielleicht möglich, dass Du mir einen kleinen Programmcode dazu schicken kannst, damit ich sehen kann wie es aussehen kann/könnte?
Ich seh mal zu, ob ich das zu morgen nicht vergesse.
Mein Notebook ist fertig - und ich auch
Vielleihct findet sich auch noch wer...
[trotzdem] Vielen Dank
Hier ist ein Beispiel…. das sollte helfen.
ich verstehe das so du hast Modellbauservos.
Die sollen eine unterschiedliche Bewegung in der gleichen Zeit machen.
das kannst du meiner Meinung so machen:
hier bestimmst du über die gemeinsame Zeit wie schnell die Bewegung durchgeführt wird.
Jeder Servo teilt sich dann die Zeit für seine Bewegung selber ein.
schon der zweite Code - in einem Thread mit insgesamt 8 Posts - der extern liegt.
Prima.
Aber macht mal.
.
und beide Sketche funktionieren. Da wird sich @lasseleander schon was rauspicken können.
Darf ich auch mitspielen?
Diesmal mit MobaTools
Hier ist der Code
/*
move two servos combined
https://forum.arduino.cc/t/mehrere-servos-synchron-ansteuern/1030870/20
dynamic
by noiasca
2022-09-12
------------------------------------------------------------------------
Modifications
Hardware:
- rotate upper servo (B)
- remove switches, add poti
Software
- use MobaTools
- use poti to move
*/
#include <MobaTools.h>
constexpr uint8_t servoAPin = 8; // GPIO for Servo A
constexpr uint8_t servoBPin = 9; // GPIO for Servo B
constexpr uint8_t potiPin = A0; // analog input for poti to control movement
MoToServo servoA;
MoToServo servoB;
constexpr uint8_t servoSpeed = 30;
constexpr uint8_t servoMin = 0;
constexpr uint8_t servoMax = 90;
void setup()
{
Serial.begin(115200);
servoA.attach(servoAPin);
servoB.attach(servoBPin);
servoA.setSpeed(servoSpeed);
servoB.setSpeed(servoSpeed);
servoA.write(90);
servoB.write(90);
}
void loop()
{
// read poti
uint16_t potiValue = analogRead(potiPin);
static uint16_t lastPotiValue;
if (potiValue != lastPotiValue)
{
lastPotiValue = potiValue;
// map poti to desired servo movement
int angleValue = map(potiValue, 0, 1023, servoMin, servoMax);
// set servos
servoA.write(angleValue);
servoB.write(180-angleValue);
Serial.print(F("Poti :"));
Serial.println(potiValue);
Serial.print(F("Winkel A:"));
Serial.println(angleValue);
Serial.print(F("Winkel B:"));
Serial.println(180-angleValue);
}
}
Hier geht's zur Simulation
@noiasca Habe mich schamlos bei Deinem Wokwi-Bespiel bedient. Danke fürs Vorbereiten!
Wir hatten aber mal eine Absprache hier im Forum, dass Sketche nicht nur als Wokwi-Link, sondern auch hier in Codetags eingestellt werden.
Gruß Tommy
Vielen Lieben Dank an euch alle, dass ihr mir so schnell helfen konntet. Die Bewegung der Servomotoren funktioniert jetzt genauso, wie ich das haben wollte. Dankeschön
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.