Beiträge von Gast01511 im Thema „Schrittmotoren auf Selbstbau Montierung anpassen.“

    Hallo Lothar,
    irgendwo muß der Wert 567001 stehen. Das passt für den Compiler nicht mehr in einen 16 bit breiten int-Wert (hier max 2^16 Werte möglich, -32768 to +32767).
    Das ist der regulär Wertebereich für einen integer. 56700 ist also größer als 32767, normalerweise ist das ein unsigned integer. Wieso hier der Compiler einen long-Wert annimmt, müßte ich auch recherchieren. Richtig deklariert müsste aber das Array in der onstep.ino als unsigned integer deklariert werden. Hier wird gerne schonmal gepatzt. Allerdings bekomme ich die Warnung nicht. Also könnte es gut sein, daß Du in Zeile 500 was geändert hast?
    Ansonsten ist es erstmal nur eine Warnung.
    Was Du tun kannst: Eben das unsigned vor dem Array einfügen. Ich habs gerade probiert, hab auch diesmal keinen FEhler.


    Bitte vergiss nicht bei Fragen ein paar Versionsinfos zu Deiner Entwickungsumgebung mitzugeben. Arduino-IDE-Version und auch die Version der Onstep-Sourcen.
    Das machts für mich einfacher, gewisse Dinge hier nachzuvollziehen.
    Grüße,
    Gerri

    Hallo Mitleser, bitte bei Interesse an der Steuerung auch unbedingt das Yahoo-Forum im Auge behalten.
    Wie erwarten arbeiten Boards mit Ceramic-Resonator bei tiefen Temperaturen nicht so gut. Das ist aber nichts Neues.
    Ist die Steuerung auf Basis der Teensy aufgebaut, hat man das Problem nicht.
    Basiert die Steuerung auf Basis von Atmega 2560 mit Ceramic-Resonator, kann das Timing über ein zusätzliches GPS PPS Signal (bzw. Modul)
    abgesichert werden. Für die visuellen Einsatz ist das sicherlich nicht so tragisch. Für Foto würde ich diese Option in Betrach ziehen.
    Das ist jetzt in Anbetracht der Materialkosten kein dickes Thema. Sollte aber beachtet werden.
    Grüße,
    Gerrit

    Hey Carsten, freut mich wenn es klappt. Auch ich konnte eine Baustelle schließen. Meine Sideres 85 führt wieder problemlos nach.
    Der Lagertausch, Umstieg auf HTD3M 9MM Zahnriemen und die Fertigung einer neuen Motorhalterung ...sowie die Adaption eines Faulhaber Servos haben
    sich gelohnt.
    Um Weihnachten baue ich noch die Onestep auf Teensy-Basis.
    Viele Grüße,
    Gerrit

    Hallo Carsten,


    ein AVR ISP Programmer für 50 Euro? Da darf man aber schon ne Goldkante an der Platine erwarten. Geht auch anders .https://www.arduino.cc/en/Tutorial/ArduinoISP


    Ich sehe, Du hast schon die richtige Einstellung. Leider bin ich aktuell mit anderen Themen beschäftigt (Teleskopbau und Restaurierung meiner Sideres).
    So daß ich im Moment keine Zeit finde die Onestep auf dem Teensys aufzubauen. Nehme mir das aber für den Weihnachtsurlaub vor.


    Man kann ruhig die billigen Boards nehmen. Sollte aber entweder für den langfristigen Einsatz einen Atmega 2560 mit Quarz nehmen oder man baut in den günstigen Aufbau ein GPS ein (RTC).
    Grüße,
    Gerrit

    Hallo Carsten,


    dann wird das wohl so sein. Den Fall hatte ich auch noch nicht. Aber: Der Atmega 2560 ist deswegen ja nicht Schrott. Viele Wege führen nach ROM.
    Du kannst ihn auch über einen AVR ISP programmieren. Dafür ist der ICSP Anschluß da. Die serielle Schnittstelle kannst Du auch über andere Ports verwenden.
    'Dann aber mit USB nach RS232 Dongle.


    Wegen den Grafiken. Das mag wohl so sein. Nur hilft es Dir nicht. Ich hatte ja schonmal den privaten Kontakt angeregt. Da gäbe es dann die Option....eMails zu versenden.
    Für die Fehlersuche evtl. etwas effizienter.


    Es mag Dir kein Trost sein.
    Ich für meinen Teil habe die Onstep in 4 Abenden zusammengebaut. Und dabei war das komplizierteste die Motortreiber anzupassen. Sprich: Dip-Schalter raus, Stiftleiste rein.


    Viele wird es abschrecken, dieses Projekt zu wagen. Aber sowas kann passieren.


    Grüße,
    Gerrit

    Hallo Thorsten, Hallo Carsten,
    man müßte halt mal genau lesen, was Pololu schreibt. Im Grunde bleibt aber genug Raum für kleine Fehlerchen.
    Mir war versehentlich auch entfallen, daß der DRV8825 in meiner Focuser-Schaltung auf !FAULT mit VCC vom Controller beschaltet ist.
    Ansonsten wird Carsten das schon meistern. Da bin ich mir sicher.
    Wichtig beim Verlöten der PINS: Den Lötkolben vom Platinenrand her gegen je einen Pin halten;
    das Lot dann vom Board her an die Stelle Pin, Lötkolben führen. Nicht sinnlos da rum braten.
    Grüße,
    Gerrit

    Hallo Carsten,


    mal was ganz banales. Das Bild was Du versendet hast, ist ja eher was fürs Grobe. Aber wenn ich mir das genauer Anschaue, bin ich mir nicht so sicher ob Du die Stiftleisten mit den DRV8825 auch verlötet hast.
    Das sieht z.B. bei der vorderen Reihe nicht so aus. Bei der hinteren wird's nicht wehrdeutlich. Aber den dunklen Rand um die Stifte kann ich mir nicht anders erklären.
    :)
    Also in meiner Fokuserschaltung dreht sich der Motor wunderbar. Da passen dann auch die Spannungen.
    LG
    Gerrit

    Hallo Carsten,
    um isoliert zu testen, würde ich den zweiten Treiber mal abklemmen (Patch-Kabel VMOT und GND entfernen).
    Ansonsten, an welchen Punkten hast Du die Spannungen abgenommen?
    Insgesamt sieht die Verdrahtung i.O. aus. Mag sein, daß da wirklich eine Patch-Kabel keinen Kontakt hat.


    Ansonsten kannst Du auch mal im Yahoo-Forum schauen. Evtl. hat man da auch eine Lösung.
    Bitte nicht nur hier fragen. Aber gerne auch Lösungen für eigene Probleme darstellen.


    Grüße,
    Gerrit

    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 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 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 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,



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