Digitale Teilkreise mittels Arduino-Board

  • Hallo Freunde,


    ich möchte meiner äquatorialen Montierung digitale Teilkreise spendieren.


    Bei meiner Recherche im Netz bin ich auf eine interessante Selbstbaulösung auf Basis des Arduino Mikrocontrollerboard gestoßen, die ich (hoffentlich) weiterstmöglich selbst umsetzen und dabei noch ein wenig in die Programmierung des Arduino Mikrocontroller einsteigen kann.
    Um möglichst schnell ans Ziel zu kommen und einen praxisbezogenen Einstieg in die Thematik zu finden, möchte ich diese Lösung aufgreifen und auf mein Equipement anpassen.


    Damit sich der Schaden und die Aufwände im Falle eines Scheiterns in Grenzen halten (hochauflösende Encoder sind hierbei scheinbar die kostspieligsten Bauteile), möchte ich zunächst die Funktion als Testaufbau vornehmen:
    D.h. Arduino board programmieren und mit Dummy-Encoder an einem Planetariumsprogramm testen.
    - Basis der Programmierung soll der Quellcode von Mike Fulbright (ganz unten) sein
    - als Dummy Encoder möchte ich zunächst einfache Drehimpulsgeber wie z.B. diesen oder eine optomechanische Maus (mit optischen Encodern) verwenden
    - Verbindung mit CDC / Stellarium mittels des Ascom-Treibers von Dave Ek .
    An Ende der Testphase soll alles soweit funktionieren, dass nur noch die Dummies gegen hochauflösende Encoder (z.B. diesen) ausgetauscht und an die Montierung angebaut werden müssen.


    Was haltet ihr von der Idee / Vorgehensweise ?
    Habe ich etwas übersehen / falsch eingeschätzt (bin in der Hinsicht blutiger Anfänger)?
    Hat schon jemand diese / ähnliche Lösung umgesetzt ?



    Grüße Jo

  • Hi Kalle,


    klar, kenn ich. Darüber bin ich ja eigentlich erst auf die Idee eines DSC gekommen.
    Aber komplett kaufen möchte ich eigentlich nicht - wo bleibt da der Spaß. [:o)]
    Ich hatte eine Zeit lang mit der vorbestückten und bereits programmierten Version des BSC geliebäugelt, aber SMD Bauteile löten stelle ich mit nicht so einfach vor.
    Gerade hier sehe ich die Vorteile des Arduino-Boards - keine Platine ätzen (lassen), keine Lötabreiten...und dabei noch den Horizont erweitern. [:D]
    Vielleicht kehre ich in einiger Zeit geläutert zu Deinem Vorschlag zurück, aber erstmal möchte ich abwarten, was noch für Beiträge und Anregungen kommen.


    Grüße Jo

  • Quote
    <i>Original erstellt von: John_Boy</i>
    Was haltet ihr von der Idee / Vorgehensweise ?
    Habe ich etwas übersehen / falsch eingeschätzt (bin in der Hinsicht blutiger Anfänger)?
    Hat schon jemand diese / ähnliche Lösung umgesetzt ?


    Dein vorhaben sollte problemlos funktionieren.
    Du kannst dir noch Ascom Teil sparen in dem du die Umrechnung zwischen Encoderwerte -&gt; Alt/Azm -&gt; Ra/Dec auch in Arduino machst.


    Das einzige was du dann noch selber machen musst ist die Ausrichtung / Alignment.


    Grüße
    Igor

  • Hi Jo,


    ich nutze selbst diverse Sensoren über Arduino Boards für einige astronomische Anwendungen (Da man einfach genauere Sensoren verwenden kann und zum Bruchteil der Kosten von kommerziellen Lösungen, außerdem kann man bei der Programmierung noch einige Features einbauen die es so nicht gibt)


    Ich kann Dich nur dazu ermutigen, auch wenn Du bisher keine große Programmiererfahrung hast gibt es für die meisten Sensoren (ich verwende z.B. hauptsächlich I2C ) bereits fertige Arduino Libraries .


    Willst Du dann aber noch deine Daten auf dem PC haben und damit "etwas machen" setzt das natürlich andere Kenntnisse voraus.


    Hier mal ein Beispiel was ich für mich geschrieben habe und das alles vollautomatisch erledigt, z.B. :


    Einlesen von Temperatur , Luftdruck, Luftfeuchtigkeit über die USB/ serielle Schnittstelle (Arduino) -&gt; senden über LAN/ TCP an die Montierung (Refraktion Parameter)
    GPS Receiver mit PPS Signal um PC und Montierung mit exakter Zeit zu synchronisieren .
    Fokussierung über Temperatur Kompensation -&gt; Ermittlung der Linearen Regression gesteuert über einen RoboFocus Motor.




    Ich plädiere zwar schon "jahrelang" bei einigen ASCOM Programmierern das die mal eine offene Schnittstelle für ARDUINO o.Ä. implementieren aber da einige der Jungs oft irgendwie in einem kommerziellen Hardware oder Software Projekt involviert sind, haben die nicht wirklich sooo großes Interesse das als Standard zu integrieren... :)



    Thomas

  • Hallo Igor und Thomas,


    Danke für das Feedback und die Tipps. Das stimmt mich zuversichtlich.
    Meinen größten Respekt für eure Projekte.


    Als Anfänger werde ich zunächst versuchen den vorgegebenen Pfad möglichst 1:1 umzusetzen, um eine funktionierende Basis zu bekommen. Modifikationen / Erweiterungen werde ich erst vornehmen, wenn ich nicht so weiterkomme (die zugehörigen Fragen werde ich dann hier stellen [;)]) oder ein wenig mehr Erfahrung habe.
    Aber euere Projekte zeigen, dass mit dem Arduino-Board einiges möglich ist.


    Ich würde mich freuen, wenn es noch weitere Beiträge zu dem Thema gäbe.
    Für alle die hier mitlesen, ein Tipp zu einer ähnlichen Diskussion im schwarzen Forum .


    Grüße Jo

  • Hallo Freunde,


    endlich habe ich mit dem Projekt begonnen und wie angedroht kommen jetzt die Fragen...ich hoffe ihr könnt mir helfen.


    Letztendlich bin ich genau so vorgegangen, wie oben beschrieben.
    Zunächst haben ich die Encoder (ALPS – STEC 11) ans das Board angeschlossen und über die Standard Arduino Library „Encoder – Basic“ auf Funktion getestet. Hat prima funktioniert, allerdings war ich ein wenig verwundert, da der Encoder mit 15 Impulse / 30 Rastungen angegeben und im Serial Monitor pro Umdrehung 60 Counts/Impulse (?) angezeigt werden...pro Rasterung 2 counts – aber das nur nebenbei.
    Das eigentliche Problem kommt jetzt:
    Nach Upload des DSC Source Code auf den Arduino und der Einrichtung des entsprechenden ASCOM Treibers von Dave Ek ist es mir sogar gelungen den DSC über Chartes du Ciel zu initialisieren und zu verbinden.
    Allerdings geschieht beim Drehen an den Encodern nichts. Das „Zielfenster“ bewegt sich nicht oder nur sporadisch.
    Mir ist sofort aufgefallen, dass bei Drehen der Encoder die LEDs (TX, RX) auf dem Board nicht aufleuchten (so wie ich es vom Encoder-Test her kannte).
    Natürlich habe erst vermutet, dass entweder die Verdrahtung der Encoder mit dem Arduino oder versehentlich die falschen Pins auf dem Board verwendet wurden. Diese Fehlerquellen möchte ich aber inzwischen ausschließen, weil ich diese mehrfach überprüft habe.
    Aber damit bin ich mit meinem Latein schon am Ende...
    Ich habe mal versucht den Source Code nachzuvollziehen, aber mit meinen geringen Programmierkenntnissen komme ich da nicht weit.
    Leider gelingt es mir auch nicht die Impulse auf dem Serial Monitor des Arduino darzustellen. Kann natürlich auch sein, dass diese gar dort nicht ankommen....[B)]
    Meine Vermutung ist inzwischen, dass, aus welchen auch immer, die verwendeten ALPS – STEC 11 Encoder nicht zum Source Code passen und doch hochauflösende Encoder verwendet werden müssen.
    ....aber eigentlich müssen doch nur Impulse gezählt werden....


    Wie ihr seht bin ich ziemlich ratlos [xx(] und hoffe ihr habt eine Idee aus der Sackgasse rauszukommen.


    Grüße Jo

  • Quote
    <i>Original erstellt von: John_Boy</i>
    <br />Hallo Freunde,


    ich möchte meiner äquatorialen Montierung digitale Teilkreise spendieren.


    Bei meiner Recherche im Netz bin ich auf eine interessante Selbstbaulösung auf Basis des Arduino Mikrocontrollerboard gestoßen, die ich (hoffentlich) weiterstmöglich selbst umsetzen und dabei noch ein wenig in die Programmierung des Arduino Mikrocontroller einsteigen kann.
    Um möglichst schnell ans Ziel zu kommen und einen praxisbezogenen Einstieg in die Thematik zu finden, möchte ich diese Lösung aufgreifen und auf mein Equipement anpassen.


    Damit sich der Schaden und die Aufwände im Falle eines Scheiterns in Grenzen halten (hochauflösende Encoder sind hierbei scheinbar die kostspieligsten Bauteile), möchte ich zunächst die Funktion als Testaufbau vornehmen:
    D.h. Arduino board programmieren und mit Dummy-Encoder an einem Planetariumsprogramm testen.
    - Basis der Programmierung soll der Quellcode von Mike Fulbright (ganz unten) sein
    - als Dummy Encoder möchte ich zunächst einfache Drehimpulsgeber wie z.B. diesen oder eine optomechanische Maus (mit optischen Encodern) verwenden
    - Verbindung mit CDC / Stellarium mittels des Ascom-Treibers von Dave Ek .
    An Ende der Testphase soll alles soweit funktionieren, dass nur noch die Dummies gegen hochauflösende Encoder (z.B. diesen) ausgetauscht und an die Montierung angebaut werden müssen.


    Was haltet ihr von der Idee / Vorgehensweise ?
    Habe ich etwas übersehen / falsch eingeschätzt (bin in der Hinsicht blutiger Anfänger)?
    Hat schon jemand diese / ähnliche Lösung umgesetzt ?



    Grüße Jo



    Hallo Jo,


    das sollte mit den Sourcen als Basis schon umsetzbar sein. Ich selber bin im Moment auch dabei das mit einem Arduino zu machen, nachdem meinen Schrittmototrsteuerung fertig ist. Ich bin auch Anfänger aber nach den ersten Erfolgen macht das richtig Laune ;)
    Anbindung an dem PC ist ein bisschen kniffelig. Möglich wäre die Nutzung schon vorhandener Ascomtreiber wie die genannten von David Ek oder auch LX200 Implementationen. Zu LX200 gab es hier im Forum schon einiges, hab die Links aber gerade nicht hier.
    Spannend ist auch das Projekt: http://www.caseyfulton.com/bui…troller-and-pc-interface/
    Die Encoder gibts es übrigens bei mouser.com in München etwas billiger, sofern man über 65€ und sich die 21€ Versand spart.


    Gruß Dirk


    PS: Mir scheint, dass wir hier so langsam ein neues Forum brauchen "Mikrocontroller - Selbstbau" ;)

  • Guten Abend Dirk (und alle anderen Mitleser und Interessierten),


    schön, dass Du ebenfalls an einem ähnlichen Projekt dran bist. Würde mich freuen, wenn Du hier berichten könntest.
    Auch wenn Du noch Informationen bzgl. LX200 Implementationen findest solltest, wäre ich ein dankbarer Abnehmer [:p] . Ich konnte leider nichts dazu finden, was mir für mein Projekt weiterhelfen könnte.
    Insgesamt scheint es wenig Interesse an Selbstbaulösungen digitaler Teilkreise zu geben.
    Motorsteuerungen scheinen ein größeres Publikum zu finden [V].


    Insgesamt hatte ich gehofft ein wenig mehr Feedback zu bekommen, aber mir ist natürlich klar, dass Hilfe per Ferndiagnose nicht so einfach ist.
    Aber aufgegeben wird nicht [B)]!


    Neue Strategie:


    Ich versuche dem Vorschlag von Igor folgen:


    Quote
    <i>Original erstellt von: universe</i>


    Du kannst dir noch Ascom Teil sparen in dem du die Umrechnung zwischen Encoderwerte -&gt; Alt/Azm -&gt; Ra/Dec auch in Arduino machst.


    Das einzige was du dann noch selber machen musst ist die Ausrichtung / Alignment.


    Die Umrechnung zwischen Encoderwerte in Arduino nach Ra/Dec scheint hierbei der wesentlich einfachere Part zu sein.
    Bzgl. Alignment und vor allem der Visualisierung habe ich noch keine Ahnung wie und wo (auch Arduino via Display oder PC) das umsetzbar ist.
    Insofern könnt ihr sicher sein, dass ich euch mit weiteren Fragen nerven werde [}:)].


    Die Erste schon jetzt:
    Muss bei einer exakt eingenordeten Montierung überhaupt ein „aufwendiges“ Alignment erfolgen ? Eigentlich sollte es doch ausreichen einen Stern anzufahren und dessen Koordinaten als Referenz (Basis) zu nehmen.


    Natürlich bin ich auch darüber hinaus über Ideen, Vorschläge, Erfahrungen sehr dankbar.



    Grüße Jo

  • Hallo Jo,
    bist du mit deinem Problem schon weitergekommen. Auf der Seite:
    http://eksfiles.net/digital-se…les/building-the-circuit/
    gibt es noch ein Testprogramm "EkBoxTester", welches zur Überprüfung verwendet werden kann. Prinzipiell kann man die Funktion der Selbstbaulösung mit einem SerialTerminal Programm testen. Dort sollte, wenn man ein "Q" wie Query an das Arduino-Borad sendet, folgende Rückantwort kommen:
    (AZ-Position als Zahl mit führenden Nullen)"Tabulator"(ALT-Position als Zahl mit führenden Nullen)
    Genau dies fragt der Ascomdriver ab.
    Gruß Tino

  • Hallo Tino,


    ein fettes <b>DANKESCHÖN</b> ! - den EkBoxTester kannte ich noch nicht. Das hilft bei der Fehlersuche schonmal weiter und bestätigt meine Annahme, dass gar keine Signale vom Board kommen.
    Ich kann mir ehrlich gesagt keinen wirklichen Reim darauf machen, woran das liegt.
    Da der Quellcode von Michael Fulbright ja prinzipiell funktionieren sollte, können als Fehlerquelle doch nur meine Test-Encoder in Frage kommen. Aber weshalb sollten sich diese Impulse von denen eines (hochauflösenden) optischen oder kapazitiven Encoders unterscheiden ?
    Könnte es daran liegen, dass bei meinen ALPS – STEC 11 nur Signal A, B und Masse angeschlossen wird (also keine +5V)
    Ich hoffe das war jetzt keine total idiotische Frage bzw. Vermutung...[:I]


    Advendliche Grüße Jo

  • Hallo Jo,
    genau das wollte ich schon fragen. Ein normaler (aktiver) Encoder gibt an den 90" phasenverschobenen Signalen A und B jeweils 0V und 5V aus. Dh. 0 oder 1 sind auf dem Arduinoboard 0V oder 5V an den Eingängen. Wenn du nun aber an deinem Drehencoder die Masse am gemeinsamen Anschluss anlegst, schalten die A und die B Stellung jeweils auf Masse. Dh. logisch 1 wäre 0V und logisch 0 wäre undefiniert (hoher Widerstand). Prinzipiell kann man bei den Mikrokontrollerboards die Eingänge so definieren, dass sogennante Pull-Up-Widerstände verwendet werden um das Signal auf +5V zu ziehen, welche im Ruhezustand 5V also logisch 1 sind und wenn sie von deinem Encoder auf Masse geschaltet werden entsprechend logisch 0 werden:
    Siehe
    pinMode(pin, INPUT); // Anschluss als Eingang definieren
    digitalWrite(pin, HIGH); // Pull Up Widerstand aktivieren
    Du kannst aber auch gleich statt der Masse am Encoder +5V anlegen. Das obere Beispiel hat aber Vorteile bezüglich undefinierte Schaltzustände und Störungen.
    Gruß Tino

  • Hallo Tino und Günter,


    oje, ihr bringt micht an den Rand meiner nicht vorhandenen Programmierkenntnisse. [:D]
    Da musste ich mich erstmal einlesen.


    Nein, die Encoder Eingänge haben keine Pullups und es liegen nach meiner Messung initial auch keine 5V an.
    Könnte ich das Problem dann damit lösen indem ich im Quellcode die Encoder Eingänge anders initialisiere (den orangen Teil würde ich einfügen) ?
    -----
    // initialize the encoder inputs
    pinMode(ALT_enc_A, INPUT);
    <font color="orange">digitalWrite(ALT_enc_A, HIGH);</font id="orange">
    pinMode(ALT_enc_B, INPUT);
    <font color="orange">digitalWrite(ALT_enc_A, HIGH);</font id="orange">
    pinMode(AZ_enc_A, INPUT);
    <font color="orange">digitalWrite(AZ_enc_A, HIGH);</font id="orange">
    pinMode(AZ_enc_B, INPUT);
    <font color="orange">digitalWrite(AZ_enc_B, HIGH);</font id="orange">
    -----


    Darüber hinaus entnehme ich eurer Antwort, dass meine Vermutung bzgl. der fehlenden 5V Anschlüsse an den Encoders richtig war !?


    Grüße Jo

  • Hallo Jo,
    genauso würde ich es versuchen. Wenn der Encoder dann am Arduino angeschlossen ist, kannst du ja nochmal die Spannung messen. Dann sollten die Anschlüsse im Ruhezustand auf 5V liegen und wenn der Encoder auf Masse schaltet, sollten die Arduinoanschlüsse auch auf 0V gehen. Ich habe mir das eigentliche Programm auch nochmal angeschaut, aber dass ist recht gut gemacht. Das für den Anfänger etwas kompliziertere ist die Verwendung von Interrupts für die Pinauslesung. Das macht man, dass möglichst schnell ausgelesen werden kann, ohne das beispielweise Tics übersprungen werden.
    Gruß Tino
    p.s. Ich habe übrigens vor einiger Zeit eine STM32-Discovery Mikrocontroller programmiert, um einen Sinus-Encoder mit relativ schnellen Analog-Digitalwandlern auszulesen. Der Sinusencoder ist ähnlich den normalen digitalen Encodern, nur dass man hier keine diskreten Tics hat, sondern zwei phasenverschobene Sinusspannungen. Diese kann man dann zwischen den Tics interpolieren und somit eine hohe Auflösung erreichen (Sub-Bogensekunden). Diese wird dann auf Basis einer hochgenauen Uhr berechneten Soll-Position verglichen und an das Autoguiderport meiner Losmandy G11 Gemini als Korrektur gesendet. Also ähnlich einem TDM (Teleskop Drive Master). Funktioniert auch gut, aber die Encoder sind schonmal recht teuer.

  • Hallo Tino,


    klasse, jetzt sieht das im EkBoxTester schon deutlich besser aus.
    Wobei beim Zählen der Impulse manchmal Sprünge auftreten und machchmal gar nichts passiert. Vorallem bei einem der beiden Encoder.
    Ich muss jetzt mal überprüfen woher das kommt und das Ganze auch über ASCOM in CDC testen.
    Jedenfalls bin ich jetzt einen großen Schritt weiter und weiß das es mit den vorhandenen Bauteilen prinzipiell funktionieren müsste.
    Insofern nochmal meinen herzlichsten Dank für Deine Unterstüzung.


    Was ihr da so alles in Eigenarbeit entwickelt, verdient den größten Respekt. Leider findet man selten derartige Lösungen deutscher Sprache im Netz. Ich denke es würde schon einige Leute geben, die an ähnlichen Lösungen interessiert sind, aber wie ich das nötige KnowHow (noch) nicht haben.


    Grüße Jo

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!