Mikroprozessortechnik II
Mikroprozessortechnik II
Mikroprozessortechnik II
Kartei Details
Karten | 78 |
---|---|
Sprache | Deutsch |
Kategorie | Elektrotechnik |
Stufe | Universität |
Erstellt / Aktualisiert | 14.09.2020 / 08.08.2024 |
Weblink |
https://card2brain.ch/box/20200914_mikroprozessortechnik_ii
|
Einbinden |
<iframe src="https://card2brain.ch/box/20200914_mikroprozessortechnik_ii/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Was beinhaltet das THGA Arduino Motherboard?
Einen lichtempfindlichen Widerstand (LDR) zur Messung der Umgebungshelligkeit.
Einen Piezo-Summer zur Ausgabe von akustischen Signalen.
Drei PhotoMOS-Relais (60V, 1A), mit parallel geschalteten LEDs, zur Ansteuerung beliebiger Aktoren.
Zwei Breakout-Boards zum Betrieb von Pt100-Temperatursensoren.
Ein Breakout-Board zum Betrieb eines BMP280-Sensors (Messung von Luftdruck und Lufttemperatur).
Ein Impedanzwandler zur Ausgabe einer analogen Spannung.
Einen Integrator zur Umwandlung eines PWM-Signals in eine analoge Spannung.
Ein 2,9´´-ePaper-Display (296 * 128 Pixel).
Anschlussmöglichkeiten für SPI-und I2C-Bus über MiniDINBuchsen.
Eine serielle UART-Schnittstelle über MiniDIN-Buchse.
Digitale I/O-Ports und analoge IN-Port auf Schraubklemmen geführt.
Ein externer Reset-Taster.
Eine Spannungsversorgungsbaugruppe: 9-12V-Steckernetzteil auf 5V.
Nennen sie die grundlegenden Kenngrößen eines A/D-Wandlers.
- Referenzspannung Uref
- Auflösung n
- Wert des LSBs (Least significant Bit)
- Umsetzzeit
- Umsetzgeschwindigkeit
Welchen Einfluss hat die Refferenzspannung Uref auf einen A/D-Wandler
Referenzspannung Uref:
Legt den Messbereich für dieEingangsspannungen fest und es gilt daher:
Uein = 0 … Uref
Größere bzw. kleiner (negative) Eingangsspannungen zerstören den Wandler !
Gängige Werte für Uref liegen zwischen 2,5 V … +5 V.
Mit anderen Worten: zu große Eingangsspannungen müssen zuvor heruntergeteilt und zu kleine Eingangsspannungen müssen zuvor verstärkt werden.
Uref legt also generell den Messbereich des A/D-Wandlers fest !
Welchen Einfluss hat die Auflösung n auf einen A/D-Wandler?
Auflösung n:
Gibt die Breite des binären Ergebniswortes in Bit an.
Gänige Werte für n liegen zwischen 6 … 24.
Welchen Einfluss hat der Wert des LSBs (Least significant Bit) auf einen A/D-Wandler?
Wert des LSBs (Least significant Bit):
Wert der letzten Bit-Stelle, d.h. wenn sich die letzte Bitstelle genau um 1 Bit nach oben oder nach unten ändert ==> welche Änderung der Eingangsspannung „steckt“ dahinter.
Oder mit anderen Worten: um welchen Wert muss sich die Eingangsspannung mindestens ändern, damit sich das binäre Ergebniswort um 1 Bit ändert ?
Hier gilt dann:
Wert des LSBs = Uref / Anzahl der Wandlungsstufen = Uref / 2n
Welche beiden Funktionen werden bei einem Arduino Programm immer benötigt?
void setup() {
//put your setup code here, to run once:
}
void loop() {
//put your main code here, to run repeatedly:
}
Was kommt in die Funktion setup() beim Arduino?
Es wird einmalig beim Start des Programms (Reset, Einschalten der Betriebsspannung) aufgerufen und in ihr werden i.a. Setup-Parameter und andere Grundeinstellungen festgelegt
Was kommt in die Funktion loop() beim Arduino?
Es ist das eigentliche C-Main-Programm, das in einer Endlosschleife ausgeführt wird.
Hierin wird also das Anwendungsprogramm programmiert (entspricht also der ´main()´-Funktion in C).
Hier ist keine alles umschließende while(1)-Schleife notwendig !
Der korrekte Ablauf bzw. Aufruf der beiden Funktionen wird automatisch vom Compiler gesteuert und darum braucht sich der Anwender nicht weiter zu kümmern.
Wie sieht der Aufbau eines Arduino-Sketches aus?
#inlcude-Anweisungen
Globale Variablen
void setup()
}
{
void loop()
{
}
Selbstgeschriebene Funktionen
Welche Datentypen gibt es beim Arduino?
Es gibt den Datentyp ´boolean´ mit zwei Wertezuständen.
´byte´ ≡ ´unsigned char´
´word´ ≡ ´unsigned int´
´double´ ≡ ist bei einigen Boards identisch mit ´float´, bei anderen aber wirklich auch echtes ´double float´.
Welchen Einfluss hat die Umsetzzeit auf einen A/D-Wandler?
Umsetzzeit:
Zeit zwischen dem anlegen der Analogspannung bzw. zwischen dem Startimpuls zum Wandekbeginn und der Ausgabe des Datenwortes.
Je nach angewendetem Wandlerverfahren ist
- die Umsetzzeit unabhängig von der Höhe der gerade anliegenden Analogleingangsspannung oder
- die Umsetzzeit abhänig von der gerade anliegenden Analogeingangsspannung
Was ist beim switch case Befehl besonders am Arduino?
Bei diesem C-Compiler können auch Bereiche angegeben werden:
switch (i)
{
case 34 ... 78: k=45;
break;
case 145 ... 112: k=78;
break;
}
Beachten:
- Vor und nach den drei Punkten muss ein Leerzeichen stehen.
- Die Bereiche dürfen sich nicht überlappen.
- Der erste Wert muss nicht kleiner sein als der zweite Wert.
Welchen Einfluss hat die Umsetzgeschwinigigkeit auf einen A/D-Wandler?
Umsetzgeschwinigigkeit:
Sie gibt die Zeit der Umsetzung pro Sekunde an.
Welche prinzipielles Problem gibt es bei der A/D-Wandlung?
Die Umwandlung einer analogen Einspannungsspannung in einen Zahlenwert durch einen A/D-Wandler geschieht immer näherungsweise, da ein A/D-Wandler nut einzelne Spannungsstufen bzw. Vielfach der Spannungsstufe erkennen und umsetzen kann.
Nennen sie 2 Arten von A/D-Wandlerverfahren
Direkte und indirekte Wandlerverfahren
Nennen sie 3 direkte Wandlerverfahren eines A/D-Wandlers.
- Parallel-Wandlung
- Wägeverfahren
- Zählverfahren
Beschreiben sie das Parallele-Wandlungsverfahren?
Ermittlung des Ergbnisses "sofort", durch direkten Vergleich, in einem Schritt:
- Parallel-Wandler (Flash-Wandler)
- Halb-Parallel-Wandler (Parallel-Seriell-Wandler)
Beschreiben sie das Wägeverfahren.
Direkte Ermittlung des Wandelergbnisse durch stufen- bzw. schrittweise Annäherung
Beschreiben sie das Zählverfahren beim A/D-Wandler.
- Stufenumsetzer (Kompensationsverfahren)
- Stufenumsetzer mit Zweirichtungszähler
- Serieller A/D-Wandler
Was sind die drei verschiedenen Möglichkeiten eine Software für ein Arduino-Board zu programmieren?
- Direkte Programmierung auf SFR-Ebene
Hierbei programmiert man alles selber unter direktem Zugriff auf die SFR des µCs.
Das setzt allerdings ein intensives Studium (und Verständnis) des zugehörigen µC-Datenblattes voraus: Datenblatt der SAM D21erFamilie: 1202 Seiten (!!!).
So lassen sich allerdings super-optimale Programme erstellen, die mit maximaler Geschwindigkeit ablaufen.
Weiterhin können bzw. müssen so Funktionen erstellt werden, die es in der Arduino-IDE bzw. in externen Bibliotheken (noch) nicht gibt.
Programmerstellung unter Verwendung der vielfältigen Arduino-Bibliotheken
Zu fast allen Problemstellungen gibt es bereits fertige Arduino-Funktionen in der Arduino-IDE bzw. in extern zubindbaren Funktionsbibliotheken.
Diese kann man einfach in seinem ´C´-Programm verwenden und arbeitet so dann „nur“ mit den fertigen komfortablen Bibliotheksfunktionen.
Mit der direkten SFR-Programmierung (auf der unmittelbaren HardwareEbene) hat man dann gar nichts mehr zu tun.
Die so erstellten Programm laufen dann (vielleicht) unwesentlich langsamer ab als bei der direkten Programmierung gem. Punkt 1.
Das ist aber in vielen Fällen absolut vernachlässigbar !
Programmerstellung durch eine Mischung von 1. und 2.
In diesem Fall erstellt man wesentliche Teile des Programms durch Anwendung der komfortablen fertigen Funktionen und nur äußerst zeitkritische oder neue, (noch) nicht vorhandene, Funktionen werden durch direkte Programmierung auf der SFR-Ebene erstellt.
Was macht ein indirektes Wandlerverfahren beim A/D-Wandler aus?
Auswertung einer Zwischengröße
- Ermittlung des Wandelergbnisses durch eine Spannungs-Frequenz-Umsetzung
- U/f-Wandler (VFC)
- Ermittlung des Wandelergbnisses durch eine Spannungs-Zeit-Umsetzung:
- Ein-Rampen-Verfahren (Sägezahn-Verfahren)
- Zwei-Rampen-Verfahren (Dual-Slope-Verfahren)
- Vier-Rampen-Verfahren
Beschreiben Sie die Grundlagen des Parallel-Wandlerverfahrenes (Flash-Wandler)
- Grundlage: der analoge Spannungskomperator
- Schnellstes A/D-Wandler-Konzept
- z.B AD 9002: 8Bit, 150MSamples/sec -> 6,7ns/Wandlung
- Die Umsetzzeit ist unabhänig von der Höhe der Eingangsspannung
- Dieses verfahren ist das aufwendigsten Wandlerverfahren: Für jeden möglichen binären Ausgangscode ist ein eigener Spannungskmparator notwendig!
- Also insgesamt immer:
- (2n-1) Komperatoren
- 2n hochpräzise Widerstände
- Also insgesamt immer:
n=8 255 Mal
n=10 1023 Mal Komparator und Widerstand
n=12 4095 Mal
die heutige Integrationstechnik läßt bisher jedoch nur n=8...12 zu.
5. Es ist das teuerste Wandlerverfahren
6. Anwendungen: Systeme mit hohe Anforderungen wie Radarsysteme, Digital Radio und Digitale Signalverarbeitung
Nennen Sie die Grundlagen des Wägeverfahrens
- Die Bits des Datenwortes werden nacheinander gesetzt, vom MSB angefangen und dann verglichen, ob die Eingangsspannung größer oder kleiner ist. Wenn die Spannung kleiner ist, wird das Bit wieder zurückgesetzt und das nächste Bit wird gesetzt (MSB-1, MSB-2, etc)
- Der Umsetzvorgang ist somit genau nach n Schritten abgeschlossen (n = Auflösung des AD-Wandlers)
Die Wandlungszeit ist also immer gleich und nicht abhängig von der Größe der Eingangsspannung. - Das Wägeverfahren ist daher besonders gut geeignet für den Einsatz mit Eingangs-MUX-Schalter (Meßsysteme), da hierbei dann für jeden einzelnen Kanal die Umsetzzeit gleich groß ist.
- Dieses Verfahren ist ein sehr schnelles Verfahren:
- Umsetzzeit = n * tTAKT = n * 1/fTAKT
- Das Wandlungsergebnis kann auch, ohne großen Aufwand, sehr gut seriell ausgegeben (übertragen) werden, da ja die einzelnen Bits, vom MSB beginnend, nacheinander ermittelt werden und somit schon während der Wandlung zur Verfügung stehen.
Erklären Sie die Funktion des Ein-Rampen-Verfahrens
Funktion
Zunächst wird eine zeitlinear ansteigende Sägezahnspannung Us erzeugt. Erreicht die Sägezahnspannung Us zum Zeitpunkt t1 die Spannung 0 V so gibt die Komparatorschaltung 2 ein High-Signal U2 an die nachgeschaltete EXOR-Schaltung. Dieses Signal U2 bleibt solange auf High, wie die Sägezahnspannung >0 V ist. Da U1 zu diesem Zeitpunkt noch auf Low liegt, wird das nachfolgende Tor (ANDGatter) durch die Spannung U3 geöffnet und die vom Impulsgeber permanent erzeugten (konstanten) Zeitimpulse gelangen auf den Zähler und werden dort gezählt.
Steigt die Sägezahnspannung nun weiter an, so wird zum Zeitpunkt t2 Spannungsgleichheit zwischen der Sägezahnspannung Us und der zu messenden Spannung Uein erreicht. Der Komparator 1 liefert dann ebenfalls ein High-Spannungssignal U1 an die EXORSchaltung. Dieses Signal schließt dann das Tor, der Zähler erhält keine Zählimpulse mehr und der Messvorgang ist abgeschlossen.
Welche Aussage können Sie zur Genauigkeit des Ein-Rampen-Verfahrens machen?
Genauigkeit
Die Genauigkeit des Ergebnisses hängt von der Linearität des Sägezahngenerators und der Konstanz des Taktgenerators ab: je höher man z.B. die Taktfrequenz macht, desto genauer ist die Zeitmessung und desto genauer ist die Spannungsmessung
Welches Probem tritt beim Ein-Rampen-Wandlerverfahren auf?
Problem:
die Linearität der Sägezahnspannung hängt demnach von der zeitlichen Konstanz der Gleichspannung U0 und der Konstanz der Bauelementwerte für R und C ab
---> Solche Wandlersysteme weisen hohe Temperatur- und Langzeitdriften auf.
Verbesserung dieses Verhaltens durch das so genannte Dual Slope-Verfahren.
Maximal erreichbare Auflösung: 12 Bit
Was können Sie zur Wandlerzeit des Ein-Rampen-Wandlerverfahrens sagen?
Wandlungszeit:
Es kann keine konstante Wandlungszeit angegeben werden: je höher die zu messende Eingangsspannung ist, desto größer ist die benötigte Zeit für eine Wandlung.
Wie muss die Datenübertragungsrate des seriellen Monitors beim Arduino eingestellt werden?
Die Datenübertragungsrate dieser seriellen Schnittstelle (über die USB-Buchse zum Monitor) ist zwar fest auf 1.200 Bd. eingestellt und kann NICHT geändert werden, auch nicht durch Aufruf der entsprechenden Schnittstellen-Parametrierungsfunktion.
Allerdings MUSS aus Kompatibilitätsgründen im setup-Teil des Sketches immer die Baudrate auf 9.600 Bd. eingestellt werden, ebenso beim Seriellen Monitor selber.
Welche Steuerzeichen unterstützt der serielle Monitor vom Arduino?
\n
\t
Wie löscht man den seriellen Monitor beim Arduino?
So gibt es dann auch keinen Befehl zu LÖSCHEN des Bildschirms.
Einziger Trick: man schreibt sich eine Funktion, die eine gewisse Anzahl von Leerzeilen hintereinander ausgibt und so für einen „leeren“ Bildschirm sorgt.
Mit welcher Schnittstelle arbeitet die Serial1 Schnittstelle des THGA Arduino Boards?
3,3V
Wie wird beim Arduino eingestellt ob ein Pin ein Eingang oder Ausgang sein soll?
pinMode(6, OUTPUT); => Pin 6 ist ein Ausgang
pinMode(4, OUTPUT); => Pin 4 ist ein Eingang
Wie wird beim Arduino ein Ausgang geschaltet?
digitalWrite(6, HIGH); => Ausgang 6 wird eingeschaltet
digitalWrite(4, LOW); => Ausgang 4 wird ausgeschaltet