Hier scheint es ja einige zu geben, die sich recht gut auskennen mit
programmieren und so. Vielleicht kann mir ja jemand helfen:
Für eine Prüfung müssen wir nämlich bei einer Solarzelle messen, wie
viel Strom sie erzeugt, das soll aber den ganzen Tag über regelmäßig von
alleine passieren. Wir haben einen Microcontroller, der soll die Werte
ablesen und speichern. Nun müsssen wir aber ein Programm schreiben,
welches dem Microcontroller sagt er soll eben diese Werte(den Ertrag den
die Solarzelle bringt) regelmäßig speichern. Meine frage: Wie
programmiere ich so was?
An einer Stelle sagst du , du willst den Strom messen, an einer anderen
du willst den "Ertrag" (was ist das für eine physikalische Größe?)
messen/speichern.
Werde dir erst einmal über deine Ziele klar. Solange du diese nicht
genau formulieren kannst, bist du weit davon entfernt ein Programm zur
Lösung zu schreiben.
Ein Ansatz könnte sein:
Zur Lösung einer Schulaufgabe müssen wir (ausfüllen welche phys. Größe
du Messen willst) über einen Zeitraum von (ausfüllen) x(ausfüllen) -mal
messen.
Daraus soll berechnet werden Größe x,y,z. (Die Gleichungen zur
Berechnung solltest du eigentlich selbst wissen...)
Mir stehen zur Verfügung (Hardwarebeschreibung) und Entwicklungsumgebung
(Softwarebeschreibung).
(Es macht einen wesentlich besseren Eindruck wenn du noch folgendes
anhängst.)
Soweit bin ich schon gekommen (angehängtes Programm) Ich habe Probleme
weil das, das und das passiert. Es soll aber das das und das passieren.
Entschuldigung...Ich bin noch ziemlicher Anfänger in diesen Sachen( ich
bin ja auch erst 16). Ehrlich gesagt ist das das erste programm, das ich
schreibe. Wir haben uns schon einige beispielprogramme angeguckt und die
gesamte Anleitung über den Microcontroller gelesen und versucht zu
verstehen.
Also: Programmiersprache ist CC BASIC
- Ich kann euch auch noch genau sagen was das für ein Microcontroller
ist, wenn es wichtig ist, ich müsste nur mal meine Freundinn fragen.
Wir wollen die Solarzelle in die Sonne stellen, von Sonnenaufgang bis
Sonnenuntergang,also etwa 12 h. Währe es nicht möglich, das der
Microcontroller jede halbe Stunde oder jede Stunde speichert wie viel
Strom in der letzten Stunde durch die Solarzelle erzeugt wurde. Wenn das
nicht möglich sein sollte, dann reicht es uns sicher auch wenn der
Microcontroller jede halbe Stunde speichert, wie viel Strom gerade
erzeugt wird. Wir wollen hinterher eine Kurve oder ein Diagramm
zeichen, bei dem man sieht, zu welcher Uhrzeit am Tag am meisten Strom
erzeugt wurde, wann am wenigsten usw.
Was für eine physikalische Größe?...ich würde sagen: Volt, für den Strom
oder?
Die Einheit des el. Stroms ist Ampere [A]. Volt [V] ist die Einheit der
el. Spannung.
Du kannst zum einen den aktuellen Strom messen, der durch die Solarzelle
fließt (in Ampere), oder das ganze über die Zeit integrieren* und damit
wohl in etwa "den erzeugten Strom in einem gewissen Zeitraum" erhalten
(in Amperestunden [Ah]).
* Das Integrieren wird auf dem Mikrocontroller letztendlich zu einer
Aufsummierung führen. Beispielsweise jede Minute den Strom messen (und
unterstellen, dass er sich innerhalb der Minute nicht (stark) verändert
hat. Pro Minute fließt bei einem Strom von einem Ampere also eine Ladung
(nichts anderes ist Strom * Zeit) von 1 Ampereminute bzw. 1/60
Amperestunde.
Du hättest also eine Variable als "Stromzähler" (eigentlich:
Ladungszähler). Du misst jede Minute den aktuellen Strom und addierst
jede Minute zur Stromzählervariable aktueller_strom * 1 minute hinzu.
Über den Tag hin wird der Wert der Variable also immer größer und
entspricht der "erzeugten" Ladung der Solarzelle.
Ich weiss nicht ob es mir gelungen ist, ein bisschen Licht ins
Einheitendurcheinander zu bringen. Werde dir bitte ersteinmal klar, was
du eigentlich messen willst. Stelle dann konkrete Fragen und dir wird
wahrscheinlich geholfen. (Und belies dich bitte etwas zum Thema. Es muss
ja nicht gleich das komplette Datenblatt zum Mikrocontroller sein,
vielleicht hätte Wikipedia zum Thema Strom/Spannung/Ladung oder so auch
schon etwas geholfen :-) Nicht so gern wird hier gesehen "ich hab ein
Projekt. Wie mach ich das (kaut mir die Lösung vor)". Worauf meist eine
konstruktive Antwort kommt ist "Ich hab hier ein Projekt (genaue
Beschreibung..). Ich möchte das und das machen. Das und das hab ich
probiert, aber es funktioniert nicht. Stattdessen passiert das und das.
Wo liegt mein Denkfehler?")
So, das war nun aber wirklich genug Offtopic von mir :-)
Ich schätze mal, daß der Orginalposter überhaupt erst mal einen Ansatz
sucht, sein Thema zu strukturieren und algorithmisch zu artikulieren.
Hardware und Software ist da vermutlich noch etwas weiter weg. Wobei -
er schrub ja er hätte einen Microcontroller.
@Lucky:
Wie Wolfram schrieb, mußt du dir erst mal über grundlegende Dinge
Gedanken machen:
Eine Solarzelle erzeugt von sich aus Spannung wenn die Sonne drauf
scheint. Die entnehmbare Energiemenge (dein "Ertrag") hängt ab von der
zugeführten Energiemenge multipliziert mit einem Wirkungsgrad. Wenn die
Solarzelle 100 Watt an Solarenergie zugeführt bekommmt, und einen
Wirkungsgrad von 10% hat, kann ihr also 10 Watt entnommen werden.
Ganz schnell wirst du merken, daß eine zeitliche Berücksichtigung
notwendig ist. Also 1 Sekunde lang 10 Watt aus dem Teil rausgesaugt,
dann hast du 10 Wattsekunden an Energie abgezapft (Wieviele
Kilo-Watt-Stunden das sind kannst du selbst ausrechnen, auch wieviel die
kontinuierliche Entnahme von 10 Watt über eine Stunde ergibt)
Jetzt kommen 2 Dinge in die Überlegung:
1. Du wirst vielleicht nicht immer das maximum an elektrischer Energie
aus der Solarzelle rausholen können oder wollen (wechselnder
Verbraucher). Wenn du nur 1 Watt anforderst, wird auch nur 1 Watt
geliefert)
2. Du wirst vielleicht nicht kontinuierlich gleichartige
Sonneneinstrahlung haben (nachts ist ziemlich dunkel)
--> Um deine Energie zu messen, brauchst du regelmäßig Info (Meßwerte)
über Spannung (U), entnommenen Strom (I) und Zeittakt, und mit P=U*I
kannst du Leistung bzw. Energiemenge (P*t) errechnen
z.B.
01. Sek. U=12,01 V I=1,02 A P=12,2502 Ws
02. Sek. U=12,02 V I=1,01 A P=12,1402 Ws
etc.
Jetzt kommt es drauf an was du speichern möchtest bzw. was du wegwerfen
möchtest an Information. Wenn du es einfach machen willst, dann
multiplizierst du einfach die Werte, und addierst auf, stellst z.B. die
Werte in einem Display dar. Du läßt das solange laufen bis ein Überlauf
auftritt oder du den Stecker ziehst.
In der Anzeige stünde also in etwa:
nach 1 Sekunde: "in 1 sek erzeugt: 12,2502 Wattsekunden"
nach 2 Sekunde: "in 2 sek erzeugt: 24,3904 Wattsekunden"
etc.
Vielleicht möchtest du es ja aber komfortabler haben und noch weitere
Infos behalten oder hinzufügen, oder die Werte "nach außen"
weiterleiten, damit man eine tolle Energie-Entnahme-Grafik damit
erstellen kann?
Da ist deiner Fantasie freien Lauf gelassen ...
Da kommen in der
Und ja.
Prinzipiell kann man das schon speichern.
Auf einem AVR zb. kann man das wunderbar in ein EEPROM speichern.
Einmal am Tag wird dann der PC mit deinem µC verbunden (zb. über
eine serielle Schnittstelle) und schickt dem µC ein Kommando, so
dass der µC die gespeicherten Daten über die Schnittstelle
rausrückt.
Ist eine Möglichkeit.
Eine andere Möglichkeit wäre es, dem µC einen SD Karten Slot
zu verpassen und den µC seine Daten auf eine SD Karte schreiben
zu lassen. Auf dem PC gibt es dann ein Programm, das diese
Daten lesen kann und auswertet.
Oder ....
Es gibt noch viele Möglichkeiten was man machen könnte.
Aber ich denke erst mal solltest du mit den Grundlagen
anfangen und dir deine ersten Sporen in der µC Programmiererei
verdienen. Vom Einfachen zum Komplexen.