Browse Source

Motortreiber

master
Yves 5 years ago
parent
commit
fff963422b
  1. BIN
      Latex/main.pdf
  2. 54
      Latex/main.tex
  3. 30
      Latex/references.bib

BIN
Latex/main.pdf

54
Latex/main.tex

@ -330,9 +330,63 @@ Die Umsetzung ist nichts anderes als die PWM-Werte für die beiden Motoren in je
\subsection{OneWire} \subsection{OneWire}
OneWire ist eine serielle Schnittstelle, die nur mit einer Datenleitung auskommt. Jedes angeschlossene Gerät hat eine eigene 64bit ROM Adresse, die man gezielt ansprechen kann. Alternativ, kann man Befehle an alle Geräte senden indem man den Skip ROM-Command (0xCC) benutzt. Anschließend kommt der eigentliche Befehl mit write(), der ausgeführt werden soll. Danach werden die Daten auf ein Scratchpad-Speicher geschrieben von wo sie per read() gelesen werden können. OneWire ist eine serielle Schnittstelle, die nur mit einer Datenleitung auskommt. Jedes angeschlossene Gerät hat eine eigene 64bit ROM Adresse, die man gezielt ansprechen kann. Alternativ, kann man Befehle an alle Geräte senden indem man den Skip ROM-Command (0xCC) benutzt. Anschließend kommt der eigentliche Befehl mit write(), der ausgeführt werden soll. Danach werden die Daten auf ein Scratchpad-Speicher geschrieben von wo sie per read() gelesen werden können.
\newpage
\section{Gedruckte Bauteile} %Yves
Alle gedruckten Bauteile haben wir selbst entworfen. einsehbar sind diese im Repositorium als STL oder aber auch unter den folgenden, öffentlichen Fusion 360 Links.
\newline
HC-SR04 Halterung \cite{HC-SR04_Halterung}
Joystick Halterung \cite{Joystick_Halterung}
Kugelrad \cite{Kugelrad}
Räder \cite{Räder}
Roboter Plattform \cite{Plattform}
Schalterhalterung \cite{Schalterhalterung}
\newpage \newpage
\section{Motorsteuerung} %Yves \section{Motorsteuerung} %Yves
Die Steuerung der Motoren wurde über den IC MX1508 realisiert. Dieser ist sehr günstig als Modul für etwa 1€ erhältlich.
Mit seinen Spezifikationen von max. 10V Versorgungsspannung und maximal 1,5A war er perfekt für dieses Projekt geeignet.
Leider konnten wir kein Datenblatt zu diesem IC finden, die Angaben stammen lediglich aus den Beschreibungen der Händler die dieses Modul verkaufen.
Es scheint sich um einen Treiber mit H-Brücke bzw. doppelter H-Brücke zu handeln, er verfügt über jeweils zwei Kanäle mit je zwei Eingängen. Je nach Polung der Eingänge kann ein Motor vorwärts oder rückwärts drehen.
Um die Geschwindigkeit der Motoren regulieren zu können schrieben wir eine Bibliothek mit dem Namen L298N (Achtung, nicht mit der gleichnamigen Bibliothek im Librarymanager der Arduino IDE zu verwechseln!).
Der Name ist angelehnt an den gleichnamigen IC, welcher dem MX1508 in seiner Ansteuerung ähnelt.
Die Bibliothek nutzt Timer1 als 8-Bit Timer für die im Atmega328p integrierten PWM-Module OC1A und OC1B.
Ein PWM Pin ist mit jeweils einem der beiden Eingangspins eines Kanals des MX1508 verbunden. Der jeweils andere Pin muss kein PWM Pin sein, muss aber je nach Drehrichtung korrekt gepolt sein. Für diese nicht-PWM-Pins haben wir die Portpins B0 (Kanal A) und D7 (Kanal B) verwendet.
\newline
Im folgenden Code ist exemplarisch zu sehen, wie das setzen eines PWM Wertes für Kanal A abläuft. Valide PWM-Werte sind -255 bis +255.
\begin{file}[MX1508]
\begin{lstlisting}[language=C++]
L298N::setPWM_A(int16_t pwmA) {
if(pwmA < 0) {
PWMA = 0xFF + pwmA;
PORT_A |= PIN_A;
} else {
if(pwmA == 0) {
PWMA = 0;
PORT_A &= ~PIN_A;
} else {
PWMA = pwmA;
PORT_A &= ~PIN_A;
}
}
}
\end{lstlisting}
\end{file}
Zunächst wird geprüft, ob der PWM-Wert "`pwmA"' negativ ist. Davon hängt die Polung von "`PIN A"' ab und ob der PWM-Wert negiert werden muss.
\newline
Anschließend werden PWM-Wert und der Zustand des nicht-PWM-Pins entsprechend gesetzt.
%Folgende beiden ließen sich auch durch subsections mittels sensoric als section realisieren, kommt aber auf die menge des textes an subsections sollten nicht über eine halbe seite lang sein. %Folgende beiden ließen sich auch durch subsections mittels sensoric als section realisieren, kommt aber auf die menge des textes an subsections sollten nicht über eine halbe seite lang sein.
\newpage \newpage
\section{Thermosensor} %Nick \section{Thermosensor} %Nick

30
Latex/references.bib

@ -45,5 +45,35 @@
note = {[Online; zugegriffen am 09.02.2020]}, note = {[Online; zugegriffen am 09.02.2020]},
url = {https://components101.com/sites/default/files/component_pin/nRF24L01-Pinout.png} url = {https://components101.com/sites/default/files/component_pin/nRF24L01-Pinout.png}
} }
@Unpublished{HC-SR04_Halterung,
author = {Yves Ehrlich},
note = {https://a360.co/2u9rUmk},
title = {HC-SR04 Halterung},
}
@Unpublished{Joystick_Halterung,
author = {Yves Ehrlich},
note = {https://a360.co/36IMYx7},
title = {Joystick Halterung},
}
@Unpublished{Kugelrad,
author = {Yves Ehrlich},
note = {https://a360.co/390BhTY},
title = {Kugelrad},
}
@Unpublished{Räder,
author = {Yves Ehrlich},
note = {https://a360.co/2uQTSDm},
title = {Räder},
}
@Unpublished{Plattform,
author = {Yves Ehrlich},
note = {https://a360.co/2Ok7v4P},
title = {Roboter Plattform},
}
@Unpublished{Schalterhalterung,
author = {Yves Ehrlich},
note = {https://a360.co/38YTKAo},
title = {Schalterhalterung},
}
@Comment{jabref-meta: databaseType:bibtex;} @Comment{jabref-meta: databaseType:bibtex;}
Loading…
Cancel
Save