HTL_RoboterDOKU.odt V1.0j10
HTBLA Leonding Mikrocontrollertechnik Klasse, Name : Übung :
Datum : Seite : 1 von 7
Arbeiten mit dem HTL Leonding Roboter
1. Roboter Peripherie Eingänge
Ausgänge
DIGITAL
Taster Kante l/r
LCD Anzeige
Rad l/r Linienfolger l/r
8x LED
Laderaum Klappe
JTAG
DATEN
ANALOG
ATMEGA 128 Licht l/r
2x Motor
Abstand l/r IR
4x Sensoren ENABLE
Maussensor
2. Roboter-Sensoren Die meisten Sensoren des Roboters müssen erst eingeschaltet werden, bevor sie verwendet werden können. Dies dient zum Energiesparen, da abgeschaltete Sensoren die Batterie nicht belasten. Leitungen zum Einschalten der Sensoren sind im Schaltplan meist mit „ENA_“ (für enable) bezeichnet. Diese Enable-Leitungen sind meistens mit den Gate von FET-Transistoren verbunden. Wird das Gate auf GND gelegt, schaltet der Transistor die +5V zu den Sensoren durch.
3. LCD Display Das LCD Display ist mit PORT A verbunden. Die Ansteuerung des Displays erfolgt durch die Programmvorlagen lcd.c und lcd.h wie im Dokument „Atmel_gcc.pdf“ beschrieben. Die Anschlüsse sind am Schaltplan des Roboters zu finden.
4. Analoge Sensoren Die beiden LDRs können direkt abgefragt werden, die beiden Abstandsensoren müssen zuvor aktiviert werden. Das Auslesen der Analog-Werte erfolgt durch die Programmvorlagen adc.c und adc.h wie im Dokument „Atmel_gcc.pdf“ beschrieben. http://creativecommons.org/licenses/by-sa/3.0/deed.de Alle Inhalte dieses Dokuments sind unter einer Creative Commons 2.0 License veröffentlicht.: • • • •
Sie dürfen den Inhalt vervielfältigen, verbreiten und öffentlich aufführen. Sie dürfen Bearbeitungen anfertigen. Sie müssen den Namen des Autors/Rechtsinhabers nennen. Wenn Sie diesen Inhalt bearbeiten oder in anderer Weise umgestalten, verändern oder als Grundlage für einen anderen Inhalt verwenden, dann dürfen Sie den neu entstandenen Inhalt nur unter Verwendung identischer Lizenzbedingungen weitergeben.
HTL_RoboterDOKU.odt V1.0j10
HTBLA Leonding Mikrocontrollertechnik Klasse, Name : Übung :
Datum : Seite : 2 von 7
Arbeiten mit dem HTL Leonding Roboter
5. Startübung - Sensorentest Überprüfen Sie die Sensoren und aktivieren Sie ein LED pro Sensor. Vor dem Abfragen der Sensoren müssen diese aktiviert werden (enable)! Sensor Kante links
Einschalten
Abfragen
LED Port
funktioniert
D4
F6
C1
O
Kante rechts
O
Linie links
O
Linie rechts
O
Radsensor links
O
Radsensor rechts
O
Laderaum Lichtschranke
O
Klappe
O
Taster BOOT
O
z.B. wenn (Sensor „Kante Links“) dann LED C1 einschalten ansonsten LED C1 ausschalten Beispiel: Sensor Kante LINKS
//Sensor Kante LINKS einschalten SETBIT1(DDRD, 4); //ENA auf OUTPUT SETBIT0(PORTD, 4); //auf LOW schalten SETBIT1(DDRC,1); //LED auf OUTPUT SETBIT0(DDRF, 6); //SENSOR auf INPUT while(1) { //Kante LINKS abfragen if ( CHECKBIT1(PINF, 6) ) { SETBIT1(PORTC, 1); } else { SETBIT0(PORTC, 1); } }
Sensor (F6)
uC
Sensor ENABLE (D4)
LED (C1)
HTBLA Leonding Mikrocontrollertechnik Klasse, Name :
HTL_RoboterDOKU.odt V1.0j10
Datum :
Übung :
Seite : 3 von 7
Arbeiten mit dem HTL Leonding Roboter
6. Ansteuern der Motoren Der Roboter hat 2 Getriebemotoren, die mit der Versorgungsspannung (Batterie) betrieben werden. Der Motor ändert seine Drehrichtung, wenn die Polarität der Motorspannung geändert wird. Diese Aufgabe übernimmt der L239. Die Drehzahl das Motors kann durch periodisches Ein/AusSchalten der Motor-Versorgungsspannung eingestellt werden. Batteriespannung Motor R ein / aus
(B6)
Motor R Richtung
(G3)
Transistor H-Brücke
Motor L ein / aus
(B5)
L293
Motor L Richtung
(G4)
ATMEGA
Motor R
Motor L
Motor Links einschalten
Motor Rechts einschalten
Anschlüsse B6 und G3 auf OUTPUT
Anschlüsse B5 und G4 auf OUTPUT
Motor einschalten durch B6 auf HIGH
Motor einschalten durch B5 auf HIGH
Drehrichtung durch G3 auf HIGH/LOW stellen
Drehrichtung durch G4 auf HIGH/LOW stellen
Drehzahländerung mittels PWM: Bei der Pulsweitenmodulation (PWM) wird eine technische Größe (z. B. elektrischer Spannung) zwischen zwei Werten gewechselt. Dabei wird bei konstanter Frequenz das Tastverhältnis des Signales verändert. Der interne 16 BIT Timer/Counter 1 kann dieses PWM Signal erzeugen. Test der Motoren: //Motor auf Ausgang
SETBIT1 (DDRB, 5); SETBIT1 (DDRB, 6);
//Motor Richtung auf Ausgang SETBIT1(DDRG, 4); SETBIT1(DDRG, 3); //Richtung VORAUS! SETBIT1(PORTG, 4); SETBIT0(PORTG, 3);
//Motoren EIN
SETBIT1 (PORTB, 5); SETBIT1 (PORTB, 6);
Steuerung der Motoren über internen PWM:
Die Drehrichtung kann durch Setzen der Anschlüsse G3 und G4 geändert werden. Soll sich der Roboter auf der Stelle drehen, müssen die Motoren in entgegengesetzten Drehrichtungen laufen!
HTBLA Leonding Mikrocontrollertechnik Klasse, Name : Übung :
HTL_RoboterDOKU.odt V1.0j10
Datum : Arbeiten mit dem HTL Leonding Roboter
Seite : 4 von 7
//Motor PWM auf Ausgang SETBIT1 (DDRB, 5); SETBIT1 (DDRB, 6);
//Motor Richtung auf Ausgang SETBIT1(DDRG, 4); SETBIT1(DDRG, 3); //Richtung VORAUS! SETBIT1(PORTG, 4); SETBIT0(PORTG, 3); //Einstellungen PWM SETBIT1(TCCR1B, CS10); //prescaler SETBIT1(TCCR1B, CS11); //prescaler SETBIT0(TCCR1B, CS12); //prescaler SETBIT1(TCCR1A, SETBIT0(TCCR1A, SETBIT0(TCCR1B, SETBIT0(TCCR1B,
WGM10); WGM11); WGM12); WGM13);
SETBIT0(TCCR1A, SETBIT1(TCCR1A, SETBIT0(TCCR1A, SETBIT1(TCCR1A,
COM1B0); COM1B1); COM1A0); COM1A1);
// // // //
8 BIT Phase Correct PWM
//Compare //mode //none //inverting
//PWM Vergleichswert OCR1AL = 0x88; //Speed Motor 1 OCR1BL = 0x88; //Speed Motor 2
Das Ändern der PWM-Vergleichswerte zwischen 0x00 und 0xff bestimmt die Geschwindigkeit der Motoren. Sollten sich die beiden Getriebemotoren unerschiedlich schnell drehen kann das durch unterschiedliche PWM-Vergleichswerte ausgeglichen werden.
HTBLA Leonding Mikrocontrollertechnik Klasse, Name : Übung :
HTL_RoboterDOKU.odt V1.0j10
Datum : Arbeiten mit dem HTL Leonding Roboter
Seite : 5 von 7
7. Ansteuern des Roboters – Aufgaben 7.a) Folge dem Licht Aufgabenstellung: Der Roboter soll eine Lichtquelle suchen und auf sie zeigen. Anschlussplan: MOTOREN
Eingänge: LDR R Ausgänge: LDR L
uC LED 2x
Lösungsvorschlag: • • • • • • •
Programmvorlage verwenden Eingänge und Ausgänge festlegen (DDR) LCD Display einbinden und testen ADC einbinden ADC-Werte der beiden LDRs einlesen und am LCD ausgeben Motoransteuerung nach Vorlage einbinden Werte der beiden LDRs vergleichen. Je nachdem welcher LDR näher zum Licht steht, den Roboter drehen!
Erweiterungen (1): • •
Wenn die beiden LDRs ähnliche Werte melden, den Motor stoppen oder Wenn die beiden LDRs ähnliche Werte melden, den Motor starten und zum Licht fahren!
Erweiterungen (2): • •
Wenn die beiden LDRs ähnliche Werte melden, den Motor starten und zum Licht fahren! Zusätzlich die Abstandsensoren aktivieren und vor der Lichtquelle stoppen.
HTL_RoboterDOKU.odt V1.0j10
HTBLA Leonding Mikrocontrollertechnik Klasse, Name : Übung :
Datum : Seite : 6 von 7
Arbeiten mit dem HTL Leonding Roboter
7.b) Nicht Runterfallen! Aufgabenstellung: Der Roboter soll bis zu einer Kante fahren. Anschlussplan: Eingänge:
Kante R
Motoren
Ausgänge: Kante L
uC
Sensor enable 2X LED (ev. LCD)
Lösungsvorschlag: • • • • • •
Programmvorlage verwenden Eingänge und Ausgänge festlegen (DDR) Motoransteuerung nach Vorlage ein binden Sensoren aktivieren Die beiden LEDs sollen den Zustand der Kantensensoren anzeigen. Solange keine Sensor meldet, die beiden Motoren laufen lassen
Erweiterungen (1): • • •
Status über LCD Display anzeigen. Wenn ein Sensor meldet, die beiden Motoren rückwärts laufen lassen oder Wenn ein Sensor meldet, die beiden Motoren kurz rückwärts laufen lassen und danach die Motoren stoppen
Erweiterungen (2): •
Wenn ein Sensor meldet, die beiden Motoren kurz rückwärts laufen lassen und danach den Roboter ein wenig drehen und danach die beiden Motoren nach vorne laufen lassen
HTL_RoboterDOKU.odt V1.0j10
HTBLA Leonding Mikrocontrollertechnik Klasse, Name : Übung :
Datum : Seite : 7 von 7
Arbeiten mit dem HTL Leonding Roboter
7.c) Achtung Hindernisse! Aufgabenstellung: Der Roboter soll vor einem Hindernis stoppen. Anschlussplan: Eingänge:
Abstand R
Motoren
Ausgänge: Abstand L
uC
Sensor enable LCD 2X LED
Lösungsvorschlag: • • • • • • • •
Programmvorlage verwenden Eingänge und Ausgänge festlegen (DDR) LCD Display einbinden und testen ADC einbinden ADC-Werte der beiden Abstandsensoren einlesen und am LCD ausgeben Motoransteuerung nach Vorlage einbinden Die beiden LEDs sollen den Zustand (Schwellenwert) der Kantensensoren anzeigen. Solange keine Sensor ein Hindernis meldet, die beiden Motoren laufen lassen
Erweiterungen (1): • •
Wenn ein Sensor meldet, die beiden Motoren rückwärts laufen lassen oder Wenn ein Sensor meldet, die beiden Motoren kurz rückwärts laufen lassen und danach die Motoren stoppen
Erweiterungen (2): •
Wenn ein Sensor meldet, die beiden Motoren kurz rückwärts laufen lassen und danach den Roboter ein wenig drehen und danach die beiden Motoren nach vorne laufen lassen