Home

Inhaltsverzeichnis - ADAM - Leonardo da Vinci Projects and

image

Contents

1. Lihtne testprogramm vilgutamaks punast LED i ATmegal28 p hiplaadil A Project manager o x LED on hendatud viigu PB7 k lge ca include lt avr io h gt Name Ela Modified include lt homelab delay h gt blinkingLED 1014 include lt homelab adc h gt Headers Notes int main void Other viigu PB7 seadmine v ljundiks e a k DDRB 0x80 E blinkingLED c 446 Pjaan 24 adc_init ADC_REF_AVCC ADC _PRESCALE 8 l putu ts kkel for a J ap hw_delay_ms 500 nn PORTB 0x00 E SQ blinkingLED Size 1014 hw_delay_ms 500 PORTB 6x80 2 y y RX avr gcc mmcu atmega128 Wstrict prototypes Wall g Os DF_CPU 14745600UL c fototakisti c o fototakisti o File compiled successfully ho A 132 6 1 Anfang Ein Programm schreiben und testen Nachdem die Konfiguration abgeschlossen ist ist es Zeit zu programmieren 1 Schlie en Sie das Programmierger t am Controllermodul an berpr fen Sie noch einmal ob das Programmierger t richtig am JTAG Anschluss angeschlossen ist Das Kabel muss von der Platine weg zeigen siehe Abbildung Schlie en Sie nun die Stromversorgung an und berpr fen ob die gr ne LED leuchtet 2 Schreiben Sie das folgende Programm in das Dateieditor Fenster des Kontrol lerLab und kompilieren Sie es include lt avr io h gt include lt homelab delay h gt int main void 133 6 P
2. 3 F gen Sie im Fenster des Programmierger tes Flash sektion Textbox Input HEX File durch Bet tigung der Taste den Ort des kompilierten Programms ein Das kompilierte Programm ist normalerweise in dem Unterordner default des Projekts zu finden und hat den gleichen Namen wie das Projekt jedoch mit der Endung hex z B Labor1 hex Nach Auswahl der richtigen Datei w hlen Sie Programm um das Programm in den Controller zu laden Wenn alles richtig gelaufen ist sollte folgende Nachricht am Ende des Fensters zu sehen sein OK Reading FLASH input file OK Setting device parameters for jtag programming OK Entering programming mode OK Erasing device OK Programming FLASH OK Reading FLASH OK FLASH contents is equal to file OK Leaving programming mode OK Laut Programm sollte die on Board LED PB7 blinken Wenn das Programm funktioniert ist das Setup der Programmierumgebung richtig und das erste Pro 121 6 Praktische Beispiele gramme wurde erfolgreich kompiliert Gl ckwunsch 122 6 1 Anfang Debugger I O view TDAD_CONVERTER TD ANALOG_COMPARATOR E B00T_L0AD cru EJ EEPROM Ch EXTERNAL_INTERRUPT Port B Data Register Port B Data Direction Regis Port B Input Pins 2 PORTC Name Address Value Bits s DDRB 0x17 0x37 DOOOOOOoOO PINB 0x16 0x36 OHOO000000 PORTE 0x18 0x38 BpodnodnoO Auto Y 1n2 coli CAP NUM OVR Abbildung 6 2 Liste d
3. pin leds 3 PIN C 5 PIN C 4 PIN C 3 pin button PIN C 0 IN Main program Il int main void unsigned char new_value old_value 0 unsigned char index counter 0 Setting the pins of LEDs as outputs for index 0 index lt 3 index pin_setup_output leds index Setting the pins of button as input pin_setup_input button 150 6 2 Digitale Input Output Pins Endless loop while true Reading the state of the button new_value pin_get_debounced_value button Control whether the button was pressed down that means is the new state 1 and the old state 0 if new_value amp amp old_value Widening the counter and taking module number 3 counter counter 1 3 Lighting the LED witch corresponds to the value of the counter for index 0 index lt 3 index pin_set_to leds index index counter Remember the old state old_value new_value Testen wir das Programm nun leuchten die LEDs in genau der Sequenz auf in welcher der Nutzer den Schalter bet tigt Aufgaben Digitale I O Ziel ist es ein Programm zu schreiben welches die unten beschriebenen Aufgaben ausf hrt Aufw rm bung Durch Dr cken von S1 leuchtet eine LED auf dr ckt man S2 leuchten zwei und bei 53 drei LEDs 151 6 Praktische Beispiele F r Anf nger Es wird eine von Hand betriebene Ampel an einer Fu g
4. return 1 If all 8 bits are low then the button is definitely up if buffer 0x00 return 0 1 ms break This function can be found from the library of the HomeLab 149 6 Praktische Beispiele sw_delay_ms 1 If we can not examine the state then we assume that the button was not pressed return 0 Diese Funktion generiert eine Verz gerung durch Nutzung einer Funktion die in der entsprechenden bung erl utert wurde Zu dieser Zeit m ssen wir nur wissen dass die Verz gerungsfunktion eine Verz gerung von 1 ms am Ende jedes Zyklus generiert um den Status des Schalters lesen zu k nnen Befindet sich der Schalter 8 Lesezyklen lang in der gleichen Position If the button is in the same position during 8 readings it returns to the counted position In case the button is unstable the entire procedure may take up to 100 ms This function is included in the library of pins hence there is no need to add it to the program for passing the example In order to try this first part of the exercise it has to be altered a little include library of generating the delay in the program and at the point where the value of the button was read directly apply the function with filter The result is as follows Hi The program for filtering the debounce of buttons of Digital i o module m include lt homelab delay h gt include lt homelab pin h gt Hip Determining pins of LEDs and buttons
5. Folgende Schritte m ssen durchlaufen werden um ein Projekt zu erstellen 127 6 Praktische Beispiele 1 ffnen Sie KontrollerLab Applications Programming KontrollerLab und starten Sie ein neues Projekt File gt New New project Ein Fenster ffnet sich in welchem der Projektort festgelegt werden muss In diesem Beispiel ist das Homelab blinkingLED New project KontrollerLab x Q Ea Y E home peeter Dokumendid AVR HomelabjblinkingLED Fa Desktop P Documents A Home Folder k gt Download A Music Bricos Location Open A Videos Filter kontrollerlab y Cancel ale 2 Das Projekt muss mindestens eine C Datei haben in welcher der Programm code geschrieben wird Dateien k nnen mit dem File gt New New Menu hin zugef gt werden In dem sich nun 6ffnenden Fenster w hlen Sie C source als Dateityp und w hlen Sie einen Namen f r die Datei 128 6 1 Anfang Type ASM source Cheader Text Other 3 Anschlie end muss das Projekt f r das Homelab Kit konfiguriert werden ff nen Sie hierzu das Konfigurationsfenster unter Project Configure Project und w hlen Sie Common Der CPU Type sollte ATmega128 sein und die Taktfrequenz 14745600 0 Hz Dar ber hinaus sollten hier die Namen der HEX und MAP Da teien angegeben werden Durch Set as default werden diese Einstellungen zur Standardeinstellung f r alle neuen Proj
6. Notwendiges Wissen A Controllermodul Digitales Input Output Modul A Berechnung des LED Widerstands Register Digitale Inputs Outputs 2 Pins Theorie Abbildung 6 4 5 mm legged LED Leuchtdioden sind Halbleiter die Licht abstrahlen wenn Strom in Durchlass richtung durch die Diode flie t Die Abk rzung LED steht f r light emitting diode Es gibt verschiedenfarbige Leuchtdioden mittlerweile ist sogar wei es Licht m glich Wie jede normale Diode auch hat die LED2 Kontakte Anode und Kathode In Zeichnungen ist die Anode mit einem markiert und die Kathode HM mit einem LA A Abbildung 6 5 Schematische Darstellung einer LED and ihrer Polarit t Wenn Strom in Durchlassrichtung durch die LED flie t ist die Anode mit der po sitiven und die Kathode mit der negativen Spannung verbunden Die Spannung 137 6 Praktische Beispiele der LED h ngt von der Farbe der LED ab lange Wellenl ngen rot 2V k rze re Wellenl ngen blau 3V Die Stromverbrauch einer LED ist in der Regel nicht mehr als ein paar Dutzend mW Die Stromst rke darf daher nicht zu hoch sein wenn gr ere Stromst rken oder Spannungen verwendet werden kann die LED zerst rt werden Wenn die LEDs nur zur Beleuchtung verwendet werden sollte man spezielle elektrische Schaltkreise verwenden welche die Spannung und die Stromst rke f r die LEDs regulieren Jedoch werden LEDs sehr oft als Indikatoren genutzt und direkt vom M
7. Welche Lichtsensivit tssensoren k nnen in einem Robotikprojekt genutzt werden Nennen Sie min destens 3 grundlegende Komponenten und erkl ren Sie die Unterschiede Wie kann neben der trigonometrischen Methode die Entfernung mittels Licht gemessen werden Nennen Sie mindestens drei Methoden 6 6 Motoren 6 6 Motoren oq Motoren sind Antriebsger te sie k nnen in jeder Form sehr verschieden sein vom Arbeitsprinzip bis hin zu Kraft und Gr e In der Robotik werden haupts chlich Elektromotoren benutzt Diese wandeln elektrische Energie in mechanische Energie Arbeit um Sie funktionieren auf dem Prinzip des Elektromagnetismus Es gibt viele M glichkeiten elektrische Motoren zu klassifizieren Die bedeutendste Unterscheidung ist die zwischen AC Wechselstrom und DC Gleichstrom Motoren Hinzu kommen Motoren mit B rsten oder ohne lineare Motoren und Rotationsmotoren Nano Motoren und gro e Motoren usw Dahingegen erfolgen einige Klassifizierungen nur provisorisch So werden z B lineare Bewegungen durch einen elektrischen Ro tationsmotor bewerkstelligt welcher mit Schrauben in einem einheitlichen Geh use verbaut ist und so als linearer Antrieb z hlt In diesem Kapitel werden die drei h ufigsten Motoren die in der Robotik zum Einsatz kommen beschrieben DC Motoren mit Magneten RC Servomotoren und Schrittmotor 6 6 1 Gleichstrommotor Notwendiges Wissen N Motor Module Digital Inputs Outputs 2 Motors
8. 5 4 HomeLab Bibliothek int main void unsigned short adc_value 400 zuf lliges ADC Ergebnis signed short distance Entfernungsberechnung des ADC Ergebnisses des IR Entfernungssensors distance ir_distance_calculate_cm GP2Y0A21YK adc_value Messung mit Ultraschallentfernungssensor distance ultrasonic_measure pin_trigger pin_echo 5 4 11 Motoren Bezug nehmend auf N Motor Module Diese Bibliothek enth lt Funktionen zur Steuerung der verschiedenen HomeLab Motoren Sie enth lt Funktionen f r Gleichstrom DC Schritt und Servomo toren Funktionen void demotor_init unsigned char index Initialisiert einen der Controller f r die DC Motoren Parameter index Index des Motorencontrollers 0 bis 3 void dcmotor_drive unsigned char index signed char direction Betriebt einen der Controller der DC Motoren Parameter index Index des Motorencontrollers 0 bis 3 direction Polarit t des Motors 1 0 oder 1 Bei 0 wird der Motor angehalten ansonsten bewegt er sich in die vorgegebene Richtung 103 5 Robotic HomeLab Kit 104 void unipolar_init unsigned char index Initialisiert den Controller eines der unipolaren Schrittmotoren Parameter index Index des Motorencontrollers 0 oder 1 void unipolar_halfstep unsigned char index signed char direction unsi gned short num_steps unsigned char speed Befehl zum Halbschrittbetrieb fiir unipolaren
9. 3 9 Counters Timers Frequenz wird durch die Zeit die das Interrupt ben tigt limitiert Events erfassen und die Zeit registrieren die es brauchte damit das Event auftrat kann auf Software Level abgehandelt werden Es ist m glich einen exter nen oder andere Interrupts zu nutzen und den Wert des Counters w hrend des Events auszulesen Das Erfassen auf Hardwarelevel wird genutzt um unabh n gig vom Hauptprogramm zu arbeiten und sehr kurze oder h ufige Events zu timen Taktsignal generieren Komplexere Counter k nnen ein Taktsignal generieren zus tzlich zum Timen eines Signals Daf r hat der Counter eine Output Compare Unit und eine Compare Match Output Unit Die Output Compare Unit hat Register mit der gleichen Bit Weite wie der Counter und die Werte dieser Register werden mit den Werten des Counters verglichen w hrend dieser l uft Ein Interrupt kann generiert werden und spezielle Pin Werte k nnen ge ndert werden wenn der Counter Wert gleich der des Compare Unit Registers ist In diesem Moment kann ein Pin entweder High oder low gesetzt oder invertiert werden Das Signal wird durch nderungen im Wert des Output Pins generiert In einigen Signal generierenden Modi kann der maximale Wert des Counters ver ndert werden Die physikalische Gr e bleibt die gleiche aber ein Vergleichs register wird benutzt um den Counter bei einem bestimmten Wert zu resetten Das vorherige Beispiel kann auch mit dieser Methode gel s
10. Theorie Das alphanumerische LCD ist ein Fl ssigkristall Display welches zur Darstellung von Buchstaben und Ziffern dient In einfachen LCD s werden fl ssige Kristalle verwendet welche zwischen transparenten Elektroden angeordnet sind und die Polarisation des durchstrahlenden Lichts im elektrischen Feld ver ndern Auf den Elektroden befinden sich Polarisationsfilter welche sicher stellen das nur in eine Richtung polarisiertes Licht auf den Bildschirm trifft Wenn der Fl ssigkristall seine Polarisation durch das elektrische Feld ndert erreicht das Licht den Bildschirm oder ein Segment des Bildschirms nicht und er bleibt schwarz Hauptmerkmal eines alphanumerischen LCD ist die Anordnung der Segmente Der Bildschirm ist in verschie dene Anzeigen unterteilt Jede Anzeige hat entweder gen gend Segmente um Buchstaben oder Nummern anzuzeigen oder es wird eine Matrix aus Pixeln gebildet Eine Matrix aus 5x7 Pixeln ist beispielsweise aus reichend um alle Nummern und Buchstaben des lateinischen Alphabets darzustellen Die Anzeigeelemente bestehen gew hnlich aus 1 bis 4 Zeilen sowie 8 bis 32 Spalten Zwischen den Elementen befinden sich kleine Abst nde hnlich wie bei Buchstaben im Text 170 6 4 Anzeigen und Displays Abbildung 6 13 Darstellung eines Textes durch eine Pixelmatrix eines alphanumerischen LCD Neben dem Bildschirm hat das alphanumerische LCD auch einen Controller welcher die Segmente des Bild schirms gem den Befehl
11. sit t verkleinert wird die gemessene Spannung am Pin des Mikrocontrollers mit dem Ansteigen der Lichtst r ke gr er Hierbei sollte bedacht werden dass der Fotowiderstand des HomeLab am st rksten auf oranges und gelbes Licht reagiert Der Sensor VT935G ist nicht als spezifisches Messinstrument gedacht Er soll vielmehr dazu dienen Informa tionen ber die allgemeinen Lichtverh ltnisse z B befindet sich eine eingeschaltete Lampe im Raum oder nicht anzugeben Dazu muss nur der Widerstand des Sensors in einem halbdunklen Raum gemessen und ins Programm eingetragen werden Daraufhin kann man die gemessenen Werte vergleichen und feststellen ob es heller oder dunkler ist Die nun folgende Aufgabe ist ein wenig komplexer da die Beleuchtungsst rke auch in Lux gemessen wird Hierzu werden eine Ann herungsformel sowie Gleitkomma Variablen angewendet In C sind Gleitkomma Variablen float und double Typ Variablen welche zur Darstellung von Br chen genutzt werden k nnen Nach teilig istjedoch dass w hrend der Nutzung dieser Variablen viele Ressourcen in Anspruch genommen werden m ssen W hrend Computer spezielle Hardware zur Berechnung von Gleitkomma Variablen besitzen wird diese bei den 8 Bit AVR Microcontrollern mittels einer Software durchgef hrt wodurch viel Zeit und Speicher ben tigt wird Sofern die Nachteile jedoch nicht entscheidend sind lohnt es sich Gleitkomma Variablen zu verwenden 188 6 5 Sensoren Abbildun
12. zyklen braucht Daher kann ein Interrupt durch schlechtes Timing die Integrit t dieser Daten besch digen Dadurch kann y am Ende des Programms den Wert 0x1111 oder 0x3333 aber auch 0x3311 haben Um den dritten und ungewollten Wert zu verhindern sollten alle Interrupts tempor r verboten werden wenn eine Operation mehr als einen Taktzyklus umfasst Im folgenden Beispiel wird eine sichere Methode benutzt um y den Wert von x zu geben Interrupts generell verbieten cli y erh lt Wert von x y Ss S mtliche Interrupts wieder zulassen sei 3 6 Digitale Inputs Outputs S mtliche Busse des AVR sind sowohl lesbar als auch beschreibbar wenn sie im normalen logischen Input Output 1 0 Modus verwendet werden AVR Busse werden nacheinander mit lateinischen Buchstaben A B C usw benannt Al lerdings k nnen einige AVR zwar einen Bus B jedoch keinen Bus A besitzen Jeder Bus ist ein 8 Bit Bus und jedes Bit hat normalerweise seinen eigenen Pin am Controller Pins werden mit Ziffern beginnend bei Null versehen F r bei de Richtungen im Bus gibt es ein separates Register Zus tzlich gibt es noch ein weiteres Register welches die tats chliche Richtung des Bus festlegt ein Bitwert von 1 markiert den Bus als Output und ein Wert von 0 als Input Damit hat der Bus drei Register PORT Zur Festsetzung des Outputwertes 35 3 AVR Mikrocontroller PIN Zum Auslesen des Inputs am Bus DDR Zur Festlegung der Ric
13. Basic etc In diesem Buch wird C ver wendet um den Mikrocontroller zu programmieren Die Software ist sowohl f r Windows OS und Linux OS frei erh ltlich Die folgenden Kapitel f hren in die Verwendung dieser ein S mtliche zur Durchf hrung der Beispiele notwendige Software ist auf der HomeLab Homepage zu finden 6 1 1 Installationsanweisung f r Windows Dieser Abschnitt enth lt alle notwendigen Informationen zur Installation der AVR Entwicklungssoftware auf einem Windows Betriebssystem zu installieren Installation Es wird die nachfolgende Software ben tigt die von der Homepage des Herstel lers heruntergeladen werden kann Wahlweise kann die Software auch von der im HomeLab Kit enthaltenen CD installiert werden 1 AVR Studio AVR Studio 4 IDE Integrated Development Environment ist eine Software um den Quellcode zu schreiben zu kompilieren und das Programm in den Controller zu laden AVR Studio kann kostenlos von der Atmel Homepage bezogen werden 2 WinAVR WinAVR ist ein GNU GCC Compiler f r AVR Microcontroller Das Programm ist eine kostelose Software und kann welche von der Sourceforge Homepage gela 110 6 1 Anfang den werden W hren der Installation von WinAVR schl gt das Programm einen Ordnernamen mit einer langen Versionsnummer vor Wir w rden vorschlagen die Versionsnummer zu entfernen und das Programm wie folgt zu installieren C WinAVR 3 HomeLab Bibliothek Die HomeLab Biblioth
14. Die Art der Ablesung h ngt von der Konfiguration der UART Schnittstelle ab Das Parit tsbit wird aber normalerweise nicht mehr verwendet und kann im Rahmen der Konfiguration unterdr ckt werden So wie das Parit tsbit konfiguriert werden kann kann auch die Anzahl von Daten und Stopbits variiert werden Zus tzlich zur Rahmenstruktur gibt es einen weiteren wichtigen Parameter die Baudrate wodurch die Anzahl der in einer Sekunde bertragenen Symbole festgelegt wird Die Baudrate zeigt die Anzahl der Symbole an Bei der Verwendung von UART entspricht 1 Baud einem Bit weshalb im Zusammenhang mit dem Rahmen von Bits gesprochen wurde Allgemein ist es egal welche Baudrate zur Daten bertragung genutzt wird es gibt jedoch eine einige h ufig verwendete Baudraten welche verwendet werden sollten Diese sind zum Beispiel 9600 bps 19200bps 38400 bps 57600 bps 115200 bps Dar ber hinaus ist es wichtig zu wissen dass der RS 232 Standard zus tzlich zu den Datensignalen RX TX auch ber Datenflusskontrollpins DTR DCD DSR RI RTS undCTS verf gt welche zur Kontrolle der Kom munikation zwischen den Ger ten dienen Sie k nnen zum Beispiel genutzt werden um festzustellen ob das Ger t zum Empfang von Daten bereit ist oder nicht Da die RS 232 Schnittstelle urspr nglich darauf abzielt Computer an ein Modem anzuschlie en k nnen konnten einige Signale dazu genutzt werden um den Status von Telefonleitungen anzuzeigen Praktisches Beisp
15. Intelligentes Kamera Module CMUcam3 70 5 4 HomeLab Bibliothek MISSING PAGE MISSING PAGE MISSING PAGE MISSING PAGE 5 4 HomeLab Bibliothek Die HomeLab Bibliothek besteht aus einigen C Header Dateien mit der Datei endung h und einer statischen Bibliotheksdatei mit der Dateiendung a W hrend der Installation der Bibliothek werden diese Dateien vollst ndig in den AVR GCC Unterordner kopiert Hier findet der Compiler sie automatisch Der Benutzer muss diese Dateien somit nicht mehr in den Programmordner kopie ren 71 5 Robotic HomeLab Kit 22 Homelab Homelab library module Icd_alpha c h Icd_alpha h led_gfx c h led_gfx h motors c h motors h lc segment_display c h segment_display h sensors c h sensors h ke Makefile c adc c h adc h Lh bit h Lh common h h delay h ic pin c Lh pin h Lh timer h C usart c ih usart h Abbildung 5 3 HomeLab Bibliothek Quellcode Dateien Die schrittweisen Installationsanweisungen der AVR Entwicklungssoftware fiir Windows und Linux sind im ersten Kapitel zu den praktischen Beispielen dar gestellt Auch wenn unterschiedliche Beispiele auf verschiedene Teile der Biblio thek zur ckgreifen muss in jedem Projekt die statische Bibliotheksdatei a Datei vorhanden sein Nur die Header Dateien k nnen wahlweise eingeladen wer den Header Dateien die i
16. Pa rameter s Zeiger auf einen String char array void Icd_alpha_write_string_p const char progmem_s Schreibt einen String vom Programmspeicher aufs Displays beginnt an der Cursorposition Parameter progmem_s Zeiger auf String im Programmspeicher Beispiel Nutzung des alphanumerischen LCD zur Darstellung von Text include lt homelab module lcd_alpha h gt int main void Initialisierung des LCD Icd_alpha_init LCD_ALPHA_DISP_ON 98 5 4 HomeLab Bibliothek L schen des Displays lcd_alpha_clear Cursor an den Beginn der zweiten Zeile setzen lcd_alpha_goto_xy 0 1 Anzeige des Texts lcd_alpha_write_string Hello 5 4 9 Graphisches LCD Related to N User Interface Module Diese Bibliothek enth lt die Funktionen zur Nutzung des graphischen LCD des HomeLab Obwohl das LCD graphische Bilder wiedergeben kann enth lt die Bibliothek diese Funktionen nicht Das LCD wird als alphanumerisches Display mit 14 x 6 Zeichen genutzt Funktionen void Icd_gfx_init void Intialisiert das LCD void Icd_gfx_backlight bool set Schaltet die Hintergrundbeleuchtung des LCD an aus Parameter set true wenn Hintergrundbeleuchtung an false wenn aus void Icd_gfx_clear void L scht das gesamte Display void Icd_gfx_clear_line unsigned char line L scht eine Zeile Text Parameter 99 5 Robotic HomeLab Kit line Zeilennummer 0 bis 5 void Icd_gfx_goto
17. es LCD WC 1602A ange schlossen Zur Steuerung des Bildschirms gibt es einen 4 Bit Datenbus sowie 3 Kontroll Pins Da das Kommu nikationsprotokoll des Bildschirms zu umfangreich ist um es hier zu erl utern enth lt die HomeLab Library die entsprechenden Funktionen zur Nutzung des Displays Vor der Nutzung des Displays ist es notwendig seine Einstellungen anzupassen Hierzu dient die Icd_alpha_init Funktion welche einen blinkenden Cursor auf dem Bildschirm erscheinen l sst Hier gibt es nur eine aktive Position f r den Cursor an welcher der n chste Buchstabe eingegeben werden kann Bevor also Text einge geben wird muss der Cursor an die gew nschte Position bewegt werden Um die Position des Cursors zu ver ndern gibt es die Funktion Icd_alpha_goto_xy und f r die Darstellung die Funktion Icd_alpha_write_string S mtliche Funktionen des alphanumerischen LCDs sind in der Library erkl rt Der folgende Programm Code zeigt wie das alphanumerische LCD als Uhr genutzt werden kann Die Zeit beginnt bei 00 00 00 und nimmt etwa jede Sekunde zu Da das Z hlen der Zeit mit Hilfe einer Verz gerungs funktion geschieht ist das Ergebnis nicht sehr genau Diese Ungenauigkeit wird im Rahmen der Aufgabe zu periodischen Unterbrechungen erkl rt Das Programm z hlt die Sekunden und konvertiert diese in Minuten und Sekunden Um Uhrzeit darzustellen wird die Standard Funktion in C genutzt sprintf Beispiel zur Nutzung des alphanumerischen LCD des H
18. hrend der Mikrocontroller startet erscheint ein Begr ungstext auf dem Display Die ber das Fenster eingegebenen Buchstaben werden auf dem alphanumerischen LCD dargestellt Durch Bet tigung der Enter Taste wird die Reihe auf dem LCD gewechselt 226 6 7 Datenschnittstellen 6 7 2 ZigBee MISSING PAGE MISSING PAGE 6 7 3 Aufgabe Ziel ist es ein Programm zu schreiben welches die folgenden Aufgaben erf llt Aufw rm bung Es wird eine Nummer an den Computer gesendet diejede Sekunde gr er wird Die Nummer muss in Textform sein und mit einem Reihen nderungszeichen enden An F r Anf nger 1 Es wird auf die Befehle in Buchstaben welche ber die RS 232 Schnittstelle von einem Computer gesendet werden gewartet Der Befehl R l sst die gr ne LED leuchten K die gelbe und P die rote R schaltet alle LEDs aus 1 Wenn ein Schalter bet tigt wird wird der Name dieses Schalters S1 S2 S3 am Computer ber dieRS 232 Schnittstelle empfangen F r Fortgeschrittene 1 Kommunikation zwischen zwei RS 232 Controllern Wird ein Schalter bet tigt sendet der eine Con troller dem Anderen die Nummer des Schalters Wenn die Nummer empfangen wurde wird der Status der zugeh rigen LED ver ndert 1 gr n 2 gelb 3 rot Ben tigt 2 Controller die Software ist jedoch f r beide identisch 2 Erstellen Sie ein Teletype Ger t welches nderungen von Tex
19. hrung Abbildung 3 1 ATmega128 in SMT package TOFP64 to be precise AVR ist eine Serie aus 8 bit RISC Microcontroller produziert von Atmel AVR folgt der Harcard Architektur und hat daher separate Programm und Daten speicher F r das Programm hat er einen internen berschreibbaren Flash Spei cher f r statische Daten SRAM und EEPROM Speicher Die Taktfrequenz des Controllers liegt normalerweise bei 16MHz und schafft fast 1 MIPS pro 1MHz Zyklus Die Produktion des AVR Microcontroller begann 1997 und heute ist AVR einer der am beliebtesten Controller der freischaffenden Elektronik Ingenieure Dank der g nstigen Entwicklungstools der diversen Peripherals in einem Paket und des niedrigen Energiebedarfs kam der anf ngliche Erfolg Heute gibt es noch einen anderen Grund sich f r den AVR zu entscheiden die Masse an Information und an Tutorials die sich ber die Jahre angesammelt haben Die AVR Technolo gie altert nat rlich aber um konkurrenzf hig zu bleiben stellt Atmel neue AVR Microcontroller her mit up to date peripherals und 16 und 32 bit Bus Erste aus der 8 bit kompatiblem XMega Serie und Letztere aus der neuen AVR32 Serie Basierend auf den Typ der Anwendung gibt es unterschiedliche Typen von AVR Microcontroller jeder mit einer unterschiedlichen Konfiguration Die meisten der AVRs geh ren zur megaAVR Serie sie haben einen gro en Programm Spei cher Als Gegenst ck gibt es die tinyAVR Serie mit weniger Funktionen
20. je nach Baureihe liegt dieser bei 4 bis 20 cm Das hat zur Folge dass zu einem Outputwert zwei korrespondierende Entfernungswerte exis tieren Dieses Problem kann vermieden werden indem beachtet wird dass die Distanz zwischen Objekt und Sensor nicht zu gering ist 193 6 Praktische Beispiele bung Das HomeLab Sensor Kit enth lt den Infrarot Entfernungsmesser SHARP GP2Y0A21YK Der Messbereich die ses Sensors liegt zwischen 10 cm und 80 cm Seine Output Spannung h ngt von der Entfernung ab und erreicht bis zu 3 V Der Entfernungssensor ist am Sensormodul angeschlossen Die Output Spannung wird ber Ka nal 0 zum ADC des AVR gesendet Aufbauend auf den vorangehenden bungen zu Sensoren ist es einfach ein Programm zu schreiben welches die Output Spannung des Entfernungsmessers misst Zus tzlich dazu behandelt diese Aufgabe die Umwandlung der Spannung in eine Entfernung Das Datenblatt des GP2YOA21YK beinhaltet einen Graphen welcher die Relation von Output Spannung und gemessener Entfernung darstellt Dieser Graph verl uft nicht linear Der Graph der inversen Werte ist jedoch ann hernd linear wodurch relativ einfach die Formel zur Umwandlung von Spannung in Entfernung gefun den werden kann Hierzu werden Punkte des Graphens in ein Tabellenkalkulationsprogramm eingef gt und so ein neuer Graph generiert Die meisten Programme berechnen automatisch eine Trendlinie Nachfolgend ist der Graph des GP2Y0A21YK mit der Relation der korrigiert
21. r 5 Sekunden ndert sich die In tensit t langsam wird die nderungsrichtung gezeigt Die gr ne LED zeigt an dass die Lichtintensit t ansteigt die gelbe dass sie abnimmt F r Fortgeschrittene 1 Datenschreiber Die Werte aller analogen Sensoren werden konstant gemessen und die minimalen und maximalen Werte werden festgehalten Mit Bet tigung von S1 kann der Nutzer die auf dem LCD an gezeigten Information w hlen Angezeigt werden muss Der Name des Sensors kurz und die bislang erreichten minimalen maximalen Werte Die Sequenz des Durchschaltens ist folgende IR Entfer nungsmesser Fotowiderstand Thermistor Potentiometer 203 6 Praktische Beispiele Entfernungsmesser Wenn der Schalter S2 gedr ckt wird werden der Reihe nach 10 Messungen in einer Sekunde durchgef hrt Nach der Messung wird die durchschnittliche Entfernung zum Objekt in Dezimeter auf dem 7 Segment Indikator angezeigt Bei Bet tigung des Schalters S1 wird die minimale gemessene Entfernung angezeigt und durch S3 die maximale Geschwindigkeit Die nderungsrate der Entfernung zu einem Objekt wird wie folgt angezeigt lang same nderung gr ne LED mittlere nderung gelbe LED schnelle nderung rote LED Die Geschwindigkeit wird auf dem LCD dargestellt Automatische Messreichweite Je nach aktueller Messung werden die minimal oder maximal gemes senen Temperaturen augegeben und der zugeh rige Wertebereich wird auf einer Skala von 0 bis
22. tretenden Fragen oder Problemen schnell Hilfe finden Der FAQ Bereich sollte zusammen mit den L sungen im Support Bereich der HomeLab Web seite verf gbar sein 6 Wettbewerb Zur Steigerung der Begeisterung f r Robotik Studien kann die praktische Arbeit mit einer Art Wettbewerb verbunden werden Die Gruppen m ssen zu einem gegebenen Problem eine L sung erarbeiten welche anschlie end gemeinsam bewertet wird Die Beurteilungskriterien Zeit Geschwindig keit Entfernung etc m ssen klar definiert und bekannt gegeben werden Dar ber hinaus k nnen weitere Kriterien herangezogen werden um die Ansicht den Erfindungsreichtung die Kosteneffizenz und weitere Aspek te der L sung zu bewerten Die Aufgabe kann dar ber hinaus auch mit Problemstellungen des t glichen Lebens verbunden werden wie zum Bei spiel ein Projekt zu Batteriesortierern oder Sicherheitssystemen Meistens werden Aufgaben aus der Hobbyrobotk oder der mobilen Robotik gestellt wie beispielsweise ein Roboter der einer Linie folgen soll Sumoroboter Ballspiele etc Das folgende Beispiel veranschaulicht eine typische bungsanweisung die f r praktische bungen verwendet werden kann Lab Nr 3 Sensoren und Analog Digital Konverter Leiter Sven Seiler Das Ziel 1 Grundlagen ber Analog Digital Konverter und das Konvertieren analo ger Signale mit dem AVR ATmega128 8 Bit Mikrocontroller 2 Verschiedenen Sensoren mit analogem Output kennenlernen 3 Eine einfac
23. werden zuvor errechnete Diagramme und Tabellen f r die Temperaturen genutzt Normalerweise enthalten die Tabellen Temperaturbereiche und die entsprechenden Werte f r Widerstand Spannung und ADC Alle exponentiellen Berechnungen wurden bereits durchgef hrt sodass der Nutzer nur noch die entsprechende Reihe finden und die Werte auslesen muss bung Das Sensormodul des HomeLab enth lt einen NTC Thermistor mit nominellem Widerstand von 10 kO Bei Temperaturen von 25 bis 50 C ist der Parameter B des Widerstands 3900 Ein Pin des Thermistors ist an die 5 V Betriebsspannung angeschlossen der andere an Kanal 2 Pin PF2 Ein typischer 10 kO Widerstand ist auch am gleichen Pin des Mikrocontrollers und an die Masse angeschlossen So entsteht zusammen mit dem Thermistor ein Spannungsteiler Da hier ein NTC Thermistor genutzt wird bei welchem der Widerstand sinkt wenn die Temperatur steigt wird die Outputspannung des Spannungsteilers bei steigender Temperatur h her W hrend der Nutzung des AVR ist es n tzlich eine Tabelle mit den Temperaturwerten und den Werten des ADC zu verwenden um die korrekte Temperatur zu finden Es ist sinnvoll f r jede Gradzahl der gew nsch ten Temperaturstufe des Messbereichs den korrespondierenden ADC Wert aus der Tabelle herauszusuchen 183 6 Praktische Beispiele da die Tabelle aufgrund der 10 Bit ADC Werte sehr gro sein wird Es wird empfohlen ein Tabellenkalku lationsprogramm MS Excel Openoffice Ca
24. 0 zu 1 Der Modus logische Null bewirkt dass der Interrupt durchgehend ausgel st wird solange der Pin den Wert Null hat W hrend dieser Periode wird die Aus f hrung des Hauptprogramms gestoppt 37 3 AVR Mikrocontroller Prinzipiell gibt es zwei Typen von Interrupts Mit dem Taktgeber des Control lers synchrone und asynchrone Interrupts Synchrone Interrupts funktionieren indem sie den Wert des Inputs behalten Auf diese Weise k nnen nderungen der logischen Werte aufgedeckt werden indem die Werte zwischen zwei Takt zyklen verglichen werden Erfolgen die nderungen des Signals schneller als der Tastzyklus des Controllers k nnen Interrupts falsch oder gar nicht ausgel st werden Asynchrone Interrupts sind unabh ngig vom Taktgeber des Controllers und k nnen so schnellere nderungen im externen Signal erfassen das logische Level muss jedoch immer noch f r mind 50 ns konstant sein Der ATmega128 hat 4 synchrone und 4 asynchrone externe Interrupts Beispiel Aufgabe Lassen Sie ATmega128 Pin Nummer 9 Pin 7 an Bus E einen Interrupt ausl sen wenn sich sein Wert ndert Der Pin geh rt zum externen synchronen INT7 Interrupt include lt avr interrupt h gt Der Code des externen Interrupts ISR INT7_vect mache irgendetwas int main ndere Pin 7 an Bus E zu einem Inputpin indem Bit 7 auf 0 gesetzt wird DDRE amp 1 lt lt PIN7 Definiere einen Pull Up Widerstand f r Pin
25. 2 3 Vermeidung von Kontaktprellung 146 4 Bleek Ab IN 153 6 3 1 Sollwareverz gerungen u soe E Pewee eR eu 154 6 3 2 Hardwareverz gerung is ener Bw re 157 E II 160 To rara eet TORE 163 ae beds oe daa da oe 165 ante Gus coe eee eee 166 cng beeps bonds eee oe 170 e E 173 A hoe bee Ge oes ees 175 FAs a ds GEG cee Gea A o aoe ay ee eat a 177 6 5 1 __ Potentiometer 22 2 2 CC Co nn 178 6 5 2 Thermistor 22 22 2 common 182 6 5 3 __Fotowiderstand e 186 6 5 4 Infrarot Entfernungsmesserl 222220000 192 ee ee 198 A Gere eb oy oy se ee ee ee 203 aie ah Bek Bes Soe eae Ae ee e we ee 205 6 6 1 Gleichstrommotor o 22 22 o 205 6 6 2 Servomotor 2 22 22m none 210 6 6 3 __Schrittmotorl 2 22 2 22 mm n nen 215 Inhaltsverzeichnis Den AA AA ee en 219 BEE SE Au re Ba ee aa ek A 221 AA III 222 6 27 11 RS232 p 3 un 4 ern era Be Re eg 223 ik E er e od EE E 227 ARE A A se A 227 UG RR A ok eee ce ie e o E ds 228 7 Beispielprojekt 229 7 12 Bericht sica a ss eee ek AL on 229 a e ee a ae 231 8 Ausblick 247 Einleitung Dieses Buch wurde als praktisches Handbuch f r Mikorcontroller und Robotik konzipiert in der Hoffnung dem Leser bei der Entwicklung von smarten L sungen zu helfen Dar ber hinaus soll es auch dazu beitragen die Begeisterung f r den Ingenieurberuf bei jungen Menschen zu wecken In erster Linie richtet sich das Buch an Schulen sow
26. 9 angezeigt Der Wert wird auf der 7 Segment Anzeige dargestellt Durch Kombination von Infrarot und Ultraschall Entfernungsmesser kann die Entfernung zum Ob jekt die Geschwindigkeit sowie die Richtung des Objektes bestimmt werden Die Ergebnisse werden auf dem LCD dargestellt Fragen 1 10 204 Wie exakt ist der ADC des ATmega128 Mikrocontrollers Welches ist die kleinste noch messbare Ver nderung der Inputspannung Wie lange dauert ein ADC Prozess Wie kann die Arbeitsfrequenz ge ndert werden Welchen Inputspannungsbereich hat der ADC Kann dieser ge ndert werden Wie Was ist der Unterschied zwischen PTC Thermistoren und NTC Thermistoren Worin bestehen die je weiligen Vorteile Was ist der Grund eines Spannungsteilers in einem Messschaltkreises Kombinieren Sie einen Spannungsteiler welcher die Nutzung eines analogen Sensors mit dem ATme ga128 Mikrocontrollers erm glicht Die maximale Outputspannung des Sensors betr gt 10 V Ermitteln Sie zus tzlich den Inhalt des ADMUX Registers Zus tzliche Widerst nde werden an den Pins des Potentiometers angeschlossen und eine 5 V Span nung wird angelegt Wie gro m ssen die zus tzlichen Widerst nde sein damit die Spannung vom Potentiometer zwischen 1 und 2 V reguliert werden kann von einem Ende zum anderen Die Strom st rke darf 10 mA nicht berschreiten Welche Umgebungsparameter haben einen Effekt auf die Funktion des Ultraschallentfernungsmessers und warum
27. Beispielprogramm dieser bung ist ein Thermometer welches Temperatur in C mi t und sie auf dem alphabetischen LCD ausgibt I Beispielprogramm des Thermistors des Sensormoduls Die Temperatur wird auf dem LCD angezeigt include lt stdio h gt include lt homelab adc h gt include lt homelab module sensors h gt include lt homelab module lcd_alpha h gt Hi Hauptprogramm Hi int main void unsigned short value signed short temperature char text 16 Einrichten des LCD Icd_alpha_init LCD_ALPHA_DISP_ON 185 6 Praktische Beispiele L schen des LCD lcd_alpha_clear Name des Programms Icd_alpha_write_string Termomeeter Einrichten des ADC adc_init ADC_REF_AVCC ADC_PRESCALE 8 Endlosschleife while true Auslesen der 4 fach gerundeten Spannungswerte aus dem Thermistor value adc_get_average_value 2 4 Konvertieren der ADC Werte in Grad Celsius temperature thermistor_calculate_celsius value Konvertieren der Temperatur in Text To display the degree sign the octal variable is 337 sprintf text d 337C temperature Anzeige des Textes am Anfang der zweiten Zeile des LCDs Icd_alpha_goto_xy 0 1 lcd_alpha_write_string text Extra Das Temperaturdiagramm eines 10 kO NTC Thermistors 6 5 3 Fotowiderstand Notwendiges Wissen N Sensors Module N Icd A Voltage Divider z Analog to digital Converter 2 Analo
28. Clk 1024 TIMER2_PRESCALE_T2_FALLING Taktgeber an Pin T2 fallende Flan ke TIMER2_PRESCALE_T2_RISING Taktgeber an Pin T2 steigende Flan ke timer1_prescale timer3_prescale Timer 1 3 Vorteiler Aufz hlungsdatentyp M glicheiten n bedeutet 1 oder 3 TIMERn_NO_PRESCALE Kein Vorteiler keine Division TIMERn_PRESCALE_8 Clk 8 TIMERn_PRESCALE_64 Clk 64 TIMERn_PRESCALE_256 Clk 256 TIMERn_PRESCALE_1024 Clk 1024 TIMERn_PRESCALE_Tn_FALLING Taktgeber an Pin Tn fallende Flan ke 86 5 4 HomeLab Bibliothek TIMERn_PRESCALE_Tn_RISING Taktgeber an Pin Tn steigende Flan ke timer1_ctc_top timer3_ctc_top Timer 1 3 CTC Modus H chstwert Aufz hlungsdatentyp M glichkeiten n bedeutet 1 oder 3 TIMERn_CTC_TOP_OCRA H chstwert des Timers 1 3 output com pare register A TIMERn_CTC_TOP_ICR H chstwert des Timers 1 3 input capture register timer1_fast_pwm_top timer3_fast_pwm_top Timer 1 3 fast PWM mode top value enumeration data type Options n means 1 or 3 TIMERn_FAST_PWM_TOP_256 H chstwert 255 TIMERn_FAST_PWM_TOP_512 H chstwert 511 TIMERn_FAST_PWM_TOP_1024 H chstwert 1023 TIMERn_FAST_PWM_TOP_ICR H chstwert des Timers 1 3 input capture register TIMERn_PAST_PWM_TOP_OCRA H chstwert des Timers 1 3 out put compare register A timer1_fast_pwm_output_mode timer3_fast_pwm_output_mode Timer 1 3 fast PWM mode outputs co
29. Damit wurde der Treiber idiotensicher gemacht und nur eine Option bzgl der Transistoren auf einer Seite des Vierquadrantenstellers ausgew hlt werden kann Anders gesagt die Polarit t wird ausgew hlt indem die beiden Treibersignalen die an den beiden Enden der Spule des Motors anliegen genutzt werden Beachte Verwechslen Sie nicht RC PWM Signal und gew hnliche PWM Signale bung Das Board der Motoren des HomeLab erlaubt den Anschluss von bis zu 4 Gleichstrommotoren Das Schaltbild und die Anleitung f r die Anschl sse k nnen im Kapitel Motormodul gefunden werden F r jeden Motor gibt es einen Vierquadrantensteller welcher ber zwei digitale Output Pins des Mikrocontrollers kontrolliert wird da der enable Pin konstant high ist Wenn beide Kontrollpins den gleichen Wert haben wird der Motor gestoppt Wenn verschiedene Werte vorliegen wird der Motor in eine bestimmte Richtung gedreht Der Status des Vierquadrantenstellers ist in der folgende Tabelle beschrieben Input A InputB Output A Output B Result 0 0 Der Motor wird ge stoppt 1 1 Der Motor wird ge stoppt 1 0 z Der Motor dreht in Richtung 1 0 1 Der Motor dreht in Richtung 2 Gleichstrommotoren k nnen durch nderung der dazugeh rigen Treiberpins mit dem Mikrocontroller kon trolliert werden Die speziellen Funktionen um den Motor zu steuern sind in der HomeLab Bibliothek enthal ten Die Einrichtung von Pins als Treiberpins Hl
30. Echo Pin an den AVR Pins angeschlossen werden Zur Zeitmessung sollte ein 16 Bit Timer genutzt werden z B timer3 Nachfolgend ist eine Funktion dargestellt die alle Messvorg nge ausf hrt sie generiert das Signal des Triggers startet den Timer misst die L nge des Echosignals und konvertiert dies zur Entfernung in Centimetern Die Funktion blockt das bedeutet sie h lt den Prozessor besch ftigt bis die Messung abgeschlossen ist oder zu lange dauert Je schneller das Echo ankommt desto schneller erh lt man ein Ergebnis Falls kein Echo ankommt wartet die Funktion 36 ms und geht dann auf 0 zur ck Es ist wichtig zwischen den Messungen eine Pause von mindestens 20 ms Pause einzuhalten um den Soundgenerator komplett zum Stillstand kommen zulassen so dass die neue Messung nicht durch die alte beeintr chtigt wird Au erdem sollte darauf geachtet werden dass die Schallwellen sich nicht gegenseitig st ren wenn verschiedene Ultraschallsensoren gleichzeitig genutzt werden define ULTRASONIC SPEED OF SOUND 33000 cm s ve Sofortige Ultraschall Entfernungsmessung YY unsigned short ultrasonic_instant_measure pin trigger pin echo Bin Setup pin_setup_output trigger pin_setup_input_with_pullup echo Timer 3 auf den normalen Modus setzen mit der Periode des F CPU 8 timer3_init_normal TIMER3_PRESCALE 8 Erzeugung des Aul se Impulses pin_set trigger Timer zur cksetzen timer3_overflow_flag_cl
31. Erzeugung von Verz gerungen bereits in der avr libc und der Bibliothek von HomeLab hinterlegt sind Diese werden auch in den folgenden Beispielen genutzt Bei der Arbeit mit Softwareverz gerungen arbeitet ist es wichtig zu wissen dass diese trotz ihrer Einfachheit eine sehr ineffiziente Methode sind was den den Stromverbrauch betrifft W hrend jedes Taktes in dem der Mikrocontroller unn tig Zahlen z hlt wird Energie verbraucht Wenn also batteriebetriebene Anwendungen genutzt werden ist es nicht sinnvoll lange Softwareverz gerungen zu schreiben F r diesen Fall sollte man lieber Hardwaretimer nutzen welche unabh ngig arbeiten und den Prozessor aus dem Ruhezustand holen wenn es an der Zeit ist die Arbeit fortzuf hren bung Der folgende Programmcode beinhaltet die Softwareverz gerunsfunktion sw_delay_ms welche einen gegebe ne Verz gerung in ms mit dem Parameter count verursacht Die Funktionen nutzt die Funktion der Bibliothek avr libc _delay_ms welche zum Teil in Assembler geschrieben ist _delay_ms wird in dieser bung nicht genutzt da hiermit bei langen Verz gerungen Probleme auftreten k nnen sw_delay_ms erlaubt es aber bis zu 65535ms lange Verz gerungen ohne Komplikationen zu nutzen ye Softwareverz gerung in Millisekunden ye void sw_delay_ms unsigned short count Z hlen der Variable der Verz gerung auf 0 while count gt 0 1ms Verz gerung mit spezieller Funktion _delay_ms 1 Das fol
32. Nummer endet Das ist nicht immer m glich vor allem mit 8 Bit Countern da ihr Wertebereich sehr klein ist Um einen pr ziseren oder gr eren Intervall zu bekommen kann ein 16 Bit Counter gew hlt werden Externer Taktgeber Es ist auch m glich einen externen Taktgeber als das Takt signals eines Counters zu nutzen Der AVR hat einen Pin In daf r Das n ist Platzhalter f r die Nummer des Counters Das Externe Taktsignal und die Polarit t kann man im Prescaler Register ausw hlen Timing events Da die Counter zeitlich abgestimmte Operationen erm glichen haben komplexe AVR Microcontroller eine Option auf Hardware Level f r zeit spezifische Ereignisse Der Teil des Counter hei t Input Capture Unit Es gibt eine Auswahl zwischen zwei Ereignissen Die logische nderung eines Werts an einem speziellen Input Pins oder im Wert des analogen Komparator Ergebnisses Wenn das gew hlte Ereignis eintritt wird der Wert des Counters in ein spezielles Register geschrieben welches man jederzeit auslesen kann Wenn das Event l nger ist als die Overflowzeit des Counter muss das Programm die Overflow mit z hlen und beim Endergebnis mitberechnen Example Aufgabe Miss die Frequenz eines Externen 122Hz 100KHz logischen Rechteck signals mit einem 8MHz ATmega128 Die Messung soll mit einer 1 Hz Pr zisi on erfolgen Das Programm nutzt einen 16 Bit Counter mit einer Input Capture Unit include lt avr interrupt h gt unsigned long fr
33. Re gister high zu setzen 1 muss eine logische Addition durchgef hrt werden Hierf r muss ein Operand das Register sein und ein anderer die Bin rzahl wo bei das einzige high Bit jenes ist was ein einem Register high gesetzt werden muss Diese Bin rzahl wird Bitmaske genannt Nachfolgend ist der C Code f r diese Operation abgebildet Annahme REG 0x0F REG REG 0x11 Erste Methode REG l 0x11 Zweite Methode Ergebnis REG 0x1F pilar pofofoJoJ1 1 1 0 0x0 Abbildung 3 9 Ein einzelnes Bit low setzen Ein einzelnes Bit low setzen Um einzelne oder mehrere Bits in einem Register low zu setzen 0 ist eine logische Multiplikation n tig Dabei muss ein Ope rand das Register und ein weiterer eine Bitmaske sein in welcher das einzige low Bit jenes ist welches im Register low gesetzt werden soll Annahme REG 0x0F REG REG OxFE Erste Methode REG amp OxFE Zweite Methode Ergebnis REG 0x0E 22 3 2 Register ECCNA CNK ojojoj j1 j1 tf oy 0x1 Abbildung 3 10 in einzelnes Bit invertieren Ein einzelnes Bit invertieren umkehren Zum Invertieren einzelner oder meh rerer Bits eines Registers muss eine Exklusive Disjunktion angewandt werden Hierzu ist ein Operand das Register der andere muss eine Bitmaske sein in der das einzige high Bit jenes ist welches invertiert werden soll Der C Code f r die se Operation ist u
34. Vergleich nicht bereinstimmt 8 Bits zur cktransferieren In der kompilierten Form erkennt man was mit dem Zyklus der C Sprache passiert und man kann berechnen wie viele Taktfrequenzen ben tigt werden um den Zyklus einer Periode zu beenden Die Information ber die Wirkung der Befehle und ihre Laufzeit findet man im AVR Datenblatt Im vorliegenden Beispiel braucht es 4 Taktzyklen um 4 Befehle in einer Periode auszuf hren da jeder Befehl einen Takt ben tigt Zus tzlich wird ein Takt vor dem Zyklus ben tigt um die Befehle zu laden und ein Takt um den Zyklus zu beenden Wenn man nun den Arbeitstakt von 14 7456 MHz annimmt kann man die vom Programm verursachte Verz gerung berechnen 1 100 4 1 14745600 27 26 us Die Verz gerung in diesem Beispiel ist in Mikrosekunden angegeben und die Variable nutzt 8 Bit daher ist der Maschinencode recht einfach Um eine Pause in Millisekunden zu verursachen m ssen weitaus gr ere Nummern gez hlt werden wodurch dann der Maschinencode auch l nger wird Es k nnen ebenfalls Zyklen verwendet werden die ineinander greifen jedoch steht dann die Verz gerung nicht in linearer Relation mit der Nummer des Zyklus da mit jedem Level des Zyklus eine kleine zus tzliche Verz gerung verursacht wird 155 6 Praktische Beispiele Das Ziel dieser bung ist es nicht pr zise Softwareverz gerungen in Maschinencode zu erstellen da diese eine sehr pr zise Arbeit ist und die Funktionen zur
35. daf r gedacht sind direkt auf die Platine gel tet zu werden ohne zu Bohren AMT Microchips sind d nne m nzen gro e rechteckige Geh use mit Pins von ca Imm L nge Eine ruhigere Hand und pr zisere Werkzeuge werden zum l ten von SMT Chips ben tigt AVRs gibt es als DIP und SMT Geh use Das Layout der Pins ist vom Design her so logisch und elektronisch ausgeglichen wie es nur m glich ist Zum Beispiel 15 3 AVR Mikrocontroller sind bei gr eren Chips die Ground und Supply Pins auf mehreren Seiten des Microcontrollers die Pins f r einen Externen Oszillator sind nahe des Ground Pins die Bus Pins sind durchnummeriert die Communication Pins sind neben einander etc AVRs digitale Pins sind kompatibel mit TTL CMOS Voltwerten Bei 5V Supply Spannung 0 bis 1 V sind Logische Null Zero auch Zero Null 0 Low Ground oder GND genannt Bei Gleicher Supply Spannung 2 bis 5 5V sind die logische Eins auch one 1 high genannt Dieses Typ von weiten Span nungsunterschieden gibt es nur im Input die Outputspannung an einem Pin mit keinem Load ist immer noch 0 V oder nahe der Supply Spannung je nach Status des Pins Die erlaubte Analogspannung an den ADC Kan len ist 0 5 5V ATmega128 Um die folgenden Beispiele am ATmega 128 besser zu verstehen gibt es am Ende des Textes ein Pinout Schema des ATmega128 SMT Packa ge An jedem Pin ist ein Text mit der Nummer prim ren Funktion und sekun d ren alternativen Funktion in Klammen Su
36. der LED ist aus wenn der Pin low ist Alle praktischen Beispiele f r das HomeLab kit inklusive LEDs schalten nut zen die HomeLab Pin Bibliothek Die Pin Bibliothek hat den Datentyp pin wel cher die Addressen des zum Pin geh rigen Register und der Bitmaske des Pins enth lt Wenn eine Pin Variable mit der Makrofunktion Pin im Programm er schaffen und initialisiert wird kann der Pin mit dieser Variable im gesamten Programm genutzt werden ohne Register benutzen zu m ssen Hier sind 2 Bei spielprogramme welche exakt das gleiche machen Das eine Programm nutzt die HomeLab Bibliothek das andere nicht Hi HomeLab Controllermodule LED Testprogramm Der Cose basiert auf der HomeLab Bibliothek Ve include lt homelab pin h gt Hi LED Pin Konfiguration N pin debug_led PIN B 7 i ip Hauptprogramm Vip int main void konfiguriert LED Pin als Output pin_setup_output debug_led Aufleuchten der LED pin_clear debug_led Ye HomeLab Controllermodul LED Testprogramm Der Code greift direkt auf Register zu 139 6 Praktische Beispiele include lt avr io h gt Hal Hauptprogramm ll int main void Konfiguriert LED Pin als Output DDRB 1 lt lt 7 Aufleuchten der LED PORIB amp 1 lt lt 7 Das erste Beispiel nutzt die Pin Bibliothek pin h Datei Zuerst wird eine Pin Typ Variable debug led erschaffen welche Informationen ber den LE
37. diesen vier Bin roperationen mit einzelnen sowie mehre ren Bits Abbildung 3 7 Negation logische Multiplikation logische Addition und exklusive Disjunktion Negation Inversion Eine Negation kehrt den Wert eines Bits in das jeweilige Gegenteil um So wird aus einer 0 eine 1 und umgekehrt In C wird eine Negation durch vorgenommen Logische Multiplikation Konjunktion Bei der Multiplikation zweier Bits ist das Ergebnis 1 f r den Fall dass beide Bits den Wert 1 besitzen ansonsten 0 Eine Logische Multiplikation wird in C durch amp dargestellt Logische Addition Disjunktion Eine Addition von zwei Bits ergibt 1 wenn zumindest eines der Bits den Wert 1 hat und 0 wenn beide Bits den Wert 0 haben In C kennzeichnet die Logische Addition Exklusive Disjunktion Exklusives ODER XOR Das Ergebnis einer Exklusiven ODER Operation ist 1 bei zwei unterschied lichen Bits also wenn ein Bit den Wert 1 besitzt das andere den Wert 0 ansonsten 0 Eine Exklusive Disjunktion wird in C durch dargestellt 21 3 AVR Mikrocontroller Man ben tigt nicht mehr als diese vier Operationen um einzelne Bits zu ndern Da die Theorie allein vermutlich nicht ausreichen mag enthalten die folgenden Abschnitte einige Anwendungsbeispiele 1 0x0F ooo orar OPO TOIL ALAA Ox1F Abbildung 3 8 Ein einzelnes Bit high setzen Ein einzelnes Bit high setzen Um einzelne oder mehrere Bits in einem
38. drehen beide Motoren r ckw rts bis der Schalter losgelassen wird Servomotor Der Servomotor wird mit den Schaltern des digitalen Boards kontrolliert Wenn S1 ge dr ckt wird macht der Servomotor einen Schritt nach rechts bei S3 einen Schritt nach links und 52 bewegt den Servomotor wieder in die urspr ngliche Position Mitte Die Position des Motors wird direkt auf dem 7 Segment Display dargestellt jede Nummer steht f r 10 Drehung Mittelposition 5 Radar Die Funktion eines Radars wird simuliert Um ein Objekt welches n her als 0 5 Meter ist zu identifizieren wird auf dem Hebel des Servomotors der IR Entfernungsmesser installiert Der Hebel des Servomotors bewegt sich konstant von einem Ende zum anderen Ende der Bewegungsreichweite des Motors Falls ein Objekt n her als 0 5 Meter am Sensor ist wird der Servomotor fiir 5 Sekunden gestoppt und eine LED PB7 zeigt auf dem Controllerboard die Entdeckung eines Objekts an Schrittmotor Nach jeder Bet tigung von S1 oder S3 rotiert der Motor 10 Schritte im oder gegen den Uhrzeigersinn Die Rotation wird sofort angehalten wenn S2 gedr ckt wird Alle drei Motorentypen werden angeschlossen Durch Bet tigung eines Schalters wird ein bestimmter Motor gestartet und angehalten S1 steuert den Gleichstrommotor S2 den Servomotor und S3 den Schrittmotor F r Fortgeschrittene 220 1 Der Gleichstrommotor beschleunigt wenn S1 gedr ckt wird und h lt diemomentane Geschwindigkeit wen
39. eine sehr genaue und weiche Kontrolle zu erm glichen Unipolare Schrittmotoren Vee Vee 1A 2B 1B 2A Abbildung 6 34 Die Wicklungen eines unipolaren Schrittmotors Unipolare Schrittmotoren haben f nf oder sechs Anschl sse Je nach Aufbau des Motors werden nur 4 der Wicklungen aktiviert Vcc Leitungen werden normalerweise an der positiven Stromquelle angeschlossen W hrend der Umwandlung sind die Enden der Wicklungen la 1b 2a und 2b ber Transistoren Transisto rarray der Motorplatine ULN2803 nur an die Masse angeschlossen was die Kontrollelektronik recht einfach macht Bipolare Schrittmotoren 216 6 6 Motoren Abbildung 6 35 Die Wicklungen eines Bipolaren Schrittmotors Bipolare Schrittmotoren unterscheiden sich von unipolaren da sie die Polarit t ihrer Wicklungen w hrend der Umwandlung ver ndern Die H lfte der Wicklungen wird gleichzeitig aktiviert daher sind sie effizenter als unipolare Schrittmotoren Bipolare Schrittmotoren haben 4 Anschl sse jeder wird an einen anderen Vier quadrantensteller angeschlossen Treiber L293 auf der Motorenplatine W hrend der Kommutation legen die Vierquadrantensteller entweder negative oder positive Spannung am Ende der Wicklung an Unipolare Moto ren k nnen mit einem bipolaren Treiber gestartet werden indem einfach die Leitungen 1a 1b 2a und 2b der Wicklungen angeschlossen werden Vcc wird nicht angeschlossen Die notwendige Kommutation um Schrittmotoren mit Wi
40. f r die Projektmitgliedern bringt dazu was in Zukunft anders gemacht werden sollte was man gelernt hat und was den Leitern und Organisatoren des Projekts vorschlagen werden sollte 7 2 Mobile Roboterplattform Genutzte Quellen und Materialien Anhang Das folgende Beispielprojekt zeigt wie eine Dokumentation und ein Bericht eines Projekts erstellt werden Aufgrund des begrenzten Umfangs dieses Buches kann der Bericht leider nur in gek rzter Fassung dargestellt werden er stellt aber immer noch die verschiedenen Aspekte einer Dokumentation dar 7 2 Mobile Roboterplattform Der mobile Roboter ist eine der popul rsten Robotorkonstruktionen Sehr verbreitet sind Sumoroboter Spor troboter Fu ball Volleyball usw Roboter die Rettungsoperationen simulieren Feuerbek mpfung Personen oder Objektsuche und viele andere Es gibt auf der ganzen Welt und in Estland diverse Wettbewerbe f r die se Art Roboter es wurden sogar Standardklassen entwickelt z B Sumoroboter Alle diese Robotor nutzen eine mobile Plattform welche zwar zum Teil unterschiedlich konstruiert ist oder andere Eigenschaften be sitzt deren Grundfunktion aber stets die gleiche ist Diese umfasst die Steuerung von Motoren und einfacher Navigation inklusive dem Ausweichen vor Objekten und der Bewegung zu einem festgelegten Punkt Ge w hnlich wird der Hauptfunktion eine spezifische Funktion hinzugef gt die auf die Voraussetzungen und M glichkeiten des Projekts abges
41. hirti Frequency 14745600 ee IV Unsigned Bitfields funsigned bitfields IV Pack Structure Members fpack struct Optimization Os v IV Short Enums fshort enums Memory Settings IV Create Hex File IV Generate Map File IV Generate List File Cancel Help Custom Options 6 Um die Funktionen der HomeLab Bibliothek zu nutzen muss die Software richtig installiert sein Bei jedem neuen Projekt ben tigt muss die Bibliothek zur Liste der verlinkten Objekte hinzugef gt werden Hierzu gehen Sie auf Project Configuration Options Libraries und f gen Sie libhomelab a hinzu 117 6 Praktische Beispiele x In Library Search Path Ei X 4 Include Directories Libraries y d ibscanf_min a Add Object Memory Settings A Move up Move down OK Cancel Help Available Link Objects Link with These Objects Add Library gt libhomelab a Remove Object Custom Options Falls das Objekt libhomelab a in der Liste links fehlt ist die Bibliothek nicht richtig installiert und sollte erneut installiert werden Test der Einstellungen Nach Installation der Entwicklungsumgebung sollte diese getestet werden um sicherzustellen dass sie korrekt funktioniert Der einfachste Weg hierf r ist ein kleines Programm zu schreiben es zu kompilieren und in den Controller zu la den 1 Schlie en Sie das Programmierger t an dem ATmega128 an
42. hn C Sell R Integrated Systems amp Design TUT Press 2008 4 Friendenthal S Moore A Steiner A A Practical Guide to SysML Elsevier 2008 5 Perens A Project Management K lim 1999 6 Br unl T Embedded Robotics Springer Verlag 2003 245 8 Ausblick Wenn Sie am Ende dieses Buches angelangt sind haben Sie einige Kenntnisse sowie praktische F higkeiten in Bezug auf das Programmieren von Mikrocontrollern und den Umgang mit diversen Ger ten erlangt selbst wenn Sie nicht alle bungsbeispiele absolviert haben Wir hoffen dass dieses Buch Sie bei der Bew ltigung von Problemen sowie der Erlangung theoretischen Hintergrundwissens unterst tzen konnte Der n chste Schritt w re nun eigene intelligente Ger te zu entwickeln die Ihren Interessen oder Bed rfnissen angepasst sind Sch ler und Studenten k nnen sich dar ber hinaus nach Robotikwettbewerben umsehen Auf jeden Fall k n nen Sie das erworbene Wissen dazu nutzen Ihren Alltag einfacher und mit mehr Freude zu gestalten Sie k nnen einfache Sicherheitssysteme f r Ihr Ferienhaus oder Ihre Garage entwickeln die mit verschiedenen Sensoren arbeiten um Einbrecher aufzusp ren und den Eigent mer zu warnen Bei Problemen fragen Sie um Hilfe Dieses Buch wird sich st ndig in seiner elektronischen Form weiter entwickeln Es ist Teil eines Robotik Studienkonzepts welches die Pflege der Webseite einschlie t Zus tzlich zum online verf gbaren Material existiert ein Be
43. ist wichtig dass man die Beispiele zusammen mit einem Betreuer im plementiert da dieser Hintergrundinformationen zu den Funktionen bie ten und die Beispiele l sen kann Die ganze Vorgehensweise sollte schrift lich Schritt f r Schritt festgehalten werden damit jeder Lernende folgen kann und so sicher gegangen werden kann dass alle Teilnehmer den Ab 62 5 2 Robotik unterrichten lauf verstanden haben auch wenn sie in unterschiedlichen Geschwindig keiten voran kommen Eine m gliche bungsablaufstruktur ist im Folgen den beschrieben kann jedoch je nach Situation und Bed rfnissen angepasst werden Einf hrung in die bung Der Lehrer erkl rt die neue bung geht alle n tigen theoreti schen Inhalte durch und f hrt zusammen mit dem Teilnehmern ein Beispielprogramm aus Die Ubungseinheit ist in kleinere Teile unterteilt wobei jeder Teil aus einem theoretischen und einem praktischen Teil besteht in welchem dann Quellcode entwickelt werden soll Das bedeutet dass der Quellcode anhand von theoretischen Erkl rungen ent wickelt wird Individuelle Arbeit Die individuelle Arbeit erfolgt gem den Ar beitsanweisungen der bungseinheit Hier sind Ziele Arbeitsprozes se Anforderungen und die Berichterstattung definiert Die Sch ler lernen selbstst ndig entweder alleine oder in einer kleinen Gruppe und erhalten wenn n tig Unterst tzung von ihren Lehrern Ziel des eigenst ndigen Arbeitns ist jedoch die L s
44. jede Taste f hrt eine Funktion aus wenn sie korrekt verwendet wird Werden die falschen Tasten bet tigt wird der Mikrocontroller in der Regel nicht direkt besch digt aber er wird nicht funktionieren Tats chlich gibt es keine Tasten im Register sondern stattdessen eine Vielzahl von Transistoren welche die Stromversorgung ein und ausschalten Einfachere Mikrocontroller haben 8 transistorbasierte Schalter in einem einzigen Register Unter einem Register kann man sich eine 8 Bit Zahlenfolge vorstellen wobei jedes Bit durch den Status ei nes dieser Schalter gekennzeichnet wird Zum Beispiel kann ein Bit Wert von 1 bedeuten dass der Schalter an ist ein Wert von 0 hie e dann dass er aus ist BesBB o Eo ear of oe ee Abbildung 3 5 Tasten des Registers und Bitwerte Da der Status eines Registerschalters einfach durch eine Nummer abgebildet werden kann lasst sich ein Register mit einem Speicher vergleichen der Daten in Form genau einer Zahl speichern kann Durch diesen Vergleich wird deutlich dass Register tats chlich Speicherslots sind Der Unterschied zwischen einem Register und einem Speicherslot besteht darin dass letzterer lediglich Informa tionen speichert w hrend die Informationen in einem Register tats chlich etwas steuern So sorgt zum Beispiel der Bin rwert 01100001 in einem Register daf r dass drei imagin re Tasten bet tigt werden wodurch eine Funktion ausgel st wird W hrend es bei einem Kassettenrekor
45. jedoch weiterhin erfolgreich in Freizeitanwen dungen verwendet insbesondere wenn USB RS 232 Konverter vorhanden sind Der RS 232 Standard legt die Stecker die elektronischen Parameter sowie die Bedeutung der Signale fest nicht aber das Protokoll Die RS 232 Schnittstelle wird haupts chlich in Verbindung mit dem UART Daten bermittlungsmodul genutzt Diese UART Hardware verf gt ber ein standardisiertes Protokoll legt jedoch keine Stecker oder andere Din ge fest Die RS 232 Schnittstelle erweitert somit das UART Modul UART ist ein Peripheriemodul des Mikro controllers dessen digitaler In und Output nicht mit den elektronischen Parametern des RS 232 korrespon diert Aus diesem Grund werden die beiden ber einen speziellen Pegelkonverter miteinander verbunden Der bekannteste Pegelkonverter f r RS 232 und TLL COMS ist der MAX232 Die Bezeichnung UART steht f r Universal Asynchronous Receiver Transmitter Die USART Schnittstelle bietet erg nzend die M glichkeit Daten synchron zum Taktsignal zu senden UART kann auch als serielle Schnittstelle bezeichnet werden Die serielle Schnittstelle ist ein Datentransfermechanismus wobei jedes Bit einzeln bermittelt wird Um beispielsweise 1 Byte zu senden werden 8 Bits in einem bestimmten Intervall bermittelt Dadurch wird an der seriellen Leitungsschnittstelle also an einen Pin des Mikrocontrollers der Wert der Stromspannung nach einer bestimmten Zeit ver ndert zun chst ist dieser n
46. kann Mit dem Schalter S1 kann es nach links bewegt werden mit Schalter S3 nach rechts und mit Schalter S2 wird die Reihe gewechselt 5 Stellen Sie auf dem graphischen Display 10 Zeilen Text dar Mit den Schaltern S1 und S2 kann innerhalb des Textes hoch und runtergescrollt werden 6 Erstellen Sie eine Benutzerschnittstelle ber welche mit den drei Schaltern Text eingegeben werden kann Ein Schalter w hlt beispielsweise das Zeichen aus der zweite berpr ft das Zeichen und der dritte berpr ft schlie lich den Text Die maximale L nge des Textes betr gt 10 Zeichen und der Text 175 6 Praktische Beispiele soll in umgekehrter Reihenfolge in der zweiten Reihe dargestellt werden Sie k nnen das lateinische Alphabet nutzen und das Display selbst ausw hlen F r Fortgeschrittene Stellen Sie griechische Buchstaben auf dem graphischen LCD dar Dabei sollen folgende Zeilen an gezeigt werden Widerstand N IR TR 7 3 141592 Nutzen Sie den Quellcode aus der HomeLab Library von der Webseite Schreiben Sie ein Programm um Dezimalzahlen in Bin rzahlen zu konvertieren Verwenden Sie die Schalter S3 bis S1 zum Einf gen von Dezimalzahlen in zehn Sekunden S3 Hunderter S2 Zehner S1 Einer Durch vierfaches Bet tigen von Schalter S3 wird so beispielsweise die Zahl 400 angezeigt Das Zeichen f r den Beginn der Eingabe und f r das Ergebnis sollen in Bin rzahlen ausgegeben werden Verwenden Sie hierz
47. letzte Wort noch aus dem Puffer gelesen werden muss w hrend ein neues ankommt Aus diesem Grund ist es wichtig die empfangenen Datenw rter stets so schnell wie m g lich ins Programm zu lesen z B mit Hilfe eines Interrupts Es gibt drei m gliche Gr nde f r Interrupts Sendepuffer bereit bertragung erfolgreich Empfang er folgreich Der Sende und Empfangspuffer sind physikalisch getrennte Register aber sie nutzen die gleiche Speicheradresse und den gleichen Namen W hrend des Schrei bens in ein gemeinsam benutztes Register werden die Daten im Sendepuffer ge speichert beim Auslesen werden sie aus dem Empfangspuffer gelesen Werden 9 Bit Worte benutzt wird das 9 Bit mit Hilfe eines Einstellungsregister bertra gen und ausgelesen Beispiel Aufgabe Konfigurieren Sie die USARTO Schnittstelle eines 8 MHz ATmega128 so dass sie ein 8 Bit Wort asynchron bertr gt wobei die Baudrate 9600 bps be tr gt 1 Stoppbit und kein Parit tsbit genutzt werden soll Senden Sie das Symbol EX include lt avr io h gt int main Setzt die Baud Rate auf 9600 bps Formel WH Faktor Frequenz 16 Baudrate 1 M BRRZ 2800000087216 7779600212251 UBRROH 0 UBRROL 51 Erlaube Senden UCSROB 1 lt lt TXENO Konfiguriere den asynchronen Modus setze die Wortgr e auf 8 Bit 1 Stoppbit kein Parit tsbit UCSROC 1 lt lt UCSZ01 1 lt lt UCSZOO Warte solange bis der Datenpuffer leer i
48. mit der eingegebe nen Position und versucht eine bereinstimmende Position zu erreichen Das Positionskontrollsignal ist eine durchgehende Rechteckschwingung wie in dem Bild dargestellt RC radio controlled Servomotoren sind in der Robotik und im Modellbau sehr verbreitete Antriebe Sie be stehen aus einem kleinen Gleichstrommotor einer bersetzung und der logischen Kontrolleinheit Normaler weise versucht der Rotor des Servomotors sich in eine bestimmte Position zu bringen und diese zu halten Die Position des Rotors h ngt von dem Kontrollsignal ab dass der Servomotor empfangen hat Je nach Typ des Motors kann der maximale Drehwinkel des Motors variieren Servomotoren die sich konstant drehen sind selten In diesem Fall gibt das Kontrollsignal nicht den Rotationswinkel sondern die Rotationsgeschwindig keit an Servomotor Hacks sind auch sehr verbreitet Hierdurch wird ein positionsbestimmender Servomotor zu einem konstant drehenden In diesem Fall wird das Feedback Potentiometer durch zwei Widerst nde er setzt und der mechanische Widerstand welcher verhindert dass eine vollst ndige Rotation stattfinden kann wird entfernt Eine wichtige Eigenschaft des Servomotors ist das Kraft Gewicht Verh ltnis Das Kontrollsignal des Servomotors ist ein speziell pulsweitenmoduliertes Signal PWM bei dem die Puls weite die Position des Rotors angibt Die Periode des Signals liegt bei 20 ms 50 Hz und die Weite der hohen Periode ist 1 ms 2 ms
49. muss die eingestellte interne Spannung von 2 56 V ausgew hlt werden Dazu muss der Taktzyklus des Konverters mit einem Vorz hler gesetzt werden Faktor des Frequenzteilers welcher den Taktzyklus des Controllers teilt Die Umsetzung ist schneller wenn h here Taktzyklen verwendet werden jedoch kann die Genauigkeit drunter leiden Die Funktion adc_get_value dient zur Messung Es kann der Kanal gew hlt werden und sie gibt 10 Bit 180 6 5 Sensoren Ergebnisse als ganze 16 Bit Zahlen aus Die Funktion zur Messung wartet bis die Konversion beendet ist und gibt das Ergebnis erst dann aus In den zuvor erkl rten Beispielprogrammen werden die Bibliotheken des ADC und des 7 Segment Zifferan zeige genutzt Der 10 Bit Wert des ADC wird mit 10 multipliziert und durch 1024 dividiert um einen Wert zwischen 0 und 9 zu erhalten Der Wert 10 kann nicht erreicht werden weil in C nur ganzzahligewerte be rechnet werden und keine gerundeten Ergebnisse Um die Genauigkeit des Ergebnisses zu erh hen wird eine Funktion zur Berechnung des Durchschnitts der Ergebnisse des ACSs genutzt Daraus abgeleitet gibt das Pro gramm auf der Anzeige einen Wert von 0 bis 9 aus welcher der Position des Potentiometers entspricht Hi Beispielprogramm fiir das Potentiometer des Sensormoduls Die Position des Potentiometers wird auf der 7 Segmentanzeige dargestellt include lt homelab adc h gt include lt homelab module segment_display h gt Wi Ausw
50. ngen f r beiden hohen Semi Perioden des Signals bestimmt Der Timer hat eine spezielle Vergleichseinheit welche den Wert des Z hlwerks beobachtet und f r den Fall dass es gleich dem Wert des Vergleichs Registers ist den Output Wert der Vergleichseinheit ndert Es folgt ein Programm Code der Servomotor Steuerbibliothek des HomeLab F r die Ausf hrung nutzt es Parameter f r Timer welche durch Makrofunktionen bestimmt werden Zum Beispiel wird die Periode durch die F CPU Konstante angegeben welche die Taktrate des Mikrocontrollers angibt Wenn man Makros nutzt m ssen die Parameter des Timers f r verschiedene Taktzyklen nicht berechnet werden und der Compiler konvertiert die Operationen mit Makros zu Konstanten Dadurch erh ht sich der Programmspeicher nicht und es wird auch nicht mehr Rechenzeit ben tigt Der WErt des Timers 20 ms zum ERreichen der vollen PWM Periode FCPU ist die Taktrate des Mikrocontrollers welche durch 50 Hz und 8 dividiert wird IE define PWM PERIOD F_CPU 8 50 Hal Mittlere Position der PWM des Servomotors 5 ms 20 ms Mittlere Position liegt bei 15 200 der vollen Periode Hi define PWM MIDDLE POS PWM PERIOD x 15 200 Ve Faktor zur Konvertierung von Prozenten in Perioden 100 to 100 1 wird addiert um sicherzustellen dass die Halbperioden die Grenzen von 1 ms und 2 ms erreichen oder etwas h her liegen ip define PWM RATIO PWM_PERIOD 20 2
51. ngerkreuzung simuliert Solange kein Schalter gedr ckt wird leuchtet eine gr ne LED f r die Autos Nach Bet tigung eines zuf lligen Schalters beginnt die gr ne LED f r drei Sekunden zu blinken daraufhin leuchtet die gelbe LED f r 3 Sekunden und die rote f r 10 Sekunden Nach dieser Sequenz leuchtet erneut die gr ne LED Es soll gez hlt werden wie oft ein Schalter bet tigt wurde Nur durch ein vollst ndiges L sen des Schalters wird das Herunterdr cken vollendet Das Ergebnis wird als Bin rcode auf den LEDs ange zeigt Das maximale Ergebnis bei drei LEDs ist 7 23 1 Die gr ne markiert das erste die gelbe das zweite und die rote das dritte Bit Durch Dr cken von Schalter 1 leuchten LED 1 und LED 3 Dr ckt man 52 leuchtet die gelbe LED Schalter 3 sorgt daf r dass keine LED leuchtet Diese Operation muss unter direkter Verwendung von Registerwerten also ohne Nutzung der HomeLab Bibliothek durchgef hrt werden Es soll gez hlt werden wie oft ein Schalter gedr ckt wurde Das Ergebnis wird durch Blinken der LEDs dargestellt Nach jeder Bet tigung des Schalters wird die Anzahl der blinkenden LEDs um eins erh ht Der Schalter kann zuf llig ausgew hlt werden Damit die LED blinkt muss eine Unterfunktion genutzt werden deren Parameter die blinkenden LEDs z hlt Wird S1 bet tigt sendet die rote LED durch Blinken SOS im Morsecode Dr ckt man S2 sendet die gelbe LED COD und durch Dr cken von S3 zeigt die gr n
52. nnen einfach vermieden werden wenn man alle Interrupts verbietet bevor man mit empfindlichen Da ten arbeitet Das generelle Verbot von Interrupts ist einfach da hierzu lediglich ein Register SREG ge ndert werden muss Nachdem der kritische Teil des Pro gramms ausgef hrt wurde k nnen Interrupts einfach wieder zugelassen wer den wodurch dann s mtliche Interrupts die zur ckgehalten wurden ausgef hrt werden Example Angenommen in diesem Programm wird eine 16 Bit Variable verwendet wel che sowohl von dem Hauptprogramm als auch vom Interrupt ge ndert wird und der Wert dieser Variable wird sp ter einer anderen Variable gegeben include lt avr interrupt h gt Globale 16 Bit Variable x und y unsigned short x y Ein zuf lliger Interrupt der den Wert von x ndert ISR XXX_vect X 0x3333 int main x einen Wert geben x S OI Interrupts generell erlauben sei y erh lt Wert von x Y Ss Das Programm selbst ist sehr einfach zuerst bekommt die Variable x den Wert 0x1111 und spater wird dieser an y weitergegeben Wenn ein Interrupt zwischen diesen beiden Operationen auftritt bekommt x einen Wert von 0x3333 Logisch gesehen kann y somit zwei m gliche Werte am Ende des Programms haben 34 3 6 Digitale Inputs Outputs allerdings existiert bei einem 8 Bit AVR noch eine dritte M glichkeit Hierzu kommt es da die 8 Bit Architektur zur Verarbeitung von 16 Bit Daten 2 Takt
53. optimale L sung f r die gestellte Aufgabe eine Plattform auf zwei R dern mit zwei separaten Motoren Die weitere Arbeit besteht in der Entwicklung der gew hlten L sung in ein reales System Mechanik Die Mechanik wurde so einfach wie m glich gehalten wobei dem Prinzip der Modularit t gefolgt wurde Front und Heckstossstange sind identische Module Die Elektronik beseteht aus drei Modulen welche ber einander platziert werden und mit einfachen Flachbandkabeln verbunden werden Dar ber hinaus wird so sicher gestellt dass die Module relativ einfach ausgewechselt werden k nnen Die Motoren entstammen dem HomeLab kit Motoren mit einem integrierten Drehzahlminderer und Coder welche direkt mit den Antrieb des Motors verbunden sind Es wurden Modellflugzeugr der benutzt da diese sehr leicht und robust sind 233 7 Beispielprojekt Um die Konstruktion zu vereinfachen sind Boden und Dachplatte identisch Die Platten haben L cher damit unterschiedliche Ger te an der Dachplatte angeschlossen werden k nnen Neben der Elektronik passt auch eine Batterie problemlos zwischen den Platten Y Abbildung 7 3 Erstes 3D Modell des Roboters und Anordnung seiner Komponenten Die Sto stangen des Roboters werden separat geplant und sind mit Ber hrungs und Linienfolgesensoren ausgestattet Die Sto stange wird aus PCBs hergestellt und verf gt dadurch ber Elektrizit t Die Linienfol gesensoren werden direkt auf die Sto stange der Bode
54. rm bung Der Widerstand des Potentiometers soll auf dem LCD in Ohm angezeigt werden Der nominale Wert des Widerstands betr gt 5 kO F r Anf nger 1 Der Widerstand des Potentiometers wird im Bereich von 0 Q 999 2 in Ohm dargestellt und im Be reich von 1000 O 5000 Q in kOhm Der nominale Wert des Widerstands betr gt 5 kQ Das Ergebnis wird mit korrekten Einheiten und Symbolen dargestellt 2 Messung der Distanz zu einem Objekt Die Distanz zu dem Objekt wird mit einem Infrarot Entfer nungsmesser gemessen wenn der Schalter S1 bet tigt wird W hrend der Messung blinkt eine gelbe LED Ist das Objekt weiter als 50 cm entfernt leuchtet eine gr ne LED ist es weniger weit entfernt die rote 3 Die Distanz zu dem Objekt wird mit einem Infrarot Entfernungsmesser gemessen Das Ergebnis wird im bin ren System mit den 3 LEDs dargestellt LED1 LED2 und LED3 Vergr ert sich die Entfer nung muss auch der angezeigte Wert gr er werden Als Skala sollte etwa 1 dm 1 Bit verwendet werden 4 Der Wert des NTC Temperatursensors wird auf dem LCD in Grad angezeigt Durch Bet tigung des Schalters S2 k nnen die Einheiten ausgew hlt werden Kelvin K Fahrenheit F und Celsius C Die Temperatur wird in korrekten Einheiten und Symbolen angezeigt 5 Mit dem Lichtintensit tssensor werden schnelle nderungen der Lichtintensit t festgestellt Licht an ausschalten Verl uft die nderung schnell blinkt die rote LED f
55. static pin dcmotor_pins 4 2 PIN B 7 PIN B 4 PIN D 1 PIN D 0 PIN D 7 PIN D 6 PIN D 5 PIN D 4 1 Hl Steuerung des gew hlten DC Motors zulassen Wy void dcmotor_init unsigned char index pin_setup_output dcmotor_pins index 0 208 6 6 Motoren pin_setup_output dcmotor_pins index 1 Lay Festlegung der Funktion und Richtung des gew hlten DC Motors Ni void dcmotor_drive unsigned char index signed char direction pin_set_to demotor_pins index 0 direction lt 0 pin_set_to dcmotor_pins index 1 direction gt 0 Mit dem Array demotor_pins aus der Bibliothek werden die Kontrollpins der vier Motorcontroller bestimmt Bevor der Motor gesteuert wird muss die Funktion demotor_init mit der Nummer des Motorcontrollers 0 3 benannt werden Sie setzt die Pins als Output F r die Steuerung ist die Funktion demotor_drive vorhanden der negative direction Parameter gibt die Richtung der Motordrehung an die andere Richtung wird mit dem positiven Parameter angegeben 0 dient dazu den Motor anzuhalten Das folgende Beispielprogramm steuert den ersten und zweiten Gleichstrommotor so dass sie jede Sekunde ihre Drehrichtung ndern Die Geschwindigkeit kann gesteuert werden wenn ein Kontrollpin mit einem PWM Signal moduliert wird Testprogramm f r den DC Motor aus dem DC Motorenmodul des HomeLab A include lt homelab module motors h gt inc
56. timer1_input_capture_flag_clear void void timer3_input_capture_flag_clear void 93 5 Robotic HomeLab Kit Resets timer 1 3 input capture flag Beispiel Im folgenden Programm wird Timer 0 im normalen Modus mit Overflowinter rupt gestartet include lt homelab timer h gt include lt avr interrupt h gt Overflow interrupt program ISR TIMERO_OVF_vect int main void Initializing of timer 0 in normal mode timer0_init_normal TIMERO_PRESCALE_32 Enabling timer 0 overflow interrupt timer0_overflow_interrupt_enable true Global interrupts enabling sei 5 4 6 Verz gerung Dieser Teil der Bibliothek enth lt die ben tigten Funktionen um in einem Pro gramm mit Hilfe von Software Algorithmen oder Hardwaretimern Verz gerun gen zu generieren Verz gerungen blocken keine Interrupts daher werden Soft wareverz gerungen durch Interrupts unterbrochen Verz gerungsfunktionen sind nicht vor kompiliert sodass sie mit verschiedenen Taktfrequenzen genutzt wer den k nnen 94 5 4 HomeLab Bibliothek Funktionen void sw_delay_ms unsigned short count Softwareverz gerung in Millisekunden ms F r diese Funktion wird ein Compiler Optimierungsmodus ben tigt Parameter count Verz gerungszeit in ms O bis 65535 ms void sw_delay_us unsigned short count Softwareverz gerung in Mikrosekunden us F r diese Funktion wird ein Compiler Optimierungsmodus ben tigt P
57. weniger widergeben separiert werden kann das Ergebnis als 8 Bit Wert ausgelesen werden Eine solche Kombination nennt man left aligned result Dar ber hinaus kennzeichnet right aligned result jene Kom bination bei der beide Register gelesen werden und der Wert ein 10 Bit Format hat Ein normaler AVR verf gt ber 8 analoge Spannungs Input Kan le Die Mikro controller der ATtiny Serie besitzen weniger einige ATmega haben 16 allerdings existiert immer nur ein ADC Um verschiedene Inputs nutzen zu k nnen hat das Ger t einen eingebauten Multiplexer Der Input des Multiplexer kann durch Nutzung eines speziellen Registers definiert werden Die ADC Einheit weist dar ber hinaus noch weitere Eigenschaften auf Der Sleepmodus des Prozessors wird f r die Umwandlung genutzt um St rungen zu verringern Au erdem gibt es die Option zur Nutzung einer internen festen Vergleichsspannung gew hn lich 2 65 V bei manchen Modellen aber 1 V Beispiel Aufgabe Messen Sie die Spannung des ADC Kanals 3 eines ATmega128 Der Spannungsbereich liegt bei 0 5 V und das Ergebnis sollte 8 Bit pr zise sein include lt avr io h gt int main unsigned char result Wahle den AREF Pin zum Vergleich der Spannung es wird angenommen dass AREF mit der 5V Stromversorgung verbunden ist Wahle Kanal 3 im Multiplexer r ordne das Ergebnis links an ADMUX 1 lt lt REFSO 1 lt lt ADLAR 3 40 3 9 Counter
58. werden Robotik Robotik ist die Wissenschaft welche die Technologie und das notwendige Wis sen zum Bau von Robotern miteinander kombiniert Aufgrund des rasanten tech nologischen Fortschritts ist der Begriff Roboter der als automatisierte Maschi ne den Menschen ersetzt nicht mehr klar definiert Roboter sind nicht l nger nur humanoide Roboter Roboterh nde in Fertigunggstra en Autopiloten in Flug zeugen aus lebenden Neuronen bestehende k nstliche Intelligenz oder einfache Reinigungsroboter der Begriff Roboter bezeichnet vielmehr auch Computer software welche f r den Menschen gedachte Aufgaben ausf hrt z B Berichte erstellen Es ist allseits bekannt dass Roboter gebaut werden um den Menschen bei bestimmten Aufgaben zu ersetzen Eine Vielzahl von Gr nden rechtfertigt dieses gef hrliche Arbeitsbedingungen g nstigere Produktion monotone Ar beit bei der Menschen zu Fehlern neigen neue Systeme die so komplex und zeitkritisch sind dass automatisierte Maschinen diese besser erledigen k nnen als Menschen 10 Mikrocontroller in der Robotik Aufgrund der Weitl ufigkeit der Robotik konzentrieren wir uns in diesem Buch auf die Hobby Robotik Diese Systeme sind nicht allzu komplex und es ist m g lich sie eigenst ndig zu implementieren H ufig genutzte Mikrocontroller in der Robotik sind Atmel AVR Mikrocontroller ATmega ATtiny etc Microchip Technology PIC Mikrocontroller PIC16 PIC24 etc M
59. wichtig da sie die M glichkeit bie ten eine Vorlesung erneut zu sehen sollte etwas unklar geblieben oder der Stu dierende nicht in der Lage gewesen sein an der Vorlesung teil zu nehmen Die 60 5 2 Robotik unterrichten Einf hrungsvorlesung gibt eine bersicht ber das jeweilige Problem und mit Hilfe eines Lehrers kann dann ein praktisches Beispiel durchgegangen werden Der theoretische Teil wird durch das Lehrbuch und das praktische bungsbuch unterst tzt Nach der Einf hrungsvorlesung wird der praktische Arbeitsteil realisiert Die Praktische Arbeit besteht anfangs darin die Codebeispiele auszuf hren und sp ter darin die Beispiele entsprechend der bung zu ver ndern Daraufhin folgen komplexere bungen welche durch einen Lehrer jeder Person oder jedem Team individuell aus dem bungsbuch zugeteilt werden Die Ergebnisse der praktischen Arbeit werden in einem Bericht zusammenge fasst und dem Betreuer zugeschickt Falls die Entwicklungsumgebung eine au tomatische Berichterstattung unterst tzt so kann diese anstatt dem Senden einer Email genutzt werden Zus tzlich zu den Textberichten wird au erdem die HEX Datei f r die Arbeitsmaschine eingebunden Der Bericht umfasst typischerwei se die Beschreibung der Arbeit und einen vollst ndig kommentierten Quellcode der L sung 5 2 Robotik unterrichten Es ist allseits bekannt dass die Informations und Telekommunikationstechno logie ICT in das t gliche Leben vo
60. 0A21YK Sensors Linearisierung der Sharp Entfernungsdaten 6 5 5 Ultraschall Entfernungsmesser Notwendiges Wissen pl Controller module N lcd a Counters Timers 2 Timers 2 Alphanumeric LCD 2 Sensors Theorie Abbildung 6 25 Ultraschall Entfernungsmesser SRF04 Ein Ultraschall Entfernungsmesser bestimmt die Entfernung zu einem Objekt indem er die Zeit misst die ein Schall zu einem Objekt hin und zur ck ben tigt Die Frequenz des Ger usches liegt im Bereich des Ultraschalls Dies garantiert dass die Schallwelle geb ndelt gelenkt wird da sich hochfrequenter Schall weniger in der Um gebnung zerstreut Ein typischer Ultraschall Entfernungsmesser besteht aus zwei Membranen Eine Membran produziert den Schall die andere empf ngt das Echo Im Grunde besteht er also aus einem Lautsprecher und einem Mikrophon Der Schallgenerator generiert kurze wenige Perioden umfassende Ultraschallimpulse und 198 6 5 Sensoren startet den Timer Die zweite Membran registriert die Ankunft des Echos und stoppt den Timer Mit der Zeit des Timers ist es m glich die zur ckgelegte Entfernung des Schalls zu berechnen Die Entfernung zu einem Objekt entspricht der H lfte der zur ckgelegten Entfernung des Schalls Abbildung 6 26 Funktionsweise eines Ultraschall Entfernungsmessers Der Ultraschall Entfernungsmesser findet im t glichen Leben eine Vielzahl von Anwendungsm glichkeiten Er wird beispielsweise als Ersatz f r Ma b nder auf Bau
61. 1 ms markiert die eine u erste Position 2 ms die Andere 1 5 ms markieren die Mittel position des Servomotorrotors Traditionelle RC Servomotoren sind auch bekannt als analoge Servomotoren Dies liegt daran dass in dem letzten Jahrzehnt so genannte digitale Servomotoren auf den Markt kamen Der Unterschied zwischen beiden besteht darin dass analoge RC Servomotoren mit einem 50 Hz PWM Signal gesteuert werden digitale RC 211 6 Praktische Beispiele Servomotoren durch einen Mikrocontroller mit einem h herfrequenten Signal Das Inputsignal ist das Gleiche jedoch ist durch die h here Modulationsfrequenz wird eine schnellere und pr zisere Positionsbestimmung erm glicht bung Auf dem Platine des HomeLab Motormoduls sind 2 Anschl sse f r RC Servomotoren vorhanden Die PWM Enden der Stecker sind an den Pins PB5 und PB6 am Mikrocontroller angeschlossen dessen sekund re Funkti on das Vergleichen der Einheiten A und B von Timer 1 ist Timer 1 kann ein PWM Signal erzeugen und daher ist das Steuern eines Motors sehr einfach zu programmieren Die einzige Schwierigkeit besteht im Einstellen des Timers Timer 1 muss in den PWM Produktionsmodus eingestellt werden wobei der maximale Wert des Timers mit dem ICR Register bestimmt wird Durch nderung des maximales Wertes im Programm und im Taktgeber des Timers kann die pr zise PWM Frequenz zur Steuerung des Servomotors bestimmt werden Mit dem Vergleichs Register des Timers werden die L
62. 100 1 212 6 6 Motoren Einrichtung der Pins Hip static pin servo_pins 2 PIN B 5 PIN B 6 E hil Servomotor vorbereiten Hi void servomotor_init unsigned char index Pin des PWM Signals als Output pin_setup_output servo_pins index Einrichtung von Timer 1 Vorz hler 8 Schneller PWM Modus wobei TOP ICR OUTA und OUTB auf low im Vergleich timerl_init_fast_pwm TIMER1_PRESCALE 8 TIMER1_FAST_PWM_TOP_ICR TIMER1_FAST_PWM_OUTPUT_CLEAR_ON_MATCH TIMER1_FAST_PWM_OUTPUT_CLEAR_ON_MATCH TIMER1_FAST_PWM_OUTPUT_DISABLE Festlegung der Periode durch maximalen Wert timerl_set_input_capture_value PWM_PERIOD Festlegung der Postition des Servomotors Parameter der Position liegen zwischen 100 und 100 u void servomotor_position unsigned char index signed short position switch index case 0 timerl_set_compare_match_unitA_value PWM_MIDDLE POS position PWM RATIO break case 1 timerl_set_compare_match_unitB_value 213 6 Praktische Beispiele PWM MIDDLE POS position PWM RATIO break Das Beispielprogramm nutzt beschriebene Funktionen der HomeLab Bibliothek Am Anfang des Programms wird der erste PWM Signal Generator des Servomotors mit der servomotor_init Funktion gestartet Der Wert der Position des Servomotors wird durch die Kanalnummer 3 des Analog Digital Konverters ADC empfan gen an dem ein Po
63. 110 0b01101101 0b01111100 0b00000111 0b01111111 0b01100111 0b01111001 E wie Error IE Te Start der 7 Segment Anzeice i void segment_display_init void Set latch data out and clock pins as output pin_setup_output segment_display_latch pin_setup_output segment_display_data_out pin_setup_output segment_display_clock u Darstellung einer Ziffer auf der 7 Segment Anzeige u void segment_display_write unsigned char digit unsigned char map signed char i berpr fung der Ziffer if digit gt 9 digit 10 Ziffer wie Segmentkarte map segment_char_map digit 168 6 4 Anzeigen und Displays Latch Signal aus pin_clear segment_display_latch Senden von he Bits H herrangige zuerst for i 7 i gt 0 i Pin entsprechend Bitwert der Karte setzen pin_set_to segment_display_data_out bit_is_set map i Taktsignal high setzen pin_set segment_display_clock _delay_us 1 Taktsignal low setzen pin_clear segment_display_clock _delay_us 1 Latch Signal ein pin_set segment_display_latch Um Ziffern und den Buchstaben E darzustellen wird ein konstantes Array segment_char_map erstellt bei dem das Leuchten von allen acht Segmenten mit Bit 1 und das Ausschalten mit Bit 0 markiert wird Die Bits markieren von hoch zu niedrig von links nach rechts in Bin rform Segmente DP G F E D C B A D
64. 2 Delay 205 6 Praktische Beispiele Theorie E Abbildung 6 28 DC Motor Ein Gleichstrommotor mit permanenten Magneten wird h ufig f r die verschiedensten Anwendungen ge nutzt bei denen kleine Ausma e gro e Kraft und ein geringer Preis entscheidend sind Auf Grund ihrer hohen Geschwindigkeit werden sie oft mit einer bersetzung genutzt Um eine niedrigere Output Geschwindkeit und h heres Drehmoment zu erreichen VIP T Abbildung 6 29 Der perfekte Graph des Verh ltnisses von Geschwindigkeit V Stromstarke Kraft P Effizienz 7 und Drehmoment T eines DC Motors Gleichstrommotoren mit permanenten Magneten sind vom Aufbau her sehr einfache und ihre Bedienung ist relativ einfach Aber auch wenn die Kontrolle sehr einfach ist wird die Geschwindigkeit nicht pr zise ber das Steuersignal bestimmt weil hierauf noch viele andere Faktoren wie das Drehmoment und der Speisestrom einwirken Das Verh ltnis zwischen Drehmoment und Geschwindigkeit ist in einem idealen Gleichstrommotor linear Das bedeutet je h her das zu erzeugende Drehmoment ist desto geringer die Geschwindigkeit und desto h her der Strom in der Spule Gleichstrommaschinen nutzen Gleichstrom und brauchen eigentlich keine spezielle Kontrollelektronik da dienNotwendige Kommunikation im Motor selbst passiert Wenn der Motor arbeitet gleiten zwei statische Schleifb rsten an dem sich drehenden Kommutator und halten die Spannung an den Spulen Die R
65. 7 an Bus E um Input Floating zu verhindern PORTE l 1 lt lt PIN7 Setzt den Interruptmodus auf Logische nderung f r den Interrupt 7 im externen Interruptkonfigurationsregister EICRB 1 lt lt ISC70 Erlaube externen Interrupt 7 EIMSK l 1 lt lt INT7 38 3 8 Analog zu Digital Konverter Erlaube globale Interrupts sei Endlosschleife while 1 continue Verf gt der AVR ber ausreichend Pins ist es m glich zus tzlich zu einem Interrupt der von einem einzelnen Pin ausgel st wird eine ganze Gruppe an Pins zu nutzen um Interrupts durch logische Wert nderungen auszul sen Diese Interrupts werden einfach Pin change Interrupts genannt Sie l sen aus sobald mindestens der Wert von einem Pin in der Gruppe sich ndert 3 8 Analog zu Digital Konverter Analog zu Digital Konverter ADC transformieren einen analogen Spannungs wert in einen digitalen Wert Die erlaubte Spannungsreichweite am ADC Input eines AVR Microcontrollers liegt bei 0 5 5V Der digitale Wert ist 10 Bit gro und bis auf 2 Einheiten genau Der Fehler kann jedoch auch noch gr er sein wenn die Betriebsspannung nicht vor St rungen gesch tzt ist Der AVR hat se parate Betriebs und Vergleichsspannungs Pins f r den ADC Die separate Be triebsspannung tr gt dazu bei St rungen m glichst klein zu halten wobei sie sich nicht mehr als 0 3V von der Hauptbetriebsspannung unterscheiden darf Die Vergleichs
66. Aspekt deutlich der im Rahmen der Soft wareverz gerung nicht so einfach zu erkennen ist Auch wenn die Verz gerung der blinkenden roten LED 1000 ms betr gt ist die tats chlich ben tigte Zeit um einen Zyklus zu beenden l nger Das liegt daran dass die nderung vom LED Status die Angabe der Verz gerungsfunktion und das Beenden vom Zyklus einige Taktzyklen des Prozessors dauern Daher sieht es so aus als blinke die rote LED immer nach der gr nen Aus diesem Grund sollten Taktgeber oder andere pr zise Vorg nge nicht mit Verz gerungen sondern mit Timer Interrupts ausgef hrt werden 6 3 4 Aufgaben Ziel ist es ein Programm zu schreiben welches die unten genannten Aufgaben durchf hrt Aufw rm bung Lassen Sie die rote LED blinken Die Periode soll 10 Sekunden Halbperiode 5 Sekunden betragen Nutzen Sie eine Softwareverz gerungsfunktion mit der Sekundenanzahl als Parameter F r Anf nger 1 Zeigen Sie mit einer Genauigkeit von 100 ms auf dem LCD Display die Zeit zwischen der Bet tigung von 2 beliebigen Schaltern an Die Art der Zeitmessung k nnen Sie frei bestimmen 2 Wird Schalter S1 bet tigt wird die Blinkgeschwindigkeit aller 3 LEDs zweimal reduziert Durch Bet tigung von S3 blinken die LEDs doppelt so schnell und S2 setzt die Blinkfrequenz auf 1 Hz Nutzen Sie Verz gerungsfunktionen oder Interrupts die Interrupts sind schwieriger aber bei der Verwendung von Verz gerungsfunktionen wird eine zus tzliche
67. Aus der Taktfrequenz des Prozessors kann man errechnen wie weit das Programm z hlen sollte um eine Verz gerung hervorzurufen Eine Zahl von Null bis zum Wert der Taktfrequenz des Pro zessors in Hz sollte theoretisch eine Verz gerung von einer Sekunde erzeugen Aus verschiedenen Gr nden ist dieses jedoch praktisch nicht ganz so einfach Wenn der Prozessor des Microcontrollers mit Nummern rechnet deren Bin rform so gro ist wie der innere Bus AVR hat 8 Bits dann braucht es einen Taktzyklus des Prozessors um eine arithmetische Operation wie z B 1 zu einem Wert zu addieren durchzuf hren Soll mit tausenden oder millionen gerechnet werden muss die Nummer 16 oder 32 Bit gro sein und ein 8 Bit Prozessor ben tigt zur Berechnung mehr als eine Taktfre quenz Daher sollte man sich mit der Arbeitsweise und insbesondere den Befehlen des Prozessors auskennen wenn man mit gro en Werten arbeitet Wenn man in fortgeschrittenen Sprachen programmiert z B C werden die Programme nicht auf Basis des Befehls geschrieben um eine Softwareverz gerung zu erzeugen Vielmehr muss man auch den Compiler ken nen welcher das Programm zu Maschinencode konvertiert Davon h ngt ab wie viele Befehle und Phasen es braucht um eine arithmetische Operation durchzuf hren Das wird durch mehrere Gr nde komplexer durch die F higkeit des Compilers das Programm in Maschinencode umzuwandeln z B dadurch dass der Maschi nencode f r Speicherverbrauch optimiert
68. Bez ge zu den betreffenden theoretischen Abschnitten dargestellt 5 Im f nften Kapitel finden sich Tipps f r die gemeinsame Arbeit an Problem stellungen Hier wird illustriert wie man gemeinsam entwickelte Konzepte im plementiert sowie pr sentiert und wie Berichte verfasst werden Dabei sind jene Themen welche in einem Teambericht enthalten sein sollen besonders hervorge hoben Weiterhin wird an dieser Stelle auch ein Beispielprojekt vorgestellt wel ches als Muster zum Erstellen eines pr zisen Berichts f r eigene Projekte dienen soll Wir hoffen dass das Buch eine gute Hilfe sowohl f r neue als auch f r erfahrene Mikrocontroller und Robotik Enthusiasten darstellt und vielen Menschen diese Technologie n her bringt Bochum im Sommer 2011 Sven Seiler 2 Mikrocontroller und Robotik Mikrocontroller Abbildung 2 1 The first microcontroller in the world Intel 8048 Mikrocontroller sind im Wesentlichen Computer welche auf einen einzelnen Chip mit integriertem Schaltkreis positioniert werden und aus einer Speiche reinheit einem Prozessor sowie Input Output Schnittstellen bestehen Sie wer den f r eine bestimmte Aufgabe programmiert was bedeutet dass sobald eine nderung oder Verbesserung der Aufgabe n tig ist ein neues Programm auf dem Chip installiert werden muss Eigenschaften welche den Mikrocontroller von anderen Computern PC Laptop Server etc unterscheiden sind S mtliche Funktionen sind auf eine
69. Centimetern gemessenen Ergebnisse werden auf dem LCD abgebildet Hi include lt stdio h gt include lt homelab adc h gt include lt homelab delay h gt include lt homelab module sensors h gt include lt homelab module lcd_alpha h gt Mi Hauptprogramm 196 6 5 Sensoren Hf int main void unsigned short value signed short distance char text 16 External sensor selection pin ex_sensors PIN G 0 pin_setup_output ex_sensors pin_set ex_sensors Initialisierung des LCD Icd_alpha_init LCD_ALPHA_DISP_ON L schen des LCD lcd_alpha_clear Name des Programms lcd_alpha_write_string Distance sensor Installation des ADC adc_init ADC REF AVCC ADC_PRESCALE 8 Endlosschleife while true Auslesen des viermal gerundeten Wertes der Outputspannung des Sensors value adc_get_average_value 0 4 Konvertieren des ADC Wertes in Entfernung distance ir_distance_calculate_cm GP2Y0A21YK value War die Berechnung erfolgreich if distance gt 0 Konvertieren von Entfernung in Text sprintf text d cm distance else Text f r eine unbekannte Entfernung erzeugen sprintf text cm Dr 6 Praktische Beispiele Anzeige des Textes am Anfang der zweiten Zeile auf dem LCD Icd_alpha_goto_xy 0 1 Icd_alpha_write_string text Break sw_delay_ms 500 Zus tzliches Material Graph des Sharp GP2Y
70. Controllermodul befinden sich LEDs auch auf der digtalen I O Modulplatine Sie sind elektrisch genau so angeschlossen wie auf dem Control lerboard die Kathode ist also am AVR Pin angeschlossen Die rote LED ist am PC5 Pin angeschlossen die gelbe am PC4 und die griine am PC3 Das auf der HomeLab Bibliothek basierende Beispielprogramm sieht folgenderma en Ha HomeLab Digitales i o Modul LED Testprogramm include lt homelab pin h gt Va LED Pin Konfiguration Hi pin led_red PIN C 5 pin led_yellow PIN C 4 pin led_green PIN C 3 YN Hauptprogramm Ye int main void Konfiguriere LED Pins als Output pin_setup_output led_red pin_setup_output led_yellow pin_setup_output led_green 142 6 2 Digitale Input Output Pins Aufleuchten der gr nen LED pin_clear led_green Ausschalten der roten und gelben LED pin_set led_red pin_set led_yellow Diskussion 6 2 2 Schalter Notwendiges Wissen N User Interface Module Registers hd Digital Inputs Out puts 2 Pins he Light emitting Diode Theorie Ein Schalter ist ein elektromagnetisches Ger t welches einen elektrischen Schalt kreis verbindet oder trennt Es gibt viele Typen von Schaltern die am weitesten verbreiteten sind einfache mechanische Schalter bei denen elektrische Anschl s se mechanisch geschaltet werden Sind die Anschl sse verbunden wird der elek trische Schaltkreis geschlossen und Strom kann dur
71. D Pin enth lt Im Hauptprogramm wird dieser Pin mit pin_setup_output als Output gesetzt Danach wird der Pin low gesetzt pin_clear Das Ergebnis die LED leuchtet Im zweiten Beispiel werden keine Variablen genutzt Um die LED als Output zu markieren und zum Leuchten zu bringen werden die Datenrichtung des Port B und die Output Registerwerte ver ndert Der Leser der mehr ber den AVR wei be merkt dass in beiden Beispielen kein Befehl n tig ist um die LED zum leuchten zu bringen da der Standardoutputwert des AVR 0 ist Aus Gr nden der Voll st ndigkeit wird es jedoch hier beschrieben Was ist der Unterschied zwischen dem Gebrauch von Bibliothek und Register Der Unterschied liegt im Komfort Die Bibliothek ist einfacher weil man die Re gisternamen und deren Auswirkungen nicht kennen muss Der entscheidende Vorteil der Bibliothek ist jedoch die Anpassungsf higkeit Arbeitet man mit Re gistern m ssen im Programm stets die Registernamen und Bitmasken ge ndert werden um einen Pin zu ndern Nutzt man die Bibliothek muss dieses nur am Anfang bei Initialisierung der Variable erfolgen Die Nutzung von Registern hat jedoch einen entscheidenden Vorteil Die Nutzung eines Pins erfolgt direkt und nicht ber den Programmspeicher und zeitfressenden Funktionen Jedoch sind die neuren AVR GCC Kompiler Versionen so schlau dass sie die Bibliotheks funktionen zu direkten Befehle f r die Registermanipulation transformieren so als w rde man die Regis
72. Define F_CPU symbol frequency of the cpu see Common tab OK Set as default Cancel e _ Cancel 4 Konfigurieren Sie das Programmierger t durch ffnen von Project Confi gure Programmer Wahlen Sie AVRDUDE als Programmierger t Setzen Sie im AVRDUDE Tab den Typ des Programmierger tes auf jtagmkI und den Anschluss port auf dev ttyUSBx wobei x der Portindex ist Stellen Sie diese Konfigura tion ebenfalls als Standard ein 131 6 Praktische Beispiele Programmer configuration Choose programmer UISP General UISP STK500 settings AVR DUDE C Override RS 232 baud rate 2 7 Specify JTAG STK500v2 bit clock period X Specify programmer type jtagmkl X Specify connection port dev ttyUSBO _ Specify external config file Disable auto erase for flash memory Do not write anything to the device test mode _ Override invalid signature check Count of erases in EEPROM Set erase o 5 Set OK Set current settings as default 5 Ordnen Sie schlie lich die Fenster im KontrollerLab so an wie es angenehm ist und bereiten Sie sich darauf vor das erste Programm zu schreiben file home peeter Dokumendid AVR Homelab blinkingLED blinkingLED c KontrollerLab File Edit View Project Wizards Debug Tools Settings Help Window x Bl x Raed weve ARAS ASD POOROMF A Pee UOOBTS GOR
73. Gleichung x x 1 zw lfmal verwendet Wie wird eine Endlosschleife in C geschrieben Nennen Sie zwei Beispiele Welcher Variablentyp wird in C verwendet um positive Werte zwischen 7 und 154 dazustellen Welches Register legt die Richtung eines Anschlusses fest Nennen Sie ein Beispiel zur Konfiguration von Input und Output eines Anschlusses Welche Methoden gibt es um das Zur ckspringen von Kontakten zu sowie der durch Flimmern her vorgerufenen falschen Verbindungen zu verhindern Geben Sie L sungsbeispiele unter der Nutzung von Hard und Software Was versteht man unter einer Bitverschiebung Nennen Sie ein praktisches Beispiel und erkl ren Sie dieses Warum werden pull up Widerst nde in Schalter verwendet Wie ist deren Widerstand festgelegt Errechnen Sie den Widerstand f r die regulierende LED Stromst rke die Spannung betr gt 5 V die Durchlassspannung der LED betr gt 2 7 V und die Stromst rke 30 mA Timer und Verz gerungen 153 6 Praktische Beispiele Dieses Kapitel beschreibt die M glichkeit die Zeit der Mikrocontroller durch Timer und Verz gerungen zu kontrollieren Dies ist hilfreich f r alle Anwendungen die eine Zeitmessung ben tigen Unterbrechungen ma chen oder f r pr zise Steuerprozesse Alle Timer und Verz gerungen sind hnlich im Aufbau jedoch k nnen sie voneinander unterschieden werden Timer sind physikalische Module des Mikrocontrollers welche un abh ngig vom Prozessor des Mikrocont
74. Gleichung ist vom Ohm schen Gesetz abgeleitet mit I U1 Ri R2 und U2 1 R2 Spannungsteiler werden h ufig im Zusammenhang mit Widerstandssensoren Fotowiderstand temperaturgesteuerter Widerstand etc verwendet wobei ei ner der Widerst nde durch einen Widerstandssensor ersetzt wird Dadurch wird die Widerstands nderung des Sensors einfach in eine Spannungs nderung trans formiert welche kompatibel zu dem analogen Input des Mikrocontrollers ist 55 5 Robotic HomeLab Kit 5 Robotic HomeLab Kit Das auf dem ATmega128 Mikrocontroller basierende Mechatronik und Robotik HomeLab ist eine Zusammenstellung von Modulen in einem tragbaren Koffer Es erm glicht die Durchf hrung diverser Mechatronik und Robotikexperimen te und bungen angefangen bei einem Blinklicht bis hin zur Erstellung komple xer Ger te In erster Linie richtet sich das HomeLab an Schulen da es zus tzlich zur Hardware methodologisches Material sowie bungen mit Musterl sungen enth lt Das HomeLab wurde in eine Web Umgebung integriert welche Sch lern und Lehrern die gegenseitige Interaktion erm glichen soll Kurz gefasst ist das HomeLab kit eine Sammlung mobiler Werkzeuge mit dem Zweck zu Hause in der Schule oder am Arbeitsplatz lernen und ben zu k nnen Das HomeLab kit wurde von der Tallinn University of Technology sowie estni schen Unternehmen in Kooperation mit europ ischen Partneruniversit ten und der Unterst tzung des Leonardo da V
75. Inhaltsverzeichnis 2 Mikrocontroller und Robotik 3 AVR Mikrocontroller 3 1 Einf hrung zu see ele ale oe ewe OE en a op a A u Bee Ber See ee ee Sw oe Be 3 3 Architektur aoid ao mm onen ee ee ete sade es EE paa ee a os ee e der le eros ee ee So are re 3 9 Counters Timers 2 2 2 2 Ho onen 310 USAR Toco ira A a a ne ao 4 Elektronik PER EE E A Een Fee E SE N es abs dl Tea DR Fi eee a e od o Beet 5 Robotic HomeLab Kit 5 1 Ganzheitliches Konzept der Robotik A eee ne ea eee a ee ere Sate bi AR rd Ber 5 4 _HomeLab Bibliothek 2 22 2 2 En nn nn 5 4 1 Bitweise Operationen oss eee corea as 5 427 Pins deh Sean ar ae ee nee a 5 4 3 Analog Digital Wandler lt 5 4 4 Serielles Interface 2 2 2 2 Comm Inhaltsverzeichnis 6 545 Mer caida a ea a Be 85 5 4 6 Verz gerungj wu de ee et En ne nen a a es 94 5 4 7 7 Segment LED Display esta exis wa x ar u amp u 96 548 Alohanumerisches DCD 2 0446 e e 97 549 Graphisches UCD corset 99 5 4 10 Sensoren 22 2 m Hm m nn 101 5 4 11 Motores 103 Praktische Beispiele 107 A AAA oe ey OS BA p h OO ew ES 109 6 1 1 Installationsanweisung f r Windows 110 6 1 2 Die Softwareumgebung f r Linux 124 6 2 Digitale Input Output Pins zus sus ee ee ee eH 136 62 1 Light emitting Diode LED 2 45 s ses tee ee x ea 137 6 2 2 Schalterl o 143 6
76. MERn_OVF_vect where n represents 0 or 2 Parameters enable true to enable interrupt false to disable bool timer0_overflow_flag_is_set void bool timer2_overflow_flag_is_set void Checks timer 0 2 overflow flag Parameters Returns true when overflow has happened false when not void timer0_overflow_flag_clear void void timer2_overflow_flag_clear void Resets timer 0 2 overflow flag void timer1_init_normal timer1_prescale prescale void timer3_init_normal timer3_prescale prescale Initializes timer 1 3 in normal mode In this mode timer counts from 0 to 65535 including Overflow interrupt can be used Parameters prescale Prescaler void timer1_init_ctc timer1_prescale prescale timer1_ctc_top top 89 5 Robotic HomeLab Kit void timer3_init_ctc timer3_prescale prescale timer3_ctc_top top Initializes timer 1 3 in CTC Clear Timer on Compare Match mode In this mode timer counts to specified top value Overflow interrupt can be used Parameters prescale Prescaler top Timer top value selection Actual value must be specified with register selected as a top value holder void timer1_init_fast_pwm timer1_prescale prescale timer1_fast_pwm_top top timer1_fast_pwm_output_mode output_a timer1_fast_pwm_output_mode output_b timer1_fast_pwm_output_mode output_c void timer3_init_fast_pwm timer3_prescale prescale timer3_fast_pwm_top top timer3_fast_pwm_output_mode output_a t
77. MPARATOR 3 Other Files E 800T_LOAD MERT 3 E EEPROM QEXTERNAL_INTERRUPT JE TAG y E misc 412 PORTA 4 _ A A y Name Address Valu ENE SP MCUCR 0x35 0x55 A off Y MCUCSR 0x34 0x54 Bjosccal na 0x6F labor1 c db E RAMP 0 3B 0x58 Build mE SP 0x3D 05D 4 ea SREG Dx3F 0x5F xov Dx3C 0x5C a BB xMcra na 0x6D xMcrB na 0x6C El Build Message A Find in Files BBreakpoints and Tracepoints 4 gt ATmegal28 JTAG ICE Auto in13 col1 CAP NUM OVA 5 Vor der ersten Kompilierung m ssen einige Parameter des Projekts einge stellt werden Die wichtigen Parameter sind die Taktfrequenz des Controllers und Optimierungsmethode Der HomeLab Controller hat eine Frequenz von 14 7456 MHz 14745600 Hz Sie kann in den Projekteinstellungen in Hz nicht MHz an gegeben werden Project Configuration Options General Die Optimierungs methode sollte Os sein falls keine andere Methode ben tigt wird 116 6 1 Anfang Active Configuration default y Edit Configurations Use External Makefile a 1 Target name must equal project name 2 Clean rebuild support requires clean target En 3 Makefile and target must exist in the same folder I General Include a Output File Name laborl elf r Output File Directory default 7 Libraries Device atmegal 28 y IV Unsigned Chars funsigned char Y g 4
78. Schrittmotor Die Funktion ist blockierend bis sie erf llt ist bis alle Schritte durchgef hrt wurden Pa rameter index Index des Motorencontrollers 0 oder 1 direction Rotationsrichtung 1 oder 1 num_steps Z hlen der Halbschritte speed Zeit eines einzelnen Schritts in Millisekunden void bipolar_init void Initialisiert den Controller des bipolaren Schrittmotors void bipolar_halfstep signed char direction unsigned short num_steps un signed char speed Befehl zum Halbschrittbetrieb f r bipolaren Schrittmotor Die Funktion ist blockierend bis sie erf llt ist bis alle Schritte durchgef hrt wurden Para meter direction Rotationsrichtung 1 oder 1 num_steps Z hlen der Halbschritte speed Zeit eines einzelnen Schritts in Millisekunden void servomotor_init unsigned char index Initialisiert eine der PWM Signal generierenden Einheiten eines Servomo tors des ATmega128 Timers 1 Das PWM Signal betr gt 50 hz bei einer high period of 1 5 ms 0 5 ms Parameter 5 4 HomeLab Bibliothek index Index des Servomotors 0 oder 1 void servomotor_position unsigned char index signed short position Takt des Servomotors mit Kontrollbefehl Die Position eines Servomotors ver ndert sich wenn dieser betrieben wird Wird er gedreht ver ndert sich seine Drehzahl Parameter index Index des Servomotors 0 oder 1 position Position oder Drehzahl 100 bis 100 Bei 0 st
79. Stellen Sie sicher dass es korrekt am JTAG Anschluss angeschlossen ist Kabel zeigt vom Board weg siehe Abbildung Schlie en Sie nun die Stromversorgung an eine kleine gr ne LED sollte leuchten wenn alles korrekt angeschlossen ist 118 6 1 Anfang F gen Sie nun folgenden C Code ein include lt avr io h gt include lt homelab delay h gt int main void Pin PB7 als Output DDRB 0x80 Endlosschleife while true Invertierung Pin PB7 PORTB 0x80 hw_delay_ms 500 OB GS A AO ES Program Build Build and run Abbildung 6 1 Kompilierung und Schalter des Programmiergerates Kompilieren Sie das Projekt mit dem Build Befehl Taste F7 Stellen Sie sicher dass die Kompilierung erfolgreich ist Daf r sollte folgende Nachricht im Nach richtenfenster stehen Build succeeded with 0 Warnings 2 ffnen Sie das Controllerfenster Tools Program AVR Auto Connect Stellen Sie sicher dass der Tab Program ge ffnet ist 119 6 Praktische Beispiele JTAG ICE in JTAG mode with ATmega128 of xj Main Program Fuses LockBits Advanced HW Settings Hw Info Auto m Device Erase Device IV Erase device before flash programming IV Verify device after programming Flash Use Curent Simulator Emulator FLASH Memory Input HEX File RE eal Program Verify Read M EEPROM Use Current Simulator Emulator EEPROM Memory Input HE
80. Theorie Abbildung 6 33 Schrittmotor Schrittmotoren k nnen generell in unipolare und bipolare Schrittmotoren eingeteilt werden Unipolare Schritt motoren haben charakteristische Windungen welche die zwei Spulen in vier unterteilen Schrittmotoren haben keine eingebauten B rsten oder Elektronik d h jegliche Kommunikation muss extern erfolgen Der am meis ten benutzte Kommutationstyp ist der offene Regelkreis open loop Modus der Der Schrittmotortreiber l dt die Spulen nach einem bestimmten Muster nutzt aber kein Feedback Schritte k nnen so verpasst werden falls die Motorwelle eine Drehmoment berladung erf hrt Verpasste Schritte verursachen ungenaue Positio nierung Bipolare Schrittmotoren haben normalerweise vier Dr hte und zwei separate Spulen im Inneren Sie hneln den unipolaren Schrittmotoren stark Unipolare Schrittmotoren k nnen als bipolare Schrittmotoren genutzt werden aber nicht umgekehrt Schrittmotoren werden oft in Applikationen genutzt die Genauigkeit ben tigen Anders als Gleichstrommoto ren haben Schrittmotoren weder B rsten noch Kommutatoren Sie haben verschiedene unabh ngige Spulen welche durch externe Elektronik Treiber angetrieben werden Um den Rotor anzutreiben werden die Spulen Schritt f r Schritt umgeschaltet ohne Feedback Das ist der Nachteil des Schrittmotors Bei mechanischer ber ladung wenn der Rotor nicht rotiert werden so die Schritte durcheinander gebracht und die Bewegung wird
81. Verz gerung durch die Filterfunktion der Schalter auftreten 3 zeige die Druckfrequenz von Schalter S1 auf dem 7 Segment LED Display in Hz s Die Anzeige der Frequenz muss nach unten mit 0 und nach oben mit 9 begrenzt werden 4 Wird Schalter S1 gedr ckt wird z hlt das Programm die Sekunden von 60 bis 0 herunter und schaltet dann die rote LED ein Bei S2 betr gt die Zeit nur 30 s anschlie end wird die gelbe LED eingeschal tet Die Zeit bei Bet tigung von S3 betr gt 10 s dann leuchtet die gr ne LED Alle Prozesse m ssen gleichzeitig stattfinden Die LEDs schalten sich aus wenn der dazugeh rige Schalter bet tigt wird 5 Zeigen Sie die Zeit auf dem LCD wie folgt an hh mm ss Nutzen Sie den Hardwaretimer 1 mit In terrupts die Zeit muss mit den Schaltern eingestellt werden k nnen Es sollten drei Schalter genutzt werden S1 erh ht die Stunden 52 die Minuten und S3 die Sekunden 163 6 Praktische Beispiele F r Fortgeschrittene 1 Entwickeln Sie eine Stoppuhr die Stunden Minuten Sekunden und Millisekunden auf dem LCD anzeigt Schalter S1 startet die Zeit S2 h lt sie an und S3 nullt die Uhr Es m ssen Interrupts des Timers genutzt werden 2 Die rote gelbe und gr ne LED m ssen in 2 Sekunden Intervallen flie end nacheinander ein und ausgeschaltet werden Das flie ende Licht wird erzeugt in dem man die LED mit mehreren hundert Hertz moduliert also sehr schnell ein und ausschaltet und die Abst nde zwisc
82. X File Es Program Verify Read ELF Production File Format Input ELF File Save From Y FLASH IV EEPROM Y FUSES IM LOCKBITS Fuses and lockbits settings must be specified before Program Save saving to ELF Erasing device OK Programming FLASH OK Reading FLASH OK J FLASH contents is equal to file OK Leaving programming mode OK Falls sich das beschriebene Fenster nicht ffnet und sich stattdessen das Connec tion Failed Fenster ffnet ist das Programmierger t oder die Platine nicht richtig angeschlossen berpr fen Sie zun chst ob der Mkcrocontroller an die Strom versorgung angeschlossen ist gr ne LED leuchtet und ob das Programmier ger t korrekt an den JTAG angeschlossen ist Falls das korrekt erfolgt ist ber pr fen Sie die von Windows vergebene COM Port Nummer Ist diese gr er als 9 kann Das AVR Studio das Programmierger t nicht erkennen Folgen Sie den 120 6 1 Anfang Anweisungen zu Beginn des Kapitels um eine Portnummer zwischen 0 und 4 zuzuweisen Select AYR Programmer xj Platform COM2 c Baud rate 115200 y Baud rate changes are active immediately Tip To auto connect to the programmer used last time press the Programmer button on the toolbar Note that a tool cannot be used for programming as long as it is connected in a debugging session In that case select Stop Debugging first Disconnected Mode
83. Zus tz lich gibt es noch unterschiedliche Microcontroller Serien speziell zum Kontrol lieren von USB CAN LCD ZigBee automatics Beleuchtung und batteriebetrie bene Ger te 14 3 1 Einf hrung Der folgende Text beschreibt die Hauptfeatures der megaAVR Serie Microcon troller am Beispiel des beliebtesten Controller dieser Serie des ATmega128 Die ser Controller ist auch im HomeLab Kit enthalten Generell alle AVR Microcon troller Registernamen Bedeutungen und Benutzungen sind in einer Weise ge regelt welche es m glich macht Beispiele auch mit anderen Controller zu nut zen in dem man nur kleine nderungen durchf hrt Der Hautunterschied liegt in den Peripherals Die Codebeispiele dieser Einf hrung sind mit AVR LibC in Assembler und C geschrieben u erer Aufbau Abbildung 3 2 ATmega32 in 40 pin DIP casing Wie alle anderen Controller ist der AVR in einer Standarth lle gepackt Das tra ditionelle Geh use ist DIP bzw DIL DIP ist eine so genannte Casing On Legs Alle Pins treten wie Beine ca5mm in L nge aus dem schwarzen Plastikgeh use hervor DIP Geh use sind eine gute Wahl f r Hobbyanwendungen und Prototy pen weil es daf r g nstige Sockets gibt Daher kann der Microcontroller einfach ersetzt werden sollte er Ausfallen Die Beine sind aber auch der Nachteil des DIP Geh uses da man daf r L cher in die Platine bohren muss Die Surface Mount Casings SMT bzw SMD sind viel kompakter weil die Pins
84. _char_xy unsigned char x unsigned char y W hlt eine Position zum Beschreiben aus Parameter x X Koordinate 0 bis 13 y Y Koordinate 0 bis 5 void Icd_gfx_write_char char c Schreibt ein Zeichen an eine zuvor bestimmte Position Parameter c ASCII Zeichen void Icd_gfx_write_string char s Schreibt einen String an eine zuvor bestimmte Position Parameter s Zeiger auf einen String char array Beispiel Nutzung des graphischen LCD include lt homelab module lcd_gfx h gt int main void Initialisierung des LCD Icd_gfx_init L schen des Displays lcd_gfx_clear Cursor in die Mitte des Bildschirms bewegen led_gfx_goto_char_xy 5 2 Anzeige eines Textes Icd_gfx_write_string Hello 100 5 4 HomeLab Bibliothek 5 4 10 Sensoren Bezug nehmend auf N Sensors Module Diese Bibliothek enth lt Funktionen f r die verschiedenen Sensoren im Home Lab kit Datentypen ir_distance_sensor Infrarotentfernungssensor Distanzberechnungs Parameterstruktur Formel f r die Entfernungsberechnung ist a ADC b k Struktur a Dividend b Nicht lineare Konstante k Lineare Konstante Konstante ir_distance_sensor GP2Y0A21YK Sharp GP2Y0A21YK Formelparameter zur Entfernungsberechnung Funktionen signed short thermistor_calculate_celsius unsigned short adc_value Berechnet die Thermistor Temperatur in Grad Celcius aus ADC Umrech
85. ahl des Kanals 1 Photoresistor 2 Thermistor 3 Potentiometer Hd define ADC CHANNEL 3 Hei Hauptprogramm int main void int value Anpassung der 7 Segmentanzeige segment_display_init Anpassung des ADC adc_init ADC_REF AVCC ADC_PRESCALE 8 Endlosschleife while true Liest viermal gerundete Werte aus dem Kanal value adc_get_average_value ADC CHANNEL 4 Zeigt Hunderter des angezeigten Wertes an 181 6 Praktische Beispiele segment_display_write value x 10 1024 6 5 2 Thermistor Notwendiges Wissen Y Sensors Module N Icd A Voltage Divider Analog to digital Converter 2 Analog to Digital Converter 2 Alphanumeric LCD 2 Sensors Theorie Abbildung 6 17 NTC Thermistor Ein Thermistor ist temperaturabh ngiger Widerstand Es gibt Thermistoren mit positiven und mit negativen Temperaturkoeffizienten Der Widerstand von Thermistoren mit positiven Koeffizienten nimmt mit steigender Temperatur zu bei Thermistoren mit negativen Koeffizienten steigt er mit sinkender Temperatur Die dazuge h rigen Abk rzungen sind PTC positive temperature coefficient und NTC negative temperature coefficient Die Temperaturabh ngigkeit des Widerstands verl uft nicht linear zu der Temperatur was die Nutzung er schwert F r genaue Temperaturmessungen bei gr eren Temperaturschwankungen wird die exponentielle Steinhart Hart Gleichung dritter Ordnung gen
86. ain void char c Initialisierung der Schnittstelle usart_init_async port USART_DATABITS 8 USART_STOPBITS_ONE USART_PARITY_NONE 84 5 4 HomeLab Bibliothek USART BAUDRATE ASYNC 9600 Senden des String usart_send_string port Hello n Auf ankommende Daten warten while usart_has_data port Empfangenes Zeichen auslesen c usart_read_char port 5 4 5 Timer Diese Bibliothek deckt einen gro en Teil der Funktionen des Timers des ATme ga128 ab Es gibt Datentypen und Funktionen welche das Benutzen von Timern vereinfachen Aufgrund der Komplexit t der AVR Timer gibt es leider keine all gemeing ltige Funktion die f r verschiedene Timer genutzt werden kann Die Funktionen jedes Timers beginnen mit dem Pr fix timer und seinem Index Datentypen timer0_prescale Timer 0 Vorteiler Aufz hlungsdatentyp M glichkeiten TIMERO_NO_PRESCALE Kein Vorteiler keine Division TIMERO_PRESCALE_8 Clk 8 TIMERO_PRESCALE_32 Clk 32 TIMERO_PRESCALE_64 Clk 64 TIMERO_PRESCALE_128 Clk 128 TIMERO_PRESCALE_256 Clk 256 85 5 Robotic HomeLab Kit TIMERO_PRESCALE_1024 Clk 1024 timer2_prescale Timer 2 Vorteiler Aufz hlungsdatentyp M glichkeiten TIMER2_NO_PRESCALE kein Vorteiler keine Division TIMER2_PRESCALE_8 Clk 8 TIMER2_PRESCALE_64 Clk 64 TIMER2_PRESCALE_256 Clk 256 TIMER2_PRESCALE_1024
87. alter ist f r die gr ne LED der Zweite f r die Gelbe und der Dritte f r die Rote 6 2 3 Vermeidung von Kontaktprellung Vajalikud teadmised Dx User Interface Module 7 Digital Inputs Outputs 2 Pins 2 Delay che Switch Theorie 1 0 Abbildung 6 8 Kontaktprellung eines Schalters Wie bereits im einleitenden Kapitel zu Schaltern erw hnt gibt es im Ungang mit mechanischen Schaltern den Effekt des Prellens ungewolltes kurzzeitiges wiederholtes ffnen und Schlie en eines Kontaktes bei dessen 146 6 2 Digitale Input Output Pins Bet tigung Dieses Problem wird durch die Elastizit t des Metalls aus dem die Schalter bestehen verursacht Im Moment des Ein oder Ausschaltens prellen die Kontakte was zu einer Vielzahl falscher Schaltungen f hrt Die Anzahl und Dauer der Schaltungen h ngt von dem Schalter ab liegt aber gew hnlich im Bereich von wenigen Millisekunden F r den Fall dass ein Schalter genutzt wird um ein elektronisches Ger t zu starten hat dieses Problem keine gro en Auswirkungen Wird er jedoch zur Steuerung eines Ger tes verwendet kann mehrfaches Schalten das Ger t besch digen Abbildung 6 9 RC filter eines Schalters Die bekannteste Methode zur Vermeidung von Kontaktprellung ist die Filtrierung Dieses kann elektrisch oder durch Software erfolgen Um elektrisch zu filtern muss der Schalter an einen Tiefpassfilter angeschlossen werden zum Beispiel an einen RC Filter welcher die Spannungschw
88. ands F r den Fall dass die Betriebsspannung h her ist als die Spannung der LED muss der Widerstand in Reihe in den Stromkreislauf geschaltet werden Er be grenzt die Spannung und erzeugt dadurch den notwendigen Spannungsabfall Um den korrekten Widerstand auszuw hlen wird folgende vom Ohm schen Gesetz abgeleitete Gleichung angewandt Uin Ur Abbildung 4 2 LED mit in Serie geschaltetem Widerstand R Ujn Uf Is U Uin U f P U I mit R f r den Widerstand U f r die Betriebsspannung Us f r die LED Spannung 53 4 Elektronik I f r die LED Stromst rke U f r den Spannungsabfall am Widerstand P f r die Leistung des Widerstands welche in W rme umgewandelt wird Der spannungsbegrenzende Widerstand einer LED darf nicht geringer sein als R und muss mindestens die Leistung von P haben 4 3 Spannungsteiler Ein Spannungsteiler ist ein elektrischer Schaltkreis der die Eingangsspannung teilt Die Ausgangsspannung ist ein Teil der Eingangsspannung und der Wert ist abh ngig vom Verh ltnis der Widerst nde im Schaltkreis Die Abbildung rechts zeigt ein Beispiel mit zwei Widerst nden Die Ausgangsspannung des Schaltkreises wird mit folgender Gleichung berech net U1 Abbildung 4 3 Schaltplan eines Spannungsteilers U2 U R2 Ry R gt 54 4 3 Spannungsteiler mit U f r die Eingangsspannung U f r die Ausgangsspannung R und R f r die Widerst nde Die
89. ankungen beseitigt sodass der Pin des Mikrocontrollers keine schwankenden Werte erh lt Ein solcher RC Filter ist auf der Zeichnung abgebildet Filtrierung mittels Software wird durchgef hrt indem dem Pin an welchem der Schalter angeschlossen ist ein Wert zugewiesen wird Bleibt dieser Wert zu verschiedenen Zeitpunkten innerhalb eines zuvor gesetzten Zeitlimits gleich kann angenommen werden dass der Schalter stabil ist und kein Flimmer Problem aufweist Es muss jedoch bei jeder Art der Filtrierung ein Verz gerungsfaktor bei Definition des Status ber cksichtigt werden Praktisches Beispiel Elektrische Filtrierung wird f r die HomeLab Schalter nicht verwendet da hier die Beseitigung von Fehlschal tungen mit Hilfe von Software ge bt werden soll Die bung besteht aus zwei Teilen Das Ziel des ersten Teils ist das Prellen der Schalter des digitalen Input Output Moduls zu zeigen Hierzu wird das folgende Pro gramm genutzt durch jede Bet tigung des Schalters wird die nachfolgende LED aufleuchten Eine Fehlschal tung l sst die LEDs mehrfach und zuf llig aufleuchten Electrical filtering is not used on HomeLab switches since it would not allow practicing the elimination of miss switching s with software The exercise is in two parts The goal of the first part is to demonstrate the bouncing of Digital i o module switches The following program is used for this each pressing on the button will light the next LED in line Wrongly pressed butt
90. annung wird mittels eines Analog Digital Konverters digitalisiert und darauf hin kann die Entfernung berechnet werden Die Zeichnung auf der rechten Seite zeigt die Wege von Strahlen die aus unterschiedlichen Entfernungen reflektiert werden 192 6 5 Sensoren LED PSD Abbildung 6 22 Wege der Lichtstrahlen eines Infrarot Entfernungsmessers Abbildung 6 23 Das Verh ltnis von Spannung und Entfernung eines Infrarot Entfernungsmessers Der Output der Infrarot Entfernungsmesser von Sharp ist anti proportional Das meint mit gr er werden der Entfernung verringert sich der Output die Abnahme des Outputs also der Spannung wird jedoch nach und nach schw cher Der Graph mit dem exakten Verh ltnis zwischen Entfernung und Spannung ist gew hn lich im Datenblatt des Sensors abgebildet Jeder Sensor Typ hat seinen spezifischen Messbereich innerhalb welchem die gemessenen Ergebnisse verl sslich sind Die maximale Messdistanz wird von zwei Aspekten be schr nkt Zum Einen von der Abnahme der Menge des reflektierten Lichts zum Anderen vom Unverm gen des OPS kleine Positons nderungen des reflektierten Strahls zu registrieren Misst man die Entfernung zu Objekten welche zu weit entfernt sind entspricht der Output nahezu dem bei der Messung zur maximalen Distanz Die minimale Entfernung wird durch die Besonderheit der Sharp Sensoren eingeschr nkt So f llt der Output steil ab sobald die Entfernung einen bestimmten Punkt unterschreitet
91. arameter count Verz gerungszeit in us 0 bis 65535 us void hw_delay_ms unsigned short count Zeitgeber basierte Verz gerung in Millisekunden Diese Funktionen ver wenden den ATmegal28 8 bit Timer 0 In Abh ngigkeit von der Taktfre quenz kann eine Verz gerung von bis zu einigen Millisekunden auftreten Parameter count Verz gerungszeit in ms 0 bis 65535 ms Beispiele Demonstration beider Typen einer Verz gerung include lt homelab delay h gt int main void Software basierte Verz gerung von 100 ms sw_delay_ms 100 Hardware Timer basierte Verz gerung von 100 ms hw_delay_ms 100 95 5 Robotic HomeLab Kit 5 4 7 7 Segment LED Display In Bezug auf a User Interface Module Diese Bibliothek dient zur Nutzung des 7 Segment LED Displays der digita len HomeLab digitalen I O Modulplatine gedacht Mit dieser Bibliothek k nnen Zahlen von 0 bis 9 dargestellt werden Funktionen void segment_display_init void Konfiguriert Kontrollpins fiir den Displaytreiber void segment_display_write unsigned char digit Zeigt eine Ziffer auf dem Display an Parameter digit Zahlenwert von 0 bis 9 Ansonsten wird ein E f r Error angezeigt Beispiel Die Zahl 5 wird auf dem LED Display angezeigt include lt homelab module segment_display h gt int main void Initialisierung des Displays segment_display_init Anzeige der Zahl segment_display_w
92. arates Beispiel f r blinkende LEDs durch Softwareverz gerung daher wird es an dieser Stelle nicht n her erl utert Ziel ist es die Bibliothek f r Counter und Interrupts zu verwenden Zu Beginn des Programms wird der 16 Bit Timer 1 mit der Funktion timer1_init_ctc eingestellt Dadurch wird der Timer in den CTC clear timer on compare match Modus gesetzt wodurch sein maximaler Wert nicht 216 1 ist sondern vom Benutzer eingestellt werden kann In diesem Fall wird der maximale Wert so gesetzt dass er gleich dem Wert des ICR1 Indexes ist Der Teiler des Timers ist 1024 und der Wert des ICR1 betr gt 14400 Bei einer Taktfrequenz von 14 7456MHz umfasst eine Periode somit genau eine Sekunde Dieses kann mit folgender Formel berechnet werden f 14745600 Hz 1024 14400 1 Nachdem zugelassen wurde dass ein Interrupt den maximalen Wert von Counter 1 erreicht muss ein In terrupt auch global also im Mikrocontroller zugelassen werden Dazu gibt es die Funktion sei um sie zu untersagen die Funktion cli Um den Programmteil f r diese Funktionen und Interrupts festzulegen muss die Headerdatei avr interrupt h eingef gt werden Ein Interrupt wird im Programm durch die Makrofunktion ISR definiert deren Parameter der Name des Interruptvektors ist Im folgenden Beispiel betr gt der Interruptvek tor des maximal erreichbaren Wertes von Counter 1 TIMER1_CAPT_vect Ve HomeLab Beispiel fiir blinkende LED aufgrund von Counter Interrupts Zum V
93. arithmetisch logischen Einheit ALU dem Status Register SREG dem Befehls z hler PC dem Random Access Memory SRAM und den Peripherieschnitt stellen bewegt werden k nnen Das Programm eine Reihe an Befehlen die in der ALU ausgef hrt werden resultiert aus einer Adresse im Flash Speicher spe zifiziert vom Befehlsz hler Der ALU hat 32 8 bit Mehrzweckregister welche als Operanden genutzt werden wenn Befehle ausgef hrt werden 27 3 AVR Mikrocontroller PFO PF7 PAO PA7 PCO PC7 XTAL2 T If j RESET JTAG TAP 8 BIT DATA BUS PROGRAM ON CHIP DEBUG BOUNDARY SCAN PROGRAMMING LOGIC STACK COUNTER POINTER ch PROGRAM SRAM FLASH INSTRUCTION REGISTER GENERAL PURPOSE INTERNAL OSCILLATOR WATCHDOG TIMER MCU CONTROL REGISTER TIMER COUNTERS INTERRUPT UNIT USARTO REGISTERS INSTRUCTION DECODER z v CONTROL LINES STATUS REGISTER EEPROM H osovo LLATOR OSCILLATOR TIMING AND gt CONTROL CALIB OSC gt i gt i SPI eooo et TWO WIRE SERIAL atid INTERFACE 4 ANALOG COMPARATOR tt DATA REGISTER DATA DIR DATA REGISTER DATA DIR DATA REGISTER PORTE REG PORTE PORTB REG PORTB PORTD PORTE DRIVERS PORTB DRIVERS PEO PE7 Ab
94. auch m glich nur mit Bin rzahlen zu arbeiten Da diese aufgrund ihrer L n ge die Programmierarbeit jedoch erschweren k nnen verwenden die meisten Programmierer die k rzeren Hexadezimalzahlen 8 1000 Abbildung 3 6 Hexadezimalzahlen Im Hexadezimalsystem gibt es nicht nur die Ziffern 0 und 1 wie im bin ren Sys tem oder 0 bis 9 gem dem Dezimalsystem sondern stattdessen 0 bis F Ei ne Hexadezimalzahl besteht aus vier Bits Die Abbildung auf der rechten Seite veranschaulicht die Bin rzahlen und deren zugeh rige Hexadezimalwerte Bin rzahlen werden in Hexadezimalzahlen umgewandelt indem vier Bits zugleich beginnend bei dem niedrigsten gelesen werden Die Bitfolge wird von links nach rechts gelesen und startet bei 0 So ist zum Beispiel das niederwertigste Bit an Stelle 0 0 und das mit dem h chsten Wert an Stelle 3 1 Im vorangehenden 20 3 2 Register Beispiel ist der Bin rwert der Registers 01100001 der im Hexadezimalsystem 61 entspricht und in C als 0x61 leading zero geschrieben wird Um einzelne Bits innerhalb einer Zahl zu ver ndern Register Variable oder hn liches m ssen Bin roperationen angewandt werden Bin roperationen sind Vor g nge zwischen zwei Bin rzahlen wobei jedes Bit der Zahlen durch eine eigene logische Operation abgebildet wird Mikrocontroller unterst tzen generell vier unterschiedliche Bin roperationen Der folgende Abschnitt beschreibt die logi sche Operation hinter
95. bildung 3 16 Block diagram of ATmega128 Befehls Pipeline DATA REG DATA DIR PORTG REG PORTG DATA DIR REG PORTD PORTD DRIVERS PORTG DRIVERS y J PDO PD7 PGO PG4 Der AVR hat eine zweistufige Befehls Pipeline W hrend ein Befehl ausgef hrt wird wird der n chste aus dem Programmspeicher geholt Darum sind beim Ausf hren einer Jump Instruction zwei Takte notwendig um die Bedingungen des Jumps zu erf llen Neue Befehle werden immer von der n chsten Speicher adresse geholt Dadurch ist es notwendig die vorherigen Befehle zu l schen und 28 3 3 Architektur neue zu laden wenn man zu einer neuen Adresse springt da der Ort an dem der Befehl geholt wurde nun nicht mehr stimmt Mehrzweckregister Mehrzweckregister RO R31 sind wie Buffer um mit Speicher und Peripherieda ten zu arbeiten und sie zu speichern Sie vereinfachen die Architektur des Prozes sors weil sie schnellen Zugang der ALU erlauben und der Datenbus nicht immer benutzt werden muss um Operanden aus dem Speicher zu lesen Mehrzweck register werden f r alle datenbezogenen arithmetischen und logischen Abl ufe benutzt Wenn man in Assembler programmiert ist es m glich die ben tigten Daten im Mehrzweckregister zu speichern Programmiert man in C und muss eine Va riable im Mehrzweckregister speichern wird die Variable zus tzlich als Regis ter definiert Zum Beispiel register char x Befeh
96. c HomeLab Kit USART_DATABITS_5 5 Datenbits USART_DATABITS_6 6 Datenbits USART_DATABITS_7 7 Datenbits USART_DATABITS_8 8 Datenbits USART_DATABITS_9 9 Datenbits usart_stopbits Z hlen der Stop Bits Aufz hlungsdatentyp M glichkeiten USART_STOPBITS_ONE Ein Stop Bit USART_STOPBITS_TWO Zwei Stop Bit usart_parity Parit tsmodus Aufz hlungsdatentyp M glichkeiten USART_PARITY_NONE Ausgeschaltet USART_PARITY_EVEN Gerade Parit t USART_PARITY_ODD Ungerade Parit t Funktionen 82 USART_BAUDRATE_ASYNC baud Makrofunktion um den USART Baudratenregisterwert im asynchronen Mo dus zu berechnen Parameter baud Gew nschte Baudrate Gibt Baudratenregisterwert wieder void usart_init_async usart port usart_databits data_bits usart_stopbits stop_bits usart_parity parity usart_baudrate baudrate 5 4 HomeLab Bibliothek Initialisiert asynchrones USART Parameter port USART Schnittstellenvariable data_bits Datenbits stop_bits Stop Bits parity Parit tsmodus baudrate Baudratenregisterwert kann mit der Makrofunktion US ART_BAUDRATE_ASYNC errechnet werden void usart_send_char usart port char symbol Blockiert die bertragung von Zeichen Die Funktionen warten solange bis der Ausgabespeicher leer ist bevor ein Zeichen in den Speicher geschrie ben wird Parameter port USART Schnittstellenvariable symbol zu s
97. c_get_average_value 1 10 Input Spannung am ADC berechnen voltage 5 0 double adc_value 1024 0 Widerstand des Fotoresistors im Spannungsteiler berechnen resistance 10 0 5 0 voltage 10 0 Beleuchtungsst rke in lux berechnen illuminance 255 84 pow resistance 10 9 Beleuchtungsst rke in Text konvertieren sprintf text 0 1f lux illuminance Darstellung auf dem LCD Icd_alpha_goto_xy 0 1 Icd_alpha_write_string text Verz gerung 500 ms sw_delay_ms 500 191 6 Praktische Beispiele 6 5 4 Infrarot Entfernungsmesser Notwendiges Wissen N Sensors Module N Icd Analog to digital Converter 2 Analog to Digital Converter 2 Alphanumeric LCD 2 Sensors Theorie Abbildung 6 21 Sharp GP2Y0A21YK Um die Distanz zu einem Objekt zu messen gibt es optische Sensoren welche die Triangulation als Messme thode nutzen Die am h ufigsten verwendeten Infrarot Entfernungsmesser werden von der Firma Sharp produziert und verf gen ber einen analogen Spannungs Output Diese Sensoren besitzen eine Infrarot LED mit einer Linse welchen einen schmalen Lichtstrahl aussendet Dieser wird von dem Objekt zu welchem die Distanz gemessen werden soll reflektiert und dann durch die zweite Linse zu einem optischen Positionssensor OPS gelenkt Die Leitf higkeit dieses OPS ist abh ngig davon an welcher Stelle der Lichtstrahl einf llt Sie wird in Spannung umgewandelt die Sp
98. ch den Schalter flie en Wenn die Anschl sse nicht verbunden sind kann keine Elektrizit t flie en Schalter werden normalerweise benutzt um elektrische Schaltkreise zu schal ten sie k nnen jedoch auch als Sensoren benutzt werden Der Schalter als Sen sor ist auch Teil dieser bung Hochspannungsschalter werden jedoch ausge lassen Schalter k nnen anhand der Anzahl von Kontakten und ihrer Verbin dungsmethode unterschieden werden Unterschiedliche Typen sind zwei Kon takt Schalter und Doppelschalter bei denen Kontaktpaare verbunden werden dar ber hinaus auch Druckknopf Schiebe Kipp und Wechselschalter ebenso wie Schalter die Verbindungen trennen anstatt zu verbinden Es werden unterschiedliche Schaltbildsymbole genutzt um die verschiedenen 143 6 Praktische Beispiele Typen von Schaltern zu identifizieren Unterhalb sind Beispiele typischer elek trischer Schalter in einem Schaltbild Druckknopfschalter Wechselschalter Kippschalter Mikroschalter DIL Schalter 2 j j j ji Um einen Schalter als Sensor mit einem Mikrocontroller zu nutzen muss ein Kontakt des Schalters mit dem Pin des Mikrocontrollers verbunden sein und dieser muss als Input im Programm definiert werden Wenn der Kontakt mit der Masse oder einem Inputpotential verbunden ist wir die Bus Bitrate des Mikrocontroller Pins ge ndert Es erscheint logisch einen Wechselschalter zu nutzen welcher es erlaubt einen Kontakt an den gew nschten Kontakt an
99. cklungen im Ganzschrittmodus und im Halbschritt modus zu kontrollieren wird in der Tabelle unhalb angezeigt Da in Treibern f r unipolare Schrittmotoren nur das ffnen von Transistoren stattfindet werden die Schritte mit 0 und 1 markiert Zur Steuerung eines bipolaren Schrittmotors braucht es Signale und daher wird jeder Schritt mit der Polarit t des Treiber Outputs markiert Unipo Bipolar lar Schritt 1A 2A 1B 2B 1A 2A 1B 2B Ganzschritt 1 1 0 0 0 2 0 1 0 0 3 0 0 1 0 4 0 0 0 1 Halbschritt 1 1 0 0 0 2 1 1 0 0 3 0 1 0 0 4 0 1 1 0 5 0 0 1 0 6 0 0 1 1 7 0 0 0 1 8 1 0 0 1 217 6 Praktische Beispiele bung Das Ziel dieser Aufgabe ist es unter Anwendung der oben beschrieben Methode einen bipolaren Schrittmotor zu starten welcher mit einem unipolaren Schrittmotor getauscht werden kann Es gibt Treiber auf der Moto renplatine welche vom Mikrocontroller ber vier Inputpins kontrolliert werden Jeder Pin gibt die Polarit t einer Wicklung wieder Die Spannung am Ende der Wicklung ist positiv wenn der Pin high ist und negativ wenn der Pin low ist Zu den Enden 1A 1B 2A und 2B geh ren die entsprechenden Pins PBO PB1 PB2 Und PB3 am Mikrocontroller In der HomeLab Bibliothek gibt es die Funktion bipolar_init um bipolare Schrittmotoren zu steuern indem die Pins als Output gesetzt werden Die Funktion bipolar_halfstep f hrt Rota
100. d genutzt um das Bit in einer Bin rzahl zu spezifizieren Indizes werden beginnend bei Null gez hlt wobei Null das niedrigstwertige Bit LSB kennzeichnet Eine 8 Bit Zahl hat zum Beispiel Indizes von 0 bis 7 eine 16 Bit Zahl Indizes von 0 bis 15 Funktionen bit_mask bit Bit Index zu Bitmaske konvertieren Parameter bit Bit Index Gibt Bitmaske aus 73 5 Robotic HomeLab Kit 74 bit_set value bit Setzt ein bestimmtes Bit in einer Variablen Parameter value Variable bit Bit Index bit_clear value bit L scht ein bestimmtes Bit in einer Variablen Parameter value Variable bit Bit Index bit_set_to value bit state Setzt ein bestimmtes Bit einer Variablen in einen gew nschten Zustand Parameter value Variable bit Bit Index state Status true or false bit_invert value bit Invertiert ein bestimmtes Bit der Variable Parameter value Variable bit Bit Index bit_is_set value bit berpr ft ob ein bestimmtes Bit in einer Variablen gesetzt ist oder nicht Parameter value Variable bit Bit Index 5 4 HomeLab Bibliothek Gibt den Bool schen Wert true wenn das Bit gesetzt und false wenn das Bit gel scht wurde zur ck bit_is_clear value bit berpr ft ob ein bestimmtes Bit in einer Variablen gel scht wurde oder nicht Parameter value Variable bit Bit Index Gibt den Boo
101. d short adc_value signed short celsius Tabelle von hinten beginnend durchgehen for celsius max_temp min_temp celsius gt 0 celsius Ist der Wert aus der Tabelle gleich oder h her dem gemessenen Wert ist die Temperatur mindestens so hoch wie die mit dem Element 184 6 5 Sensoren korrespondierende Temperatur if adc_value gt conversion_table celsius Da die Tabelle mit 0 beginnt die Werte der Elemente jedoch mit 20 muss der Wert geshiftet werden return celsius min_temp Wurde der Wert nicht gefunden wird die minimale Temperaur ausgegeben return min_temp Der Algorithmus sucht den Bereich aus der Tabelle in dem der ACD Wert liegt und w hlt die niedrigere Nummer dieses Bereiches Die Ranknummer markiert die Gradzahl und durch das Addieren der anf nglichen Temperatur wird eine Genauigkeit von 1 C erreicht Umrechnungstabelle und Funktion sind schon in der HomeLab Bibliothek enthalten sie m ssen somit nicht extra f r diese Aufgabe erstellt werden In der Bibliothek hei t die Umrechnungsfunktion thermistor_calculate_celsius Hierbei muss beachtet werden dass die Funktion nur korrekt ist wenn sie mit dem Thermistor des Sensor moduls aus dem HomeLab verwendet wird Werden andere Thermistoren genutzt muss eine entsprechende Umrechnungstabelle erstellt und eine komplexere Funktion verwendet werden welche im Handbuch der Bi bliothek beschrieben wird Das
102. d_gfx_init L schen des Displays led_gfx_clear Einschalten der Hintergrundbeleuchtung lcd_gfx_backlight true Anzeige des Programmnamens Icd_gfx_goto_char_xy 1 1 Icd_gfx_write_string Aja loendur Endlosschleife while true Sekunden in die Form der Uhrzeit konvertieren hh mm ss sprintf text 02d 02d 02d seconds 3600 24 seconds 60 60 seconds 60 Anzeige des Zeittextes 174 6 4 Anzeigen und Displays Icd_gfx_goto_char_xy 3 3 Icd_gfx_write_string text Eine Sekunde hinzuf gen seconds Hardwareverz gerung von 1000 ms hw_delay_ms 1000 6 4 4 Aufgaben Ziel ist es ein Programm zu schreiben welches die unten beschriebenen Aufgaben eriillt Aufw rm bung Das Programm soll von 1 bis 9 und dann zur ck von 9 bis 1 auf der 7 Segment Anzeige z hlen Die Z hlperiode betr gt 1 Sekunde F r Anf nger 1 Stellen Sie die Zahlen im Hexadezimalsystem zuf llig auf der 7 Segment Anzeige dar Die Frequenz betr gt 1 Hz 2 Lassen Sie die u eren 6 Segmente der 7 Segment Anzeige periodisch im Abstand von 500 ms auf leuchten 3 Schreiben Sie ein Programm f r das LCD welches den Code und das zugeh rige Symbol anzeigt Verwenden Sie Codes von 0 bis 255 Jedes Code Symbol Paar wird 1 Sekunde lang auf dem Display angezeigt 4 Schreiben Sie ein Programm mit welchem das Symbol X ber den Bildschrim bewegt werden
103. der m glich ist jeden Knopf einzeln zu bet tigen ergeben sich bei einem Register Schwierigkeiten wenn nur der Wert eines Schalters oder Bits ge ndert werden soll Hier ist es gew hnlich notwen dig den gesamten Inhalt der Registers zu ndern Bevor jedoch detaillierter auf die Thematik der Bit Ver nderung eingegangen wird muss zun chst klargestellt werden dass ein Mikrocontroller mehrere Register enth lt Die Vielzahl der Re gister f hrt dazu dass diese voneinander unterscheidbar gemacht werden m s sen was durch Kennzeichnung mit einem Namen geschieht wie zum Beispiel PORTB Hierdurch wird dem Entwickler die Arbeit erleichtert da jedem Na men auch eine eigene numerische Adresse zugewiesen wird 19 3 AVR Mikrocontroller Gebrauch Zur Programmierung eines Registers oder auch dazu um Werte aus diesem ab zulesen muss er als Variable in C deklariert werden Das folgende Beispiel veran schaulicht wie ein Bin rwert einem imagin ren Register REG zugewiesen wird und dann in der Variable reg abgelegt wird Bin rwerte werden an einem voran gestellten Ob leading zero erkannt sodass der Compiler das bin re Zahlensys tem erkennt REG 0b01100001 unsigned char reg REG Die Schwierigkeit liegt nicht darin Registerwerte zu schreiben und auszulesen sondern vielmehr darin ein einzelnes Bit zu ver ndern Hierzu sind Kenntnisse der Bin rmathematik sowie im Gebrauch diverser Zahlensysteme notwendig Es ist
104. dude Programm um die HEX Dateien in den Controller zu laden avr libc C Code Bibliotheken um Code f r die AVR Plattform zu schrei ben Um die Pakete zu installieren nutzen Sie folgenden Terminalbefehl sudo apt get install gcc avr avrdude avr libc oder die graphische Installationssoftware wie das Ubuntu Softwarecenter oder Synaptic Packet manager 2 HomeLab Bibliothek Die Bibliothek vereinfacht das schreiben von Programmcode da Grundfunktio nen bereits fertig sind Laden Sie sich die Datei Homelab library vX X run von der HomeLab Webseite herunter wobei XX f r die Versionsnummer steht Zur In stallation der Bibliothek f hren Sie den folgenden Befehl aus sudo sh homelab_library_vX X run Stellen Sie sicher dass die Installation erfolgreich war 3 KontrollerLab KontrollerLab ist eine IDE integrated development environment um zum schrei ben kompilieren debuggen und laden von AVR Software Laden Sie die Kon trollerLab Software herunter und und speichern sie diese in einem Ordner z B Documents AVR KontrollerLab F hren sie den folgenden Befehl in dem Ordner aus sudo dpkg i kontrollerlab deb 125 6 Praktische Beispiele Falls es Probleme mit Paketabh ngigkeiten gibt f hren Sie den Befehl aus wel cher die fehlende Pakete installiert apt get install f peeter peeterLaptop Dokumendid AVR KontrollerLab Fail Redaktor Vaade Terminal Abi peeter peeterLaptop cd Dokume
105. e lt homelab module motors h gt Ve Hauptprogramm ip int main void Einrichtung des Motors bipolar_init Endlosschleife while true Bewegung des Rotors 200 Halbschritte in eine Richtung mit einer Geschwindigkeit von 30 ms Schritt bipolar_halfstep 1 200 30 Bewegung des Rotors 200 Halbschritte in die andere Richtung mit einer Geschwindigkeit von 30 ms Schritt bipolar_halfstep 1 200 30 6 6 4 Aufgaben Ziel ist es ein Programm zu schreiben welches die folgenden Aufgaben erf llen kann 219 6 Praktische Beispiele Aufw rm bung Steuern des Gleichstrommotors mit dem digitalen Board Durch Bet tigung von Schalter S1 leuchtet LED1 auf und der Motor dreht sich im Uhrzeigersinn Durch Bet tigung von Schalter S3 leuchtet die LED3 auf und der Motor dreht sich gegen den Uhrzeigersinn Durch Bet tigung von Schalter S2 leuch tet LED2 auf und der Motor wird gestoppt F r Anf nger Roboter Durch Nutzung von zwei Gleichstrommotoren und Ber hrungssensoren wird die Bewegung eines Roboters simuliert Ber hrungssensoren sind die Schalter am digitalen Board S1 S3 Die Mo toren werden durch die Bet tigung der Schalter gesteuert S1 stoppt den linken Motor f r zwei Sekun den und startet dann beide Motoren mit voller Geschwindigkeit S2 stoppt den rechten Motor f r zwei Sekunden und startet dann beide Motoren mit voller Geschwindigkeit Wenn beide Schalter bet tigt werden
106. e 002 ID 0403 6001 Future Technology Devices International Ltd FT 232 USB Serial UART IC Bus 002 Device 001 ID 1d6b 0001 Linux Foundation 1 1 root hub Bus 001 Device 001 ID 1d6b 0002 Linux Foundation 2 0 root hub peeter peeterLaptop Um den Port zu erhalten an welchem das Programmiergerat angeschlossen ist berpr fen Sie dev mit dem Befehl cd dev setzt dev als aktuellen Ordner und dir zeigt den Inhalt des Ordners an Da das Programmierger t eine serielle USB Schnittstelle ist ist es als ttyUSBx benannt wobei x den Index der Schnittstel le anzeigt Gibt es kein anderes serielles USB Ger t ist diese Zahl null peeter peeterLaptop dev E Fail Redaktor Vaade Terminal Abi peeter peeterLaptop cd dev peeter peeterLaptop dev dir adsp mapper ram9 tty13 tty40 ttysl audio mcelog random ttyl4 tty41 ttyS2 binder mem rfkill ttyl5 tty42 block mixer rtc ttyl6 tty43 bus net rtco tty17 tty44 Urando cdrom network latency scdo tty18 tty45 usbmon char network throughput sda tty19 tty46 usbmonl console null sdal tty2 tty47 usbmon2 core oldmem sda2 tty20 tty48 vcs Ein neues Projekt erstellen Um ein AVR Programm zu schreiben muss ein Projekt erstellt werden welches alle notwendigen Dateien enth lt Quellcode Headerdateien kompilierte Pro gramme usw Um die Projekte klar voneinander zu trennen sollte f r jedes Pro jekt ein eigener Ordner erstellt werden Diese Option gibt es auch im Project Wizard
107. e Bibliothek enth lt Funktionen um den AVR Analog Digital Wandler zu nutzen S mtliche Funktionen dieser Bibliothek sind blockierend d h der Pro zessor wartet so lange bis die Ergebnisse da sind Die Zeit f r die Konvertierung h ngt von der ADC Taktung ab Datentypen adc_reference ADC Vergleichsspannung Aufz hlungsdatentyp M glichkeiten ADC_REF_AREF Vergleichsspannung vom AREF Pin ADC_REF_AVCC Vergleichsspannung vom AVCC Pin ADC_REF_2V36 Interne 2 56 V Vergleichsspannung adc_prescale ADC Takt Vorteiler Aufz hlungsdatentyp Der Vorteiler gibt den Divisi onsfaktor f r den Systemtakt an M glichkeiten ADC_PRESCALE_2 Divisionsfaktor 2 ADC_PRESCALE 4 Divisionsfaktor 4 ADC_PRESCALE 8 Divisionsfaktor 8 ADC_PRESCALE_16 Divisionsfaktor 16 79 5 Robotic HomeLab Kit ADC_PRESCALE_32 Divisionsfaktor 32 ADC_PRESCALE_64 Divisionsfaktor 64 ADC_PRESCALE_128 Divisionsfaktor 128 Funktionen void adc_init adc_reference reference adc_prescale prescale Initialisiert ADC Parameter reference Auswahl der Vergleichsspannung prescale Auswahl des Takt Vorteilers unsigned short adc_get_value unsigned char channel Konvertiert bestimmte analoge ADC Kanalwerte in digitale Die Funktion blockiert Parameter channel ADC Kanalnummer 0 bis 7 Liefert einen digitalen 10 bit Wert unsigned short adc_get_average_value unsigned char channel unsigned c
108. e LED OK F r Fortgeschrittene 1 Zu jedem der drei Schalter geh rt eine LED welche aufleuchtet wenn der Schalter bet tigt wird Zum an oder ausschalten sollen Register und nur eine zuordnende Operation genutzt werden Hinweis Nutzen Sie Bitverschiebungen F r jede LED gibt es einen Schalter Der Controller bringt die LEDs in zuf lliger Reihenfolge zum Blinken und der Nutzer muss diese Sequenz wiederholen Die Blinksequenz verl ngert sich nach jeder Runde kommt eine LED hinzu Bei einem falschen Eintrag blinken alle LEDs dreimal Die Anzahl korrekter Eintr ge des Nutzers muss auf einem LCD Display angezeigt werden Das Programm misst die Zeit f r eine Reaktion Eine zuf llige LED leuchtet auf und der Nutzer muss den zugeh rigen Schalter so schnell wie m glich bet tigen Die Zeit bis zum Aufleuchten der LED ist zuf llig aber nicht kleiner als 100 ms Das Ergebnis wird auf einem LCD Display in Millisekunden dargestellt Der Wert der Schalter kann nicht mit einer Filterfunktion f r das Flackern gelesen werden da diese eine weitere Verz gerung verursacht Fragen 152 1 Was ist der Unterschied zwischen den Operationen auu und Nennen Sie zwei Beispiele um Ihre Antwort zu verifizieren 6 3 Timer und Verz gerungen 10 Was ist der Unterschied zwischen den Operationen und Nennen Sie zwei Beispiele um Ihre p Antwort zu verifizieren Schreiben Sie einen Ausdruck welcher die
109. e Robotikexperimente zu Hause oder am Arbeitsplatz durchzuf hren 67 5 Robotic HomeLab Kit HomeLab Basic kit Abbildung 5 1 HomeLab Basic kit AVR ATmega2561 Entwicklungsplatine inklusive Ethernet SD Kartenle sen und integriertem JTAG Programmierger t Benutzerschnittstellenplatine Schalter LEDs graphisches LCD 7 Segment Anzeige USB Kabel Beispielaufgaben mit C Quellcode Softwarebibliothek Stromversorgung Multimeter Software zur Programmierung in Assembler und C Tragbarer Koffer Sensor and Motor Add On kit Sensormodul Analoge Sensoren und Tiefpassplatine mit on board Sensoren Tempera 68 5 3 HomeLab Hardware tursensor Lichtsensor Potentiometer und Mikrofon Ultraschallentfernungssensor SRFO5 mit Kabel Infrarotentfernungssensor mit Kabel Abbildung 5 2 Sensor and Motor Add On kit Motormodul DC Motor mit Getriebe und Kodierer RC Servomotor Schrittmotor uni oder bipolarer Schrittbetrieb Motorentreiberplatine Versorgungsteiler Kommunikationsmodul 69 5 Robotic HomeLab Kit Kommunikationsplatine 2xRS232 ZigBee oder Bluetooth Funkeinheit Zus tzliche HomeLab Module Zus tzliche Module sind nicht in den Koffern enthalten k nnen jedoch direkt mit dem HomeLab Kommunikationsmodul verbunden werden Es gibt f r diese Module ebenfalls praktische Beispiele und bungsaufgaben RFID Modul Hochfreqzenz RFID Leseger t Tag 2 Kabel Machine Vision Module
110. ear timer3_set_value 0 10 us warte while timer3_get_value lt 18 Ausl se Impuls beenden pin_clear trigger Warten auf den Echo Start while pin_get_value echo Timeout if timer3_overflow_flag_is_set return 0 200 6 5 Sensoren Timer erneut zur cksetzen timer3_set_value 0 Warten auf Beendigung des Echos while pin_get_value echo Timeout if timer3_overflow_flag_is_set return 0 Konvertierung von Zeit in Entfernung Wi Entfernung Timer 1 FLCPU 8 Geschwindigkeit 2 return unsigned long timer3_get_value ULTRASONIC_SPEED_OF SOUND F_CPU 4 Die gegebene Funktion erlaubt dem Nutzer den Echo und den Trigger Pin so zu w hlen dass der Sensor dort angeschlossen werden kann wo es am g nstigesten ist und genug Platz vorhanden ist Zus tzlich erlaubt dies die Funktion auch au erhalb von HomeLab zu nutzen Die dargestellte Funktion ist bereits in der HomeLab Library enthalten und muss somit nicht geschrieben werden Es gibt noch eine Sache zu beachten Die Funk tion in der Library ist streng an die Taktrate des Controller Moduls von HomeLab gekoppelt Die Taktrate betragt 14 7456 MHz wenn die Funktion mit anderen Taktraten genutzt wird liefert sie falsche Ergebnisse Um die Funktion mit anderen Taktraten zu nutzen sollte sie manuell programmiert werden Der folgende Code demonstriert die Nutzung des SRF04 SRF05 Ultraschal
111. ein elektronisches Widerstandsbauelement mit drei Anschl ssen Zwischen den beiden Seitenkontakten ist der Widerstand fix zwischen Seiten und Mittelkontakt ist er variabel Im Grunde ist ein Potentiometer ein Spannungsteiler dessen Widerstand zwischen den Seiten und Mittelkontakten hergestellt wird 178 6 5 Sensoren Abbildung 6 16 einfaches Drehpotentiometer Ein typisches Potentiometer besteht aus einem Widerstand mit einer leitenden Oberfl che und einem Schiebe kontakt slider Je n her der Schiebekontakt am Rand des Widerstandes angebracht ist desto geringer ist der Widerstand zwischen Slider und Ecke des Widerstands und umgekehrt Ein Material mit hohem Widerstand oder einer Spule aus Widerstandsdraht kann als Widerstand fungieren Bei einigen Potentiometern sind die Beziehungen zwischen Widerstand und Sliderposition linear oder logarithmisch Potentiometer sind norma lerweise einfache Drehpotentiometer siehe Bild es gibt aber auch Schiebepotentiometer Ein spezieller Typ von Potentiometer sind digitale Potentiometer bei denen die Regulation des Widerstands intern ber Signale geschieht bung Am HomeLab Modul befindet sich ein 4 7 kO Drehpotentiometer Das Potentiometer ist mit der Masse und dem 5 V Potential angeschlossen und der Schiebekontakt ist am Kanal 3 des analog digital Konverters an geschlossen So kann der Spannungsoutput des Potentiometers zwischen 0 und 5 V reguliert werden Der digitale Wert der Poten
112. ek ist ein Set von Funktionen welches f r das HomeLab Kit und AVR Controller entworfen wurde Die Nutzung dieser Bibliothek macht das Programmieren wesentlich einfacher und effektiver Die neuste Version der Bibliothek kann von der HomeLab Webseite heruntergeladen werden Diese Bi bliothek sollte in den gleichen Ordner installiert werden in dem sich auch Wi nAVR befindet 4 Virtualer COM Port Treiber Der Treiber erm glicht den Anschluss des USB JTAG ICE Programmierger tes an den PC Er muss vor Anschluss des Programmierger tes installiert werden Der Dateiname des Treibers ist CDM x xx xx exe wobei x f r die Versions nummer steht Nach der Installation des Treibers kann das JTAG ICE Program mierger t ber den USB Port angeschlossen werden und Windows wird es auto matisch erkennen Folgende Meldung sollte in der Taskleiste zu sehen sein i Found New Hardware x USB Serial Port Abh ngig von der Anzahl vorher bereits definierter virtueller Ports wird Win dows dem neuen Ger t eine Portnummer zuweisen Es wird ein neuer Name f r den COM Port generiert sobald das Ger t an einen anderen USB Port des selben Computers angeschlossen wird Einige AVR Studio Versionen k nnen nicht auf 111 6 Praktische Beispiele das Programmierger t zugreifen wenn die Nummer des COM Ports gr er ist als 10 bzw gr er als 4 wenn es als Debugger genutzt wird Um das zu verhindern kann die Portnummer im Ger temanager v
113. ekte Dieses ist sinnvoll wenn nur mit dem HomeLab AVR Microcontroller gearbeitet wird Da die HEX und MAP Da teien als Standard gespeichert werden sollte man ihnen allgemeine Namen ge ben z B out hex Achtung Da die HomeLab Library nicht im Linker Konfigurationstab eingef gt werden kann muss der Befehl lhomelab an den Namen der MAP Datei ange h ngt werden 129 6 Praktische Beispiele Project configuration x Common Compiler Linker Assembler Files CPU settings Name Size Modified CPU ATMegal28 hd blinkingLED Clock 14 745 600 0 Hz Headers Doe FLASH EEPROM ra Other Bytes Sources Internal RAM 4096 Bytes Max Clock 16 MHz EEPROM 4096 Bytes _ External SRAM 4 WW blinkingLED Size 1014 HEX file name out hex MAP file name out map Ihomelab Set as defaut Wenden Sie die Einstellungen im Compiler Tab an wie auf dem folgenden Screens hot gezeigt Bevor Sie auf OK klicken sollte die Compilerkonfiguration ebenfalls als Standard gesetzt werden 130 6 1 Anfang x x x Common Command avr gcc Optimization level s Optimize for size Project configuration x Linker Assembler mcall prologues Expanded function prologues smaller code Wstrict prototypes See man avr gcc for details Wall Turn on all optional warnings g Produce debugging information
114. ellen Das Taktsignal f r die Daten bertragung wird vom Taktgeber des Controllers generiert und der Nutzer kann eine Zahl von 1 bis 4096 eingeben durch welche die Taktrate dividiert wird Das Ergebnis wird dar ber hinaus jenach Modus durch 2 8 oder 16 dividiert Das Problem ist dass nicht al le Taktfrequenzen so dividiert werden k nnen dass das Ergebnis eine Standard Baud Rate ergibt Bei einigen Frequenzen kann die Baud Rate bis zu 10 vom Standardwert abweichen Die Datenbl tter des AVR beinhalten Tabellen mit An gaben zu den typischen Taktfrequenzen Baud Raten den n tigen Multiplikato ren um die Baud Raten zu erreichen sowie den m glichen Rechenfehlern Da die Daten bertragung unabh ngig vom Prozessor und viel langsamer ge schieht ist es n tig zu best tigen dass das Interface f r das n chste Wort bereit ist bevor eine weitere bertragung stattfindet Das kann gew hrleistet werden indem das Ready Bit des Sendepuffers beachtet wird welches anzeigt ob der Puffer bereit ist ein neues Wort zu empfangen oder nicht Der Controller startet mit einen aktivierten Ready Bit Sobald ein Wort bertragen wird und der Puffer leer ist wird das Ready Bit high gesetzt Der Empfang eines Wortes ist wird durch ein spezielles Status Bit gekennzeich net Zus tzlich gibt es Status Bits welche Rahmenfehler Parit tsfehler und Puf 47 3 AVR Mikrocontroller fer berl ufe anzeigen Ein Puffer berlauf tritt auf wenn das
115. en Sie auf Next Achtung Fehlt der AVR GCC in der Compilerliste ist er nicht richtig installiert In diesem Fall muss die WinAVR Software installiert werden bevor mit dem Pro grammieren begonnen wird 113 6 Praktische Beispiele Welcome to AYR Studio 4 Atmel AVR Assembler 3 Im nun folgenden Dialogfeld sind die Debuggerplattform sowie der Mikrocon troller auszuw hlen Das HomeLab kit nutzt die JTAG ICE Debuggerplattform und den ATmega128 Mikrocontroller Klicken Sie nach der Auswahl auf Finish 114 6 1 Anfang Welcome to AYR Studio 4 Select debug platform and device Debug platform Device AVA Dragon ATIOCAN128 AVR ONE AVR Simulator ATmegal6 AVA Simulator 2 ATmegal62 ICE200 ATmega169 ICE 40 ATmega32 ICE50 ATmega323 JTAG ICE ATmegab4 JTAGICE mkil zi Pott Auto y I Open platform options next time debug mode is entered Ver 4 17 666 lt lt Back Next gt gt Cancel Help 4 Nun wird der Projektraum erstellt und ein neues Fenster ffnet sich in wel chem mit dem Programmieren begonnen werden kann 115 6 Praktische Beispiele AYR Studio labor1 c ioj xj B Eile Project Build Edit view Tools Debug Window Help 8x EN Ba ae ua SS LS Ei Trace Disabled ARALAR A N nun Ex B labor1 default m CPU Ta Source Files labor1 c Name 3 Header Files 4D AD_CONVERTER 3 External Dependencies D ANALOG_CO
116. en der Kommunikationsschnittstelle steuert Ein Controller verf gt ber eine vor programmiertes Set von Buchstaben mit einem eigenen Index f r jeden Buchstaben jede Nummer sowie je des Symbol Die Darstellung des Textes auf dem Bildschirm erfolgt einfach gesagt indem die Indizes zum Controller gesendet werden Tats chlich m ssen jedoch weitere Kontrollbefehle bermittelt werden bevor irgendetwas dargestellt werden kann Da es viele verschiedene Ausf hrungen von LCDs gibt die jeweils un terschiedlich gesteuert werden ist es wichtig sich mit dem Datenblatt jedes LCDs vertraut zu machen Alphanumerische LCDs besitzen normalerweise eine passive Matrix Hier erfolgt die Erneuerung des elek trischen Feldes der Segmente turnusm ig Aus diesem Grund sind Bildschirme mit einer passiven Matrix langsamer und Darum sind die Bildschirme mit passiver Matrix langsamer und bieten weniger Kontrast als Bildschrime mit aktiver Matrix Bei Aktivmatrix Bildschrimen wird die Ladung jedes einzelnen Segments durch einen eigenen Transistor gesteuert Einige LCDs haben einen reflektierenden Hintergrund andere haben Hintergrundbeleuchtungen und wieder andere sogar verschiedene Hintergrundbeleuchtungen Die Segmen te eines alphanumerischen LCDs haben jedoch immer nur eine Farbe In der Regel sind sie schwarz es gibt jedoch auch Bildschrime mit wei er oder farbiger Schrift bung Am digitalen I O Modul des HomeLab ist ein alphanumerisches 2x 16 Zeichen gro
117. en inversen Werte der Outputspannung zu den korrigierten inversen Werten der gemessenen Distanz inklusive einer Trendlinie abgebildet Zur Verein fachung wurde die Output Spannung schon in 10 Bit 5 V Werte des ADC mit Vergleichspannung konvertiert 0 090 0 080 f x 0 0001831x 0 0030927 0 070 0 060 0 050 0 040 1 d k 0 030 0 020 0 010 0 000 50 100 150 200 250 300 350 400 450 500 ADC Abbildung 6 24 Graph zur linearen Darstellung von ADC Wert und Entfernung Wie der Graph zeigt berschneiden sich die blaue Trendlinie und die Punkte des Graphen fast genau Dieses wird durch die Nutzung einer Korrektur Konstante erreicht Diese Konstante wird mit der trail and error Methode gefunden es werden dabei viele Variablen getestet bis diejenige gefunden ist die den Graph mit der Trendlinie berlappen l sst Im abgebildeten Graph ist die Korrektur Konstantet 2 das bedeutet zu allen rea len Entfernungen muss 2 hinzuaddiert werden Daruch verl uft der Graph nahezu gleich der Trendline und 194 6 5 Sensoren es kann f r die Relation zwischen Entfernung und Spannung verallgemeinert folgende Formel angenommen werden 1 d k a ADC b wobei d Entfernung in cm k Korrektur Konstante gefunden mittels trial and error Methode ADC digitalisierter Wert der Spannung a lineares Element Wert wird durch die Trendlinien Gleichung bestimmt b freies Element Wert wird durch die Trend
118. enantriebsplatine Power plate Linienfolgesensoren Ber hrungssensoren Geh useblech PCB Rohteil Motorenbefestigungsprofil Reifen Batterie Kabel Muttern Weiteres Zubeh r Total Kosten in EEK Gesch tzte Arbeits und Produktionskosten f r ein einzelnes Modell Arbeit Fr sen der Bauteile Marke M LE149 6 43 uC ATmegal28 Actuator Board v1 2 TP LFS QRD1114 TS Microswitch ABS Al L 60 10 mm NI MH 9 6 V Fr sen der PCBs Sto stangen Bau des Roboters Bau der Sto stangen l ten der Komponenten Programmierarbeit Erstellen der Dokumentation Total Vorraussichtliche Kosten des Roboters 7845 Anzahl 2 il 1 NNN BO Or RRR o Zeit h 1 0 5 0 5 1 5 3 11 Preis 500 900 700 500 30 25 50 50 10 30 350 20 50 100 Preis 300 500 250 300 300 250 Kosten 1000 900 700 500 240 200 200 100 20 60 350 200 50 100 4620 Kosten 300 250 125 300 1500 750 3225 Die Kostenkalkulation des Roboters basiert auf gesch tzten da es sich um ein Lehrprojekt handelt und aus diesem Grund mehr Zeit f r die Arbeit und Konstruktion verwendet wird und keine direkte Bezahlung erfolgt Daher spiegelt der berechnete Arbeitsaufwand keine reale Situationen wider Projektmanagement Das mechatronische System Roboter ist in Gruppenarbeit mit straffem Zeitplan und Budget ent
119. endendes Zeichen void usart_send_string usart port char text Blockierende String bertragung Parameter port USART Schnittstellenvariable text Zeiger auf einen String char array Der String muss mit einer Null enden bool usart_has_data usart port berpr ft Empfangsspeicher auf Daten Parameter port USART Schnittstellenvariable Gibt true zur ck wenn Zeichen im Empfangsspeicher und false wenn nicht char usart_read_char usart port 83 5 Robotic HomeLab Kit Liest ein Zeichen aus dem Empfangsspeicher Zuvor muss der Nuter ber pr fen ob tats chlich ein Zeichen empfangen wurde Parameter port USART Schnittstellenvariable Gibt Zeichen aus bool usart_try_read_char usart port char symbol Liest ein Zeichen aus dem Empfangsspeicher falls eins vorhanden ist Pa rameter port USART Interfacevariable symbol Verweis auf die Variable des Zeichens Wenn ein Zeichen im Empfangsspeicher vorhanden ist wird es der betreffenden Variable zugeschrieben Gibt true aus wenn ein Zeichen im Empfangsspeicher vorhanden ist und false wenn nicht Beispiel Die USART Schnittstelle ist konfiguriert um 8 Datenbits ein Stop Bit 9600 bps Baudrate und keinen Parit tsmodus zu nutzen Das Programm sendet einen String wartet bis die Zeichen empfangen wurden und lie t sie dann aus include lt homelab usart h gt Nutze USART Schnittstelle 0 usart port USART 0 int m
120. equency Interrupt f r das Ereignis ISR TIMER1_CAPT_vect Counter to 0 TCNT1 0 43 3 AVR Mikrocontroller Das Ergebnis ist nur g ltig wenn der Counter noch kein Overflow hatte if TIFR 1 lt lt TOV1 Berechnen der Frequenz von der Periode frequency unsigned long 8000000 unsigned long ICR1 else Frequenz ist weniger als 122Hz frequency 0 Setzt die Counter Overflow Flagge auf 0 TIFR amp 1 lt lt TOV1 int main Registriert eine rising front Prescaler Wert auf 1 NEGRIBS NO lt lt IEHS I EL ENIE lt lt ZES10 E Erlaubt Ereignis Interrupts TIMSK 1 lt lt TICIE1 Erlaubt global Interrupts sei Endlosschleife while 1 continue Das Programm l st jedes mal bei einer Rising Front im externen Signal einen Interrupt aus W hrend des Interrupts berpr ft das Programm den Counter auf einen Overflow dass kann passieren wenn die Frequenz des Signals un ter 122Hz 8 MHz 216 ist und in so einem Fall spiegelt der Wert des Counters die echte Periode nicht mehr wieder Die Frequenz wird berechnent indem man mit 32 Bit Nummern die Inverse der Periode bekommt Als erstes setzt man den Counter auf 0 weil der Timer mit dem gleichen Taktsignal wie der Prozessors arbeitet und jede Befehlsausf hrung nach dem externen Event die zu messende Periode verk rzt und damit das Ergebnis verf lscht Die maixmale gemessene
121. er ndert und auf einen Wert zwischen COMO und COMA einstellt werden See the complete procedure here Ein neues Projekt erstellen Um ein Programm f r den Controller zu schreiben muss man einen Projektraum erstellen Das Projekt beinhaltet typischerweise unterschiedliche Dateien wie Quell codes Headerdateien kompilierte Programmdateien usw Es wird dringend da zu geraten f r jedes Projekt einen separaten Ordner zu erstellen Diese Funktion wird auch vom New Project Wizard angeboten Wird ein neues Projekt mit Hilfe des Wizards erstellt sind folgende Schritte zu durchlaufen 1 ffnen Sie AVR Studio und klicken Sie auf New Project Falls sich das Dialog feld nicht automatisch ffnet w hlen Sie Project New project aus der Men leiste aus Klicken Sie auf Next 112 6 1 Anfang Welcome to AYR Studio 4 F New Project E Open Recent projects Modified Ver 4 17 666 IV Show dialog al startup 2 In dem n chsten Dialogfeld geht es um den Compiler und die Starteinstellun gen W hlen Sie den AVR GCC Compiler aus F gen Sie dann links den Namen des Projekts und den Hauptquelldateinamen ein Der Quelldateienname sollte die Endung c haben Au erdem sollten noch zwei Ankreuzfelder angeklickt werden welche einen Neuen Ordner und die Startdatei erzeugen Man sollte auch den Ordner angeben wo die Projektdateien erstellt werden Nachdem die se Einstellungen vorgenommen wurden klick
122. er Displays mit denen gedruckte Texte nachgebildet werden k nnen gro er Beliebtheit Die Ersten E Paper elektronisches Papier bestanden aus Kugeln mit verschieden farbigen Seiten welche in einem elektrischen Feld gedreht wurden Neuere E Paper enthalten kleine Kapseln in denen geladene Partikel zweier Farben durch ein elektrisches Feld dahin gehend beeinflusst werden ob sie herabsinken oder an der Oberfl che bleiben sollen Die letzten beiden Bei spiele wurden zur Erl uterung diverser Anzeigetechniken dargestellt sie werden im HomeLab jedoch nicht 165 6 Praktische Beispiele weiter verfolgt 6 4 1 7 Segment LED Anzeige Notwendiges Wissen User Interface Module 2 Delay 2 7 segment LED Display nv Light emitting Diode Theorie Die 7 Segment LED Zifferanzeige ist ein Display welches aus sieben in Form einer Acht angeordneten LEDs besteht Durch Ein oder Ausschalten der entsprechenden LEDs Segmente ist es m glich Zahlen von 0 9 sowie einige Buchstaben darzustellen ca f g b e c d O ap a b c d e f g dp Abbildung 6 11 Positionierung der Anzeigensegmente des LED sowie elektrisches Schema Elektrisch werden alle Anoden der LEDs an einer Anode am Pin ca angeschlossen Die LEDs leuchten durch Schalten ihrer Kathoden a b c Es gibt auch andere Verbindungen bei denen die Anzeigen eine gemein same Kathode cc haben Allgemein werden verschiedene Zifferanzeigen zur Darstellung mehrstelliger Ziffern genut
123. er Register des Debuggers des ATmega128 Debuggen eines Programms bedeutet dass man nach Fehlern im Programm sucht Dazu gibt es Programme genannt Debugger welche erlauben das Pro gramm Schritt f r Schritt auszuf hren und an den notwendigen Stellen zu stop pen Eine Implementierung des Programms erm glicht das berpr fen von Wer ten einer Variable in jeder Phase des Programms sowie des Inhalts der Regis ter und der Sequenz des Ausf hrens des Programms Debugging ist sehr wich tig wenn man mit komplexeren Programmen arbeitet in denen die Fehlersuche h ufig schwierig ist Bei der Arbeit mit Mikrocontrollern ist es wichtig dass eine Schritt f r Schritt Implementation des Programms im Controller stattfindet wo durch die Ver nderung des tats chlichen Outputs und auch die Werte der Regis ter gesehen werden k nnen Zur Nutzung eines Debuggers m ssen zwei erf llt sein Der Mikrocontroller muss das Debugging unterst tzen und man muss ber 123 6 Praktische Beispiele die notwendige Hardware verf gen n mlich den JTAG Programmer welcher Debuggen erlaubt G nstigere Programmierger te welche das ISP Programmier Interface nutzen k nnen zwar kompilierte Programme in den Controller laden aber nicht unbedingt debuggen Um das Programm im Debugmodus mit dem AVR Studio zu starten sollte es zuerst durch build F7 kompiliert und daraufhin mit dem Befehl run F5 gest artet werden Zuvor k nnen break points F9 an bestimmten S
124. er andere mit dem Wider stand Normalerweise haben Mikrocontroller eingebaute pull up oder down Widerst nde daher ist es nicht notwendig einen Widerstand in den Schaltkreis einzubauen AVR Mikrocontroller haben beispielsweise 20 KQ 50 kQ pull up Widerst nde an ihren I O Pins Dar ber hinaus muss noch erw hnt werden dass mechani sche Schalter ein weiteres Problem haben den switch bounce Hierdurch wird beim Schalten in sehr kleinen Abst nden die Verbindung durch die Schwingung des mechanischen Schalters unterbrochen Die Beispiele dieses Kapitels werden nicht durch den switch bounce beeinflusst das Problem wird im n chsten Kapitel ausf hrlicher bearbeitet bung Es gibt drei Druckknopf Schalter am digitalen I O Modul Diese verbinden die Pins den Mikrocontrollers mit der Erde aber nicht direkt durch einen Widerstand Auf diese Weise soll ein Kurzschluss vermieden werden wenn der Knopf gedr ckt wird w hrend der Pin als Output definiert wird Die Schalter besitzen einen pull up Widerstand welcher aber einen viel gr eren Widerstand als die Schutzwiderst nde hat daher liegt beim Dr cken des Schalter eine Spannung von nahezu 0 V am betreffenden Pin an Die Schalter befinden sich an den PCO PC1 und PC2 Pins Um den Status der Schalter zu lesen m ssen die betreffenden Pins des Mikrocontrollers als Input gesetzt werden Man ben tigt nicht die internen pull up Wi derst nde des AVR da die Pins schon externe Widerst nde
125. er den f r den Interrupt gedachten Code ausf hren Jeder Interrupt des AVR Microcontrollers ist an ein bestimmtes Ereignis gebun den Jedes Ereignis hat einen Flag Bit im Status Register welcher den Eintritt des Ereignisses markiert Ereignisse sind ebenfalls an die Register der Interrupt Masken sowie die dazugeh rigen Bits gebunden Wenn das Interrupt Bit des Er eignisses unmaskiert ist und ein Freigniss stattfindet stoppt der Prozessor die Ausf hrung des laufenden Programms f r einige Arbeitszyklen und f hrt das Interrupt Programm aus Nachdem das Interrupt Programm ausgef hrt wurde f hrt der Prozessor mit seinem pausierten Hauptprogramm fort Example Um Interrupts mit der AVR LibC Bibliothek zu nutzen ist es notwendig inter rupt h einzubinden Der Code der ausgef hrt wird wenn der Interrupt stattfin det wird nach einem ISR Keyword geschrieben Der Text innerhalb der Klam mern nach ISR kennzeichnet den Namen des Interrupts Ein Beispiel in C include lt avr interrupt h gt ISR XXX_vect Anweisungen Die generelle Erlaubnis s mtlicher Interrupts wird vom Control und Status register SREG konfiguriert Die Option alle Interrupts sofort zu erlauben oder zu verbieten existiert zum Schutz von Daten Da Interrupts das Ausf hren ei 33 3 AVR Mikrocontroller nes Programms unterbrechen k nnten einige Daten im Hauptprogramm dabei zerst rt oder besch digt werden Solche Situationen k
126. eren Schwingquarze haben eine Pr zision von ca 0 001 wel che temperaturunabh ngig ist Keramische Resonatoren Keramische Resonatoren hneln den Schwingquarzen sind aber aus g nstige ren piezoelektrischen Materialien gemacht Keramische Resonatoren sind in der Regel kleiner als Schwingquarze aber weniger genau 0 5 und weniger stark temperaturabh ngig Externes Taktsignal NC 4 XTAL2 EXTERNAL CLOCK SIGNAL XTAL1 Abbildung 3 19 Using an external clock signal Ein Externes Taktsignal kann mit jedem Ger t erzeugt werden solange die Fre quenz und die Amplitude Spannung im richtigen Bereich liegen Zum Beispiel kann ein externer Taktgeber benutzt werden um ein Taktsignal gleichzeitig an mehrere Microcontroller weiterzugeben 32 3 5 Interrupts 3 5 Interrupts Interrupts k nnen im AVR je nach Controller durch Z hler Kommunikations Interfaces Analog zu Digital Konverter Komparator speziel le Input Output Pins und verschiedene andere Funktionen hervorgerufen wer den Jeder Interrupt kann von der Einheit die ihn generiert entweder zugelas sen werden oder nicht Unabh ngig davon ob der Interrupt zugelassen ist oder nicht gibt es ein 1 Bit Feld Interrupt Flag in der dazugeh rigen Einheit im Con troller welches mit true markiert wird wenn die Interrupt Bedingung erf llt ist Wurde die Interrupt Flag auf true ge ndert wird und der Interrupt zugelas sen dann wird der Controll
127. ergleich blinkender LEDs aufgrund von Interrupts gibt es parallel eine durch Softwareverz gerung blinkende LED include lt homelab pin h gt include lt homelab delay h gt include lt homelab timer h gt include lt avr interrupt h gt Wit Festlegung der Pins der LEDs Il pin led_red RINC 57 pin led_green PIN C 3 Hi Interrupt 161 6 Praktische Beispiele ISR TIMER1_CAPT_vect Status der gr nen LED ndern pin_toggle led_green u Hauptprogramm Wa int main void LED Pins als Output setzen pin_setup_output led_red pin_setup_output led_green Timer in den CIC Modus setzen timerl_init_ctc TIMER1_PRESCALE_1024 TIMER1_CTC_TOP_ICR Maximaler Wert des Timers ist 14400 wodurch Ll ce Remode isilang st Formel 14 7456Mhz 1024 14400 timerl_set_input_capture_value 14400 Dem Interrupt erlauben den Wert zu erreichen timerl_input_capture_interrupt_enable true Globalen Interrupt zulassen sei Endlosschleife while true Softwareverz gerung 1000 ms sw_delay_ms 1000 Status der roten LED ndern pin_toggle led_red Zu Beginn des Programms sieht man dass unabh ngig davon was der Mikrocontroller gerade im Hauptpro gramm macht Interrupts stattfinden und die gr ne LED blinkt 162 6 3 Timer und Verz gerungen L uft das Programm ein paar Minuten wird ein entscheidender
128. etzte in den Spei cher geschriebene Wert als erstes ausgelesen wird Die Stacks im AVR k nnen genutzt werden wenn man mit Subroutinen Interrupts und tempor ren Da ten arbeitet Bevor eine Subroutine oder ein Interrupt ausgef hrt wird speichert der Stack die Adresse im Befehlsz hler bei welcher das Programm unterbro chen wurde Wenn die Subroutine oder der Interrupt ausgef hrt wurde wird die Adresse wieder aus dem Stack gelesen und das Programm f hrt von der Adresse vor der Unterbrechung wieder fort Das Speichern tempor rer Daten im Stack wird normalerweise dann genutzt wenn man mit kleineren St cken Code arbeitet welche keinen reservierten Speicher w hrend ihrer Ausf hrung ben tigen Einfache Assembler Programme werden normalerweise so geschrieben dass es nicht notwendig ist den Stack zu nutzen aber wenn das Programm viele Variablen und Funktionen enth hlt verwendet der Compiler den Stack automa tisch Der Stack der MegaAVR Serie ist physikalisch im Random Access Memory zu finden Einige Modelle der tinyAVR Serie besitzen jedoch keinen Random Access Memory sodass der Stack hier durch eine kleine separate und begrenzte Spei chereinheit realisiert Normalerweise gibt es keinen Compiler f r Modelle ohne Random Access Memory Um in einer hochleveligen Sprache zu programmieren Pascal C C ist es nicht notwendig sich mit der inneren Arbeitsweise eine Mikrocontrollers zu be sch ftigen da der Compiler in diesem Fa
129. fferanzeige Wie kann sie angepasst werden wenn die Anzeige a direkt oder b ber einen Treiber Treiber A6275 gesteuert wird Wenn die 7 Segment Zifferanzeige direkt an Port A des Controllers angeschlossen ist sodass das Seg ment A PAO BPA1 und DP PA7 ist wie lauten dann die Werte des PORTA Registers mit den Ziffern 0 bis 9 Was ist der Unterschied zwischen alphabetischen 4 Bit und 8 Bit LCD Controllern ber welche Pins und wie wird die Hintergrundbeleuchtung der alphanumerischen LCDs reguliert 6 5 Sensoren 6 Welches I O Protokoll nutzt das graphische LCD Erl utern Sie die Bedeutung der I O Pins 7 Wie k nnen Dezimalzahlen in bin re in Text konvertiert werden und umgekehrt 8 Zeichnen Sie die Schichten aus denen ein LCD besteht mittels der twisted nematic Technologie 9 Wie werden Buchstaben auf dem graphischen LCD angezeigt 10 Wie unterscheidet sich ein monochromes schwarz wei LCD von einem Farbdisplay 6 5 Sensoren Sensoren sind Ger te welche jede Form von physikalischen Attributen Temperatur Beleuchtung Kraft Be schleunigung usw in eine verst ndliche Form f r Menschen oder Maschinen bringen Mit der Hilfe von Sensoren erh lt der Mikrocontroller Informationen ber seine Umgebung und trifft Entscheidungen basierend auf diesen Informationen Es gibt viele Arten von Sensoren ca 195 verschiedene Typen werden in Wikipedia aufgelistet Nur Sensoren mit einem elektrischen Outputsignal k nne
130. g 6 20 Verh ltnis zwischen Widerstand R des VT935G und Lichtintensit t E Das Datenblatt des Sensors beinhaltet eine Ann herungsformel f r den Zusammenhang zwischen Beleuch tungsst rke und elektrischem Widerstand Wie im logarithmisch skalierten Graphen rechts dargestellt sind Widerstand und Beleuchtungsst rke nahezu linear abh ngig und bilden eine lineare Funktion wenn folgende Konversion angewendet wird log a b log a log b Die Relation wird durch den Anstieg des Y Faktors Steigung der Geraden beschrieben welcher f r den VT935G Sensor den Wert 0 9 hat Dar ber hinaus ist ein Punkt auf dieser Geraden bekannt Der Widerstand be tr gt 18 5 kO Ra bei 10 lx Beleuchtungsst rke E4 Mittels dieser Koordinaten und der Steigung der Geraden l sst sich nun jeder beliebige Punkt berechnen Das bedeutet wird der Widerstand Rg am Sensor gemessen ist es m glich die Beleuchtungsst rke Eg wie folgt mit der Formel der Geraden zu berechnen log Eg log Ra Rg y log Ea Ep 1018 Ra Rg r log Ea So erh lt man die Formel zur Berechnung der Beleuchtungsst rke bei gegebenem Widerstand Da der Wi derstand nicht direkt von Microcontroller gemessen werden kann befindet sich der Fotowiderstand im Span nungsteiler Die Output Spannung des Spannungsteilers wird durch den ADC zu einer spezifischen Variable konvertiert Zur Bestimmung des Widerstands muss diese Output Spannung U2 zun chst mittels des ADC Wertes berechnet
131. g to Digital Converter 2 Alphanumeric LCD me windows 186 6 5 Sensoren Theorie Abbildung 6 18 Ein Fotowiderstand WA EI Abbildung 6 19 Elektrisches Symbol f r einen Fotowiderstand Ein Fotowiderstand ist ein Sensor dessen elektrischer Widerstand sich je nach einfallender Lichtintensit t ver ndert Je intensiver das Licht ist desto mehr freie Ladungstr ger werden gebildet und umso geringer wird dadurch der Widerstand des Bauteils Durch das keramische Basismaterial f hren zwei externe Metallkontakte des Widerstands zur lichtempfindlichen Membran dessen Widerstand abh ngig von der Geometrie und den Materialeigenschaften ist Da lichtempfindliches Material durch die schmale kurvige Spur zwischen den Elek troden bereits einen hohen Widerstand hat kann der niedrigste totale Widerstand schon bei durchschnittlichen Lichtintensit ten erreicht werden Der Fotowiderstand reagiert hnlich dem menschlichen Auge nur auf be stimmte Wellenl ngen was bei der Auswahl eines solchen Bauteils bedacht werden muss Andernfalls kann es vorkommen dass der Widerstand nicht auf die in der Anwendung genutzte Lichtquelle reagiert Nachfolgend ist eine Tabelle abgebildet welche vereinfacht die Wellenl ngen des sichtbaren Lichts mit den entsprechenden Farben darstellt Farbe Wellenl ngen nm Violett 400 450 Blau 450 500 Gr n 500 570 Gelb 570 590 Orange 590 610 Rot 610 700 Der Fotowiderstand arbeitet innerhalb ei
132. gende Programm dient dazu die gegebene Funktion zu nutzen es erzeugt zwei Verz gerungen in der Endlosschleife 100 ms und 900 ms W hrend der k rzeren Verz gerung wird eine LED eingeschaltet und w hrend der l ngern ausgeschaltet Das Resultat die LED blinkt periodisch ve Das Vorf hrprogramm des HomeLab f r Softwareverz gerungen Es l sst eine LED f r 1 Sekunde aufleuchten include lt homelab pin h gt include lt homelab delay h gt Mi Festlegung des Pins zum Testen der LED pin debug_led PIN B 7 156 6 3 Timer und Verz gerungen Mi Hauptprogramm int main void Setzt LED Pin als Output pin_setup_output debug_led Endlosschleife while true Aufleuchten der LED pin_clear debug_led Softwareverz gerung f r 100 ms sw_delay_ms 100 Ausschalten der LED pin_set debug_led Softwareverz gerung f r 900 ms sw_delay_ms 900 Auch wenn es so aussieht als blinke die LED jede Sekunde dauert es tats chlich etwas l nger da das anspre chen der LED und die Verz gerungsfunktionen ein paar Taktfrequenzen des Mikrocontrollers ben tigen 6 3 2 Hardwareverz gerung Notwendiges Wissen IN Controller module F Counters Timers 2 Pins 2 Delay 2 Timers wha Software delay Theorie Neben der Softwareverz gerung gibt es auch Timer um Unterbrechungen zu erzeugen Timer sind Hardwa rekomponenten die mit einer bestimmten Frequen
133. gr te Vorteil dieser Operatio nen darin dass Bitfolgen zu Bitmasken konvertiert werden k nnen und umge kehrt Abbildung 3 13 Linksshift Das Bild auf der rechten Seite zeigt einen Linksshift Auch wenn ein Bitshift keine logische Operation darstellt und kein zugeh riges Symbol hat wird diese Ope ration in C mit gekennzeichnet Eine Linksshiftoperation wird genutzt um eine Bitfolge in eine Bitmaske umzuwandeln Um beispielsweise die Maske f r das sechste Bit Rang 5 zu erhalten muss das erste Bit um f nf Stellen nach links verschoben werden In C wird diese Operation wie folgt geschrieben REG 0x01 lt lt 5 Ergebnis REG 0x20 Abbildung 3 14 Rechtsshift 24 3 2 Register Der Rechtsshift funktioniert auf die gleiche Weise und wird in C durch darge stellt Rechtsshiftoperationen dienen dazu den logischen Wert eines Bits aus der Bitmaske zu erhalten An einem vorherigen Beispiel wurde bereits gezeigt wie der Wert eines einzelnen Bits gelesen werden konnte Ist dieses Bit nun nicht das niederwertigste sondern zum Beispiel eines mit dem Rang 5 w re das Ergebnis entweder 0x20 oder 0x00 Allerdings wird manchmal ein Ergebnis von 1 oder 0 ben tigt und genau hier kommt die Rechtsshiftoperation zur Anwendung Der Rechtsshift aus dem Beispiel rechts sieht in C folgenderma en aus Annahme REG 0x20 unsigned char x REG gt gt 5 Ergebnis x 0x01 or simply 1 Wird durc
134. h rot gr n oder blau Da die Unterpixel sehr nah beieinander liegen werden sie als ein Pixel wahrgenommen Abbildung 6 14 Der durch Pixel eines graphischen LCDs dargestellte Text Monochrome graphische Displays haben normalerweise eine passive Matrix gro e Farbdisplays auch Computer Bildschirme eine aktive Im Hinblick auf die Farbe des Hintergrunds und der Pixel entspricht das graphische LCD dem alphanumerischen Auch das graphische Display verf gt ber einen separaten Controller welcher die Information ber die Kommunikationsschnittstelle empf ngt und das elektrische Feld f r die Segmente generiert Im Gegensatz zum alphanumerischen LCD welches Text anzeigt indem die Indizes der darzu stellenden Zeichen gesendet werden kann das graphische LCD keine Buchstaben eigenst ndig generieren s mtliche Bilder und Texte m ssen Pixel f r Pixel vom Nutzer generiert werden bung Das HomeLab Kit enth lt ein 84x48 Pixel gro es monochromes graphisches LCD Es ist das gleiche welches auch im Mobiltelefon Nokia 3310 verwendet wird Ein Philips PCD8544 Controller ist am Display angebracht mit welchem ber eine SPl hnliche serielle Schnittstelle kommuniziert werden kann Die Hintergrundbe leuchtung des Displays wird separat gesteuert Die Kommunikation mit dem Display ist nicht sehr schwer aufgrund der vielen Funktionen wird sie hier jedoch nicht erl utert Die HomeLab Library enth lt die daf r notwendigen Funktionen Die Funk
135. h diese Operationen ein Bit vom niedrigsten Rang nach rechts oder vom h chsten Rang nach links verschoben verschwindet es Einige Program miersprachen verf gen jedoch ber rotierende Bitshiftoperationen bei denen ein Bit nicht verschwindet sondern vom niedrigsten zum h chsten Rang wandert oder umgekehrt In C gibt es diese Operationen nicht sie k nnen jedoch bei Be darf vom Programmierer selbst geschrieben werden S mtliche Bitoperationen sind nicht nur mit Registern durchf hrbar sondern auch mit Variablen und Konstanten Letztere k nnen jedoch ausschlie lich als Operanden nicht als Ergebnis genutzt werden AVR Register Um tats chlich mit dem Register eines Mikrocontrollers zu arbeiten ist es not wendig zu wissen wie dieser spezielle Mikrocontroller verwendet wird Zu je dem Mikrocontroller gibt es ein oder mehrere Datenbl tter welche seine Struktur und Funktionalit t beschreiben Dieses Datenblatt enth lt auch Informationen ber die Register Der folgende Abschnitt dient dazu die Registerbeschreibun gen der AVR Datenbl tter zu verstehen 25 3 AVR Mikrocontroller Bit F 6 5 4 3 2 1 0 Lane vonen Fen Dorn uren vom WPCwn J UCSRnA Read Write R R W R R R R R W R W Initial Value 0 0 1 0 0 0 0 0 Abbildung 3 15 Eines der AVR Register Datenblattansicht Die Abbildung zeigt das UCSRnA Register des ATmega128 UCSRnA bezeich net USART Control and Status Register A Dieses Register wird verwendet u
136. haben Wenn der Schalter bet tigt wird hat der entsprechende Bus des Pins den Wert 0 wird er losgelassen den Wert 1 Mit Hilfe von LED Indikatoren kann berpr ft werden ob der Mikrocontroller den Status den Schalters verstanden hat Der Beispielcode zur Benutzung der Schalter basiert auf der HomeLab Pins Bibliothek welche im LED Kapitel eingef hrt wurde Hi Program zum Testen der Schalter des digitalen I O Moduls 24 include lt homelab pin h gt Festlegung der Pins von LED d sowie der Schalter pin leds 3 pin buttons 3 PIN C 5 PIN C 4 PIN C 3 PIN C 2 PIN C 1 PIN C 0 Vi Hauptprogramm int main void unsigned char i Setzt die LED Pins als Output und die Schalter Pins als Input for i 0 i lt 3 i 145 6 Praktische Beispiele pin_setup_output leds i pin_setup_input buttons i Endlosschleife while true Jeder Schalter hat eine zugeh rige LED die aufleuchtet wenn er bet tigt wird for i 0 i lt 3 i pin_set_to leds i pin_get_value buttons i Im Beispiel werden LEDS und Kn pfe als Array definiert das erm glicht es Sie in einer for Schleife zu nutzen Wird das Programm gestartet werden die LED Pins als Output und die Schalter als Input gesetzt In der Endlosschleife des Programms wird durchgehend der Status der Schalter abgefragt welcher den Status der dazugeh rigen LED bestimmt Der erste Sch
137. har num_samples Konvertiert eine gew nschte Anzahl analoger Werte eines bestimmten ADC Kanals zur digitalen Werten und berechnet den Mittelwert Die Funktion blockiert channel ADC Kanalnummer 0 bis 7 num_samples Anzahl der Werte f r die Berechnung 1 bis 64 Liefert einen digitalen 10 bit Wert 80 5 4 HomeLab Bibliothek Beispiel Der ADC sei initialisiert und zwei analoge Kanalwerte zu digitalen konvertiert Der Wert von Kanal 0 wird der Variable x zugewiesen und der durchschnittliche Wert von Kanal 1 der Variable y include lt homelab adc h gt int main void unsigned short x y Initialisierung ADC Vergleichsspannung von AVCC Takt ist 8 mal langsamer als der Systemtakt adc_init ADC_REF_AVCC ADC_PRESCALE 8 Konvertierung des Wertes von Kanal 0 x adc_get_value 0 Konvertieren des Wertes von Kanal 1 und Errechnung des Durchschnitts y adc_get_average_value 1 10 5 4 4 Serielles Interface Diese Bibliothek bietet die Funktionen f r das AVR asynchrone serielle Interface Datentypen usart Datentyp f r USART Interfacekontroll Status und Datenregisteradres sen usart Variablen sollten zu Beginn des Programms initialisiert werden F r die Initialisierung gibt es eine Macrofunktion USART dessen einziger Parameter f r den Index des Interface ist 0 oder 1 usart_databits Z hlen der Datenbits Aufz hlungsdatentyp M glichkeiten 81 5 Roboti
138. he bung mit einem analogen Sensor durchf hren Ben tigte Ausr stung HomeLab Basic kit Sensor and Motor Add On kit AVR Programmiersoftware 65 5 Robotic HomeLab Kit Arbeitsanweisungem 1 F hren Sie die bung mit dem Potentiometer durch http home roboticlab eu en examples sensor potentiometer 2 F hren Sie die allgemeine Aufw rm bung durch http home roboticlab eu en exercises sensor 3 Absolvieren Sie die gruppenspezifische Aufgabe diese wird rechtzeitig vom bungsleiter bekannt gegeben 4 Beantworten Sie die Fragen gruppenspezifische Fragen werden rechtzeitig vom bungsleiter bekannt gegeben Bericht Der elektronische Bericht muss nach der eigenst ndigen Arbeit eingereicht wer den und folgende Struktur aufweisen Arbeitsbericht Das Ziel Kurze Beschreibung der durchgef hrten Arbeit Ausdruck des Algorithmus und Quellcodes f r die Schritte 2 und 3 Achtung Der Quellcode muss kommentiert und farbig gekennzeich net sein um das Farbsystem korrekt in MS Word oder einem OpenOf fice Programm darzustellen k nnte das Programmer s Notepad genutzt werden Anworten auf die Fragen Schritt4 Ergebnisse und Kommentare L sungen HEX Dateien von Schritt 2 und 3 Der Bericht muss den eigenen Namen die Nummer des bungsabschnitts das Datum sowie die Namen der Gruppenmitglieder bei einer Gruppenarbeit ent 66 5 3 HomeLab Hardware halten Er sollte kurz und pr z
139. hen dem Ein und Ausschalten ver ndert Dadurch wird f r das Auge der Effekt erzeugt dass sich die Helligkeit der LED ndert Pulsweitenmodulation 3 Erstellen Sie einen Programmteil in C welcher eine Verz gerung von 10 us 10 bei einer Taktfre quenz von 14 7456 MHZ erzeugt Verifizieren Sie theoretisch dass die Verz gerung funktioniert indem Sie die Assembler Befehle in der lss Datei des kompilierten Programms kommentieren Fragen 1 Welche Methoden zur Erstellung von Verz gerungen gibt es 2 Wie wird eine Softwareverz gerung erstellt Von welchen Parametern h ngt die Softwareverz gerung ab 3 Warum werden Hardwareverz gerungen Timer mit Interrupts genutzt 4 Berechnen sie die die berlauf Interruptperiode f r einen 8 Bit Timer wenn Taktfrequenz 16M Hz und Frequenzteilerfaktor 1024 betragen 5 Was ist ein Echtzeitgeber in einem Computer 6 Was geschieht am 19 01 2038 in der Computerwelt 7 Wozu k nnen AVR Timer noch genutzt werden au er um Zeit zu z hlen 8 Welche Indizes k nnen genutzt werden um den ATmega128 Timer 0 einzustellen Was kann mit diesen Register ver ndert werden 9 Wie lang ist die l ngste Zeitspanne von Unterbrechungen in Millisekunden die mit einem ATmega128 mit einer Taktfrequenz von 14 7456 MHz erreicht werden kann Stellen Sie die Berechnung dar 10 Hat es einen Effekt auf die Genauigkeit von Timern wenn der Prozessor mit der Ausf hrung eines 164 Programms stark ausgelastet i
140. htung des Busses Beispiel Aufgabe Die Pins 0 3 von Bus B sollen Input sein die Pins 4 7 Output setzen Sie Pin 5 high und lesen Sie die Werte der Pins 0 3 in einer Variable aus Der C Code sieht wie folgt aus include lt avr io h gt int main unsigned char x Pins 0 3 als Input 4 7 als Output DDRB 0xF0 da Weim 8 la PORTB 1 lt lt PINS Liest den Wert der Pins 0 3 x PINB amp 0x0F In diesem Beispiel wird der Input im Hi Z hochohmig Modus verwendet Im Wesentlichen liegt an diesem Input keine Ladung an Diese Betriebsart k nnte hilfreich sein wenn der Pin als Datenbus genutzt wird Es ist sinnvoll einen Pull Up Widerstand f r den Input zu nutzen wenn der Pin als Taste Schalter oder anderes verwendet wird wobei er mit der Masse verbunden ist Hierf r muss das korrespondierende Output Bit im Inputmodus high gesetzt werden Als Folge daraus muss zwischen Stromversorgung und Input ein Widerstand eingef gt werden welcher die Inputspannung hoch h lt bis irgendetwas sie heruntersetzt Ein solcher Pull Up Widerstand dient dazu ein Floaten des Inputs aufgrund von Reibungselektrizit t oder anderen Einwirkungen zu verhindern Nachdem der Controller gebootet wurde befinden sich s mtliche IO Busse standardm ig im hochohmigen Inputmodus Normalerweise werden die Pins am IO Bus neben den logischen Anschl ssen auch f r andere Peripherieschnittstellen genutzt Soll eine alternat
141. ichtung in der sich der Motor dreht h ngt davon ab wie der der Strom durch den Motor flie t Wenn der Motor sich nur in eine Richtung bewegen muss kann der Strom ber ein Relais oder ein einfache Schaltung kommen Falls 206 6 6 Motoren der Motor sich in zwei Richtungen drehen muss wird ein Schaltkreis der Vierquadrantensteller H Bridge genutzt Abbildung 6 30 Die Arbeitsweise eines Vierquadrantenstellers genutzt an Schaltern Der Vierquadrantensteller besitzt vier Transistoren die den Strom lenken um den Motor zu betreiben Das elektrische Schaltbild des Vierquadrantenstellers ist hnlich des Buchstaben H daher der englische Name H Bridge Das Besondere am Vierquadrantensteller ist dass man damit beide Polarit ten am Motor anlegen kann Das Bild auf der Seite zeit das grunds tzliche Schema eines Vierquadrantenstellers am Beispiel der Schalter Werden zwei diagonale Schalter geschlossen arbeitet der Motor Die Drehrichtung des Motors h ngt davon ab welche diagonalen Schalter geschlossen werden Im wirklichen Vierquadrantensteller sind die Schalter durch Transistoren ersetzt welche je nach Stromst rke und Spannung des Motors gew hlt werden Zus tzlich zur Richtungs nderung kann der Vierquadrantensteller auch die Geschwindigkeit des Motors ver ndern Dazu werden die Transistoren konstant durch Pulsweitenmodulation ge ffnet und geschlossen Damit ist die Energie die der Motor erh lt irgendwo zwischen vollem und keine
142. ie Kontrollschnittstelle des Treibers wird durch SPI Software realisiert zum Beispiel durch Nutzung einer Software die die Datenkommunikationspins des Programms kontrolliert Alle drei Pins werden durch seg ment_display_init als Outputs gesetzt segment_display_write dient der Darstellung der Funktion welche die Segmentkarte der Markierung vom Array erkennt und diese bitweise zum Treiber bertr gt Die Taktfrequenz mit Softwareverz gerung liegt bei ungef hr 500 kHz Das nachfolgende Beispielprogramm beschreibt die Nutzung der Zifferanzeige Die zuvor beschriebene Funk tion der Bibliothek wird in dem Programm erl utert Das Programm Z hlt Ziffern von 0 bis 9 mit einem Inter vall von etwa einer Sekunde Dieses wird dadurch erreicht dass ein Modul mit einer weitaus gr eren Ziffer verwendet wird Das Beispielprogramm der 7 Segment LED Anzeige des 1 O Moduls des HomeLab Il include lt homelab module segment_display h gt include lt homelab delay h gt Hip Hauptprogramm 169 6 Praktische Beispiele int main void int counter 0 Einrichtung der 7 Segment Anzeige segment_display_init Endlosschleife while true Anzeige der Werte des Timers segment_display_write counter 10 Lange zahlen counter Verz gerung von 1 Sekunde sw_delay_ms 1000 6 4 2 Alphanumerisches LCD Notwendiges Wissen N lcd 2 Alphanumeric LCD Dei OO Periodic interrupt
143. ie Universit ten aber auch an Bastler und Unternehmen die im Rahmen von Projekten mit AVR Mikrocontrollern arbeiten m chten Ziel ist es sowohl Lehrende als auch Lernende dabei zu unterst tzen rasch Er gebnisse zu erzielen so soll Sch lern und Studenten neues Wissen vermittelt und das Leben der Lehrenden erleichtert werden Plattform F r die praktischen Beispiele in diesem Buch wird ein AVR ATmega128 Mikro controllersystem das sogenannte HomeLab Kit als grundlegende Plattform ge nutzt Die AVR Mikrocontroller sind neben Microchip PIC die am weitesten verbreiteten in der Hobby Robotik Community Dar ber hinaus sind siebeson ders gut f r Lehrzwecke geeignet Das Buch ist systematisch in f nf Kapitel unterteilt 1 Das erste Kapitel gibt eine kurze Einf hrung in die grundlegenden elektro nischen Prinzipien und Berechnungen Die vorgestellten Beispiele und Formeln sind sehr n tzlich f r viele folgende Aufgaben Au erdem wird die Program miersprache C kurz vorgestellt und ein paar grundlegende Anwendungsbei spiele werden diskutiert 2 Im zweiten Kapitel wird am Beispiel des ATmega 128 ein berblick ber 8 bit AVR Mikrocontroller gegeben Dieses Kapitel basiert weitgehend auf dem Da tenblatt des ATmega Mikrocontrollers stellt die ben tigten Informationen jedoch 1 Einleitung vereinfacht und bersichtlicher dar Hier werden allgemein die Grundfunktio nen eines Mikrocontrollers er rtert 3 Dieses Ka
144. iedrig und daraufhin hoch Normalerweise gibt es zwei Ger te die an der seriellen Schnittstelle angeschlossen werden Das eine dient zur bertragung von Information durch Ver nderung des Pinwertes das andere zum Empfang durch Erfassung des Pinwertes Der bertragungspin ist mit TX der Empfangspin mit RX gekennzeichnet Auf 223 6 Praktische Beispiele einer Leitung geht der Informationsfluss immer nur in eine Richtung Um Daten in die andere Richtung zu senden muss eine andere Leitung genutzt werden Werden Daten ber zwei Leitungen gleichzeitig gesendet wird dieses Full Duplex Bus genannt Abbildung 6 37 Der Rahmen des UART mit S als Startbit 0 7 als Datenbits P als Parit tsbit falls dieses existiert und T als Stopbit oder 2 Die Daten bertragung erfolgt ber den Rahmen der UART Schnittstelle welcher je nach Konfiguration 5 bis 9 Datenbits enth lt Am h ufigsten sind 8 Bits 1 Byte Zus tzlich zu den Datenbits werden durch den Rahmen weitere Bits bertragen welche dazu genutzt werden den Augenblick der Ankunft von Daten sowie des Abschlusses der bertragung auf der Empf ngerseite zu erkennen Ersteres wird Startbit genannt und hat immer den Wert 0 Das zweite ist das Stopbit welches immer den Wert 1 hat Vor dem Stopbit gibt es in einigen F llen noch das Parit tsbit Dieses dient zur Kontrolle der Richtigkeit Das Parit tsbit zeigt an ob die Anzahl der Einsen in den Datenbits gerade oder ungerade ist
145. iel Die Platine des Controllermoduls ist mit einem RS 232 male Stecker ausger stet Dar ber kann der Controller an einen Computer oder einen anderen Controller angeschlossen werden Um ihn an einen Computer anzu schlie en muss ein normales nicht invertiertes Kabel genutzt werden dessen eines Ende male und anderes Ende female ist Um den Controller an einen anderen Controller anzuschlie en muss ein Kabel verwendet werden bei dem RX TX sowie Kontrollsignale f r die Stromst rke senkrecht invertiert sind und beide Ste cker female sind Das invertierte Kabel wird auch Nullmodemkabel genannt Nachfolgend ist ein Beispiel programm zur Nutzung der UART Schnittstelle dargestellt Wird das Programm gestartet bermittelt es ein Willkommen ber die RS 232 Schnittstelle und zeigt empfangene Nachrichten an Es werden das LCD Dis play und die USART Bibliotheken genutzt 224 6 7 Datenschnittstellen Anschluss des Controllermoduls des HomeLab an einen Computer tiber die RS 232 Schnittstelle Im Beispiel wird ein digitales Input Output Modul mit LCD Display verwendet Der im Terminal des Computers eingegebene Text wird auf dem LCD Display angezeigt Hei include lt homelab usart h gt include lt homelab module lcd_alpha h gt 2 Festlegung der USART Schnittstelle usart port USART 0 Hauptprogramm Wy int main void char c unsigned char row 1 Installation der USART Schnit
146. ikrocontroller die auf der ARM Technologie basieren Drittanbieter haben sehr h ufig Entwicklungsplatinen und Umgebungen gebaut die auf den zuvor genannten Mikrocontrollern basieren Zum Beispiel Arduino VAR BASICStamp PIC und Lego NXT ARM Die zur Entwicklung von Ho meLab notwendigen Grundvoraussetzungen welche in diesem Buch beschrie ben werden basieren auf dem AVR ATmega127 Mikrocontroller Aus der Viel zahl der zur Verf gung stehenden Mikrocontroller und Entwicklungsplatinen gilt es nun das f r den jeweiligen Bedarf am besten geeignete Produkt aus zuw hlen Allgemein lassen sich die folgenden 4 Eigenschaften unterscheiden Preis technische Merkmale Entwicklungsumgebung und Kundenbetreuung Be merkenswerte technische Merkmale sind Arbeitsgeschwindigkeit des Prozessors legt die Arbeitsgeschwindigtkeit des Chips fest Speicherkapazit t des Programms bestimmt die Gr e des Programms das auf dem Chip installiert werden kann Datenspeicherkapazit t gibt die m gliche Datenverarbeitungsmenge des Programms an Anzahl der Input Output Schnittstellen sowie deren Funktionen unter schiedliche Schnittstellen bieten differenzierte M glichkeiten Anzahl der Timer wichtig f r das Zeitverhalten der Anwendung 11 2 Mikrocontroller und Robotik Energieverbrauch von gro er Bedeutung f r mobile Anwendungen In diesem Buch verwenden wir PC Software als Entwicklungsumgebung mit der Programme erstellt und
147. ikrocontroller mit Strom versorgt Da die Betriebsspannung eines Mikrocontrollers h her ist als die der LEDs muss ein Widerstand in Serie mit der LED geschaltet werden um die Stromst rke zu regulieren und f r den n tigen Spannungsabfall zu sorgen Das Kapitel Elektronik enth lt Anleitun gen zur Berechnung des richtigen Widerstands LEDs werden in vielen Formen gefertigt Die meisten LEDs haben runde ei ne H lle mit 3mm oder 5mm Durchmesser und zwei lange metallische Pins Der l ngere Pin ist die Anode der k rzere die Kathode Surface mounted ca sing LEDs SMD Surface Mounted Device sind unten mit einem T gekenn zeichnet um so die Polarit t anzugeben Das Dach des T s steht f r die Anode und der Fu markiert die Kathode Abbildung 6 6 Polarit t von legged und SMD LED s HomeLab bung Das HomeLab Controller Controllermodul hat eine rote LED dessen Anode ber einen Widerstand an die 5V Stromversorgung angeschlossen ist und dessen Kathode am ATmega128 Pin PB7 Um die LED an und auszuschalten muss PB7 138 6 2 Digitale Input Output Pins als Output Pin definiert werden und entweder high oder low gesetzt werden Wenn der Pin high gesetzt wird ist die LED aus wird er low gesetzt ist die LED an Grunds tzlich ist es m glich die LED so anzubringen dass die Anode am PB7 angeschlossen wird und die Kathode geerdet wird Widerstand nicht vergessen dann leuchtet die LED wenn der Pin high gesetzt ist und
148. imer3_fast_pwm_output_mode output_b timer3_fast_pwm_output_mode output_c Initializises timer 1 3 in fast PWM mode In this mode timer counts to a specified value which also determines the period of the PWM signal Timer 1 3 has three 3 output compare units A B and C to generate PWM signals Overflow and compare match interrupts can be used Parameters prescale Prescaler top Timer top value selection Actual value must be specified with register selected as a top value holder output_a Output compare unit A pin configuration output_b Output compare unit B pin configuration output_c Output compare unit C pin configuration void timer1_stop 5 4 HomeLab Bibliothek void timer3_stop Stops timer 1 3 unsigned char timer1_get_value void unsigned char timer3_get_value void Returns timer 1 3 current value Parameters Returns 16 bit timer value void timer1_set_value unsigned char value void timer3_set_value unsigned char value Sets timer 0 2 value Parameters value New 16 bit timer value unsigned short timer1_get_compare_match_unitA_value void unsigned short timer1_get_compare_match_unitB_value void unsigned short timer1_get_compare_match_unitC_value void unsigned short timer3_get_compare_match_unitA_value void unsigned short timer3_get_compare_match_unitB_value void unsigned short timer3_get_compare_match_unitC_value void Returns timer 1 3 output compare unit A B C co
149. in pin bool value Setzt einen Output Pin in den gew nschten Zustand Parameter pin Pin Variable value Gew nschter Status als Bool scher Wert bool pin_get_value pin pin 77 5 Robotic HomeLab Kit Holt Pin Wert Parameter pin Pin Variable Gibt Bool schen Wert true wenn Pin high und false wenn Pin low ist aus bool pin_get_debounced_value pin pin Liest den Pinwert durch den Switch Debounce Filter Das Filtern ben tigt mindestens 8 ms und kann bis zu 100 ms ben tigen je nachdem wann das Bouncing endet Falls es nicht endet wird false ausgegeben Funktionen nut zen Softwareverz gerung Parameter pin Pin Variable Gibt dem Pin den Bool schen Wert true wenn der Pin high ist und false wenn der Pin low oder unbestimmt ist Beispiel Beispiel um einen Pin Wert zu erhalten und zu setzen Pin PCO Wert wird inver tiert und an Pin PC3 angeschlossen include lt homelab pin h gt pin output_pin PIN C 3 pin input_pin PIN C 0 int main void bool value Konfiguriert Pin als Output Pin pin_setup_output output_pin Konfiguriert Pin als Input Pin mit Pull up Widerstand pin_setup_input_with_pullup input_pin Endlosschleife while true 78 5 4 HomeLab Bibliothek Wert eines Input Pins erhalten value pin_get_value input_pin Wert f r den Output Pin setzen pin_set_to output_pin value 5 4 3 Analog Digital Wandler Dies
150. inci Programms entwickelt Die Home Lab Module sind zu verschiedenen Baus tzen zusammengestellt Die Grundaus stattung welche zum Erlernen einfacher digitaler In und Output Operationen dient nennt sich HomeLab Basic kit Der Sensoren und Bedienteil Erg nzungs bausatz besteht aus einer Zusammenstellung von Sensoren Motoren sowie de ren Treibern Das Advanced kit enth lt sowohl das HomeLab Basic kit sowie das Sensors and Actuators Add on kit und dar ber hinaus zus tzliche Module Die HomeLab Basic und Advanced kits eignen sich zur Durchf hrung von Ex perimenten als Basisplattform f r Roboter sowie andere mechatronische Regel techniken Das HomeLab wird st ndig weiterentwickelt daher lohnt es sich re gelm ig nachzuschauen ob neue bungsaufgaben oder Modul Updates ver ffentlicht wurden Dar ber hinaus ist es lohnenswert die Versionsnummern der Module zu berpr fen da einige bungsaufgaben und Beispiele in neueren Versionen verf gbar sind Die Nutzung von DistanceLab erh ht den Nuten von HomeLab ma geblich DistanceLab erm glicht es die HomeLab Hardware ber das Internet zu betreiben HomeLab Webseite http home roboticlab eu DistanceLab Webseite http distance roboticlab eu 58 5 1 Ganzheitliches Konzept der Robotik 5 1 Ganzheitliches Konzept der Robotik Die Ingenieurausbildung kann sich heutzutage nicht mehr auf einer bestimmten Lehrmethode aufbauen wie zum Beispiel klassische universit re Vo
151. ise verfasst sein wobei die Qualit t wichtig ist nicht die Quantit t Sie sollten darauf vorbereitet sein die L sung zu pr sentie ren oder den Quellcode zu kommentieren Der Bereicht muss in den Bereich f r Hausarbeiten des E Learning Systems hochgeladen werden Der letzte Abgabe termin f r den Bericht ist eine Woche nach Beginn der bung Lekt ren 1 HomeLab Support Center http home roboticlab eu 2 ATmega128 Datenblatt 3 Sharp Infrarotsensor Datenblatt 4 http www avrfreaks net 5 3 HomeLab Hardware Die Module des Robotik HomeLab sind in unterschiedliche Baus tze kits eingeteilt um so die am besten geeignete Ausstattung f r die Bed rf nisse eines Studenten oder einer Schule ausw hlen zu k nnen Das einfachste Set ist das HomeLab Basic kit welches die f r grundlegende Mikrocontrollerex perimente notwendigen Komponenten enth lt Dar ber hinaus verf gt es ber eine Anwendungsoberfl che mit LCD Display Das Basic kit kann zusammen mit dem Motor and Sensor Add On kit verwendet werden Letzteres beinhal tet verschiedene Arten von Motoren und Sensoren sowie zus tzliches Zubeh r und Kommunikationsmodule Das Sensor and Motor Add On kit kann nicht oh ne das Basic kit verwendet werden da der Mikrocontroller nicht in dem Add On enthalten ist Au erdem enth lt das Add On kit RFID sowie Machine Visi on Module Basic und Add On kit sind komfortabel im Gebrauch und k nnen bequem transportiert werden um di
152. ist Kann beispielsweise der Status eines Bits nicht berschrieben werden so bleibt das Bit unver ndert auch wenn das mit dem Programm versucht wurde Durch Aus lesen eines beschreibbaren Bits wird stets ein spezifischer Wert ausgegeben der im Datenblatt angegeben ist In der zweiten Zeile wird der Standardwert darge stellt den das Bit nach dem Reset des Mikrocontrollers hat 26 3 3 Architektur W hrend die AVR Registernamen auf eine tats chliche Adresse im Speicher ver weist enthalten Bitnamen den Rang und das zugeh rige Bit Daher ist eine Trans formation der Namen zu Bitmasken mit einer Shiftoperation notwendig wenn man mit Bits in einem Register arbeiten will Der folgende Code zeit einige Bei spielzeilen f r die Nutzung des USART 0 Modul Registers Setze TXCO Bit high UCSROA l 1 lt lt TXC0 Setze U2X0 Bit low UCSROA amp 1 lt lt U2X0 Lies den Wert aus UDREO Bit Maske unsigned char u UCSROA amp 1 lt lt UDREO An dieser Stelle ist der Wert entweder 0 oder 32 wodurch die Nutzung in einer logischen Operation aktiviert wird if u Invertiere MPCMO Bit UCSROA 1 lt lt MPCMO Manchmal ist es notwendig einen spezifischen 1 oder 0 Wert zu erhalten Dazu muss das Bit nach rechts verschoben werden u gt gt UDREO Nun ist der Wert entweder 0 oder 1 3 3 Architektur Der AVR hat einen internen 8 Bit Daten Bus durch den Daten zwischen der
153. ive Funktion 36 3 7 Externe Interrupts des Pins genutzt werden kann der zugeh rige IO Pin Modus im AVR Daten blatt abgelesen werden Wenn beispielsweise ein ADC Kanal als Input dienen soll sollte der Pin im Input Modus sein Um jedoch ein ein PWM Signal zu ge nerieren sollte er im Output Modus betrieben werden Es gibt jedoch auch Peri pheriemodule die den IO Pin Modus eigenst ndig ausw hlen 3 7 Externe Interrupts Externe Interrupts sind eine der einfachsten Funktionen der Peripherieger te Normalerweise haben AVR s 1 bis 8 spezielle Pins welche benutzt werden um Interrupts im Programm auszul sen wenn sich entweder ihr logischer Wert n dert oder sie einen bestimmten Status erreichen Da diese Funktion normaler weise gebraucht wird um externe logische Signale zu berwachen werden diese Pins auch externe Interrupt Pins genannt Um einen externen Interrupt zu nutzen muss der Pins als Standard IO Input er kann auch als Output genutzt werden jedoch kann der Interrupt dann nur vom Controller selbst ausgel st werden konfiguriert werden Au erdem muss der Empfang von Interrupts zugelassen sein und die Bedingung welche den Inter rupt ausl st muss im externen Konfigurationsregister des Interrupts spezifiziert werden Es existieren vier m gliche Bedingungen Logische Null Spannung von 0 V nderung des logischen Werts Fallende Flanke logische nderung von 1 zu 0 Steigende Flanke logische nderung von
154. kompiliert und auf die Mikrocontroller geladen wer den k nnen sowie Zugriff auf die laufenden Programme hergestellt werden kann um so m gliche Fehler zu entdecken Da diese Software w hrend der Entwick lungsphase des Programms als prim re Entwicklungsumgebung dient wird die einfache und angenehme Arbeitsweise w hrend der Nutzung deutlich Dies f hrt schlie lich zur vierten Eigenschaft der Kundenbetreuung Hier ist es wichtig dass auf Hilfe und Unterst tzung bez glich diverser Problemstellungen so ein fach wie m glich zugegriffen werden kann Unter Ber cksichtigung der vier genannten Merkmale sollte es schlie lich m glich sein die geeignete Entwick lungsplatine zu finden 12 3 AVR Mikrocontroller Das folgende Kapitel stellt den AVR Mikrocontroller vor auf welchem dieses Buch basiert Trotz seiner geringen Gr e besitzt der Mikrocontroller eine Viel zahl von Funktionen welche von Atmel in einem fast 400 Seiten umfassenden Handbuch dokumentiert wurden Dar ber hinaus gibt es noch einige weitere Dokumente die sich mit der Thematik befassen S mtliche Informationen wer den in dem folgenden Abschnitt in komprimierter Form dargestellt um dem Leser so einen schnellen und einfachen berblick ber das Thema zu geben Zu gleich dient diese bersicht dazu unge bten Nutzern das Verst ndnis des AVR Mikrocontrollers n her zu bringen und zeigt ihnen wie das Datenblatt zu lesen ist 3 AVR Mikrocontroller 3 1 Einf
155. l schen Wert true wenn das Bit gel scht wurde undfalse wenn das Bit gesetzt wurde zur ck Beispiel Das dritte Bit einer 8 Bit Variablen b setzen und Invertieren des letzten Bits include lt homelab bit h gt int main void unsigned char b 0x00 bit_set b 2 bit_invert b 7 Quelle Nachfolgend eine gek rzte Version des Quellcodes der Bibliothek f r bitweise Operationen Mi Funktionen zur Bearbeitung von Bits Hy define bit_mask bit 1 lt lt bit define bit_set value bit value bit_mask bit define bit_clear value bit value amp bit_mask bit 75 5 Robotic HomeLab Kit define bit_invert value bit value bit_mask bit define bit_is_set value bit value amp bit_mask bit define bit_is_clear value bit value amp bit_mask bit define bit_set_to v b x v x v bit_mask b v amp bit_mask b Veh Funktionen zur Bearbeitung von Bitmasken Ve define bitmask_set value bitMask value l bitMask define bitmask_clear value bitMask value amp bitMask define bitmask_invert value bitMask value bitMask define bitmask_set_to v m x v x v m ve m define bitmask_is_set value bitMask value amp bitMask 5 4 2 Pins Die Pins Bibliothek erleichtert die Arbeit mit digitalen AVR In und Output Pins Der Nutzer kann eine zu einem Pin geh rige Variable erstellen und mit diese
156. l Entfernungsmessers mit der HomeLab Library Beispielprogramm fiir den Ultraschall Entfernungsmesser des HomeLab Die Entfernungsmessung wirkt blockierend Hi include lt stdio h gt include lt homelab pin h gt include lt homelab delay h gt include lt homelab module sensors h gt include lt homelab module lcd_alpha h gt Hi Pins des Ultraschallsensors Hip pin pin_trigger PIN G 1 pin pin_echo PIN G 0 201 6 Praktische Beispiele Hauptprogramm int main void unsigned short distance char text 16 Initialisierung des LCD Icd_alpha_init LCD_ALPHA_DISP_ON L schen des LCD lcd_alpha_clear Name des Programms lced_alpha_write_string Ultra sound Kleine Unterbrechung sw_delay_ms 100 Endlosschleife while true Messen distance ultrasonic_measure pin_trigger pin_echo War die Messung erfolgreich if distance gt 0 Konvertierung von Entfernung in Text sprintf text d cm distance Sind w hrend der Messung Fehler aufgetreten else Text des Fehlers sprintf text Error a Darstellung des Textes am Anfang der zweiten Zeile des LCD Icd_alpha_goto_xy 0 1 Icd_alpha_write_string text Kleine Unterbrechung sw_delay_ms 500 202 6 5 Sensoren 6 5 6 bungen Ziel ist es ein ein Programm zu schreiben welches folgende Aufgaben ausf hrt Aufw
157. laren und einem bipolaren Schrittmotoren Wie k nnen Halbschritt und Mikroschrittmodi eines Schrittmotors genutzt werden Nennen Sie ein Beispiel Wie kann die Rotationsgeschwindigkeit eines DC Motors gesteuert werden Nennen Sie ein Beispiel Welcher PWM Arbeitszyklus wird ben tigt um eine Gleichstrommotorrotation mit 70 der nominalen Geschwindigkeit zu erreichen Wie wird die Richtung der Motorrotation bestimmt wenn ein Encoder genutzt wird Wie kann ein Gleichstrommotor elektronisch gebremst werden Was passiert wenn das Schema der Stromwendung eines Schrittmotors sich zu schnell ndert Ist dynamisches Bremsen m glich Wenn ja wie 221 6 Praktische Beispiele 6 7 Datenschnittstellen Mit Microcontrollern k nnen Antriebe gesteuert werden Werte von Sensoren ausgelesen werden und viel mehr Diese Ger te m ssen dazu jedoch immer mit dem Mikrocontroller verbunden sein es ist somit nicht m glich durch einfache Signale zu kommunizieren Das liegt darin begr ndet dass zu viele Steuerungssignale zur Steuerung der Schnittstelle ben tigt werden oder dass zu viele Daten gesendet werden m ssen Daher wurden zahlreiche Standards von Datenschnittstellen f r Mikrocontroller oder andere Elektronik entwickelt Die Standards bestimmen die elektrischen Parameter der Signale und die bertragungsregeln f r die Signale das Protokoll Ein einfaches Beispiel eines Protokolls ist der Morse Code womit Informationen durch Nutzung
158. lation der Software erl utert In diesem Beispielprogramm werden die Variablen f r Spannung Widerstand und Beleuchtungsst rke als double Gleitkomma Variablen definiert Die Variablen welche nun als Gleitkomma Variablen genutzt werden m ssen immer eine Dezimalstelle beinhalten diese kann auch einfach 0 sein so verarbeitet der Compiler es korrekt Wird die Funktion sprintf genutzt um die Gleitkomma Variable in Text zu konvertieren muss das of Format genutzt werden welches durch Nutzung von ganzen Zahlen und Dezimalstellen erweitert werden kann So gibt 3 2 beispielsweise immer 3 ganze Zahlen und 2 Dezimalstellen an ye Beispielprogramm des Fotowiderstands aus dem Sensormodul des HomeLab Der angen herte Wert der Beleuchtungsst rke wird auf dem LCD dargestellt ip include lt stdio h gt include lt math h gt include lt homelab module lcd_alpha h gt include lt homelab adc h gt include lt homelab delay h gt Mi Hauptprogramm Mi int main void char text 16 190 6 5 Sensoren unsigned short adc_value double voltage resistance illuminance Initialisiere LCD Icd_alpha_init LCD_ALPHA_DISP_ON L sche LCD lcd_alpha_clear Name des Programms lcd_alpha_write_string Luxmeter Einrichten des ADC adc_init ADC_REF_AVCC ADC_PRESCALE 8 Endlosschleife while true Durchschnittlichen Wert des Fotoresistors auslesen adc_value ad
159. lc etc zur Erstellung der Tabelle zu nutzen Die Steinhart Hart Gleichung welche f r den NTC angepasst wurde gibt den zur entsprechenden Temperatur korrespondieren den Widerstand aus Abgeleitet aus dem Widerstand ist es m glich die Outputspannung des Spannungsteilers zu berechnen und daraus den Wert des ADC Berechnete Werte k nnen wie folgt in das Programm eingef gt werden Hip Tabelle zur Konvertierung von Temperaturwerten ind ADC Werte Jedes Element des Arrays kennzeichnet ein Grad Celsius Die Elemente beginnen bei 20 Grad und enden bei 100 Grad Ein Array enth lt 121 Elemente const signed short min_temp 20 const signed short max_temp 100 const unsigned short conversion_table 91 96 102 107 113 119 125 132 139 146 153 160 168 176 184 192 201 210 219 228 238 247 257 267 277 288 298 309 319 330 341 352 364 375 386 398 409 421 432 444 455 467 478 489 501 512 523 534 545 556 567 578 588 599 609 619 629 639 649 658 667 677 685 694 703 711 720 728 736 743 751 758 766 773 780 786 793 799 805 811 817 823 829 834 839 844 849 854 859 863 868 872 876 880 884 888 892 896 899 903 906 909 912 915 918 921 924 927 929 932 934 937 939 941 943 945 947 949 951 953 955 Folgender Algorithmus kann genutzt werden um die mit den ADC Parametern korrespondierende Tempera tur zu finden DR Konvertierung der ACD Werte in Grad Celsius il signed short thermistor_calculate_celsius unsigne
160. linien Gleichung bestimmt Die Entfernung d kann durch folgende Formel dargestellt werden d 1 a ADC B k Nun ist es generell m glich die Entfernung mit der Formel zu berechnen Da jedoch Briiche dividiert werden sind zudem Gleitkomma Berechnungen n tig Weiterhin muss die Formel vereinfacht und auf gr ere Quo tienten ausgeweitet werden da Microcontroller mit Ganzzahlen arbeiten Durch die Division des Quotienten mit einem linearen Element erh lt man folgende Formel d 1 a ADC B a k Durch Aufnahme der Korrekturkonstante sowie des linearen und freien Elements der Trendlinien Gleichung ergibt sich folgende Formel zur Berechnung der Entfernung d 5461 ADC 17 2 Diese Formel kann mit 16 Bit Zahlen berechnet werden und ist daher vollst ndig f r den AVR geeignet Vor der Berechnung muss sicher gestellt sein dass der Wert des ADC gr er als 17 ist ansonsten kann der Fall eintreten dass durch 0 geteilt werden muss oder eine negative Distanz ausgegeben wird Nachfolgend ist die Funktion dargestellt die dazu dient ADC Werte in Centimeter zu konvertieren Sie ist in der HomeLab Library enthalten Lineare und freie Elemente sowie die Korrektur Konstante sind nicht fest in die Funktion integriert sondern werden mittels der Objektparameter des Infrarot Entfernungsmessers eingespeist Dadurch dass diese Parameter als separate Konstanten verwendet werden ist es sehr einfach neue Infrarot Entfernungsmesser in das Pr
161. ll Mehrzweckregister und Befehle selbst 30 3 4 Taktgeber ausw hlen kann Es kann jedoch nur von Vorteil sein zu wissen was in einem Mikrocontroller abl uft Es ist notwendig die Befehle des Mikrocontrollers ge nau zu kennen wenn man zeitkritische Applikationen entwickelt bei denen die Operationen in einer begrenzten Anzahl an Taktzyklen beendet sein m ssen 3 4 Taktgeber Wie die meiste digitale Elektronik arbeitet auch der AVR in einer konstanten Frequenz Eine konstante Frequenz versichert die Zuverl ssigkeit von Datenaus tausch im Ger t Es gibt unterschiedliche Methoden um ein Taktsignal f r den AVR zu generieren Interner RC Oszillator Veo A a NC XTAL2 A TALA el GN Abbildung 3 17 Using an RC oscillator Dies ist ein interner Taktgeber welcher keine externen Komponenten ben tigt Seine gr ten Nachteile sind niedrige Taktfrequenz und Ungenauigkeit Externer RC Oszillator Funktioniert nach dem gleichen Prinzip wie ein interner Taktgeber und hat keine signifikanten Vorteile gegen ber diesem Schwingquarz 31 3 AVR Mikrocontroller c2 XTAL2 t ae XTAL1 e oD Abbildung 3 18 Using a crystal oscillator Schwingquarze nutzen einen Kristall gew hnlich einen Quarz welcher in ei nem elektrischen Feld in seiner Resonanzfrequenz vibriert Er hat die piezoelek trische Eigenschaft bei mechanischer Deformation Vibration ein elektrisches Feld zu produzi
162. lssatz Der Befehlssatz der meisten AVRs besteht aus 90 133 verschiedenen Befehlen Der ATmegal28 hat 133 Befehle Befehle haben entweder ein zwei oder keine Operanden Die meisten Befehle ben tigen nur einen Takt zur Ausf hrung kom plexere Befehle k nnen jedoch bis zu f nf Taktzyklen ben tigen F r den XMega den Nachfolger des AVR wurden viele Befehle modifiziert damit weniger Takt zyklen genutzt werden Die meisten Befehle im AVR werden benutzt f r Jumps um Daten zu bewegen und zu vergleichen und um arithmetische Berechnungen auszuf hren Ein Status Register wird genutzt um Berechnungen und Vergleiche auszuf hren Es speichert den Output Status der ALU ob das Ergebnis negativ positiv null den maximal erlaubten Wert 8 Bits berschreitet oder einen Bit in die n chste Operation transferieren muss usw Es gibt noch ein paar kompli ziertere F lle Example 29 3 AVR Mikrocontroller Die ist ein Teil eines in Assembler geschrieben Codes der blo e Befehle beinhal tet welcher eine 5 zum Byte in der RAM Adresse 100 dezimal 256 hinzuf gt Diese Befehle gibt es alle im AVR ldi r1 5 L dt die Konstante 5 in das Mehrzweckregister rl lds r2 100 L dt das Byte aus dem Speicher in das Register r2 add r2 rl F gt den Wert von rl zu r2 hinzu sts 100 r2 Schreibt den Wert von r2 zur ck in den Speicher Programmstapelspeicher stack Ein Stapelspeicher stack ist eine Datenstruktur bei der der l
163. lude lt homelab delay h gt Ve Hauptprogramm int main void Richtungsvariable signed char direction 1 Einrichtung von Motor 1 und 2 dcmotor_init 0 dcmotor_init 1 Endlosschleife while true Ein Motor dreht sich in die eine der andere in die entgegengesetzte Richtung dcmotor_drive 0 direction dcmotor_drive 1 direction 209 6 Praktische Beispiele Unterbrechung f r 1 Sekunde sw_delay_ms 1000 Umkehr der Richtung direction direction 6 6 2 Servomotor Notwendiges Wissen N Motor Module N Sensors Module r Digital Inputs Outputs 2 Motors 2 Analog to Digital Converter Theorie Abbildung 6 31 RC Servomotor 210 6 6 Motoren 1 ms 1 5 ms 8 Abbildung 6 32 Das Verh ltnis von Signalweite und Position der PWM des Servomotors Servomotoren werden oft in funkgesteuerten RC Modellen benutzt und sind sehr n tzlich f r kleine robo tischen Anwendungen da sie sehr kompakt und g nstig sind Ein RC Servomotor verf gt ber einen einge bauten Gleichstrommotor ein Getriebe einen Positionsfeedbacksensor meistens ein Potentiometer und ei ne Steuerelektronik RC Servomotren k nnen mit einem externen PWM Signal gesteuert werden Wenn das Signal den RC Servotiming Vorraussetzungen entspricht beschreibt es normalerweise ein Positionsinput f r die Servo Steuer Elektronik Die Servomotor Elektronik vergleicht die Achsenstellung
164. m M1 0 amp M2 0 M1 1 amp M2 1 else N y FL 1 M2 1 M1 1 T lt N FR 1 E WO 1 2s j else Abbildung 7 8 Statusdiagramm eines Algorithmus Quellcode Einfache Navigation include lt homelab module motors h gt include lt homelab pin h gt include lt homelab delay h gt Definieren der Sto stangenpins pin front PIN C 0 pin frontleft PIN C 1 pin frontright PIN C 2 ie Hauptprogramm int main void 239 7 Beispielprojekt Starten von Motor 0 und 1 dcemotor_init 0 dcemotor_init 1 Sensorpins als Inputs pin_setup_input_with_pullup front pin_setup_input_with_pullup frontleft pin_setup_input_with_pullup frontright Endlosschleife while true 240 Motorstart im Uhrzeigersinn dcmotor_drive 0 1 dcmotor_drive 1 1 Kontrolle des mittleren Sensorsignals if pin_get_value front Umkehr der Motoren dcmotor_drive 0 1 dcmotor_drive 1 1 Pause 1 Sekunde sw_delay_ms 1000 Start des linken Motors im Uhrzeigersinn dcmotor_drive 0 1 Pause 2 Sekunden sw_delay_ms 2000 Kontrolle des linken Sensorsignals else if pin_get_value frontleft Umkehr des rechten Motors dcmotor_drive 1 1 Pause 2 Sekunden sw_delay_ms 2000 Kontrolle des rechten Sensorsignals 7 2 Mobile Roboterplat
165. m das USART Modul der AVR Mikrocontroller zu konfigurieren und deren Status auszulesen S mtliche AVR Registernamen werden in Gro buchstaben geschrie ben jedoch enth lt der Name auch ein kleines n welches den Index des Moduls kennzeichnet Der ATmega128 verf gt ber zwei nahezu identische USCART Module die jedoch nicht getrennt beschrieben werden sodass der Nutzer das n als 0 oder 1 lesen muss Aus diesem Grund hat der ATmega128 die Register USCROA und UCSRIA Der Inhalt des Registers wird durch eine Box mit 8 Feldern und einem dicken schwarzen Rahmen dargestellt Jedes Feld steht hier f r ein Bit Die Bitr nge sind oberhalb der Box abgebildet von links nach rechts ansteigend Da der AVR ein 8 Bit Mikrocontroller ist haben auch die meisten seiner Register 8 Bit Es gibt auch Ausnahmen so sind einige Register 16 Bit gro aber tats chlich bestehen sie aus zwei 8 Bit Registern So wie jedes Register einen Namen hat hat auch je des Bit innerhalb des Registers einen Namen so wie die Tasten an einem Kasset tenrekorder Jedes Bit wird im Datenblatt beschrieben Wie Registernamen sind Bitnamen ebenfalls Abk rzungen und das kleine n entspricht jeweils dem Mo dulindex Einige Register nutzen weniger als 8 Bit in diesem Fall ist das Feld eines solchen Bits mit einem Trennstrich markiert Unterhalb der Bits des Registers finden sich im Datenblatt zwei Zeilen Die ers te gibt an ob das Bit lesbar R beschreibbar W oder beides R W
166. m K igumootorid Baasnavigatsioon P rkeavastamine Radar block block block kei block Mootorikinnitus Seadmete liides Joonej lgimine Kaamera block Seadmeid saab robotil NS L block Seadmekinnitus korraga olla ainult ks Manipulaator Abbildung 7 1 Model der Systemstruktur Designl sungen F r diese Aufgabe hat das Team eine Brainstorming Methode verwendet und drei vom Konzept v llig un terschiedliche Vorschl ge erstellt Es wurde eine Evaluationsmatrix erstellt und so die optimale Konstruktion gefunden Der gr te Unterschied der drei L sungen liegt im Bewegungsschema 232 7 2 Mobile Roboterplattform IDEELAHENDISEN pa a oe Toyotina y LNTT RAE 54 auto TOU aoop kolaul s Abbildung 7 2 Designl sungen Vereinfachte Evaluationsmatrix Funktion L sung I II III Gewichtungs faktor Kosten 3 4 6 0 8 Komplexit t im Bau 2 4 7 0 7 Beweglichkeit 4 8 8 0 5 Permittivit t 5 8 2 0 3 Anwendbarkeit in Homelab 5 4 5 0 9 Gewicht 5 6 7 0 8 Total mit Gewichtungsfaktor 19 27 28 Die Evaluationsskala umfasst Werte von 1 bis 10 und der Gewichtungsfaktor liegt zwischen 0 und 1 Der Gewichtungsfaktor wird nach den Anforderungen und Einschr nkungen des Systems ausgew hlt So ist bei spielsweise L sung 2 beweglicher auf unebenen Boden dieses war jedoch nicht in der urspr nglichen Aufgabe gefordert daher ist der Gewichtungsfaktor niedrig Basierend auf der Auswertung ist die
167. m Stromdurchfluss Die Zeit in der die Transitoren ge ffnet sind wird in der PWM Periode Arbeitszyklus genannt welche in angegeben wird Bei 0 ist der Transistor konstant geschlossen und es flie t kein Strom Bei 100 ist der Transistor ist durchge hend ge ffnet und Strom flie t die ganze Zeit Die Frequenz der PWM muss hoch genug sein um Vibrationen der Motorwelle zu verhindern Bei niedrigen Frequenzen produziert der Motor Ger usche daher wird oft eine Modulationsfrequenz von ber 20 kHz genutzt Auf der anderen Seite ist die Effizienz des Vierquadranten stellers nicht so gut bei hohen Frequenzen Vibrationen der Motorwelle werden durch die Tr gheit des Rotors und der Induktionswiderstand der Spulen reduziert Es gibt auch integrierte Vierquadrantensteller f r niedrigere Stromst rken F r h here Stromst rken wer den spezielle Metall Oxid Halbleiter Feldeffekttransistoren verwendet Der Vierquadrantensteller mit anderer Elektronik wird Motorcontroller oder Treiber genannt Der Teiber des Gleichstrommotors im HomeLab L293D hat 2 eingebaute Vierquadrantensteller und Ausschaltdioden Der Motor wird mit drei digitalen Signalen ge steuert eins davon ist das enable Signal welches Funktionen einschaltet die anderen beiden bestimmten den 207 6 Praktische Beispiele Status der Transistoren des Vierquadrantenstellers Dabei d rfen niemals beide vertikalen Transistoren ge ff net werden da dadurch ein Kurzschluss verursacht wird
168. m einzelnen kleineren und kompak teren Chip gespeichert Er wird zur Durchf hrung einer bestimmte Aufgabe programmiert um die Funktionalit t zu ndern muss neue Software installiert werden Er verbraucht weniger Strom da alle physischen Komponenten kleiner und energiesparender sind als die eines PC Laptops oder Servers Entwick ler von Mikrocontrollern fokussieren einen geringen Energieverbrauch so dass mobile Anwendungen l nger betrieben werden k nnen 2 Mikrocontroller und Robotik In und Outputs die auf einen bestimmten Zweck ausgelegt sind Mikro controller besitzen so genannte Peripherie Schnittstellen welche Verbin dungen zwischen mehreren Mikrocontrollern oder zwischen einem Mi krocontroller und einem Computer z B USB CAN UART erm glichen sowie dabei helfen reale physikalische Prozesse nachzuvollziehen z B Schaltvorg nge Temperaturmessungen etc und nicht zuletzt auch die Steuerung von Umgebungen unterst tzen z B Motoren steuern Alarme ausl sen etc Mikrocontroller finden sich in diversen Gegenst nden des t glichen Gebrauchs in Haushaltsger ten z B Mikrowelle Fernsehger t Spielzeugen Lego NXT sprechende Puppen Bef rderungsmitteln Auto Aufzug etc Der umfassen de Einsatz von Mikrocontrollern ist m glich da sie leicht zu programmieren sind und eine Vielzahl von Funktionen besitzen folglich k nnen sehr leicht neue Funktionen hinzugef gt sowie das Anwendungsniveau erh ht
169. m nur wenige seltene Bet tigungen des Schalters vor kann eine lange Pause als Folge der Bet tigung eingef gt werden Auf diese Weise k nnen durch Kontaktprellung verursachte Wirkungen auf die Schaltung vermieden werden Jedoch muss bei Anwendung dieser L sung bedacht wer den dass sofern der Nutzer den Schalter f r eine l ngere Zeit gedr ckt h lt das Programm ebenfalls auf die Fehlschaltung welche durch L sen des Schalters hervorgerufen wird reagiert Ein Programm welches den Status des Schalters in einer festgeleten Zeitperiode mehrfach berpr ft ist zuverl ssiger das Ergebnis ist um so besser je l nger die Periode und je gr er die Anzahl der Kontrollen ist Nachfolgend ist eine Funktion abgebildet um filtrierte Werte eines Schalters f r das digitale Input Output Mpdul auszulesen H Funktion zum Auslesen filtrierter Werte aus dem I O Erweiterungsmodul i ip unsigned char pin_get_debounced_value pin button unsigned char buffer 0xAA unsigned char timeout 100 Abwarten bis der Status des Schalters We wait until the status of the button is celar or clearing the state expires while timeout gt 0 Having 8 place bit bufffer of state All previous states bits are shifted to left and a new state bit is added to the right buffer lt lt 1 buffer pin_get_value button 0x01 0x00 If all 8 bits are high then the button is definitely pressed down if buffer OxFF
170. mpare match register value Parameters Returns 16 bit compare match register value void timer1_set_compare_match_unitA_value unsigned short value void timer1_set_compare_match_unitB_value unsigned short value void timer1_set_compare_match_unitC_value unsigned short value void timer3_set_compare_match_unitA_value unsigned short value 91 5 Robotic HomeLab Kit 92 void timer3_set_compare_match_unitB_value unsigned short value void timer3_set_compare_match_unitC_value unsigned short value Sets timer 1 3 output compare unit A B C compare match register value Parameters value New 16 bit compare match register value unsigned short timer1_get_input_capture_value void unsigned short timer3_get_input_capture_value void Returns timer 1 3 input capture register value Parameters Returns 16 bit input capture register value void timer1_set_input_capture_value unsigned short value void timer3_set_input_capture_value unsigned short value Sets timer 1 3 input capture register value Parameters value New 16 bit input capture register value void timer1_overflow_interrupt_enable bool enable void timer3_overflow_interrupt_enable bool enable Enables or disables timer 1 3 overflow interrupt The name of the interrupt vector is TIMERn_OVF_vect where n represents 1 vOi 3 Parameters enable true to enable interrupt false to disable void timer1_compare_match_unitA_interrupt_enable bo
171. n an einem Mikrocontroller angeschlos sen werden Basierend auf dem elektrischen Outputsignal ist es m glich Sensoren in digitale oder analoge Sensoren zu unterteilen Bei analogen Sensoren bewirkt jede physikalische nderung eine nderung des elektrischen Wertes i d R Spannung Stromst rke oder Widerstand Da Mikrocontroller digitale Ger te sind muss das analoge Signal in ein digitales umgewandelt werden bevor es zum Controller gesendet wird Daf r werden Analog zu Digital Konverter benutzt welche normalerweise im Mikrocontroller verbaut sind Analoge Sensoren welche die Information digitalisieren werden digitale Sensoren genannt Digitale Sensoren 177 6 Praktische Beispiele k nnen dar ber hinaus Information standardisieren Sensoren kalibrieren und viele andere Funktionen aus f hren Es gibt verschiedene M glichkeiten um Information von einem digitalen Sensor an einen Mikrocon troller zu senden Die einfachste M glichkeit ist es mit logischen Signalen Informationen zu bertragen Eine komplexere Variante geht ber eine Datalink Schnittstelle Die folgenden bungen f hren aber nur einfachere und in der Robotik genutzte Sensoren ein 6 5 1 Potentiometer Notwendiges Wissen X Sensors Module N User Interface Module A Voltage Divider 7 Analog to digital Converter g Analog to Digital Converter 2 7 segment LED Display Theorie Abbildung 6 15 elektrisches Symbol eines Potentiometers Ein Potentiometer ist
172. n der Schalter losgelassen wird Wenn S2 gedr ckt wird erf hrt der Motor eine gleichm ige Abbremsung Wenn S3 gedr ckt wird h lt der Motor sofort an Simulation eines Notstopps Ein Objekt verfolgen Durch das Nutzen des Ultraschall Entfernungsmessers welcher auf dem Hebel des Servomotors installiert wird verfolgt der Servomotor ein vorbeikommendes Objekt Der Motor dreht sich je nach Bewegung des Objekts so das immer das Objekt in der Mitte des Mess Sektors des Sensors ist 6 6 Motoren 3 der Schrittmotor h lt die letzte Position des Motors nach nderung jeder Sequenz Wenn eine neue Sequenz aktiviert wird nutzen Sie eine Variable so dass die Bewegung exakt von der letzten Position des Motors fortgef hrt wird Beschleunigung Das Programm erm glicht die Beschleunigung oder Abbremsung des Schrittmotors Nutzen Sie lineare Geschwindigkeitssteigerungen welche bei visueller Betrachtung einfach identifi ziert werden k nnen Weite Bewegungen m ssen folgendes Schema erf llen Beschleunigung gt kon stante Geschwindigkeit gt Abbremsung Entwerfen Sie einen PID Regulator f r einen Gleichstrommotor Achtung Diese Aufgabe ben tigt einen Motor mit Feedback Diese Aufgabe kann daher auch theoretisch gel st werden 6 6 5 Fragen 10 Welcher Vierquadrantensteller wird genutzt Nach welchem Prinzip funktioniert er Wie wird die Position der Achse eines RC Servomotors bestimmt Was ist der Hauptunterschied zwischen unipo
173. n direktem Bezug zum AVR Mikrocontroller stehen sind im homelab Ordner abgelegt HomeLab modulspezifische Dateien sind im Ordner homelab module zu finden Beide Ordner befinden sich im Root Ordner des Compilers Um die Dateien dieser Ordner zu verwenden m ssen gr er kleiner Zeichen genutzt werden um den Pfad anzugeben Nachfolgend finden Sie ein Beispiel wie Header Dateien f r AVR Pins und HomeLab Motoren integriert werden k nnen 72 5 4 HomeLab Bibliothek include lt homelab pin h gt include lt homelab module motors h gt Falls die HomeLab Bibliothek nicht genutzt wird muss die folgende avrlibc Header Datei in das Projekt eingef gt werden include lt avr io h gt Die HomeLab Bibliothek enth lt diese Datei bereits in der pin h Datei Das Installationsprogramm f r die HomeLab Bibliothek ist auf der HomeLab Webseite verf gbar Nutzer die die Bibliothek an Ihre Bed rfnisse anpassen m ch ten k nnen hier auch den Quellcode daf r herunterladen Das folgende Kapitel beschreibt die Funktionen der Bibliothek 5 4 1 Bitweise Operationen Die Bibliothek f r bitweise Operationen beinhaltet eine Zusammenstellung von Makrofunktionen zur Durchf hrung von Bitmanipulationsoperationen Sie wer den von den anderen Komponenten der Bibliotheken genutzt und k nnen ber all angewandt werden Da die Makrofunktionen keinen speziellen Typ haben sind sie mit jedem Datentyp kompatibel Der Bit Index wir
174. n folgenden Text auf eine m glichst verst nd liche Weise erkl rt sodass auch ein Anf nger ein Gesp r f r das Register be kommt 17 3 AVR Mikrocontroller Essence Abbildung 3 4 Tasten eines Kassettenrekorders Ein Register hnelt einem Panel von Tasten eines Haushaltsger tes Es verf gt ber Schalter die ein und ausgeschaltet werden k nnen Das beste Beispiel hier f r ist ein Kassettenrekorder Zur Erinnerung ein Kassettenrekorder verf gt ber 6 Tasten von links nach rechts Aufnahme Zur ckspulen Abspielen Vorspulen Stopp Pause Jede Taste f hrt eine Funktion aus jedoch nur wenn sie auch korrekt verwendet wird So macht die Stopp Taste solange nichts bis die Kassette abgespielt wird Erst dann kann die Funktion ausgef hrt werden und die Wiedergabe wird ge stoppt Dagegen k nnen Vorlauf und R ckspultasten zu jeder Zeit bet tigt wer den denn die Kassette kann in beide Richtungen gespult werden unabh ngig davon ob sie gerade abgespielt wird oder nicht Die Aufnahmetaste startet nur dann eine Aufnahme wenn sowohl die Abspielen als auch die Aufnahmeta ste zeitgleich gedr ckt werden Eventuell hat mancher einmal versucht mehrere oder alle Tasten auf einmal zu bet tigen Dieses hat vermutlich eine unerwartete Funktion des Kassettenrekorders ausgel st oder ihn sogar besch digt 18 3 2 Register Die Register von Mikrocontrollern verhalten sich wie Tasten eines Kassettenre korders
175. n vielen Menschen eingetreten ist und die Art und Weise des Lernens und der Kommunikation ver ndert hat Viele junge Leute sind es gewohnt Informationen ber das Kursmaterial ber verschiede ne Kommunikationswege aus dem Internet zu bekommen Bevor versucht wird ein Problem zu l sen wird erst eine schnelle Suche nach m glichen L sungen Beispielen oder Hintergrundinformationen durchgef hrt Da die t gliche Kom munikation teilweise in soziale Netzwerke verlagert wurde ist es nur nat rlich dass die Methodik welche von den Schulen angewandt wird auch diesem Trend folgen muss um die Studierenden in ihrem t glichen Umfeld zu erreichen Na t rlich wird die traditionelle Lehrmethodik nicht komplett ersetzt aber sich nur auf diese zu verlassen ist heutzutage nicht mehr genug Robotik und Mechatronik sind sehr zukunftsreiche Gebiete in denen es sehr wichtig ist den neuesten Irends und Technologien zu folgen Gleichzeitig sind 61 5 Robotic HomeLab Kit diese Gebiete sehr praktisch veranlagt und es verlangt viel manuelle Erfahrung F higkeiten und Wissen zu erlangen Selbst verschiedene virtuelle Simulationen k nnen durchgef hrt werden um das Systemverhalten zu verstehen Trotzdem ersetzten die virtuellen Simulationen nicht die praktische Erfahrung mit ech ter Hardware Das Folgende ist eine praktische Anleitung wie ein Robotikkurs eingef hrt werden kann in dem verschiedene Lehrans tze genutzt werden Die Methodik erwartet dass de
176. n void LED Pin als Output setzen pin_setup_output debug_led Endlosschleife while true Aufleuchten der LED pin_clear debug_led Hardwareverz gerung von 100 ms hw_delay_ms 100 Ausschalten der LED pin_set debug_led Hardwareverz gerung von 900 ms hw_delay_ms 900 6 3 3 Periodische Interrupts Notwendiges Wissen N Controller module N User Interface Module 7 Interrupts 7 Counters Ti mers 2 Pins 2 Delay 2 Timers whe Software delay Theorie Ziel dieses praktischen Beispiels ist es die Verwendung von Interrupts an Beispiel von Timern darzustel len Interrupts sind Programmteile welche auf Ereignisse die in einem Mikrocontroller stattfinden reagieren Normalerweise dienen sie dazu schnell auf ein Event zu reagieren Sie k nnen jedoch auch dazu genutzt 160 6 3 Timer und Verz gerungen werden um mehrere parallel ablaufende Vorg nge oder zeitlich abgestimmte Aktionen auszuf hren oder zur Energieeinsparung Es ist beispielsweise m glich eine LED durch Interrupts blinken zu lassen so dass die Blinkfrequenz nicht von einem Programm abh ngig ist bung Das folgende Programm zeigt wie Timer eingestellt werden um einen Interrupt auszul sen Das Programm nutzt zwei LEDs des digitalen I O Moduls Der Status der roten LED wird mit einer Softwareverz gerung periodisch ge ndert der Status der gr nen LED wird ge ndert wenn ein Interrupt auftritt Es gibt ein sep
177. ndid AVR KontrollerLab peeter peeterLaptop Dokumendid AVR KontrollerLab dir kontrollerlab 0 7 1 0edgyl i386 deb peeter peeterLaptop Dokumendid AVR KontrollerLab sudo dpkg i kontrollerlab deb Varem valimata paki kontrollerlab valimine Andmebaasi lugemine hetkel on paigaldatud 174794 faili ja kataloogi Paki kontrollerlab lahtipakkimine failist kontrollerlab 0 7 1 Oedgyl i386 deb dpkg s ltuvusprobleemid takistavad kontrollerlab seadistamist kontrollerlab s ltub pakist kdelibs4c2a gt 4 3 5 3 1 igatahes Pakk kdelibs4c2a pole paigaldatud kontrollerlab s ltub pakist libqt3 mt gt 3 3 3 6 igatahes Pakk libqt3 mt pole paigaldatud dpkg viga paki kontrollerlab t tlemisel install s ltuvusprobleemid j etakse seadistamata Processing triggers for desktop file utils Processing triggers for hicolor icon theme J rgnevate pakkide t tlemisel tekkisid vead kontrollerlab Das Programmierger t anschlie en Schlie en Sie das Programmierger t an den Computer an und berpr fen Sie ob es vom Computer erkannt wird Schreiben Sie den Befehl susb ins Terminalfester woraufhin eine Liste der angeschlossenen USB Ger te ausgegeben werden sollte Der Name des Programmierger tes ist Future Tech nology Devices International Ltd FT 232 USB Serial UART IC 126 6 1 Anfang peeter peeterLaptop EWES Fail Redaktor Vaade Terminal Abi peeter peeterLaptop lsusb Bus 002 Devic
178. nes bestimmten festgelegten Temperaturbereichs Soll der Sensor bei anderen Temperaturen genutzt werden m ssen pr zise Umrechnungen durchgef hrt werden da die Wider standseigenschaften des Sensors abh ngig von der Umgebungstemperatur sind Zur Kennzeichnung der Lichtintensit t wird die Beleuchtungsst rke E genutzt Diese zeigt die Menge Licht an die auf eine bestimmte Oberfl che trifft Die Ma einheit ist Lux Lx wobei 1 Lux dem konstanten Lichtfluss von einem 1 Lumen entspricht welcher auf eine Oberfl che von 1m strahlt In der Realit t f llt Licht jedoch 187 6 Praktische Beispiele eigentlich nie gleichm ig auf eine Oberfl che weshalb die Beleuchtungsst rke meistens als Durchschnittswert ermittelt wird Unten sind ein paar Beispiele von Beleuchtungsst rken dargestellt Vergleichswerte von Beleuchtungsst rken Umgebung Beleuchtungsst rke 1x Vollmond 0 1 Abendd mmerung 1 Auditorium 10 Klassenraum 30 Sonnenaufgang untergang 400 OP Saal Krankenhaus 500 1000 direktes Sonnenlicht 10000 bung Das Sensormodul aus dem HomeLab verf gt ber einen VT935G Fotowiderstand Ein Pin des Widerstands ist an der 5 V Stromversorgung angeschlossen der zweite an Kanal 1 Pin PF1 des ADC Zwischen diesem Pin und der Masse ist ein 10 kN Widerstand angeschlossen welcher zusammen mit dem Fotowiderstand einen Spannungsteiler erzeugt Da sich der elektrische Widerstand des Fotowiderstands mit einfallender Lichtinten
179. nfiguration enumeration data type Options n means 1 or 3 87 5 Robotic HomeLab Kit TIMERn_FAST_PWM_OUTPUT_DISABLE No output TIMERn_FAST_PWM_OUTPUT_TOGGLE_ON_MATCH Output tog gles on compare match TIMERn_FAST_PWM_OUTPUT_CLEAR_ON_MATCH Output clears on compare match TIMERn_FAST_PWM_OUTPUT_SET_ON_MATCH Output sets on compare match Funktionen 88 void timer0_init_normal timer0_prescale prescale Initialisiert Timer 0 im normalen Modus In diesem Modus z hlt der Timer von 0 bis 255 inkl Overflowinterrupts k nnen genutzt werden Parame ter prescale Prescaler void timer2_init_normal timer2_prescale prescale Initialisiert Timer 2 im normalen Modus In diesem Modus z hlt der Timer von 0 bis 255 inkl Overflowinterrupts k nnen genutzt werden Parame ter prescale Prescaler void timer0_stop void timer2_stop Stoppt Timer 0 2 unsigned char timer0_get_value void unsigned char timer2_get_value void Returns timer 0 2 current value Parameters 5 4 HomeLab Bibliothek Return 8 bit timer value void timer0_set_value unsigned char value void timer2_set_value unsigned char value Sets timer 0 2 value Parameters value New 8 bit timer value void timer0_overflow_interrupt_enable bool enable void timer2_overflow_interrupt_enable bool enable Enables or disables timer 0 2 overflow interrupt The name of the interrupt vector is TI
180. nplatte gel tet Ber hrungssensoren Mikroschalter werden zwischen den Sto stangenplatten platziert und mit einem Gummist ck an der Front gesch tzt Das Gummist ck absorbiert den Aufprall und erm glicht gleichzeitig zu identifizieren woher der Aufprall kam 234 7 2 Mobile Roboterplattform DESORPTION SCALE 1 1 Esimene plaat EN AW 6082 SE FILENAME TALLINN UNIVERSI A4 Pamperi plaat OF TECHNOLOGY Abbildung 7 4 Zeichnung der Sto stangenplatte 235 7 Beispielprojekt Elektronik Die Elektronik des Systems ist in einem Prinzipsschema und Schaltplan mit PCB Aufbau Plan beschrieben M1 Kooder Mootorite moodul M2 Kooder Tagumine p rkeraud Esimene p rkeraud Puuteandurid Toiteplaat Puuteandurid Jooneandurid Abbildung 7 5 Blockdiagramm der elektronischen Komponenten Als Beispiel werden die Schaltpl ne der Linienfolgesensoren sowie die dazugeh rigen PCB Aufbau Pl ne der Sto stange des Roboters gezeigt 236 7 2 Mobile Roboterplattform VCC UNI1 3314G 1k VCC UNI 3314G 1k GND Abbildung 7 6 Schaltplan der Sto stangensensoren Abbildung 7 7 Aufbauplan der Sto stange 237 7 Beispielprojekt Kontrollsystem Das Kontrollsystem des Roboter
181. nten abgebildet Annahme REG 0x0F REG REG 0x11 Erste Methode REG 0x11 Zweite Methode nur eine pro Inversion verwenden Ergebnis REG 0x1E o JoJo Jo J J J 1 0x0F ppp j lofololo 0xFO Abbildung 3 11 Invertieren aller Bits Das gesamte Register invertieren Durch die Negationsoperation werden s mt liche Bits eines Register invertiert Diese Operation besteht aus nur einen Ope randen und ist daher un r Der hierf r ben tigte C Code ist unten abgebildet Annahme REG Ox0F REG REG Ergebnis REG 0xF0 Dopo foetal Tp wor 0 olojofololol 0x01 Abbildung 3 12 Den Wert eines Bits auslesen 23 3 AVR Mikrocontroller Den Wert eines einzelnen Bits auslesen Sollen ein oder mehrere Bits aus einem Register gelesen werden muss ebenfalls die logische Multiplikation angewandt werden Einer der Operanden ist das Register der zweite eine Bitmaske in wel cher das einzige high Bit jenes ist welches aus dem Register gelesen werden soll Unten ist der C Code f r diesen Vorgang dargestellt Annahme REG 0x0F unsigned char x REG amp 0x01 Ergebnis x 0x01 Ein Bit verschieben Viele Programmiersprachen verf gen mittlerweile ber ei nige zus tzliche Bitoperationen was die Programmierarbeit erleichtert Hierzu geh ren die Operationen welche die Bits einer Bin rzahl nach rechts oder links verschieben Im Umgang mit Registern liegt der
182. nungsergebnissen Die Funktionen benutzen eine vorgefertigte Umrech nungstabelle Parameter adc_value ADC Umrechnungsergebnis 10 Bit mit 5 V Referenzspan nung 101 5 Robotic HomeLab Kit Gibt die Temperatur mit Grenzwerten von 20 bis 100 C an signed short ir_distance_calculate_cm ir_distance_sensor sensor unsigned short adc_value Berechnet die Entfernung von ADC Ergebnissen die vom IR Entfernungs sensor empfangene Spannung an Parameter sensor Kalkulationsparameter des Distanzsensors adc_value ADC Umrechnungsergebnis 10 bit mit 5 V Referenzspan nung Gibt die Entfernung in cm an oder 1 wenn eine Messung nicht m g lich ist unsigned short ultrasonic_measure pin trigger pin echo Misst die Entfernung mit dem Ultraschallentfernungsmesser Die Funktio nen generieren einen Ausl seimpuls an einem Pin und messen die Zeit bis zum Echopulses am anderen Pin Die Entfernung wird ber die Zeit be rechnet Die Funktionen ben tigen eine 14 7456Mhz Taktfrequenz Die Messung kann bis zu 36ms dauern Parame ter trigger Variable des ausl senden Pins echo Variable des Echo Pin variable Gibt Entfernung in cm an oder 0 wenn Messung nicht m glich Beispiel Nutzung des Infrarot und Ultraschallentfernungssensors include lt homelab module sensors h gt Kontroll Pins des Ultraschallentfernungssensors pin pin_trigger PIN G 1 pin pin_echo PIN G 0 102
183. nutzerforum in welchem sie Antworten auf Ihre Probleme finden k nnen Die elektronische Version enth lt zus tzliche Kapitel zu den Themen Bluetooth Ethernet RFID Machine Vision f r Fortge schrittene etc F r Lehrer Registrieren Sie sich auf unserer Homepage und teilen Sie uns kurz mit dass Sie Lehrer sind Daraufhin werden Sie Zugriff auf die L sungen der bungsaufgaben sowie Antworten auf die Fragen am Ende jedes bungsabschnittes erhalten 8 Ausblick Homepage http www roboticlab eu 248
184. nzelne die vollst ndigen bungsanweisungen zu Beginn der bung erh lt So kann die Gruppe arbeiten ohne auf die n chstesn Anweisungen des Lehrers warten zu m ssen indem sie einfach den An weisungen folgt Dar ber hinaus enth lt jeder bungsabschnitt am Ende Aufgaben in verschiedenen Schwierigkeitsgraden die der Lehrer je nach Fortschritt und F higkeiten der Gruppe verteilen kann Bewertung Soll letztendlich sicher gestellt werden dass alle Teilnehmer die vorgestell ten Programmierf higkeiten erlernt haben so kann der Leherer die Grup penarbeit derart gestalten dass jedes Gruppenmitglied selbst programmie ren und dieses auch pr sentieren muss Eine andere M glichkeit w re dass der Lehrer zuf llig ein Mitglied der Gruppe ausw hlt welches dann das Programm vorstellen muss Auch wenn diese Person den Code vielleicht nicht pers nlich geschrieben hat Das Endergebnis wird dann f r die ge samte Gruppe gez hlt ausgehend vom Schw chsten Mitglied Sollte diese Art der Bewertung ungerecht wirken kann auch innerhalb der Gruppe ei ne individuelle Berichterstattung durchgef hrt werden Fehlerbehebung Die Sch ler machen im Umgang mit der Hardware oder beim Program mieren h ufig hnliche Fehler Daher ist es sinnvoll auf der Webseite einen Bereich f r h ufig gestellte Fragen FAQ Frequently Asked Questions einzurichten So k nnen die Lernenden Zeit sparen da sie bei h ufig auf 5 2 Robotik unterrichten
185. oder einfacher auszuf hren wird Diesen Compilervorgang nennt man Optimierung Durch verschiedene Optimierungsmodi ver ndern sich die Maschinencodes f r die Soft 154 6 3 Timer und Verz gerungen wareverz gerung sowie die Dauer der Verz gerung Beispiel Das folgende Beispiel generiert eine Softwareverz gerung im AVR Mikrocontroller Ein Teil des in C geschrie benen Programms z hlt eine Variable x in vier Zyklen von 0 bis 100 In jedem Zyklus wird ein leerer no action empty Befehl ausgef hrt Dieser wird ben tigt der Compiler einen Zyklus ohne Inhalt als nutzlos betrachtet und ihn daher aus dem Programm werfen w rde unsigned char x M Zyklus bisi x ist 00 for x 0 x lt 100 x Mit empty Befehl nop asm volatile nop Dies ist der gleiche Teil des Programms nach dem Kompilieren Die beiden Hexadezimalzahlen links geben den Maschinencode an und rechts befindet sich der Befehl mit den Operanden in Assembler Der Maschinen code und die Assemblersprache sind konform Assembler dient nur dazu den Maschinencode fiir Menschen lesbar zu machen Kompiliert wurde mit der Optimierungsmethode fiir die Lange des Programms Parameter Os 80 e0 ldi r24 0x00 r24 l dt Zahl 0 in den index 00 00 nop Empty Operation 8f 5f subi r24 OxFF subtrahieren von 255 aus dem r24 Index was bedeutet 1 addieren 84 36 cpi r24 0x64 r24 Index mit der Zahl 100 vergleichen el f7 brne 8 Falls der
186. ogramm zu integrieren ip Die Struktur der Parameter des Infrarot Entfernungsmessers yf typedef const struct const signed short a 195 6 Praktische Beispiele const signed short b const signed short k ir_distance_sensor Die Parametereigenschaften des GP2Y0A21YK Sensors Wi const ir_distance_sensor GP2Y0A21YK 5461 17 2 Konvertieren der Werte des Infrarot Entfernungsmessers in Centimeter Gibt 1 aus wenn die Konvertierung nicht erfolgreich war Han signed short ir_distance_calculate_cm ir_distance_sensor sensor unsigned short adc_value if adc_value sensor b lt 0 return 1 return sensor a adc_value sensor b sensor k Zur Durchf hrung der Konvertierung muss die Funktion ir_distance_calculate_cm genutzt werden Der erste Funktionsparameter gibt die Eigenschaften der Parameter des Infrarot Entfernungsmessers an der zweite den ADC Wert Die Funktion gibt dann die berechnete Entfernung in Centimetern aus Schl gt die Konvertierung fehl unzul ssige ADC Werte wird der Wert 1 ausgegeben Das folgende Programm veranschaulicht die Verwendung des Infrarot Entfernungsmessers und der Konvertierungsfunktion Es wird das alphanumerische LCD genutzt auf welchem die gemessenen Werte dargestellt werden Falls die Distanz unzul ssig ist wird ein angezeigt A Beispielprogramm des Infrarot Entfernungsmessers des HomeLab Die in
187. ol enable void timer1_compare_match_unitB_interrupt_enable bool enable void timer1_compare_match_unitC_interrupt_enable bool enable void timer3_compare_match_unitA_interrupt_enable bool enable void timer3_compare_match_unitB_interrupt_enable bool enable 5 4 HomeLab Bibliothek void timer3_compare_match_unitC_interrupt_enable bool enable Enables or disables timer 1 3 output compare unit A B C compare match interrupt The name of the interrupt vector is TIMERn_COMPx_vect where n represents 1 or 3 and x represents A B or C Parameters enable true to enable interrupt false to disable void timer1_input_capture_interrupt_enable bool enable void timer3_input_capture_interrupt_enable bool enable Enables or disables timer 1 3 input capture interrupt The name of the in terrupt vector is TIMERn_CAPT_vect where n represents 1 or 3 Para meters enable true to enable interrupt false to disable bool timer1_overflow_flag_is_set void bool timer3_overflow_flag_is_set void Checks timer 1 3 overflow flag Parameters Returns true when overflow has happened false when not bool timer1_input_capture_flag_is_set void bool timer3_input_capture_flag_is_set void Checks timer 1 3 input capture flag Parameters Returns true when input capture has done false when not void timer1_overflow_flag_clear void void timer3_overflow_flag_clear void Resets timer 1 3 overflow flag void
188. omeLab 171 6 Praktische Beispiele Die Startzeit zu Beginn des Programms wird auf dem LCD angezeigt include lt stdio h gt include lt homelab module lcd_alpha h gt include lt homelab delay h gt Ve Hauptprogramm Ve int main void int seconds 0 char text 16 Einrichtung des LCD led_alpha_init LCD_ALPHA_DISP_ON L schen des LCD lcd_alpha_clear Name des Programms Icd_alpha_write_string The Time Counter Endlosschleife while true Konvertieren der Sekunden in die Zeitanzeige 1 RAN SS sprintf text 02d 02d 02d seconds 3600 24 seconds 60 60 seconds 60 Anzeige der Zeit am Anfang der zweiten Reihe des LCD Icd_alpha_goto_xy 0 1 Icd_alpha_write_string text Anstieg der Sekunden um 1 seconds Hardwareverz gerung 1000 ms hw_delay_ms 1000 172 6 4 Anzeigen und Displays 6 4 3 Graphisches LCD Notwendiges Wissen N Icd g Graphic LCD 2 Delay He Alphanumeric LCD Theorie Das graphische LCD liquid crystal display ist ein Display zur Darstellung von Bildern und Text Es ist hnlich aufgebaut wie das alphanumerische LCD mit dem Unterschied dass sich auf dem graphischen LCD alle Pixel in einer gro en Matrix befinden Bei monochromen LCDs entspricht ein Pixel einem quadratischen Segment bei Farbdisplays besteht ein Pixel aus drei Unterpixeln Jedes der Unterpixel l sst nur eine Lichtfarbe durc
189. on will causes LEDs to light several times and it appears as the LEDs light randomly i Das Programm um Kontaktprellung am digitalen Input Output Modul zu demonstrieren i if include lt homelab pin h gt 147 6 Praktische Beispiele Festlegung der LED Pins und Schalter Hip pin leds 3 PIN C 5 PIN C 4 PIN C 3 pin button PIN C 0 Hauptprogramm int main void unsigned char new_value old_value 0 unsigned char index counter 0 LED Pins als Output setzen for index 0 index lt 3 index pin_setup_output leds index Schalter Pins als Input setzen pin_setup_input button Endlosschleife while true 148 Status des Schalters auslesen new_value pin_get_value button Kontolle ob der Schalter heruntergedr ckt wurde was bedeutet dass der neue Status 1 ist der alte 0 if new_value amp amp old_value Erweiterung des Leseger tes und Nutzungvon Modul 3 counter counter 1 3 Aufleuchten der LED welche mit dem Wert des Leseger tes bereinstimmt for index 0 index lt 3 index pin_set_to leds index index counter Ber cksichtigung des alten Status old_value new_value 6 2 Digitale Input Output Pins Es gibt diverse Softwarel sungen zur Filtrierung Sie k nnen einfach oder komplex sein wobei jede ihre Vor und Nachteile hat Sieht das Program
190. oppt der Motor Beispiel Nutzung von Gleichstrom DC Schritt und Servomotoren include lt homelab module motors h gt int main void Initialisierung der DC Motoren dcmotor_init 0 dcmotor_init 1 Initialisierung des bipolaren Schrittmotors bipolar_init Initialisierung der Servomotoren servomotor_init 0 servomotor_init 1 Ein DC Motor f hrt vorw rts ein anderer r ckw rts demotor_drive 0 1 demotor_drive 1 1 Bewegt den Schrittmotor 100 Schritte in eine Richtung und daraufhin zur ck mit doppelter Geschwindigkeit bipolar_halfstep 1 100 50 bipolar_halfstep 1 100 25 Bewegt Servomotoren in entgegengesetzte Richtungen servomotor_position 0 100 servomotor_position 1 100 105 5 Robotic HomeLab Kit MISSING PAGE 106 6 Praktische Beispiele Die in diesem Kapitel vorgestellten praktischen Beispiele sind einheitlich auf gebaut und so konkret und praxisnah wie m glich gestellt Jedes Beispiel be ginnt mit einer kurzen Einf hrung in die zugrunde liegende Theorie sowie einer Darstellung des zum Verst ndnis der Beispiele n tigen Hintergrundwissens Der praktische Teil besteht haupts chlich aus kommentierten Programmcode wel cher die konkrete Anwendung verdeutlicht Normalerweise wird dabei die Ho meLab Library genutzt in einigen F llen wird die Hardware jedoch auch direkt ber Register angesteuert Das erste Ka
191. pitel f hrt die Hardware und Softwareplattform ein welche f r Lehrzwecke entwickelt wurde und als Grundger st f r weitere Beispiele in den folgenden Kapiteln dient Ferner wird an dieser Stelle auch die HomeLab Libra ry eine f r das Kit entwickelte Softwarebibliothek welche vereinfachte Metho denaufrufe f r h ufig genutzte Funktionalit ten bietet vorgestellt Dies bietet dem Benutzer den Vorteil dass er sich auf die Logik seiner Software konzen trieren kann anstatt den Fokus auf das Programmieren von Registern legen zu m ssen Dabei ber cksichtigt dieses Buch sowohl Windows als auch Linux Be triebssysteme 4 Im vierten Kapitel werden schlie lich praktische Beispiele sowie bungen vor gestellt Die Beispiele sind unterteilt in Labs bungsabschnitte und decken die meisten elektro mechanischen Bauteile und Funktionen ab Jeder Abschnitt enth lt zun chst eine kurze Beschreibung des theoretischen Hintergrunds so wie praktische Beispiele Durch einfaches Kopieren der Beispielprogramme in den Controller hat der Nutzer direkt die M glichkeit die Funktionen zu nutzen Am Ende jedes Unterkapitels finden sich Beispielaufgaben sowie Verst ndnis fragen zum jeweiligen bungsabschnitt S mtliche bungen sind nach ihrem Schwierigkeitsgrad gegliedert damit sowohl Anf nger als auch Fortgeschritte ne die f r sie geeigneten bungsaufgaben ausw hlen k nnen Dar ber hinaus werden zum besseren Verst ndnis der Aufgaben
192. pitel weicht etwas von diesem Schema ab hier wird prim r die In stallation und Konfiguration der notwendigen Softwarekomponenten beschrie ben Die Installationsanweisungen sind f r Windows und Linux Betriebssysteme ausgelegt Nachdem die Software einmal eingerichtet wurde macht es keinen Unterschied mehr ob ein Windows oder ein Linux Unix basierendes Betriebs 6 Praktische Beispiele system verwendet Die Handhabung und Programierung wird dadurch nicht beeinflusst Ein praktisches Beispiel beginnt immer mit einer Aufz hlung von erforderlichen Vorkenntnissen Dabei werden Bez ge zu anderen Kapiteln hergestellt welche mit folgenden Abk rzungen gekennzeichnet sind N Physikalisches Modul das im Beispiel genutzt wird 2 Teil der Softwarebibliothek die im Beispiel genutzt wird A Verweis auf das Kapitel ber die Grundlagen der Elektronik Verweis auf das Kapitel ber die AVR Mikrocontrollermodule ie Verweis auf andere Aufgaben Grundlegende Software fiir die Beispiele Wie zuvor erw hnt werden die Codebeispiele auf Basis der HomeLab Biblio thek erstellt Die meisten AVR spezifischen Operationen und Verfahren die auf die HomeLab Kit Hardware zugreifen sind in dieser Bibliothek enthalten Bei Verwendung der HomeLab Bibliothek muss somit kein Hardware spezifischer Programmcode mehr erzeugt werden Durch Bereitstellung der f r die Hardwa re in den Beispielen und bungen notwendigen Software kann der Nutzer sich vollkommen a
193. pply Pins sind GND und VCC AVCC und AREG sind die analog zu digital Konverter Supply und ReferenceVoltage Pins XTAL1 und XTAL2 sind f r den Anschluss einen externen Schwingquarzes Resonator oder Taktgebers Die Pins PBO bis PG4 markieren die Bits der Input Output Buses Die sekund ren Funktionen werden in dem entsprechenden Ka pitel besprochen 16 3 2 Register SaO oe nn sceana Aa 92888888 853 O LEE LILLE TSS Q Q AAA AER 1000206080000 gt a A 388608 B 2 PENA O PA3 AD3 RXDO PDI PEO O 2 PA4 ADA TXDO PDO PE1 3 PAS AD5 XCKO AINO PE2 C 4 PAS AD6 OC3A AIN1 PE3 O 5 PA7 AD7 OC3B INT4 PE4 16 PG2 ALE OC3C INT5 PES O 7 PC7 A15 T3 INT6 PES O 8 PC6 A14 ICP3 INT7 PE7 19 PC5 A13 SS PBO C 10 PC4 A12 SCK PB1 O 11 PC3 A11 MOSI PB2 O 12 PC2 A10 MISO PB3 O 13 PC1 A9 OCO PB4 C 14 PCO A8 OC1A PB5 O 15 PG1 RD OC1B PB6 O 16 wo Z PGO WR NN oO ROTFOONTZSTARTH OR COLES RE ERRE EAS SIDE X lt XPERPS SER OAD EE 288 2222099 S ER HA a ee 3 BERR Q cc Abbildung 3 3 ATmega128 pinout 3 2 Register Typischerweise ist das Register eines der Bestandteile eines Mikrocontrollers die ein Anf nger nur m hsam versteht Im Umgang mit Mikrocontrollern ist es je doch unumg nglich diese Komponente zu kennen Auch f r die weitere Arbeit mit diesem Buch ist der Leser dazu angehalten sich das Konzept des Registers anzueignen Daher wird es im nu
194. ptl sungen f r diese Aufgabe Geeignet sind handgezeich nete Diagramme Zeichnungen etc Dokumentation mit Kommentaren Mechanik Am Besten ein 3D Modell mit Zeichnungen von wichtigen Verbindungen und Bauanweisungen Falls eine Verbindung spezielle Anweisungen ben tigt dann auch Bauanleitungen und Zeich nungen hinzuf gen Wenn m glich eine Animation der Funktionen des Systems beif gen Elektronik Darstellung aller genutzten Module in einem Blockdiagramm Controller Motorenantrieb Mo tor Encoder etc und ihre Verbindungen Falls m glich geben Sie ein Layout f r den Aufbau der Leiterplatte an Control System Kontrollalgorhytmus und Quellcode Falls selbst erstellte Funktionen genutzt werden eine Ta belle der Funktionen und Parameter usw angeben Gebrauchsfertige L sung Beschreibung und Bilder Wirtschaftliche Rechnung Auflistung von Komponenten wie Kosten gesch tzte ben tigte Zeit etc Projektmanagement Zeitplan des Projekts die Ressourcenbelegung die Arbeitsteilung Mitwirkung der Gruppe Termine f r Meetings etc Zusammenfassung und Fazit Was war schwer was w rden Sie anders machen was wurde mit dem Projekt erreicht etc Die Zusammenfassung umfasst eine kleine Beschreibung der Arbeit aufgetretene Probleme werden genannt und das Ergebnis der Arbeit wird dargestellt Dar ber hinaus ist es sinnvoll die eigene Meinung bez glich der Notwendigkeit des Projekts hinzuzuf gen Au erdem bez glich des Nutzens
195. r Lehrer das HomeLab kit benutzen kann Aspekte die bei der Erstellung eines neuen Kursen ber cksichtigt werden m s sen 1 Gruppengr e Die optimale Anzahl der Teammitglieder ist weitgehend durch die Anzahl der Computer Arbeitspl tze begrenzt Das bedeutet dass normalerweise nicht mehr als 3 Personen zusammen an einem Arbeitsplatz arbeiten k n nen Wenn mehr Personen an einem Arbeitsplatz arbeiten m ssen k nnte es sein dass sie nicht in der Lage sind aktiv an der Arbeit teilzunehmen und somit die Konzentration auf die Arbeit verloren geht 2 Praktische Arbeit und Berichterstattung Die Praktische Arbeit ist unterteilt in bungseinheiten wobei jede bung eine hnliche Struktur besitzt und mit einem Bericht endet jedoch unter schiedliche F higkeiten trainiert Es ist au erdem m glich die Arbeit in nerhalb der Gruppe aufzuteilen so dass zum Beispiel ein Mitglied f r die Erstellung des Quellcodes ein anderes Mitglied f r die Erstellung des Be richts und ein Mitglied f r das Anschlie en der Hardware verantwortlich ist Zus tzlich zu dem kommentierten Quellcode sollte der Bericht auch Algorithmen Beschreibungen der Arbeit Antworten auf die gestellten Fra gen ein Schema der Hardwareverbindungen und Vor und Nachteilbeur teilungen der bung enthalten Der letzte Punkt ist ein gutes Feedback f r den Lehrenden um den Schwierigkeitsgrad der bung einzusch tzen und wie interessant die bung f r die Lernenden war Es
196. r s mtliche Pin Operationen vornehmen Auf diese Weise entf llt die Verwendung von Registernamen oder Bit Indizes wie es beim Programmieren mit direktem Zugriff auf das Register n tig ist Port und Index des Pins m ssen nur einmalig festgelegt werden sodass nderungen leicht implementiert wer den k nnen Datentypen pin Datentyp f r Adressen von Pin Registern und Bitmasken Um das ef fizienteste Programm zu entwickeln sollten pin Variablen konstant sein und am Anfang des Programmcodes initialisiert werden Letzteres kann mit der Makrofunktion PIN durchgef hrt werden deren erster Parameter der Buchstabe des Ports ist A B C etc und zweiter Parameter der Pin Index 0 7 Es k nnen nur bestehende Ports und Pins verwendet werden 76 5 4 HomeLab Bibliothek Funktionen void pin_setup_output pin pin Konfiguriert einen Pin als Output Parameter pin Pin Variable void pin_setup_input pin pin Konfiguriert einen Pin als Input ohne Pull up Widerstand Parameter pin Pin Variable void pin_setup_input_with_pullup pin pin Konfiguriert einen Pin als Input mit Pull up Widerstand Parameter pin Pin Variable void pin_set pin pin Setzt einen Output Pin high Parameter pin Pin Variable void pin_clear pin pin Setzt einen Output Pin low Parameter pin Pin Variable void pin_toggle pin pin Invertiert den Status eines Output Pins Parameter pin Pin Variable void pin_set_to p
197. raktische Beispiele Setze Pinn PB7 als output DDRB 0x80 Loeputu tsuekkel while true Invertiere PB7 PORTB 0x80 hw_delay_ms 500 QO TIPAARQRVH FIX IN compile build ignite Abbildung 6 3 Toolbar Stellen Sie sicher dass das Outputfenster die Nachricht File compiled success fully anzeigt Falls eine Error s Occurred Nachricht erscheint berpr fen Sie den Programmcode auf Fehler 3 Um das Programm in den Controller zu laden w hlen Sie Ignite Wurde es er folgreich in den Controller geladen sollte die Nachricht Project built and uploa ded successfully erscheinen Falls alles richtig gemacht wurde sollte die rote LED auf dem Controller in 1 Sekunden Intervallen blinken Nutzung von floating point Variablen Manchmal ist in es in AVR Programmen notwendig floating point Variablen zu nutzen Um mit ihnen zu rechnen und sie mit Funktionen vom Typ printf zu nutzen m ssen die folgenden Anpassungen in der Projektkonfiguration vorge nommen werden 134 6 1 Anfang 1 ffnen Sie Project Configurations sowie den Tab Linker berpr fen Sie die erste Zeile der Liste Linker flags siehe Abbildung Project configuration x Common Compiler Li nk Linker command avr gcc Assembler Object copy command avr objcopy C Specify start of text section C Specify start of data section gt 4 x In
198. rite 5 96 5 4 HomeLab Bibliothek 5 4 8 Alphanumerisches LCD Bezug nehmend auf a Icd Diese Bibliothek enth lt die Funktionen um das alphanumerische LCD des Ho meLab zu nutzen Datentypen Icd_alpha_mode LCD Konfiguration Aufz hlungsdatentyp M glichkeiten LCD_ALPHA_DISP_OFF Display aus LCD_ALPHA_DISP_ON Display an mit unsichbarem Cursor LCD_ALPHA_DISP_ON_CURSOR Display an mit Cursor LCD_ALPHA_DISP_ON_CURSOR_BLINK Display an mit blinken dem Cursor Funktionen void Icd_alpha_init Icd_alpha_mode disp_attr Initialisiert LCD Parameter disp_attr Display Konfiguration void Icd_alpha_clear void L scht die Anzeige Cursor wird zum Anfang der ersten Zeile bewegt void Icd_alpha_clear_line unsigned char line L scht eine Zeile am Display Cursor wird zum Anfang der ersten Zeile bewegt Parameter 97 5 Robotic HomeLab Kit line Zeilennummer 0 oder 1 void Icd_alpha_home void Cursor wird zum Anfang der ersten Zeile bewegt void Icd_alpha_goto_xy unsigned char x unsigned char y Bewegt den Cursor zur gew nschten Position Parameter x X Koordinate Spaltennumner 0 bis 15 y Y Koordinate Zeilennumner 0 bis 1 void Icd_alpha_write_char char c Schreibt ein Zeichen auf die Position des Cursors Parameter c ASCII Zeichen void Icd_alpha_write_string const char s Schreibt einen String aufs Display beginnend bei der Cursorposition
199. rlesungen und bungen Lernende sind heute nicht mehr mit zeitlich festgelegten Vorle sungen und bungen zufrieden Viele junge Leute aber auch Erwachsene le ben ein Leben in einer modernen Informationsgesellschaft in welchem Sie viel Zeit im Internet verbringen Daher best tigen die klassischen Lernmethoden die Lernenden und ihre Art zu Lernen heute nicht mehr Aufgrund dessen m ssen die Ingenieursausbildungen in eine Internetumgebung gebracht und dadurch attraktiver werden ohne jedoch die Qualit t und die praktische Erfahrung zu verlieren The integrated concept of robotic and mechatronic study incorporates the standard teaching and studying aids and novel approaches which are inte grated into one methodical unit Das ganzheitliche Konzept der Robotik und Mechatronik beinhaltet sowohl stan dardisierte Lehrmethoden und Lernhilfen als auch neue Ans tze welche in ei ner systematischen Einheit untergebracht sind Das folgende Beispiel kann Schulen helfen Kurse zur Robotik zu starten oder einen Denkansto zu geben wie man verschiedene Lernkonzepte in einer prak tische Lerneinheit in diesem technologischen Feld anwendet Das Konzept beinhaltet die folgenden Lehr und Lernhilfsmittel Koventionelles Lehrbuch z B Integrated Systems amp Design ISBN 978 9985 59 850 4 Praktisches bungsbuch Robotic HomeLab DistanceLab Das Kompetenznetzwerk der Robotik und Mechatronikgemeinschaft http www roboticlab eu Theore
200. rojektdokumentation aufgrund des Bildmaterials zu umfangreich und w rde den Rahmen dieses Buches sprengen Dennoch enth lt das Beispielprojekt alle wichtigen Aspekte So werden beispielsweise nur wichtige Details einer Zeichnung oder nur ein PCB eines elektronischen Plans gezeigt Dennoch sollte eine tats chliche Dokumentation Zeichnungen und Pl ne f r alle erstellten Details enthalten Das Beispielprojekt soll auch die Lehrer dahin gehend unterst tzen den Sch lern zu verdeutlichen was am Ende eines Projektes erwartet wird und wie die Ergebnisse zu pr sentieren sind Je nach Situation und Lehrniveau k nnen jedoch einige Punkte der Dokumentation ausgelassen werden 7 1 Bericht Um ein einfaches mechatronisches Ger t herzustellen muss man die Konstruktion und Mechanik Elektronik und Sensoren Kontrollsystem und Software f r das Ger t entwickeln Am Ende des Projekts soll ein Bericht erstellt werden Es ist eine Dokumentation welche mindesten die folgenden Punkte enthalten soll Titelseite 7 Beispielprojekt 230 Zusammenfassung Zusammenfassung in Fremdsprache Englisch Inhaltsverzeichnis 10 11 Urspr ngliche Aufgabe Systemvoraussetzungen und Einschr nkungen Modell des Systems Struktur und Funktionalit t eines Systems als Blockdiagramm Zus tzlich k nnen eine Anlei tung zur Nutzung des Anwendungsfalldiagramms ein Interfacediagramm etc verfasst werden Designl sungen Mindestens drei verschiedene Konze
201. rollers funktionieren Verz gerungen sind Abschnitte eines Software programms welche dazu entwickelt werden die Arbeitszeit des Prozessors zu nutzen Beide arbeiten hnlich indem sie den Arbeitstakt des Microcontrollers z hlen Beide Methoden haben ihre Vor und Nachteile welche in den entsprechenden bungen besprochen werden Anfangs waren Timer separate Schaltkreise die nicht Teil eines Mikroprozessors waren Auch heute gibt es noch immer separate Timerchips da in einigen Anwendungen keine Mikrocontroller verwendet werden und einige Timer effizienter sind als die eines Mikrocontrollers Timer haben sich von einfachen Zeitz hlger ten zu komplexen System entwickelt welche Signale empfangen und generieren Sie modulieren und demodulieren Signale und erm glichen Taktsignale zu multiplizieren und dividieren Dar ber hinaus gibt es spezielle Time To Digital Konverter TDC welche Zeit in Picose kunden messen k nnen aber wir werden uns hier nur auf einfachere Timer konzentrieren 6 3 1 Softwa reverz geru ngen Notwendiges Wissen Ss Controller module Architecture 2 Pins 2 Delay Theorie Oft ist es wichtig in einem Programm eines Mikrocontrollers Verz gerungen einzubauen einige Aktionen zu terminieren oder zu warten bis sie abgeschlossen sind Die einfachste Methode die Arbeit eines Mikrocon trollers zu pausieren ist ihn mit einer alternativen Operation zu berladen z B durch einen Befehl grofe Nummern zu z hlen
202. s Timers Starte den ADC setze den Umwandlungszyklus 16 mal langsamer als das Tastverh ltnis ADCSRA 1 lt lt ADEN 1 lt lt ADPS2 1 lt lt ADSC Warte auf Beendigung des Messvorganges while ADCSRA amp 1 lt lt ADSC continue Lies den 8 Bit Wert aus result ADCH 3 9 Counters Timers Counter welche man auch in einigen F llen Taktgeber nennen kann sind einer der wichtigsten Unterfunktionen eines Microcontrollers Diese erm glichen es Prozesse exakt zu timen Signale zu generieren und Ereignisse zu z hlen Ein Z hler konvertiert die Nummer der Inputzyklen in einen bin ren Wert mit Hilfe eines Arrays an Triggern Die maximale Nummer der gez hlten Zyklen h ngt von der L nge des Arrays ab und diese ist markiert von der L nge des bin ren Codes Der AVR hat 8 und 16 Bit Counter Wenn ein Timer seinen maximalen Wert erreicht hat 255 bei 8 Bit und 65535 bei 16 Bit generiert der n chste Zyklus ein Overflow und der Z hler macht ein Reset auf 0 Das Taktsignal eines Coun ters kann vom Taktsignal des Microcontrollers kommen und in diesem Fall ist es m glich den Wert mit einem Prescaler herunter zusetzen Einige AVRs haben einen internen unabh ngigen Taktgeber welcher mit einem Frequenzmultiplika tor modifiziert werden kann um schneller zu laufen Counter unterscheiden sich auch in Applikationsf llen und Arbeitsmodi Counter s default mode Im Default Modus macht ein Counter nicht
203. s leitet sich von einem Verhaltensmodell ab und ist an Funktionalit t Anfor derungen und Einschr nkungen der urspr nglichen Aufgabe angepasst Aus dem Verhaltensmodell des Sys tems wird ein spezifisches Kontrollprogramm entworfen welches wiederum die Basis f r den Softwarepro grammcode ist Alle drei Ebenen Verhaltensmodell Algorihtmus Quellcode m ssen miteinander vereinbar sein Algorith mus Der Algorithmus beschreibt die Kontrolllogik des System und wird als Blockdiagramm dargestellt Einige Elemente und Beschreibungen der Verh ltnisse gen gen um einen einfachen Algorithmus zu erstellen Wenn der Algorithmus f r den Roboter richtig zusammengestellt ist kann daraus sehr einfach ein Kontrollprogramm erstellt werden Grunds tzlich werden zwei verschiedene Objekte in einem Algorith mus genutzt ein Rechteck mit runden Ecken zur Darstellung einer Aktivit t sowie ein kleiner Diamant zur Kontrolle einer Bedingung gefolgt von einem Start weiterer Aktivit ten je nach Resultat der Kontrolle Bedeutung der im Algorithmus verwendeten Symbole Symbol Bedeutung 0 1 1 M1 linker Motor Stop rotiert im Uhrzeiger rotiert gegen den sinn Uhrzeigersinn M2 rechter Motor stop rotiert im Uhrzeiger rotiert gegen den sinn Uhrzeigersinn F erster mittlerer Be kein Signal Signal r hrungssensor FR erster rechter Ber h kein signal Signal rungssensor FL erster linker Ber h kein signal Signal rungssensor d Bezug 238 7 2 Mobile Roboterplattfor
204. s anderes als fortlaufend Nummer zu z hlen Sein wert kann nat rlich jederzeit ausgelesen und von ei 41 3 AVR Mikrocontroller nem Programm ver ndert werden Die einzige zus tzliche Funktion im Default Modus ist dass er ein Interrupt beim Counter Overflow verursacht Der Default Modus wird normalerweise benutzt um eine Sektion eines Programms in be stimmten Intervallen laufen zulassen Example Aufgabe Ein 8 MHz ATmega128 soll einen Interrupt alle 10ms 100 Hz ausl sen Daf r ist der 8 Bit Counter 0 brauchbar include lt avr interrupt h gt ISR TIMERO_OVE_vect Gibt den Counter einen Wert dass der nachste Overflow in 10Hz passiert Formel 256 8 MHz 1024 100 Hz 177 785 178 TCNTO 178 int main Um den ersten Interrupt in 10ms auszul sen muss der Counter initialisiert werden TCNTO 178 Prescaler Wert 1024 TCCRO 0x07 Erlaubt Overflow Interrupts TIMSK l 1 lt lt TOIEO Erlaubt global Interrupts sei Endlosschleife while 1 continue Der Counter in diesem Beispiel wird den Interrupt nicht in exakt 10 ms gene rieren daf r m sste man dem Counter einen Dezimalwert geben das ist aber nicht m glich Um einen pr zisen Intervall zwischen den Interrupts zu verwirk lichen wird sowohl der Prescaler Wert als auch der Wert des Counter m ssen 42 3 9 Counters Timers so ausgesucht werden dass ihre Division in einer exakten
205. setzt Es ist mit dem ATmega128 wie folgt verbunden clock data latch Abbildung 6 12 Aufbau des Verschiebungsindexes des LED Treibers mit den zugeh rigen Segmenten der Anzeige Latch Signal latch PG2 Taktsignal clock PC7 Datensignal data PC6 Die Daten werden in Form von Bits ber den Datenpin gesendet Immer wenn das Taktsignal high wird wird der Inhalt des Verschiebungsindexes nach rechts geschoben und das Bit vom Datenpin wird in die Zelle ganz links gelesen So werden 8 Bits in den Verschiebungsindex geladen Wenn das Latch Signal high gesetzt wird wird der Wert des Verschiebungsindexes in den Latch Index geladen und verbleibt dort bis zu einem erneuten Laden Jedes Bit des Latch Indexes ist durch eine Spannungsschaltung mit einem Segment der Zifferanzeige verbunden Das Segment leuchtet w hrend die Bitrate high ist Zur Darstellung von Ziffern auf der digitalen I O Modulanzeige des HomeLab sind die folgenden Funktionen in der Bibliothek von HomeLab enthalten be Einrichtung der Pins 1 static pin segment_display_latch PIN G 2 static pin segment_display_data_out PIN C 6 static pin segment_display_clock PIN C 7 ee Markierung der Karte 167 6 Praktische Beispiele Die Bits markieren Segmente Ein niedriger Rang wird mit A ein hoher mit DP gekennzeichnet Ti static const unsigned char segment_char_map 11 0b00111111 0b00000110 0b01011011 0b01001111 0b01100
206. spannung definiert den maximalen digitalen Wert Betr gt sie zum Beispiel 3V betr gt dann wird ein Input mit der gleichen Spannung mit 210 1 1023 ausgelesen Der AVR ADC arbeitet nach dem Prinzip der schrittweisen Ann herung Kurz gesagt die gemessene Spannung wird mit bestimmten Spannungslevels vergli chen und die Ergebnisse werden als Bit Array ausgegeben Diese Methode ist relativ langsam da jedes Bit im Endergebnis einzeln berechnet wird Der AVR ben tigt 13 Taktzyklen f r jede Messung f r die Erste jedoch beim Start up werden 25 Taktzyklen ben tigt Diese Taktzyklen entsprechen jedoch nicht den Arbeitstakten des Controllers sondern sind spezielle Taktzyklen die der ADC Einheit durch den Frequenzteiler zugewiesen wurden Um die maximale Pr zisi on zu erreichen sollte die ADC Frequenz sollte 50 200 KHz betragen bei h heren 39 3 AVR Mikrocontroller Frequenzen sinkt die Genauigkeit Eine h here Frequenz ist dann sinnvoll wenn viele Daten ausgelesen werden sollen wobei die Genauigkeit dieser vernachl s sigt wird Gem dem AVR Handbuch dauert eine Messung 13 260 us Der gemessene Wert kann als 8 oder 10 Bit Wert gelesen werden Da der AVR ein 8 Bit Mikrocontroller ist verf gt er ber zwei 8 Bit Register um ADC Werte zu speichern In den Einstellungen kann festgelegt werden ob die ersten oder letzten zwei Bits in ein seperates Register sollen Falls die zwei zuletzt ausgelese nen Bits welche das Ergebnis
207. st das vorherige Wort wurde gesendet In diesem Beispiel ist es jedoch nicht n tig zu warten da nur das 48 3 10 USART erste Symbol gesendet wird Es sollte jedoch beachtet werden wenn mehr als ein Symbol gesendet wird while UCSROA amp 1 lt lt UDRE continue Schreibe das Symbol in den Sendepuffer UDRO IX Endlosschleife while 1 continue 49 4 Elektronik Verschiedene elektronische Schaltkreise werden so h ufig in praktischen Beispie len verwendet dass sie in den folgenden Kapiteln separat beschrieben werden Da sie das Verst ndnis der Beispiele sowie den Bau eigener Schaltkreise erleich tern ist es wichtig sie zu kennen 4 Elektronik 4 1 Ohm sches Gesetz Das Ohm sche Gesetz besagt dass die Stromst rke eines elektrischen Leiters di rekt proportional zu der potenziellen Differenz oder Spannung zwischen zwei Punkten sowie umgekehrt proportional zu dem Widerstand zwischen diesen ist unter der Voraussetzung dass die Temperatur konstant bleibt Die Gleichung lautet wie folgt Abbildung 4 1 Resistance of the conductor applied voltage and current through the resistance I U R mit I f r die Stromst rke in A U f r die Spannung in V R f r den elektrische Widerstand in N Viele weitere in der Elektronik h ufig verwendete Gleichungen sind vom Ohm schen Gesetz abgeleitet 52 4 2 Berechnung des LED Widerstands 4 2 Berechnung des LED Widerst
208. st z B mehrere Motoren und Werte verschiedener Sensoren gleichzeitig kontrollieren Erl utern Sie Ihre Antwort 6 4 Anzeigen und Displays 6 4 Anzeigen und Displays HS 1106BMG VV Einer der einfachsten Methoden um sicher zu gehen dass ein Mikrocontroller funktioniert ist Code zu einem Programm hinzuzuf gen um eine oder mehrere LEDs bei einer bestimmten Aktivit t blinken zu lassen Sehr oft ist dies nicht genug weil mehr Informationen berpr ft werden m ssen als mit einer LED m glich oder da einige Anwendungen brauchen eine Benutzerschnittstelle welche Text oder Nummern anzeigt ben ti gen Hier finden alle Arten von Indikatoren und Displays Verwendung welche das Anzeigen von Nummern Texten oder sogar Bildern erm glichen Computerbildschirme z hlen zu den bekanntesten Anzeigeger ten F r einen Programmierer ist die Arbeit mit ihnen allt glich jedoch ist es sehr aufw ndig Pixel mit Hilfe von Mikrocontrollern auf einem Bildschirm anzuzeigen Das folgende Kapitel befasst sich mit einfachen Displays und Bildschirmen Anzeigen mit LED Segmenten und zwei Typen von monochromen LCDs Zus tzlich zu diesen werden auch LED Matrizen und organischen Farb LEDS OLED mit Mikrocontrollern genutzt Fr her wurden Nixie R hren verwendet welche separate Gl hdr hte f r jede Zahl hatten Dar ber hinaus gibt es elektromechanische Anzeigen deren verschieden farbige Segmente physisch gedreht werden Neuerdings erfreuen sich E Pap
209. standen und besitzt damit die wichtigsten Eigenschaften eines Projektes Die Schl sselaktivit ten des Projekts waren Er stellung des Zeitplans Planung und Management der Gruppenarbeit berwachung des Budgets sowie Be sorgung des Materials Weitergabe aktueller Berichte an den Leiter Pr sentation sowie Dokumentation des Ergebnisses Der Projekbericht enth lt Angaben zu den Arbeitsgruppen Terminen von Meetings dem Projekt plan am besten in einem Gantt Diagramm der Ressourcenverteilung inkl Personalverteilung sowie zum geplanten und aktuellen Budget Nachfolgend wird ein einfacher Projektplan als Gantt Diagramm dargestellt 244 7 2 Mobile Roboterplattform Di ee Duration Ben Wed 6 Jan Sata Jen Fit Jan Mon 18 Jen Thu 21 Jan Sun 24 Jan Wed 27 Jen 0 12 a o 1 a o 12 0 2 Ta 1 Algtaas 1 33 days y 2 L hte lesande 0 33 days Mikk Peeter Raivo 3 Ideelahenduste genereerimine 087 days Mikk Peeter Raivo 4 Parima lahenduse vaik 0 33 days 5 Projekteerimine 9 days 6 _Pahim tteskeem 1 day 7 Mehaanika 5 days g 3D mudel 3 days g Eektroonika 8 days 10 Algorim 2days 17 Valmistamine 7 33 days 12 Koostamine 1 33 days Raivo Mikk 50 Peeter 50 150 KRaivo 50 13 _ Programmeerimi ine 571 days 1 14 Testmine 0 44 days 15 Parandused vastavat testimisele 087 days 16 Projekti haldamine 16 78 days 17 Jooksva t esitlus 11 days 18 Jooksva t esis 1day 13 Jooksva t estus 1 day Jooks
210. stellen eingesetzt Autos besitzen Ultraschall Entfer nungsmesser als Parksensoren Neben der Entfernungsmessung dient er auch dazu das blo e Vorhandensein eines Objekts im Messbereich zu erkennen z B in der Gefahrenzone einer Arbeitsmaschine Sind Ultraschall transmitter und empf nger getrennt kann die Flie geschwindigkeit des Materials zwischen ihnen bestimmt werden da Schallwellen langsamer aufw rts flie en bung Das HomeLab enh lt einen Devantech SRF04 SRF05 Ultraschall Entfernungsmesser Der SRF04 SRFO5 ist jedoch nur ein Sensor und gibt keine direkte Information ber die Distanz Neben den Stromversorgungspins besitzt der Sensor auch einen Trigger und einen Echo Pin Ist der Trigger Pin high generiert der Sensor eine acht Perioden lange 40 kHz Ultraschallwelle Daraufhin wird der Echo Pin high und bleibt high bis das Echo zur ck kommt Das Echo Signal gibt also generell die Zeit an die der Schall ben tigt um das Objekt zu erreichen und zum Sensor zur ck zu kommen Die Entfernung zum Objekt ergibt sich daraus dass die gemessene Zeit mit der Schallgeschwindigkeit multipliziert und dann durch zwei dividiert wird Der folgende Graph zeigt den Zusammenhang zwischen Zeit und den Signalen des Empf ngers Triggers und des Echos 10 us Trigger Wave 100us 18ms Echo Abbildung 6 27 Die Signale des SRFO4 199 6 Praktische Beispiele Um den SRF04 SRFO5 mit dem AVR zu nutzen m ssen Trigger und
211. t lt COMIA1 1 lt lt COMIB1 1 lt lt WGMI TCCRIB 1 lt lt WGMB 1 lt lt WGMI 1 lt lt CS11 Maximum value of the counter Formula TOR 8 Mirize 87 50IHZ ICR1 20000 Half period of the first motor is 1 ms and second 2 ms OCRIA 1000 OCRIB 2000 Endless loop while 1 continue 46 3 10 USART 3 10 USART USART ist ein Universal Synchrones Serielles Interface UART ist die vereinfach te Version Universelles Asynchrones Interface Der Unterschied zwischen bei den liegt darin dass das USART auch eine Taktsignalleitung nutzt um Daten zu synchronisieren w hrend das UART nur Datenleitungen benutzt Das UART des AVR Mikrocontrollers Duplexverkehr 5 bis 9 Bit Datenworte 8 Bit Wort 1 Byte 1 oder 2 Stop Bits 3 Parit tsmodi und eine Vielzahl an Baud Raten zul sst AVR Mikrocontroller verf gen normalerweise ber bis zu 2 USART In terfaces jedoch gibt es auch einige ohne USART Daten bertragungen werden mit einen Wort f r Wort ausgef hrt der AVR konvertiert das Wort welches er vom Benutzer bekommt in Bits auf Hardwareeinheiten und bermittelt es un abh ngig und andersherum Der Benutzer kann das USART mit Schreib und Lesekonfigurationen sowie Status und Datenregistern kontrollieren Jede Einstellungsoption hat ein eigenes Register welches recht einfach anhand des Datenblatts konfiguriert werden kann Die Baud Rate ist allerdings etwas schwieriger einzust
212. t werden aber die Funk tion ist eher f r das ndern der Periode des Signals gedacht Zus tzlich kann ein Counter so eingestellt werden dass er mit auf oder absteigenden Werten arbeitet Der Counter und die Signal generierenden Modi die diese nutzten sind einer der komplexesten Peripheriemodule in einem AVR ber jeden hier zu schreiben w rde eine gro e Zeitverschwendung sein normalerweise gibt es keinen Grund alles zu wissen um sie zu nutzen Der folgende Absatz beschreibt einer der b lichen PWM Signale in den Robotics Der Rest kann den AVR Dokumentationen entnommen werden 45 3 AVR Mikrocontroller Pulse Width Modulation Pulsweitenmodulation PWM ist ein Typ eines Si gnals wo die Frequenz und die Periode normalerweise konstant sind aber die L nge der Halb Periode ndert sich PWM Signale werden benutzt um elektro mechanische optische und andere Ger te zu kontrollieren Zum Beispiel ein Ser vomotor nutzt ein ein 50Hz PWM Signal und haben einen hohe Halbperiode von 1 2 ms Example Aufgabe Generiere mit einem 8Mhz ATmega128 zwei Geschwindigkeits regu lierende Servomotor Signale Nutze Pin PB5 OC1A um eine Pulsweite von Ims zu generieren und Pin PB6 OC1B um eine Pulsweite von 2ms zu generieren include lt avr io h gt int main Set pins as outputs DDRB 1 lt lt PIN5 1 lt lt PIN6 Set outputs A and B low for comparison Fast PWM mode prescaler value 8 TCCRIA 1 l
213. tellen im Quellco de eingef gt werden Erreicht die Implementation des Programms einen solchen Punkt wird das Programm angehalten um den Status des Mikrocontrollers an diesem Punkt festzulegen Die Implementation des Programms kann mit dem Befehl Run fortgef hrt oder durch Step Into F11 mit nur einem Befehlt vollst n dig implementiert werden Die Nutzung von floating point Variablen Manchmal ist es bei AVR Programmen notwendig Floating Point Variablen zu nutzen Um mit ihnen zu rechnen und sie mit printf Typ Funktionen darzustel len m ssen folgende Installations nderungen in der Konfiguration des Projekts vorgenommen werden 1 ffnen Sie die Installationsdatei des Projekts aus dem Men Project Confi guration Options F gen Sie libprintf_flt a und libm a zu libhomelab a der Homelab Bibliothek im Konfigurationstab Libraries hinzu 2 ffnen Sie anschlie end Custom Options und w hlen Sie All files F gen Sie daraufhin Zeilen mit Iprintf_flt ja Im in die Box rechts sowie die Zeile mit uvfprintf zu der Linker Options Sektion hinzu 3 Klicken Sie auf OK und schlie en Sie das Konfigurationsfenster 6 1 2 Die Softwareumgebung f r Linux Die folgende Anleitung beschreibt die Installation und de Benutzung des AVR Toolkit 9 10 Ubuntu OS 124 6 1 Anfang Installation der Software Installieren Sie die folgende Software 1 Linux Softwarepakete gec avr GNU C Compiler f r den AVR avr
214. tentiometer an der Sensorplatine angeschlossen ist Um die Reichweite von 100 bis 100 die f r die Steuerung des Servomotors notwendig ist zu erhalten wird die H lfte des Maximums 512 vom ADC Wert abgezogen und das Ergebnis durch f nf dividiert Das Ergebnis ist 102 kleine Ungenau igkeiten k nnen unbeachtet bleiben da Servomotoren sich auch in der Relation des PWM Signals und des Drehwinkels unterscheiden Die finale PWM Halbperiodenweite in Anwendungen muss ber das Try and Error Verfahren gefunden werden Auch wenn die Funksteuerungen von RC Modellen M glichkeiten f r ein pr zises Setup besitzen Wenn das Programm l uft wird die Rotorposition des Servomotors je nach Position des Potentiometers ver ndert 1 Testprogramm des Motormoduls des HomeLab kit include lt homelab adc h gt include lt homelab module motors h gt ip Hauptprogramm ip int main void short position Einrichtung des ADC adc_init ADC_REF_AVCC ADC_PRESCALE 8 Einrichtung des Motors servomotor_init 0 Endlosschleife while true Auslesen der Position aus dem Potentiometer und Konvertiereung der Reichweite des Servomotors position short adc_get_value 3 short 512 short 5 Festlegung der Position des Servomotors servomotor_position 0 position 214 6 6 Motoren 6 6 3 Schrittmotor Notwendiges Wissen N Motor Module i Digital Inputs Outputs 2 Motors
215. ter direkt im Programm ansprechen Die Compiler k n nen den Code aber nur dann optimieren wenn sie mit konstanten Variablen ar beiten und nicht mit unbest ndigen Variablen die sich w hrend des Programms 140 6 2 Digitale Input Output Pins oder mit Arrays ndern Der folgende Programmcode ist ein Teil der Pin Operations Bibliothek um die Vorgehensweise mit Pin Variblen zu erkl ren Es wird f r Anf nger nicht einfach sein zu verstehen da C Sprache Pointer genutzt werden die nicht in diesem Buch beschrieben sind Es gibt jedoch sehr viel Material ber Pointer in B chern und nat rlich im Internet Makrokonstante um Register Pointer zu definieren define _REG_PTR_ volatile uint8_t Pin Datentyp Hi typedef struct pin _REG_PTR_ ddr _REG_PTR_ port _REG_PTR_ pin uint8_t mask pin le Makrofunktion fiir Initialisierung der Pin Variable define PIN port_char bit_index EN _REG_PTR_ port_char _REG_PTR_ port_char _REG_PTR_ port_char bit_mask bit_index Konfiguriere Pin als Output inline void pin_setup_output pin pin bitmask_set pin ddr pin mask Hk Setze Pin high 141 6 Praktische Beispiele inline void pin_set pin pin bitmask_set pin port pin mask W Setze Pin low hil inline void pin_clear pin pin bitmask_clear pin port pin mask HomeLab Ubung 2 Zusatzlich zum
216. ternal RAM starts at 0x100 tart of bss section Lal PE as oi _ oxo 5 External RAM starts at Ox1100 Specify start of heap gt _ Specify end of heap Linker flags Purpose Flag El Link with floating point printf library WI u vfprintf WI Iprintf_flt O Link with math library WI Im O Link with printf library WI Iprintf ok setas defaut 2 Klicken Sie auf OK und schlie en Sie das Fenster 135 6 Praktische Beispiele 6 2 Digitale Input Output Pins Die folgenden Kapitel stellen den digtalen Input Output Pin dar welche Grund funktionen des Mickocontrollers sind Input Output Pins sind Mikrocontroller kontakte Es sind die sogenannten Beine legs Sie dienen dazu digitale Si gnale zu empfangen und zu senden Ist ein Pin als Input konfiguriert kann der Status von Schaltern oder einfachen Sensoren die mit ihm verbunden sind von diesem Pin empfangen werden Ist ein Pin als Output konfiguriert ist kann er benutzt werden um LEDs oder elektrisches Anlagen zu steuern Fast alle typischen Mikrocontroller Pins erlauben die Ausf hrung einfacher Input Output Funktionen auch wenn diese Pins h ufig noch alternative Funktionen haben Zun chst sollen jedoch erst die Pins mit ihren Grundfunktionen darge stellt werden bevor in separaten Kapiteln auf die alternativen Funktionen ein gegangen wird 136 6 2 Digitale Input Output Pins 6 2 1 Light emitting Diode LED
217. tform else if pin_get_value frontright Umkehr des linken Motors demotor_drive 0 1 Pause 2 Sekunden sw_delay_ms 2000 Gebrauchsfertige L sung Die in diesem Projekt gebaute Roboterplattform besteht zum gr ten Teil aus Plastik au er der Motorbefes tigung welche aus Aluminium hergestellt ist Die elektrischen Module wurden auf einander platziert die Batterie liegt lose zwischen den Platten Die Sto stangen wurden aus PCB gebaut und schwarz gestrichen Die Dachplatte des Roboters ist flach und erlaubt das Anbringen verschiedener Ger ten Es wurde ein einfa ches Radar installiert welches aus einem kleinen RC Servomotor und einem Infrarotsensor besteht Als zweite L sung wurde ein intelligentes Kameramodul installiert welches beim L sen visueller Probleme hilft Beide L sungen werden auf den folgenden Bildern vorgestellt Ein einfacher Manipulator wurde als drittes Ger t getestet dessen Komponenten mit standard Servomotoren sowie einer seriellen Schnittstelle zur Kontrolle des Antriebs betrieben werden 241 7 Beispielprojekt Abbildung 7 9 Roboter mit Infrarotradar 242 7 2 Mobile Roboterplattform Abbildung 7 10 Roboter mit intelligentem Kameramodul CMUcam3 Kostenkalkulation Die Kostenkalkulation enth lt die Kosten f r die Komponenten und die Produktion des Roboters Tabelle der Komponentenkosten 243 7 Beispielprojekt Komponent Motor Mikrocontroller Motor
218. timmt ist Nachfolgend werden eine Dokumentation eines typischen Projekts f r eine mobile Roboterplattform sowie die verschiedenen Projektphasen dargestellt Urspr ngliche Aufgabe Planen und konstruieren Sie eine multifunktionale mobile Roboterplattform mit einfacher Navigationsfunkti on unter der Verwendung von HomeLab Komponenten Die Roboterplattform muss eine einfach zu ndernde operationale Funktion besitzen wenn sie mit verschiedenen Gadgets ausger stet wird Manipulator Radar Kamera Der Roboter muss sich in geschlossenen R umen auf flachen B den bewegen k nnen Voraussetzungen Maximale Abmessung 20 cm x 20 cm x 20 cm maximales Gewicht 2 kg H chstgeschwindigkeit 0 2 m s 231 7 Beispielprojekt volle Selbstst ndigkeit Einschr nkung Muss berwiegend aus HomeLab Komponenten bestehen Kostengrenze 10000 EEK 630 Grundlegendes Modell des Systems Das grundlegende Modell des System wird mit einem Blockdiagramm dargestellt Es beschreibt die Struktur das Verhalten und andere wichtige Aspekte des Systems Als Beispiel ist nachfolgend das hierarchische Modell des System abgebildet system Robotplatvorm block block block block block Konstruktsioon Ajamid Juhtimine Andurid Seadmed en A A ee block block block block block Raa
219. tiometeroutputspannung kann gemessen werden indem die Vergleichsspannung vom AVR digital analog Konverter vom AVCC Pin genommen wird die Folgende Funktionen f r den ACR ADC sind in der HomeLab Bibliothek enthalten Data types for adjustment Mu typedef enum ADC_REF_AREF 0x00 ADC_REF_AVCC 0x01 ADC_REF_2V56 0x03 adc_reference typedef enum ADC_PRESCALE 2 0x01 ADC_PRESCALE 4 0x02 ADC_PRESCALE 8 0x03 179 6 Praktische Beispiele ADC_PRESCALE 16 0x04 ADC_PRESCALE 32 0x05 ADC_PRESCALE_64 0x06 ADC_PRESCALE_ 128 0x07 adc_prescale RE Starting the ADC void adc_init adc_reference reference adc_prescale prescale Allowing ADC to operate selecting the frequency divider ADCSRA bit_mask ADEN prescale amp 0x07 Selecting comparison voltage ADMUX reference amp 0x03 lt lt REFSO Hi Converting the values of selected channel Hi unsigned short adc_get_value unsigned char channel Setting the channel ADMUX ADMUX amp 0xF0 channel amp 0x0F Starting the conversion bit_set ADCSRA ADSC Waiting the end of the conversion while bit_is_set ADCSRA ADSC asm volatile nop Returning the results return ADW Die Funktion adc_init muss zu Beginn des Programms ausgef hrt werden Sie sorgt daf r dass der ADC funktioniert Die Vergleichsspannung muss entweder vom AREF oder AVCC Pin kommen oder es
220. tionen f r das graphische LCD sind hnlich zu denen des alphanumerischen LCD Zuerst muss der Bildschirm mit der Funktion Icd_gfx_initgestartet werden Nach dem Start sollte man den Bildschrim bzw den Speicher des Controllers mit der Icd_gfx_clear Funktion leeren Die Library enth lt eine Abbildung des vollst n digen lateinischen Alphabets der Zahlen sowie der am h ufigsten verwendeten Zeichen Die Buchstaben ist 7 Pixel hoch und 5 Pixel breit Der Abstand zwischen den Buchstaben betr gt horizontal 6 und vertikal 8 Pixel Es k nnen also Buchstaben in 6 Reihen mit 14 Spalten auf dem Display dargestellt werden Zur Darstellung von 173 6 Praktische Beispiele Buchstaben oder Text muss zun chst mit der Funktion Icd_gfx_goto_char_xy die Position festgelegt werden Mit der Funktion cd_gfx_write_char wird ein Buchstabe angezeigt die Funktion Icd_gfx_write_string erm glicht die Darstellung eines Textes Nachfolgend ist ein Beispiel des Zeitz hlers dargestellt Das Programm z hlt Sekunden ann hernd Minuten und Stunden Zum Konvertieren von Zeit in Text wird die Funktion sprintf genutzt Beispiel f r die Nutzung des graphischen LCD des HomeLab Die Tageszeit wird ab Beginn des Programms auf dem LCD angezeigt include lt stdio h gt include lt homelab module lcd_gfx h gt include lt homelab delay h gt ip Hauptprogramm i int main void int seconds 0 char text 16 Einrichten des LCD le
221. tionen mit bestimmten Halbschrit ten aus Die Kommutation wird mit der Tabelle der Halbschritte durchgef hrt aber es werden komplexere Bitoperationen genutzt Ly Vorbereitung der Steuerung des bipolaren Schrittmotors A void bipolar_init void DDRB 0x0F PORTB amp 0xF0 I ip Bewegung des bipolaren Schrittmotors mit Halbschritten Dh void bipolar_halfstep signed char dir unsigned short num_steps unsigned char speed unsigned short i unsigned char pattern statel 0 state2 1 Festlegung der Richtung 1 dir dir lt 0 2 1 1 Durchf hrung von Halbschritten for i 0 i lt num_steps i statel dir state2 dir Erstellung des Musters pattern 1 lt lt statel 8 gt gt 1 1 lt lt state2 8 gt gt 1 Output setzen PORTB PORTB 0xF0 pattern 0x0F 218 6 6 Motoren Pause um auf die Ausf hrung des Schrittes zu warten sw_delay_ms speed Anhalten des Motors PORTB amp 0xF0 Die Funktion wird durch ein Beispielprogramm demonstriert welches den Motor abwechselnd alle 200 Halb schritte in eine Richtung rotieren l sst Die Geschwindigkeit der Rotation wird durch die L nge der Pausen zwischen den Schritten bestimmt Wenn die Pause zu kurz ist kann der Motor sich aufgrund der Tr gheit nicht drehen Das Testprogramm f r den bipolaren Schrittmotor des Motormoduls des HomeLab Wi includ
222. tische Lernhilfsmittel sind das konventionelle Lehrbuch und das bungs 59 5 Robotic HomeLab Kit buch welches zus tzlich zur Papierversion auf elektronisch erh ltlich ist Der praktische Teil besteht aus dem Robotic HomeLab und dem DistanceLab einer internetbasierten Programmierumgebung f r Roboter Das HomeLab bil det zusammen mit dem DistanceLab eine kompakte L sung was bedeutet dass der Lernende auch einzelne Funtionen der Robotik z B Sensormesswerte Mo torsteuerung etc von zuhause aus ausprobieren und gleichzeitig sein erlerntes Wissen im Robotersystem anwenden kann Das Robotersystem kann ber das DistanceLab erreicht werden welches aus realen Ger ten besteht Das System selbst ist aus denselben Komponenten zusammengestellt wie sie auch im mobi len HomeLab Koffer enthalten sind Der Ablauf von einem Lernprozess bzw der Arbeit mit dem Lab ist auf dem n chsten Bild beschrieben gt Face to face lecture gt Video lecture gt Online lecture HTTP WWW ROBOTICLAB EU Introduction LECTURE SEMINAR PRACTICAL WORK with HomeLab REPORT SOLUTION DEMONSTRATION gt Computer class gt Library gt Home Working place gt Presentation gt E environment gt Application server Das Thema beginnt mit einer Einf hrung welche eine klassische Vorlesung ei ne Onlinevorlesung oder eine Videovorlesung sein kann Die Videovorlesungen sind auch f r die klassischen Vorlesungen
223. tnachrichten zwischen zwei Control lern ber die RS 232 Schnittstelle erm glicht Nutzen Sie das LCD um die Nachrichten anzuzeigen In der ersten Reihe muss die eingegebene Nachricht zu sehen sein in der zweiten Reiche die zuletzt emp fangene Nachricht Um eine Nachricht einzugeben k nnen Potentiometer und oder Schalter genutzt werden 227 6 Praktische Beispiele 6 7 4 Fragen 10 228 Beschreiben Sie das UART Paket Was ist die Baud Rate Was ist der Unterschied zwischen Voll Halb Duplex Finden Sie mindestens 5 Sensoren welche die serielle Schnittstelle nutzen Nennen Sie den Unterschied zwischen UART und USART Schnittstelle Welche ist schneller Wie funktioniert die SPI Schnittstelle Nennen Sie Schnittstellen die das Anschlie en von mind 100 Ger ten an einen einzigen Bus erlauben Nennen Sie verschiedene Archtiekturen und erkl ren Sie ihre Unterschiede Auf welchem Spannungslevel finden RS 232 und UART Verbindungen statt Wie lange ben tigt es 1MiB bei einer Baud Rate von 9600 dps mit 8 Daten Bits einem Stop Bit und ohne Parit tskontrolle zu senden 7 Beispielprojekt Das Beispielprojekt in diesem Kapitel enth lt eine Anleitung zur Vorbereitung einer Projektdokumentation und erl utert welche Themen behandelt werden sollten sowie was zu den einzelnen Themen geschrieben werden sollte Es ist sehr hilfreich eine Dokumentation eines typischen Projekts als Beispiel zu nehmen Leider ist die gesamte P
224. tsignal des Mikrocontrollers kann es sein dass es nicht exakt mit der gew nschten Verz gerungsperiode dividiert und die Verz gerung so ungenau wird bung Der Programmcode unterhalb stellt eine vereinfachte Timer basierte Verz gerungsfunktion dar Das Z hlen funktioniert genauso wie bei einer Softwareverz gerungsfunktion Es wird eine gew nschte Verz gerung von 1 ms mit dem Timer 0 eines 8 Bit ATmega128 erzeugt Die zuvor errechnete Taktfrequenz liegt bei 14 7456 MHz und das Timersignal muss mindestens 64 Mal dividiert werden so dass der Timer seinen berlauf nicht in einer Millisekunde erreicht Der Wert den der Timer haben muss so dass der berlauf nach 1 ms stattfindet wird mit durch die Variable timer_start dargestellt F_CPU eine Konstante in der Makrosprache gibt die Takt frequenz in Hz an Diese sollte 25 6 betragen da nur ganze Zahlen ber cksichtigt werden liegt der Startwert bei 26 Leider entsteht hier eine gewisse Ungenauigkeit welche aber sehr gering ist 1 748 In dem Zyklus wird der Timer initialisiert und die berlauf Flagge genullt in dem eine 1 hineingeschrieben wird Dann wird abgewartet bis der Timer vom Startwert bis 256 gez hlt hat also zum berlauf In dem Moment wird die Flagge hoch gesetzt und eine Verz gerung von einer 1 ms hat stattgefunden Am Ende der Funktion wird der Timer gestoppt 158 6 3 Timer und Verz gerungen Hardwareverz gerung in Millisekunden Hi void hw_delay_ms
225. tstelle usart_init_async port USART_DATABITS 8 USART_STOPBITS_ONE USART_PARITY_NONE USART_BAUDRATE_ASYNC 9600 Installation des LCD Icd_alpha_init LCD_ALPHA_DISP_ON_ BLINK Anzeige eines Begr ungstextes auf dem Display lcd_alpha_write_string Waiting for the message Cursor an den Beginn der zweiten Reihe setzen lcd_alpha_goto_xy 0 row Hallo zum Computer sagen usart_send_string port Hello write something r n Endlosschleife while true 225 6 Praktische Beispiele Zeichen aus der seriellen Schnittstelle lesen if usart_try_read_char port amp c Befassen wir uns mit dem Zeichen zur nderung der Reihe ine re N Anderung der Reihe row 1 row Vorherige Nachricht aus der Reihe l schen Icd_alpha_clear_line row else Ausgabe des Zeichens auf dem Display lcd_alpha_write_char c yhendus 9600bps HyperTerminal lol x Eile Edit View Call Transfer Help Tere kirjuta midagi Connected 0 00 17 Auto detect 9600 8 N 1 SCROLL y Abbildung 6 38 Das Fenster des HyperTerminal Windows XP OS beinhaltet das Programm HyperTerminal Dieses Programm kann ber das Start Men ge ffnet werden indem Zubeh r gt Kommunikation HyperTerminal ausgew hlt wird W hlen Sie zur Konfigu ration 9600 bps aus 1 Startbit und 1 Stopbit ohne Parit ts und Datenstromkontrolle Wenn HyperTerminal ge ffnet ist w
226. u ein beliebiges LCD Schreiben Sie eine Funktion zur Darstellung eines Rechtecks auf dem LCD Breite L nge sowie die Ko ordinaten der oberen linken Ecke sind dabe vorgegeben Die Linienst rke betr gt 1 Pixel berpr fen Sie ob das Rechteck ins Display passt Hierzu ist es ratsam sich mit der HomeLab Library zu befassen Programmieren Sie ein einfaches Wurm Spiel f r das graphische LCD Der Wurm ist 1 Pixel breit und 5 Pixel lang Durch Bet tigung der Schalter kann der Wurm sich nach rechts oder links bewegen Er muss auf diese Weise Kollisionen mit dem Displayrand vermeiden k nnen Es gibt Bonuspunkte f r das Einsammeln von Eiern wodurch der Wurm w chst Die einfachste L sung ist den Wurm aus dem Buchstaben O zu entwickeln Schreiben Sie ein Programm zur Darstellung verschiedener Wetterbedingungen auf dem graphischen LCD Nutzen Sie f r sonniges Wetter ein Bild der Sonne f r Regen eine Regenwolke f r bew lkt eine Wolke und f r Schnee eine Schneeflocke Die Gr e der Bilder kann variieren wichtig ist nur dass die Bilder sich deutlich voneinander unterscheiden Die Bilder sollen mittels eines Schalters gewechselt werden k nnen Fragen 176 Wie viele Pins nutzt die 7 Segment Zifferanzeige mit Punktsegment wenn sie direkt mit dem Con troller verbunden ist Wie viele Pins werden ben tigt wenn sie ber einen Treiber gesteuert wird Treiber A6275 Was bestimmt die Helligkeit der 7 Segment Zi
227. uf seine Algorithmen konzentrieren und muss keine Zeit mit Ein zelheiten verbringen die nicht f r die zu benutzende Hardware notwendig sind Programmierstil in den Beispielen Die Beispielprogramme sind in einem einheitlichen Stil geschrieben um so einen synoptischeren Programmcode zu erhalten So wird das Programm leserlicher und einfache Syntaxfehler k nnen vermieden werden Daher sollte dieser Stil auch bei den bungsaufgaben angewandt werden Die Hauptcharakteristika sind 108 6 1 Anfang Das Programm all seine Funktionen und Variablen sind in englischer Spra che und Kleinbuchstaben geschrieben die W rter werden durch einen Un terstrich getrennt Die Funktionen werden wie folgt gekennzeichnet object_action_subject Wichtigere Teile des Programms werden kommentiert Jeder Block in C Code markiert durch und startet und beginnt in einer neuen Zeile Bl cke werden mit der Tabulatortaste geordnet Die Tabulatortaste wird nicht innerhalb einer Zeile verwendet 6 1 Anfang 109 6 Praktische Beispiele Zur Programmierung des AVR Mikrocontrollers werden eine Programmierum gebung ein Compiler f r die betreffende Sprache sowie Software zum Laden der erstellten Programme auf den Controller ben tigt Die komfortabelste Weg hier f r ist die Nutzung der speziellen DIE Integrated Developing Environment Der AVR Mikrocontroller kann in folgenden Programmiersprachen program miert werden Assembler C C Pascal
228. ung selbstst ndig zu fin den Wenn m glich sollten die Sch ler das HomeLab kit mit nach Hause nehmen k nnen um so auch dort arbeiten zu k nnen So sind sie nicht an den Zeitrahmen und Ort der bung gebunden Berichte Lernende m ssen einen Bericht verfassen in welchem sie ih re Arbeit gem den Anforderungen an einen Bericht beschreiben und welcher Antworten auf Fragen des Lehrers an die Gruppe gibt Der Bericht sowie die L sung der Aufgabe HEX Datei sollen dem Lehrer per E Mail zugeschickt oder in den E Learning Bereich hochgeladen werden berpr fung Der Lehrer berpr ft und bewertet den Bericht sowie die erarbei tete L sung jeder Gruppe qualitativ 63 5 Robotic HomeLab Kit 64 Er kann berpr fen ob die L sung entsprechend der bungsvoraussetzungen funktioniert und dar ber hinaus von den Sch lern verlangen das Programm m ndlich zu erl utern In die sem Fall sollte jedes Gruppenmitglied einen Teil des Berichtes er kl ren 3 Gruppenmanagement Bei der Durchf hrung von bungen in einem Klassenraum kommt es h u fig vor dass eine GRuppe langsamer arbeitet als die anderen und somit st rker vom Lehrer unterst tzt werden muss um nicht hinterherzuh ngen hnlich ist es wenn eine Gruppe schneller arbeitet als alle anderen und somit auf die n chste Aufgabe warten muss Beide Probleme k nnen mi nimiert werden wenn der Arbeitsprozess f r alle offensichtlich dargestellt ist und jeder ei
229. ungenau Zwei Typen von Schrittmotoren werden anhand der Spulen unterschieden Unipolare und bipolare Schrittmotoren Durch Aufbau werden drei zus tzliche Segemente bedacht Reluktanzschrittmotor hohe Genauigkeit wenig Drehmoment niedriger Preis 215 6 Praktische Beispiele Permanentmagnetschrittmotor niedrige Genauigkeit hohes Drehmoment niedriger Preis Hybrider Schrittmotor hohe Genauigkeit hohes Drehmoment hoher Preis Der Reluktanzschrittmotor verf gt ber gezahnte Windungen und einen gezahnten Weicheisenrotor Die gr te Zugkraft entsteht wenn die Z hne beider Seiten sich gegenseitig abdecken Der Permanentmagnetschritt motor bestitz wie der Name schon sagt Permanentmagneten welche sich je nach Polarit t der Windung ori entieren Der hybride Schrittmotor nutzt beide Techniken Je nach Modell des Schrittmotors braucht eine vollst ndige Rotation 360 des Rotors hunderte Schritte von Stromwendungen F r stabile und weiche Bewegungen wird eine bestimmte Kontrollelektronik genutzt wel che den Motor je nach Parameter kontrolliert Tr gheit des Rotors Drehmoment Resonanz etc Zus tzlich zur Kontrollelektronik werden verschiedene Methoden zur Stromwendung genutzt Wird eine Windung in Reihe umgewandelt wird dieser Vorgang Ganzschrittantrieb genannt ver ndert sich der Antrieb zwischen zwei Wicklungen nennt man diesen Halbschritt Dar ber hinaus werden Kosinus Mikroschritte genutzt um
230. unsigned short count Berechnung des Startwertes des Timers register unsigned char timer_start 256 F CPU 1000 64 Start des Timers timer0_init_normal TIMERO_PRESCALE_64 Z hlen der Verz gerungsvariable auf 0 while count gt 0 Initialisierung des Timers timer0_set_value timer_start berlauf Flagge auf Null setzen timer0_overflow_flag_clear Warten auf den berlauf while timer0_overflow_flag_is_set asm volatile nop Uberlauf Flagge auf Null setzen timer0_overflow_flag_clear Timer anhalten timer0_stop Das folgende Programm ist hnlich wie das f r die Softwareverz gerung In der k rzeren 100 ms langen halb Periode wird die LED eingeschaltet und in der l ngeren 900 ms halb Periode ausgeschaltet Das Resultat die LED blinkt jede Sekunde Leider betr gt die Periode in diesem Beispiel ebenfalls nicht exakt eine Sekunde da die Ausf hrung anderer Funktionen des Programms ebenfalls Zeit verbraucht F r ein exaktes Timing muss ein 16 Bit Timer mit Interrupts genutzt werden Hi Beispielprogramm f r eine Hardwareverz gerung mit dem HomeLab Das Programm lasst eine LED immer nach 1 Sekunde blinken Hu include lt homelab pin h gt include lt homelab delay h gt 159 6 Praktische Beispiele ye Festlegung des Pins der Test LED ip pin debug_led PIN B 7 Hauptprogramm int mai
231. utzt da der Thermistorwiderstand nur innerhalb kleiner Tem peraturbereiche linear ist F r NTC Thermistoren gibts es folgende vereinfachte Steinhart Hart Gleichung mit dem Parameter B 182 6 5 Sensoren mit To nominale Temperatur normalerweise 25 C Ro Widerstand bei nominaler Temperatur B Parameter B Der Parameter B ist ein Koeffizient welcher normalerweise im Datenblatt des Thermistors vorgegeben ist Aber er ist nur in bestimmten Temperaturbereichen ausreichend konstant z B in Bereichen zwischen 25 und 50 C oder zwischen 25 und 85 C Wenn der gemessene Temperaturbereich gr er ist sollte das Datenblatt des Thermistors zu Rate gezogen werden um die Gleichung zu erhalten Normalerweise wird ein Spannungsteiler genutzt um den Widerstand eines Thermistors zu messen Dabei wird ein Widerstand durch einen Thermistor ausgetauscht wird und die Inputspannung ist konstant Es wird die Outputspannung des Spannungsteilers gemessen welche sich in Abh ngigkeit der Widerstands nderung des Thermistors ver ndert Wenn Spannung anliegt flie t Strom durch den Thermistor wodurch sich dieser bedingt durch den Thermistorwiderstand aufheizt und damit den Widerstand ver ndert Der durch das Auf heizen entstehende Fehler kann berechnet werden jedoch ist es einfacher einen Thermistor zu nutzen welcher einen hohen Widerstand hat und sich nicht so viel aufheizt Bei begrenzten Ressourcen und geringerem Anspruch auf Genauigkeit
232. va 10 estus 1 day 75 Peeter 50 eter Raivo L ppishenduse demonstratsioon 1 day Dokumentatsiooni koostamine 3days Mikk Peeter Raivo Abbildung 7 11 Projektplan Fazit Die Kostenrechnung hat gezeigt dass die Produktionkosten des Roboters sehr hoch sind besonders wenn man nur mit einem Exemplar rechnet Die Kosten blieben jedoch im anf nglich gesetzten Rahmen Die Prouktions kosten k nnten durch Optimierung des Materials und der Komponeten sowie durch gleichzeitige Fertigung mehrerer Roboter wesentlich reduziert werden W hrend des Projekts ist deutlich geworden wie ein mecha tronisches System geplant gebaut und getestet wird Am Ende der Arbeit ist eines klar geworden Damit der Roboter richtig funktioniert sollte deutlich mehr Zeit zum Testen eingeplant werden insbesondere f r Softwaretests Unterschiedliche Module funktionieren nicht immer einwandfrei zusammen auch wenn dieses in einzelnen Experimenten klappt Dadurch wird deutlich dass die Integration von Modulen in ein System eine echte Herausforderung darstellt und hierf r mehr Zeit und Ressourcen eingeplant werden sollten Abschlie end hoffen wir dass das Projekt sehr interessant und lehrreich war und einen Einblick in das Design und die Konstruktion von integrierten Systemen geben konnte Genutzte Quellen und Materialien 1 Allgemeines Benutzerhandbuch des HomeLab http home roboticlab eu 2 Datenblatt des ATmega128 3 Dudziak R K
233. von Piep t nen und Pausen in verschiedenen Abst nden bertragen werden Digitale Daten bertragungsprotokolle arbeiten hnlich Dort werden die Informationen als Bit Werte gesendet und je nach Schnittstelle Angepasst an versschiedene Bed rfnisse wurden diverse Schnittstellen zur Daten bertragung entwickelt Da die Daten mengen jedoch stetig ansteigen werden immer wieder neue Methoden entwickelt Bei elektronischen Kompo nenten ist die Situation dahingehend etwas stabiler Die PC SPI und UART Schnittstellen werden schon sehr lange verwendet Traditionellere Schnittstellensysteme f r die bertragung innerhalb eines Systems sind RS 232 Rs 485 LIN and CAN aber viele Mikrocontroller werden schon mit USB Ethernet und kabellosen ZigBee Schnittstellen produziert Dieses Kapitel konzentriert sich auf die RS 232 Schnittstelle 222 6 7 Datenschnittstellen 6 7 1 RS 232 Notwendiges Wissen N Controller module USART 2 Serial Interface 2 Alphanumeric LCD Theorie Abbildung 6 36 Cable RS 232 Der linke Stecker ist male der rechte female Die RS 232 ist ein Standard unter den physischen Datenschnittstellen und wird zur bertragung von Bin rda ten genutzt Dieser Standard wird berwiegend f r serielle Anschl sse von Computern verwendet welche ge w hnlich als COM Anschl sse bezeichnet werden Inzwischen wurden die RS 232 gr tenteils durch USB Schnittstellen ersetzt Aufgrund ihrer Einfachheit werden sie
234. werden Dabei muss auch die Vergleichs Spannung des Konverters ber cksichtigt werden Folgende Formel wird zur Berechnung verwendet U Ure ADC 1024 Mit Hilfe der Formel f r Spannungsteiler siehe Kapitel ber Spannungsteiler kann der Widerstand des Foto widerstands R ermittelt werden Ry R2 U1 U2 R2 In der folgenden Berechnung von Spannung und Widerstand werden die gegebenen Werte eingesetzt und die Indizes entfernt 189 6 Praktische Beispiele U 5 ADC 1024 R 10 5 U 10 Die Beleuchtungsst rke kann dann mittels der folgenden vereinfachten Konversion genutzt werden E 109 08 18 5 R 0 9 1 1p og 185 R 10 9 101 10 0g18 5 10 9 logR 10 9 10 10108185 10 9 1pl0gR 10 9 10 18 510 9 R10 9 10 18 510 9 10 R 10 9 Durch die Berechnung der Konstante vor der Variable des Feldes R bleibt folgender Ausdruck E 255 84 R 10 Die dargestellten Formeln sind jedoch nur im Zusammenhang mit Fotowiderst nden des HomeLab Sensor Moduls n tzlich Wird ein Schaltkreis mit anderen Komponenten best ckt m ssen die Variablen ver ndert werden Nachfolgend ist der Quellcode eines Beispielprogramms dargestellt welches die Beleuchtungst rke mit Hilfe des ADC misst und berechnet und auf dem LCD darstellt Bevor das Programm kompiliert wird m ssen die Einstellungen f r die Gleitkomma Variablen im Projekt festgelegt werden Dieser Schritt wird in dem Kapitel ber die Instal
235. z hoch oder runter z hlen Die Taktfrequenz des Timers kann ber die Frequenz des Mikrocontrollers oder einen externen Taktgeber erzeugt werden Allgemein kann die Taktfrequenz mit einem Multiplikator dividiert werden um eine geringere Frequenz zu erreichen Hierzu wird ein Vorteiler verwendet Wichtig ist jedoch dass die festgelegte Taktfrequenz des Timers linear zu der 157 6 Praktische Beispiele Zeit ist Die Zeit kann durch Multiplikation der Periode der Taktfrequent des Timers mit dem Wert des Timers berechnet werden count overflow match Abbildung 6 10 Durch Ver nderung des AVR Timers hervorgerufene Ereignisse AVR Taktgeber k nnen so eingestellt werden dass sie bei berlauf des Timers oder bei Vergleichstreffern in formieren Ein berlauf tritt auf wenn der Timer seinen maximalen Wert erreicht hat und der Zyklus wieder bei 0 anf ngt Nach Erreichen eines vorgegebenen Wertes beginnt der Timer bei jedem Anstieg seines Wer tes diesen mit einem vom Benutzer vorgegebenen Wert zu vergleichen Daraufhin werden die Bits des AVR Statusindexes automatisch high gesetzt Um eine Verz gerung mit einem Timer zu generieren muss man nur den Timer setzen und darauf warten dass das Statusbit high wird Im Unterschied zur Softwareverz gerung ist die Arbeit des Timers nicht vom Compiler abh ngig wodurch er zuverl ssiger ist Gleichzeitig ist die Diversit t bzw Komplexit t der Ein stellungen des AVR Timers hoch Je nach Tak
236. zt Hierzu verf gt das Display ber ein Komma Punkt Segment dp Insgesamt besitzt eine Anzei ge dann 8 Segmente wird jedoch aufgrund der Anzahl von Ziffer Segmenten weiterhin 7 Segment Display genannt LED number indicators are easy to use they can be controlled directly from the pins of the microcontroller but there are also special drivers which able to control number indicators using fewer pins of the microcontroller There are different colors of LED number indicators which can be very bright and very large For displaying the entire Latin alphabet exist indicators with extra segments Die Benutzung von LED Zifferanzeigen ist recht einfach Sie k nnen direkt ber die Pins des Mikrocontrol lers kontrolliert werden Es gibt jedoch auch spezielle Treiber die daf r sorgen dass f r die Nutzung der Anzeige weniger Pins des Mikrocontrollers ben tigt werden Es gibt zwei verschiedene Farben von LED Zif feranzeigen die sehr klar und gro sein k nnen Zur Anzeige des gesamten Alphabets gibt es Anzeigen mit zus tzlichen Segmenten 166 6 4 Anzeigen und Displays bung Am digitalen I O Modul befindet sich eine 7 Segment LED Zifferanzeige Sie wird ber einen Treiber mit der seriellen Schnittstelle A6275 kontrolliert Die serielle Schnittstelle des Treibers ist dem SPI hnlich bei dem sowohl Taktsignal als auch Datensignale genutzt werden Anders als beim SPI wird chip select nicht genutzt und wird durch die latch Funktion er
237. zubringen hier Masse oder Input F r unseren Zweck ist es nicht ganz so einfach denn im Moment des Schaltens sind die Kontakte nicht verbunden Der Moment an sich ist sehr kurz ms aber in diesem Moment ist der Input Pin des Mikrocontrollers nicht verbunden und hat daher einen unend lichen Wert Auf Grund elektromagnetischer St rung welche berall existiert kann der Input Pin der nicht angeschlossen ist zu jeder Zeit zuf llig einen Wert von 0 oder 1 haben Die St ranf lligkeit macht die Nutzung von Schaltern kompliziert Die am h ufigsten verwendete Methode um dies zu verhindern ist den Input des Microcontrollers durch einen Widerstand an die Erde oder das In putpotential anzuschlie en Einen so benutzten Widerstand nennt man einen pull down oder pull up Wider stand Normalerweise liegt der Widerstand eines pull down oder pull up zwischen 1kO bis 1 MO Wenn der Schalter offen ist wird der Input mit der Spannung des Widerstands geladen wenn man den Schalter schlie t empf ngt der Input die Spannung des Schalters da der Leitungswiderstand des Schalters im Vergleich zum Widerstand beinahe 0 ist Allgemein kann er als volt box bezeichnet werden Abbildung 6 7 Schalter Anschluss Schema mit einem pull up Widerstand 144 6 2 Digitale Input Output Pins Ein einfacher zwei Kontakt Schalter kann als Sensor mit einen pull up oder pull down Widerstand genutzt werden Hierzu wird ein Kontakt des Schalters mit dem Input verbunden und d

Download Pdf Manuals

image

Related Search

Related Contents

リモコン接続ハーネスCCA  取扱説明書  販売名: 眼振計 NY-50  Document  Manual de instrucciones Sistema de seguridad MGB-L..B  InLine 55455B mouse pad  Instalação e Configuração do Sistema  DeLOCK 46208 flat panel wall mount  

Copyright © All rights reserved.
Failed to retrieve file