|
| 1 | +<!-- |
| 2 | +
|
| 3 | +author: Sebastian Zug & André Dietrich & Fabian Bär |
| 4 | +email: sebastian.zug@informatik.tu-freiberg.de & andre.dietrich@informatik.tu-freiberg.de & fabian.baer@student.tu-freiberg.de |
| 5 | +version: 0.0.4 |
| 6 | +language: de |
| 7 | +narrator: Deutsch Female |
| 8 | +
|
| 9 | +import: https://raw.githubusercontent.com/liascript-templates/plantUML/master/README.md |
| 10 | + https://github.com/LiaTemplates/Pyodide |
| 11 | +
|
| 12 | +mark: <span style="background-color: @0; |
| 13 | + display: flex; |
| 14 | + width: calc(100% + 32px); |
| 15 | + margin: -16px; |
| 16 | + padding: 6px 16px 6px 16px; |
| 17 | + ">@1</span> |
| 18 | +red: @mark(#FF888888,@0) |
| 19 | +blue: @mark(#898AE3,@0) |
| 20 | +gray: @mark(gray,@0) |
| 21 | +--> |
| 22 | + |
| 23 | +# Programmierung CPU |
| 24 | + |
| 25 | +**TU Bergakademie Freiberg - Wintersemester 2020 / 21** |
| 26 | + |
| 27 | +Link auf die aktuelle Vorlesung im Versionsmanagementsystem GitHub |
| 28 | + |
| 29 | +[https://github.com/TUBAF-IfI-LiaScript/VL_EingebetteteSysteme/blob/12_RISC_CISC.md](https://github.com/TUBAF-IfI-LiaScript/VL_EingebetteteSysteme/blob/master/16_Aktoren.md) |
| 30 | + |
| 31 | +Die interaktive Form ist unter [diesem Link](https://liascript.github.io/course/?https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_EingebetteteSysteme/master/16_Aktoren.md#1) zu finden |
| 32 | + |
| 33 | + |
| 34 | +--------------------------------------------------------------------- |
| 35 | + |
| 36 | +** Fragen an die Veranstaltung** |
| 37 | + |
| 38 | ++ Charakterisieren Sie die Merkmale eines eingebetteten Systems! |
| 39 | ++ Beschreiben Sie aktuelle Entwicklungstendenzen eingebetteter Systeme. |
| 40 | ++ Erklären Sie an einem Beispiel die Notwendigkeit für die interdisziplinäre Arbeit bei der Entwicklung von Sensor-Aktor-Systemen! |
| 41 | + |
| 42 | +<!-- |
| 43 | +style="width: 80%; min-width: 420px; max-width: 720px;" |
| 44 | +--> |
| 45 | +```ascii |
| 46 | +
|
| 47 | + Abstraktionsebenen |
| 48 | +
|
| 49 | + +----------------------------+ -. |
| 50 | + Ebene 6 | Problemorientierte Sprache | | ╔═══════════════╗ |
| 51 | + +----------------------------+ | ◀══║ HIER SIND WIR!║ |
| 52 | + ⎬ ╚═══════════════╝ |
| 53 | + +----------------------------+ | Anwendungssoftware |
| 54 | + Ebene 5 | Assemblersprache | | |
| 55 | + +----------------------------+ -. |
| 56 | +
|
| 57 | + +----------------------------+ |
| 58 | + Ebene 4 | Betriebssystem | Systemsoftware |
| 59 | + +----------------------------+ |
| 60 | +
|
| 61 | + +----------------------------+ |
| 62 | + Ebene 3 | Istruktionsset | Maschinensprache |
| 63 | + +----------------------------+ |
| 64 | +
|
| 65 | + +----------------------------+ -. |
| 66 | + Ebene 2 | Mikroarchitektur | | |
| 67 | + +----------------------------+ | |
| 68 | + ⎬ Automaten, Speicher, Logik |
| 69 | + +----------------------------+ | |
| 70 | + Ebene 1 | Digitale Logik | | |
| 71 | + +----------------------------+ -. |
| 72 | +
|
| 73 | + +----------------------------+ |
| 74 | + Ebene 0 | E-Technik, Physik | Analoge Phänomene |
| 75 | + +----------------------------+ . |
| 76 | +``` |
| 77 | + |
| 78 | +--------------------------------------------------------------------- |
| 79 | + |
| 80 | +## Motivation |
| 81 | + |
| 82 | +Bislang haben wir uns allein mit dem Controller beschäftigt, wie aber nutzen |
| 83 | +wir nun die Funktionalität in einem eingebetetten System. Damit gehen wir in |
| 84 | +unser Betrachtung von Mikrocontrollern noch einen weiteren Schritt zurück und integrieren nun auch die extern angeschlossene Elemente. |
| 85 | + |
| 86 | +**Eingebettete Systeme ...** |
| 87 | + |
| 88 | +> _... sind informationsverarbeitende Systeme, die in ein größeres Produkt integriert sind, und die normalerweise nicht direkt vom Benutzer wahrgenommen werden._ [Marwedel] |
| 89 | +
|
| 90 | +> _... bezeichnet einen elektronischen Rechner oder auch Computer, der in einen technischen Kontext eingebunden (eingebettet) ist. Dabei übernimmt der Rechner entweder Überwachungs-, Steuerungs- oder Regelfunktionen oder ist für eine Form der Daten- bzw. Signalverarbeitung zuständig _ [Wikipedia] |
| 91 | +
|
| 92 | +Dabei spielt die Größe des Systems keine Rolle. Die Implementierungsvarianten reichen von Mikrorobotern und _Smart Dust_ bis hin zu zusammengesetzten _Systems-of-Systems_ wie einem autonomen Automobil. |
| 93 | + |
| 94 | +Als zentrale Merkmale folgen daraus: |
| 95 | + |
| 96 | +1. Interaktion mit der Umgebung (Sensor/Aktor Systeme) |
| 97 | +2. ggf. hohe Anforderungen an die Verlässlichkeit (u.a. Zuverlässigkeit und Verfügbarkeit) |
| 98 | + |
| 99 | +<!-- style="width: 75%; max-width: 1000px" --> [^1] |
| 100 | + |
| 101 | +[^1]: Wikipedia, Autor Avda, Kernkraftwerk Grafenrheinfeld - 2013, [Link](https://commons.wikimedia.org/wiki/File:Kernkraftwerk_Grafenrheinfeld_-_2013.jpg) |
| 102 | + |
| 103 | +3. Schwerpunktentwicklungsziel Effizienz (Energieverbrauch, Speicher, Ausführungsdauer) |
| 104 | + |
| 105 | +4. explizite Berücksichtigung der Ausführungs- und Reaktionsdauer (Reaktive Systeme, Echtzeitsysteme) |
| 106 | + |
| 107 | +5. Spezifischer Zuschnitt einer Lösung |
| 108 | + |
| 109 | +> Ein eingebettetes System: |
| 110 | +> |
| 111 | +> + erfüllt eine spezielle Aufgabe mit |
| 112 | +> + problemangepasste Hardware und Software |
| 113 | +> + einer spezifischen Benutzerschnittstelle |
| 114 | +> + ist häufig konkreten Zeitanforderungen unterworfen |
| 115 | +> + garantiert ein angepassten Grad an Verlässlichkeit und |
| 116 | +> + setzt die Aufgabenstellung effektiv und kostengünstig um. |
| 117 | +
|
| 118 | +Der Versuch einer Zukunftsperspektive ist unter anderem auf folgender Webseite versucht worden [Link](https://www.grandviewresearch.com/industry-analysis/microcontroller-market) |
| 119 | + |
| 120 | +> Eingebettete Systeme sind ein boomender Markt, der spezifische Programmierkenntnisse und ein interdisziplinäres Verständnis erfordert. |
| 121 | +
|
| 122 | +Im Rahmen dieser Veranstaltung wollen wir uns auf die Integration in eine Mikrocontrollerschaltung konzentrieren. |
| 123 | + |
| 124 | +> **Aktoren** ... (Wandler; Antriebselemente) setzen die elektronischen Signale in mechanische Bewegung oder andere physikalische Größen um und greifen damit aktiv in die Umgebung des eingebetteten Systems ein. |
| 125 | +
|
| 126 | +Sie unterscheiden sich durch: |
| 127 | + |
| 128 | ++ zugeführte Energieform (elektrischer Strom, Brennstoff) |
| 129 | ++ abgegebene Energieform (mechanische Energie, Wärme, magnetische Felder, Strahlung ) |
| 130 | ++ Freiheitsgrade (maximal 6, linear Gelenke, Rotation) |
| 131 | ++ Diskret / wertkontinuierlich |
| 132 | + |
| 133 | +Beispiele: |
| 134 | + |
| 135 | ++ Dioden, 7-Segment-Anzeigen, Displays |
| 136 | ++ Ventile (Pneumatik, Hydraulik) |
| 137 | ++ Motoren (Gleichstrom/Wechselstrom) |
| 138 | ++ Magnete (Manipulatoren, Lautsprecher) |
| 139 | + |
| 140 | +## Ansteuerung digitaler Ausgänge |
| 141 | + |
| 142 | +Die Beschaltung eines externen Gerätes wird aus Sicht des Mikrocontrollers durch zwei zentrale Faktoren beschränkt: |
| 143 | + |
| 144 | +1. maximales Strom/ Spannungsniveau der Pins |
| 145 | +2. Zahl der verfügbaren vs. benötigte Pins |
| 146 | + |
| 147 | +**Lösungsansätze zu 1:** |
| 148 | + |
| 149 | +Elektronische, elektromechanische Bereitstellung einer entsprechenden Leistung. |
| 150 | + |
| 151 | +<!-- style="width: 75%; max-width: 1000px" --> [^1] |
| 152 | + |
| 153 | +[^1]: mikrocontroller.net, Beschaltung von Digitalen Ausgängen, Zusammenfassung der grafischen Darstellungen |
| 154 | + |
| 155 | +**Lösungsansätze zu 2:** |
| 156 | + |
| 157 | +1. Verwendung von Dekoder-Bausteinen |
| 158 | + |
| 159 | +Der CD4543 Baustein dient der Ansteuerung von 7-Segment-Anzeigen. Mit dem Dekodieren einer 4-Bit Zahlendarstellung auf die zugehörigen Steuerleitungen werden 3 Pins eingespart. Vergleichen Sie die Schaltung mit der in Vorlesung 4 hergeleiteten Lösung. |
| 160 | + |
| 161 | +<!-- style="width: 75%; max-width: 1000px" --> [^1] |
| 162 | + |
| 163 | +[^1]: Texas Instruments, CMOS BCD-to-Seven-Segement Latch/Decoder/Driver, [Link](https://www.ti.com/lit/ds/symlink/cd4543b.pdf?ts=1612176181441&ref_url=https%253A%252F%252Fwww.google.com%252F) |
| 164 | + |
| 165 | +2. Multiplexiing |
| 166 | + |
| 167 | +Mittels Muliplexing lassen sich nun mehrere 7-Segment-Anzeigen durch ein Set von Ausgängen beschalten. Allerdings wird in dieser Lösung pro Anzeige eine weitere Steuerleitung verwendet. Zudem ist eine Berücksichtigung der Schaltzeiten der Displays zu berücksichtigen. |
| 168 | + |
| 169 | +<!-- style="width: 75%; max-width: 1000px" --> [^1] |
| 170 | + |
| 171 | +[^1]: mikrocontroller.net, 7-Segment gemultiplext, Tutorium, [Link](https://www.mikrocontroller.net/articles/Datei:Tut_7_Seg_03.gif) |
| 172 | + |
| 173 | +3. Shift-Register (Sequenzialisierung) |
| 174 | + |
| 175 | +<!-- style="width: 25%; max-width: 500px" --> [^1] |
| 176 | +<!-- style="width: 65%; max-width: 1000px" --> [^1] |
| 177 | + |
| 178 | +[^1]: Texas Instruments, SNx4HC5958-Bit Shift RegistersWith 3-StateOutputRegisters, [Link](https://www.ti.com/lit/ds/symlink/sn74hc595.pdf?ts=1612165666219&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FSN74HC595) |
| 179 | + |
| 180 | +## Ansteuerung von Motoren |
| 181 | + |
| 182 | +Gleichstrommotor |
| 183 | +=================== |
| 184 | + |
| 185 | +An dieser Stelle konzentrieren wir uns auf eine spezifische Variante des Gleichstrommotors und seine Ansteuerung mittels PWM. |
| 186 | + |
| 187 | +<!-- style="width: 65%; max-width: 750px" --> [^4] |
| 188 | + |
| 189 | +[^4]: Wikipedia, Autor Honina, Schematische Darstellung der Arbeitsweise einer permanenterregten Gleichstrommaschine, [Link](https://commons.wikimedia.org/wiki/File:Gleichstrommaschine.svg) |
| 190 | + |
| 191 | +Welche Kernparameter bestimmen das Verhalten unseres Motors? |
| 192 | + |
| 193 | +<!-- style="width: 75%; max-width: 750px" --> [^5] |
| 194 | + |
| 195 | +[^5]: Firma Dunker Motoren, Handbuch, [Link](http://www.dunkermotoren.de/default.asp?id=18&lang=1) |
| 196 | + |
| 197 | +Wie erfolgt der Betrieb aus Sicht des Mikrocontrollers? Wir haben zwei vorgaben, die wir umsetzen wollen, die Drehrichtung und die Geschwindigkeit. |
| 198 | + |
| 199 | +Für die Drehrichtung wird die Änderung der Polarität über eine H-Brücke umgesetzt. Mit 4 Schaltern kann der Stromfluss durch den Motor angepasst werden. |
| 200 | +<!-- style="width: 75%; max-width: 750px" --> |
| 201 | + |
| 202 | +Die Drehgeschwindigkeit ergibt sich aus der Vorgabe eines PWM Signals. |
| 203 | + |
| 204 | +<!-- style="width: 75%; max-width: 750px" --> |
| 205 | + |
| 206 | +<!-- style="width: 75%; max-width: 750px" --> [^6] |
| 207 | + |
| 208 | +[^6]: Firma Texas Instruments, Datenblatt L293D, [Link](https://www.ti.com/lit/ds/symlink/l293.pdf) |
| 209 | + |
| 210 | +### Schrittmotoren |
| 211 | + |
| 212 | +Ein Schrittmotor ist ein Synchronmotor, bei dem der Rotor (ein drehbares Motorteil mit Welle) durch ein gesteuertes, schrittweise rotierendes, elektromagnetisches Feld der Statorspulen um einen kleinen Winkel (Schritt) oder sein Vielfaches gedreht werden kann. |
| 213 | + |
| 214 | +<!-- style="width: 65%; max-width: 750px" --> [^4] |
| 215 | + |
| 216 | +[^4]: Wikipedia, Autor Honina, Schema eines Schrittmotors mit vier Schritten für eine Umdrehung (und unipolarer Beschaltung), [Link](https://commons.wikimedia.org/wiki/File:Schrittmotor.PNG) |
| 217 | + |
| 218 | +Die technische Realsierung kann dabei zwei grundlegenden Mustern folgen. Man unterscheidet uni- und bipolare Schrittmotoren. |
| 219 | + |
| 220 | +<!-- style="width: 65%; max-width: 750px" --> [^5] |
| 221 | + |
| 222 | +[^5]: Wikipedia, Autor Ulfbastel, Schrittmotor-Schaltungsvarianten), [Link](https://commons.wikimedia.org/wiki/File:Stepmotscheme.jpg) |
| 223 | + |
| 224 | +```c |
| 225 | +uint8_t pattern[4]={9,5,6,10}; |
| 226 | +// 1001 -> 0101 -> 0110 -> 1010 |
| 227 | + |
| 228 | +void Vschritte(uint16_t ns, char dir) |
| 229 | +{ |
| 230 | + uint16_t z; |
| 231 | + int32_t n; |
| 232 | + for (z=0; z<ns; z++){ |
| 233 | + if (dir == 1) n++; |
| 234 | + else n--; |
| 235 | + PORTD=pattern[n & 3]; |
| 236 | + delay(10); |
| 237 | + } |
| 238 | +} |
| 239 | +``` |
| 240 | +
|
| 241 | +Wird ein Schrittmotor durch ein externes Lastmoment oder durch die anzutreibende Masse beim starken Beschleunigen beziehungsweise Verzögern überlastet (d. h. Lastmoment > Motormoment), kann der Rotor dem Drehfeld nicht mehr folgen. Es werden Schritte übersprungen, und die Information über die aktuelle Position des Rotors geht verloren. |
| 242 | +
|
| 243 | +Eine sehr schöne Erklärung zur Funktionsweise von Schrittmotoren liefert das folgende Video. |
| 244 | +
|
| 245 | +<iframe width="560" height="315" src="https://www.youtube.com/embed/spWVb9cb7dA" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> |
| 246 | +
|
| 247 | +
|
| 248 | +### Servomotoren |
| 249 | +
|
| 250 | +Als Servomotor werden Elektromotoren bezeichnet, die die Kontrolle der Winkelposition ihrer Motorwelle sowie der Drehgeschwindigkeit und Beschleunigung erlauben. Sie integrieren neben dem eigentlichen Elektromotor, eine Sensorik zur Positionsbestimmung und eine Regelelektronik. Damit kann die Bewegung des Motors entsprechend einem oder mehreren einstellbaren Sollwerten – wie etwa Soll-Winkelposition der Welle oder Solldrehzahl – bestimmt werden. |
| 251 | +
|
| 252 | +<!-- style="width: 65%; max-width: 750px" --> [^5] |
| 253 | +
|
| 254 | +[^5]: Wikipedia, Autor Bernd vdB, Servo and receiver connections, [Link](https://commons.wikimedia.org/wiki/File:Rc-receiver-servo-battery_b.jpg) |
| 255 | +
|
| 256 | +<!-- |
| 257 | +style="width: 80%; min-width: 420px; max-width: 720px;" |
| 258 | +--> |
| 259 | +```ascii |
| 260 | +
|
| 261 | +
|
| 262 | + Nulllage (1500ms) |
| 263 | + Minima(1ms) | Maxima (2ms) |
| 264 | + | v | |
| 265 | +High | v v |
| 266 | + | +------+... +--- |
| 267 | + | | : | : | |
| 268 | + | | : | : | |
| 269 | + | | : | : | |
| 270 | + | | : | : | |
| 271 | + | | : | : | |
| 272 | + | | : | : | |
| 273 | + |--+ +---------------------------+ |
| 274 | + | |
| 275 | + +-------------------------------------|----> . |
| 276 | + 0 20ms |
| 277 | +``` |
| 278 | + |
| 279 | +Diese Funktionalität lässt sich mit einem Timer entsprechend umsetzen. |
| 280 | + |
| 281 | +$$ |
| 282 | +20ms = 2500 x 0.008ms |
| 283 | +$$ |
| 284 | + |
| 285 | + |
| 286 | +``` |
| 287 | +#define F_CPU 1000000UL |
| 288 | +#include <avr/io.h> |
| 289 | +#include <avr/interrupt.h> |
| 290 | +
|
| 291 | +ISR( TIMER1_COMPA_vect ){ |
| 292 | + OCR1A = 2500-OCR1A; } |
| 293 | +
|
| 294 | +int main (void){ |
| 295 | + TCCR1A = (1<<COM1A0); // Togglen bei Compare Match |
| 296 | + TCCR1B = (1<<WGM12) | |
| 297 | + (1<<CS11); // CTC-Mode; Prescaler 8 |
| 298 | + TIMSK = (1<<OCIE1A); // Timer-Compare Interrupt an |
| 299 | + OCR1A = 2312; // Neutralposition |
| 300 | + sei(); // Interrupts global an |
| 301 | + while( 1 ) { |
| 302 | + ... |
| 303 | + OCR1A = OCR1A + 3; |
| 304 | + _delay_ms(40); |
| 305 | + ... |
| 306 | + return 0; |
| 307 | +} |
| 308 | +``` |
| 309 | + |
| 310 | +## Anwendungsbeispiel |
| 311 | + |
| 312 | +<!-- style="width: 75%; max-width: 750px" --> |
| 313 | + |
| 314 | +https://www.tinkercad.com/things/lu1Gt48hNsL-gleichstrommotor-mit-encoder/editel |
0 commit comments