ATM - Martin Cibulski - 2004-02-16
Start > Fernrohrsteuerung mit Mikrocontroller III


Fernrohrsteuerung mit Mikrocontroller III

Dies ist mein neuestes System; es wird noch entwickelt.

In diesem Entwurf verwende ich Infineon TCA3727 Schrittmotortreiber wie ich es schon in der ersten (modularen) Steuerung getan habe.
Aber hier werden die ICs nur wegen ihrer Fähigkeit zur Strombegrenzung verwendet.
Der Mikrosschrittbetrieb wird über Pulsbreitenmodulation (PWM) direkt von der CPU gesteuert.
Dafür besitzt der AVR mega128 Prozessor zwei unabhängige 16 bit Timer mit je zwei PWM-Ausgängen (für zwei Spulenströme pro Motor).

Im Mikroschrittbetrieb laufen beide Timer mit konstanter Frequenz und erzeugen unabhängige Interrupts.
In der Interrupt-Routine werden die PWM-Intervalle und -Phasen (+/-) für den nächsten Takt gesetzt.
Die Pulssteuerung selbst wird dann selbstständig von der Hardware gesteuert.
Die Interrupt-Routine setzt die PWM-Parameter für den nächsten Takt im Voraus,
so ist auch wenn beide Interrups gleichzeitig auftreten noch genug Zeit für die CPU,
um alle Steuerregister rechtzeitig zu beschreiben.
Wenn ein Motor schnell laufen soll, schaltet die zugehörige Interrupt-Routine automatisch auf Halbschrittbetrieb um.
Dann wird der Timer mit einer zur Dauer eines Halbschritts passenden Periode betrieben und 100% Einschaltzeit (or 0% entsprechend der Schrittfolge) eingestellt.
Wenn die Drehzahl zunimmt, nimmt entsprechend die Periode des Timers ab.
So sind exakt passende Halbschrittintervalle für beide Motoren möglich, auch wenn Sie mit verschiedenen Geschwindigkeiten laufen.

Der Prozessor mega128 ist der einzige (AVR) mit diesen zwei unabhängigen PWM Timern.
Er hat 64 Anschlüsse und ist nur als SMD ('Thin Plastic Quad Flat Package', TQFP) mit 0.8mm Raster erhältlich.
Daher konnte ich keine Lochrasterplatine für diese Steuerung verwenden. Um trotzdem alles möglichst einfach zu halten,
entwarf ich nur eine einlagige Platine und platzierte die CPU auf die Unterseite.
Einige Drahtbrücken (17) waren auf der Oberseite nötig, dafür blieb mir die Herstellung einer doppelseitigen Platine erspart.

Hier gibt es einige Dateien zum Download.



Bedienteil mit LCD

Das Bedienteil hat acht Taster und ein Display mit 2x8 Zeichen (HD44780 kompatibel).

Ich möchte alle Funktionen von diesem Bedienteil steuern können wie es auch bei anderen Fernrohrsteuerungen üblich ist.
Ein Menü wird gerade programmiert. Dann werde ich mehr und mehr Rechenfunktionen auf die CPU übernehmen.
Am Ende wird der PC, welcher zur Zeit über die serielle Schnittstelle verbunden ist, nicht mehr benötigt.

Das Flachbandkabel wird später durch ein robustes Rundkabel ersetzt.

mc_3_handbox.jpg



Hauptplatine der Steuerung

Die Hauptplatine ist nur 100x75 mm groß.
Für die TCA3727 Schrittmotortreiber wird eine große Kupferfläche auf der Platine zur Kühlung empfohlen.
Statt dessen stellte ich aus Stahlblech (Kupfer geht auch) einfache Kühler her und lötete sie direkt an die Massepins der ICs.
Der Motorstrom ist auf 500 mA pro Spule begrenzt. Dann ist die maximale Wärmeabgabe 2.5 Watt pro Treiber-IC bei Versorgung mit 24V.

mc_3_board_top.jpg



Unterseite der Hauptplatine mit der CPU

Einige Daten zum Atmel AVR mega128
64 KWorte Flash-Programmspeicher
4 KBytes RAM
4 KBytes EEPROM
16 MHz Takt, 1-2 Takte pro Maschinenbefehl
32 Register (8 bit, drei Paare davon als 16 bit Zeiger verwendbar)

mc_3_board_bottom.jpg



Aktueller Entwicklungsstand (2004-02-22)

Fließkomma-Routinen
IEEE 64 bit Fließkommaroutinen für ADD,SUB,MUL,DIV,SQRT,SIN,COS,ATAN programmiert und getestet.
Korrekte Erkennung von Überlauf und Null-Ergebnissen ergänzt
Weiter: ATAN2 Funktion, Mehr Kommentare im Programm, Tests mit schwierigen Spezialfällen

Koordinatentransformation
Ausrichtung über zwei Sterne funktioniert, findet Z3 automatisch.
Exakte (nicht iterative) Transformation der Teleskopkoordinaten (scheinbare <-> wahre) inkl. Z1, Z2
Nachführung und Goto funktioniert
Indoor-Tests mit Simuator und Laserpointer waren erfolgreich
Erster erfolgreicher Test mit Teleskop am 20.2.2004.

Benutzerführung
LCD zeigt aktuelle Position am Himmel, wenn sich das Teleskop bewegt.
Über ein Menü auf dem Bedienteil kann die Steuerung bedient werden.
Weiter: Anzeige von Meldungen (Feedback nach Aktionen, Warnungen, Fehler) anzeigen

Objektdatenbank und Goto-Funktion
Inhaltsverzeichnis von 'Dateien' im Speicher mit Objektpositionen:
64 Sterne zum Ausrichten, alle Messier-, NGC- und IC-Objekte
Eingabe einer beliebigen RA/DEC Position über das Bedienteil mit Hilfe der links/rechts Tasten
Weiter: Unterstützung von benutzerdefinierten Listen im EEPROM

Hardware
Serielles EEPROM im Platinenlayout ergänzt
Sicherung und Schutzdioden ergänzt
Weiter: Neuen Prototyp nach dem neuen Layout bauen