Forum: Mikrocontroller und Digitale Elektronik Abschlussarbeit Planetarium


von Felix S. (stock95)


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?

von Stephan M. (stmz)


Lesenswert?

Felix Stockinger schrieb:

> Glaubt ihr dass das realisierbar ist?

klar, wieso nicht. Hängt halt von deinem Wissen ab und wie viel Zeit du 
investieren möchtest / kannst ;-)

von UR-Schmitt (Gast)


Lesenswert?

Wird wohl zu 95% eine Mechanikabschlussarbeit

von J.-u. G. (juwe)


Lesenswert?

Felix Stockinger schrieb:
> Glaubt ihr dass das realisierbar ist?

Sicher. Aber warum muss es ein µC-gesteuerter Schrittmotor sein?

von Felix S. (stock95)


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.

von Achim M. (minifloat)


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.

von Frank K. (fchk)


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

von Felix S. (stock95)


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.

von piccer (Gast)


Lesenswert?


von Felix S. (stock95)


Lesenswert?

und was bringt er mir?

Da kann ich den Arduino genauso verwenden oder?

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

von Frank K. (fchk)


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

von Felix S. (stock95)


Lesenswert?

oh entschuldige
den Post habe ich übersehen

Glaubst du dass mit der Gleitkomma Berechnung wird so ein großes 
Problem?

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

von Frank M. (ukw) (Moderator) Benutzerseite


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.

von Felix S. (stock95)


Lesenswert?

Genau so sehe ich das auch

Also brauche ich theoretisch nur die Ansteuerung der 4 Planeten 
berechnen
Wie lange jeder Planet Strecke am Tag zurücklegt und falls dies nicht 
mehr ganz passt einfach vom Nullpunkt wieder weggehen

von Karl H. (kbuchegg)


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.

von Yalu X. (yalu) (Moderator)


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.

von Shuzz (Gast)


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.

von Felix S. (stock95)


Lesenswert?

da man im Arduino in einer C# ähnlichen Sprache programmieren kann
und ich kann C#

von Karl H. (kbuchegg)


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

: Wiederhergestellt durch User
von Cyblord -. (cyblord)


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

von Felix S. (stock95)


Lesenswert?

:D

oh okay das wusste ich nicht

für mich ist das alles noch Neuland und ich habe mich bisher jetzt nur 
mit ein paar Examples von Arduino gespielt

von Cube (Gast)


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.

von Felix S. (stock95)


Lesenswert?

also von diesen Motoren habe ich noch 4 stück zuhause:

Howard IND. 1-19-4201

müsste funktionieren

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.