Naam:
Project robots.
1
1. Inleiding
2. Zelf een robotje bouwen
3. Microchips sturen de robot ! Stuur jij de microchip?
4. Logische stuurtechniek: Een baan programmeren met de Siemens LOGO
5. Bijlage: tekenbundel
Project robots.
2
1. Inleiding Voorwoord In het volgende project gaan we een ‘Robot buggy’ maken. Hierin gaan we zoveel mogelijk technische vakken proberen te betrekken om zo een deel nieuwe leerstof te verwerken. Naast de lessen realisaties, tekenen en schakeltechnieken zullen dus ook de lessen theoretische mechanica, elektriciteit en wie weet welke vakken nog aan bod komen… Je zal aan deze bundel dus met verschillende leerkrachten werken. We maken een stemgestuurde buggy die een microfoon gebruikt als detector. De buggy verandert van richting wanneer de sensor lawaai detecteert of wanneer de buggy een voorwerp raakt. De buggy werkt op 1 9V DC batterij ( niet meegeleverd) voor de elektrische onderdelen en 2 AAbatterijen van 1.5V voor de mechanische onderdelen (niet meegeleverd).
Robotica in de industrie Robotica is een wetenschap die vooral gericht is op systeemintegratie. Een goed ontworpen robot zal zijn waarnemingen (die verkregen zijn met behulp van sensoren) op een goede manier kunnen vertalen naar handelingen die zijn actuatoren zullen uitvoeren. Dit moet dan zó gebeuren dat de robot de vooraf gestelde taken kan vervullen. De verschillende stappen die met deze operaties gepaard gaan, hebben een waaier van onderzoeksdomeinen voortgebracht die elk één van de problemen behandelt die overwonnen moeten worden bij de constructie van een robot. (sensing, controlling, robo kinematica…) Robots kennen ook een zeer breed raakvlak qua inzetbaarheid:
Industrie In de industrie worden veel robots gebruikt om goedkoper en gemakkelijker te produceren. In de auto-industrie (de sector waar voor het eerst een robot gebruikt werd: Unimate) bijvoorbeeld worden ze gebruikt aan volledig geautomatiseerde productielijnen. Ook worden ze gebruikt om taken uit te voeren die voor mensen te saai zouden zijn, zoals het inpakken In de nucleaire industrie worden robots of manipulatoren gebruikt in ruimtes waar voor mensen een te hoge straling heerst om gezond te kunnen blijven.
Ruimtevaart Aangezien het veel gemakkelijker en veiliger is om in plaats van mensen robots naar de ruimte te sturen, worden die daar veel gebruikt. De sondes die naar planeten worden gestuurd (vb. de marsrover Spirit) zijn geavanceerde robots die zelfstandig allerlei waarnemingen kunnen uitvoeren en van daaruit die terug naar de aarde sturen.
Project robots.
3
Geneeskunde In de geneeskunde worden robots gebruikt omdat deze veel nauwkeuriger en op kleinere schaal operaties kunnen uitvoeren. De robots kunnen dezelfde beweging als de chirurg uitvoeren, maar deze vijf keer kleiner. Doordat de ingreep op kleinere schaal gebeurt, is de wonde veel kleiner en gaat de revalidatie van de patiënt dus ook veel sneller. Ze worden wel nog volledig door de chirurgen bestuurd, dus het zijn geen computers die de robots sturen.
Leger Legers gebruiken ook steeds meer robottechnologieën in hun militaire operaties omdat zo hun soldaten geen gevaar meer lopen. Vooral de Verenigde Staten doen daar veel onderzoek naar. Zij willen dat tegen 2020 30% van hun grondtroepen door robots wordt vervangen.
Huishouden Langzaamaan komen er steeds meer gespecialiseerde robots om geestdodende taken in het huishouden over te nemen zoals stofzuigen en grasmaaien. In wezen is de wasautomaat zonder dat het gerealiseerd wordt een reeds ingeburgerde gespecialiseerde robot.
Revalidatie In bovenstaande toepassingen wordt de robot gebruikt om menselijke handelingen in mensvijandige omgevingen uit te voeren (in de ruimte, de diepzee of op het slagveld). Of om geestdodende of zeer nauwkeurige handelingen uit te voeren (in de industrie, huishouden of in de geneeskunde). In de revalidatietoepassingen daarentegen dient de robot om gewone alledaagse handelingen uit te voeren. De robot compenseert de (motorische) beperking van de gebruiker.
Werking van de robot buggy die we bouwen Als je de buggy op grond plaatst en je zet de schakelaar aan, dan zal de buggy van beweging veranderen telkens je in je handen klapt of wanneer het tegen een obstakel botst. De buggy voert achtereenvolgens de volgende bewegingen uit: STOP ► VOORUIT LINKS ► STOP ► VOORUIT RECHTS ► STOP ► VOORWAARTS IN RECHTE LIJN Pas de gevoeligheid van de microfoon aan met een schroevendraaier ( potentiometer ). Draai naar rechts om de gevoeligheid te verhogen en omgekeerd
Project robots.
4
3. Microchips sturen de robot! Stuur jij de microchip?
3.1
Microchip als procesverwerker
3.2
De Formula Flowcode Robot
3.3
De taal van de µC… Crack the codes!
3.4
LEDs en codes
3.5
Jumpy
3.6
Variabele
3.7
Looping the loop
3.8
Running the light- the night rider
3.9
Ringtone mania
3.10 Input 3.11 If… Then… else 3.12 Motor speed 3.13 Electronic Switch 3.14 H – Bridge 3.15 PWM speed control 3.16 Follow the line 3.17 Reaction sound 3.18 Externe interupt 3.19 VU meter 3.20 Follow the light 3.21 IR distance sensors 3.22 LCD 3.23 Timer interrupt Project robots.
5
3.24 Project 7 segment 3.1 Microchip als procesverwerker Zoals reeds gezien in schakeltechnieken kan de opbouw van robotica, productieen verwerkingsmachines worden opgesplitst in twee grote delen: -De mechanische constructie: Deze constructie bestaat steeds uit een vast gedeelte (chassis) waarrond een beweegbaar gedeelte is opgebouwd. Het beweegbaar gedeelte is onder impuls van het vermogen gedeelte, verantwoordelijk voor het vervaardigen en of afwerken van de producten of uitvoeren van geautomatiseerde taken. -De elektrische constructie: Verzorgt op zijn beurt het vermogen gedeelte, m.a.w. de bewegende mechanische delen worden aangedreven door een elektrische motor, pneumatische of hydraulische cilinders. Die vermogen omvormers worden op hun beurt gestuurd vanuit een centrale sturing (verwerkingseenheid). Deze sturing is op haar beurt afhankelijk van de signaalgevers, dit kunnen bevelgevend of signaalopnemers zijn. Tezamen bepalen ze de logische volgorde van de bewerkingen. Onderstaande figuur verduidelijkt de voorgaande tekst. INVOER
VERWERKING
A
Project robots.
6
B
UITVOER
C
De mannier waarop de verwerking gebeurd kan dus verschillen:
A
Enerzijds via traditioneel bedrade (vaak complexe) elektrische schakelingen met kontaktoren, relais, tijdklokken en andere schakelkomponenten
B
Anderzijds via vrij programmeerbare stuurtechniek zoals ( Micro ) PLC’s als de Siemens LOGO. In de industrie “embedded systems” genoemd.
Als we echter nog één laatste stapje verder gaan, gaan we machines, robots, toestellen, telefoons… Ontwerpen waarbij enkel de basis benodigde componenten aanwezig zijn om de (elektrische) technische probleemstelling op te lossen. Zo gaan we niet alleen de totale productiekost verminderen, maar ook de beschikbare ruimte en omvang. Daarom gaan we nu enkel nog een microchip en de benodigde randcomponenten gebruiken om tot een hoogtechnologische oplossing te komen. Vaak ging dit in het verleden ten koste van programmeer gemak en “doe- het zelf gehalte” Omdat slechts een select groepje techneuten de taal verstonden om µchips te programmeren. Maar ook dat is nu anders, met flowcode ( programmeersoftware) wordt het veel eenvoudiger om te programmeren. D.m.v. flowcharts en een duidelijke grafische omgeving, die automatisch een verstaanbare taal voor de µchip genereert kan haast iedereen nu aan de slag… Daarom nu de laatste procesverwerkingsmethode:
De Microchip! De Combinatie van het aansturen van een mechanisch deel met microprocessoren en bijhorende elektronica noemen we ook wel Mechatronica. C
Gebruik van 8-bit microcontrollers
Project robots.
7
Vergelijking PC - µC De µchip is eigenlijk net als een PC. Met ingangen, uitgangen, RAM geheugen, ROM geheugen, EEPROM… Alleen veel kleiner, en ook kleiner qua verwerkingscapaciteit. +5V 1
40 RB7/PGD
RA0/AN0
2
39 RB6/PGC
RA1/AN1
3
38 RB5
RA2/AN2/Vref-/CVref
4
37 RB4
RA3/AN3/Vref+
5
36 RB3/PGM
RA4/TOCKI/C1OUT
6
35 RB2
RA5/AN4/SS/C2OUT
7
34 RB1
RE0/RD/AN5
8
RE1/WR/AN6
9
+5V
16F877A
/MCLR/Vpp
RE2/CS/AN7 10 VDD 11 VSS 12 OSC1/CLKI 13 OSC2/CLK0 14
23 RC4/SDI/SDA 22 RD3/PSP3
RD1/PSP1 20
21 RD2/PSP2
EEPROM-TYPE DATA MEMORY DATA CAN BE STORED HERE PERMANENTLY 256 lines of 8 BIT
RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3 RA4/T0CKI RA5/AN4 RB0/INT RB1 RB2 RB3 RB4 RB5 INT RB6 RB7 RC0/T1CKI RC1/CCP2 RC2/CCP1 RC3 RC4 RC5 RC6 RC7 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7
14 BIT WIDE INSTRUCTION BUS
ALU
System clock
Clock from external oscillator OSC1 OSC2
/4
8-BIT WIDE BUS
START TMR0 MACRO NOW!
8-MSB BITS = BYTE
A/D 10-BIT REGISTER
A/D
Naargelang het geheugen al dan niet vluchtig is en de (her)programmeerbaarheid ervan kunnen we volgende geheugens onderscheiden:
Project robots.
8
PORTE
TMR0 OVERFLOW
10- BITS = 10 LSB of INTEGER
AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7
ON
RB0/INT
Geheugens: START TMR1 MACRO NOW!
OR
INT
TMR1 OVERFLOW
TMR0 8-BIT REGISTER
LEVEL CHANGE
RB4 RB5 RB6 RB7
ON
+1
START RB0 MACRO NOW!
/1 /2 /4 /8 /16 /32 /64 /128 /256
/1 /2 /4 /8 +1 TMR1 8-BIT REGISTER
RA4/ T0CKI
START PORT MACRO NOW!
OR
RC0/ T1CKI
27 RD4/PSP4
RD0/PSP0 19
PORTD
368 lines of 8 BIT
28 RD5/PSP5
24 RC5/SDO
PORTC
8000 lines of 14 BIT WIDE
29 RD6/PSP6
25 RC6/TX/CK
PORTB
THE PROGRAM YOU WRITE COMES IN HERE
ALL THE VARIABLES WILL BE STORED HERE
30 RD7/PSP7
RC1/T1OSI/CCP2 16
PORTA
TELLS THE ALU WHAT TO DO
31 VSS
26 RC7/RX/DT
RC3/SCK/SCL 18
RAM-TYPE DATA MEMORY
+5V
32 VDD
RC0/T1OSO/T1CKI 15
RC2/CCP1 17
FLASH-TYPE PROGRAM MEMORY
33 RB0/INT
RE0/AN5 RE1/AN6 RE2/AN7
RAM (Random Access Memory): geheugen dat snel gelezen en gescheven kan worden. Meestal wordt dit gebruikt voor data. Indien de spanning wegvalt wordt het geheugen gewist. ROM (Read Only Memory): geheugen dat voorgeprogrammeerd is en enkel kan gelezen worden. PROM (Programmable ROM): ROM geheugen dat één keer kan geschreven worden.
3.2 De formulla flowcode robot Om jullie te leren programmeren, kozen we als harware een kleine robot de formulla flowcode. Deze is voorzien van een microproccesor van het merk PIC. Blok schema van de Robot: Volgend blokschema bevat enkel de standaard componenten die we zullen gebruiken van de FFrobot. Alle I/O pinnen zijn duidelijk vernoemd. Dit is een heel handig schema als je aan’t programmeren bent. Tijdens de volgende lessen zullen we steeds terug verwijzen naar dit schema.
Project robots.
9
PIC18F4455 Adress 0x 000
RAM-TYPE DATA MEMORY 368 lines of 8 BIT 0 1 0 1 0 1 0 1
0x 001 2 LINE SENSORS
BIT D6 BIT D7
0x 16E
LOUDSPEAKER
MIC
0x 16F
ADC 8 LIGHT SENS.
BIT C0
14 BIT WIDE INSTRUCTION BUS
ALU
ADC 9 8 BIT WIDE DATA-BUS
3 DISTANCE SENS.
F
BIT A2 ADC 3
R
BIT A4 ADC 4
Project robots.
A/D
2 DC MOTORS
‘1’ OR ‘0’
BIT E1
PWM 1
BIT C2
‘1’ OR ‘0’ 1 0 1 1 1 0 0 1 A/D REGISTER
10
BUZZER
PWM 2
BIT E0 BIT C1
RIGHT
SOUND SENS. BIT B2
BIT A0 ADC 1
BIT D3 BIT D5
0x 003
BIT B1
L
BIT D2 BIT D4
0x 002
BIT B0
BIT D1
LEFT
BIT B5
FLASH-TYPE PROGRAM MEMORY 12288 lines of 14 BIT
ACTUATORS 8 LED’s BIT D0
MOTOR
BIT B4
FORMULA FLOWCODE BLOCK SCHEMATIC
MOTOR
SENSORS 2 PRESS BUTTONS
Foto met benoemde onderdelen Onderstaande tekening en tabel geeft aan wat wat is op de buggy.
Project robots.
11
De PIC microcontroller Doel van dit hoofdstuk: Kennis maken met de basisfuncties van de microcontroller. Het kloppend hart van de Formula Flowcode buggy is een krachtige PIC18F4455 8-bit microcontroller van Microchip. Alle sensors, actuators en uitbreidingsmogelijkheden van de FF Robot zijn via koperen printbanen verbonden op de PCB met 1 of meerdere pinnen van de PIC (zie onderstaande tekening). Dit wordt verder verduidelijkt door middel van de schema’s in de komende hoofdstukken. +5V 1
40 RB7/PGD
RA0/AN0
2
39 RB6/PGC
RA1/AN1
3
38 RB5
RA2/AN2/Vref-/CVref
4
37 RB4
RA3/AN3/Vref+
5
36 RB3/PGM
RA4/TOCKI/C1OUT
6
35 RB2
RA5/AN4/SS/C2OUT
7
34 RB1
RE0/RD/AN5
8
RE1/WR/AN6
9
+5V
16F877A
/MCLR/Vpp
RE2/CS/AN7 10 VDD 11 VSS 12 OSC1/CLKI 13 OSC2/CLK0 14
33 RB0/INT
+5V
32 VDD 31 VSS 30 RD7/PSP7 29 RD6/PSP6 28 RD5/PSP5 27 RD4/PSP4
RC0/T1OSO/T1CKI 15
26 RC7/RX/DT
RC1/T1OSI/CCP2 16
25 RC6/TX/CK
RC2/CCP1 17
24 RC5/SDO
RC3/SCK/SCL 18
23 RC4/SDI/SDA
RD0/PSP0 19
22 RD3/PSP3
RD1/PSP1 20
21 RD2/PSP2
Deze microcontroller kan met de Flowcode geprogrammeerd worden om stap voor stap, maar tegen een grote snelheid, bepaalde bewerkingen te doen: a) Inputs inlezen (schakelaars, … ) b) Outputs uitsturen (speaker, LEDs, motors… ) c) Analoge signalen inlezen (LDR, … ) en omzetten naar digitale omzetten d) Pulsen genereren op bepaalde exacte tijdstippen e) … . In principe kunnen we de PIC zien als een programmeerbare bouwsteen (Black Box) waar een aantal inputs en outputs aan zitten.
Project robots.
12
3.3 De taal van de µC… Crack the codes! De volgende hoofdstukjes werken we zelf individueel, iedereen dus aan eigen tempo af d.m.v. videolessen. Begrijp je iets niet, dan spoel je terug en beluister je opnieuw. Neem tijd voor elke les en elke uitdaging. Het is absoluut geen race! Een les duurt slechts enkele minuten werk dus zeer geconcentreerd. Er wordt heel veel informatie gegeven in weinig tijd. Vraag pas hulp aan je leerkracht als je zeker weet dat het antwoord niet in de videolessen zit. Er is ook vaak een opdracht voorzien, je ziet dan nevenstaand symbool. Druk dan op pauze en voer je opdracht met veel zorg uit. Ook moet je je antwoorden vaak in de cursus noteren, verlies dus ook deze niet uit het oog! Vraagjes: Hoe laat is het op de klokjes?
h
min
sec
Versta je de techneuten t-shirts? Noteer de leuze in decimale schrijfwijze:
Project robots.
13
Vul onderstaande tabel aan: Binair
Decimaal
Hexadecimaal
8
4
2
1
0
0
0
0
0
0
0
1
1
1
0
0
1
0
2
2
3
3
5
5
0
1
0
0
0
1
6
6
0
1
7
7
1
0
8
8
1
0
9
9
10
A
12
C
15
F
1
0
1
1
1
1
0
0 1
1
1
1
1
Noteer onderstaande decimale getallen zowel als Binair Hexadecimaal als ASCI:
14
78
127
Project robots.
14
3.4 LEDs en codes 1. Hoeveel LEDs staan er op de formulla flowcode? En op welke poort van de microcontroller worden deze aangesloten?
2. Wat bedoelen we met de most significant LED en the least significant LED?
3. Hoeveel pins hebben we nodig om alle rode leds aan te sluiten op de µC?
3.5 Jumpy Wat is een sprong instructie? En waarvoor wordt deze gebruikt?
3.6 Variabele 1. Waarom gebruiken we een variabele waarde bij het programmeren?
2. Waarop moet je letten bij een binaire vermenigvuldiger? op de LEDjes?
Project robots.
15
Welk patroon verschijnt er
3.7 Looping the loop Wat is het verschil tussen een eeuwige en een voorwaardelijke loop?
Als we een variabele X hebben gedeclareerd en we plaatsen een loop met instelling: Loop while X < 5 aan het begin van de loop, wat wil dit dan zeggen? En wat zal er nu gebeuren?
3.8 Running the light – The night rider Wat gebeurd er met de ledjes strook, als we een loop maken waarin we een variabele vermenigvuldigen met 2 en deze variabele een uitgang geven naar de D-poort van de processor? Waarom?
Wat moeten we doen om het tegenovergestelde te krijgen?
Hoe laten we deze twee bewerkingen nu steeds na elkaar gebeuren?
Project robots.
16
3.9 Ringtone mania Wat is het verband tussen toon en frequentie?
Waarom is de delayknop in de flowchart icoontjes onvoldoende om voor alle tonen een frequentieloop te kunnen genereren? Geef ook een voorbeeld.
3.10 Input Welke spanning moeten we aan de ingang van de microcontroller leggen opdat deze een duidelijke 1 zou detecteren?
Wat moet je doen zodat de microcontroller steeds een ingang kan blijven detecteren? Teken hieronder hier ook een flowchart voor, voor input 4 van poort B.
Project robots.
17
3.11 If… Then… Else
Wat is het verschil tussen de “ouderwetse” IC en de modernere Microcontroller?
Verklaar de tittel van dit hoofdstuk en verduidelijk aan de hand van een afbeelding van een bouwsteen uit de flowcharts.
Project robots.
18
3.12 Motor speed Hoe werkt een DC motortje?
3.13 Electronic switch Waarom hangen we onze motortjes van onze buggy niet rechtstreeks aan een pin van de microcontroller?
Leg de werking uit van een transistor aan de hand van onderstaande tekening:
Project robots.
19
Wat is het grote voordeel van de MOSFET t.o.v. de transistor? Leg uit aan de hand van de tekening.
3.14 H- bridge Verklaar waarom de invertors (niet poorten) in een H-brug kortsluitingen uitsluit. Leg uit aan de hand van de tekening.
Project robots.
20
Vul ofwel 1 ofwel 0 in op de
zodat de draaizin van de motor klopt.
3.15 PWM Speed control Vertaal Pulse Witdh Modulation en verklaar wat men hiermee bedoeld.
Als we een grote duty cycle naar de motor sturen, krijgt deze dan veel of weinig vermogen? Vergelijk deze met een kleine duty cycle en doe dit aan de hand van een diagramtekening.
Project robots.
21
3.16 Follow the line Leg de werking van de lijnvolgsensor uit, verduidelijk met een schets:
3.17 Reaction sound Hoe worden in een microfoon, geluidsgolven omgezet in elektrische golven?
Project robots.
22
3.18 Externe interupt Vertaal interupt:
Vergelijk de voor- en nadelen van de interupt methode t.o.v. de polling methode.
3.19 VU meter Wat is een VU meter?
Waarvoor worden VU meters gebruikt?
Project robots.
23
3.20 Follow the light Wat is en LDR?
Wat is een A/D convertor en wat doet deze bij deze oefening?
3.21 IR distance sensors Hoe komt het dat IR sensoren geen last hebben van kunstlicht?
Welk stappenplan moet je hanteren bij het gebruik van IR afstands sensoren? En waarom doen we dit zo?
Project robots.
24
3.22 LCD
Project robots.
25