Schrittmotoren auf Selbstbau Montierung anpassen.

  • Hallo Gerrit,
    mit Fritzing habe ich die Konfiguration mit Arduino 2560, DRV8825 und Stepper schon mal erstellt. Leider hat Fritzing den DRV8825 noch nicht unter den stepper drivern erfasst, ich habe aber ein Foto des DRV an die Pingröße des Fritzing Breadbords angepasst, so geht es auch.
    Bei der Onestep.ino bin ich über zwei Punkte gestolpert:
    In Zeile 328 steht HA5VPin Pin 12 (5V?) und in Zeile 380 HA5VPin Pin 11 (5V?) Warum stehen die Fragezeichen hinter den 5 V ?


    Ich würde mich freuen, wenn Du mich hier aufklären kannst.


    Viele Grüße
    Carsten

  • Hallo Carsten,


    In Zeile 328 ist die Spannungsversorgung über den Atmega2560 definiert.
    In Zeile 380 jedoch für den Teensys 3.1 (3.2) Arm Prozessor.
    Anm.: Hier sind die 5 Volt in der Tat verwirrend. Der Teensys ist 5V TTL tolerant, arbeitet aber tatsächlich auf 3.3V TTL (TTL=Transistor-Transistor-Logic). Der DRV8825 akzeptiert Pegel mit 3.3V als Logic High. Von daher funktioniert das auch.


    Der DRV8825 ist übrigends Pin-Kompatibel zum A4988 Breakout Board.
    Daher hätte man sich die Arbeit sparen können und direkt diese als
    Platzhalter nehmen können ;) Aber man hat ja am Anfang noch nicht so den Durchblick. Gelernt haste auch was!
    Anm.-Ende.
    Zum Thema zurück:
    In ANSI-C oder C++ ist es nicht unüblich, Code mittels verschiedene Zielplattformen aus einer und derselben Quelldatei zu erzeugen.
    Was genau übersetzt wird, ist dann über Compiler-Direktiven geregelt.
    Und so findest Du über der Zeile 328 folgende Direktive:
    #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)


    Jedoch für den Teensys 3.1 folgende Direktive in der Zeile 374


    #elif defined(__arm__) && defined(TEENSYDUINO)


    elif heißt hier soviel wie "else if". Entweider die eine Platform oder prüfe, ob es eine andere gibt.


    Compiler-Direktiven sind Anweisungen für den Compiler, sie beeinflussen zwar die Code-Erzeugung.
    Aber bis auf Substitutionen finden diese Bedingungen keine Laufzeitauswertung im übersetzten Code.


    Arduino ist nichts anderes wie ein gutes Framework auf Basis der GNU C++ Compiler.


    Man könnte sich jetzt fachlich da etwas gewählter ausdrücken. Ich denke aber, Dir als Nichtinformatiker dürfte
    das eine grobe Richtung geben.Damit kannst Du nun im Code unterscheiden, was für den Teensys gedacht ist
    udn was für Deinen Atmega2560 relevant ist.


    Viele Grüße,
    Gerrit

  • Hallo Gerrit,


    da hast du recht, wenn man das in der Beschreibung genau liest, bezieht sich der Code auf den Teensys. Also ignoriere ich hier alles bis zum endif.


    Danke für den Tip mit dem A4988...ich habe jetzt mit diesem Platzhalter im fritzing die Konfiguration mit den beiden Steppern nach den Vorgaben der onestep.ino als Entwurf fertig. Hier das Ergebnis: (ich hoffe, es wird die Datei angezeigt)[D:\cw-iv\Privat\Arduino\Fritzing\Arduino2560 mit DRV 2588_1.pdf]


    Eine Frage zu Arduino 1.6.5. Die onestep Dateien legt arduino jeweils in einem eigenen Ordner ab: Astro, Command, EEPron, Goto...usw. Müssen alle Dateien (z.B. durch copy/paste) in einen gemeinsamen Sketch kopiert werden ?


    Viele Grüße


    Carsten

  • Hallo Carsten,
    nein, wenn du die OnStep Datei öffnest, werden automatisch alle anderen mit geöffnet. Sie sollten im gleichen Order wie die OnStep sein. Der Ordner sollte
    den Namen des Sketches haben.
    Grüße,
    Gerrit

  • Hallo Carsten,



    sieht soweit gut aus. Bis auf ein paar Dinge....


    achte bitte darauf, daß SLEEP und RST (Neben STEP und DIR) kurzgeschlossen sind. Sonst läuft der Motor ggf. unruhig.
    PIN 7 und GND kannst Du auf eine Leitung legen. Würde ich auf GND legen. Gut, daß hast der Howard auch so beschrieben.
    Man sieht, daß die Verkabelung schon einen ziemlichen Kabelsalat darstellt. So gibt es der Source zwar vor. Die 100 mF Kondensatoren kann man
    reinmachen. Beim A4988 muß man sie reinmachen. Beim DRV8825 bin ich mir aktuell nicht sicher. In meiner Fokuser-Schaltung habe ich ihn nicht.
    Denke daran das der Atmega2560 mit den Treibern über GND neben VCC 5V TTL verbunden ist (PIN oben rechts am DRV8825).
    GND ist GND, ja. Aber sicher ist sicher. Ich würde GND von der Eingangsspannungsquelle nicht direkt auf dem Controller legen (GND, PIN7).
    Das wars erstmal im Schnelldurchlauf. Die Konfiguration hast Du soweit verdrahtet. Das sieht gut aus (Kabelsalat).
    Die 100 mF Kondensatoren kannst Du direkt auf die Bahnen legen auf denen VMOT und GND liegt. Dann zieht man zwei Brücken rüber zum
    zweiten Treiber. Sieht sauberer aus und spart ein paar "Kabel". Das kannst Du aber direkt vom VCC und GND vom Breadboard aus machen.
    Kabel gespart.
    Grüße,
    Gerrit

  • Hallo Gerrit,
    danke für Deine Anregungen zu der Konfiguration. Morgen poste ich noch mal eine neue Konfiguration mit Berücksichtigung Deiner Vorschläge. Der Kabelsalat wird damit deutlich übersichtlicher... ;)


    Auf der polulo Seite https://www.pololu.com/product/2133 (ungefähr in der Mitte der Seite) findest Du ein Schema DRV8825 mit einen Microcontroller, da ist der Kondensator mit 100 mF mit enthalten, von daher habe ich das berücksichtigt. Die 2 Kondensatoren kosten bei conrad € 1,14, den Preis kann ich gerade noch verschmerzen...:-). Wenn pololu das so vorgibt, baue ich die eben ein. Rein technisch würde micht interessieren, warum diese Bauteile empfohlen werden...


    Dann legt pololu sehr großen Wert auf die korrekte Einstellung des potis, weil sonst der Stepper beschädigt werden kann (siehe Video mit der jungen Frau im gelben T-Shirt auf der gleichen Seite). Ich gehe mal davon aus, dass die Poti Einstellung vor der Aufschaltung der Stepper sehr wichtig ist...oder wie siehst Du das ?


    Mechanisch geht das Projekt auch voran, ich habe bei dem Forum "zerspanerbude" jemanden gefunden, der mir ein Standardschneckenrad für die DEC Welle von Kremp auf 32 mm "aufbohrt". Igor hatte mir bei dem Astrotreff in Hannover letzte Woche dieses Forum empfohlen...(--> Igor: vielen Dank für diese Info !)


    Viele Grüße
    Carsten

  • Hallo Carsten,


    <blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">Zitat:<hr height="1" noshade id="quote"><i>Original erstellt von: Wolkenmeer</i>
    Auf der polulo Seite https://www.pololu.com/product/2133 (ungefähr in der Mitte der Seite) findest Du ein Schema DRV8825 mit einen Microcontroller, da ist der Kondensator mit 100 mF mit enthalten, von daher habe ich das berücksichtigt. Die 2 Kondensatoren kosten bei conrad € 1,14, den Preis kann ich gerade noch verschmerzen...:-). Wenn pololu das so vorgibt, baue ich die eben ein. Rein technisch würde micht interessieren, warum diese Bauteile empfohlen werden...


    <hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">


    Du hast aber schon gesehen, daß da µF und nicht mF steht, oder?


    Gruß
    Andreas

  • Hallo Carsten,
    wie gesagt sicher ist sicher. Ich habe den Kondensator an meiner Focuserschaltung nicht verbaut. Da wird der Motor aber auch nur beim Fokussieren bewegt.
    Das mag hier anders sein. Bei meiner Onstep Umsetzung habe ich damit keine Aktien, weil die Treiberstufen andere sind.
    Bei den RAPS128 braucht an die wahrscheinlich auch nicht. Muß ich aber nochmal nachschauen.


    Das mit dem Kabelsalat nimm Dir nicht zu persönlich. DAs bleibt in der Arduinowelt beim Prototyping nicht aus ;)
    Grüße,
    Gerrit

  • Hallo Carsten,


    Ic hkann dir helfen. Schriftart Symbol brauchst Du nicht.
    Auf normaler deutscher Tastatur genügt [AltGr]+[m] zu drücken, und schon erscheint ein µ.


    In Amiland nehmen die Leute auch mal ein kleines u statt einem µ.
    Nur das kleine m solltest Du nicht nehmen, das heißt nämlich milli!


    Gruß,
    Martin

  • Hallo Gerrit,
    das Objekt "Sanierung Selbstbau Montierung" schreitet voran, die Mechanik ist fast fertig, die DE Achse hat jetzt ein Schneckengetriebe bekommen, die Schrittmotorenhalter sind auch montiert.


    Auf dem Breadbord habe ich OnStep Konfiguration aufgebaut und möchte nun in die Testphase gehen, hier gibt es ein Problem, OnStep auf den ADM 2560 zu laden. Beim Verifizieren erscheinen Fehlermeldungen,
    kannst Du aus diesen Meldungen erkennen, wo das Problem ist ?


    Viele Grüße
    Carsten


    Arduino: 1.6.5 (Windows 7), Platine: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"


    OnStep.ino: In function 'void setup()':
    OnStep:710: error: too many arguments to function 'uint64_t doubleToFixed(double)'
    OnStep.ino:208:10: note: declared here
    OnStep:783: error: 'HA_Disabled' was not declared in this scope
    OnStep:784: error: 'DE_Disabled' was not declared in this scope
    Command.ino: In function 'void processCommands()':
    Command:73: error: 'HA_Enabled' was not declared in this scope
    Command:74: error: 'DE_Enabled' was not declared in this scope
    Command:1047: error: invalid conversion from 'int' to 'char*' [-fpermissive]
    Command:1047: error: too many arguments to function 'char* dtostrf(double, signed char, unsigned char, char*)'
    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:23:0,
    from Library.h:4,
    from OnStep.ino:169:
    c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:655:14: note: declared here
    extern char *dtostrf(double __val, signed char __width,
    ^
    MoveTo.ino: In function 'void moveTo()':
    MoveTo:201: error: 'HA_Disabled' was not declared in this scope
    MoveTo:202: error: 'DE_Disabled' was not declared in this scope
    Park.ino: In function 'boolean unpark()':
    Park:135: error: 'HA_Enabled' was not declared in this scope
    Park:136: error: 'DE_Enabled' was not declared in this scope
    Pec.ino: At global scope:
    Pec:4: error: 'PEC_SENSE_STATE' was not declared in this scope
    Pec.ino: In function 'void Pec()':
    Pec:26: error: too many arguments to function 'double fmod(double, double)'
    In file included from OnStep.ino:165:0:
    c:\program files (x86)\arduino\hardware\tools\avr\avr\include\math.h:153:15: note: declared here
    extern double fmod(double __x, double __y) __ATTR_CONST__;
    ^
    too many arguments to function 'uint64_t doubleToFixed(double)'

  • Hallo Carsten,


    hast Du beim Wert StepsPerSeconds (Config.h) einen "." oder ein "," für die Trennung der Nachkommastellen verwendet?
    Danach siehts hier aus.
    Ansonsten habe ich meinen kürzlich gezogenen Stand gerade nochmal kompiliert. Ohne Fehler.
    Wenn ich richtig annehme, daß Du einen Fehler gemacht hast und ein "," verwendet hast.
    Dann bekomme ich auch die Fehler :) beim Übersetzen (Vorsicht, hier habe ich einen Mac genommen. Unter Verwendung meines Windows-Rechners stehen dort andere Pfade):
    OnStep.ino: In function 'void setup()':
    OnStep:710: error: too many arguments to function 'uint64_t doubleToFixed(double)'
    OnStep.ino:208:10: note: declared here
    Command.ino: In function 'void processCommands()':
    Command:1047: error: invalid conversion from 'int' to 'char*' [-fpermissive]
    Command:1047: error: too many arguments to function 'char* dtostrf(double, signed char, unsigned char, char*)'
    In file included from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:23:0,
    from Library.h:4,
    from OnStep.ino:169:
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdlib.h:655:14: note: declared here
    extern char *dtostrf(double __val, signed char __width,
    ^
    Pec.ino: In function 'void Pec()':
    Pec:26: error: too many arguments to function 'double fmod(double, double)'
    In file included from OnStep.ino:165:0:
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/math.h:153:15: note: declared here
    extern double fmod(double __x, double __y) __ATTR_CONST__;
    ^
    too many arguments to function 'uint64_t doubleToFixed(double)'


    Ja, ich muß aber auch sagen. Ich programmiere nun seit 1983 in C bzw. C++ (1989).
    Und eigentlich gehört dem Howard Dutton hier der nackte Hintern gehauen.
    Variablen in Compiler-Direktiven sollten gemäß der Tradition doch besser groß geschrieben werden. Das sind Coding-Conventions im Bereich C/C++.
    Das würde es einem Anfänger in dieser Sprache schwer machen.


    Also...kontrolliere nochmal Deinen Stand. Und wenn Du den Code total verbuddelt hast,
    dann ziehe Dir einen neuen Stand. Viel erfolg!



    Grüße,
    Gerrit

  • Hallo Gerrit,
    danke für Deine Antwort, bei den StepsPerSeconds habe ich tatsächlich ein Komma gesetzt...das werde ich ändern. Die OneStep Orginaldatei kann ich problemlos auf den ADM2560 laden. Nun wollte ich nach den Angaben von Howard die Potis auf dem DRV8825 einstellen und die Stepper testen, ob sie überhaupt laufen (korrekte Verkabelung etc.) Also habe ich OnStep auf den ADM geladen und im seriellen Monitor von arduino 1.6.6 den Befehl ":A1#" gesendet, lt. Howard sollte jetzt der RA Stepper laufen. Macht er aber nicht, ADM2560 registiert zwar mit einem blinken auf den Befehl, doch der Stepper reagiert nicht, beim DE Stepper ebenso. Wenn USB und Netzteil angschlossen sind, liegt zwischen VDD und GND eine Spannung von ca. 0,37 V, das Netzteil für die Stepper hat 12,2 V. Der Befehl ":A1#" ändert an der Spannung zwischen VDD und GND nichts.
    Die Verkabelung habe ich mehrmals geprüft, die sollte korrekt sein.


    Hast Du einen geeigneten Sketch in der Schublade, mit dem ich die Stepper prüfen kann ? Im Netz habe ich bisher nichts brauchbares für die Kombination aus ADM 2560/DRV 8825 gefunden...


    Viele Grüße
    Carsten

  • Hallo Gerrit,
    danke für Deine Antwort, bei den StepsPerSeconds habe ich tatsächlich ein Komma gesetzt...das werde ich ändern. Die OneStep Orginaldatei kann ich problemlos auf den ADM2560 laden. Nun wollte ich nach den Angaben von Howard die Potis auf dem DRV8825 einstellen und die Stepper testen, ob sie überhaupt laufen (korrekte Verkabelung etc.) Also habe ich OnStep auf den ADM geladen und im seriellen Monitor von arduino 1.6.6 den Befehl ":A1#" gesendet, lt. Howard sollte jetzt der RA Stepper laufen. Macht er aber nicht, ADM2560 registiert zwar mit einem blinken auf den Befehl, doch der Stepper reagiert nicht, beim DE Stepper ebenso. Wenn USB und Netzteil angschlossen sind, liegt zwischen VDD und GND eine Spannung von ca. 0,37 V, das Netzteil für die Stepper hat 12,2 V. Der Befehl ":A1#" ändert an der Spannung zwischen VDD und GND nichts.
    Die Verkabelung habe ich mehrmals geprüft, die sollte korrekt sein.


    Hast Du einen geeigneten Sketch in der Schublade, mit dem ich die Stepper prüfen kann ? Im Netz habe ich bisher nichts brauchbares für die Kombination aus ADM 2560/DRV 8825 gefunden...


    Viele Grüße
    Carsten

  • Hallo Carsten,
    solche Sachen testet man lieber erstmal isoliert. Sprich: Schreib Dir ein kleines Testprogramm, mit dem man nur den Treiber ansteuert und die Motor in verschiedenen Modi hin und her laufen läßt.
    Die Ports kannst Du ja dem OneStep-Source entnehmen.
    Immer schrittweise. So habe ich auch die 128 uStep Treiber getestet.



    Grüße,
    Gerrit


    Hier mal mein Auszug. Nicht schön, aber selten.
    Ist aber für die 128 uStep-Treiber. Die Ports solltest Du auch anpassen.


  • Hallo Gerrit,
    danke für den Sketch, den werde ich am morgigen verregneten Tag ausprobieren. Hier nochmal die aktuelle Konfiguration, wie ich sie auch auf dem Breadboard aufgebaut habe:


    Wenn Du hier schaust, sieht das anders aus https://groups.yahoo.com/neo/g…oFilter=ALL#zax/236621038


    VDD und ENA auf dem DRV sind hier nicht belegt...obwohl Howard in der onestep.ino das so vorgibt...aber scheint auch zu funktionieren.


    Viele Grüße
    Carsten

  • Hallo Alexander,
    ...das Thema hatten wir schon...;-) das sind 100myF Kondensatoren...ich weiss aber nicht, wie man in Fritzing griechische Buchstaben schreiben kann..:-)


    ...aber bis auf die mF sollte die Konfiguration eigentlich stimmen, oder ?


    Viele Grüße
    Carsten

  • Hallo Carsten,
    wie gesagt, die ENABLE-Pins mußt Du nicht zwingend verdrahten. Default ist ENABLE auf HIGH geschaltet (da am Eingang LOW anliegt und ENABLE invertiert ist).
    Nimm mal den VCC des Controllers vom FAULT-Eingang des DRV8825. Du hast hier als Platzhalter den Allegro gewählt, der hat statt FAULT dort einen VCC (5VTTL) Anschluß.
    Dann würde ich mit den entsprechenden PINS aus der OneStep.ino und meinem Code ein Test-Programm schreiben.
    Du solltest erst versuchen, die Onstep über den USB Anschluß (Serial Port) zu steuern. Später würde ich Bluetooth einrichten. Unter Windows 8 und aufwärts starte
    z.B. Cartes Du Giel als Admin. Bitte achte darauf, daß die Koordinaten stimmen. Sei nicht beunruhigt, wenn Du dein Teleskop im Westen stehen hast, und ein Objekt im Osten
    wählst. Die Onstep macht einen Meridian-Flip.
    Viel spaß,
    Gerrit

  • Hallo Gerrit,


    bis zum Meridan Flip ist noch ein weiter Weg…noch bewegt sich der Stepper nicht mal im Vollschrittmodus.


    Ich habe mal nach dem elementaren Pololu Schema den Controller, DRV und Stepper verdrahtet, nur Vollschritt ohne Berücksichtigung der Microsteps...



    ...und dazu diesen Sketch geschrieben:


    /*
    Schrittmotortest
    alle t msec ein Schritt in eine Richtung.
    */
    int t = 2000; //mS
    int DIR = 11;
    int STEP = 13;
    void setup() {
    // setzen der Digitalpins 11 und 13 als Ausgang.
    pinMode(DIR, OUTPUT);
    pinMode(STEP, OUTPUT);
    }
    void loop() {
    digitalWrite(DIR, HIGH); // +5V an DIR
    digitalWrite(STEP, HIGH); // +5V an STEP
    delay(t);
    digitalWrite(STEP, LOW); // Gnd an Pin STEP
    delay(t);
    }
    Ergebnis: Der Sketch wird an den Controller übertragen, die gelbe LED flackert bei der Übertragung und blinkt dann im eingegebenen Zeitintervall t.
    Die Signale vom Controller gehen raus, zwischen DIR/GND messe ich konstant 4,98 V und zwischen STEP/GND wechselnd 0 oder 4,98 V, passend zu dem Zeitintervall, also der Controller macht seinen Job.
    An den Stepperausgängen aber messe ich zwischen GND und allen Phasen B2, B1, A1, A2 immer 0 V. Auf keiner Phase liegt eine Spannung. Der Stepper sollte eigentlich 2,8 V pro Phase haben, hat er aber auf keiner, und darum bewegt sich er sich nicht. Drehen am Poti des DRV bewirkt auch nichts.
    Wenn ich die beiden DRV tausche, funktioniert es auch nicht… woran kann das liegen ? DRV defekt, Kontaktstörungen beim Breadboard ?
    Die Spannung von 12,3 V auf der Netzseite steht und liegt auch auf VMOD.


    Woran kann das liegen ? DRV defekt, Kontaktstörungen beim Breadboard ?


    Viele Grüße
    Carsten

  • Hast Du mal die VMOT-Spannung auf dem Treiberboard gemessen?
    Und auch die Pins auf dem Treiberbord bis hin direkt zum Motor zum Stepperanschluß?
    Mess doch da einfach mal, ob da prinzipiell ein Kontakt besteht...
    Grüße,
    Gerrit

  • Hallo Gerrit,
    zwischen VMOD und GND habe ich 12,3V. Zwischen dem Poti des DRV und GND 5 V, aber alle 4 Anschlüsse zum Motor haben 0 V, auch wenn ich direkt an den Pins des Treibers gehe, also definitiv keinen Kontakt. Die PIN Anschlüsse des Breadbords habe auch ich geprüft, die sind alle o.k.
    Kann also eigentlich nur am Treiber liegen...alle anderen Parameter scheinen ja zu stimmen, aber das gleich beide Treiber diese Macke haben, wundert mich schon.
    Viele Grüße
    Carsten

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!