Sumo-robotcompetitie Uitlegsessie 15 maart 2011
Opwarmer: waaruit bestaat een sumo-robot?
3
Opwarmer: waaruit bestaat een sumo-robot?
Sensoren
Verwerking
Duw-mechanisme
Aandrijving 4
Overzicht
• Herhaling: het spelverloop • Aansluiten sensoren en actuatoren • Het programmeren van een sumo-robot • Vraag en antwoord 5
Spelverloop 1. De robots worden op het veld geplaatst en geactiveerd, aftelling begint
2. Robots vechten 3. Het einde: wanneer een robot de grond buiten de ring raakt of er zijn drie minuten verstreken
6
Aansluiten van de sensoren en actuatoren
Lange afstandssensor Motoren (aandrijving)
Grondsensoren (korte afstandssensoren)
Servo’s (heffen, metingen, versnellingsbak)7
• Functie: het zien van een tegenstander • Types: GP2D12, GP2Y0A,... • Wat: spanningsvariatie in functie van de afstand • Aansluitingen: connector met drie pinnen: 5V-ingang, grond, uitgang • Voorbereiding: Solderen van kabels aan iedere pin
spanning
De lange afstandssensor
Afstand
(onthoud: 5V is rood, grond is zwart, uitgang naar keuze)Stabilisatie
voeding: soldeer condensator van 1uF tussen grond en 5V
8
De grondsensoren • • • •
Functie: het zien van de rand van de cirkel Types: TCRT5000 of APDS-9103/4 Wat: variatie van stroom doorheen de fototransistor Aansluitingen: IR-LED: grond en 5V Fototransistor: grond, 5V en Vout
• Voorbereiding: solderen van de weerstanden en draden aan de sensor Let goed op de correcte oriëntatie van de sensor!
9
De motoren • Functie: aandrijven van de robot • Types: Lego® XL-motor of andere • Wat: rotatie in functie van de aangelegde spanning (die we met een PWM-signaal laten variëren) • Aansluitingen: vier draden waarvan enkel de binnenste twee gebruikt worden • Voorbereiding: knip de twee buitenste kabels weg en strip de binnste twee
10
Servo’s • Functie: versnellingsbak, roteren sensor, hefboom, uitklapsysteem,... • Types: Lichte servo (5 euro) Zware servo (10 euro) • Wat: positie instelbaar met PWM-signaal
• Aansluitingen: Grond (zwart) en 5V lijn (rood) Controlelijn voor PWM-signaal (geel, wit, bruin,...)
11
12
13
De uitbreidingsconnector in meer detail
Dwengo-bord
AN0-3
WELEK-bord
AN4
14
Analoge sensoren • Aan te sluiten op een ADC-pinnen van de uitbreidingsconnector: ANx (x = 0-4) • Gebruik de 5V-pin (+) en grond-pin (-) om je sensoren te voeden • Uitlezen in je programma met behulp van readADC(x) • Gevorderde gebruikers kunnen deze functie uitbreiden naar meer dan 5 analoge sensoren. Hou er rekening mee dat het LCD-scherm tijdelijk moet uitgeschakeld worden. 15
De servo • Aansluiten op connector servo1 • Het aansturen van een servo kan door in het raamwerk de variabele timerServo aan te passen. • De variabele timerServo bepaalt de duty cycle van het PWM-signaal en moet in het interval [62086,64536] liggen zodat de pulsbreedte tussen de 0,7 en 2,3 ms ligt 16
Motoren voor aandrijving • Aan te sluiten op de motor-connector: ene motor op M1 (motor1), andere motor op M2 • Correct zetten van jumpers: Activeren driver: JP6 Selecteren voeding: JP2 pin 1-2 kortsluiten
• Motoren aansturen met behulp van de functies setSpeedMotor1(short speed) en setSpeedMotor2(short speed) met -1023 < speed < 1023 17
De voedingsplug • Te verbinden met de battery-pack (8 x 1,2V of 8 x 1,5V) • Het grootste vlak is de grond (zwarte draad)
• Het kleinste vlak is de 9-12 V ingang (rood) • Zorg dat je geen kortsluiting maakt!
18
Het programmeren van je robot
19
Wat je nodig hebt en waar je het haalt • Programmeeromgeving: Microchip MPLAB IDE en C18 compiler, gratis voor studenten http://www.microchip.com/ Installeer eerst MPLAB IDE en dan pas C18! • Downloaden raamwerk: http://www.ieeesb.ugent.be/nl/welek/robot/2011 • Programmeren robot: HIDBootloader eveneens op http://www.ieeesb.ugent.be/nl/welek/robot/2011 20
Een nieuw project beginnen • Start MPLAB IDE • Open de Project Wizard in het menu Project • Klik op Next en selecteer het juiste Device: PIC18F4550 • Klik op Next en selecteer de C18 Toolsuite
21
Een nieuw project beginnen • Als het goed is zijn de links naar de C18-compiler goed weergegeven
22
Een nieuw project beginnen • Klik op Next en kies een naam en locatie voor je project • Klik op Next en voeg de bestanden van het framework toe (.c, .h en .lkr)
23
Een nieuw project beginnen • Klik op Finish, je kan nu de regelaar (Controller.c) aanpassen. Je scherm ziet er als volgt uit:
Build knop
24
Een nieuw project beginnen • Het kan zijn dat er bij het compileren er fouten optreden in de zin van: “could not locate c018i.o” • Dit kan je als volgt oplossen: • Ga naar menu Project > Build Options > Project • Kies daar voor Directories • Voeg daar de links naar de juiste mappen toe: • Include Search Path: C:\MCC18\h • Library Search Path: C:\MCC18\lib • Linker Search Path:
25
Een kort overzicht van het raamwerk • Om het jullie gemakkelijk te maken hebben we een raamwerk voorzien • Dit is vernieuwd tov de vorige jaren en voorzien van volgende functionaliteit: • Sensoren • LCD • Motoren • Wachtroutines • Seriële communicatie • Daarnaast werd een voorbeeld dat reeds de nodige functies omvat om de robot te starten, de sensoren uit te lezen en de motoren te laten draaien
26
Een kort overzicht van het framework • Een voorbeeldje: #ifndef SENSORS_H #define SENSORS_H #include #include <delays.h> #include #define BYTE unsigned char // Prototypes void initSensors(void); int readSensor(BYTE address); #endif
#include "Sensors.h” void initSensors() { LATA = 0xFF; OpenADC(ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_6_TAD, ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_VSS, 0b1010); } int readSensor(BYTE address) { int data; if(address == 0) SetChanADC(ADC_CH0); else if(address == 1) SetChanADC(ADC_CH1); … data = ReadADC(); return data; }
27
Beschikbare functies: de sensors • dwengoADC • void initADC(void); // roep dit op als je de sensors wil gebruiken • int readADC(BYTE adres); // lees sensor • Beschikbare adressen: • 0-3: grondsensoren • 4: lange afstandssensor
• Breidt dit uit naar believen maar hou er rekening mee dat je dan het LCD-scherm (tijdelijk) moet uitschakelen in je code 28
Beschikbare functies: aansturen motoren • dwengoMotor • void initMotors(void); // roep dit op als je de motoren wil gebruiken • void stopMotors(void); // alle motoren moeten stoppen • void setSpeedMotor1(short speed); • void setSpeedMotor2(short speed); • De variabele speed kan variëren van -1023 (maximale snelheid in een richting) tot 1023 (maximale snelheid in een andere richting)
29
Andere beschikbare functionaliteit • LCD en wachtfunctie • Zie dwengoLCD.h en dwengoDelay.h om de functies te leren kennen
• dwengoBoard.h • In dwengoBoard.h staan een aantal zaken gedefinieerd die je programma leesbaarder kunnen maken • #define TRUE 1 #define FALSE 0 • True en false niet gekend in C, dankzij de pragma’s kan je die toch gebruiken • Andere voorbeelden zijn LEDS, SW_C, SW_N, SERVO0,... 30
Tot slot de regelaar zelf • Alle functies worden opgeroepen in de main • Code wordt sequentieel doorlopen void main(void) { short speed = 1023; // init something initSensors(); initMotors(); initLCD(); // do something setSpeedMotor1(speed,FORWARD); setSpeedMotor2(speed,FORWARD); }
31
Tot slot de regelaar zelf • Alle functies worden opgeroepen in de main • Code wordt sequentieel doorlopen void main(void) { short speed = 1023; // init something initSensors(); initMotors(); initLCD(); // do something setSpeedMotor1(speed,FORWARD); setSpeedMotor2(speed,FORWARD);
}
void main(void) { short speed = 1023; // init something initSensors(); initMotors(); initLCD(); while(TRUE) { // do something setSpeedMotor1(speed,FORWARD); setSpeedMotor2(speed,FORWARD); } }
32
Compileren en op het bord plaatsen van je zelfgeschreven regelaar • Build je code in MPLAB • Wanneer dit succesvol is wordt er een hex-bestand gemaakt • Dit kan je opladen met de HIDBootloader tool • Start de HIDBootloader tool op (dubbelklikken) • Sluit je experimenteerbord aan met behulp van een USBkabel • Houd de W-knop lang ingedrukt en druk heel even de reset-knop in • Als het goed is gaan er nu twee LEDs pinken • In de HIDBootloader tool verschijnt nu Device attached 33
Experimenteerbord is goed aangesloten
Klik op Open Hex File 34
Laden hex-bestand
Navigeer naar je hex-bestand en klik op Open
35
Programmeren van hex-bestand
Klik op Program/Verify 36
Succesvolle programmatie
Wanneer de groene balk volledig vol is, is je experimenteerbord succesvol geprogrammeerd (het kan zijn dat HIDBootloader vervolgens vastloopt) 37
Let’s play
38