Abschlussarbeit Planetarium

OP #2822299
Lesenswert?

Hallo erstmals

und zwar ich bin neu in diesem Forum.

ich möchte gerne als Abschlussarbeit ein Planetarium bauen, dass die 
inneren 4 Planeten darstellt die sich in ihrer Umgebungslaufbahn um die 
Sonne drehen.

Ich möchte dieses gerne mit einem Arduino Mikrocontroller realisieren 
und einen Schrittmotor der per Übersetzung die Planeten antreibt.


Glaubt ihr dass das realisierbar ist?
OP #2822313
Lesenswert?

Jein Eigentlich eine Programmierprojekt, denn der Aufbau wird von meinem 
Projektpartner gemacht.



Da dies von der Schule so vorgegeben wird


Außerdem wird die Arbeit dann in einem Museum ausgestellt wird.
Daher sollte es einen Schalter geben in dem man die 
Umdrehungsgeschwindigkeit erhöhen kann und es soll
danach wieder die ursprüngliche Position einnehmen
und es sollte einen Zeitempfänger haben da er sich immer wieder nach der
echten Planetenposition richten soll.
#2822333
Lesenswert?

Machs ohne Getriebe und nimm doch stattdessen mehr Schrittmotoren.
Dann noch einen Sensoreingang für die Nullstellung für jeden Motor und 
es sollte gehen. Schua dich mal nach Schrittmotorsteuerkarten um, mit 
dem Motor-Driver-Shield wirst du nicht glücklich, weil das zuwenig 
Kanäle kann. Es sei denn, du stapelst, da muss natürlich ein wenig 
umverdrahtet werden.
#2822343
Lesenswert?

Felix Stockinger schrieb:

> ich möchte gerne als Abschlussarbeit ein Planetarium bauen, dass die
> inneren 4 Planeten darstellt die sich in ihrer Umgebungslaufbahn um die
> Sonne drehen.
>
> Ich möchte dieses gerne mit einem Arduino Mikrocontroller realisieren
> und einen Schrittmotor der per Übersetzung die Planeten antreibt.
>
>
> Glaubt ihr dass das realisierbar ist?

Sagt Dir die Zeitgleichung was? Keplersche Gesetze? Für die 
mathematischen Grundlagen empfehle ich Dir ganz dringend das Buch (ja, 
tote Bäume)
"Astronomie mit dem Personal Computer" von Oliver Montenbruck und Thomas 
Pfleger (ISBN 3-540-21204-3).

Du wirst sehen, dass Du für die Algorithmen ziemlich viel 
Gleitkomma-Mathematik brauchen wirst. Dafür ist ein 16 MHz 8 Bit AVR 
nicht die optimale Wahl. Wenn Du etwas Arduino-ähnliches verwenden 
willst, nimm das hier

http://www.digilentinc.com/Products/Detail.cfm?Prod=CHIPKIT-MAX32

Das ist ähnlich, nicht wesentlich teurer, hat aber einen 80 MHz 32 Bit 
PIC32 drauf, der damit keine Probleme haben sollte. Vorhandene 
Arduino-Shields müssen 3.3V-tauglich sein.

fchk
OP #2822345
Lesenswert?

Das ich mehrere Schrittmotoren nehme wäre keine Problem da wir noch 
genau 4 Schrittmotoren Zuhause haben. :D

Das mit der Nullstellung ist keine schlechte Idee und anhand der Zeit 
kann ich die Planeten ja in die jeweils richtige Position fahren.

Ich habe mir zum Testen den Arduino Uno und den Easy Driver 
Schrittmotortreiber gekauft.
#2822366
Lesenswert?

Felix Stockinger schrieb:

> und was bringt er mir?

Posting von mir gelesen? Sind Dir die Algorithmen klar?

> Da kann ich den Arduino genauso verwenden oder?

Gleitkomma ist dort etwas langsam. Lies das Buch.

> außerdem kann ich mit dem Arduino in einer einfachen Programmiersprache
> programmieren.

Die Entwicklungsumgebung gibts für PIC32 auch in einer angepassten Form. 
Ansonsten gilt: Willkommen bei C. Das wirst Du irgendwann ohnehin lernen 
müssen. Also warum nicht jetzt?

fchk
Moderator Persönliche Seite #2822383
Lesenswert?

Frank K. schrieb:
> Gleitkomma ist dort etwas langsam. Lies das Buch.

Ich sehe es nicht so, dass er Gleitkomma braucht. Sein "Planetarium" 
wird die Planeten wohl schon aus mechanischen Gründen auf Kreisen statt 
Ellipsen fahren lassen. Die Umlaufzeiten der Planeten sind bekannt. Was 
willste da groß rechnen?

Du lässt für jeden Erdentag jeden der 4 Planeten ein Stückchen weiter 
fahren. Wie groß das Stückchen ist, kann man vorher mit dem 
Taschenrechner unter Berücksichtigung der bekannten Umlaufzeiten 
ausrechnen. Es kann natürlich sein, dass nach einer ganzen Umdrehung die 
Planeten etwas "verrutscht" sind, da die ermittelten Wege pro Erdentag 
nach einer ganzen Umdrehung in Summe nicht ganz übereinstimmen. Das kann 
man mit einer geeigneten Nullpunktserkennung wieder ausgleichen.
#2822430
Lesenswert?

Frank K. schrieb:
> Felix Stockinger schrieb:
>
>> und was bringt er mir?
>
> Posting von mir gelesen? Sind Dir die Algorithmen klar?

Vergiss die Algorithmen.
Die Hälfte davon braucht er nicht. Für ein mechanisches Modell reicht 
es, wenn er einfach einstellen kann, in welcher Zeit welcher 'Planet' 
eine Umdrehung um die Sonne macht. Dazu noch eine fixe Anfangsposition 
aus der er die Position zu einem Stichtag entnimmt und von dort die Zeit 
aufsummiert.

Die Abstände der Planeten sind sowieso nicht massstäblich
Die Exzentrizität der Planetenbahnen kann er in einem Tischmodell mit 
vernünftigen Abmessungen mechanisch nicht darstellen.
Genausowenig kann er die Inklination der Bahnen mechanisch realisieren 
(ok, den Teil könnte man ins Auge fassen)
Die UNgenauigkeit und das Spiel der Mechanik schluckt so viel, dass es 
keinen Sinn macht, da größartig die ganzen Korrekturen an der Länge 
anzubringen. Die Hauptkorrektur an der Länge anbringen reicht völlig.
Bei der Geschwindigkeit der Planeten hat sein µC von einem 
Schrittmotorschritt zum nächsten alle Zeit der Welt um zwischendurch 
noch quadratische Gleichungen zu lösen - in Gleitkomma.

Für die Zwecke eines mechanischen Tischmodells sind die Planetenbahnen 
einfach nur Kreise auf denen ein Ball in einer bestimmten Zeit (die in 
Tagen bemessen wird) eine volle Umdrehung zurücklegt.

So ein Modell ist ein Anschauungsobjekt und kein Messgerät.
Moderator #2822434
Lesenswert?

Ich würde auch vier getrennte Schrittmotoren nehmn, weil du nur durch
ein "Software-Getriebe" die Übersetzungsverhältnisse hinreichend genau
einstellen kannst. Damit kannst du dann aber auch problemlos die Plane-
tenposition im Jahr 3000 anzeigen, ohne die Planeten tausendmal herum-
wirbeln lassen zu müssen.

Durch die unabhängige Ansteuerung der einzelnen Planetenmotoren kannst
du auch problemlos die variable Bahngeschwindigkeit nachbilden.

Wenn du noch vier weitere Motoren besorgst, kannst du die Bahnen ohne
allzu großen mechanischen Aufwand¹ elliptisch machen, indem zusätzlich
zur Drehung um die Sonne jede Planetenachse auf einem Kreis rotieren
lässt, dessen Durchmesser der Differenz zwischen dem maximalen und dem
minimalen Abstand zu Sonne entspricht.

Auf jeden Fall würde ich jedem einzelnen Motor ein Getriebe mit einer
Übersetzung ins Langsame spendieren, da sich die Planeten sonst für das
Auge deutlich sprunghaft (und mit sichtbaren Nachschwingern bei jedem
Sprung) bewegen.

Die trigonometrischen Berechnungen der Motorpositionen für einen
gegebenen Zeitpunkt ist sicher eine interessante Aufgabe.

Hast du dir schon überlegt, wie du die unterschiedlichen Bahnneigungen
realisieren möchtest? Oder ist das nicht so wichtig? Dann kannst du dir
nämlich auch die Ellipsenbahnen sparen.

Wegen der Rechenleistung des verwendeten Mikrocontrollers würde ich mir
keine Sorgen machen: Du berechnest die Planetenpositionen einfach
periodisch mit einer Zykluszeit, die der µC noch gut schafft. Die
Zwischenpositionen interpolierst du linear.

Läuft die Anlage in Echtzeit (also extrem langsam), erhältst du mit
dieser Methode immer das im Rahmen der Schrittmotorauflösung exakte
Ergebnis. Im Zeitraffermodus wird es durch die Interpolation vielleicht
etwas ungenau, aber da ist die Genauigkeit auch nicht so wichtig.

Falls du nur Kreisbahnen mit konstanter Bahngeschwindigkeit vorsiehst,
ist die Rechenleistung sowieso kein Problem.

——————————————
¹) Das geht natürlich auch mechanisch, bspw. mit Kurvenscheiben.
Gast #2822553
Lesenswert?

Felix Stockinger schrieb:
> Ich habe für das Projekt ca. 3 Monate Zeit und muss nebenbei arbeiten
> gehen
> So viel zeit für das ich jetzt C lerne habe ich nicht

In welcher Sprache willst Du Deinen Arduino denn bitte programmieren 
wenn nicht in C?
Der Charme an Arduino sind halt nunmal die fertigen Libs für Dinge wie 
Schrittmotoren, RTCs usw. - und die sind nunmal in C bzw. C++ verfasst.
#2822717
Lesenswert?

Felix Stockinger schrieb:
> da man im Arduino in einer C# ähnlichen Sprache programmieren kann
> und ich kann C#

Du weißt aber schon, das das was du als C# ähnlich bezeichnest in 
Wirklichkeit ein C++ ist, welches mit vielen Hilfsklassen zur leichteren 
Verwendung aufgepeppt wurde?

(was ja an sich nicht schlecht ist. Nur sollte man auch den Namen der 
Programmiersprache kennen, in der man programmiert :-)
#2822721
Lesenswert?

Felix Stockinger schrieb:
> da man im Arduino in einer C# ähnlichen Sprache programmieren kann
> und ich kann C#

Rate mal woher das "C" in C# kommt? Der Syntax ist an C angelehnt. Wenn 
du denkst das Arduino-C hat irgendwas mit deinem C# in deinem Visual 
Studio zu tun, dann irrst du dich. Wie gesagt, der Grundlegende Syntax 
ist praktisch gleich, aber das ist auch ziemlich egal. Die 
"for-Schleife" sieht in C, C#, C++ und Java identisch aus. Trotzdem 
stehen andere Paradigmen dahinter. Also lern lieber gleich richtiges C 
und wurschtel dich nicht noch zusätzlich in den Arduino-Quatsch ein. Mit 
C# hast du zumindest mal einige Syntaktische Grundlagen dafür.

gruß cyblord
Gast #2822730
Lesenswert?

Yalu X. schrieb:
> Auf jeden Fall würde ich jedem einzelnen Motor ein Getriebe mit einer
> Übersetzung ins Langsame spendieren, da sich die Planeten sonst für das
> Auge deutlich sprunghaft (und mit sichtbaren Nachschwingern bei jedem
> Sprung) bewegen.

Ich empfehle den Motor "28byj48-12". Ist bei eBay für wenig Geld zu 
haben und enttäuschend langsam (da eine Untersetzung von 1:64 im Spiel 
ist und der Motor selbst schon 64 Schritte für eine Umdrehung braucht). 
Für diese Art der Anwendung also perfekt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren