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
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.
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?
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.
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.
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.
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.
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.
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.
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:> 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.
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.
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.
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
intENABLE=41;
3
intDIRECTION=39;
4
intPULSE=37;
5
6
voidsetup(){
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
voidloop(){
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.
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.
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.