Upload
dominh
View
226
Download
0
Embed Size (px)
Citation preview
Einführung in MikrokontrollerBenutzung mit dem Arduino Board
Ramon HoferICVR
Ramon Hofer © 04/2009 inspire AG 2
Ablauf
Warum MikrokontrollerDas Arduino BoardAnschliessen von Bauteilen
Digitale Ein- und AusgabenAnaloge Eingaben
Serielle Schnittstelle
Arduino Übung
30 min
60 min
Ramon Hofer © 04/2009 inspire AG 3
Ziele
Warum wir Mikrokontroller brauchen verstehen
Programme auf Mikrokontroller laden können
Anschliessen und Auslesen von LEDs, Buttons und Potentiometern
Serielle Übertragung anwenden können
Sinn des Pull up Widerstands verstehen
Spannungsteiler als Hilfsmittel erkennen
Ramon Hofer © 04/2009 inspire AG 4
Warum Mikrokontroller?
Ramon Hofer © 04/2009 inspire AG 5
Eingabegeräte, Ausgabegeräte
Ramon Hofer © 04/2009 inspire AG 6
Verarbeitung durch Mikrokontroller
z.B. Autorennspiel
Eingaben
Ausgaben
Mikrokontroller
Mikrokontroller
Daten
Daten
Ramon Hofer © 04/2009 inspire AG 7
Verarbeitung durch Mikrokontroller
Eingaben
Ausgaben
Mikrokontroller
z.B. IPhone
Ramon Hofer © 04/2009 inspire AG 8
Datenvorverarbeitung
Sensor
Mikrokontroller
Filte
rung
Dat
enst
rukt
urie
rung
Dat
enbe
reits
tellu
ng
PC
Sensor
Ausgaben / Aktor
Logi
k
Ramon Hofer © 04/2009 inspire AG 9
Unterschied Mikrokontroller - Prozessor
ProzessorDedizierte leistungsstarke Hardware für BerechnungenViel Peripherie nötig für den BetriebTeuer, gross, aufwändig
MikrokontrollerAll in one chipSpeicher, Timer, Interruptlogik, Analog Digital Wandler, Serielle Schnittstellen…Billig, klein, spezialisiert
Ramon Hofer © 04/2009 inspire AG 10
Der Mikrokontroller
Ramon Hofer © 04/2009 inspire AG 11
ATMEGA 328 Mikrokontroller
Kleiner Computer (Prozessor mit Peripherie)Getaktet bis 20 Mhz (Apple II: 1Mhz)Interner Speicher für Programme (4KB) und Daten (2KB)23 Programmierbare INPUT / OUTPUT PINs
Serielle SchnittstelleTimerAnalog Digital Wandler…
Ein- und Ausgang (PIN)
Ramon Hofer © 04/2009 inspire AG 12
ARDUINO BOARD
„Verpackter“ ATMEGA 328PINs herausgeführtAlle Komponenten für schnelle Inbetriebnahme vorhandenUSB Anschluss
Einfache Programmierung über USB ohne zusätzliches Programmiergerät (Bootloader)
Ramon Hofer © 04/2009 inspire AG 13
Verschiedene ARDUINO Boards
22 Є
50 Є
20 Є19 Є
18 Є
Ramon Hofer © 04/2009 inspire AG 14
ARDUINO Duemilanove
Analoge Eingänge
Digitale Ein- / Ausgänge
Board Spannungen
USBAnschluss
ATMEGA 168
Power LED
TEST LED
RESET ButtonAnzeige der seriellen Übertragung
Ramon Hofer © 04/2009 inspire AG 15
ARDUINO IDE SOFTWARE
SKETCH:Programmierbereich
Wichtigste Bedienelemente
Ramon Hofer © 04/2009 inspire AG 16
Wichtigste Elemente
KompilierenSyntaxfehler Maschinencode generieren
NeuNeuer Sketch
StoppStoppt die Serielle Verbindung
ÖffnenExamples oder eigene Sketches
Speichern
Board UploadArduino Board Programmieren
Seriellen Monitor öffnenDebugging / Kommunikation
Ramon Hofer © 04/2009 inspire AG 17
Anschliessen von elektronischen Bauteilen
Ramon Hofer © 04/2009 inspire AG 18
Digitale Ausgänge (LED)
Ramon Hofer © 04/2009 inspire AG 19
LED
Light Emitting DiodeStrom fliesst nur in eine Richtung durch DiodeBenötigt einen Strombegrenzungswiderstand
Ramon Hofer © 04/2009 inspire AG 20
LED Taschenlampe
LED
Widerstand
Stromrichtung
Batterie
Ramon Hofer © 04/2009 inspire AG 21
VCC und GND
Ramon Hofer © 04/2009 inspire AG 22
ARDUINO BOARD liefert Spannung
Board Spannungen3.3V , 5V , GND
GND
Ramon Hofer © 04/2009 inspire AG 23
Steckbrett
Ramon Hofer © 04/2009 inspire AG 24
Anschliessen der LED an ARDUINO
Ramon Hofer © 04/2009 inspire AG 25
Wie programmiert man nun?
Sketch (Programm) erstellen
Kompilieren und Upload auf Board
Testen
Ramon Hofer © 04/2009 inspire AG 26
Sketch Aufbau
int ledPin = 13; // Globale Variable für PIN 13
void setup() // Start Routine, läuft am Anfang einmal{
pinMode(ledPin, OUTPUT); // Definiert ledPin als OUTPUT}
void loop() // Die Hauptschleife läuft endlos{
digitalWrite(ledPin, HIGH); // Setzt ledPin auf HIGH (5V)delay(1000); // Wartet eine SekundedigitalWrite(ledPin, LOW); // Setzt ledPin auf LOW (0V)delay(1000); // Wartet eine Sekunde
}
Setup
Globale Variablen
Main Loop
Ramon Hofer © 04/2009 inspire AG 27
Digitale Ausgänge(Sound)
Ramon Hofer © 04/2009 inspire AG 28
Soundausgabe
Schall ist Schwingung des DruckesSchnelles Ein- und Auschaltendigitaler Ausgänge
Del
ay (
a )
Del
ay (
b )
)()(1
bdelayadelayf
+=
Zeit
Spannung
5V
0V
Ramon Hofer © 04/2009 inspire AG 29
Anschliessen eines Lautsprechers
Ramon Hofer © 04/2009 inspire AG 30
Digitale Eingänge
Ramon Hofer © 04/2009 inspire AG 31
Taster
Ramon Hofer © 04/2009 inspire AG 32
Anschluss an ARDUINO
Problem „Floating“Signal am PIN3 schwankt zw. 0 und 5V (elektrisches Rauschen)Signal nicht definiert
Ramon Hofer © 04/2009 inspire AG 33
Pull Up Widerstand
Taster OFFEN:Eingang wird auf 5V gezogen
Taster GESCHLOSSEN:Eingang wird auf GND gezogen
Ramon Hofer © 04/2009 inspire AG 34
Pull up, Pull down
PULL UP
PULL DOWN
Ramon Hofer © 04/2009 inspire AG 35
Anschluss eines Pull up Widerstandes
5V
GND
Taster
Pull Up
Digital Input Pin 2
Ramon Hofer © 04/2009 inspire AG 36
Button Example
int ledPin = 13; // choose the pin for the LEDint inputPin = 2; // choose the input pin (for a pushbutton)int val = 0; // variable for reading the pin status
void setup() {pinMode(ledPin, OUTPUT); // declare LED as outputpinMode(inputPin, INPUT); // declare pushbutton as input
}
void loop(){val = digitalRead(inputPin); // read input valueif (val == HIGH) { // check if the input is HIGHdigitalWrite(ledPin, LOW); // turn LED OFF
} else {digitalWrite(ledPin, HIGH); // turn LED ON
}}
Setup
Globale Variablen
Main Loop
Ramon Hofer © 04/2009 inspire AG 37
Analoge Eingänge
Ramon Hofer © 04/2009 inspire AG 38
Potentiometer
GND 5V
Signal
Ramon Hofer © 04/2009 inspire AG 39
Spannungsteiler
21
22 RR
RU+
=
U = 1 VR1 = 200R2 = 800
U2 = 800 / (200 + 800)= 0.8 V
U = 1 VR1 = 850R2 = 150
U2 = 150 / (850 + 150)= 0.15 V
Ramon Hofer © 04/2009 inspire AG 40
Spannungsteiler Drehwinkel
GND
U2
R*x
R*(1-x)( ) xRxRxRUU
⋅+−⋅⋅
⋅=12
xUU ⋅=2
U
Ramon Hofer © 04/2009 inspire AG 41
Analog Input anschliessen
Ramon Hofer © 04/2009 inspire AG 42
Analog Input Example
int potPin = 2; // select the input pin for the potentiometerint ledPin = 13; // select the pin for the LEDint val = 0; // variable to store the value coming from the sensor
void setup() {pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
}
void loop() {val = analogRead(potPin); // read the value from the sensordigitalWrite(ledPin, HIGH); // turn the ledPin ondelay(val); // stop the program for some timedigitalWrite(ledPin, LOW); // turn the ledPin offdelay(val); // stop the program for some time
}
Setup
Globale Variablen
Main Loop
Ramon Hofer © 04/2009 inspire AG 43
Anschluss von weiteren Sensoren
Spannungsteiler (Sensor und zweiter Widerstand)DrucksensorPhotodiodeDMSHallsensorKapazitätssensorAbstandssensor
Ramon Hofer © 04/2009 inspire AG 44
Serielle Schnittstelle
Ramon Hofer © 04/2009 inspire AG 45
Serielle Schnittstelle
Kommunikation zwischen PC und Mikrokontroller
Serielle Verbindung(USB)
Ramon Hofer © 04/2009 inspire AG 46
Mikrokontroller + USB
Mikrokontroller
USB to Serial Chip
Ramon Hofer © 04/2009 inspire AG 47
Kein „echtes“ USB
Lapt
op
USB to SerialTreiber
Ard
uino
Boa
rd
RX
Arduino IDE
USB to SerialFTDI Chip
Mikrokontroller
TXRXTX
USB
Ramon Hofer © 04/2009 inspire AG 48
Datenübertragung auf dem ARDUINO
TX - Transmit to PCRX - Receive from PC
Ramon Hofer © 04/2009 inspire AG 49
TalkSerial
int i;
void setup() { // run once, when the sketch startsSerial.begin(9600); // set up Serial library at 9600 bpsi=0; // set i=0
}
void loop() } // run over and over againSerial.print(„I‘m counting… „); // prints without a line breakSerial.println(i); // prints the number with a line breaki++; // increase i by 1delay(1000); // wait 1 sec
}
Setup
Globale Variablen
Main Loop
Ramon Hofer © 04/2009 inspire AG 50
Möglichkeiten
Übermittlung von Sensordaten zum PC
Fehlersuche im Code durch Übermitteln von Variablen oder Checkpoints
Serieller UART (Universal AsynchronousReceiver Transmitter) Standardschnittstelle z.B. Matlab
Ramon Hofer © 04/2009 inspire AG 51
Übungen
Teams auf 10 Workstations verteilen Übungsblätter lösenBei Problemen Betreuer rufen
Zeit: 60 min
Ramon Hofer © 04/2009 inspire AG 52
Fragen?Viel Vergnügen