29.01.2013 Aufrufe

Bachelorarbeit Chris Bauer - Geothermie Wiki - zwerg - KIT

Bachelorarbeit Chris Bauer - Geothermie Wiki - zwerg - KIT

Bachelorarbeit Chris Bauer - Geothermie Wiki - zwerg - KIT

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

7.1. Inbetriebnahme einzelner Module<br />

Die Flankentriggerung muss jedoch nur in der Startinitialisierung mit dem Array „Kom-<br />

mu_r“ oder „Kommu_l“ - je nach Drehrichtung - eingestellt werden. Danach kann im-<br />

mer zwischen positiver und negativer Flanke getoggelt werden. Dies ist notwendig, da<br />

der Mikrocontroller nur die positive oder die negative Flanke erkennen kann. [11]<br />

Als Beispiel werden die Arrays für den Rechtslauf hier aufgezeigt:<br />

1 i n t senswert_erw_r [ 8 ] = { 0 , 0 x03 , 0 x06 , 0 x02 , 0 x05 , 0 x01 , 0 x04 , 0 } ;<br />

2 i n t Kommu_r [ 8 ] = { 0 , 4 0 , 2 4 , 4 8 , 4 8 , 2 4 , 4 0 , 0 } ;<br />

3 i n t Flanke_r [ 8 ] = { 0 x00 , 0 x07 , 0 x07 , 0 x00 , 0 x07 , 0 x00 , 0 x00 , 0 x00 } ;<br />

4 i n t pwm_r [ 8 ] = { 0 , 1 , 2 , 2 , 3 , 1 , 3 , 0 } ;<br />

Das Springen an die gewünschte Position in den Arrays wird mit dem 3-Bit-Wert der<br />

Hall-Sensoren realisiert. Da die Werte der Hall-Sensoren nicht einer binären schrittwei-<br />

sen Erhöhung entsprechen, sieht die Anordnung der Werte zusammengewürfelt aus.<br />

Mit dieser Umsetzung wird das Programm aber sehr schnell abgearbeitet, da ledig-<br />

lich die Sensorwerte als Adresswerte in die Arrays eingesetzt werden müssen. Je nach<br />

Drehrichtung und der Unterscheidung, ob gebremst werden soll, wird das passende<br />

Array ausgewählt.<br />

Der Vergleich, ob der Sensorwert dem erwarteten entspricht, geht dann sehr einfach:<br />

1 inpneu=GIODINA & 0x07 ;<br />

2 i f ( senswert_erw_r [ inp ]== inpneu )<br />

Es muss lediglich der alte Wert der Hall-Sensoren als Adresse für das Array verwendet<br />

werden.<br />

Nachdem der Abgleich durchgeführt wurde, kann kommutiert werden. Hierbei wird<br />

der entsprechende Wert aus dem Array „Kommu_r “ (bei Drehrichtung rechts) auf den<br />

GIO Port A geschrieben und die PWM-Signale aktualisiert, sowie der Interrupt des<br />

PWM-Signals freigegeben (näheres hierzu in Unterabschnitt 7.1.2). Danach wird die<br />

aktuelle Motorposition für den nächsten Vergleich in der Variable „inp“ gespeichert.<br />

Anschließend folgt die Umstellung der Flankentriggerung und das Zurücksetzen des<br />

GIO Port A Interrupts, damit der Interrupt wieder funktioniert.<br />

Tritt ein Fehler in den Hall-Sensorwerten auf, wird die Stoppinitialisierungs aufgerufen<br />

und der Motor hält an.<br />

Diese Fehlererkennung muss für den Fall, dass etwas mit dem Motor positioniert wer-<br />

den soll, deaktiviert bzw. abgeändert werden. Bei der Positionierung ist je nach Rege-<br />

lung eine Richtungsumkehr von Rechts- auf Linkslauf notwendig. Die Erkennung eines<br />

nicht erwarteten Hall-Sensorwertes könnte hier die Erkennung der Richtungsumkehr,<br />

<strong>Chris</strong> <strong>Bauer</strong> 60

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!