Geschwindigkeitsermittlung

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Ziel dieses Spezialthemas ist die Ermittlung der wahren Gechwindigkeit des Fahrzeuges im Online-Model. Als Input werden die Hallsensoren des Motors asynchron ausgelesen und durch eine Logik verarbeitet.

Projektteam

Jan Kifmann
Hauke Ludwig

Hardware

Software

Ansatz

Da die Geschwindigkeitsermittlung, wie im vorherigen Abschnitt beschrieben, über einen Interrupt gesteuert werden soll, ist es notwendig, dass der Prozess der Geschwindigkteisermittlung asynchron zur Simulation läuft. Jedoch soll die Ausgabe der Geschwindigkeit synchron zur Simulationszeit erfolgen. Daraus folgt, dass es eine Trennung zwischen der Ermittlung aus den Interruptsignalen und der Weitergabe an die Software geben muss. Daraus folgt, dass die Ermittlung der Geschwindigkeit anhand der Interrupts durch ein Triggered Subsystem geschehen muss. In diesem werden asynchron die Hall-Sensoren ausgelesen, sobald ein Interrupt gemeldet wird. Anhand der gespeicherten Zeiten und Stati der Sensoren soll dann im synchronen Bereich der Geschwindigkeitsermittlung die Geschwindigkeit ermittelt werden. Dieser Zusammenhang ist im folgenden Schaubild dargestellt.
width:100% In der Grafik ist sehr schön zu erkennen, dass es sich hierbei um eine Testumgebung handelt, welche den gesamten Prozess der Geschwindigkeitsermittlung nachbildet. So ist auf der linken Seite die "Quelle" der Interrupts zu erkennen. Diese wird durch ein Chirp Signal erzeugt, welches mit sinkender Frequenz High und Low Pegel auf die Trigger der beiden Triggered Subsystems gibt. Im ersten, linken Subsystem wird das Hall-Signal für die 3 Sensoren erzeugt, dies geschieht durch Durchschalten eines Logikgatters, welches die 6 Status der Hallsensoren abbildet. Die Logikschaltung ist im Folgenden abgebildet.
Jedes mal, wenn das Subsystem aktiviert wird, zählt der Counter um eine Position nach oben, bis er die 6 erreicht. Danach springt er wieder auf die 1 und beginnt von vorne. Dadurch lassen sich folgende Signale für die Hallsensoren erzeugen:

Status Hallsensor A Hallsensor B Hallsensor C
1 1 0 1
2 1 0 0
3 1 1 0
4 0 1 0
5 0 1 1
6 0 0 1

Nachdem die Hallsensoren simuliert wurde, können diese über das rechte Triggered Subsystem wieder ausgelesen werden. Dies geschieht durch Verknüpfung der einzelnen Hallsensoren übe rein Logikgatter, welches aus einer komibinierten Logik ein Status zwischen 1 und 6 erzeugt. Dieser Status spiegelt die aktuelle Positiond es Ankers des Motors wieder. Der Status wird anschließend in eine MatLab Funktion geschrieben. Zeitgleich wird hier auch der aktuelle Timestamp und die alten Werte eingelesen. Anhand des folgenden Codes wird daraus eine Tabelle erzeugt, welche die letzten 10 Werte beinhaltet und diese in den Store schreibt. Aus diesem Store kann dann wieder synchron gelesen werden und somit die GEschwindigkeit für die Simulation bereit gestellt werden. Im folgenden ist erst der Code zur Erzeugung der Matrix abgebildet. Anschließend wird noch das Simulink-Modell für das Auslesen der Sensoren abgebildet.

function [vout,Store_OUT]   = fcn(Value,t,Store_IN)

%% Definitions
durchmesser = 0.0663; %m
umfang = pi*durchmesser;
motoruebersetzung = 4; % 4 Steps = 1 Turn
motorstep = 6;
sPerTurn = umfang / motorstep;

%% Calculation
if (abs(Value-Store_IN(1)) > 4)
    if Value < Store_IN(1)
        v = ((1)*sPerTurn) / (t-Store_IN(2));
    else
        v = ((-1)*sPerTurn) / (t-Store_IN(2));
    end
else    
    v = ((Value-Store_IN(1))*sPerTurn) / (t-Store_IN(2));
end

%% Output
Store_OUT = [Value t];
vout = [v t]

Status ermitteln.png

Testaufbau