Liebe Code-Experten, wir haben einen Code erstellt, kompiliert und hochgeladen ohne Fehler. Der Probelauf ist jedoch ohne Ergebnis, es erfolgt keine Reaktion der Stepper. Nur ein klicken. Der Stepper Code ist ohne Bibliothek ausgeführt. Ich kann einfach den Fehler nicht finden, hat jemand einen Tipp! Ich wäre sehr dankbar für jede Hilfe. Schöne Grüße Wilfried
:
Verschoben durch Moderator
1 | digitalWrite(MOTOR_LEFT_RIGHT_PULS, HIGH); |
2 | delayMicroseconds(motorMoveDelay); |
3 | digitalWrite(MOTOR_LEFT_RIGHT_PULS, LOW) |
Die Servos per Soft-PWM zu steuern ist keine so gute Idee. Mache das über eine Hardware-PWM oder nutze eine Bibliothek die das macht. Prüfe mit einem Oszilloskop die Servo-Signale. Beachte dass auch kleine Modellbau-Servos ziemlich hohe Spitzenströme ziehen; kräftige Versorgung ist nötig.
Wilfried M. schrieb: > hat jemand einen Tipp! Tipp 1:
1 | Forum: Projekte & Code |
2 | Hier könnt ihr Projekte, Schaltungen oder Codeschnipsel vorstellen. |
3 | Bitte hier keine Fragen posten. |
Tipp 2: es funktioniert im allgemeinen nicht, einen Code "fertig" zu schreiben und zu meinen, dass der dann "funktioniert". Sondern man muss Komponenten Schritt für Schritt in Betrieb nehmen. Also schreibe einen "Dreizeiler", der einfach nur die für den Schrittmotor nötigen Steuersignale ausgibt und nicht mehr. Dann hast du ein kurzes Programm, das auch leicht nachzuvollziehen und zu debuggen ist. Tipp 3: zeige einen Schaltplan deines Aufbaus. Tipp 4: hast du die ausgegebenen Signale auch mal gemessen, ob sie so kommen, wie du das erwartest?
:
Bearbeitet durch Moderator
Niklas G. schrieb: > Die Servos per Soft-PWM zu steuern ist keine so gute Idee. Wie kommst du von Stepper auf Servo? Wilfried M. schrieb: > es erfolgt keine Reaktion der Stepper. > Ich kann einfach den Fehler nicht finden, hat jemand einen Tipp! Vielleicht liegt es am Zusammenspiel von Software und Hardware. Die Schaltung alleine anhand eines Photos vom Aufbau zu erschließen, ist mindestens mühselig. Das nennt sich Debugging. Dass sich der Code fehlerfrei hochladen lässt, hat nur etwas mit der Syntax, aber nichts mit der Funktion zu tun.
:
Bearbeitet durch User
Niklas G. schrieb: > Die Servos per Soft-PWM zu steuern ist keine so gute Idee. Mache das > über eine Hardware-PWM oder nutze eine Bibliothek die das macht. Prüfe > mit einem Oszilloskop die Servo-Signale. Beachte dass auch kleine > Modellbau-Servos ziemlich hohe Spitzenströme ziehen; kräftige Versorgung > ist nötig. <offtopic> Ein Beispiel dafür, dass das Bewertungssystem nichts nützt. Eine Antwort die ganz klar nichts mit der Frage zu tun hat bekommt positiv Klicks. In anderen Threads bekommen die einzigen sinnvollen Antworten negativ Klicks. </offtopic>
Wilfried M. schrieb: > Ich wäre sehr dankbar für jede Hilfe Warum gibst du keinen Hinweis auf den verwendeten Schrittmotortreiber? Mir kommt der sogar bekannt vor. Nur habe ich mein Projekt damit auf STM32 realisiert.
Wilfried M. schrieb: > es erfolgt keine Reaktion der Stepper. N Vermutlich ist rightAverageLdr > leftAverageLdr aber nicht (rightAverageLdr-leftAverageLdr) > toleranceAverageLdr) Das müsstest du ja an deinen print Ausgaben sehen. Insgesamt ist das Verfahren und der code eine Katastrophe. Wenn man nicht gerade auf einem Schiff unterwegs ist, bewegt sich die Sonne zeitlich vorhersehbar um den Aufstellungsort. Du hast KEINERLEI Plausibiitätskontrolle drin und würdest auf einer Reflektion in die falsche Richtung drehen, kommst gar nicht von abend zu morgen und passt deine LDR überhaupt nicht an wechselnde Helligkeit an. Selbst wenn der code funktioniert, taugt er nicht. Deine if
1 | if (upperAverageLdr == lowerAverageLdr) |
2 | { // With similar measure, the motor is off. |
3 | stopMoveUpOrDown(); // Calling the motor stop method. |
4 | }
|
5 | |
6 | if (upperAverageLdr > lowerAverageLdr && (upperAverageLdr-lowerAverageLdr) > toleranceAverageLdr) |
7 | { // When a measurement is higher and the difference is greater than the toleranceAverageLdr, |
8 | movePanelUp(); // moves the horizontal motor in the corresponding direction by method call. |
9 | }
|
10 | |
11 | if (lowerAverageLdr > upperAverageLdr && (lowerAverageLdr-upperAverageLdr) > toleranceAverageLdr) |
12 | {
|
13 | movePanelDown(); |
14 | }
|
15 | |
16 | stopMoveUpOrDown(); |
haben einen riesen-Bereich (lowerAvderageLdr-10 bis upperAverageLdr+10) in dem GAR KEINE Bedingung erfüllt ist und du stoppst dann - genau dasselbe was im ersten überflüssigen if passiert ist.
:
Bearbeitet durch User
Michael B. schrieb: > Insgesamt ist das Verfahren und der code eine Katastrophe. ... und du hast dir das mit Sinn und Verstand durchgelesen. Respekt! Ich hatte schon nach dem ersten Scrollen schon keine Lust mehr. Jedes Projekt fängt doch zunächst mit der Fragestellung an, was will ich erreichen? Dann macht man sich Gedanken darüber, was man dafür braucht und wie die Sachen zu steuern sind. Dann schaut man sich Beispiele an, wenn man was noch nie gemacht hat und es Beispiele dafür gibt. Laufen die, dann kann man den Code dafür umschreiben. Aber man ist dann immer noch nicht da, dass das alles zusammen laufen soll. Wenn die Teile dann laufen, kann man die entweder als Funktion auslagern oder gleich eine Lib draus machen (man könnte sie doch öfter gebrauchen). Doch vielleicht hat das schon jemand gemacht (wo die Wahrscheinlichkeit sehr hoch ist) und man muss diese Lib nur einbinden. Dann braucht man vielleicht nur "rechts" oder "links" schreiben und der Motor läuft in diese Richtung.
:
Bearbeitet durch User
Wilfried M. schrieb: > Ich wäre sehr dankbar für jede Hilfe. Du könntest erstmal aufräumen. Wozu wird z.B. in movePanelRight() und movePanelLeft() fünftausendmal das Dir-Signal am Pin MOTOR_LEFT_RIGHT_DIRECTION neu gesetzt? Entsprechendes gilt für movePanelUp() und movePanelDown(). Da stimmt die Grundstruktur noch nicht. Braucht dein Schrittmotor keine Brems- oder Beschleunigungsrampe? Reicht die Pulsbreite von 5µs zur Ansteuerung deines (unbekannten) Treibers? Das sind alles Dinge, die du erstmal klären solltest, bevor du die Funktionen überhaupt in den Tracker einbaust.
:
Bearbeitet durch User
Habt bitte Nachsicht, bin 77 Jahre alt und es ist ein Hobby. Es wäre schön, mit eurer Experten-Hilfe die Stepper in Bewegung zu bringen. Anlage TB6600 und Stepper Schaltplan.
int motorMoveDelay = 5; //µs Hast du dir vielleicht einmal ein Datenblatt angesehen? 20kHz bei Taktverhältnis 25 high / 75 low 13kHz bei Taktverhältnis 50 / 50
Wilfried M. schrieb: > Habt bitte Nachsicht, bin 77 Jahre alt und es ist ein Hobby Das hindert dich aber trotzdem nicht daran, bei der Inbetriebnahme grundlegend systematisch vorzugehen. 1. Schritt: klebe auf die Schrittmotorwelle eines nicht montierten Schrittmotors ein kleines Stück Papier mit einer Spitze, damit du erkennst ob und wohin sich die Motorwelle bewegt. 2. Schritt: lass den µC weg und steuere einen (in Zahlen 1) der Schrittmotoren mit Tastern und Schaltern an. 3. Schritt: schreibe ein winziges Programm, das nur die 3 für einen Schrittmotor nötigen Signale so langsam ausgibt, dass du den Signalverlauf an LEDs mit dem Auge nachvollziehen und ggfs. sogar deren Pegel messen kannst. 4. Schritt: schreibe den obigen Dreizeiler so um, dass der 1 Schrittmotor schneller läuft. 5. Mache das Ganze ab Schritt 3 auch mit dem 2. Motor. 6. nimm auch die anderen angeschlossenen Bauteile mit solchen kleinen Programmen in Betrieb und stelle ihre Funktion sicher. 7. ... 999. Schritt: baue Schritt für Schritt die in Betrieb genommenen Komponetnen in dein Programm ein und gehe so Schritt für Schritt in Richtung Ziel. BTW: hast du irgendwelche Messmittel, mit denen du kontrollieren kannst, ob deine Software das tut, was deine Hardware benötigt. BTW2: in deinem Aufbau sehe ich ein grundlegendes Problem bei der Verdrahtung. Die Masseführung ist nicht nachvollziehbar und augenscheinlich völlig beliebig. Die Schrittmotoren werden dir das hochohmige Signal der LDR ganz ordentlich verstören.
:
Bearbeitet durch Moderator
Wilfried M. schrieb: > Habt bitte Nachsicht, bin 77 Jahre alt und es ist ein Hobby. Es wäre > schön, mit eurer Experten-Hilfe die Stepper in Bewegung zu bringen. > Anlage TB6600 und Stepper Schaltplan. Klar, immer gerne. Nur ich lese keinen Arduino-Code. Und die anderen hier kennen vielleicht nicht die Ansteuerung des Motortreibers. Möchtest du die nicht in ein paar Sätzen erläutern? Wie sind die DIP-Schalter gesetzt?
Wilfried M. schrieb: > Anlage TB6600 Den kenne ich nicht, aber von den Dingern sind unzählige Varianten im Umlauf, die wahrscheinlich alle sehr ähnlich angesteuert werden. Ist Dir bewußt, dass der ENA Eingang NICHT aktiviert werden darf, wenn der Motor fahren soll?
Gunnar F. schrieb: > ich lese keinen Arduino-Code Na, okay... Ich sehe MotorMoveDealay= 5us. Das scheint viel zu schnell. Mach mal eher 5ms daraus.
Gunnar F. schrieb: > Nur ich lese keinen Arduino-Code. Brauchst du die main() dazu, oder was fehlt dir zum Verständnis? Ganz grob wird dort der Timer0 initialisiert, einmal setup() aufgerufen und ansonsten in der Endlosschleife u.a. loop() aufgerufen. Oder hat du einfach eine Aversion gegen die Fileextension ".ino"? ;-) Dann ersetze sie in Gedanken durch ".c++" Geh einfach davon aus, dass pinMode() einen Pin konfiguriert (Datenrichtung und Pull-up), dass digitalWrite() einen Pin auf low oder high setzt und dass digitalRead() den Zustand eines Pins einliest. Irgendetwas vergessen - dann frag einfach konkret nach.
Wilfried M. schrieb: > Habt bitte Nachsicht, bin 77 Jahre alt und es ist ein Hobby. Und 77 Jahre haben nicht ausgereicht, die Grundlagen des Bastelns mitzubekommen, in einfachen Schritten, jeden getestet, langsam zu Ziel zu kommen ? Man rotzt nicht 100 Zeilen code raus von dem man nur glaubt dass es der richtige war und wundert sich dann warum nichts läuft. Also ein Test für Linkslauf ein Test für Rechtslauf, einfach mal ein Blick auf die selbst reinprogrammierten Debug-Ausgaben damit man sieht wo das Programm langläuft (wenn es überhaupt läuft) scheint schon zu viel verlangt zu sein.
Michael B. schrieb: > Man rotzt nicht 100 Zeilen code raus von dem man nur glaubt dass es der > richtige war und wundert sich dann warum nichts läuft. An dir ist die gute Kinderstube wohl spurlos vorbei gegangen. Musst du denn immer blöd auffallen?
Rainer W. schrieb: > Brauchst du die main() dazu, oder was fehlt dir zum Verständnis? Nein, das liegt nicht am Verständnis. Ich mag Arduino nicht, hatte mich da mal für einen Tag eingearbeitet. War begeistert, wie schnell damit die vielen kleinen China-Gadgets verwendet werden können. Gestört hat mich die mangelnde Transparenz des Frameworks. STM32 ist dann zu meiner Wahl geworden. Aber in Anbetracht der Vorposter zu dem Code und dass ich hier zumeist vom Handy aus unterwegs bin, deswegen wollte ich den Code nicht gründlich studieren. Und ich hätte mir dazu auch mehr Zu- oder Mitarbeit vom TO gewünscht. Was ist, Wilfried? Hoffe, Du hast Dich nicht entmutigen lassen!
von Michael B. (laberkopp) 08.11.2024 14:16 Lieber Michael, auf diese Klugscheißer Kommentare kann das Forum sicherlich verzichten. Wenn du deine Zeit damit verbracht hättest, mir nachvollziehbare Fehler im Code auf zu zeigen und Verbesserungsvorschläge gemacht hättest, wäre das sicherlich im Sinne des Forums gewesen. Anscheinend sind deine Kenntnisse auch nicht viel besser, um mir zu Helfen. Schöne Grüße Wilfried
Hallo Wilfried, mein Rat wäre: Suche im Internet ob es in und um Deinen Wohnort eine Fablab oder einen Makerspace gibt. Dann zu Öffnungszeiten dort mit dem ganzen Projekt in der Hand mal vorbeigehen. Da gibt es mit recht hoher Wahrscheinlichkeit Tips. Je nachdem zeigen Dir dort Leute eigene ähnliche Projekte, oder geben Dir brauchbare Code-Schnipsel. Allerdings darfst Du nicht erwarten, dass Dich gleich jemand an die Hand nimmt und komplett Duch Dein Projekt führt. Eigeninitiative bleibt gefragt, diese Einrichtungen verstehen sich nicht als Reparaturbetrieb für kaputte Projekte. Gut ist, wenn Du in einer solchen Community auch das ein oder andere beisteuern kannst, dass muss gar nichts mit Programmieren oder Elektronik zu tun haben, sondern kann aus zahlreichen anderen Bereichen kommen.
Wilfried M. schrieb: > von Michael B. (laberkopp) > 08.11.2024 14:16 > > Lieber Michael, auf diese Klugscheißer Kommentare kann das Forum > sicherlich verzichten. > Wenn du deine Zeit damit verbracht hättest, mir nachvollziehbare Fehler > im Code auf zu zeigen und Verbesserungsvorschläge gemacht hättest, wäre > das sicherlich im Sinne des Forums gewesen. Anscheinend sind deine > Kenntnisse auch nicht viel besser, um mir zu Helfen. > Schöne Grüße Wilfried Aber er hat schon Recht. Wenn man Anfänger ist als Kapitän, fährt man ja auch nicht gleich einen Ozeanriesen. Und auch ich, nur etwas jünger, habe halt im Beruf gelernt, mit kleinen Bausteinen anzufangen und dann immer weiter dazuzubauen, bis das Ganze dann läuft!
Wolfgang K. schrieb: > Suche im Internet ob es in und um Deinen Wohnort eine Fablab oder einen > Makerspace gibt. Oder sag mal wo Du wohnst. Vielleicht in meiner Nachbarschaft?
Wilfried M. schrieb: > Anscheinend sind deine > Kenntnisse auch nicht viel besser, um mir zu Helfen. Nein, Michael hat sogar sehr viele Kenntnisse. Aber sonst ist er auch nicht so. Sei es drum. Ich schrieb ja schon weiter oben, wie ich anfangen würde. Da ist bei Arduino immer eine gute Anlaufstelle Arduino.cc. Hier ist dann auch etwas über Stepper Motoren und ihrer Ansteuerung zu lesen. Ebenso die "übliche Hardware". Vielleicht schaust du einmal hier: https://docs.arduino.cc/learn/electronics/stepper-motors/ Bei eBay findest du dann auch Treiber, mit genau den ICs, die dort angegeben sind.
:
Bearbeitet durch User
von Gunnar F. (gufi36) 09.11.2024 15:13 Hallo Gunnar, mein Wohnort ist 48317 Drensteinfurt. Gern auch per Mail oswm@outlook.de Schöne Grüße Wilfried
Ich kenne so etwas als Debuggen. Da baut man ein Menge printf() in den Code ein, und ruft händisch erst einmal einzelne Funktionen (so was wie ..MoveLeft..) auf. Ich mache das schon beim Erstellen, dass ich erst weiter mache, wenn ich weiss, dass die unteren Funktionen laufen. Erst dann werden Haupt-Funktionn implementiert.
von Gunnar F. (gufi36) 10.11.2024 08:57 Meine mechanische funktionsfähige Modellanlage stand ca. 1 Jahr in der Werkstatt FabLab Hamm und hat kein Interesse für die Arduino Programmierer geweckt. Andere Projekte waren immer wichtiger. Im Prinzip geht es doch nur über die Kalkulation der LDR`s die Stepper horizontal und vertikal in Bewegung zu setzen und Gleichgewicht der LDRseiten herzustellen. Ohne oder mit Stepper.h; AccelStepper.h Bibliothek, was ist die beste Variante und wie? Deswegen meine Versuche über Foren Hilfe zu bekommen. Schöne Grüße Wilfried
Wilfried M. schrieb: > Schöne Grüße Wilfried Okay das erläutert einiges, geht aber am Kern vorbei. Wir haben schon einige Fragen gestellt. Wenn du die mal alle ordentlich beantwortest, kämen wir sicher weiter. Wie funktioniert der Controller? Ist das ein Schritt pro Puls und das Direction-Signal? Geh in Vorleistung und lege so viele Fakten auf den Tisch, wie du kannst. Was und wie kannst du, bzw. hast du schon gemessen?
Wilfried M. schrieb: > Im Prinzip geht es doch nur über die Kalkulation der LDR`s die Stepper > horizontal und vertikal in Bewegung zu setzen Eben nicht. Vermutlich wollte nur keiner der Arduino-fähigen einem alten Mann erklären, dass er sein Leben lang einem Irrtum aufsass. Und das nicht mal merkt wenn er drauf hingewiesen wird. Desweiteren ist das Problem eines Solar trackers nicht 2 Motoren sondern eine mechanische Solidität die zumindest 10000 Drehungen ohne relevanten Verschleiss schafft und ohne dabei mehr Antriebsenergie zu verbraten als sie einbringt - was bei Schrittmotoren die auch im Stillstand Strom brauchen schon mal ausgeschlossen ist. Kluge Leute (Astronomen) nutzen daher solare Montierung und müssen am Tag nur eine Achse drehen.
Michael B. schrieb: > Kluge Leute (Astronomen) nutzen daher solare Montierung und müssen am > Tag nur eine Achse drehen. Na, da werden sich ja alle mit 'nem Dobson Mount instantan über deinen Kommentar freuen!
Michael B. schrieb: > Kluge Leute (Astronomen) nutzen daher solare Montierung und müssen am > Tag nur eine Achse drehen. Astronomen nutzen heutzutage genauso azimutale Montierungen, die über zwei Schrittmotoren gesteuert werden. Auch wissen sie, dass man den Haltestrom durch die Schrittmotoren kräftig reduzieren kann, wenn hinter dem Schrittmotor ein selbst hemmendes Getriebe folgt. Die Zeiten, wo ein Teleskop über einen Synchronmotor auf der Stundenachse nachgeführt wird, sind bei aktuellen Teleskopen definitiv vorbei. Was ist im übrigens eine "solare Montierung"? Die Sonne hat mit der von dir beschriebenen Montierung nun wirklich gar nichts zu tun. Hier ein größeres Teleskop mit azimutaler Montierung, dass sich gerade im Aufbau befindet https://elt.eso.org/ Mach doch einfach den Nuhr, wenn es um Themen geht, von denen du keine Ahnung hast.
:
Bearbeitet durch User
Rainer W. schrieb: > Die Zeiten, wo ein Teleskop über einen Synchronmotor auf der > Stundenachse nachgeführt wird, sind bei aktuellen Teleskopen definitiv > vorbei. Rainer W. schrieb: > Hier ein größeres Teleskop Ganz bestimmt arbeitet das nicht mit Schrittmotoren. Aber du wirst es besser wissen. Glaubst du.
Hallo Wilfried, mach es so wie es Lothar hier Beitrag "Re: Code Solartracker" beschrieben. Das dürfte der zielführendere Weg sein. Warum sperrst Du Dich eigentlich so gegen diesen Vorschlag? Mache einfach mal ein neues Projekt auf und schreibe die Routine für den (einen) Stepper. Das sind viel weniger Codezeilen als das Gesamtprojekt, so daß man da eher den Überblick behält. Erst wenn alle Einzelkomponenten wie gewünscht funktionieren macht man daraus das Gesamtprojekt. Diese Vorgehensweise führt i.d.R viel schneller zum Ziel als man denkt und es ist auch viel einfacher bei kleinen Projekten Hilfe zu bekommen, weil sich der Helfende in dem kleineren Code besser und schneller zurecht findet.
Michael B. schrieb: > Ganz bestimmt arbeitet das nicht mit Schrittmotoren. Der Link bezog sich auf deine "solare Montierung"
:
Bearbeitet durch User
Wilfried M. schrieb: > Im Prinzip geht es doch nur über die Kalkulation der LDR`s die Stepper > horizontal und vertikal in Bewegung zu setzen und Gleichgewicht der > LDRseiten herzustellen. Nein, im Prinzip geht es erst mal darum, dass du so einen Schrittmotor überhaupt einmal von (d)einer Software aus bewegt bekommst. Denn dein Problem ist ja nicht, dass sich die Schrittmotoren falsch drehen, sondern dass die sich überhaupt nicht drehen. > was ist die beste Variante und wie? Ich habe es bereits 2x beschrieben wie ich erfolgreich schon viele komplexe Systeme in Betrieb genommen habe: teile und herrsche! Und nochmal: zeichne eine Schaltplan. Es ist kein Wunder, dass keiner dein Modell in Betrieb nehmen will. So ganz ohne Schaltplan und ohne Informationen zur Verdrahtung würde ich so ein Ding auch nicht anfassen. Wenn ich das Ganze machen müsste, dann würde ich zuallererst so einen Schaltplan zeichnen, mit dem später auch andere etwas anfangen können.
von Lothar M.; von Hans ; von Gunnar F. Danke für eure Hinweise. Als Anlage die Beschreibung, Schaltplan und PIN Liste. Die Messwerte der LDR´S waren einwandfrei auch bei Lichtänderung. Ein Stepper-Test mit AccelSteper.h war sehr gut, aber dann müsste der Code umgeschrieben werden. Schöne Grüße Wilfried
Wilfried M. schrieb: > Als Anlage die Beschreibung, Schaltplan und PIN Liste. Das ist immer noch kein richtiger Schaltplan und erkennen kann man da nicht wirklich was. Glaubst Du wirklich das hier irgendeiner sich durch Deine Pintabelle wuselt und sich am Ende daraus einen Schaltplan generiert? Das wird definitiv nicht passieren. Wilfried M. schrieb: > Die Messwerte der LDR´S waren einwandfrei auch bei Lichtänderung. Die LDR's sind für's erste mal komplett außen vor. Lothar hat hat's doch korrekt geschrieben, daß man erst mal sehen muß das sich wenigsten einer der Stepper per Code bewegen läßt. WEnn das funktioniert kann man überprüfen was die LDR machen. Mir schein Du bist recht beratungsresident und willst Dir nicht wirklich helfen lassen. Oder ist es Altersstarrsinn? Ist ja in Deinem Alter auch nicht weiter schlimm. Trifft uns irgendwann alle mal.
Wilfried M. schrieb: > Anlage die Beschreibung Beschreibung ? Blöd, wenn der Text nicht zum dabeistehenden code passt. Beispielsweise steht im Text kein Wort was der Unsinn mit apagado_hor();=stopMoveUpOrDown() soll. Auch steht im Text 'bis' also while und in code 'if'. etc pp. > Schaltplan Schaltplan ? Unverbundene Teile. Wie wäre, sie zu verbinden ? Zu mühsam ? Soll sich der Leser gefälligst richtig denken (und schon kann einem niemand die eigenen Fehler aufzeigen).
Wilfried M. schrieb: > Ein Stepper-Test mit AccelSteper.h war sehr gut, aber dann müsste der > Code umgeschrieben werden. Ja, genau das müsste er. Und wie gesagt: die Inbetriebnahme erst mal so, dass da gar keine fertige unbekannte Bibliothek rumfunkt, sondern so, dass die Motoren ohne mechanischen Anschlag und auch ohne Endschalter einfach mal drehen können. Also etwa so:
1 | // "Dreizeiler" zur Inbetriebnahme eines Schrittmotors
|
2 | int ENABLE = 41; |
3 | int DIRECTION = 39; |
4 | int PULSE = 37; |
5 | |
6 | void setup() { |
7 | pinMode(ENALBE, OUTPUT); |
8 | digitalWrite(ENABLE, HIGH); |
9 | |
10 | pinMode(DIRECTION , OUTPUT); |
11 | digitalWrite(DIRECTION , HIGH); |
12 | |
13 | pinMode(PULSE, OUTPUT); |
14 | }
|
15 | |
16 | void loop() { |
17 | digitalWrite(PULSE, HIGH); |
18 | delay(1000); |
19 | digitalWrite(PULSE, LOW); |
20 | delay(1000); |
21 | }
|
Und jetzt kannst du an den Arduino-Pins und an den Klemmen des TB6600 in aller Ruhe messen, ob dort das passiert, was du programmiert hast. Und wenn dort das passiert, was du programmiert hast, kannst du kontrollieren, ob sich der Schrittmotor Schritt für Schritt weiterbewegt. Wenn sich der Motor nicht bewegt, dann musst du die Verschaltung und Konfiguration des TB6600 mal genauer anschauen. Sinnvoll ist es, für diesen Test natürlich nicht den 32er Microschrittbetrieb an den DIP-Schaltern einzustellen, sondern den "1 Schritt pro Puls"-Modus zu konfigurieren. BTW: in deinem Programm aus dem ersten Post ist noch mindestens 1 Copy-Paste-Fehler drin
1 | :
|
2 | :
|
3 | Serial.println("Turn panel to the right."); |
4 | digitalWrite(MOTOR_LEFT_RIGHT_DIRECTION, MOTOR_DIRECTION_RIGHT); // set direction for movement |
5 | :
|
6 | :
|
7 | Serial.println("Turn panel to the left."); |
8 | digitalWrite(MOTOR_LEFT_RIGHT_DIRECTION, MOTOR_DIRECTION_RIGHT); // set direction for movement |
9 | :
|
10 | :
|
Der Text lässt anderes vermuten als das Programm machen wird, denn beide Male wird MOTOR_DIRECTION_RIGHT gesetzt.
:
Bearbeitet durch Moderator
Hallo, hast du die Quellcodes zum OriginalProgramm? Ich käme nicht auf die Idee, die Variablen und Funktionsaufrufe in italienisch zu deklarieren. Vielleicht findet man im Original schon einen groben Schnitzer, der dich jetzt verzweifeln lässt.
1 | pinMode (5, OUTPUT); // Horizontal motor |
2 | pinMode (4, OUTPUT); |
3 | pinMode (3, OUTPUT); |
4 | pinMode (2, OUTPUT); |
5 | pinMode (9, OUTPUT); // Vertical motor |
6 | pinMode (8, OUTPUT); |
7 | pinMode (7, OUTPUT); |
8 | pinMode (6, OUTPUT); |
und auch
1 | void paso_XXX() { |
2 | digitalWrite(5, LOW); |
3 | digitalWrite(4, LOW); |
4 | digitalWrite(3, HIGH); |
5 | digitalWrite(2, HIGH); |
6 | delay(retardo); |
7 | digitalWrite(5, LOW); |
8 | digitalWrite(4, HIGH); |
9 | digitalWrite(3, HIGH); |
10 | digitalWrite(2, LOW); |
11 | delay(retardo); |
12 | digitalWrite(5, HIGH); |
13 | digitalWrite(4, HIGH); |
14 | digitalWrite(3, LOW); |
15 | digitalWrite(2, LOW); |
16 | delay(retardo); |
17 | digitalWrite(5, HIGH); |
18 | digitalWrite(4, LOW); |
19 | digitalWrite(3, LOW); |
20 | digitalWrite(2, HIGH); |
21 | delay(retardo); |
22 | } |
können ja wohl kaum ernstgemeint sein, alsdass sich das jemand zu Gemüte führt. Selbstverständlich müssen die Pins als Ausgang defniert werden. Das steht ja außer Frage. Aber man kann doch statt "1,2,3,4,5" doch bitte die äquivalenten namen (Enable, Dir, etc) in "sprechender Form" vergeben. Just jene Verbindungen vom Arduino zu den Schrittmotoren fehlen, nebenbei, in deinem Schaltplan. Ich würde auch nochmal neu anfangen. Ist ja nicht soo viel.
:
Bearbeitet durch User
Wilfried M. schrieb: > Ein Stepper-Test mit AccelSteper.h Hallo zusammen. Ich kann nur Lothars Beitrag unterstreichen. Er hat dir jetzt auf dem Silbertablett serviert, was du brauchst, um erstmal die Ansteuerung zu prüfen. Meines Erachtens brauchst du nur sehr langsame Bewegungen, quasi in Zeitlupe. Dann darfst du den ganzen Kram um Beschleunigungs- und Bremsrampe erstmal vergessen. 50 Schritte/s darfst du einfach an- oder ausschalten. Aber bisher kommen auch auf wiederholte Fragen keine Antworten. Bitte ändere das jetzt, sonst EOT. Sozusagen Ende und Aus. Gruß Gunnar
von Axel R. hast du die Quellcodes zum OriginalProgramm? Ja, das Orginal wurde in meinem Auftrag auf stärkere NEMA17 mit Getriebe 5:1 und TB6600 umgeschrieben. Leider kann ich den nicht mehr erreichen. Schöne Grüße Wilfried von Lothar M.; von Gunnar F. was du brauchst, um erstmal die Ansteuerung zu prüfen. Wird gemacht! (Die Test´s, Ansteuerung mit Stepper.h und AccelStepper.h waren i:O.)
Gunnar F. schrieb: > Er hat dir jetzt auf dem Silbertablett serviert, was du brauchst, um > erstmal die Ansteuerung zu prüfen. > Meines Erachtens brauchst du nur sehr langsame Bewegungen, quasi in > Zeitlupe. Die bekommt man, wenn man den Schrittmotortreiber erstmal mit einem Taster/Schalter als Taktquelle betreibt und Signale wie DIR und ENABLE fest verdrahtet. Ein eventuelles Prellen des Schalter ist für so einen ersten Test völlig egal.
:
Bearbeitet durch User
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.