• No results found

FJÄRRSTYRD SANERINGSROBOT UTVECKLAD MED CODESYS FÖR RASPBERRY PI

N/A
N/A
Protected

Academic year: 2022

Share "FJÄRRSTYRD SANERINGSROBOT UTVECKLAD MED CODESYS FÖR RASPBERRY PI"

Copied!
63
0
0

Loading.... (view fulltext now)

Full text

(1)

Examensarbete, 15 hp

Högskoleingenjörsprogrammet i maskinteknik, 180 hp

Vt 2020

FJÄRRSTYRD

SANERINGSROBOT UTVECKLAD MED

CODESYS FÖR RASPBERRY PI

Remote-controlled

decontamination robot based on CODESYS for Raspberry Pi

Hampus Eskilsson

(2)

i

Förord

Detta projekt är mitt examensarbete för en högskoleingenjörsexamen i maskinteknik vid Umeå universitetet. Projektet genomfördes vid Institutionen för tillämpad fysik och elektronik på Umeå universitetet.

Jag vill först och främst tacka min handledare Sven Rönnbäck för den assistans och vägledning han gett under projektets gång. Jag vill även tacka Isak Forsberg och Erik Tillberg för den

kollegiala granskningen av rapporten. Sist, men inte minst, vill jag tacka alla de lektorer som gett mig den kunskap jag idag har för att kunna genomföra ett projekt av detta slag.

__________________________________

Hampus Eskilsson Umeå 2020

(3)

ii

Sammanfattning

Vid institutionen för tillämpad fysik och elektronik, Umeå universitet, bedrivs utbildning och forskning inom bland annat automation och robotik. Syftet med projektet är att skapa en robot där rapporten skall kunna användas för att förenkla framtida utlärningar inom de ämnen projektet tar upp. Projektets mål är att designa, skapa och programmera en

saneringsrobotprototyp med hjälp av utvecklingsgränssnittet CODESYS. För att möjliggöra sanering används UVC-ljus. UVC är en kategori inom UV-ljus där endast ett spann av våglängder innefattas, vilka bevisats ha bakteriedödande effekt.

Robotens design är ritad i CAD och är måttanpassad utefter den hårdvara som används. Vidare består robotens chassi av två plexiglasplattor som laserskärs med färdiga hålbilder. Chassit sätts ihop med hjälp av sex M6-gängstänger, vilket skapar två plan där komponenter kan skruvas fast i de laserskärda hålbilderna.

Roboten använder sig av motorstyrningskort, servomotorer och mecanumhjul där styrning sker med hjälp av två stycken joysticks. Joysticksen i samband med teoretiska rörelseekvationer möjliggör omnidirektionell rörelse. Vidare används ett reläkort för styrning av både UVC-lampor och signallampa.

Roboten programmeras i CODESYS som ett ”Function Block Diagram” (FBD) där en mängd nya programbibliotek blir implementerade. Genom användning av CODESYS visualiseringsverktyg skapas ett användargränssnitt som gör att roboten kan fjärrstyras via ett webbgränssnitt.

Projektet uppnådde sju av åtta krav från kravspecifikationen vilka validerades via fem uppsatta testscenarion. Resultatet är en robot som kan styras i valfri riktning via WiFi genom exempelvis en smartphone. Reläets olika portar öppnas och stängs genom programmerade funktioner, knappar och en IR-sensor vars uppgift är att avläsa kroppslig värme.

Vid fortsatt utveckling av roboten skulle en kamera kopplats in och använts i HMI-gränssnittet, vilket hade möjliggjort telestyrning. Fler styrningsalternativ hade också kunnat implementerats, exempelvis genom att lägga till en knapp som gör att roboten roterar 90 grader.

(4)

iii

Abstract

At the Department of Applied Physics and Electronics, at Umeå University, education and research are conducted in areas such as automation and robotics. The purpose of the project is to create a robot, where the report can be used to assist future learning within the subjects covered by the project. The goals of the project are to design, create and program a

decontamination robot prototype using the development interface CODESYS. UVC-light will be used to achieve this sanitation. UVC is a category of UV light which includes a limited range of wavelengths, that have been shown to have bactericidal effect.

The robot is designed in CAD using the measurements of the hardware used. Furthermore, the robot's chassis consists of two plexiglass plates that are laser cut according to predetermined hole patterns. The chassis is assembled using six M6 threaded rods. The design constitutes two levels onto which the components can be mounted.

The driveline consists of motor control boards, servomotors and mecanum wheels. Two joysticks are used to control the steering of the robot. The joysticks in relation with theoretical equations enables omnidirectional motion. Furthermore, a relay card is used for controlling both UVC and the signal lamp.

The robot is programmed in CODESYS as a "Function Block Diagram" (FBD) where several new program libraries are implemented. By using CODESYS’ visualization tool, a user interface is created where the robot can be remotely controlled via a web interface.

Seven out of eight requirements were achieved in the project. The achieved requirements were all validated through five test scenarios. Furthermore, the robot can be steered in any direction via Wi-Fi through inter alia a smartphone. The various ports of the relay are controlled by programmed functions and buttons, which can be overridden in the case of body heat being detected by an IR sensor.

If the robot were to be further developed, a camera could be connected and used in the HMI, which would have enabled distance remote control. Furthermore, several control options could have been implemented, for example a button that allows the robot to rotate 90 degrees.

(5)

iv

Innehållsförteckning

1. Inledning ... 1

1.1 Bakgrund ... 1

1.2 Syfte och problemställning ... 1

1.3 Mål ... 1

1.4 Kravspecifikationer ... 1

1.4.1 Kravspecifikation ... 1

1.4.2 Testscenarion ... 1

1.5 Avgränsningar ... 2

1.5.1 UVC ... 2

1.5.2 Budget ... 2

1.5.3 Tidsram ... 2

1.5.4 Material och utrustning ... 2

1.5.5 Lokaler ... 2

2. Teori ... 3

2.1 Systembeskrivning ... 3

2.2 Hårdvara ... 4

2.2.01 Raspberry Pi ... 4

2.2.02 Motorer ... 4

2.2.03 Motorstyrningskort MD25 ... 5

2.2.04 IMU breakout board ... 6

2.2.05 Logic Level Converter ... 6

2.2.06 Step-down regulator (12V – 5V) ... 6

2.2.07 Step-up regulator (12V – 24V)... 7

2.2.08 Touchdisplay ... 7

2.2.09 Signallampa ... 8

2.2.10 Kamera ... 8

2.2.11 Strömförsörjning ... 8

2.2.12 Hjul... 9

2.2.13 Relä för styrning av lampor ...10

2.2.14 UV-lampor med G23-sockel ...10

2.2.15 IR-sensor ...10

2.3 Omnidirektionell rörelse med hjälp av Mecanumhjul ...11

2.4 Genomgång av UVC-ljus ...11

2.5 PLC (Programmable Logic Controller) ...12

2.6 CODESYS som mjukvara ...13

2.7 Kommunikation via I²C ...13

3. Arbetsmetod ...14

(6)

v

3.1 Design ...14

3.2 Tillverkning, montering och koppling ...15

3.3 Uppstart och konfiguration av Raspberry Pi ...16

3.3.1 Installation av operativsystem ...16

3.3.2 Konfiguration av Raspbian ...17

3.3.3 Byte av I²C-adress ...17

3.4 Installation av CODESYS i Windows ...17

3.4.1 Installera externa paket ...17

3.4.2 Implementera egna hårdvarubibliotek ...17

3.4.3 Installera CODESYS på Raspberry Pi ...18

3.5 Programmera robot ...18

3.5.1 Implementera I²C-enheter ...18

3.5.2 Joystickstyrning ...18

3.5.3 MD25 ...18

3.5.4 Lampstyrning ...18

3.5.5 Relä ...18

3.5.6 IR-sensor ...18

3.6 Konfigurera HMI ...18

4. Resultat och analys...20

4.1 Omnidirektionella styrningsekvationer ...20

4.2 Huvudprogram ...21

4.3 Analys av kravspecifikation och testscenarion ...22

4.3.1 Analys av kravspecifikation ...22

4.3.2 Analys av testscenarion ...22

4.4 Grafer ...23

4.5 Dimensioner ...23

4.6 Materialkostnad ...24

5. Diskussion och slutsatser...25

5.1 Reflektion kring designen ...25

5.2 Diskussion kring projektgenomförandet ...25

5.3 Analys kring måluppfyllnad ...26

5.4 Framtida arbete ...26

5.5 Slutsats ...26

5.6 Slutord ...26

Referenser ...28 Bilaga 1 – Installation av MD25 programbibliotek ... B1 Bilaga 2 – Installation av RLY08 programbibliotek ... B2 Bilaga 3 – Installation av MPU9250 programbibliotek ... B3 Bilaga 4 – Implementera I²C-enheter ... B4

(7)

vi Bilaga 5 – Implementera joystickstyrning... B5 Bilaga 6 – Implementera motorstyrningskorten ... B6 Bilaga 7 – Implementera lampstyrning ... B7 Bilaga 8 – Implementera reläet ... B8 Bilaga 9 – Implementera IR-sensorn ... B9 Bilaga 10 – Ritning nedre plan ... B10 Bilaga 11 – Ritning övre plan ... B11 Bilaga 12 - Huvudprogram ... B12 Bilaga 13 – Funktionsblock Controller ... B13 Bilaga 14 – Funktionsblock Lamp ... B14

(8)

vii

Akronymer

GPIO General-Purpose Input/Output

CFU Colony-Forming Units

I²C Inter-Integrated Circuit

USB Universal Serial Bus

IEC International Electrotechnical Commission

PLC Programmable Logic Controller

UVC Ultraviolet Light type C TTL Transistor-Transistor Logic

IMU Inertial Measurement Unit

MEMS Micro-Electro-Mechanical Systems

LLC Logic Level Converter

NO Normally Open

NC Normally Closed

HMI Human Machine Interface

PWM Pulse-Width Modulation

SPI Serial Peripheral Interface

SDA Serial Data Line

SCL Serial Clock Line

(9)

1

1. Inledning

1.1 Bakgrund

Året är 2020 och på grund av den rådande COVID-19 situationen, där coronaviruset sprids över hela världen genom både dropp-och kontaktsmitta, så kan det vara viktigt med sanering för att minska smittrisken [1]. Sanering är möjlig genom att belysa ytor med UVC-ljus, vilket är en kategori inom UV-ljus som innefattar våglängderna 100–280 nm. UVC har en baktericid effekt, vilket innebär att det skadar bakteriers DNA. UVC är därför väldigt farligt för människor och bör opereras på distans via exempelvis en robot.

Umeå universitet, som är ett av Sveriges största universitet, utför bland annat forskning inom automation och robotik. Det är i dessa riktlinjer projektet följer där en fjärrstyrd saneringsrobot kommer skapas med hjälp av utvecklingsgränssnittet CODESYS.

1.2 Syfte och problemställning

Syftet med projektet är att tillverka och programmera en robot där kunskapen i rapporten kan användas för att enklare lära ut olika sorters implementationer och på så sätt förbättra kunskapsläget på institutionen.

1.3 Mål

Projektets mål är att designa, bygga och programmera en robot som kan sanera golvytor med hjälp av UVC. Programmeringen sker i CODESYS och roboten skall kunna fjärrstyras via Wi-Fi.

Projektet skall kunna användas som en referens för framtida automationsimplementationer och utlärning av CODESYS.

1.4 Kravspecifikationer

Projektets kravspecifikation och de uppsatta testscenariona är följande.

1.4.1 Kravspecifikation

Robotens kravspecifikation följer nedan:

1. Roboten skall kunna styras i en omnidirektionell rörelse.

2. Roboten skall kunna sanera med hjälp av UVC.

3. Roboten skall kunna fjärrstyras med ett lämpligt gränssnitt över WiFi.

4. Robotens kod skall skrivas i CODESYS med en Raspberry Pi som PLC.

5. Roboten skall ha en säkerhetsfunktion som gör att UVC släcks vid kontakt med en människa.

6. Roboten skall ha ett fungerande gyro för mätning av acceleration och vinkelhastighet.

7. Roboten skall ha en touchdisplay med HMI.

8. Roboten skall ha en signallampa som informerar omgivningen.

1.4.2 Testscenarion

För att säkerhetsställa funktionalitet skall data samlas in från följande testscenarion:

1. UVC tänds och släcks genom att trycka på en knapp.

2. Roboten skall styras via en alternativ enhet i samma nätverk.

3. Roboten skall köras runt två objekt i en åtta.

4. Roboten skall köras i en fyrkantig rörelse kring ett objekt.

5. Robotens UVC släcks om en IR-sensor detekterar en människa.

(10)

2

1.5 Avgränsningar

De avgränsningar som är uppsatta för projektet är följande.

1.5.1 UVC

På grund utav den säkerhetsrisk UVC innebär, se avsnitt 2.4, så används inga fysiska lampor i detta projekt. Roboten skall däremot designas kring UVC-lysrör – se avsnitt 2.2.14.

1.5.2 Budget

Projektet finansieras av Institutionen för tillämpad fysik och elektronik på Umeå universitet.

Budgeten är satt till 3000 kronor.

1.5.3 Tidsram

Projektet utförs som ett examensarbete, 15hp, från mars till och med 5 juni 2020. Tiden avsatt för projektet är 400 timmar.

1.5.4 Material och utrustning

För att minska projektkostnaden så har befintlig tillgänglig utrustning och material använts och tillhandahållits av Institutionen för tillämpad fysik och elektronik vid Umeå universitet. Material och utrustning som bekostats av studenten:

• Dator

• Skrivmaterial

• Lödutrustning 1.5.5 Lokaler

Lokaler som varit tillgängliga och använts:

• Maskinhallen vid TFE, UMU

• Datorsal TA310 vid TFE, UMU

• Ellabblokalerna TA 405–407 vid TFE, UMU

• Studentens hemmakontor

(11)

3

2. Teori

2.1 Systembeskrivning

En sketch av systemets uppbyggnad kan ses i figur 1 där CODESYS används på en utvecklingsdator. Datorn kan sedan föra över kod till roboten via nätverk. Robotens

användargränssnitt går sedan att nå via valfri enhet uppkopplad till samma lokala nätverk.

Vad som kan noteras i figur 1 är att robotens hjul är vinklade inåt och utåt på grund av mecanumhjulen som är monterade. Se avsnitt 2.3 för en djupare förklaring.

Vidare kan robotens kopplingsschema för all hårdvara ses i figur 2.

Figur 1: Sketch av systemuppställningen där en dator, mobiltelefon och den mobila plattformen anslutits

Figur 2: Kopplingsschema som visar hur samtlig hårdvara kopplas

(12)

4

2.2 Hårdvara

Samtliga komponenter som används i projektet listas nedan med en kort beskrivning över var och en.

2.2.01 Raspberry Pi

En Raspberry Pi 2 modell B valdes som huvudenhet för att agera PLC och köra CODESYS, se figur 3. Raspberry Pi är en dator i miniformat som oftast används för datorinlärning, hemautomation och olika typer av hobbyprojekt. Den drivs av en 900 MHz fyrkärnig processor och 1 GB

ramminne [2], vilket innebär att den har tillräckligt med kraft för att driva ett lättare PLC- program. I detta projekt användes operativsystemet Raspbian v4.18 eftersom det är rekommenderat av CODESYS [3].

Vidare så innehar Raspberry Pi-enheten 40 stycken GPIO-pinnar som kan användas för olika ändamål där två stycken har utmatning av 3 V och 5 V, två stycken har stöd för I²C-

kommunikation och 17 stycken kan användas som digitala in-och utgångar.

Raspberry Pi-enheten kräver 5 V ströminmatning via en micro-USB-port och kan därför drivas via exempelvis en mobilladdare.

Figur 3: Raspberry Pi 2 model B med kablar ansluta till dess GPIO-stift

2.2.02 Motorer

De motorer som används är av modellen EMG30 (figur 4) eftersom de redan fanns vid institutionen. Servomotorerna drivs av 12 V och är utrustade med enkodrar, 5 mm monteringsaxel och en 30:1 växellåda där enkodrarna ger 500 pulser per varv [4].

(13)

5 Figur 4: EMG30 servomotor med växellåda och enkoder

2.2.03 Motorstyrningskort MD25

För att driva motorerna används motorstyrningskortet MD25 (figur 5) då det redan fanns vid institutionen.

Detta motorkort är designat och skapat för att driva EMG30-motorer [5]. Motorkortet

kommunicerar via I²C, alternativt TTL-seriell, med 5 V logik. Motorkortet kan driva två motorer individuellt. Det kan även läsa av motorernas enkodersignaler som används till att bestämma körsträcka. Via motorstyrningskortet är det även möjligt att sätta olika accelerationsparametrar för att variera en motors acceleration. En viktig egenskap är även att det går att byta I²C-adress på kortet, vilket möjliggör användning av två stycken motorstyrningskort på samma I²C-buss.

För att styra motorerna kan man använda antingen en 8-bitars integer med intervallet [- 128...127] eller enbart positiva värden med intervallet [0…255] där den sistnämnda används i detta projekt. Det innebär en hastighet mellan värdena 0 och 255, där 0 är full fart åt ena hållet, 255 är full fart åt andra hållet och 128 är stopp.

Figur 5: MD25 motorkort anslutet till en I²C-buss

(14)

6 2.2.04 IMU breakout board

Som tröghetssensor används IMU MPU-9250 (figur 6) då den redan fanns tillgänglig. Detta IMU är ett så kallat MEMS med 9 frihetsgrader och består av tre gyron, tre accelerometrar och tre magnetometrar [6]. Trots att tröghetssensorn inte kommer användas för några processer i projektet så är det bra att implementera för eventuella framtida utvecklingar och utlärningar.

Enheten kommunicerar via I²C med 3.3 V logik.

Figur 6: Ett anslutet MPU-9250 IMU till en kopplingsplatta

2.2.05 Logic Level Converter

Som LLC används PCA9306 (figur 7) då det redan fanns tillgängligt.

Eftersom Raspberry Pi-enheten kommunicerar via I²C med hårdvara som använder sig av olika logiknivåer (3.3 V och 5 V) så behövs en logikkonverterare för att inte elektriskt överbelasta de inkopplade enheterna. PCA9306 kan kommunicera med 1 V till 3.6 V på den elektriskt låga sidan och 1.8 V till 5.5 V på den elektriskt höga sidan [7].

Figur 7: En uppkopplad PCA9306 LLC till en I²C-buss

2.2.06 Step-down regulator (12V – 5V)

För att kunna strömmata Raspberry Pi-enheten med ett 12 V-batteri används en step-down regulator som konverterar 12 V till 5 V. I detta projekt används en KIS-3R33S (figur 8) med USB- utgång för 5 V då den redan fanns tillgänglig.

(15)

7 Figur 8: KIS-3R33S step-down regulator

2.2.07 Step-up regulator (12V – 24V)

Då signallampan använder sig av 24 V så behövs även här en spänningskonverterare, men som i detta fall konverterar 12 V till 24 V. Här valdes en XW026FR4 (figur 9) som via potentiometrar justerar utspänningen till 24 V.

Figur 9: XW026FR4 step-up regulator

2.2.08 Touchdisplay

Den touchdisplayen som används för roboten är en Raspberry Pi 7" Touch Screen (figur 10) med upplösningen 800x600. Touchdisplayen är skapad för Raspberry Pi, vilket gör den enkel att konfigurera och koppla in.

Figur 10: Raspberry Pi 7" Touch Screen monterad på roboten

(16)

8 2.2.09 Signallampa

En Signalstapel Kompakt 71 (figur 11), produktnummer 69700055 hos WERMA, används som signallampa i detta projekt då den redan fanns tillgänglig.

Signalstaplar används för att indiktera driftläge hos exempelvis automatiserade maskiner.

Signalstapeln har tre lampor med färgerna röd, orange och grön. Lamporna drivs av 24 V, har en livslängd på 70 000 timmar och skyddsklass IP65 [8].

Figur 11: Kompakt 71 signallampa 2.2.10 Kamera

För att möjliggöra fjärrstyrning så behövs en kamera för att se vart man kör. En Raspberry Pi Camera Rev 1.3 (figur 12) används i detta fall då den redan fanns tillgänglig.

Likt touchdisplayen är kameran skapad för Raspberry Pi, vilket gör den enkel att konfigurera och koppla in. Kameran kan ta bilder i 5 MP, alternativt filma i 1080p i 30 fps eller 720p i 60 fps [9].

Figur 12: Raspberry Pi Camera Rev 1.3 2.2.11 Strömförsörjning

För att göra roboten mobil används ett batteri. Batteriet som valts har beteckningen Exide Powerfit S312/2.3 S (figur 13) och är ett 12 V AGM-batteri med 2.1 Ah [10]. Eftersom motorerna använder sig av 12 V och det finns konverterare för övriga strömkällor så är batteriet ett bra och billigt val i jämförelse med andra mobila strömkällor.

(17)

9 Figur 13: Exide Powerfit S312/2.3 S batteri

Batteritiden för systemet har räknats ut nedan i tabell 1. Värt att notera är att

strömanvändningen utgår från vad komponenterna max använder enligt datablad. Man kan alltså utgå från att körtiden är betydligt längre än vad som visas i tabellen nedan.

Tabell 1: Total strömförbrukning för samtlig hårdvara

Enhet Strömanvändning MAX (mA)

Raspberry Pi 600

Motorer 2500 x 4

MPU-9250 3.5

Touchskärm 500

Kamera 260

Signallampa 40

Relä 100

𝑀𝑖𝑛𝑖𝑚𝑎𝑙 𝑘ö𝑟𝑡𝑖𝑑 (ℎ) = 𝐵𝑎𝑡𝑡𝑒𝑟𝑖 (𝐴ℎ)

𝑆𝑡𝑟ö𝑚𝑓ö𝑟𝑏𝑟𝑢𝑘𝑛𝑖𝑛𝑔 (𝐴) = 2.1

11,5035 ≈ 0,18ℎ = 11 𝑚𝑖𝑛 2.2.12 Hjul

De hjul som används till roboten är fyra stycken mecanumhjul (figur 14). Hjulen uppmäter en ytterdiameter på 54 mm med ett 3 mm monteringshål som borrades upp till 5 mm [11].

Figur 14: Mecanumhjul monterade på den mobila plattformen

(18)

10 2.2.13 Relä för styrning av lampor

För att möjliggöra styrning av samtliga lampor som kopplas in används reläet RLY08 (figur 15) då det redan fanns tillgängligt.

Reläkortet har 8 utgångar där samtliga har stöd för NO och NC. Det kan kommunicera via I²C eller seriellt med 5 V logik och har inga voltbegränsningar utan endast begränsning i ström där varje relä max tål 1 A [12].

Figur 15: RLY08, reläkort med 8 stycken relän

2.2.14 UV-lampor med G23-sockel

Inga lampor är inköpta till detta projekt. Roboten är designad och programmerad för två G23- socklar med lämplig ljuskälla. De socklar som används är G23-socklar från Elfa [13]. De ljuskällor som rekommenderas är lysrör med UVC och en maxlängd på 17 cm, exempelvis bakteriedödande kompaktlysrör UV-C G23 9 W från Lamportillallt [14].

2.2.15 IR-sensor

Den IR-sensor som är vald till detta projekt är en HC-SR501 (figur 16) då den redan fanns

tillgänglig. Sensorn är en så kallad Body Sensor Module som består av en BISS0001 PIR Controller och en PIR sensor. Sensorn används för att detektera infraröd strålning, även kallat

värmestrålning och kan på så sätt känna av människor. Sensorn har ett detektionsavstånd på upp till sju meter [15].

Figur 16: IR-sensor HC-SR501

(19)

11

2.3 Omnidirektionell rörelse med hjälp av Mecanumhjul

Mecanumhjul, även kallat ilonhjul efter sin svenske uppfinnare Bengt Ilon [16], är ett hjul som möjliggör rörelse i alla riktningar. Det som skiljer mecanumhjulet från ett vanligt hjul är att det består av en rad vinklade rullar monterade på en cirkelformad ram. På detta sätt kan en robot med fyra mecanumhjul röra sig framåt, bakåt, sidledes eller rotera beroende på vilken hastighet respektive hjul har. Detta kallas omnidirektionell rörelse och går även att skapa via omni-hjul [17]. För en tydligare bild se figur 17.

Figur 17: Illustration över styrning av mecanumhjul

Ett vanligt sätt att styra robotar med mecanumhjul är med två joysticks där den första används för att styra roboten framåt, bakåt och sidledes medan den andra används för att rotera. Utgår vi från den teori som finns [18] så kan rörelseekvationer skapas, där positiv riktning är upp eller till höger på joysticksen, C och K är konstanter och variablerna är;

VJY = Vänstra joystick Y-axel.

HJX = Högra joystick X-axel.

VJX = Vänstra joystick X-axel.

𝑉ä𝑛𝑠𝑡𝑒𝑟 𝑓𝑟𝑎𝑚ℎ𝑗𝑢𝑙 = (𝑉𝐽𝑌 + 𝐻𝐽𝑋 + 𝑉𝐽𝑋) × 𝐾 + 𝐶 (1) 𝑉ä𝑛𝑠𝑡𝑒𝑟 𝑏𝑎𝑘ℎ𝑗𝑢𝑙 = (𝑉𝐽𝑌 + 𝐻𝐽𝑋 – 𝑉𝐽𝑋) × 𝐾 + 𝐶 (2) 𝐻ö𝑔𝑒𝑟 𝑓𝑟𝑎𝑚ℎ𝑗𝑢𝑙 = (𝑉𝐽𝑌 – 𝐻𝐽𝑋 – 𝑉𝐽𝑋) × 𝐾 + 𝐶 (3) 𝐻ö𝑔𝑒𝑟 𝑏𝑎𝑘ℎ𝑗𝑢𝑙 = (𝑉𝐽𝑌 – 𝐻𝐽𝑋 + 𝑉𝐽𝑋) × 𝐾 + 𝐶 (4)

2.4 Genomgång av UVC-ljus

UVC, som även kallas Ultraviolett strålning C, är en kategori inom UV-ljus där våglängderna 100–

280 nm innefattas [19]. UVC finns i solstrålarna, men eftersom det är så pass korta våglängder absorberas all UVC av ozonskiktet i den övre delen av atmosfären. Det är den absolut farligaste typen av UV-strålning och är direkt skadligt för alla organismer då det har en baktericid effekt, det vill säga den är så pass energirik så att den förstör DNA hos bakterier, virus och andra mikroorganismer, vilket förhindrar celldelning. Observera också att detta kan leda till en DNA- skada som i sin tur leder till cancer.

UVC upptäcktes redan på slutet av 1800-talet, men har inte förrän på senare tid implementerats i olika desinfektionslösningar. Idag använder man UVC för att rena vatten, luft och ytor [20], där marknaden för desinficering av ytor har ökat explosionsartat i samband med Covid-19. Varför UVC används är den höga bakteriedödligheten i jämförelse med vanlig hygienstädning [21].

Rapporter visar att bakterieodlingen minskar drastiskt vid användning av UVC. 8,4 gånger så lite

(20)

12 CFU (Colony-Forming Units) kan noteras i jämförelse med vanlig hygienstädning på samma platser [21]. Man bör dock se UVC som ett komplement och inte en ersättare då vanlig städning fortfarande behövs för att ta bort ordinarie smuts.

En maskin som använder sig av UVC-ljus kan ses i figur 18.

Figur 18: Maskin som använder sig av UVC-ljus [20]

2.5 PLC (Programmable Logic Controller)

En PLC, eller ett programmerbart styrsystem, är ett vanligt sätt att styra och övervaka

automatiserade processer. Processerna kan röra sig om allt från att styra temperaturen i en lokal till att styra en åkattraktion på ett nöjesfält [22]. Vid industriell användning monteras oftast en PLC i ett rackskåp, vilket kan ses i figur 19.

Figur 19: Rackmonterad PLC

En PLC fungerar genom att den först läser av hårdvaruingångarna. Ingångarnas värden skickas sedan till ett program som exekverar en programcykel. När exekveringen är klar skrivs utsignaler ut till PLC-enhetens utgångar för att ändra den inkopplade hårdvaran.

I standarden IEC-61131-3 finns det fem programmeringsspråk för att programmera en PLC där de fem grundspråken som kan användas är [23]:

• Sequential Function Charts (SFC)

• Ladder Diagram (LD)

• Instruction List (IL)

• Function Block Diagram (FBD)

• Structured Text (ST)

(21)

13

2.6 CODESYS som mjukvara

Roboten är programmerad med hjälp av programmeringsverktyget CODESYS V3.5 [24], skapat och utgivet av 3S-Smart Software Solutions. Programmeringsmiljön är både gratis och har stöd för en uppsjö av hårdvaror från olika tillverkare, vilket gjort den populär inom främst automation.

CODESYS är skapat för att möjliggöra programmering av olika typer av CODESYS-kompatibla PLC- enheter och stödjer därför samtliga programmeringsspråk i standarden IEC-61131-3 som nämns i avsnitt 2.5.

Vid installationen av CODESYS inkluderas ett flertal färdiga bibliotek för olika funktioner, vilket gör programmet lätt att komma igång med. CODESYS inkluderar även ett visualiseringsverktyg för att lätt kunna skapa ett användargränssnitt, ett så kallat HMI, samt ett simuleringsverktyg för att kunna simulera program utan hårdvara, vilket gör CODESYS till ett bra verktyg för

automationsuppgifter.

CODESYS har även stöd för att köra en Raspberry Pi som en PLC. Det som krävs för detta är att installera ett tillägg till CODESYS som gör att man kan ansluta, installera och uppdatera sin Raspberry Pi till en PLC. Tillägget inkluderar även programbibliotek för kompatibel hårdvara så som Raspberry Pi Camera, Adafruit PWM och MPU9150. Vidare så möjliggör tillägget att CODESYS kan kommunicera med Raspberry Pi-enhetens GPIO-stift, och kan även kommunicera över I²C och SPI. Till sist så tillhandahåller även CODESYS beskrivningar på hur man kan

programmera upp nya programbibliotek så att man exempelvis kan använda utrustning som kommunicerar via I²C [25].

2.7 Kommunikation via I²C

En del hårdvara i detta projekt använder sig av I²C. I²C är en digital tvåvägskommunikation, det vill säga både parterna kan prata med den andre. Kommunikationsnätverket består av en masterenhet och upp till 127 slavenheter (om 7 bitars minnesadressering används). För att kommunikation skall uppstå behövs två signalledningar som representerar SDA (datasignal) och SCL (klocksignal) [26].

En säkerhetsåtgärd som finns i I²C är att om en slavenhet skickar en signal så dras SDA låg. SDA kan inte själv ställa om sig till hög för att ta emot nya signaler. Detta möjliggör att flera enheter kan vara kopplade på samma I²C-buss. För att lösa detta problem används pull-up resistorer på både SDA och SCL-ledningen för att dra upp signalledningarna till en hög nivå [26].

Exempel på hur kommunikationen kan se ut ses i figur 20.

Figur 20: Exempel på I²C-kommunikation [27]

(22)

14

3. Arbetsmetod

En agil arbetsmetod är tillämpad vid skapandet av denna robot. Genom att använda befintliga delar och mjuk-och hårdvaror som använder sig av öppen källkod ges möjligheten att hitta mängder med information på Internet.

De mjukvaror som använts under projektets gång är följande:

• Python

• CODESYS v3.5 utvecklingsmiljö

• CODESYS för Raspberry Pi

• Raspbian v4.18

• Solidworks 2017

• Windows 10

• Powerpoint

• Word

• Adobe Illustrator

• Ultimaker cura

• Laserskärare

• 3D-skrivare

3.1 Design

Designen av roboten påbörjas genom att sammanställa data för den utrustning som finns tillgänglig, vilket är:

• 2x MD25 motorkort

• 4x EMG30 servomotorer

• Exide Powerfit S312/2.3 S batteri

• Raspberry Pi Camera

• Raspberry Pi 7" Touch Screen med fäste för Raspberry Pi

• Kompakt 71 signallampa

• 2x G23-sockel med stöd för UVC-lysrör på upp till 17 cm

En 3D-modell skapas sedan i SolidWorks (figur 21 och 22) med samtliga komponenter som referens för att kunna storleksanpassa chassit.

Den slutgiltiga designen blir två våningar i akrylplast där våningarna sammanfästs med hjälp av sex stycken M6 gängstänger och muttrar. Ett chassi för Raspberry Pi kameran skapas för att hålla denne på plats och utgår från måtten på kameran och en produktion i 3D-printer. Hålbilder skapas för MD25-korten, G23-socklarna, EMG30-motorfästena och gängstängerna i den undre våningen. Bredden på roboten anpassas efter hur långa servomotorerna är och längden anpassas för att få plats med både servomotorerna och två stycken lysrör med maxlängd 17 cm. Vidare skapas hålbilder för signallampan, touchdisplayen och det tidigare designade chassit för kameran i den övre delen. Höjden på roboten och längden på M6-stängerna bestäms sedan efter höjden på batteriet, den försänkta Raspberry-enheten och kopplingsplattan på batteriet.

Figur 21 och 22 presenter den färdiga designen med gott om plats för kopplingar av övrig hårdvara.

(23)

15 Figur 21: 3D-modell av roboten bakifrån/ovanifrån.

Figur 22: 3D-modell av roboten framifrån/underifrån.

3.2 Tillverkning, montering och koppling

De enda delarna som behöver tillverkas är våningarna i akrylplast, kamerachassit och rätt längder på M6-stängerna. Tillverkandet av våningarna görs i en laserskärare där de enskilda

komponenterna sparas i SolidWorks som DXF-filer. De importeras sedan in i Adobe Illustrator där onödiga streck och dylikt tas bort. Laserskäraren ställs in med rätt hastighet och filen skickas sedan över till själva laserskäraren. Laserskäraren laddas med 3mm akrylplast och rätt höjd ställs in innan skärningen påbörjas.

De två delarna av kamerachassit öppnas sedan separat i SolidWorks och sparas som STL-filer.

Filerna importeras sedan i Ultimaker Cura där support väljs för basen på grund av överhängande partier. Efter att allting ser bra ut sparas filen med de båda delarna ned på ett portabelt

lagringsutrymme som sedan matas in i 3D-skrivaren. 3D-skrivaren matas med rätt material och utskriften påbörjas.

(24)

16 Till sist i tillverkningen märks fem sträck på M6 gängstänger upp med 12 cm mellanrum.

Stängerna sågas sedan på sträcken där de ställen man sågade på eventuellt kan behöva filas på för att återfå gängfunktionaliteten.

Hjulen monteras på servomotorernas axlar genom att först borra upp hjulcentrumet från 3 mm till 5mm. Servomotorerna fästes sedan i respektive motorfästen och skruvas på i de färdiga hålbilderna i bottenplattan. MD25-korten skruvas på i de färdiga hålbilderna med hjälp av distanser. Batteriet fästes i bottenplattan med hjälp av dubbelhäftande tejp, där även kopplingsplattan fästes på batteriet med dubbelhäftande tejp. Gängstängerna skruvas fast i bottenplattan med hjälp av M6 muttrar. Kamerafästet och signallampan skruvas på i den övre våningen, medan touchplattan försänks i det förskärda hålet. Den övre våningen skruvas sedan fast på toppen av gängstängerna med hjälp av M6 muttrar och monteringen är färdig (figur 23).

När monteringen är färdig kopplas samtliga komponenter in enligt kopplingsschemat i figur 2.

Figur 23: Bild på den ihopmonterade roboten

3.3 Uppstart och konfiguration av Raspberry Pi

Följande avsnitt går igenom uppstarten och konfigurationen av Raspberry Pi-enheten. Det finns en installationsguide, ”Raspberry Pi with Standard Codesys V3 : First Steps” [25], som följer med vid nedladdning av ”CODESYS Control for Raspberry Pi SL” [28].

3.3.1 Installation av operativsystem

Det första som görs är att installera operativsystemet till Raspberryn. Detta görs genom att ladda ned den fulla versionen av installationsverktyget NOOBS från Raspberry Pi’s hemsida [29].

(25)

17 Installationsguiden för NOOBS följs sedan [30] där operativsystemet ”Raspbian Full” väljs och installeras. Installationen slutar med att ett lösenord väljs för operativsystemet. Välj ett personligt lösenord och spara detta då det kommer komma till användning senare.

3.3.2 Konfiguration av Raspbian

Raspbians olika gränssnitt är avstängda till en början vilken gör att dessa måste aktiveras. Starta upp terminalen och skriv ”sudo raspi-config” och tryck sedan enter. Stega ner till 5, Interfacing Options, och aktivera kamera, SSH och I²C. Operativsystemet kommer sedan vilja starta om, vilket godkänns.

Efter en ny uppstart installeras ett tangentbord för touchplattan genom att öppna terminalen.

Skriv ”sudo apt-get update” följt med ”sudo apt-get install matchbox-keyboard”. Tangentbordet installeras och hittas i kategorin ”Tillbehör” i operativsystemet.

3.3.3 Byte av I²C-adress

Alla MD25 motorkort kommer med samma I²C-adress, vilket innebär en krock i nätverket om flera ansluts samtidigt. Endast ett MD25-kort får vara inkopplat under denna process.

För att byta I²C måste ett script i Python skapas som sänder över rätt kommandon [31]. Öppna terminalen och skriv ”sudo apt-get install python{,3}-smbus”. Verktyget SMBus för Python 3 installeras på operativsystemet. Installera sedan i2c-tools genom att skriva ”sudo apt-get install i2c-tools” i terminalen.

Starta sedan programmet ”Thonny Python” och skriv in koden:

import smbus import time

bus = smbus.SMBus(1)

bus.write_byte_data(0x58, 0x10, 0xA0) time.sleep(1)

bus.write_byte_data(0x58, 0x10, 0xAA) time.sleep(1)

bus.write_byte_data(0x58, 0x10, 0xA5) time.sleep(1)

bus.write_byte_data(0x58, 0x10, 0xB4)

Spara scriptet på valfritt ställe, navigera dit du sparade filen och kör scriptet. I²C-adressen på den inkopplade MD25an har nu bytts och den andra MD25an kan nu kopplas in.

3.4 Installation av CODESYS i Windows

CODESYS laddas först ner via deras hemsida och installeras med hjälp av den medföljande dokumentationen [24].

3.4.1 Installera externa paket

Efter att CODESYS installerats laddas de externa paketen ”CODESYS control for Raspberry Pi”

[28], ”CODESYS SoftMotion” [32] och ”2-Axis MnJoystick” [33] ned. Samtliga paket installeras genom att starta upp CODESYS och navigera till Tools; ”Package Manager…”. Välj Install uppe i högra hörnet och välj de paket som laddats ned.

3.4.2 Implementera egna hårdvarubibliotek

Då CODESYS inte har stöd för de I²C-enheter som används i detta projekt så måste

implementationer skapas av användaren. CODESYS använder sig av en enhetsbeskrivningsfil (.devdesc.xml) och en biblioteksfil (.library) där biblioteksfilen innehåller det programmerade funktionsblocket som implementeras i huvudprogrammet.

(26)

18 En guide för att göra detta finns att tillgå [25] där motorstyrkortet MD25 implementeras genom att följa Bilaga 1, reläet RL08 implementeras genom att följa Bilaga 2 och tröghetssensorn MPU9250 implementeras genom att följa Bilaga 3.

3.4.3 Installera CODESYS på Raspberry Pi

Installationen av CODESYS på Raspberry Pi använder sig av nätverk och SSH. Koppla in Raspberryn i samma nätverk som den dator CODESYS är installerat på. Starta upp CODESYS och navigera till Tools; ”Update Raspberry Pi”. Skriv in användarnamnet pi och det lösenord som tidigare sattes.

Tryck på ”Scan” och välj Raspberry Pi. Installera sedan CODESYS genom att trycka på ”Install”

under ”CODESYS Runtime Package”.

3.5 Programmera robot

Öppna CODESYS och starta ett nytt ”Standard Project” med namnet ”Saneringsrobot”. Välj Raspberry Pi som enhet och FBD som programspråk.

3.5.1 Implementera I²C-enheter

De enheter som kommunicerar via I²C implementeras genom att följa Bilaga 4.

3.5.2 Joystickstyrning

Joysticksstyrningen implementeras genom att följa Bilaga 5.

3.5.3 MD25

Motorstyrningskorten implementeras genom att följa Bilaga 6.

3.5.4 Lampstyrning

Lamporna är analoga komponenter vars kommunikation sköts via reläet. Däremot så krävs programmering för att bestämma vilken lampa som ska lysa när. Denna funktion implementeras genom att följa Bilaga 7.

3.5.5 Relä

Reläet implementeras genom att följa Bilaga 8.

3.5.6 IR-sensor

IR-sensorn kommunicerar digitalt med envägskommunikation där den skickar att den får kontakt, eller skickar att den inte får kontakt. Sensorn implementeras genom att följa Bilaga 9.

3.6 Konfigurera HMI

Som HMI (Human Machine Interface) används CODESYS inbyggda verktyg ”Visualization” vars uppgift är att informera och integrera med användaren under den tid som roboten är igång.

Verktyget stödjer även att anslutas mot via valfri enhet genom ett webbgränssnitt, vilket möjliggör styrning av roboten genom exempelvis en smartphone.

HMI-gränssnittet, som kan ses i figur 24, är uppbyggt av två joysticks som styr roboten åt valfri riktning. Vidare så finns tre lampor som simulerar signallampan som sitter ovanpå roboten. Till sist finns en knapp som aktiverar/inaktiverar reläet där UVC-lamporna kopplas in.

(27)

19 Figur 24: Bild på HMI-gränssnittet som används

(28)

20

4. Resultat och analys

Projektets resultat är en robot byggd från egenskapade ritningar som styrs av en PLC i form av en Raspberry Pi. Roboten är byggd av plexiglas och gängstänger för att skapa våningar där hårdvara kan placeras och monteras. Vidare är roboten bestyckad med mecanumhjul för att möjliggöra omnidirektionell styrning. En bild på den färdiga roboten kan ses i figur 25. Vidare kan ritningarna för designen hittas som Bilaga 10 och 11.

Figur 25: En bild på den färdiga roboten

4.1 Omnidirektionella styrningsekvationer

För att möjliggöra omnidirektionell styrning används ekvationerna 1–4 från avsnittet Teori. En linjär ekvation skapades för att matcha motorernas hastighet (0–255) där -100 på joysticken skall motsvara 0 i hastighet och +100 skall motsvara 255 i hastighet. Punkterna plottades ut enligt figur 26 där X-axeln motsvarar joystickutslaget och Y-axeln utsignalen till motorstyrkorten. En rak linje drogs och konstanterna k och m räknandes ut enligt y = kx + m, vilket skapade funktionen y = 1,275x + 127,5. Implementation kan ses i avsnitt 3.5.2.

Figur 26: Graf med punkterna -100 och 100 plottade på X-axeln

0 50 100 150 200 250 300

-150 -100 -50 0 50 100 150

Y-axel (utsignal)

X-axel (insignal)

(29)

21

4.2 Huvudprogram

Robotens kod är skapad i CODESYS där ett funktionsblocksdiagram utgör huvudprogrammet.

Funktioner och hårdvara är sedan implementerade i huvudprogrammet i form av ett FBD med olika nätverk, vilket kan ses i figur 27 och 28. Samtlig programkod kan hittas som Bilaga 12 till och med 14.

Figur 27: Övre delen av huvudprogrammet med funktionsblocken Controller och två MD25or

Figur 28: Nedre delen av huvudprogrammet med funktionsblocken Relay, Gyro MPU9250 och Lamp

(30)

22

4.3 Analys av kravspecifikation och testscenarion

Nedan presenteras resultat från projektets kravspecifikation och de uppsatta testscenariona från avsnitt 1.4.1 och 1.4.2.

4.3.1 Analys av kravspecifikation

Analys av projektets kravspecifikation kan ses i tabell 2 där ett krav antingen är uppfyllt eller inte uppfyllt.

Tabell 2: Analys av kravspecifikation med motiveringar

Krav nr Specifikation Resultat

1 Roboten skall kunna styras i en omnidirektionell rörelse. Uppfyllt Motivering: Roboten är bestyckad med mecanumhjul enligt avsnitt 2.2.12 och

är programmerad med ekvationerna 1–4.

2 Roboten skall kunna sanera med hjälp av UVC. Inte uppfyllt

Motivering: Roboten är ej bestyckad med UVC.

3 Roboten skall kunna fjärrstyras med ett lämpligt gränssnitt över WiFi.

Uppfyllt Motivering: Roboten innehar har ett HMI enligt figur 24 som är åtkomligt via

valfri webbläsare på valfri enhet inom samma nätverk.

4 Robotens kod skall skrivas i CODESYS med en Raspberry Pi som PLC.

Uppfyllt Motivering: All programmering är gjord i utvecklingsmiljön CODESYS enligt

avsnitt 4.2 där en Raspberry Pi används enligt avsnitt 2.2.01 5 Roboten skall ha en säkerhetsfunktion som gör att UVC släcks vid

kontakt med en människa.

Uppfyllt

Motivering: En IR-sensor är implementerad enligt avsnitt 2.2.15 och 3.5.6 6 Roboten skall ha ett fungerande gyro för mätning av acceleration

och vinkelhastighet.

Uppfyllt Motivering: En tröghetssensor är ansluten enligt avsnitt 2.2.04 och är

programmerad enligt avsnitt 3.5.1 där graf kan ses i avsnitt 4.4.

7 Roboten skall ha en touchdisplay med HMI. Uppfyllt

Motivering: Roboten innehar en Touchdisplay enligt avsnitt 2.2.08 som har åtkomst till robotens HMI på samma vis som krav 3.

8 Roboten skall ha en signallampa som informerar omgivningen. Uppfyllt Motivering: Roboten innehar en signalstapel enligt avsnitt 2.2.09 som

kontrolleras enligt avsnitt 3.5.4.

Resultat: 7/8 krav uppfylldes under projektets gång.

4.3.2 Analys av testscenarion

Analys av projektets uppsatta testscenarion kan ses i tabell 3 där ett testscenario antingen är genomfört eller inte genomfört.

Tabell 3: Analys av testscenarion med motiveringar

Nummer Testscenario Resultat

1 UVC tänds och släcks genom att trycka på en knapp. Genomfört

(31)

23 Motivering: Robotens HMI har en knapp som styr reläet UVC-lamporna

kopplas in i enligt figur 24 där knappen är testad och funktionell.

2 Roboten skall styras via en alternativ enhet i samma nätverk. Genomfört Motivering: Roboten är testad att styras via en smartphone genom anslutning

till robotens HMI och samma nätverk.

3 Roboten skall köras runt två objekt i en åtta. Genomfört

Motivering: Roboten går att styra både framåt och roterandes.

4 Roboten skall köras i en fyrkantig rörelse kring ett objekt. Genomfört Motivering: Roboten går att styra både framåt, bakåt och sidledes

5 Robotens UVC släcks om en IR-sensor detekterar en människa. Genomfört Motivering: En IR-sensor är implementerad enligt krav 5 och testad där reläet

stänger de portar UVC-lamporna skall vara ansluta till vid kontakt med en människa.

Resultat: 5/5 testscenarion var genomförda efter projektets slut.

4.4 Grafer

Nedan presenteras accelerometerns X-värde i figur 29 där roboten körs framåt vid 27 sekunder, kör bakåt vid 42 sekunder och sedan kör framåt igen vid 46 sekunder.

Figur 29: Graf för accelerometerns X-värde i m/s2

4.5 Dimensioner

För robotens dimensioner, se tabell 4.

Tabell 4: Dimensioner för den färdiga roboten

Benämning Mått Enhet

Hjulbredd 232 mm

Hjulbas 266 mm

Längd 405 mm

Chassibredd 221 mm

(32)

24

Höjd (inklusive signaltorn) 332 mm

Höjd (exklusive signaltorn) 163 mm

Vikt (estimerad) 5 kg

4.6 Materialkostnad

En priskalkyl för robotens beståndsdelar presenteras i tabell 5.

Tabell 5: Priskalkyl för den färdiga roboten

Material Antal (styck) Pris (kr)

Akrylplastskiva (3mm) 1 169

Mecanumhjul - Paket med 4 st (Utgången produkt, motsvarande produkt har använts som prisexempel)

1 372,56

Motorstyrningskort MD25 2 475,70

EMG30 4 333,18

WERMA Signaltorn 1 1052,68

Raspberry Pi 2 Modell B 1 449

Raspberry Pi 7” display kit 1 745

Batteri Exide Powerfit (Utgången produkt, motsvarande produkt har använts som prisexempel)

1 279,30

Relä RLY08 1 419

Tröghetssensor MPU9250 1 150

Logiknivåkonverterare PCA9306 1 64,60

IR-sensor HC-SR501 1 49

Gängstång M6 1 30

Diverse småmaterial (estimerat) - 150

Totalt 6214,26

(33)

25

5. Diskussion och slutsatser

Robotik är ett brett forskningsområde där man aldrig kan få för mycket kunskap. För att bygga en robot krävs kunskap inom automation, programmering, elektronik, material med mera där största delen av projekttiden gick åt att studera och lära sig de olika områdena. Även de minsta delarna, exempelvis som att byta en I²C-adress på ett MD25-motorkort, tog oerhört lång tid att lära sig då inga kompletta manualer fanns för sådana operationer. Detta fick projekttiden att kännas oerhört kort, vilket i slutändan ledde till tidsbrist för att lära sig och implementera samtliga lösningar man hade velat.

Robotar byggda med CODESYS som bas finns sedan tidigare där exempelvis Emil Eriksson skapade en självbalanserande robot som examensarbete år 2016 [34]. Även robotar med omnidirektionell styrning finns [18]. Detta projekt kan därför ses som en utveckling av befintliga metoder där omnidirektionell rörelse har lyckats implementeras i CODESYS. Vidare finns det saneringsmaskiner idag [20], men inte som fjärrstyrda robotar. En vidareutveckling av detta projekt hade varit att modifiera roboten likt en robotdammsugare där den själv navigerat runt en yta och desinficerat.

5.1 Reflektion kring designen

Det första praktiska som gjordes i projektet var att ta fram en design till roboten. Eftersom Institutionen för tillämpad fysik och elektronik redan hade samtlig hårdvara på lager så kunde roboten snabbt måttanpassas efter den utrustning som skulle användas. I slutändan valdes plexiglas för chassit. En hög hållbarhet, lättbearbetat och en låg vikt gjorde plasten till ett bra val.

Ett orosmoment under designstadiet var de förhållandevis små hjulen. På grund av motorernas styrka så märktes det dock inte av i slutändan.

Designen i helhet är baserad på att få till en så öppen design som möjligt där funktion gått före utseende. På grund av den öppna designen så är det lätt att fästa komponenter och även felsöka.

Detta har varit till stor hjälp under projektets gång där spontan kabeldragning har kunnat göras för att testa olika komponenter.

5.2 Diskussion kring projektgenomförandet

Flera missöden har skett under projektets gång. Redan under designstadiet så konstruerades ett chassi för kameran med färdiga hålbilder i robotens övre plan. Dessvärre togs inte kopplingen mellan kameran och Raspberry Pi-enheten i beaktning, vilket slutade med att kopplingssladden blev för kort. Detta problem är lätt åtgärdat med en längre kopplingssladd. Olyckligtvis fungerade inte kameran överhuvudtaget, vilket gör det betydligt svårare att fjärrstyra roboten från

exempelvis ett annat rum. Detta gav kameradelen en låg prioritet för att hinna med resterande delar i projektet.

Vidare så lossnade även sladdar från servomotorerna på grund av tidigare dålig lödning. Detta åtgärdades genom att åter löda fast de lösa kablarna i servomotorernas kopplingskort.

Problem stöttes även på när reläkortet för lamporna skulle kopplas in. I detta skede var roboten fullt fungerande med testad styrning och projektet var i sitt slutskede, men när reläkortet kopplades in så kortslöts I²C-bussen på 5V sidan, vilket fick logiknivåkonverteraren och

motorstyrningskorten att gå sönder. Konverteraren byttes ut, men robotens funktionalitet har inte hunnit testas efter bytet på grund av tidsbrist.

Som jag nämnt tidigare i rapporten så har en agil arbetsmetod använts under projektets gång.

Detta har i efterhand varit den korrekta metoden att utföra arbetet på där mycket

programmering har skrivits om under projektets gång för att säkerhetsställa funktionalitet.

(34)

26

5.3 Analys kring måluppfyllnad

Gällande resultatet av projektet så uppnåddes sju av 8 krav, där fem av fem testscenarion var genomförda och lyckade. Eftersom beslutet togs att inte köpa in UVC på grund av den

säkerhetsrisk UVC innebär så blev ett av kraven orealistiskt att uppnå, det vill säga att sanera med hjälp av UVC. Projektets mål anser jag dock vara uppfyllt där roboten faktiskt blivit byggd utefter de krav som funnits, samt eftersom roboten är förberedd för UVC så skulle den även kunna sanera ytor om lampor köptes in. Rapporten är också väldigt detaljinriktad med steg-för- steg-guider som bilagor för att hjälpa framtida studenter med att bygga en liknande robot.

5.4 Framtida arbete

Vid fortsatt arbete av roboten skulle en kamera kopplats in och använts för att filma till HMI- gränssnittet, vilket hade gjort roboten mer mobil. CODESYS har även färdiga programbibliotek för att utnyttja en kamera, vilket gör att en kamera är lätt att implementera.

Vidare skulle även telekommandon kunnat implementeras till styrningen där ett exempel hade varit att trycka på en knapp för att roboten skulle svänga 90 grader. Detta hade varit möjligt med hjälp av det implementerade gyrot eller via registrerade enkodersignaler som insignal till en kinematisk modell för roboten.

Mätning av robotens nuvarande hastighet hade även varit bra att implementera i HMI- gränssnittet. Detta är möjligt att få till genom de tidigare nämnda enkodersignalerna som motorstyrningskorten kan registrera från servomotorerna.

5.5 Slutsats

En prototyp av en saneringsrobot har designats och byggts. Roboten har programmerats i CODESYS där även ett användargränssnitt skapats. Användargränssnittet kan nås via valfri enhet genom Wi-Fi och roboten kan på så sätt styras via exempelvis en smartphone.

En tröghetssensor är implementerad för att kunna läsa av robotens vinkelhastighet och acceleration.

Roboten är bestyckad med mecanumhjul, servomotorer och rörelseekvationer, vilket möjliggör omnidirektionell rörelse. Roboten går alltså att köra åt samtliga riktningar samt rotera.

Roboten är bestyckad med ett relä som styr signallampan och G23-socklarna. Signallampans gröna färg lyser då roboten är startad. Den orangea färgen lyser då roboten körs och den röda lampan lyser då reläportarna för socklarna är öppna.

Roboten innehar en IR-sensor som känner av värme. Vid utslag från sensorn så stängs reläportarna för socklarna.

Roboten har en touchskärm för att möjliggöra åtkomst till användargränssnittet och robotens operativsystem Raspbian.

5.6 Slutord

Att få lära sig mer om UVC var nyttigt i samband med Covid-19 som nu föregår. Eftersom UVC har kommit allt mer på tal så är det intressant att se i, vilket samband och hur effektivt det faktiskt är. Även CODESYS var nyttigt och roligt att lära sig mer om. Eftersom CODESYS är ett

gratisprogram för automationsimplementationer så finns det en mängd information att hämta från internet där även deras egna manualer ger den information man behöver för att lyckas implementera det mesta.

(35)

27 I slutändan var detta ett oerhört lärorikt projekt där lärdom inom alla möjliga områden

innefattades. Då framtiden går mot mer automatiserade lösningar så är det oerhört viktigt för framtidens ingenjörer att förstå sig på och lära sig mer om automation och robotar. Jag tror därför att detta projekt kan vara en bra grund för framtida ingenjörsstudenter att lära sig mer om automatiserade miljöer, elektronik och alla de övriga ämnen som rapporten tar upp.

References

Outline

Related documents

Programmet ¨ar uppbyggt med hj¨alp av tre olika agenter, RPAgent, ArduinoAgent och Observer. Varje Raspberry Pi har en ArduinoAgent och en RPAgent. RPAgent representerar var en last

Programmen som k¨ors p˚a Raspberry Pi 3 testar alla kanaler automatisk men programmen f¨or de andra enkortsdatorerna m˚aste k¨oras manuellt f¨or varje antal kanaler p˚a grund

In the analysis of the distribution of the number of followers for users at the time of posting their tweet there was a trend for both years that users that tweet using Bitly has

In the fast experiment with the tennis ball the camera mount speed was clearly an issue. As seen in Figure 19 the controller couldn’t manage the speed in this case and the ball

 Once the motors and the hardware has been chosen, make the prototype have as high of a centre of gravity as possible, by putting all heavy parts of the hardware as high as

The right picture in figure 3.3 demonstrates a stable and low power consumption in the stack.. Figure 3.3: The figure demonstrate the current in

Two popular object detecting methods have been selected and are evaluated by measuring detection accuracy, inference time and throughput (FPS)..

 On-/Off-Keying (OOK) - Av/på-skiftning där en bärvågs amplitud skiftar mellan två lägen. hushåll och fabriker.  Transciever - En enhet som kan sända och ta