Bachelorarbeit Chris Bauer - Geothermie Wiki - zwerg - KIT
Bachelorarbeit Chris Bauer - Geothermie Wiki - zwerg - KIT
Bachelorarbeit Chris Bauer - Geothermie Wiki - zwerg - KIT
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