Hallo, ich bin gerade dabei im Rahmen eines Studienprojektes die Steuerung einer Winkraftanlage mit Hilfe eines ATMEGA32 zu programmieren. Hierbei ist meine Aufgabe das bereits vorhandene Programm (siehe Anhang) fertigzustellen. Bei der Anlage werden mit Hilfe von induktiven Näherungsschaltern die Windgeschwindigkeit mit einem Anemometer und die Drehzahl des Rotors gemessen. Die Impule werden an den Mikrocontroller gesendet und dort verarbeitet, sodass je nach Windstärke die Bremse und der Erregerstrom des Generators gesteuert werden. Im vorhandenen Programm ist bis jetzt nur das Anemometer erfasst. Meine Fragen: Was genau bedeutet folgeneder Programmanschnitt? //Timer 0 konfigurieren TCCR0 =(1<<WGM01) |(1<<CS01); OCR0=125-1; // ### Bugfix 20091221 //Compare Interrupt aktivieren TIMSK|=(1<<OCIE0); // Enable INT0 External Interrupt GICR |= 1<<INT0; // Falling-Edge Triggered INT0 an PD2! MCUCR |= 1<<ISC01; // Enable Interrupts sei(); Wo werden im Programm die Impule des Anemometers gezählt? Wie kann ich den Rotordrehzahlmesser einbauen und die Impule von Anemometer und Drehzahlmesser auseinanderhalten? Vielen Dank für Eure Hilfe
Frag doch mal die Programmierer Wiertzema oder Schroeder.
>> // Enable INT0 External Interrupt
Die Impulse werden über den Externen Interrupt Eingang gezählt.
Du musst nur noch die dazugehörige ISR suchen (oder selbst
implementieren).
mfg
Markus Kranig schrieb: > Hallo, ich bin gerade dabei im Rahmen eines Studienprojektes die > Steuerung einer Winkraftanlage mit Hilfe eines ATMEGA32 zu > programmieren. Lern erst mal ein wenig mit dem Mega32 umzugehen. > Meine Fragen: Was genau bedeutet folgeneder Programmanschnitt? Die Bedeutung aller Konfigurationsbits findest du im Datenblatt des Mega32 > //Timer 0 konfigurieren > TCCR0 =(1<<WGM01) |(1<<CS01); > OCR0=125-1; // ### Bugfix 20091221 > //Compare Interrupt aktivieren > TIMSK|=(1<<OCIE0); In an Nutshell Der Timer 0 wird so konfiguriert, dass er alle 1 Millisekunden seine ISR aufruft. > Wo werden im Programm die Impule des Anemometers gezählt? Das Anemometer hängt ganz offenschtlich an einem Interrupt Eingang. Mit jedem Puls wird in der zugehörigen ISR ein Zähler erhöht. In der Hauptschleife wird dieser Zählerstand alle 10 Sekunden ausgewertet. > Wie kann ich den Rotordrehzahlmesser einbauen und die Impule von > Anemometer und Drehzahlmesser auseinanderhalten? Das ist jetzt dein Bier. Es ist ja auch deine Studienarbeit und du bekommst dafür eine Note.
Markus Kranig schrieb: > Hierbei ist meine Aufgabe das bereits vorhandene Programm > (siehe Anhang) fertigzustellen. Tja, da ist wohl eher neu schreiben angesagt. Das bisschen was da ist, reicht nicht weit. Mach mal eine Liste was an welchen Pins angeschlossen ist und stelle sie oben in der Programmdokumentation ein. ( z.B. so wie es hier gemacht ist: Absolute Beginner-AVR Steckbrettprojekte)
Ich wusse doch das da was faul ist in der Windrädchenindustrie. Da dürfen offensichtlich Leute ohne Ahnung rumbosseln, wirklich super.
Düsendieb schrieb: > Markus Kranig schrieb: >> Hierbei ist meine Aufgabe das bereits vorhandene Programm >> (siehe Anhang) fertigzustellen. > > Tja, da ist wohl eher neu schreiben angesagt. Das bisschen was da ist, > reicht nicht weit. Allerdings. Die Qualität des Vorhandenen ist bescheiden, und da übertreib ich noch zum Positiven.
ddddd schrieb: > Ich wusse doch das da was faul ist in der Windrädchenindustrie. > Da dürfen offensichtlich Leute ohne Ahnung rumbosseln, wirklich > super. Die reale Quarzfrequenz ist auch eher "Rate mal mit Rostenthal". Evtl. steht sie auch im Makefile, no one knows ...
Mark Kran schrieb: > Hallo, ich bin gerade dabei im Rahmen eines Studienprojektes die > Steuerung einer Winkraftanlage mit Hilfe eines ATMEGA32 zu > programmieren. Hierbei ist meine Aufgabe das bereits vorhandene Programm > (siehe Anhang) fertigzustellen. Ich frag emich ernsthaft warum fängst Du solche Projekte an, wenn Du offensichtlich keine Ahnung davon hast? Noch schlimmer sind die Leute die solche Projekte vergeben. Wenn ich mir den Quellcode ansehe kann ich nur sagen setzen 6. Waren das Studenten der Theologie oder was haben die studiert?
ich dachte immer solche Anlagen brauchen eine TÜV-abnahme. Also dann schon lieber Kernenergie. In den Anlagen wird wenigstens ordentlich programmiert. Die Windrädchensoftware ist echt gefährlich. Wenn der TÜV-Prüfer so was sieht kriegt er einen Herzinfarkt.
ddddd schrieb: > Mark Kran schrieb: >> Hallo, ich bin gerade dabei im Rahmen eines Studienprojektes die >> Steuerung einer Winkraftanlage mit Hilfe eines ATMEGA32 zu >> programmieren. Hierbei ist meine Aufgabe das bereits vorhandene Programm >> (siehe Anhang) fertigzustellen. > > Ich frag emich ernsthaft warum fängst Du solche Projekte an, wenn Du > offensichtlich keine Ahnung davon hast? > > Noch schlimmer sind die Leute die solche Projekte vergeben. Wenn ich mir > den Quellcode ansehe kann ich nur sagen setzen 6. > > Waren das Studenten der Theologie oder was haben die studiert? Ich kann dich beruhigen. Es handelt sich hierbei um ein Studienprojekt, in dem Studenten in ihrer Freizeit (es gibt keine Note) eine kleine Windkraftanlage (Rotordurchmesser 1,8m) aus "Schrott", also Teilen, die zwar funftionstüchtig sind aber nicht mehr gebraucht werden, bauen. Da keiner von uns Informatiker ist, liegt das Augenmerk eher auf anderen Bereichen bezüglich der Anlage. Eine Steuerung ist aber unabdingbar, sodass sich eben einige, darunter auch ich, in diese Materie vorwagen, um auch dort neue Erfahrungen zu sammeln und etwas neues zu lernen.
Mark Kran schrieb: > Bereichen bezüglich der Anlage. Eine Steuerung ist aber unabdingbar, > sodass sich eben einige, darunter auch ich, in diese Materie vorwagen, > um auch dort neue Erfahrungen zu sammeln und etwas neues zu lernen. Keine Frage, dass ihr eine Steuerung brauchen werdet. Aber tu dir selbst einen Gefallen und fang mit einfacheren Dingen an. Der gepostete Code erzählt eine Geschichte. Nämlich die Geschichte, dass diejeigen die sie geschrieben haben sehr naiv an die Dinge rangegangen sind. Das ist zwar ein relativ naheligender Ansatz, aber nur auf den ersten Blick. Mit etwas mehr Erfahrung lernt man nämlich, dass zb Warteschleifen der Tod jeder Steuerungssoftware, die möglichst schnell auf äussere Einflüsse reagieren sollen, sind. Das geht so nicht. Der Code ist die Programmierform von: Um zu Multiplizeren, addiere ich einfach entsprechend oft, denn das ist das was ich bisher kann. Anstatt von 4 * 5 rechne ich 5 + 5 + 5 + 5 und da kommt doch auch das richtige raus. Was soll daher daran falsch sein? Nun falsch in dem Sinne nicht. Nur sitzt du bei 872356 * 982356 immer noch an den Additionen, während die Könner schon längst auf ein Bierchen gegangen sind. Das es in der Zwischenzeit schon etwas ganz anderes als Hausübung zu berechnen gilt, hast du gar nicht mitbekommen, weil deine Rechnerei viel zu lange dauert. Und die Gefahr, dass du dich verrechnet hast, ist auch nicht gerade unerheblich. Und da sind Feinheiten wie unbedingt notwendiger atomarer Zugriff auf eine uint32_t Variable noch gar nicht berücksichtigt. Insbesondere dieser Tatbestand macht diese Steuerung hier zu einem unberechenbaren Zufallsautomaten und nicht zu einer verlässlichen Steuerung. Abgesehen davon, dass hier die zugrundeliegende Programmiertechnik schon nicht stimmt, ist der Code auch noch fehlerhaft. Fehlerhaft in dem Sinne, dass zb die Anzahl der Anemometerumdrehungen in der ersten 10 Sekunden Periode nachdem die Bremse angezogen hat, nicht stimmt. Alle Anemometerticks, die während der Zeit die die Bremse zum anziehen benötigt, einlaufen gehen verloren und tragen daher nicht zur nächsten Messperiode bei. Im schlimmsten Fall könnte deine Bremse trotz konstanten Windes ständig auf und zufahren. Je nachdem wie lange die Bremse dazu benötigt und wie weit der Wind über dem Grenzwert liegt. Je länger die Bremse braucht, desto größer wird der Bereich in dem die 'Steuerung' zu schwingen anfängt.
Karl heinz Buchegger schrieb: >Nun falsch in dem Sinne nicht. Nur sitzt du bei 872356 * 982356 immer >noch an den Additionen, während die Könner schon längst auf ein Bierchen >gegangen sind. Das es in der Zwischenzeit schon etwas ganz anderes als >Hausübung zu berechnen gilt, hast du gar nicht mitbekommen, weil deine >Rechnerei viel zu lange dauert. Und die Gefahr, dass du dich verrechnet >hast, ist auch nicht gerade unerheblich. Früher hat man mal gesagt: per aspera ad astra Das man Anfangs mal viele Fehler macht ist ja klar und auch gut so - denn nur an den Fehlern, die man selbst gemacht hat kann man lernen. Also besser beim Studium in der Freizeit mit der Programmierung einer kleinen Windkraftanlage beginnen, als später dann bei der Steuerung eines Atomkraftwerkes...
was_is_mit_du schrieb: > Also besser beim Studium in der Freizeit mit der Programmierung einer > kleinen Windkraftanlage beginnen, als später dann bei der Steuerung > eines Atomkraftwerkes... Das ist richtig. Aber noch besser seine ersten Sporen damit verdienen, dass eine LED vor sich hinblinkt und sich die Blinkfrequenz a) auf Tastendruck b) abhängig von einer Motordrehzahl c) irgendein anderes Ereignis verändert. Dazu braucht man keine teure Hardware und man lernt dabei eine Menge. zb wie man Zustandsmaschinen aufbaut zb dass ein Systemtakt in Form einer ISR nicht schlecht ist zb dass ein Aufbau mit Jobflags seine Vorteile hat zb wie das mit Timern funktioniert zb wie man Drehzahlen vernünftig misst zb das man Datentypen nicht unnötig groß wählt zb was atomarer Zugriff ist etc. etc.
Karl heinz Buchegger schrieb: >Aber noch besser seine ersten Sporen damit verdienen, dass eine LED vor >sich hinblinkt und sich die Blinkfrequenz >a) auf Tastendruck >b) abhängig von einer Motordrehzahl >c) irgendein anderes Ereignis >verändert. Dazu braucht man keine teure Hardware und man lernt dabei >eine Menge. Das ist auch richtig. Allerdings ist es für viele schnöde mit diesen Grundlagen zu beginnen, ohne eine Anwendung dafür zu haben. Da kann man dann gleich sehen, warum das alles wichtig ist. Leider ist es für viele, die schon lange Programmieren schwierig, eine Problemstellung für Anfänger zu finden, so dass sie: a) nicht zu langweilig und einfach ist b) nicht zu schwierig ist und Erfolgserlebnisse ermöglicht Kommt halt immer auch auf die pädagogische Kompetenz der Lehrenden an.
was_is_mit_du schrieb: > man dann gleich sehen, warum das alles wichtig ist. Leider ist es für > viele, die schon lange Programmieren schwierig, eine Problemstellung > für Anfänger zu finden, so dass sie: > > a) nicht zu langweilig und einfach ist > b) nicht zu schwierig ist und Erfolgserlebnisse ermöglicht Du sprichst hier ein wahres Wort gelassen aus! Dieser Spaghat ist in der Tat wahnsinnig schwer.
Das würde ich hier dem Lehrenden aber nicht vorwerfen. Eine nicht zu langweilige Aufgabe heißt ja nicht, daß man nicht zum Lernen vorher mit etwas einfacherem anfangen dürfte, auch wenn es nicht zwingend vorgegeben ist. Sich erst mit einem Buch oder Tutorial schlau zu machen, ist doch nicht verboten. Bei meiner einen Studienarbeiten musste ich auch erst mehr Fortran und etwas Unix lernen, bevor ich in einer Turbine damit rumrechnen konnte.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.