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

Post on 11-Aug-2019

226 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related