Regelkreis für Modellbauservo

Gast #7030334
Lesenswert?

Hi, ich möchte ein Modellbauservo selber bauen. Der Testaufbau ist 
folgender: Die Platine eines Modellbauservos wird ersetzt durch einen 
Arduino mit Fahrtenregler. Ich werde aus dem PID Regler nicht schlau, 
aber vlt. kann jmd. von euch einen funktionierenden Sketch hochladen?

Gruss
Gast #7030367
Lesenswert?

Es gab vor Jahren das Projekt OpenServo - vielleicht findest du in 
Web-Archiven noch entsprechende Unterlagen. Die Überlegung war zumindest 
für Standardservos eine programmierbare und flexiblere 
Ansteuerungsmöglichkeit zu haben (Robotikservos, Segelwinden, 
Alternative Einganssignal,...).
M.W. gab es auch Bausätze und Layouts bei diversen Anbietern (z.B. 
Sparkfung [2]). Ev. kannst du dich da inspirieren lassen...
Wenn es dir an den Grundlagen fehlt, kommst du um etwas Systemtheorie 
nicht herum. Das sollte sich aber mit einem Buch oder ein paar Seiten 
[1] im Netz lösen lassen.

[1]https://rn-wissen.de/wiki/index.php/Regelungstechnik#P-Regler
[2]https://www.sparkfun.com/products/retired/9014
Gast #7030689
Lesenswert?

Welche Aufgabe hat Pin 0 und Pin 3?

1
/********************************************************
2
 * PID Adaptive Tuning Example
3
 * One of the benefits of the PID library is that you can
4
 * change the tuning parameters at any time.  this can be
5
 * helpful if we want the controller to be aggressive at some
6
 * times, and conservative at others.   in the example below
7
 * we set the controller to use Conservative Tuning Parameters
8
 * when we're near setpoint and more aggressive Tuning
9
 * Parameters when we're farther away.
10
 ********************************************************/
11

12
#include <PID_v1.h>
13

14
//Define Variables we'll be connecting to
15
double Setpoint, Input, Output;
16

17
//Define the aggressive and conservative Tuning Parameters
18
double aggKp=4, aggKi=0.2, aggKd=1;
19
double consKp=1, consKi=0.05, consKd=0.25;
20

21
//Specify the links and initial tuning parameters
22
PID myPID(&Input, &Output, &Setpoint, consKp, consKi, consKd, DIRECT);
23

24
void setup()
25
{
26
  //initialize the variables we're linked to
27
  Input = analogRead(0);
28
  Setpoint = 100;
29

30
  //turn the PID on
31
  myPID.SetMode(AUTOMATIC);
32
}
33

34
void loop()
35
{
36
  Input = analogRead(0);
37

38
  double gap = abs(Setpoint-Input); //distance away from setpoint
39
  if(gap<10)
40
  {  //we're close to setpoint, use conservative tuning parameters
41
    myPID.SetTunings(consKp, consKi, consKd);
42
  }
43
  else
44
  {
45
     //we're far from setpoint, use aggressive tuning parameters
46
     myPID.SetTunings(aggKp, aggKi, aggKd);
47
  }
48

49
  myPID.Compute();
50
  analogWrite(3,Output);
51
}
Gast #7033163
Lesenswert?

Über Pin 3 (Ausgang), die Rückmeldung der Lage kommt über Pin 0 rein. Du 
kannst diese beiden Pins aber nach belieben tauschen.

Je nach Ansteuerung deines Servos musst du das Signal noch anpassen, 
genauso das des Sensors.

Erzähle mehr zu deinem Vorhaben und dir wird geholfen ;)

Prinzipiell kommunizierst du mit dem Regler über die drei variablen
1
double Setpoint, Input, Output;
Sollwert, Rückmeldung Sensor, Ansteuerung Motor
Gast #7033166
Lesenswert?

Günther schrieb:
> Hat jmd. einen Tipp?
>
> Gruss

So wie ich es verstanden hatte, möchtest DU ein Modelbauservo bauen.
Nicht WIR bauen es für dich.
Und wenn du ernsthaft Hilfe bei der Funktion und Arbeitsweise eines Pins 
brauchst, na da wünschen wir noch viel Spaß.

PS. Gerade noch mal das Datum geprüft, der 10. war kein Freitag. 
Seltsam.
Gast #7033238
Lesenswert?

Was genau meinst du damit?

Du hast 4 Baustellen:
- Motor ansteuern
- Sensor auslesen
- Beide Signale über den PID Regler verbinden.
- Ansteuerung/Sollwertvorgabe aus deinem System

Mach erstmal die beiden ersten Punkte, bis du dich sicher fühlst. Dann 
das dritte und zu guter letzt die Gesamtintegration.
Gast #7033264
Lesenswert?

Kannst du den Motor schon ansteuern? Dreht er sich ohne die 
"original-servo-platine"?
Wenn ja, wie hast du das realisiert?
Wenn nein, woran scheitert es?

Kannst du den Sensor bereits auslesen?
Wenn ja, sind die Werte plausibel?
Wenn nein, woran scheitert es?

Was ist überhaupt das Ziel? Willst du etwas lernen oder nur einen 
"kräftigen servo"? Was ist kräftig in Zahlen ausgedrückt? Was willst du 
damit erreichen, wenn nicht lernen das Ziel ist?
Gast #7033301
Lesenswert?

Günther schrieb:
> Ich möchte ein kräftiges Servo bauen

Oliver S. schrieb:
> Kauf dir ein fertiges Servo.

Ich denke das ist der einzige Weg, der in absehbarer Zeit zum Ziel 
führt. So wie du (Günther) hier kommuniziert, fehlt dir nicht nur das 
nötige Know-How an allen Ecken, sondern auch das Talent überhaupt etwas 
zu entwickeln. Falls ich das falsch einschätze, dann fehlt dir zumindest 
das Talent mit anderen Entwickler zu kommunizieren. Oder anders gesagt: 
So wie du fragst können wir dir nicht helfen.

Sehr wahrscheinlich ist dein Vorhaben zudem unwirtschaftlich. Solche 
Dinge kauft man fertig, selbst wenn man es selbst bauen und 
programmieren könnte.
Gast #7033309
Lesenswert?

Also ich muss sagen, der Thread entwickelt sich, hat fraglos Potential.
Wenn der Eindruck nicht völlig täuscht, dann dürfen wir in naher Zukunft 
noch einiges erwarten.
Kaffee ist reichlich vorhanden, Kekse, ja die muss ich später noch 
holen…
Ostern kommt!
Gast #7033313
Lesenswert?

Ich möchte aber selbstbauen. Ich möchte soll ist Wert Differenz bilden 
und anhand der Stellgrösse eine Pwm für den Auto Fahrtenregler ausgeben, 
weil wenig weg = wenig Power und viel Weg=viel Power. Bitte helft...
Gast #7033326
Lesenswert?

Ich wollte eine Messung des Potis und der Eingangs-Pwm, um eine 
Differenz zu bilden. Anhand der Differenzgrösse soll eine Pwm ausgegeben 
werden. Sind zwei Messungen mit Pwm Ausgang zuviel verlangt? Hat jetzt 
jmd. vlt. einen Tipp , wie man das schreibt?
Gast #7033337
Lesenswert?

Meinst du mit Fahrtenregler einen ESC, also einen Controller zum 
Ansteuern von BLDCs?
Meinst du mit PWM auch PWM oder ppm? Letzteres ist im Modellbau üblich.

Schreibe doch mal alle Komponenten auf, die du hast. SW und HW...
Gast #7033349
Lesenswert?

Das was du suchst ist ein Freelancer. Der bastelt deine Projekte gegen 
Geld für dich zusammen.

Günther schrieb:
> Ich wollte eine Messung des Potis und der Eingangs-Pwm, um eine
> Differenz zu bilden. Anhand der Differenzgrösse soll eine Pwm ausgegeben
> werden. Sind zwei Messungen mit Pwm Ausgang zuviel verlangt? Hat jetzt
> jmd. vlt. einen Tipp , wie man das schreibt?

Tipp:
1
in_pwm = deineFunktionZurMessungDerPWM();
2
out_pwm = Poti - in_pwm;
3
analogwrite(deinPin, out_pwm);
Gast #7033368
Lesenswert?

@ TO: Frag lieber im Arduino Forum. Die Wixxer hier warten hier nur auf 
Greenhorns um sich dann einen auf ihre überheblichen Antworten einen 
runterzuholen. Für Hinweise keine Zeit, aber für dämliche Kommentare 
reichts noch. Was für ein Scheißforum hier.
Gast #7033374
Lesenswert?

Du kannst den Motor also mit analogWrite() ansteuern?
Wie lautet denn die Produktbezeichnung deines Fahrtenreglers?

Günther schrieb:
> und was kommt in das void Setup und was kommt oben an den Anfang des
> Programms?


Zeig mal dein Programm, das kann man so nicht pauschal sagen.

oh je schrieb:
> Frag lieber im Arduino Forum.

Ich denke du bist der Selbe wie der TO.
Es steht zumindest fest, dass der TO keine Hilfe möchte, sonst würde er 
auf Rückfragen eingehen. Er versucht nur zu provozieren, indem er all 
das erfüllt, was in jedem Forum unerwünscht ist.
Gast #7033386
Lesenswert?

Günther schrieb:
> Mein Anliegen habe ich deutlich beschrieben.

Du willst ein fertiges Programm?
Du willst dass dir die Hardware ausgesucht wird?
Du willst nicht erklären was du bereits erreicht hast?
Du willst nichts fertig kaufen?
Du willst keinen Entwickler bezahlen?

Da passt doch einiges nicht zusammen...

Wir wissen bereits was du wirklich willst: Unruhe stiften und 
herumtrollen.
Gast #7033394
Lesenswert?

Hi,

guck dir mal das Video mal an.
https://www.youtube.com/watch?v=1WnGv-DPexc

Also den mechanischen Aufbau hast du alles schon ?
Sprich Motor, die Übersetzungen (Zahnräder),die 
Positionsbestimmung(Poti) und elektronik 
(Tiefpass,Comperator,Logik,Motortreiber)in deinem Fall 
Tiefpass,µController, Motortreiber ?

Dann sag mal welchen Controller du benutzt und dein Eingangspin 
(PWN-Ansteuerung quasi Positionsvorgabe) , Eingang (Poti feedback zur 
Positionsbestimmung) und die drei/vier Ausgäng (µController -> 
Motortreiber), dann kann ich dir ein paar Zeilen schreiben. bzw welchen 
Motortreiber willst du verwenden?

Du machst das zum lernen oder willst du dein selbstgebautes Teil 
irgendwo einsetzen, so dass es auch mehrere Jahre hält.

Gruß
hmm
Gast #7033414
Lesenswert?

Hi, das ist zum Lernen fürs Hobby. Ich habe hier einen Arduino Nano 
Mikrocontroller. Das Signal kommt auf Pin5. Ich schliesse den 
Elektromotor via Drehzahlregler an Pin 3 an. Das Poti kommt an  Pin A0.

Danke schonmals für die Hilfe ;)

Gruss
Gast #7033431
Lesenswert?

Das Signal kommt von einer Rc Fernsteuerung zum Empfänger und an Pin 5. 
Während Pin A0 und Pin 3 das Servo bilden. Ich habe leider kein 
Messgerät gerade hier. Über die Servo Bibliothek habe ich den Motor 
ansteuern können.
Gast #7033436
Lesenswert?

Dies ist der Code zur Erzeugung von Pwm Signalen.
1
/*
2
 Controlling a servo position using a potentiometer (variable resistor)
3
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
4

5
 modified on 8 Nov 2013
6
 by Scott Fitzgerald
7
 http://www.arduino.cc/en/Tutorial/Knob
8
*/
9

10
#include <Servo.h>
11

12
Servo myservo;  // create servo object to control a servo
13

14
int potpin = 0;  // analog pin used to connect the potentiometer
15
int val;    // variable to read the value from the analog pin
16

17
void setup() {
18
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
19
}
20

21
void loop() {
22
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
23
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
24
  myservo.write(val);                  // sets the servo position according to the scaled value
25
  delay(15);                           // waits for the servo to get there
26
}
Gast #7033441
Lesenswert?

Günther schrieb:
> Das Signal kommt von einer Rc Fernsteuerung zum Empfänger und an
> Pin 5.
> Während Pin A0 und Pin 3 das Servo bilden. Ich habe leider kein
> Messgerät gerade hier. Über die Servo Bibliothek habe ich den Motor
> ansteuern können.

Also ist das Signal von der Fernsteuerung und das zum Motor gleichartig?
Könntest du die beiden Signale miteinander verbinden und damit den Motor 
(ohne Arduino) über die Fernsteuerung ansteuern?
Gast #7033453
Lesenswert?

ups, hiermit aber:

#include <Servo.h> //Die Servobibliothek wird aufgerufen. Sie wird 
benötigt, damit die Ansteuerung des Servos vereinfacht wird.


Servo servoblau; //Erstellt für das Programm ein Servo mit dem Namen 
„servoblau“



void setup()

{

servoblau.attach(8); //Das Setup enthält die Information, dass das Servo 
an der Steuerleitung (gelb) mit Pin 8 verbunden wird. Hier ist natürlich 
auch ein anderer Pin möglich.

}



void loop()

{ //Im „loop“ wird über den write-Befehl „servoblau.write(Grad)“ das 
Servo angesteuert. Zwischen den einzelnen Positionen gibt es eine Pause, 
damit das Servo genug Zeit hat, die gewünschten Positionen zu erreichen.

servoblau.write(0); //Position 1 ansteuern mit dem Winkel 0°

delay(3000); //Das Programm stoppt für 3 Sekunden

servoblau.write(90); //Position 2 ansteuern mit dem Winkel 90°

delay(3000); //Das Programm stoppt für 3 Sekunden

servoblau.write(180); //Position 3 ansteuern mit dem Winkel 180°

delay(3000);//Das Programm stoppt für 3 Sekunden

servoblau.write(20); //Position 4 ansteuern mit dem Winkel 20°

delay(3000);//Das Programm stoppt für 3 Sekunden

}
Gast #7033458
Lesenswert?

Hi,

kannst du das bitte mal aufzeichen und die Arduino üblichen 
Pinbeschreibung dabei benutzen wie alles so miteinadner verbunden ist?

Aus den Codefetzen endnehme ich mal das du 0 - 180° Auslenkung haben 
willst.

Mit welcher Spannung wird der Poti zur Positonsbestimmung betrieben?

Fernbedienung ( PWM ) -> Controller -> Motortreiber -> Motor
                             |_____ -> Poti positionsfeedback

Wie machst du das mit vor und zurück fahren wenn du nur eine Verbindung 
zum Motortreiber hast (H-Brücke) ??

Gruß
hmm
Gast #7033463
Lesenswert?

und gib mal den Tastgrad (oder Zeit) von deiner Fernbedienung

Position : nichts betätigt      z.B 10ms
Position : knüppel ganz links   z.B  2ms
Position : knüppel ganz rechts  z.B 18ms

Es fehlen einfach noch so viele Informationen.

Du brauchst die Servo lib nicht.. du willst es doch eh selber machen. 
Die lib ist für fertige Servos die ein PWM Signal für Position erwarten.

Gruß
Gast #7033495
Lesenswert?

Programmiert mir jmd die Differen des Stellwegs und gibt eine Pwm aus? 
Dann reihe ich für jede Stellgrösse eine Pwm zu und habe einen einfachen 
Regler, der den Fehler wegregelt. Dann könnte man sich noch Gedanken 
machen wie bei schnellen äusseren Einflüssen auf den Elektromotor 
stärker reagiert werden soll.
Gast #7033498
Lesenswert?

Günther schrieb:
> Der Motor steht bei Mittelstellung des Potis, wodurch sich die
> Drehrichtung umkehren lässt.

wft was ?

Hast du dir das Video angeschaut ?

Du mixt glaub ich ein fertigen Servo der ein PWM Wert für die 
Positionierung erwartet, mit den Einzelnen komponenten woraus ein Servo 
besteht und verknotest das kanz komisch in deinem Kopf.

Welchen Motortreiber benutzt du ?

Grundsätzlich

Fernbedienung -> µController:
Am Controller kommt eine art PWM Signal an w die schalterstellung als 
Tastgrad unterschied abgebildet wird.

µController -> Motortreiber:
Hier muss es mindestens drei Signal Leitungen geben.
PWM linkslauf, PWM rechtslauf, (links oder rechts) aktivieren.

Positionspoti -> µController:
Gibt winkel über Spannungsverhältnis wieder.

Somit kommst du mit 2 Eingängen 1 Ausgang auf gar keinen Fall aus!

Versuch dir echt zu helfen, aber du machst es ein nicht leicht -.-

Gruß
hmm
Gast #7033504
Lesenswert?

Günther schrieb:
> Das Signal kommt von einer Rc Fernsteuerung zum Empfänger und an Pin 5.

https://www.arduino.cc/reference/en/libraries/ppm-reader/

das dekodiert das Signal vom RC und liefert den Sollwert für den 
Servoregler. Im ersten Schritt das Beispiel nehmen und sehen ob mit dem 
RC Sender die Werte empfangen und ausgegeben werden.

Wenn das PID Beispiel schon mit Poti und Motor funktioniert muss der 
Sollwert aus dem ppm-reader in der loop verarbeitet werden.
Gast #7033518
Lesenswert?

nuja irgendwie auch kein bock mehr ...

Tipps : pulsIn(Pin); kannst du benutzen für das Tastverhältnis der 
Fernbedienung (Position vom Knüppel). Gibt dir ein Zeitwert raus.

links Ausschlag -> zeit mit pulsIn(pin) (Knüppel gerade - Knüppel links) 
ist deine Position wo du hin willst. Das skallierst du auf 0-180°

Rückgabe über Positionspoti wär dann in dem fall mit analogRead(poti) ~ 
bei 0.
-> du must die zeitverhältnisse von der fernbedienung von links nach 
rechts skallieren auf die PotiWerte von ganz links 0 - 1023 ganz rechts.

µController -> Motortreiber muss nur richtige Richtung aktiviert werden 
und den zur gewünschten Potisteellung fahren lassen. Den DC Motor lässt 
man normalerweise immer in einer Geschwindigkeit laufen.

Ich kann dir kein Code Schreiben, da du mir die Tastverhältnisse für 
links , rechts und Mittelstellung nicht gibst und mir nicht verrätst 
welche Motortreiber du benutzt.

bye bye

Gruß
hmm
Gast #7033586
Lesenswert?

schrittweise vorgehen. Das ppm-reader Beispiel zum Laufen bringen und 
die Werte ausgeben.
Danach mit Servo den Fahrtenregler ansteuern. Dann den Sollwert aus 
ppm-reader skalieren und im PID Beispiel einsetzen.
Mehr nachdenken statt googlen.
#7033588
Lesenswert?

Oh Mann...

Leider hört das reine Popcorn-Essen und zugucken bei mir in dem Moment 
auf, wenn nicht nur der patzig fragende TO verarscht wird, sondern sich 
das ganze langsam mit echter Hilfe mischt und sich leider auch 
Mißverständnisse einschleichen.

PWM:
Quasi der übergeordnete Begriff für ein An-Aus-Signal, das sich zyklisch 
wiederholt und bei dem das zeitliche Verhältnis zwischen An und Aus 
variabel ist.
Die meisten hier verstehen unter PWM etwas, bei dem der Tastgrad von 
0-100% variiert, und eine angeschlossene LED (mit Vorwieeederstand!) 
zwischen ganz dunkel und ganz hell steuert. Oder eine Glühlampe oder 
einen Motor.

PPM:
Das spezielle PWM-Signal, das die Positionsinformation für einen 
Modellbau-Servo enthält.*
20ms Wiederholrate, meist zwischen 1,5 und 2,5ms An-Zeit für eine 
Servo-Drehung von 90°.

Auch Günther sollte sich diese Konvention angewöhnen, damit hier nicht 
dauernd Mißverständnisse entstehen.

* Eigentlich ist mit PPM sogar das Summensignal bei der Übertragung 
(analoger, alter) RC-Fernsteuerungen gemeint. Hier wurden die Pulsdauern 
von bis zu 7 Servos hintereinander in ein zu übertragendes Signal 
geschachtelt.
#7033596
Lesenswert?

An alle:

Günther hat bereits einen "Modellbau-Fahrtregler", der als 
Eingangsinformation ein PPM-Signal braucht und am Ausgang einen 
Brushless-Motor steuert, vor und zurück. STEUERT, nicht regelt. Das ist 
noch keine Positionsregelung. Die möchte Günther mit dem Arduino 
drüberlegen.

Die Feinheiten liegen darin:

1. Wie muß das PPM-Signal aussehen, damit der Motor stillsteht? Lernt 
der Regler das bei jedem neuen Einschalten? Dann muß das 
Arduino-Programm (Verzeihung, der Sketch) zunächst dieses 
"Neutral-Signal" ne Weile ausgeben, bevor er zur Regelung übergeht.

2. Kann der Regler nahtlos zwischen Vorwärts und Rückwärts umschalten? 
Viele Regler haben noch ne Bremssequenz oder eine Zwangspause 
dazwischen.
#7033602
Lesenswert?

Nun zum Sketch.

Ich weiß nicht, ob man die Sketches mit readPPM und Servo.h so ohne 
weiteres miteinander zusammenwürfeln kann.

Ich habe zumindest die Erfahrung gemacht, daß sich bereit die Servo.h 
und das Einlesen eines PPM-Signals mit pulseIn() gegenseitig stören.

Meine Lösung:
Scheiß auf diese Bibliotheken.
Ein schlichtes pulseIN() am Anfang der loop genügt als Einlesen des 
PPM-Signals.
Außerdem synchronisiert es den loop-Durchlauf automatisch auf die 20ms 
Wiederholrate des reinkommenden Signals.
Und als Ausgabe des PPM-Signals für den Fahrtregler ein schlichtes 
Bitbanging mit:
digitalWrite(Pin, HIGH);
delayMicroseconds(Pulsdauer);
digitalWrite(Pin, LOW);
Fertig ist der Lack.
(Firma: matzetronics) #7033605
Lesenswert?

Günther schrieb:
> Ich möchte aber selbstbauen. Ich möchte soll ist Wert Differenz bilden
> und anhand der Stellgrösse eine Pwm für den Auto Fahrtenregler ausgeben,
> weil wenig weg = wenig Power und viel Weg=viel Power.

Das ist aber kein Servo, sondern eben ein Fahrtenregler.
Kannst dir mal meine 2 Projekte diesbzüglich anschauen:
Beitrag "RC-Servoelektronik für DC-Motor"
#7033625
Lesenswert?

Günther,

hast Du tatsächlich schon einen Aufbau aus Brushless-Motor, Getriebe und 
angekoppeltem Poti?

Selbstgebaut?

Oder ist das bis jetzt noch die Mechanik eines zerlegten Potis, das 
zufällig einen Brushless-Motor drinhatte? (Sowas gibts, aber die 
Bezeichnung A2212 und 11,1V deuten eher auf einen einzelnen Motor als 
einen in ein Servo integrierten hin)

Und dann, schrittweises Vorgehen wie "Sechsersteckdose" ganz weit oben 
schon richtig schrieb:

1. Motor mit dem Regler zum Laufen bringen (erstmal direkt mit dem 
RC-Empfänger, dann mit dem Arduino, vielleicht nur ein kleines Sketch, 
das ihn kurz hin- und herlaufen läßt)

2. Poti-Wert auslesen und mit SerialWrite() als Debug an den PC 
zurückgeben - die Arduino-IDE hat einen schönen Plotter für eingehende 
Debug-Werte...

3. Mal ne schlichte Regelung auf einen festen Poti-Wert, vielleicht 
sogar am Anfang nur mit "if zuviel dann umdrehn"

4. Deine Kernfrage bearbeiten - den (zunächst festen) Sollwert mit dem 
Potiwert vergleichen und regeln. Zu diesem Zeitpunkt kannst Du dann uns 
Löcher in den Bauch fragen und Zwischenergebnisse posten.

5. Variablen Sollwert, vielleicht per SerialRead() vom PC vorgeben oder 
mit einem zweiten Poti an einem anderen Pin...

6. Variablen Sollwert aus deinem PPM-Signal vom Empfänger ableiten.
Gast #7034045
Lesenswert?

Komisch, daß Du Programmieren seit 15 Jahren vergessen hast, denn Du 
hörst Dich so hibbelig wie ein 15jähriger an...

Nimm erstmal einen normalen kleinen Servo statt dem Fahrtregler. Dem 
siehst Du die Position schöner an.

Dann schreibst Du in die Loop:
1
digitalWrite(Pin, HIGH);
2
delayMicroseconds(1500);
3
digitalWrite(Pin, LOW);
4
delay(18);

Das steuert den Servo fest mit Impulsdauer 1500us an, also etwa 
Mittelstellung. Die Wiederholrate von 20ms stimmt vielleicht nicht ganz, 
aber das sollte einem Servo nichts ausmachen.

Wenn Du nicht weißt, was Du für Pin schreiben mußt und was in die Loop 
soll und was in den Setup, dann lern es. Arduino-Grundlagen.

Dann mal andere Werte ausprobieren. Servos haben für den normalen 90° 
Stellweg 1000-2000us Pulsdauer. So ungefähr.

Dann als Zwischenschritt irgendwas, das die Einstellerei der Impulsdauer 
bequemer macht.
Z.B. ein Poti am Analogeingang einlesen und nebenbei den Wert als 
Debug-Information an den PC zurückschicken.
Weißt nicht wie das geht? Lern es.

Dann kannst Du mal den Fahrtregler dranhängen.
Mal sehen, welche Pulsdauer der für "Stop" braucht, und welche für 
Vollgas vor und Vollgas zurück.

Dann hast Du den Stellweg ermittelt, den Pulsdauerbereich, den Du dem 
Fahrtregler schicken mußt.

Aber Du mußt es schon selbst machen.

SCHRITTWEISE.
Gast #7034871
Lesenswert?

Günther schrieb:
> Hey, hättest du ein Programmbeispiel?

Warum sollen hier im Forum ProgrammBEISPIELE wiedergegeben werden, 
welche bereits in der Arduino-IDE vorhanden sind? Das ist doch sinnlos!

Weil dann vielleicht DEINE Anpassungen an DEINE Gegebenheiten ins 
Programm sollten?
DAS ist doch DEINE Sache!

DEINE Versuche klappen nicht? Na dann analysiere erstmal was DU genau 
erreichen möchtest UND beschreibe das in gängiger Terminologie UND 
Darstellungen (Code, Schemas, Diagramme, Fotos, Links zu Datenblätter, 
ZWISCHENERGEBNISSE usw.)


WENN das dann soweit geklappt hat, dass darin keine Widersprüche und 
keine (grobe) Lücken mehr sind, also auch wir das verstehen und keine 
weiteren Fragen mehr dazu haben, wirste merken dass:
- DU viel näher rangerückt bist, deine Vergessenslücke (zumindest 
teilweise) wieder SELBST schliessen zu können (also weniger Hilfe, 
zumindest weniger BANALHILFE, überhaupt brauchst)

UND
- HIER die Hilfe dir "besser"/unkomplizierter/motivierter 
entgegensprudelt, nicht zuletzt weil Du diese Hilfen dann auch besser 
verstehst ABER AUCH weil wir dank deiner vorgeleisteten 
Analyse-&Beschreibungsdokumentation zielgerichteter auf deine 
tatsächlichen Gegebenheiten eingehen können.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren