Forum: Mikrocontroller und Digitale Elektronik Code Solartracker


von Wilfried M. (willixy)


Angehängte Dateien:

Lesenswert?

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
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Rainer W. (rawi)


Lesenswert?

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
von Obelix X. (obelix)


Lesenswert?

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>

von Gunnar F. (gufi36)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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
von Frank O. (frank_o)


Lesenswert?

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
von Rainer W. (rawi)


Lesenswert?

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
von Wilfried M. (willixy)


Angehängte Dateien:

Lesenswert?

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.

von Wilfried M. (willixy)


Angehängte Dateien:

Lesenswert?

Schaltplan

von Norbert (der_norbert)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Gunnar F. (gufi36)


Lesenswert?

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?

von Gunnar F. (gufi36)


Lesenswert?

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?

von Gunnar F. (gufi36)


Lesenswert?

Gunnar F. schrieb:
> ich lese keinen Arduino-Code

Na, okay... Ich sehe MotorMoveDealay= 5us. Das scheint viel zu schnell. 
Mach mal eher 5ms daraus.

von Rainer W. (rawi)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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.

von Rainer W. (rawi)


Lesenswert?

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?

von Gunnar F. (gufi36)


Lesenswert?

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 Wilfried M. (willixy)


Lesenswert?

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

von Wolfgang K. (kunos)


Lesenswert?

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.

von Helmut -. (dc3yc)


Lesenswert?

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!

von Gunnar F. (gufi36)


Lesenswert?

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?

von Frank O. (frank_o)


Lesenswert?

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 Wilfried M. (willixy)


Lesenswert?

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

von Gunnar F. (gufi36)


Lesenswert?

Wilfried M. schrieb:
> mein Wohnort ist 48317

Das ist weit. Hast du meinen Vorschlag umgesetzt?

von Peter (pittyj)


Lesenswert?

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 Wilfried M. (willixy)


Lesenswert?

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

von Gunnar F. (gufi36)


Lesenswert?

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?

von Michael B. (laberkopp)


Lesenswert?

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.

von Norbert (der_norbert)


Lesenswert?

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!

von Rainer W. (rawi)


Lesenswert?

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
von Michael B. (laberkopp)


Lesenswert?

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.

von Hans (ths23)


Lesenswert?

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.

von Rainer W. (rawi)


Lesenswert?

Michael B. schrieb:
> Ganz bestimmt arbeitet das nicht mit Schrittmotoren.

Der Link bezog sich auf deine "solare Montierung"

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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 Wilfried M. (willixy)



Lesenswert?

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

von Wilfried M. (willixy)


Angehängte Dateien:

Lesenswert?

PIN Liste

von Hans (ths23)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Axel R. (axlr)


Lesenswert?

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
von Gunnar F. (gufi36)


Lesenswert?

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 Wilfried M. (willixy)


Angehängte Dateien:

Lesenswert?

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.)

von Rainer W. (rawi)


Lesenswert?

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
Noch kein Account? Hier anmelden.