einführung in mikrokontroller benutzung mit dem arduino board · einführung in mikrokontroller...

52
Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Upload: dominh

Post on 11-Aug-2019

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Einführung in MikrokontrollerBenutzung mit dem Arduino Board

Ramon HoferICVR

Page 2: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 3: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 4: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 4

Warum Mikrokontroller?

Page 5: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 5

Eingabegeräte, Ausgabegeräte

Page 6: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 6

Verarbeitung durch Mikrokontroller

z.B. Autorennspiel

Eingaben

Ausgaben

Mikrokontroller

Mikrokontroller

Daten

Daten

Page 7: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 7

Verarbeitung durch Mikrokontroller

Eingaben

Ausgaben

Mikrokontroller

z.B. IPhone

Page 8: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 9: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 10: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 10

Der Mikrokontroller

Page 11: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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)

Page 12: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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)

Page 13: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 13

Verschiedene ARDUINO Boards

22 Є

50 Є

20 Є19 Є

18 Є

Page 14: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 15: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 15

ARDUINO IDE SOFTWARE

SKETCH:Programmierbereich

Wichtigste Bedienelemente

Page 16: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 17: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 17

Anschliessen von elektronischen Bauteilen

Page 18: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 18

Digitale Ausgänge (LED)

Page 19: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 19

LED

Light Emitting DiodeStrom fliesst nur in eine Richtung durch DiodeBenötigt einen Strombegrenzungswiderstand

Page 20: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 20

LED Taschenlampe

LED

Widerstand

Stromrichtung

Batterie

Page 21: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 21

VCC und GND

Page 22: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 22

ARDUINO BOARD liefert Spannung

Board Spannungen3.3V , 5V , GND

GND

Page 23: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 23

Steckbrett

Page 24: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 24

Anschliessen der LED an ARDUINO

Page 25: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 25

Wie programmiert man nun?

Sketch (Programm) erstellen

Kompilieren und Upload auf Board

Testen

Page 26: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 27: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 27

Digitale Ausgänge(Sound)

Page 28: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 29: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 29

Anschliessen eines Lautsprechers

Page 30: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 30

Digitale Eingänge

Page 31: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 31

Taster

Page 32: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 33: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 33

Pull Up Widerstand

Taster OFFEN:Eingang wird auf 5V gezogen

Taster GESCHLOSSEN:Eingang wird auf GND gezogen

Page 34: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 34

Pull up, Pull down

PULL UP

PULL DOWN

Page 35: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 35

Anschluss eines Pull up Widerstandes

5V

GND

Taster

Pull Up

Digital Input Pin 2

Page 36: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 37: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 37

Analoge Eingänge

Page 38: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 38

Potentiometer

GND 5V

Signal

Page 39: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 40: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 40

Spannungsteiler Drehwinkel

GND

U2

R*x

R*(1-x)( ) xRxRxRUU

⋅+−⋅⋅

⋅=12

xUU ⋅=2

U

Page 41: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 41

Analog Input anschliessen

Page 42: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 43: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 43

Anschluss von weiteren Sensoren

Spannungsteiler (Sensor und zweiter Widerstand)DrucksensorPhotodiodeDMSHallsensorKapazitätssensorAbstandssensor

Page 44: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 44

Serielle Schnittstelle

Page 45: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 45

Serielle Schnittstelle

Kommunikation zwischen PC und Mikrokontroller

Serielle Verbindung(USB)

Page 46: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 46

Mikrokontroller + USB

Mikrokontroller

USB to Serial Chip

Page 47: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 48: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 48

Datenübertragung auf dem ARDUINO

TX - Transmit to PCRX - Receive from PC

Page 49: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 50: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

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

Page 51: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 51

Übungen

Teams auf 10 Workstations verteilen Übungsblätter lösenBei Problemen Betreuer rufen

Zeit: 60 min

Page 52: Einführung in Mikrokontroller Benutzung mit dem Arduino Board · Einführung in Mikrokontroller Benutzung mit dem Arduino Board Ramon Hofer ICVR

Ramon Hofer © 04/2009 inspire AG 52

Fragen?Viel Vergnügen