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.
Mit Bild vom Aufbau, Schaltplan und dem angehängten Sourcecode wäre eine Hilfestellung wesentlich einfacher.
Schaltplan in dem Sinne gibt es nicht. Anbei der Code und ein paar Bilder des Aufbaus. Und ja ich weis das das Programm nicht ein Meisterwerk der Programmierkunst ist aber es hat funktioniert.
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ß!
Peter Wagner schrieb: > Dann habe ich noch > einen Schalter an einen Pin des Atmega angelötet danach war das Problem > da. An was für einen Pin wurde der angelötet? Drehen alle Servos falsch herum?
An PD5 des Atmegas und ja das Problem besteht bei beiden Servos
Ach zu erwähnen ist das der Schalter den ich meine nicht der "Ein Schalter" wie auf den Bildern zu sehen ist, sondern ein zusätzlicher Schalter der für zwei unterschiedliche Programm Modi zuständig ist.
Hast du schon mal versucht den Schalter einfach (mechanisch) um 180° gedreht einzubauen?
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.
Ja der Schalter schaltet nach gnd und ja es ist ein 470ohm widerstand eingelötet
Mach mal bitte noch ein Foto von der Platinenunterseite.
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
hier das platinenlayout und nein das sind die kabel die zum Kippschalter auf der Oberseite der box gehen. der neue schalter ist auf den Bildern noch nicht drauf da er erst später dazugekommen ist
Sag mal, irre ich mich, oder betreibst du das ganze Gestrüpp allen ernstes direkt an einem 9V Block?
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);
Magnus M. schrieb: > Mach mal bitte noch ein Foto von der Platinenunterseite. Ich habe nach einem FOTO gefragt.
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.
Magnus M. schrieb: > Magnus M. schrieb: >> Mach mal bitte noch ein Foto von der Platinenunterseite. > > Ich habe nach einem FOTO gefragt. Ok sorry. Ich mache schnell eins und nein es ist kein 9V Block sondern 4x 1,5 AA Batterien
hier das bild. ich hoffe es reicht. nach lötbrücken habe ich allerdings schon geschaut falls du danach suchst. Bei zwei Platinen wäre das auch ein sehr großer zufall
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)
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
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!
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.
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)?
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.
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.
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.
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
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)
Karl Heinz schrieb: > > oder schaltet auf Arduino ein digitalWrite den Pin auf Ausgang? (weiss > ich nicht, kann man aber nachlesen) Nein, passt schon. Der digitalWrite schaltet den Pullup ein.
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.
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.
>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.
K H schrieb:
>Manchmal fragt man sich wirklich.
Ähm. Wie machst Du das genau? Hast Du da mal eine Anleitung? :-)
ist ja ok aber da der aufbau eins zu eins der gleiche bis auf den besagten Schalter und dem abgeänderten programm ist bin ich davon ausgegangen das auch die bilder reichen
Peter Wagner schrieb: > Ja der Schalter schaltet nach gnd und ja es ist ein 470ohm widerstand > eingelötet Widerstand? Welcher Widerstand? Wenn du per Programm einen Pullup Widerstand eingebaut hast, dann willst du keinen externen Widerstand. Wie ist der verschaltet?
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
in reihe zu dem schalter auf der Oberseite der box. Ist der Widerstand welcher auf der Platine zu sehen ist
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)
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.
:
Bearbeitet durch User
Peter Wagner schrieb: > ist ja ok aber da der aufbau eins zu eins der gleiche bis auf den > besagten Schalter Quatsch mit Soße! Ein Beispiel im Anhang.
macht mich nur fertig. jaja. und tut mir leid das die brücken fehlen welche aber nur die Stromversorgung weiterbrücken. das mit gnd erschließt sich mir aber auch nicht ganz. soll für die Abschaltung der servos sein.
Magnus M. schrieb: > Peter Wagner schrieb: >> ist ja ok aber da der aufbau eins zu eins der gleiche bis auf den >> besagten Schalter > > Quatsch mit Soße! > > Ein Beispiel im Anhang. Das scheint OK zu sein. Ist auch auf der Originalwebsite so, dass Foto vom Layout abweicht.
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 ;)
Peter Wagner schrieb: > und tut mir leid das die brücken fehlen welche aber nur die > Stromversorgung weiterbrücken. Quatsch. Die Brücke würde eine Verbindung von Pin 14 zum Gate des MOSFETs herstellen. Wenn die fehlt, floatet das Gate.
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.
>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.
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
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.
>Hier wird von einigen ja alles auf die Goldwaage gelegt.
Ja. Wirklich seltsam, nicht wahr?
Muss das sein? Ansonsten könnte man ja zurück zum Thema kommen aber der Zug ist wohl abgefahren.
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.
:
Bearbeitet durch User
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?
Peter Wagner schrieb: > Allerdings vermute ich trotzdem das keiner wirklich sagen kann wie > Soetwas sein kann? Womöglich hast du den / die Controller gekillt.
Die überlegung hatte ich auch aber nachdem ich das Programm neu aufgespielt habe schließe ich das mal aus
Peter Wagner schrieb: > Allerdings vermute ich trotzdem das keiner > wirklich sagen kann wie > Soetwas sein kann? Nochmals, deinen Aufbau, genaus so wie er jetzt bei dir ist, sehe ich nicht. Foto, Schaltplan und wenn möglich der Code, wie er vor der Änderung war und funktionierte, würde helfen.
Peter Wagner schrieb: > Die überlegung hatte ich auch Aha. > aber nachdem ich das Programm neu aufgespielt habe ...und zu welchem Ergebnis kam... > schließe ich das mal aus Du schließt aus, dass der Controller Schaden genommen haben könnte? Warum?
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
Peter Wagner schrieb: > Und nachdem ich das programm neu aufgespielt habe ist gar nichts > passiert. --> Controller getötet. > Und woraus ich schließe das der Controller keinen schaden > genommen hatt ist das das bei meiner anderen platine genauso ist. --> Beide Controller getötet.
Sollte das Programmiergerät nicht erkennen wenn der IC platt ist? Und hier noch die Bilder von meinem Modell. Ich finde zwar immer noch die anderen besser aber villeicht hilft es ja weiter.
Peter Wagner schrieb: > Sollte das Programmiergerät nicht erkennen wenn der IC platt ist? Nur wenn er RICHTIG TOT ist. > Und hier noch die Bilder von meinem Modell. --> Bildformate > Ich finde zwar immer noch die anderen besser Ein hoffnungsloser Fall.
:
Bearbeitet durch User
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.
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.