Enchipsdatorer med tillämpningar LABORATION 6, ROBOT Laborationsansvariga: Tomas Bengtsson, Rickard Holsmark Utskriftsdatum: 2006-05-02 Laboranter:
1 Syfte Syftet med laborationen är att studenterna på egen hand skall utföra en konstruktionsuppgift. Förutom detta skall laborationen ge studenten möjlighet att ganska fritt öva olika moment. Försök därför välja en lösning där sådant du tycker är besvärligt och vill öva mer på ingår. Laborationen ger också möjlighet att använda EEPROM dataminne för att spela in ett rörelseschema. Då detta är sista laborationen testas studentens förmåga att lösa ett praktiskt problem med enchipsdatorn. Förutom en del restriktioner får studenten fritt strukturera uppgiften och välja lösning. 2 Genomförande Laborationen genomförs under två laborationstillfällen (2*4 tim). Programmering utförs i MPLAB och skrivs i C och/eller assembler. Datablad mm finns på Ping Pong. Laborationen är uppbyggd som en mindre projektuppgift där lösning kan väljas ganska fritt, förutsatt att vissa grundkriterier uppfylls. Det är ytterst lämpligt att åtminstone ha ritat schema för maskinvaran och struktur/funktioner för programvaran före laborationstillfällena. Systemet byggs företrädesvis på lab-däck som kan ställas undan och sparas mellan laborationstillfällena 3 Uppgift En robotarm ska styras med hjälp av pulser till ett servo. Pulserna ska genereras med 20 ms mellanrum och vara 1 2 ms långa. Se i bilagan hur detta påverkar respektive robotarms läge. En operatör ska med två joystickar kunna styra robotarmen till önskat läge och t ex kunna flytta ett mindre föremål mellan olika platser. (Varje joystick innehåller två potentiometrar.) 3.1 Kriterier En PIC16F877 skall ingå i konstruktionen Användargränssnittet består av joystick eller potentiometer och knappar/omkopplare. Robotarmens läge ska kunna bestämmas med en upplösning av minst 80 steg. Ett rörelsemönster under 10 s skall kunna spelas in och lagras i EEPROM. Vid aktivering skall det senast lagrade rörelsemönstret utföras av roboten. 3.2 Konstruktionsförslag Att skapa pulser med varierande varaktighet med jämna mellanrum kan vara ganska bevärligt i en processor. Ett förslag är att en 877:a läser in och behandlar informationen om hur roboten skall positioneras, samt genererar periodtiderna. Var 5:e ms skickar denna processor information om respektive robotarms önskade läge till en 84-processor, som genererar en puls till rätt servo med lämplig längd. Varje servo kommer då att pulsas var 20:e ms. 84-processorn kan generera servopulsen (1-2 ms) i en interruptrutin som aktiveras av 877:an. 84-processorn använder alltså extern pinne som interruptkälla. 2
3.3 Konstruktionsanvisningar Rita ett schema med de komponenter som kommer att krävas. Rita ett flödesschema eller motsvarande för varje processor innan kodning sker. Efter simulering ska pulsen verifieras med oscilloskop innan robotarmen styrs, då servot som driver robotarmen kan ta skada av alltför felaktiga styrsignaler. Bygg programmen så att du kan testa så mycket som möjligt individuellt, annars blir avlusningen mycket besvärlig. En potentiometer kan anslutas som spänningsdelare i däcket för att testa A/D-omvandlingen innan joysticken ansluts. Till roboten ansluts endast logiksignalerna till servona (M1 M4) och jord. Roboten drivs med en egen transformator så +5V i kopplingsplinten på roboten är en utgång! Denna ska ej användas! 4 Redovisning Redovisning sker genom att laboranterna visar upp resultatet för laborationsansvarig, samt förklarar programvarans uppbyggnad och funktion. 5 PIC16F877 877:an innehåller allt som finns i F84an, men utöver det också en mängd andra periferienheter och register. Det man behöver tänka på när man lägger in assemblerkod från 84:an i 877:n är främst att register och dataminne kan ligga på andra adresser. RAM är också fördelat på flera banker så bankbitarna måste vara rätt satta när man accessar en variabel. Dessutom måste A/D-omvandlaren konfigureras om PORTA ska användas som en digital port, på liknande sätt som i 12F675. 5.1 Databladet Plocka fram databladet för 877:an, antingen i pärmen eller på Ping Pong. Skumma igenom första sidan så du får en grov uppfattning om processorn. Studera även blockschemat ca sex sidor längre bak. (Observera att det finns ett schema även för andra varianter.) Hur mycket programminne, dataminne och EEPROM har 877:an? Ögna igenom beskrivningen av pinnarna och bläddra vidare till Data Memory Organisation. Läs på om bankbitarna och studera sedan Register File Map. På vilken adress börjar dataminnet (GPR)? 3
Bilaga LABORATION 6, Robot 4
5