9
1 05.06.2015 Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung [email protected] [email protected] Folge 10 – Smarter mit LEGO Objektorientierte Motoransteuerung

105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung [email protected] [email protected] Folge 10 – Smarter mit LEGO Objektorientierte

Embed Size (px)

Citation preview

Page 1: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

105.06.2015Übung 10 - MdMT

Methoden der MedizintechnikÜbung zur Vorlesung

[email protected]@ovgu.de

Folge 10 – Smarter mit LEGO Objektorientierte Motoransteuerung

Page 2: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

205.06.2015Übung 10 - MdMT

• Heute eine komplett mathefreie Übung.

Motivation

Page 3: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

305.06.2015Übung 10 - MdMT

Verbesserte Ansteuerung des Motors Problem beim bisherigen Vorgehen (Übung 9, Aufgabe 1):

• Es ruckelt, da man die Dauer der Motorbewegung in MATLAB nur erraten kann.

Lösung: Motor „objektorientiert“ ansteuern

Vorteil: Sehr genaue Kontrolle über den Motor zu jeder Zeit

Nachteil: Mehr Schreibarbeit / das Programm wird länger

Page 4: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

405.06.2015Übung 10 - MdMT

Einfache Ansteuerung LEGO-Motor% Bisher:

NXC_MotorControl(MOTOR_A,50,100,'false','Brake','true');

% ... Programm läuft sofort weiter (bevor Motor fertig ist)

Page 5: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

505.06.2015Übung 10 - MdMT

Neu: Genauere Ansteuerung des LEGO-Motors

% "Voreinstellung" des Motors nach ProgrammstartmotorA = NXTMotor('A', 'Power', 100); % Motor A mit 100% LeistungmotorA.SpeedRegulation = false;motorA.TachoLimit = 60;motorA.ActionAtTachoLimit = 'Coast'; motorA.SmoothStart = false;

% ... irgendetwas anderes tun ... Motor steht noch still!

% Jetzt erst Start der vorkonfigurierten BewegungmotorA.SendToNXT();pause(0.1);

% ... irgendetwas anderes tun ...

% Änderung der Geschwindigkeit und% Motor hiermit (neu)startenmotorA.Power = 50;motorA.SendToNXT();pause(0.1);

Page 6: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

605.06.2015Übung 10 - MdMT

Jetzt möglich: Auf den Motor „warten“ - DAS Mittel gegen Ruckeln und Piepsen% "Voreinstellung" des Motors nach ProgrammstartmotorA = NXTMotor('A', 'Power', 100); % Motor A mit 100% LeistungmotorA.SpeedRegulation = false;motorA.TachoLimit = 90;motorA.ActionAtTachoLimit = 'Coast'; motorA.SmoothStart = false;

% ... irgendetwas anderes tun ...

% Start der Vorkonfigurierten Bewegung!motorA.SendToNXT();pause(0.1);

% Auf Abschluss der Bewegung wartenmotorA.WaitFor(5,h); %(Max. Wartezeit in Sek., NXT-Handle)

% Änderung der Geschwindigkeit und % Motor nahtlos weiterlaufen lassenmotorA.Power = 100;motorA.SendToNXT();pause(0.1);

Page 7: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

705.06.2015Übung 10 - MdMT

Noch besser: Motor endlos laufen lassen + dabei Geschwindigkeit ändern% "Voreinstellung" des Motors nach ProgrammstartmotorA = NXTMotor('A', 'Power', 100); % Motor A mit 100% LeistungmotorA.SpeedRegulation = false;motorA.TachoLimit = 0; % Motor dreht endlos und kann dabei % weiter auf Befehle reagieren – ohne % zu piepsenmotorA.ActionAtTachoLimit = 'Coast'; motorA.SmoothStart = false;

% Start der Vorkonfigurierten Bewegung!motorA.SendToNXT();pause(0.1);

% ... irgendetwas anderes tun, Motor läuft derweil weiter ...

% Änderung der Geschwindigkeit (hier: Stoppen des Motors)motorA.Power = 0;motorA.SendToNXT();pause(0.1);

Page 8: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

805.06.2015Übung 10 - MdMT

Bitte berühren: Auslesen des TastsensorOpenSwitch(SENSOR_1);

% ... Schleifenstart u.a.

% „Messung“ des Zustandesschalter1IstGeradeGedrueckt = GetSwitch(SENSOR_1);

% ... Anders tun ...if (schalter1IstGeradeGedrueckt) %... Noch etwas anderes tun ... disp(1);else disp(2);end

% ... Schleifenende ...

CloseSensor(SENSOR_1);

Page 9: 105.06.2015Übung 10 - MdMT Methoden der Medizintechnik Übung zur Vorlesung knueppel@ovgu.de marcus.schmidt@ovgu.de Folge 10 – Smarter mit LEGO Objektorientierte

905.06.2015Übung 10 - MdMT

Baue aus einem bzw. zwei Tastsensoren eine Fernsteuerung für einen LEGO-Motor.

Aufgabe 1Solange Taster 1 gedrückt gehalten wird, dreht sich der Motor linksherum mit 50% Leistung – mit Taster 2 entsprechend andersherum und 50% Leistung. Werden beide gleichzeitig gedrückt gehalten, dreht er linksherum mit 100% Leistung. Beim Loslassen stoppt er sofort. Verwende die erweiterte Art der Motoransteuerung (siehe diese Folien).

Aufgabe 2Wird Taster 1 angetippt, startet der Motor. Wird er nochmals angetippt, stoppt er wieder. Verwende die erweiterte Art der Motoransteuerung (siehe diese Folien).

Aufgaben - Proportionalsteuerung