Home > Technologie > Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

0
Advertisement

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Star Track ist ein auf Arduino basierendes, GoTo-mount inspiriertes Star Tracking System. Es kann ein beliebiges Objekt in den Himmel platzieren und verfolgen (Celestial-Koordinaten werden als Eingabe gegeben) mit 2 Arduinos, einem Gyro, RTC-Modul, zwei Low-Cost-Schrittmotoren und einer 3D-gedruckten Struktur.

Im ersten Schritt werde ich Ihnen die Grundlagen der Positional Astronomy vorstellen. Als nächstes werde ich erklären, die Idee hinter diesem Projekt. Ich gebe Ihnen die Tinkercad Links für die 3d gedruckten Teile. So können Sie sie nach Ihren Wünschen bearbeiten. Außerdem werde ich einen Fehlerbehebungsleitfaden auf der Grundlage der Probleme, die ich während dieses Builds. Auf diese Weise müssen Sie nicht die gleiche Sache zu bauen. Vielleicht finden Sie einen besseren Algorithmus, um die Sterne zu verfolgen. Oder Sie können die Struktur zu entwickeln und größere Motoren, um ein Teleskop zu fahren? Ihre Phantasie (und Ressourcen natürlich: ')) ist die Grenze. Lassen Sie mich wissen, über Ihre bauen!

WICHTIG!:
Dieses Projekt umfasst Laser-Pointer braucht daher Sicherheitsmaßnahmen vor dem Einsatz. In vielen Ländern ist es illegal, Laser auf ein Flugzeug zu richten und sie in der Nähe von Flughäfen zu benutzen. Weitere Informationen finden Sie unter : http://www.laserpointersafety.com/

WICHTIGE NOTIZ:

Sie können mit einem günstigen Rotpunktvisier anstelle des Lasers. Dadurch wird vermieden , alle Probleme mit dem Laser (Augensicherheit, Rechtsfragen, Flugzeuge). (Danke für das Feedback von Marty auf hackaday)

Schritt 1: Ein bisschen Positional Astronomie

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Um die Sterne zu verfolgen, haben Sie die Grundlagen des zu wissen Koordinatensystem Celestial . Himmelskoordinaten definieren Positionen von Objekten am Himmel. Es basiert auf den Beobachtungen der alten Astronomen. Sie glaubten, dass die Erde bewegungslos und im Mittelpunkt des Universums war. Der Himmel, sie dachten, war ein bewegender Bereich rund um die Erde, eine Himmelskugel. [1] In ihrer modernen Bedeutung, wie sie in der Astronomie und Navigation verwendet wird, ist die Himmelssphäre eine imaginäre Drehkugel mit undefiniertem Radius. Alle Gegenstände am Himmel können so gedacht werden, wie sie auf der Kugel liegen. [2] Anders als Planeten, da die Entfernung zwischen Sternen und Erde gigantisch ist, können wir die Positionen der Sterne vereinfachen, indem wir sie auf eine imaginäre Kugel projizieren.

Es gibt verschiedene Möglichkeiten, eine Objektposition auf der Himmelssphäre anzugeben. Diese unterscheiden sich in ihrer Wahl der Grundebene, die die Himmelskugel in zwei gleiche Hemisphären entlang eines großen Kreises teilt.

Jedes Koordinatensystem ist für seine Wahl der Grundebene benannt:

  1. Horizontales System
  2. Äquatorialsystem
  3. Ekliptisches System
  4. Galaktisches System
  5. Supergalaktisches System

Äquatoriales System

Ich habe das Äquatorialsystem für dieses Projekt gewählt. Da sich die Höhe und der Azimut eines Sterns ständig ändern, ist es nicht möglich, das horizontale Koordinatensystem in einem Positionskatalog zu verwenden. Und da dieses Projekt die Objekte in den Himmel auf der Grundlage der Koordinaten verfolgen wird. Benötigen wir ein Koordinatensystem für die Katalogisierung. Eine auf dem himmlischen Äquator und den himmlischen Pole basiert und in einer ähnlichen Weise zu Breiten- und Längengrad auf der Oberfläche der Erde definiert. In diesem als äquatoriales Koordinatensystem bezeichneten System wird die Position eines Objekts durch die Deklination und die Rektaszension definiert. Und die Koordinaten eines Objekts am Himmel ändern sich nicht relativ zu Ihrer Position. [3]

Äquatoriale Koordinaten auf der Himmelskugel

Wie die Erde hat auch die Himmelskugel einen Äquator, einen Nordpol und einen Südpol, den so genannten himmlischen Äquator, den himmlischen Nordpol und den himmlischen Südpol. Dies sind nur Projektionen von Erdäquator, Nordpol und einem Südpol auf der Himmelskugel.

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Wie Koordinaten auf der Erde (Länge und Breite), definieren zwei Koordinaten einen Punkt auf der Himmelskugel, Deklination und Rektaszension.

Deklination

Die Koordinate, die angibt, wo ein Objekt zwischen den himmlischen Pole liegt, ist Deklination. Gemessen vom Himmelsäquator reicht sie von 0 ° bis 90 ° am nördlichen Himmelsstock und bis zu + 90 ° am südlichen Himmelsstock. [4]

Rechter Aufstieg

Die zweite Koordinate Rektaszension (RA). Es ist wie (aber nicht das gleiche wie) Längengrad. Es lokalisiert, wo ein Stern entlang des himmlischen Äquators ist. Es hat einen Nullbezugspunkt wie grün, die die genannte Vernal Equinox Punkt (wir werden in Ortung erhalten , die später). [4] Im Gegensatz zur Declination ändert sich die Rektaszension mit der Zeit (Rotation der Erde) und die Koordinate der Rektaszension ist nicht in Grad, sondern in Stunden Minuten und Sekunden. Die Himmelskugel wird eine volle Umdrehung in 24 Stunden machen Sternzeit (dh , wenn ein Sterne Koordinaten 20. Dezember, 5h RA. Nach 2 Stunden werden die Koordinaten 20dec, 7hRA sein.) Da 360/24 = 15 1 Stunde der RA 15 Grad .

Sternzeit

Siderische Zeit ist anders als Sonnenzeit. Ein siderischer Tag ist ungefähr 4 Minuten weniger als ein Sonnentag. Wegen der Erdumlaufbahn um die Sonne. Ich werde nicht in Details über, wie man sidereal Zeit berechnen. Ich werde einige Links unten, wenn Sie interessiert sind. Sie können einen verwenden siderische Rechner . Lokale Siderische Zeit (LST) zeigt den rechten Aufstieg am Himmel an, der gerade den lokalen Meridian überquert. Wenn also ein Stern eine Rektaszension von 05h 32m 24s hat, wird er auf eurem Meridian bei LST = 05: 32: 24 liegen. [5] Mit anderen Worten, wenn Sie den Norden bei 0h Local Sidereal Time Gesicht. Der Vernal Equinox Point (0h Ra) liegt direkt über Ihnen. Um es klarer zu öffnen diese Animation zu verstehen

Http: //astro.unl.edu/classaction/animations/coords ...

Wählen Sie Ihren Standort und drücken Sie Start Animation, Sie sehen eine Linie drehen. Wenn diese Linie über der Stockzahl ist, ist sie 0h Lokale siderische Zeit.

Hier ist eine Demonstration von Äquatorialkoordinaten auf der Himmelskugel von UNL Astronomy.

Celestial-Equatorial (RA / Dec) Demonstrator

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Wie man den Nordhimmelsstab lokalisiert

Nun kennen wir das Koordinatensystem der Himmelssphäre. Aber wie finden wir einen Bezugspunkt, um unser Koordinatensystem zu benutzen? Der Nordhimmelsstab ändert sich nur mit deiner Breite. Und kann leicht von der Nord-Sterne. Hier ist eine interaktive Demonstration, können Sie den Breitengrad und drücken Sie den Schalter, so dass Sie sehen können, wo die Himmelskugel befindet.

Celestial und Horizon Systems Vergleich

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Auch hier können Sie die Bewegung eines Gegenstandes auf der himmlischen Sphäre animieren:

Koordinatensystemvergleich

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Hinweis:

Ich habe nicht in Details, da dies so etwas wie eine Einführung in die Position Astronomie. Wenn Sie mehr erfahren wollen, werde ich die Links, die wirklich hilfreich für mich. Es gibt auch Probleme, die Sie lösen können, um zu üben, was Sie gelernt haben. Auf diese Weise können Sie die Koordinaten eines Sterns mit einer gegebenen Breite und Zeit berechnen.

Weiterführende Literatur:

Geschichte - http: //csep10.phys.utk.edu/astr161/lect/retrograde ...

RA und DEC - http: //www.physics.csbsju.edu/astro/sky/sky.11.htm ...

Celestial Sphere - http: //www.astronomyforbeginners.com/astronomy/cel ...

Koordinatensysteme - https: //dept.astro.lsa.umich.edu/ugactivities/Labs ...

Himmelskoordinaten - http: //sbo.colorado.edu/SBO_OLD_SITE/sbo/astroinfo ...

Astronomische Objekte zu finden - https: //www.saddleback.edu/faculty/mhaeri/document ...

Lokale Side Echt Taktumwandler - http://www.jgiesen.de/astro/astroJS/siderealClock/

Wie Sternzeit zu ermitteln - http://aa.usno.navy.mil/faq/docs/GAST.php

Referenzen:

[1] http: //www.skyandtelescope.com/astronomy-resources ...

[2] http: //www.newworldencyclopedia.org/entry/Celestia ...

[3] http: //www.jtwastronomy.com/tutorials/celestial_co ...

[4] http://astro.unl.edu/naap/motion1/cec_units.html

[5] https: //docs.kde.org/trunk5/en/kdeedu/kstars/ai-si ...

Werbung

Schritt 2: Die Idee

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Viele Computer-Teleskope haben eine Art von Teleskop-Mount und zugehörige Software, die automatisch ein Teleskop auf astronomische Objekte, die der Benutzer auswählt. Genannte GoTo Halterungen. Äquatoriale GoTo-Halterungen können wie eine herkömmliche äquatoriale Montierung den Nachthimmel verfolgen, indem sie die Achse mit der rechten Ascension antreiben [1]

Da Laser-Pointer sind eine perfekte Möglichkeit, um Sterne, ich dachte, ein Laser-Pointer mit einem GoTo Mount wäre ein perfektes Werkzeug für die Lokalisierung von Sternen und zu verfolgen.

Zuerst musste ich eine 2-Achsen-Halterung entwerfen.

  1. 360-Grad-Drehachse für RA
  2. Eine Auf-Ab-Achse für DEC

Nach dem Ausrichten der RA-Achse mit dem Nord-Celestial-Pole sollte ein Arduino, das mit einem RTC verbunden ist, in der Lage sein, RA mit siderischer Zeit zu berechnen und zu verfolgen. Und Sie können die 2 Achsen auf die Benutzereingabe von einem Computer aus über seriell einstellen.

Aber zuerst musste ich einen Weg finden, um genau den Berg auf gegebene Grade zu zeigen. Die Hauptidee war, Schrittmotoren zu verwenden und ihnen einen spezifischen Schritt zu geben. Aber nach einigen Tests fand ich heraus, dass das Zeigen nicht genau war (ein paar Grad).

Stattdessen verwendete ich ein Gyroskop, das auf den Laser-Zeiger gesetzt wurde, um die Grade auf den zwei Achsen aufzuspüren, auf diese Weise konnte ich einen Befehl zum Schrittmotor schicken, um zu beginnen und die Bewegung zu stoppen, wenn notwendig.

Schritt 3: Werkzeuge & Teile

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Ich habe zwei Arduino's in diesem Projekt (wegen des Fehlens von digitalen Pins) .One zur Kontrolle der Motoren, die anderen die Gyro-Daten zu verarbeiten und senden Sie Befehle an den anderen Arduino (Master-Slave) Ich hatte einen Uno und Nano herumliegen So dass ich sie verwendet. Sie können auch andere Arduino's.

Hier sind die wichtigsten Teile, die ich in diesem Projekt:

5v Stepper Motor (x2) - 3,68 $

Arduino Uno r3 Klon - 5,80 $

Arduino Nano Klon - 2,18 $

3-Achsen - Gyro - 2,03 $

RTC - 1,07 $

______________________________________

Gesamt - 14,76 $

Ebenfalls,

  • Viele Überbrückungskabel
  • 30x47x11mm Axial - Kugellager (wieder können Sie ein Lager verwenden Sie aber haben die Dimension auf die Teile zu ändern.)
  • (10x) M3 Schrauben und Muttern
  • (4x) 623 2RS ​​Lager (ich hatte diese Lager im Moment, Sie können jedes mögliches Lager verwenden, aber Sie müssen die Stücke vom tinkercad zu Ihren Maßen justieren.
  • X-acto Messer
  • Super-Klebstoff
  • Ein Laser - Pointer ( empfohlen )

Schritt 4: Auslegung der Teile

Der erste Teil der Konstruktion ist die Basis. Ich dachte, ein Delta-Typ Basisplatte, so kann ich 3 Beine befestigen und anpassen. Hier ist die Basisplatte Sie können es auf Tinkercad bearbeiten, wie Sie möchten. Ich werde auch alle STL-Dateien in einem Zip-Ordner.

Die Basis

Grundschraube

Stativhalter (an der Basis befestigt)

Steigung (DEC)

Gyro-Aufnahme

Das Basisgetriebe

Hinweis: Ich gebe diese Tinkercad Links, so dass Sie die Teile nach Ihren Wünschen ändern können. Alle anderen Dateien, einschließlich diese befinden sich im Ordner Parts.zip.

Die Gänge

Jetzt für den wichtigsten Teil, die Gestaltung der Zahnräder. Ich habe versucht, die Zahnräder in Autodesk Inventor zu schaffen, aber später fand ich ein Zahnradgeneratorwerkzeug, das Zahnräder zu einer .stl Akte erzeugt. Das war ein Lebensretter für mich.

http://joostn.github.io/OpenJsCad/

Ich druckte die Teile mit einem prusa i3 3d Drucker.

Schritt 5: Aufbau-Basisstruktur

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Schritt 6: Montage - Elektronik

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Schritt 7: Code

Wie funktioniert es?

Es gibt zwei Arduino arbeitet in Ordnung. Arduino Uno als Meister und Nano als Sklave.

Hauptmodul

Das Master-Modul (Uno) hat zwei Eingänge,

  1. Gyro-Daten
  2. RTC (Echtzeituhr) Daten

Und 6 Ausgänge,

  1. Cw (Grundmotor im Uhrzeigersinn)
  2. Ccw (Grundmotor gegen den Uhrzeigersinn)
  3. Stahp (Grundmotoranschlag)
  4. Cw2 (DEC-Motor im Uhrzeigersinn)
  5. Ccw2 (DEC-Motor entgegen dem Uhrzeigersinn)
  6. Stahp2 (DEC-Motoranschlag)

Die RTC wird auf UTC-Zeit eingestellt, eine Funktion berechnet die lokale siderische Zeit in Grad und dreht die Montierung auf 0h RA-Position. Die Schleife prüft ständig, ob die Gyro-Daten gleich den Benutzereingaben & siderischen Zeitdaten sind. Die Voreinstellung ist 0,0. Wenn eine Änderung vorliegt und die Gleichheit durchbricht, sendet das Mastermodul einen Befehl an das Slave-Modul.

  • Wenn der Benutzerwert höher als der Kreiselwert ist, wird ein Signal durch cw gesendet, der Motor dreht im Uhrzeigersinn.
  • Wenn der Benutzerwert kleiner als der Gyro-Wert ist, wird ein Signal durch ccw gesendet, der Motor dreht gegen den Uhrzeigersinn
  • Wenn der Benutzerwert gleich dem Gyro-Wert ist, wird ein Signal durch stahp gesendet und der Motor stoppt

Gleiches gilt für cw2, ccw2, stahp2.

Auf diese Weise schaltet sich die Halterung auf die vom Benutzer festgelegten Koordinaten um. Und aktualisieren Sie mit sidereal Zeit damit es den Himmel zu verfolgen.

Hinweis: Ich serielle Kommunikation zwischen den beiden Arduino verwenden könnte , aber da die analogen Stifte durch die Eingänge verwendet werden , hatte ich digitale Stifte zu verwenden.

Ich lud den Code zu github, damit ich es von einem Ort aktualisieren kann:

https://github.com/gocivici/Star-Track

Master-Modul-Code:

  / * Dies ist der Quellcode für das Master-Modul von Star Track.  Erforderliche Bibliotheken: https: //virtuabotix-virtuabotixllc.netdna-ssl.com ... https: //github.com/jrowberg/i2cdevlib/zipball/mas ... Erstellt 20. Juli 2016 von Görkem Bozkurt * / # include <virtuabotixRTC .h> #include <MPU6050.h> MPU6050 mpu; // Definiere RTC.virtuabotixRTC myRTC (A0, A1, A2), doppelte M, Y, D, MN, H, S; (LST) in degrees.double LST_hours; // Variable zum Speichern der lokalen Seiten-Echtzeit (LST) in Dezimal-Stunden.unsigned long // Variable zur Speicherung der Benutzereingabe DECdouble val2 = 0; // Variable zur Speicherung der Benutzereingabe // Variable zum Speichern der Benutzereingabe DECdouble val2 = 0; RAdouble temp = val2; // temporärer Wert zum Speichern von val2const int stahp = 7, stahp2 = 10, const int cw = 8, cw2 = 11, const int ccw = 6, ccw2 = 9; void setup () {// set date Zeit nach (Sekunden, Minuten, Stunden, Wochentag, Tag des Monats, Monats, Jahres) myRTC.setDS1302Time (00, 38, 23, 5, 27, 7, 2016);  Serial.begin (115200);  PinMode (stahp, OUTPUT);  PinMode (cw, AUSGANG);  PinMode (ccw, OUTPUT);  PinMode (stahp2, OUTPUT);  PinMode (cw2, OUTPUT);  PinMode (ccw2, OUTPUT);  Verzögerung (5000); // vor Beginn warten, während (! Mpu.begin (MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G)) {} mpu.calibrateGyro ();  Mpu.setThreshold (3);} // - (end setup) --- void Schleife () {// dies aktualisiert die RA Grad mit siderischen Zeit 1degree auf einmal // auf diese Weise das Objekt oder Stern am Himmel Wird verfolgt.  If (floor (LST_degrees) == LST_degrees) {if (LST_degrees> 180) {val2 = temp + (360-LST_degrees);  } Else {val2 = temp-LST_degrees;  }} MyRTC.updateTime ();  LST_time ();  Recvdata ();  Pitch_check ();  Yaw_check ();  Timer = millis ();  Vektor norm = mpu.readNormalizeGyro ();  // Ich habe den Sensor mit einem 90-Grad-Winkel auf das Setup wegen // Kabelverbindungsprobleme gestellt.  Aus diesem Grund sind die Datenwerte des mpu6050-Chips in diesem Fall // unterschiedlich: // Rollendaten (X-Achse) ist Tonhöhe.  // Teilungsdaten (Y-Achse) ist Gierwinkel.  Yaw = yaw + norm.YAxis * timeStep;  Pitch = pitch + norm.XAxis * timeStep;  Serial.print ( "Yaw =");  Serial.print (Gieren);  Serial.print ( "Pitch =");  Serial.print (Tonhöhe);  Serial.print ( "LST_d =");  Serial.print (LST_degrees);  Serial.print ( "LST_h =");  Serial.println (LST_hours); // lokale siderische Zeit in Dezimalstunden.  Void recvdata () {// Diese Funktion empfängt Daten von seriell als (0,00,0,00) // splittet sie auf Zeichenfolgen. (// (timeStep * 1000) - (millis () - timer) Durch das Komma "," // als wandelt sie in doppelte if (Serial.available ()> 0) {String a = Serial.readString ();  Zeichenfolge value1, value2;  // For-Schleife, die den String in Teilen // trennen und die Variablen, die wir für (int i = 0; i <a.length (); i ++) {if (astring (i, i + 1 ) == ",") {Wert2 = astring (0, i);  Wert1 = astring (i + 1);  Unterbrechung;  }} Val = 90-value1.toFloat ();  Val2 = value2.toFloat ();  Temp = val2;  }} Void pitch_check () {// prüfe, ob die Tonhöhe hoch, niedrig oder gleich der Benutzereingabe ist // senden Sie Befehle an das Slave-Modul, um Motoren zu starten und zu stoppen, wenn (Fußboden (Tonhöhe * 100) / 100 = * 100) / 100) {digitalWrite (Stahp, HIGH);  } Else {digitalWrite (stahp, LOW);  } If (floor (pitch * 100) <floor (val * 100)) {digitalWrite (cw, HIGH);  } Else {digitalWrite (cw, LOW);  } If (floor (pitch * 100)> floor (val * 100)) {digitalWrite (ccw, HIGH);  } Else {digitalWrite (ccw, LOW);  }} Void yaw_check () {// überprüfen, ob Gier hoch, niedrig oder gleich dem Benutzereingabe // Befehle senden Motoren an Slave-Modul zu starten und zu stoppen, wenn (Boden (Gieren * 100) == Boden (val2 * 100 )) {DigitalWrite (stahp2, HIGH);  } Else {digitalWrite (stahp2, LOW);  } If (floor (yaw * 100) <floor (val2 * 100)) {digitalWrite (cw2, HIGH);  } Else {digitalWrite (cw2, LOW);  } If (floor (yaw * 100)> floor (val2 * 100)) {digitalWrite (ccw2, HIGH);  } Else {digitalWrite (ccw2, LOW);  }} Void LST_time () {// Berechnet Ortszeit siderisch auf Basis dieser Berechnung //http://www.stargazing.net/kepler/altaz.html M = (double) myRTC.month;  Y = (doppeltes) myRTC.year;  D = (doppelt) myRTC.dayofmonth;  MN = (doppelt) myRTC.minutes;  H = (doppelt) myRTC.hours;  S = (doppelt) myRTC.seconds;  A = (Doppel) (Y-2000) * 365.242199;  B = (doppelt) (M-1) * 30,4368499;  Double JDN2000 = A + B + (D-1) + myRTC.hours / 24;  Double decimal_time = H + (MN / 60) + (S / 3600);  Double LST = 100.46 + 0.985647 * JDN2000 + Ort + 15 * Dezimalzeit;  LST_degrees = (LST- (Boden (LST / 360) * 360));  LST_hours = LST_degrees / 15;}

Slave-Modul:

  / * Dies ist der Quellcode für das Slave-Modul von Star TrackRequired Bibliotheken: http: //www.airspayce.com/mikem/arduino/AccelStepper/AccelStepper-1.51.zipCreated 20. Juli 2016 von Görkem Bozkurt * / # include <AccelStepper. h> #define Halbschritt 8 # include <Wire.h> // Motor Pindefinitionen # definieren motorPin1 2 // IN1 auf dem ULN2003 Treiber 1 # definieren motorPin2 3 // IN2 auf dem ULN2003 Treiber 1 # definieren motorPin3 4 // IN3 auf die ULN2003 Treiber 1 # motorPin4 5 // IN4 auf dem ULN2003 Treiber 1 #define motorPin5 A0 // IN1 auf dem ULN2003 Treiber definieren 1 # motorPin6 A1 // IN2 auf dem ULN2003 Treiber definieren 1 # motorPin7 A2 // IN3 auf der ULN2003 definieren AccelStepper STEPPER2; Treiber 1 # motorPin8 A3 // IN4 auf dem ULN2003 Treiber 1 // Initialisieren mit Pin-Sequenz IN1-IN3-IN2-IN4 die AccelStepper mit 28BYJ-48AccelStepper stepper1 für die Verwendung von (Halbschritt, motorPin1, motorPin3, motorPin2, motorPin4) definieren (HALFSTEP, motorPin5, motorPin7, motorPin6, motorPin8);  int stahp = 7, stahp2 = 10; int cw = 6, cw2 = 11; int ccw = 8, ccw2 = 9;  boolean gestoppt = false; boolean stopped2 = false; Leere setup () {stepper1.setMaxSpeed ​​(1000,0);  Stepper2.setMaxSpeed ​​(1000.0);  PinMode (stahp2, INPUT);  PinMode (cw2, INPUT);  PinMode (ccw2, INPUT);  PinMode (stahp, INPUT);  PinMode (cw, INPUT);  PinMode (ccw, INPUT);} // - (end setup) --- void Schleife () {motor_pitch ();  Motor_roll ();  If (gestoppt == false) {stepper1.run ();  } If (gestoppt2 == falsch) {stepper2.run ();  }} Void motor_roll () {if (digitalRead (stahp) == HIGH) {stopped = true;  } Else {if (digitalRead (cw) == HIGH) {stepper1.setSpeed ​​(100);  Gestoppt = falsch;  } If (digitalRead (ccw) == HIGH) {stepper1.setSpeed ​​(-100);  Gestoppt = falsch;  }}} Void motor_pitch () {if (digitalRead (stahp2) == HIGH) {stopped2 = true;  } Else {if (digitalRead (cw2) == HIGH) {stepper2.setSpeed ​​(100);  Gestoppt2 = falsch;  } If (digitalRead (ccw2) == HIGH) {stepper2.setSpeed ​​(-100);  Gestoppt2 = falsch;  Aufrechtzuerhalten.

Das Slave-Modul hat 6 Eingänge vom Mastermodul mit denselben Namen. Und fährt die Motoren.

Slave Modulcode:

Schritt 8: Erster Test

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Wir montierten die Basis und angeschlossen die Elektronik, jetzt für den ersten Test (indoor),

- Laden Sie die Master- und Slave-Codes auf die Arduino's.

Master ==> uno

Slave ==> nano

-Schließen Das Arduino Uno an den Computer und öffnen Sie den seriellen Monitor .Y ou werden vier Werte sehen an den seriellen Monitor gedruckt,

Yaw ==> RA - Wert in Grad

Pitch ==> Dezember - Wert in Grad

LST_d ==> Lokale Sternzeit in Grad

LST_h ==> Lokale Sternzeit in Dezimalstunden

Wenn Sie zuerst das Arduino anschließen, wird es 5 Sekunden warten. Dann wird es den RA (Gier) Wert zu Ihrer lokalen sidereal Zeit aktualisieren. Danach wird der RA-Wert jeweils um 1 Grad aktualisiert.

Lassen Sie uns 0,0 auf den seriellen Monitor geben.

Wenn Sie versuchen, die Halterung zu bewegen, wird sie sich auf yaw = 0, pitch = 0 einstellen.

Jetzt versuchen wir einen Eingang wie 5.00.5.00 (5 Grad DEC, 5 Grad RA). Die Motoren sollten die Montage auf 5,5 stellen. Grad. Wenn Sie Probleme haben, überprüfen Sie den nächsten Schritt.

Schritt 9: Fehlerbehebung

-Die Stepper sind nur vibrierend

Überprüfen Sie die Anschlüsse Ihres Steppers auf den Arduino, verschiedene Stepper haben unterschiedliche Pin-Ausgänge.

-Die Stepper beginnen zu wackeln, wenn sie an der angegebenen Position ankommen

Wenn Ihre Schrittgeschwindigkeit zu schnell ist, wird es kämpfen, um an der angegebenen Position zu stoppen. Bearbeiten Sie die Geschwindigkeit des Steppers auf dem Slave-Modul (slave.ino) auf etwas wie 50-75.

-RA wird nicht aktualisiert

Überprüfen Sie die Münzzellen auf dem RTC oder die Verbindungen zwischen dem Arduino.

-RA-DEC Werte nicht aktualisieren (stecken bei 0).

Der Kreisel ist die Hauptursache für sein Problem (in meinem Fall war es). Deshalb habe ich 5 Sekunden Verzögerung, am Anfang, so gab es kein Problem. Wenn yıu einen anderen Weg finden Sie mich bitte wissen.

Wenn Sie während des Builds irgendwelche Probleme haben, lassen Sie es mich wissen (auch wenn Sie das Problem gelöst haben). So kann ich es hier setzen.

Schritt 10: Endmontage & Tracking

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Stern-Spur - Arduino angetriebener Stern-Zeiger und Verfolger

Nach der Montage montieren Sie es auf ein Stativ und gehen nach draußen. Das Stativ wird ein wichtiges Werkzeug sein, da Sie es verwenden, um das Setup mit dem Nord-Himmelsstab auszurichten.

Stellen Sie den Laser auf eine aufrechte Position, indem Sie den Motor mit der Hand drehen.

Stellen Sie das Grundgerät so ein, dass das RTC-Modul nach Norden zeigt.

Stellen Sie den Stativwinkel ein, während der Laser auf und in einer aufrechten Position ist, sollte er auf den Nordstern zeigen. Wenn Sie nicht sehen können, die Nord-Sterne können Sie eine Telefon-Anwendung wie Himmel Karte.

Schließen Sie Ihr Arduino an das Setup an. Und warten, während die RA Grad aktualisiert.

Jetzt sind Sie alle eingestellt. Der Laserpointer zeigt jetzt auf der Himmelskugel 90 DEC, 0 RA.

Nachverfolgen eines Sterns

Es gibt riesige Stern-Datenbanken, die Sie verwenden können. Ich werde umfassen die Links unten , aber für jetzt, ich Wikipedia für die Koordinaten des Sterns Arcturus verwenden. Die Koordinaten von Arcturus sind 14h 15m 39.7s, 19 ° 10 '56 "Zuerst müssen wir diese Daten in Grad konvertieren, so dass unsere Setup kann verarbeiten it.I verwendet https://www.swift.psu.edu/secure/toop/convert.htm

das Ergebnis ist: RA: 213.9167 Dezember: 19,1822

Sie können diese Werte in den seriellen Monitor wie diese setzen 213.9167,19.1822

Und das Setup beginnt zu zeigen und verfolgen, dass Objekt / Stern.

Datenbanken:

http://www.stellar-database.com/

http://simbad.u-strasbg.fr/simbad/

Schritt 11: Was kommt als nächstes

Es gibt viele Dinge zu diesem Projekt zu verbessern. Meine Hauptziele für eine spätere Version sind,

  • Star-Datenbank in eine Android-App integriert. Sie können einen Stern wählen. Die Daten werden über Bluetooth an den Arduino als RA Grad, DEC Grad geschickt.
  • Laser Ein / Aus Schalter mit Servo. Nach der Benutzereingabe wird der Laser für 3-5 Sekunden eingeschaltet, um den Stern zu markieren (derzeit müssen Sie ihn manuell drücken)
  • Stärkere Motoren und eine größere Halterung für eine DSLR-Kamera (vielleicht?)
  • Größere Übersetzungsverhältnisse für exakte Standorte.
  • Zeit- und Ortsdaten aus einem GPS-Modul abrufen (derzeit werden diese manuell eingegeben)

Ich hoffe, Sie haben dieses Projekt genossen und ich habe etwas gelernt. Wenn Sie einen Fehler im Code oder falsche Informationen jeglicher Art finden Sie mich bitte wissen. Alle Fragen sind willkommen!

Sie können mich auch erreichen unter: [email protected]

Related Reading