Forum: Mikrocontroller und Digitale Elektronik C-Programm für Solarnachführung gesucht


von Alfred F. (bluedeep)


Lesenswert?

Hallo Gemeinde,

ich bin gerade dabei mir eine Solarnachführung zu bauen. Die Hardware 
dazu habe ich so gut wie fertig. Sie besteht aus zwei Schrittmotoren für 
die zweiachsige Nachführung (angesteuert mit den L297/L298-Bausteinen), 
einer Controllerplatine mit dem ATmega 16 und einem Lichtsensor aus vier 
Fotodioden. Nun stellt sich mir aber das Problem ein entsprechendes 
Programm in "C" schreiben zu müssen. Da ich jedoch darin keine Erfahrung 
habe und ich mich im Netz schon fast zu Tode gesucht habe, wäre es toll, 
wenn jemand einen Tipp oder Link für mich hätte (evtl. auch mit 
Quellcode-Beispielen).
Ich danke allen recht herzlich im voraus.

von Der Michel (Gast)


Lesenswert?

Hier kannst du dich bezüglich Schrittmotoren schlaulesen:
http://www.mikrocontroller.net/articles/Schrittmotoren

von derwissel (Gast)


Lesenswert?

da wärs wohl gut mal deinen wissensstand zu kennen... ist jetzt das C 
das problem, also hast du schon (mit anderen sprachen) µController 
programmiert, oder ist das hier dein einstieg in die thematik?

in letzterem fall sei dir wohl das avr gcc tutorial hier von der seite 
empfohlen.

von Alfred F. (bluedeep)


Lesenswert?

Hallo Derwissel,

mein Problem liegt im Umsetzen der C-Befehle auf diese Situation. Bis 
jetzt ist mein Wissensstand erst beim Setzen von Ausgängen des Atmega16 
angekommen.
Also ist es für mich noch einen Riesenschritt weit entfernt, eine 
Auswertung der Helligkeitswerte und daraus folgende Ansteuerung der 
Schrittmotoren hinzubekommen.
Grüße

von Konrad R. (kritter)


Lesenswert?

such mal nach "mppt"

von derwissel (Gast)


Lesenswert?

mh interessante sache..

also, du willst das solarmodul drehen und neigen, nehme ich an..

da werden deine fotosensoren wahrscheinlich kreuzförmig angeordnet sein. 
du drehst halt bis beide sensoren auf der waagerechten den selben wert 
(oder zumindest in etwa) aufweisen, und machst dann das gleiche mit dem 
neigungswinkel.?

-> ist mir jetzt nur mal so aus den fingern gesogen, völlig ohne ahnung 
ob das praktikabel/sinnvoll ist.
situation richtig erfasst?

MfG

von Alfred F. (bluedeep)


Lesenswert?

Danke für den Link, aber diese Informationen kantte ich bereits und da 
liegt auch nicht mein Problem.
Grüße

von Alfred F. (bluedeep)


Lesenswert?

Hallo derwissel,
die Situation hast du richtig erkannt. Ich bräuchte jedoch Tipps für die 
Gestaltung des C-Programms
Grüße

von Lehrmann M. (ubimbo)


Lesenswert?

Alfred Flöckchen schrieb:
> mein Problem liegt im Umsetzen der C-Befehle auf diese Situation. Bis
> jetzt ist mein Wissensstand erst beim Setzen von Ausgängen des Atmega16
> angekommen.
> Also ist es für mich noch einen Riesenschritt weit entfernt, eine
> Auswertung der Helligkeitswerte und daraus folgende Ansteuerung der
> Schrittmotoren hinzubekommen.

Nuja mit Variablen wirst du ja schon gerechnet haben in C. Musst halt 
eine AD Wandlung machen und dann mit den entsprechenden gewonnen Werten 
über einen Regelalgorithmus arbeiten. Solch einen Alogrithmus musst du 
dir entweder raussuchen oder selbst konstruieren. Das ist allerdings 
nicht trivial. Ich hatte dazu 2 Semester Vorlesung an der Uni, aber 
derart dezidierte Kenntniss beraucht man ja nicht für solch eine 
einfache Regelaufgabe. Bei einem guten Regelalgorithmus sollte in deinem 
Fall das MPPT in jedem Fall eine Rolle spielen.
http://de.wikipedia.org/wiki/Regler
schau dir besonders mal PID und seine abgeschwächten Versionen und 
Konsorten an ...

von Alfred F. (bluedeep)


Lesenswert?

Hallo ubimbo,
danke für deinen Beitrag.Dies hilft mir jedoch leider nicht beim 
Erstellen des Programms.Ich kenne mich mit Reglern schon aus, das 
Problem liegt nur am C-Code und dessen Umsetzung. Ich suche eigentlich 
einen Quellcode, den ich für meine Zwecke abwandeln kann.

von Michael H. (michael_h45)


Lesenswert?


von Alfred F. (bluedeep)


Lesenswert?

Hallo michael_h45,
Danke für den Link, kennst du oder jemand anderes hier im Forum 
vielleicht noch ein C-Programm, das nicht ganz so umfangreich ist (ohne 
Uhr, ich brauche nur die Helligkeitsauswertung der Fotodioden (4 Stück 
in Pyramdienform) und die Ansteuerung der Schrittmotoren zur 
helligkeitsgesteuerten 2 achsigen Nachführung(neigen und drehen))
Grüße

von Karl H. (kbuchegg)


Lesenswert?

Du hast es vielleicht schon gemerkt: Hier wird dir keiner dein Programm 
schreiben.

Die ungeschriebenen Forenrichtlinien sagen: Du gibst erst mal Quelltext 
vor und das Forum hilft dir dann deine Fehler auszubügeln und 
Misverständnisse aufzuklären.

ALs erstes würde ich mal den ganzen Komplex Schrittmotoren ignorieren 
und mich auf die Auswertung der Sensoren konzentrieren. Die werden 
höchst wahrscheinlich als SPannungsteiler angeschlossen sein, sodass du 
mit dem ADC die SPannungen messen kannst und aus dem Vergleich der 
Messwerte eruieren kannst, welcher Sensor stärker beschienen ist.

Das ist dein erstes Ziel:
2 Sensoren in Betrieb nehmen und mit einer LED anzeigen welcher davon 
stärker beschienen ist.

Eine LED ansteuern kannst du ja und wie man den ADC auswertet findest du 
ebenfalls im AVR-GCC-Tutorial inklusive fertiger Auswerteroutinen.

Also fang einfach mal mit diesem ersten Zwischenziel an zu 
programmierern. Lass dich nicht von der vermeintlichen Komplexität der 
kompletten Aufgabe ins Boxhorn jagen. Kleine Schritte machen, die man 
überprüfen kann (zb indem eine LED aufleuchtet). Und wenn ein Schritt 
erledigt ist, dann kommt der nächste Schritt drann.

So funktioniert das nun mal. Es ist ja schliesslich DEIN Projekt. Also 
solltest auch du es durchziehen. In den 3 Tagen seit deiner ersten 
Fragestellung wäre das auch als Neuling schon alles machbar gewesen.

von Purzel H. (hacky)


Lesenswert?

Ich wuerd einfach beginnen und eine Kommunikation einbauen. Mit der 
seriellen Schnittstelle zum PC. Dann, nachdem die geht, den ADC, die 
Sensoren messen lassen und vom PC her abfragen. Dann wenn diese Werte 
Sinn machen, vom PC her via Kommunikation die Motoren ansteuern. Dann 
einen Sensoralgorithmus aufsetzen und davon die Motoren ansteuern. 
Waehrend desssen mit dem PC zuschauen was der Algorithmus so macht.

von Zitroneneis (Gast)


Lesenswert?

Und hatten wir nicht erst vor einigen Wochen (wahrscheinlich zum 
wiederholten Mal) einen Schüler der hier sein "Solarnachführungsprojekt" 
bauen lassen wollte? Ich erinnere mich da düster an eine langwierige 
Diskussion über den Anschluss der Sensoren mittels Spannungsteiler. In 
dem Thread könnten Infos oder gar Quelltexte stecken...

von holger (Gast)


Lesenswert?

>Dann einen Sensoralgorithmus aufsetzen und davon die Motoren ansteuern.
>Waehrend desssen mit dem PC zuschauen was der Algorithmus so macht.

Genau. Dann sieht man auch das es wenig Sinn macht das Solarmodul
um 12:00 Uhr nach links zu drehen nur weil da mal ne Wolke am Himmel
erscheint. Die Sonne wandert konstant nach rechts. Die Daten wo sie
am Himmel erscheint sind bekannt. Dafür gibt es Tabellen. Eine
analoge Nachführung zur maximalen Helligkeit belastet nur die
Mechanik und macht keinen Sinn.

von Zitroneneis (Gast)


Lesenswert?


von Oliver S. (phetty)


Lesenswert?

Nimm einen Polarmount-Satellitenmotor. Drehe alle 10 Minuten.
Sonnenbahnen sind bekannt, da muß man keine aufwändige Sensorik 
betreiben.

von Alfred F. (bluedeep)


Lesenswert?

Erst mal vielen Dank für die ganzen Informationen.
Meine Mechanik und Elektronik habe ich bereits entwickelt(Selbst) und 
bin noch dabei diese fertig zu verdrahten.Also deshalb wird mir der Tipp 
mit dem Polarmount-Satellitenmotor auch nichts mehr bringen, aber 
trotzdem vielen Dank dafür. Natürlich habe ich auch niemals verlangt, 
dass irgend einer hier mir ein Programm schreiben soll. Ich bin nur für 
jeden Tipp oder Link dankbar, der mir in Sachen C-Programmierung zu 
meinem Zweck hilfreich erscheint. Ich bin nunmal Elektroniker und kein 
Programmierer.Als ich noch in der Ausbildung war hatte man so etwas noch 
nicht gemacht, wobei es heute schon im Lehrplan steht.Das einzigste was 
ich noch ein wenig behersche ist Java, Abel und SPS 5/7.Aber mit "C" 
hatte ich bisher noch nichts am Hut. Dennoch werde ich es mal versuchen, 
da ich das ganze aus Hobby mache und nicht wie der faule Schüler aus dem 
Link von Zitroneneis.
Übrigens, was Moderator "kbuchegg" schrieb:"In den 3 Tagen seit deiner 
ersten
Fragestellung wäre das auch als Neuling schon alles machbar gewesen".Mit 
dem hat er ganz bestimmt recht, wenn man vielleicht sonst nichts anderes 
zu tun hat. Als Berufstätiger mit Familie ist dies leider nicht so 
einfach als manche sich das so denken. Seine Gedankenanregungen zum 
Projekt hören sich aber gut an, diese werde ich mal so auprobieren. Die 
restlichen der anderen Mitglieder sind natürlich auch sehr hilfreich.
Ich danke euch allen für die Hilfe.

von citb (Gast)


Lesenswert?

Alfred Flöckchen schrieb:
> Meine Mechanik und Elektronik habe ich bereits entwickelt(Selbst) und
> bin noch dabei diese fertig zu verdrahten.Also deshalb wird mir der Tipp
> mit dem Polarmount-Satellitenmotor auch nichts mehr bringen, aber

Diagnose: mindestens leichte Beratungsresistenz.

Fuer dieses Problem ist die beschriebene Sensorik nicht geeignet, weil 
nicht gegen Umwelteinfluesse bestaendig. Du hast Fotodioden als 
Sensoren. Da reicht der sprichwoertliche Fliegensch.ss und die Messwerte 
stimmen nicht mehr.


citb

von Purzel H. (hacky)


Lesenswert?

>Ich bin nunmal Elektroniker und kein Programmierer.

Wir sind nicht Programmierer, sowas gibt's eigentlich gar nicht. Wir 
sind irgendwas und schreiben nebenbei mal auch noch ein Prograemmchen.

von Alfred F. (bluedeep)


Lesenswert?

Sorry,dann bist du halt "Irgendwas". Hätte ich das nur vorher gewusst 
:-)
Mir fiel halt grad nichts besseres ein.

von Alfred F. (bluedeep)


Lesenswert?

Danke für dein Angebot, leider suche ich wie schon beschrieben, kein so 
aufwendiges Programm mit Uhrzeit/Datum und sonstigem Schnick Schnack. 
Das Programm soll einfach nur die Werte der Fotodioden vergleichen und 
meine Schrittmotoren für Neigen und Drehen ansteuern.Ich brauche dazu 
auch keine Einzellizenz oder sonstiges, da ich das nur aus Hobby 
bastel.Ob das alles Sinn macht oder nicht mit den Fotodioden, ist auch 
jedem selbst überlassen, da das Teil später nicht effektiv genutzt wird. 
Andernfalls hätte ich dein Angebot vielleicht angenommen, aber solch ein 
Programm welches du mir anbietest gibt es doch schon in diesem Forum für 
umme. Wollte ich dieses, würde ich ja hier nicht um Mithilfe beten. Ich 
möchte einfach nur ein simples Programm haben bzw. Tipps wie ich dieses 
erstellen kann.

von citb (Gast)


Lesenswert?

Dann richte Dich nach dem Vorgehen, was Karl Heinz Buchegger um 20:40 
vorgeschlagen hat.

citb

von citb (Gast)


Lesenswert?

Oh, das gibt Reklamationen.
Was passiert, wenn (brightness_left == brightness_right)?

Also nachbessern!.

citb

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.