Aufgabe max. Punkte err. Punkte

Werbung
Universität Koblenz–Landau
Name:
Musterlösung
Institut Naturwissenschaften
Vorname:
..................
Abteilung Physik
Matr. Nr.:
..................
Studiengang:
..................
Klausur PHMJ02
SS2012
Mikrocontroller
und Robotik
Mittwoch 15.8.2012
Lösen Sie die Aufgaben 1 - 6!
Verwenden Sie keinen Bleistift!
Es sind keine Hilfsmittel zugelassen.
Schalten Sie Ihr Handy aus!
GUTEN ERFOLG !!!
Aufgabe
1
2
3
4
5
6
max. Punkte
9
9
11
10
10
11
err. Punkte
Summe Pkte.: . . . . . . . . .
Note.: . . . . . . . . . . . . . . . . . . . . . . . .
2
Aufgabe 1:
Diskrete Treiberschaltungen
Ein Transistor verhält sich wie ein regelbarer Widerstand. Dabei muss aber mindestens eine
Spannung von 0,7V zwischen Basis und Emitter anliegen, damit der Transistor überhaupt
leitet.
Gegeben sei folgende Treiberschaltung zur Ansteuerung eines 12V Gleichstrommotors. Der
Eingang UI der Schaltung wird mit TTL Pegel betrieben.
12V
UI
M
Doch die Schaltung funktioniert nicht wie erwartet! Zwar stoppt der Motor bei UI = 0V ,
allerdings dreht sich der Motor nicht oder nur sehr langsam, wenn die Schaltung mit HIGH=5V
im Eingang belegt wird.
a) Wo liegt der grundlegende Fehler in der Schaltung?
Hinweis: Motor und Transistor bilden einen Spannungsteiler.
Beginnt der Transitor zu leiten, steigt die Spannung am Motor. Sobald diese Spannung
allerdings 4.3 V übersteigt, beginnt der Transistor wieder zu sperren, da die Spannungsdifferenz zwischen Basis (5V) und Emitter (4,3V) die geforderten 0,7 V unterschreitet.
Das Sperren hat wiederum zur Folge, dass die Spannung am Motor ebenfalls wieder
sinkt, und die 0,7 V BE Spannung wieder erreicht wird. Es stellt sich ein Gleichgewicht
ein, bei der die Basis-Emitterspannung etwa die 0,7V erreicht.
(
)/5
b) Mit wieviel Volt wird der Motor effektiv betrieben?
Der Motor wird demnach mit etwa 4,3 Volt betrieben.
(
)/1
(
)/3
c) Modifizieren Sie die Schaltung in eine funktionierende Treiberschaltung.
12V
M
UI
3
Aufgabe 2:
DA-Wandler
Digital-Analog Wandler können in Verbindung mit einem Analogeingang eines Mikrocontrollers dazu verwendet werden, mehrere digitale Schalter gleichzeitig auszuwerten. Der Vorteil
dieser Vorgehensweise liegt darin, dass nur ein einziger Anschlusspin am Mikrocontroller
belegt wird.
Gegeben sei dazu folgende Schaltung:
R
R
R
ADC0
ATmega16
2R
2R
2R
2R
2R
UA
d0
d1
d3
d2
Uref
Je nach Stellung der Schalter (d3 · · · d0 ) wird eine definierte Ausgangsspannung UA erzeugt,
die vom AD-Wandler des Mikrocontrollers in eine 10 Bit Zahl umgewandelt wird. Aus diesem
gemessenen Wert können die Schalterstellungen rekonstruiert werden.
a) Wieviele verschiedene Ausgangsspannungen (UA ) können mit dem obigen DA-Wandler
erzeugt werden?
Es können 16 verschiedene Spannungen erzeugt werden.
(
)/1
c) Welche Ergebnisse finden sich im ADC-Ergebnisregister, wenn folgende Schalterstellungen eingestellt sind (dn = 0 Schalter n auf Masse, dn = 1 Schalter n auf Uref )
d3
0
0
0
1
d2
0
0
1
1
d1
0
1
1
1
d0
1
1
1
1
Messergebniss
im 10 Bit AD-Register
64
192
448
960
(
)/4
c) Tragen Sie für folgende Messergebnisse die entsprechenden Schalterstellungen in die
Tabelle ein (dn = 0 Schalter n auf Masse, dn = 1 Schalter n auf Uref )
Messergebniss
im 10 Bit AD-Register
704
320
896
438
d3
1
0
1
0
d2
0
1
1
1
d1
1
0
1
1
d0
1
1
0
1
(
)/4
4
Aufgabe 3:
AD-Wandler
Neben den parallelen AD-Wandlern werden in wenig zeitkritischen Anwendungen hauptsächlich serielle AD-Wandler verwendet.
a) Erläutern Sie den prinzipiellen Unterschied zwischen paralleler und serieller Wandlung,
sowie deren Vor- und Nachteile.
parallel: gleichzeitiger (paralleler) Vergleich mit allen Referenzspannungen
2n − 1 Komparatoren, schnell, teuer
seriell: Einzelvergleich (seriell) mit allen Referenzspannungen
1 Komparator, langsam, billig
(
)/2
b) Bei der seriellen Wandlung kann ein einfaches Abzählverfahren oder eine sukzessive
Approximation eingesetzt werden. Schätzen Sie mit Hilfe der O-Notation den Aufwand
für eine n-Bit Wandlung für:
- den günstigsten Fall (minimale Wandlungsdauer)
- den Durchschnitt
- den ungünstigsten Fall (maximale Wandlungsdauer)
für alle drei Verfahren. Die Signalfolge sei gleichverteilt.
Min
φ
Max
paralleles Abtasten
O(1)
O(1)
O(1)
Abzählverfahren
O(1)
O(2n−1 )
O(2n )
sukzessive
Approximation
O(n)
O(n)
O(n)
(
)/6
c) Bestimmen Sie die höchste Frequenz, die bei den drei Wandlungsverfahren sicher abgetastet werden kann. Es soll eine 8 Bit-Wandlung durchgeführt werden, der Komparator
kann 1024 Vergleiche pro Sekunde durchführen.
nach dem oben ermittelten Aufwand und dem Shannon’schen Abtasttheorem gilt:
Parallel: 1024 Hz / 1 = 1024 Hz Abtastrate → max. 512 Hz Abtastfrequenz
Approximation: 1024 Hz / 8 = 128 Hz Abtastrate → max. 64 Hz Abtastfrequenz
Abzählverfahren: 1024 Hz / 256 = 4 Hz Abtastrate → max. 2 Hz Abtastfrequenz
(
)/3
5
Aufgabe 4:
Operatoren in C
Gegeben seien zwei unsigned char Variablen a und b. Berechnen Sie die Ergebnisse folgender
logischer Operationen. Stellen Sie Ihre Ergebnisse als Bitzahlen sowie als Hexadezimalzahlen
dar. Der Compiler repräsentiert die Begriffe true und false mit den Werten 1 bzw. 0.
unsigned char a = 0xE4;
unsigend char b = 0xAA;
Hinweis: es findet keine Zuweisung statt, d.h. die Inhalte der Variablen bleiben unverändert.
binär
hexadezimal
a&b
1010 0000
0xA0
a|b
1110 1110
0xEE
˜a
0001 1011
0x1B
˜b
0101 0101
0x55
aˆb
0100 1110
0x4E
a <<1
1100 1000
0xC8
a >>2
0011 1001
0x39
a && b
0000 0001
0x01
a||b
0000 0001
0x01
!a
0000 0000
0x00
(
) / 10
6
Aufgabe 5:
Schrittmotor
Entwerfen Sie ein C-Programm zur Ansteuerung eines Schrittmotors. Der Schrittmotor soll
im Halbschritt betrieben werden.
PA0
PA1
PA3 PA2
a) Geben Sie zunächst die logische Steuerfolge (in 1/0 Notation) für den Halbschrittbetrieb in beliebiger Drehrichung an:
Schritt Nr.
0
1
2
3
4
5
6
7
PA3
0
0
0
0
1
1
1
0
PA2
1
1
1
0
0
0
0
0
PA1
0
0
1
1
1
0
0
0
PA0
1
0
0
0
0
0
1
1
(
)/4
b) Schreiben Sie ein möglichst kurzes C-Programm zur Ansteuerung in beide Drehrichtungen. Verwenden Sie PortA (s. Tabelle) als Ausgabe. Die Steuerung der Drehrichtung
erfolgt über PORTC am PIN0. Eine Konfiguration der Ports ist nicht gefordert, ebensowenig wie Delays zwischen den Ausgaben.
void main()
{
unsigned char i,motor[8]=0x05,0x04,0x06,0x02,0x0A,0x08,0x09,0x01;
while(1)
PORTA=motor[i=(i+1-2*(PINC & 0x01))%8];
}
(
)/6
7
Aufgabe 6:
C - Programmierung
Interpretieren Sie folgende C-Funktion:
void function(int a, int b)
{
if(a<b)
{
a ^= b;
b ^= a;
a ^= b;
}
}
Hinweis: ˆ ist die XOR Funktion in der C-Notation.
a) Welche Inhalte haben die beiden Variablen a und b am Ende der Funktion (Herleitung)?
Welche Intension verfolgt somit diese Funktion?
Zuweisung 1: a = a 6≡ b
Zuweisung 2: b = b 6≡ a = b 6≡ (a 6≡ b) = a
Zuweisung 3: a = a 6≡ b = (a 6≡ b) 6≡ a = b
Die Funktion tauscht die Inhalte der beiden Variablen sofern a < b ist. In A wird also
immer die größere Zahl und in B die kleinere Zahl zurückgeliefert: Sortierfunktion
(
)/6
b) Welchen Fehler hat jedoch der Programmierer gemacht?
Da die Parameter call by value übergeben werden, behalten Sie im aufrufenden Program
ihre Inhalte. Die Funktion ist somit nutzlos. Die Parameter müssen call by reference
übergeben werden.
(
)/3
(
)/2
c) Notieren Sie eine korrekte Version der Funktion.
void function(int *a, int *b)
{
if(*a < *b)
{
*a ˆ= *b;
*b ˆ= *a;
*a ˆ= *b;
}
}
Herunterladen