Servomotor dreht in die falsche Richtung

OP #3449275
Lesenswert?

Guten Abend,

ich bin gerade am verzweifeln. Wie der Betreff schon sagt habe ich das 
Problem das meine Servos die mit einem ATMega 328 angesteuert werden auf 
einmal in die genau andere Richtung drehen wie sie eigentlich sollten. 
Ich habe absolut keine Ahnung wieso das so ist. Noch etwas zum 
Hintergrund. Die Servos haben richtig herum gedreht. Dann habe ich noch 
einen Schalter an einen Pin des Atmega angelötet danach war das Problem 
da. Danach den Schalter wieder abgelötet, das Problem ist aber 
geblieben. Achja was auch noch ganz interessant ist, dass das ganze 
zweimal passiert ist. Damit meine ich, ich habe das Modell zweimal 
gebaut und bei beiden trat nach dem Schalter anlöten das Problem auf. 
Und was mich auch noch sehr verwundert, ein Freund von mir hat das 
Modell eins zu eins gleich aufgebaut und bei ihm funktioniert nach dem 
Schalter anlöten noch alles. Ich hoffe ich konnte das Problem ungefähr 
beschreiben. Vielleicht hat von euch jemand eine Idee. Ich begreif es im 
Moment einfach nicht warum das auf einmal so ist.
Gast #3449327
Lesenswert?

Sieht ziemlich nutzlos aus, was du da baust ;-)
ich hab  das ja noch klassisch mit einem ordinären bürstenmotor einem 
Wechsler und einem endschalter gebaut. Aber ich plane auch schon an der 
nächsten Variante mit Verrieglung und Hochspannung... Da werden es wohl 
sich servos. Viel Spaß!
Gast #3449352
Lesenswert?

Peter Wagner schrieb:
> An PD5 des Atmegas und ja das Problem besteht bei beiden Servos

Schaltet der Schalter nach GND? Und ist ein Pull-Up Widerstand nach 5V 
auch angeschlossen? Oder den internen Pull-Up einschalten, ansonsten ist 
der Eingang offen.

Oder Plus schalten auf den Eingang und einen Pull-Down Widerstand 
anschliessen.
Gast #3449379
Lesenswert?

Hallo Peter,

das Problem hatte ich auch einmal.

Hatte von Conrad zwei verschiedene Servos gekauft.
Einmal eine Billigvariante mit Kunststoffgetriebe und einmal mit 
Metallgetriebe. Da war noch ein Zahnrad mehr drin, zwecks 
Kraftübertragung.

Die Drehrichtung war genau entgegengesetzt.

Die Lösung für das Problem war aber simpel.

Gruß

Dirk
Gast #3449384
Lesenswert?

Der Pull-Up soll aber nicht in Serie zum Schalter sein, sondern eben als 
Pull-Up vom Eingang nach 5V geschalten.
Den kannst du sonst weglassen und schalte stattessen den interen Pull-Up 
ein mit:
pinMode(pin, INPUT_PULLUP);
OP #3449388
Lesenswert?

Dirk schrieb:
> Hatte von Conrad zwei verschiedene Servos gekauft.
> Einmal eine Billigvariante mit Kunststoffgetriebe und einmal mit
> Metallgetriebe. Da war noch ein Zahnrad mehr drin, zwecks
> Kraftübertragung.
>
> Die Drehrichtung war genau entgegengesetzt.


Danke für die Info. Ist gut zu wissen aber in diesem Fall vermute ich 
eher weniger das es so ist, da alle Servos vom gleichen Typ sind und wie 
gesagt auch schon "richtig" funktioniert haben.
Gast #3449409
Lesenswert?

Markus schrieb:
> Der Pull-Up soll aber nicht in Serie zum Schalter sein, sondern eben als
> Pull-Up vom Eingang nach 5V geschalten.
> Den kannst du sonst weglassen und schalte stattessen den interen Pull-Up
> ein mit:
> pinMode(pin, INPUT_PULLUP);


Gilt natürlich auch für den anderen Eingang Pin2, ansonsten kannst du 
ganz merkwürdige Effekte haben.
1
pinMode(2, INPUT_PULLUP);

(Und all deine ungenützten Pins am besten auch gleich)
Persönliche Seite #3449421
Lesenswert?

1. Dein Code passt nicht zur Beschaltung

2. Wenn du die Stromversorgung für die Servos über nen Transistor
   schalten willst, dann schalte (+) und nicht (-) !

3. Das Foto der Platinenunterseite passt nicht zum ersten Foto
   (http://www.mikrocontroller.net/attachment/200962/20130706_233418-1024x768.jpg)

4. Wo hattest du den zweiten Schalter angelötet?
   (markiere die Stelle bitte auf dem Foto)

5. Nimm dir den Rat bezüglich PullUp zu Herzen!
#3449422
Lesenswert?

Peter Wagner schrieb:

> Danke für die Info. Ist gut zu wissen aber in diesem Fall vermute ich
> eher weniger das es so ist, da alle Servos vom gleichen Typ sind und wie
> gesagt auch schon "richtig" funktioniert haben.

Es gibt bei Servos kein 'richtig' und kein 'falsch'.
In die Richtung in die es dreht, dreht es.

Mach doch keinen Aufstand.
2 Möglichkeiten:
* Drehst du eben im Programm die Zahlen um. Wenn man das ein wenig 
geschickt macht, macht man 2 zwischenfunktionen, in denen die Werte 
'umgedreht' werden und tauscht per Copy&Paste die Original-Aufrufe gegen 
die neuen aus
* Du machst dir Servos auf, lötest die beiden Kabel zum Motor um, lötest 
die beiden Kabel vom Poti um und dann dreht das Servo in die andere 
Richtung.


Auf jeden Fall ist das alles kein Grund zum verzweifeln. Die Sache ist 
so oder so in 10 Minuten behoben.
Gast #3449427
Lesenswert?

Peter Wagner schrieb:
> Könnte es wirklich daran liegen? Und falls ja wieso ausgerechnet
> jetzt?
> Ich habe die ungenützten Pins auf High gesetzt das sollte auch ja auch
> gehen?
> Fragen über fragen

Wie sieht der Controller sonst einen High-Pegel, wenn kein Pull-Up daran 
ist (oder intern eingeschalten ist)?
OP #3449428
Lesenswert?

Zu magnus beitrag. Die fotos sind aber alles die gleiche platine bis auf 
den zusätzlichen schalter.
Zu karl heinz beitrag. Ich weis das man es relativ einfach ändern kann 
aber mich würde es einfach interessieren warum das problem von einem 
moment zum anderen aufgetaucht ist.
#3449434
Lesenswert?

Karl Heinz schrieb:

> 2 Möglichkeiten:
> * Drehst du eben im Programm die Zahlen um. Wenn man das ein wenig
> geschickt macht, macht man 2 zwischenfunktionen, in denen die Werte
> 'umgedreht' werden und tauscht per Copy&Paste die Original-Aufrufe gegen
> die neuen aus

Du hast Glück im Unglück, dass sich deine ganzen Servopositionierungen 
auf diese Werte hier stützen
1
int S1fra = 1400;    // von   s1=Servo1
2
 int S1mid = 1800;    // Mitte
3
 int S1mid2 = 1580;
4
 int S1mid3 = 1640;
5
 int S1til = 2050;    // zu
6
 int S2fra = 1784;    //von    s2=Servo2
7
 int S2mid = 1200;
8
 int S2mid2 = 1000;   // Fast am Schalter
9
 int S2til = 770;

die 'dreht' man eben um und fertig ist die Schose.
1
#define MAX_SERVO 2200
2

3
 int S1fra  = MAX_SERVO - 1400;    // von   s1=Servo1
4
 int S1mid  = MAX_SERVO - 1800;    // Mitte
5
 int S1mid2 = MAX_SERVO - 1580;
6
 int S1mid3 = MAX_SERVO - 1640;
7
 int S1til  = MAX_SERVO - 2050;    // zu
8
 int S2fra  = MAX_SERVO - 1784;    //von    s2=Servo2
9
 int S2mid  = MAX_SERVO - 1200;
10
 int S2mid2 = MAX_SERVO - 1000;   // Fast am Schalter
11
 int S2til  = MAX_SERVO -  770;

Mit dem Wert von MAX_SERVO wird man ein wenig spielen müssen, bis die 
Mittenposition wieder stimmt, aber so wild ist das auch wieder nicht.
OP #3449436
Lesenswert?

Markus schrieb:
> Peter Wagner schrieb:
>> Könnte es wirklich daran liegen? Und falls ja wieso ausgerechnet
>> jetzt?
>> Ich habe die ungenützten Pins auf High gesetzt das sollte auch ja auch
>> gehen?
>> Fragen über fragen
>
> Wie sieht der Controller sonst einen High-Pegel, wenn kein Pull-Up daran
> ist (oder intern eingeschalten ist)?

Falls der befehl digitalWrite(entsprechender pin, HIGH)
dem pull up widerstand entspricht ja
#3449437
Lesenswert?

Markus schrieb:

> Wie sieht der Controller sonst einen High-Pegel, wenn kein Pull-Up daran
> ist (oder intern eingeschalten ist)?


?
Hat er doch
1
  pinMode(2, INPUT);    // Für die Schalterunterbrechung
2
  digitalWrite(2, HIGH);
3
  pinMode(pin, INPUT);    // Random Ein/Aus
4
  digitalWrite(pin, HIGH);

oder schaltet auf Arduino ein digitalWrite den Pin auf Ausgang? (weiss 
ich nicht, kann man aber nachlesen)
OP #3449441
Lesenswert?

ConvertsQuestionsToAnswers schrieb:
> Für alle die jetzt die Fotos hier:
> Beitrag "Re: Servomotor dreht in die falsche Richtung" anschauen, sollte
> man bemerken, das sie eigentlich von dieser Seite
> http://www.lamja.com/?p=451 stammen.
>
> Die einzige real beim TO vorhandene fotografische Wiedergabe dürfte in
> Beitrag "Re: Servomotor dreht in die falsche Richtung" zu sehen sein.

Klar stammen sie von der seite, denn von der seite hatte ich ja 
überhaupt die idee. Aber wie gesagt meine box und auch das programm habe 
ich  noch abgeändert.
#3449443
Lesenswert?

Peter Wagner schrieb:
> ConvertsQuestionsToAnswers schrieb:
>> Für alle die jetzt die Fotos hier:
>> Beitrag "Re: Servomotor dreht in die falsche Richtung" anschauen, sollte
>> man bemerken, das sie eigentlich von dieser Seite
>> http://www.lamja.com/?p=451 stammen.
>>
>> Die einzige real beim TO vorhandene fotografische Wiedergabe dürfte in
>> Beitrag "Re: Servomotor dreht in die falsche Richtung" zu sehen sein.
>
> Klar stammen sie von der seite, denn von der seite hatte ich ja
> überhaupt die idee. Aber wie gesagt meine box und auch das programm habe
> ich  noch abgeändert.

Schön.
Und wie erwartest du, dass man auf DEINEM Aufbau nach Fehlern suchen 
soll, wenn du keine Fotos von DEINEM Aufbau präsentierst?

Du gehst ja auch selber zum Onkel DOktor wenn dir etwas fehlt und 
schickst ihm kein Bild aus einem Buch, das eine belegte Zunge zeigt.

Manchmal fragt man sich wirklich.
Gast #3449445
Lesenswert?

>Klar stammen sie von der seite, ...

Sooo klar ist das durchaus nicht . Es geht hier nicht darum, das Du 
etwas nachbaust. Aber darum, das man bei einem technischen Problem genau 
DEINEN Aufbau sehen muss und nicht IRGENDEINEN.
#3449460
Lesenswert?

Peter Wagner schrieb:
> und nochmal zu karl Heinz. ich weis das es nicht der riesenaufwand ist
> das zu ändern aber mich hätte einfach interessiert wie es aufeinmal sein
> kann das von einer sekunde zur anderen die servos in die andere Richtung
> drehen

Das kann auch nicht sein.
Irgendwas hast du verändert.
allerdings hat es mit dem Schalter nichts zu tun, es sei denn du 
verwechselst momentan ganz einfach die Endpositionen des Schalters, der 
in Wirklichkeit einfach nur mechanisch um 180° zu drehen ist, was dir 
ausserhalb des Gehäuses schlicht und ergreifend nicht aufgefallen ist.

Aber ehrlich: Ehe man das aus dir rauskriegt und mit dir eine 
vernünftige systematische Fehlersuche betreibt, geh ich lieber den Weg 
des geringsten Widerstands: Dreh die kompletten Servebewegungen einfach 
um und gut ists.
OP #3449473
Lesenswert?

Magnus M. schrieb:
> Peter Wagner schrieb:
>> Aber wie gesagt meine box und auch das programm habe ich
>> noch abgeändert.
>
> Glückwunsch.
>
> - Was willst du mit dem Versuch Pin 8 (GND) auf Ausgang zu schalten
>   erreichen?
>
> - Warum versuchst du einen Schalter, welcher mit Pin 4 verbunden ist,
>   über Pin 2 abzufragen?
>
> - (diverse weitere Fehler)

Aber danke für den Sarkasmus. Übrigens ist der Schalter zwar mit dem 
realen Pin 4 verbunden aber wenn man mal die Pinbelegung des Atmegas328 
anschaut ist der vierte Pin PD2 ;)
Angehängte Dateien:
#3449480
Lesenswert?

Magnus M. schrieb:

> - Warum versuchst du einen Schalter, welcher mit Pin 4 verbunden ist,
>   über Pin 2 abzufragen?

Das muss nichts heissen

Er verwendet die Arudino Systematik, nach der die Pins Nummern tragen, 
die an nummerierten Stiftleisten zur verfügung stehen. Mit welchem 
Portpin dieser Stiftleistenpin dann tatsächlich verbunden ist, ist damit
1
  pinMode(2, INPUT);    // Für die Schalterunterbrechung
nicht ausgesagt und ich bin jetzt ehrlich gesagt auch zu faul, mir das 
aus den original Arduino Unterlagen rauszusuchen.
Gast #3449484
Lesenswert?

>macht mich nur fertig. jaja.

Man hat hier noch nicht mal im Ansatz begonnen, Dich fertig zu machen. 
Ich wundere mich schon selbst über meine vorsichtige, höfliche und 
freundliche Ausdrucksweise.

Ich gucke jetzt Muppets. Das ist meinem geistigen Niveau eher 
angemessen.
OP #3449485
Lesenswert?

Karl Heinz schrieb:
> Das kann auch nicht sein.
> Irgendwas hast du verändert.
> allerdings hat es mit dem Schalter nichts zu tun, es sei denn du
> verwechselst momentan ganz einfach die Endpositionen des Schalters, der
> in Wirklichkeit einfach nur mechanisch um 180° zu drehen ist, was dir
> ausserhalb des Gehäuses schlicht und ergreifend nicht aufgefallen ist.
>
> Aber ehrlich: Ehe man das aus dir rauskriegt und mit dir eine
> vernünftige systematische Fehlersuche betreibt, geh ich lieber den Weg
> des geringsten Widerstands: Dreh die kompletten Servebewegungen einfach
> um und gut ists.

Ja genau das dachte ich ja auch das es nicht sein kann. Tatsache war 
aber ich habe zwei Boxen. Beide haben funktioniert. Bei Box 1 wurde der 
Schalter angelötet und das Problem war da. Habe mir dann mal nichts 
weiter gedacht. Daraufhin habe ich Box 2 nochmal getestet. Hat noch 
funktioniert. Dann bei Box 2 den Schalter angelötet. Gleiches Problem 
wie bei Box 1. Schalter bei Box 2 wieder abgelötet. Problem blieb und 
ich habe ganz im ernst nichts gemacht auser diesen Schalter an PD 5 und 
Masse gelötet
OP #3449487
Lesenswert?

ConvertsQuestionsToAnswers schrieb:
>>macht mich nur fertig. jaja.
>
> Man hat hier noch nicht mal im Ansatz begonnen, Dich fertig zu machen.
> Ich wundere mich schon selbst über meine vorsichtige, höfliche und
> freundliche Ausdrucksweise.
>
> Ich gucke jetzt Muppets. Das ist meinem geistigen Niveau eher
> angemessen.

Genau das meine ich. Hier wird von einigen ja alles auf die Goldwaage 
gelegt.
#3449501
Lesenswert?

Peter Wagner schrieb:

> Hier wird von einigen ja alles auf die Goldwaage
> gelegt.

Gewöhn dich daran.
Denn genau DAS, das Geschrieben auf die Goldwaage legen, genau DAS macht 
dein µC auch. Die Programmiersprache "Do what I mean" ist noch nicht 
erfunden. Und bis dahin heisst es: "Do what I wrote". Und zwar bis in 
kleinste Detail. Wenn das nicht das ist, was du eigentlich wolltest, 
dann kannst du dich natürlich darüber beschweren, dass dein µC alles auf 
die Goldwaage legt. Nur wird den das nicht sonderlich beeindrucken.
Genauigkeit bis in kleinste Details ist das Um und Auf. Sowohl in der 
programmierung als auch in der Fehlersuche. Ganz besonders dann, wenn 
deine Helfer nichts anderes haben, als ein mentales Modell, dass sie aus 
dem erstellen müssen, was du ihnen gibst. Ist deine Beschreibung 
fehlerhaft, ist auch unser Modell fehlerhaft. Damit kann man keine 
Fehler suchen.
OP #3449515
Lesenswert?

Ok da hast du wohl recht. Manche sachen sind für mich einfach 
selbstverständlich aber wenn man sich erst in das projekt eines anderen 
eindenken muss ist das viel schwieriger. Sollte ich jemand auf die Füße 
getreten haben tut es mir hiermit leid aber man muss ja nicht gleich 
die rügenkeule auspacken. Allerdings vermute ich trotzdem das keiner 
wirklich sagen kann wie
Soetwas sein kann?
OP #3449539
Lesenswert?

Wie gesagt einen schaltplan gibt es so nicht. Das programm wie es 
funktioniert hat habe ich weiter oben geschrieben. Fotos kann ich noch 
machen. Und nachdem ich das programm neu aufgespielt habe ist gar nichts 
passiert. Und woraus ich schließe das der Controller keinen schaden 
genommen hatt ist das das bei meiner anderen platine genauso ist. Mir 
ist durchaus bewusst das das die möglichkeit natürlich nicht auschließt 
aber das wäre ein großer zufall
OP #3449629
Lesenswert?

Magnus M. schrieb:
> Peter Wagner schrieb:
>> Ich finde zwar immer noch die anderen besser
>
> Ein hoffnungsloser Fall.

Von der Übersichtlichkeit sind die anderen meiner Meinung nach besser 
aber man kann sich auch an Problemen stören wo gar keine sind. Und 
Entschuldigung das ich euch mit meinem Problem eure wertvolle Zeit 
gestohlen habe. Ich stimme zwar mit dem was karl Heinz gesagt hat 
überein aber man muss doch wirklich nicht alles so sarkastisch 
kommentieren. Nicht jeder hat die Erfahrung wie manch andere hier. 
Trotzdem danke ich allen für ihre Vorschläge, vor allem Karl Heinz.

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