\documentclass[]{schulein}
\usepackage[utf8]{inputenc}
\usepackage{schulinf}

% Dieses Dokument ist in der Zusammenarbeit von Informatikreferendaren und
% ehemaligen Informatikreferendaren der Studienseminare (heute ZfsL) Arnsberg,
% Hamm und Solingen entstanden.
%
% Das Dokument steht unter der Lizenz: Creative Commons by-nc-sa Version 4.0
% http://creativecommons.org/licenses/by-nc-sa/4.0/deed.de
%
% Nach dieser Lizenz darf das Dokument beliebig kopiert und bearbeitet werden,
% sofern das Folgeprodukt wiederum unter gleichen Lizenzbedingungen vertrieben
% und auf die ursprünglichen Urheber verwiesen wird.
% Eine kommerzielle Nutzung ist ausdrücklich ausgeschlossen.
%
% Die Namensnennung durch einen Verweis und die Lizenzangabe der ursprünglichen
% Urheber auf den Materialien für Schülerinnen und Schüler ist erforderlich.
%
% Die Sammlung der Dokumente steht unter
% http://ddi.uni-wuppertal.de/material/materialsammlung/
% zur Verfügung.
%
% Das LaTeX-Paket zum Setzen der Dokumente der Sammlung steht
% unter  http://www.ctan.org/pkg/schule
% zur Verfügung.

\usepackage[pdfauthor={Referendare der Informatikfachseminare Arnsberg, Hamm und Solingen}]{hyperref}
\includexmp{lizenz}
\cclizenz{byncsaeu}
\footerQRLink{materialsammlung_qr_url.pdf}

\svnid{$Id: info_02_gpio_motorsteuerung.tex 1515 2016-05-22 15:43:24Z pieper $}

\dokName{RasPi: Motor am GPIO}
\jahrgang{9}

\lstset{% 
	breaklines=true, % Zeilenumbrüche
	language=python, % Sprache
	basicstyle=\ttfamily\footnotesize,
	breakatwhitespace=false,
	tabsize=2,
}

\usepackage{inconsolata}

%Anpassungen für die Einbindung im Skript
\newcommand{\singleSection}[1]{\section*{#1}}
\renewcommand{\thesubsection}{\arabic{subsection}}

\begin{document}
\singleSection{Motor am GPIO}

Die meisten Motoren benötigen eine höhere Spannung als 3,3\,V und damit verbunden einen höheren Strom, als ihn der Raspberry liefern kann. Um trotzdem über den GPIO Motoren ansteuern zu können, benötigt man passende Schaltungen. Der Chip L293d ist dafür ideal, da er durch die eingebaute Brückenschaltung auch die Möglichkeit bietet, die Laufrichtung des Motors direkt zu beeinflussen. 

\begin{wrapfigure}[20]{r}{0.24\textwidth}
	\begin{center}
		\vspace{-1.0cm}
		\input{chip_l293d.cir}  

		\vspace{0.8cm}

		\input{schaltung_gpio_motor.cir}
	\end{center}
\end{wrapfigure}

An den Chip können zwei Motoren angeschlossen werden, die unabhängig voneinander gesteuert werden können, aber die gleiche Spannungsversorgung nutzen. Diese Spannungsversorgung für den Motor wird mit dem Pluspol an den Pin 8 angeschlossen. Die Masse wird, genauso wie die Masse vom Raspberry, an einen der Pins 4,5,12 oder 13 angeschlossen. Außerdem wird zur Spannungsversorgung Pin 16 mit dem 5\,V-Pol des Raspberry verbunden.

Der erste Motor wird durch die Ausgänge gesteuert, die sich Out\,1.1 und Out\,1.2 nennen. Dann kann durch Anlegen einer Spannung an In\,1.1 bzw. In\,1.2 die Laufrichtung gesteuert werden. Dabei ist zu beachten, dass nur jeweils einer der beiden Eingänge geschaltet werden darf. Unabhängig von der Laufrichtung muss auch der Enable-Eingang En\,1 geschaltet sein, damit der Motor sich bewegt. Der Anschluss des zweiten Motors erfolgt nach dem gleichen Prinzip an die anderen Anschlüsse.

Wird der Chip und der Motor wie in der nebenstehenden Darstellung beschaltet, so kann mit den Pins 12 und 16 die Laufrichtung des Motors gesteuert werden. Erst wenn zu einem der beiden Pins auch der Pin 18 belegt ist, wird sich dann der Motor in Bewegung setzen. 

\subsection{Geschwindigkeitsregelung über Pulsweitenmodulation}

Bei der Motorsteuerung ergibt sich beim Raspberry das Problem, dass er ein Pin nur an oder ausgeschaltet werden kann. Um damit die die Geschwindigkeit regulieren zu können, muss man sehr schnell an- und ausschalten, so dass der Motor z.\,B. nur bei der Hälfte der Zeit eine Spannung anliegen hat. Geschieht dieses Schalten schnell genug, dann dreht sich der Motor auch nur noch halb so schnell.  

\begin{wrapfigure}[8]{r}{0.4\textwidth}
	\vspace{-1cm}
	\begin{lstlisting}[gobble=4]
		# Pin 18 mit Frequenz von 50 Hz
		p = GPIO.PWM(18, 50)
		# Starten mit 30% Strom an
		p.start(30)
		# Ändern auf 50% Strom an
		p.ChangeDutyCycle(50)
		# Stoppen
		p.stop()
	\end{lstlisting}
\end{wrapfigure}

Für dieses schnelle Umschalten kann man die Pulsweitenmodulation nutzen. Dabei wird eine Folge Strom an und aus, mit einer wählbaren Frequenz wiederholt. Außerdem kann man dabei angeben, bei welchem Anteil dieser Folge der Strom angeschaltet ist. 

\input{pwm_50_30.cir}

\end{document}