EXAMENS ARBETE

Dataingenjör 180 hp, Mekatronikingenjör 180 hp
EXAMENSARBETE
Bottender
Drinkblandarmaskin
Camilla Lenfors & Mattias Sjögren
Examensarbete 15 hp
Halmstad 2015-07-08
Bottender
i
SAMMANFATTNING
Denna rapport beskriver framtagningen av en drinkblandarmaskin samt utvecklingen av
en applikation för att styra den. Syftet med projektet är att se om en billigare och mer
modulär produkt kan tas fram än de liknande produkterna som idag finns på marknaden.
Målet var att ta fram en fungerande prototyp, och utifrån den beräkna om en produkt
kan tas fram med en materialkostnad på under 5000 kr.
Vi ville göra en drinkblandarmaskin som skiljer sig mot liknande produkter i det avseende att den ska vara tillräckligt billig för att vara attraktiv för såväl företag som
privatpersoner. Den ska även utmärka sig genom att vara modulärt uppbyggd, d.v.s.
inte sitta ihop med hjälp av ett stort ramverk. Detta eftersom det ger större möjlighet
att anpassa den till små ytor. Det går även att hänga den upp på väggen för att spara
på så mycket utrymme som möjligt.
En applikation är framtagen för att fungera som användargränssnitt mot maskinen.
Applikationen kan köras på Android och PC, men kan endast kommunicera trådlöst från
en PC. Allt i applikationen är kompatibelt med android, utom just kommunikationen.
Det konstaterades att någon form av databas behövdes, och en lokal databas valdes på
grund av att det då ej krävs internetåtkomst.
Prototypen är klar till den grad att man i applikationen kan ange vilken drink som ska
göras, och en vagn kör då till rätt position i rätt tid. Ventilerna har på grund av tidsbrist
inte hunnits få fungerande, och de simuleras därför av lysdioder.
Slutsatser från detta arbete är att det är möjligt att göra en produkt under 5000 kr.
ii
Bottender
iii
ABSTRACT
This report describes the development of a drink mixing machine and the development
of an application to control it. The aim of the project is to see whether a cheaper and
more modular product can be produced than similar products currently on the market.
The goal was to develop a working prototype, and based on it decide whether a product
can be produced with a material cost of less than 5000 SEK.
We wanted to make a drink mixing machine which differs from similar products in the
sense that it must be cheap enough to be attractive to both companies and individuals.
It shall also distinguish itself by being modular, ie, not sit together using a large frame.
This because it provides a greater opportunity to adapt to small areas. You can also
hang it on the wall to save as much space as possible.
An application is designed to function as a user interface to the machine. The application
can run on Android and PC, but can only communicate wirelessly from a PC. Everything
in the applikation is compatible with Android, except for the communication.
It was found that some form of database needed, and a local database was chosen because
it does not need Internet access.
The prototype is complete to the extent that the application can specify the drink to be
made, and a carriage then moves to the right position for the right amount of time. The
valves have due to lack of time not been implemented, and is therefor simulated with
LEDs.
Conclusions from this work is that it is possible to make a product under the componentkost of 5000 SEK.
iv
Bottender
v
Innehåll
1 INLEDNING
1
1.1
Syfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Mål . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Problemställning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.4
Avgränsningar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.5
Krav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2 BAKGRUND
5
2.1
Grundsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Teoretiska lösningar & komponenter . . . . . . . . . . . . . . . . . . . . .
6
2.2.1
Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.2
Styrenhet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2.3
Mekatronik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3
Liknande produkter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1
The Inebriator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2
Barobot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.3
Bartendro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 METOD
17
3.1
Systemöversikt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2
Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.1
Hantering av data . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3
Styrenhet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4
Mekatronik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5
3.4.1
Transportering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.2
Flödesreglage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4.3
Plattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Systemspecifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 RESULTAT
4.1
27
Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.1
Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
vi
INNEHÅLL
INNEHÅLL
4.1.2
Applikationens formulär . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.3
Kommunikation- Applikation till Styrenhet . . . . . . . . . . . . . 32
4.1.4
Databas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.5
Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2
Styrenhet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3
Mekatronik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.1
Transportering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.2
Flödesreglage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3.3
Plattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.4
Systemdesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5
Budget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.6
Test och utvärdering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.6.1
Generellt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.6.2
Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.6.3
Styrenhet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.6.4
Mekatronik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.6.5
Övriga krav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5 DISKUSSION
51
6 SLUTSATS
55
7 BILAGOR
61
Bottender
vii
Figurer
1.1
Exempel på coctailmixande robot, Barobot [1]. . . . . . . . . . . . . . . .
1
2.1
Systembild över grundsystemet för projektet. . . . . . . . . . . . . . . . .
5
2.2
Exempel på hur en stationär lösning på produkten kan se ut. Vätskan
transporteras via t.ex. slangar till glaset. . . . . . . . . . . . . . . . . . . .
8
Exempel på hur en vagnlösning kan se ut. Glaset transporteras på en vagn
eller plattform med hjälp av en transportanordning. . . . . . . . . . . . .
8
Bild på en likströmsmotor, och dess delar statorn och rotorn. För att byta
rotationsriktning på en likströmsmotor så byter man strömriktningen [15].
9
2.5
Ett schema på hur en H-brygga kan se ut [19].
9
2.6
Ventiler i genomskärning. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.7
Lastcellen ändrar sin utspänning när en kraft appliceras på dess ena sida
[21]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8
Bild på en glidskena (Grå) med en glidkoss (Grön) i. . . . . . . . . . . . . 11
2.9
Bild på The Inebriator, en liknande produkt [23]. . . . . . . . . . . . . . . 12
2.3
2.4
. . . . . . . . . . . . . . .
2.10 Bild på Barobot, en liknande produkt [1]. . . . . . . . . . . . . . . . . . . 13
2.11 Barobots system [1]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.12 Bild på Bartendro, en liknande produkt [24]. . . . . . . . . . . . . . . . . 15
3.1
Enkel översikt över projektets delsystem.
3.2
Översikt över Delsystem 1- Applikation. . . . . . . . . . . . . . . . . . . . 20
3.3
Översikt över Delsystem 2- Styrenhet. . . . . . . . . . . . . . . . . . . . . 21
3.4
Skiss på hur transportsystemet är tänkt att se ut. . . . . . . . . . . . . . . 22
3.5
Översikt över Delsystem 3- Transportering. . . . . . . . . . . . . . . . . . 23
3.6
Bild över hyllkonstruktionen. . . . . . . . . . . . . . . . . . . . . . . . . . 24
viii
. . . . . . . . . . . . . . . . . . 18
FIGURER
FIGURER
3.7
Översikt över Delsystem 4- Flödesreglage. . . . . . . . . . . . . . . . . . . 24
3.8
Översikt över Delsystem 5- Plattform. . . . . . . . . . . . . . . . . . . . . 25
3.9
Sammanfattande systemspecifikation där samtliga delsystem ingår. . . . . 26
4.1
Bild på applikationens struktur. För att undvika att alla formulär är beroende av varandra sätter ett formulär värden i nästa formulär och visar
det, istället för att även hämta värden från det formuläret. . . . . . . . . 28
4.2
Karta över huvudmenyn och inställningsmenyn. . . . . . . . . . . . . . . . 28
4.3
Bild på formuläret BaseForm. BaseForm är ett formulär vilket alla andra
formulär (som visas i applikationen) ärver av. Det innebär att när ett nytt
formulär skapas som TBaseForm istället för som vanligtvis, TForm, så
kommer formuläret redan från början att se ut som BaseForm samt ha alla
dess funktioner utan att behöva dess kod. Till vänster syns huvudmenyn,
och till höger inställningsmenyn. Dessa är vanligtvis dolda tills klick på
iconerna ovanför dem. Endast en syns åt gången. . . . . . . . . . . . . . . 29
4.4
Bild på formuläret Drinkform. Drinkform visar en lista över drinkrecept
(vilka recept som visas bestäms av vilken flik man är inne på). Till höger
visas den valda drinkens information. Härifrån man kan skapa/ändra och
ta bort ett drinkrecept, (Skickas då till EditDrinkForm) samt starta tillverkningen av drinken (sker i MakeDrinkForm). . . . . . . . . . . . . . . . 30
4.5
Bild på formuläret BottlesForm. BottlesForm visar en lista över upphängda
ingredienser. Det går att ändra ingredienserna och klicka på ok för att
utföra ändringen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.6
Bild på formuläret InCabinetForm. I InCabinetForm kan man lägga till
vilka ingredienser som finns hemma/ i baren. Här kan man även skapa/ändra eller ta bort ingredienser (man skickas då till EditIngredienceForm). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.7
Applikationen skickar starttecken, kommandotecken och eventuell data till
styrenheten via en Com-Port. Sedan väntar den på svar från styrenheten
i form av Ack eller Nack. Om Ack skickas tillbaka så väntar den på all
eventuell data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.8
Bilden visar de kommandotecken som anger vilket kommando som ska
utföras. Både applikationen och styrenheten har samma kod för detta, då
de måste ha samma tecken för samma kommandon för att fungera. . . . . 33
4.9
En enkel modell över databasstrukturen. För mer detaljerad modell, se
Appendix B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.10 Exempel på en fråga till databasen- I funktionen formuleras en fråga via
queryn med hjälp av FDQuery.Add(’Ett kommando, i detta fall Delete och
From position’); När hela frågan är klar, ofta av flera Add(), exekveras
den. Gick allt bra retuneras True. . . . . . . . . . . . . . . . . . . . . . . . 35
Bottender
ix
FIGURER
FIGURER
4.11 Exempel på hur koden ser ut då en ny ingrediens ska sparas. . . . . . . . 35
4.12 En bild på simulatorn när den blandar en drink som beställts via applikationen. Glaset förflyttar sig till rätt flaska och en animering av vätska
visas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.13 Via var sin UDPServer broadcastar båda applikationerna ut ett meddelande. Först bottender-applikationen, sedan simulator-applikationen.
Via svaret från simulatorn kan dess IP-adress maskas ut och sättas som
TCPClientens Host. På så sätt kan kommunikation via TCP upprättas. . 37
4.14 Resultat Delsystem 1- Applikation. . . . . . . . . . . . . . . . . . . . . . . 37
4.15 Bild på hur koden i styrenheten ser ut för att hantera inkommande tecken. 38
4.16 Översikt över Delsystem 2- Styrenhet. . . . . . . . . . . . . . . . . . . . . 39
4.17 Hur konstruktionen av ramverket är uppbyggt. . . . . . . . . . . . . . . . 39
4.18 Elschema på stegmotor styrningen byggt från L298 IC krets [34]. . . . . . 40
4.19 Systembild på hur transportsystemet fungerar. . . . . . . . . . . . . . . . 41
4.20 Bild på hyllan där flaskorna sitter fast med kardborreband och lysdioder
används för att simulera vätskeflöde. . . . . . . . . . . . . . . . . . . . . . 41
4.22 Elschema på styrning av magnetventil. . . . . . . . . . . . . . . . . . . . . 42
4.23 Elschema på förstärkning från lastcell till styrenhet via en OP- förstärkare. 43
4.24 Översikt över flödesreglaget. Systemet visar att en lysdiod får en digital
signal för att öppna sig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.25 Bild på hur plattformen ser ut i Catia. . . . . . . . . . . . . . . . . . . . . 44
4.26 Bilden visar hur konstruktionen är uppbyggd mellan vagn och plattform
med lastcell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.27 Översikt över Delsystem 5- Plattform. . . . . . . . . . . . . . . . . . . . . 44
4.28 Bilden visar resultatet av prototypen. . . . . . . . . . . . . . . . . . . . . 45
4.29 Bild på den klara prototypen. . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.1
Skriven av Mattias Sjögren, Mekatronikingenjör och Camilla Lenfors, Dataingenjör. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Bottender
x
FIGURER
Bottender
FIGURER
xi
Tabeller
3.1
För- och nackdelar med databas. . . . . . . . . . . . . . . . . . . . . . . . 19
3.2
Arduino Mega 2560 jämförd med Raspberry Pi B. . . . . . . . . . . . . . 20
3.3
De olika lösningarna för transportering jämförda mot varandra. . . . . . . 21
3.4
Jämförelse mellan mekaniska och magnetiska ventiler. Priser varierar mycket beroende på kvalité. Ofta är mekaniska ventiler billigare[29] än magnetventiler[30]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1
Tabellen visar hur signalen ser ut till motorstyrningen. . . . . . . . . . . . 40
4.2
Tabellen visar vad kostnaden för prototypen kostar med dess olika komponenter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
xii
TABELLER
Bottender
TABELLER
xiii
Kapitel 1
INLEDNING
Denna rapport redogör för en prototyp som ska kunna blanda drinkar enligt önskemål,
med andra ord en drinkblandarmaskin. Prototypen ska kunna användas som ett redskap
för bartenders eller som underhållning samt redskap för privatpersoner.
Idén till detta projekt kommer framförallt från diskussioner om att det tar alldeles för
lång tid att beställa en drink i barer och på krogar. Om man dessutom sätter sig i
bartenderns situation så kan det vara väldigt stressigt i vissa situationer.
Det finns redan ett par varianter av en sådan produkt (se Figur 1.1), men det är sällan,
om ens någonsin, man faktiskt ser en sådan användas i vardagen. Detta kan bero på att
de ofta är väldigt stora och otympliga, men framförallt eftersom de kan vara dyra att
producera.
Figur 1.1: Exempel på coctailmixande robot, Barobot [1].
Tanken med denna produkt är att den till skillnad från många av de redan existerande
liknande produkterna ska vara så billig som möjligt att producera, samt att den ska vara
modulbaserad. Den ska vara modulbaserad eftersom den då kommer att vara enklare att
1
1.1. SYFTE
KAPITEL 1. INLEDNING
integrera i barer och liknande. Även i de barer med lite utrymme ska det gå att enkelt
finna utrymme åt maskinen.
1.1
Syfte
Projektets syfte är framförallt att undersöka om en billigare och smidigare produkt kan
göras än de liknande produkter som idag finns ute på marknaden. I detta projekt kommer
endast en prototyp tillverkas, för att kunna svara på ovanstående fråga. Ett annat syfte
är att hitta ett sätt att underlätta arbetet för bartenders, samt minska kötider på barer
och restauranger. Produkten är även tänkt att fungera som underhållning för gäster. Det
är även tänkt att produkten ska kunna införskaffas av privatpersoner som ett redskap
såväl som underhållning.
1.2
Mål
Målet med projektet är att skapa en fungerande prototyp som kan blanda minst två
drinkar. Ett annat mål är att prototypen ska vara så modulär som möjligt samt vara
enkel att vidareutveckla. En stor del av målet är även att produktens komponenter ska
kosta under 5000 kr att köpa in, utifrån beräkningar på prototypen.
1.3
Problemställning
Här redogörs de frågor som behöver tas ställning till i projektet.
• Vad kan göras annorlunda i förhållande till liknande projekt för att få produkten
billigare?
• Vilken hårdvara är lämplig som styrenheter?
• Hur ska recept och ingredienser hanteras i applikationen?
• Vilket är det bästa sättet att få vätskan i glaset?
• Hur ska flödesreglaget utformas och fungera?
1.4
Avgränsningar
Nedan skrivs de tankar och idéer som inte kommer att tas hänsyn till i detta projekt.
• Stor mängd möjliga drinkar- Då denna rapport avser prototypen begränsas antalet
möjliga drinkar till minst två, men detta bör naturligtvis ökas vid produktion av
klar produkt.
Bottender
2
1.5. KRAV
KAPITEL 1. INLEDNING
• Ismaskin- Bra tillägg till maskinen om köparen var villig att betala en större summa
pengar, men detta kommer inte implementeras i prototypen då detta skulle höja
kostnaden avsevärt.
• Inloggningssystem- För en mer personlig upplevelse med favoritrecept och egna
recept.
• Mixer- För möjlighet till mixade drinkar.
• Effektkontoll-I projektet kommer det inte tas hänsyn till hur mycket energi som
krävs för att driva prototypen eller produkten, men detta är något som är viktigt
vid vidareutveckling och produktion.
• ID-kontroll- För självbemanning.
• Extern kylbehållare- För att hålla framförallt alkoholfria drycker kylda för längre
hållbarhet och godare drinkar.
• Fler vagnar- För snabbare resultat.
• Enklare påbyggnadsansatser- Speciella sammankopplingsansatser skulle kunna implementeras på produkten för enklare utbyggnad.
• Hyllansats till transportsystem- För uppsättning på vägg.
• Loggning av förbrukning och produktion- För att kunna sammanställa statistik
över t.ex. vilka drinkar som har störst resp. minst efterfrågan. Ett sätt att i förväg
kunna beräkna vad som behövs köpas in.
• Automatkalibrering- Maskinen kan automatiskt synka position eller liknande.
1.5
Krav
För att kunna utforma en prototyp behövs det riktlinjer att gå efter. Därför framtas
krav som används till motivation för de val av komponenter och metoder som väljs till
projektet. Nedan punktas de viktigaste och mest generella kraven:
• Inget spill av vätska utanför glaset ska förekomma.
• Användaren ska i applikationen kunna välja mellan de drinkar där ingredienser
finns för tillverkning.
• Prototypen ska kunna göra minst två olika drinkar.
• Modulbaserad (Delsystem 1, 3 och 4 kommer inte att sitta ihop med varandra,
mer än via en sladd mellan Delsystem 3 och 4).
• Produktens material får inte (utifrån beräkningar på prototypen) överstiga 5000
kr.
För övriga krav se Appendix A.
Bottender
3
1.5. KRAV
Bottender
KAPITEL 1. INLEDNING
4
Kapitel 2
BAKGRUND
Den lösning som används på restauranger och barer är att personalen blandar alla drinkar. När en drink ska blandas så måttar personalen upp ingredienserna i ett centilitermått, sedan ner i glaset. Ett annat sätt som används är att de använder sig av
”freepouring”, vilket innebär att vätskan hälls upp direkt ifrån flaskan ner i glaset med
hjälp av en droppkork.
Oavsett vilken teknik som används finns det fortfarande en risk att mängden inte blir
exakt rätt. Dessutom är det tidskrävande att hälla upp i ett centilitermått, hälla över
det i ett glas, och sedan skölja ur måttet. Föresatsen är att dessa nackdelar ska undvikas
i detta projekt.
2.1
Grundsystem
Redan från början var tanken med projektet att en applikationsstyrd maskin skulle kunna
blanda drinkar till användaren. Från detta kan slutsatsen dras att ett sätt att kommunicera mellan applikationen och maskinen behövs. Även de flesta liknande produkter har
detta grundsystem. Som kommunikation mellan applikationen och maskinen, eller ”mekaniken”, behövs en styrenhet, d.v.s. en mellanhand som kan förmedla informationen
från applikationen till mekaniken på rätt sätt (se Figur 2.1).
Figur 2.1: Systembild över grundsystemet för projektet.
5
2.2. TEORETISKA LÖSNINGAR & KOMPONENTER KAPITEL 2. BAKGRUND
2.2
2.2.1
Teoretiska lösningar & komponenter
Applikation
En applikation används ofta i likande projekt för att användaren ska kunna interagera
med maskinen på ett smidigt sätt. Till exempel kan användaren i applikationen välja
vilken drink som ska skapas eller spara egna recept. En applikation kan köras från olika
plattformar beroende på hur den har utvecklats, t.ex. finns det Android-applikationer
eller Windows-applikationer. Det finns även applikationer som har stöd för flera olika
plattformar.
Databas
Ett sätt att kunna hantera alla recept, ingredienser och liknande i applikationen är
nödvändigt. Det vanligaste sättet att hantera stora mängder information på är med
hjälp av en databas.
En databas1 kan användas för att lagra större mängder data utan att behöva hårdkoda
in den i applikationen. En databas ger många fördelar, såsom tillgång till samma information från flera olika enheter samtidigt, samt att information lätt kan ändras eller
sorteras efter behov. Då databasen ligger på en server så behövs tillgång till Internet för
att få åtkomst till den.
En lokal databas fungerar i grunden som en vanlig databas, med det undantaget att
den är unik för varje enhet. D.v.s. att om någonting ändras i databasen så kommer inte
den ändringen att förkomma i en annan enhet med samma applikation, då den har sin
egen databas. En lokal databas behöver inte tillgång till Internet för att vara åtkomlig,
eftersom den ligger i enheten som är kopplad till den.
Det går att koda in all data direkt i applikationen, så att ingen databas behövs. Det går
då inte att ändra på någon information. Eller så kan all information läggas i en textfil,
som sedan itereras över för att hämta in informationen till applikationen. Dessa två sätt
är dock inte smidiga, speciellt inte om det ska sparas mycket information.
Kommunikation mot styrenhet
Kommunikation mellan applikation och styrenheten kan göras på olika sätt, t.ex. skulle
en USB-kabel kunna användas, men det beror på vilken plattform applikationen körs på.
Om den körs på Windows 32 bitars eller Windows 64 bitars plattform så fungerar det
mest sannolikt med en USB-kabel typ A hane till typ B hane. Dock är det inte säkert
att det fungerar direkt via kabel med andra plattformar. Dessutom hindrar en sladd
rörelsefriheten mer än Bluetooth eller WiFi.
Bluetooth är ett alternativ på trådlös kommunikation när situationen inte kräver snabbhet, [2], till exempel vid användande av hörlurar, högtalare, kommunikation mellan
android-enheter mm. Bluetooth är inte beroende av tillgång till Internet, dock kan inte
de kopplade enheterna vara på för långt avstånd från varandra, eftersom de då tappar
1
En samling information, organiserad så att det är lätt att söka efter, hämta och ofta även ändra
enskilda bitar information.
Bottender
6
2.2. TEORETISKA LÖSNINGAR & KOMPONENTER KAPITEL 2. BAKGRUND
kontakten. Hur långt de når beror på vilken klass enheten har. Det finns klass 1, 2 och
3, där den förstnämnda är den med längst avstånd. Den når ca 100 meter, medan klass
2 når ca 10 meter, och klass 3 endast ca 1 meter. Klass 2 är den vanligast förekommande
klassen. [3]
WiFi2 är en snabb och säker trådlös kommunikation , som dessutom fungerar på större
avstånd än Bluetooth[4]. Vanligast WiFi idag[5] är typ g som når ca 35 meter inomhus
och 95 meter utomhus[6], och typ n som når ca dubbelt så långt. Det är svårt att
uppskatta längden exakt då det finns många saker som spelar in. T.ex. påverkar det om
väggar eller andra solida objekt är mellan accesspunkten och användaren[7].
2.2.2
Styrenhet
För att kunna kommunicera mellan applikationen och maskinen behövs en styrenhet.
Styrenhetens uppgift är att ta emot instruktioner från applikationen och sedan skicka
vidare dem till maskinens olika delar. Det finns många olika komponenter att använda
som styrenhet till liknande projekt, vanligt förkommande sådana är Arduino och Raspberry Pi.
Arduino[8] är ett mikrokontrollerkort vilket använder sig av en Atmel AVR mikrokontroller. Arduino har standardiserade kopplingspunkter som även tillåter shields att kopplas
på kortet. Shields är en utbyggnad av huvudkortet som ger användaren ytterligare funktioner. Arduino erbjuder öppen källkod och en utvecklingsmiljö där program till kortet
kan skrivas[9].
Raspberry Pi är inget mikrokontrollerkort, utan en enkortsdator,[10] men den kan användas
på samma sätt som ett Arduinokort i detta projektet. Raspberry Pi är dock som sagt
en liten dator, och i och med det mycket mer komplext än ett mikrokontrollerkort. Den
kan i princip allt ett Arduinokort kan, men är inte lika simpel att använda. Arduino
rekommenderas därför ofta för de som inte är vana vid styrenheter sedan tidigare.[11]
2.2.3
Mekatronik
Själva mekaniken för projektet utgörs framförallt av ett sätt att transportera glaset till
vätskan/ vätskan till glaset, samt ett sätt att kontrollera flödet från de olika flaskorna.
Andra utmaningar är bl.a. positionering och sätt att upptäcka när en flaska är tom.
Transportering
Det finns två metoder som framförallt används vid liknande projekt för att hantera
transportering av vätskan/ glaset.
Lösning där vätskan förs till glaset
En metod är att vätskan via t.ex. slangar transporteras till glaset (se Figur 2.2). Vätskan
kan då pumpas upp ur flaskorna med hjälp av en kompressor eller pumppump. Ett annat
2
Wireless Fidelity
Bottender
7
2.2. TEORETISKA LÖSNINGAR & KOMPONENTER KAPITEL 2. BAKGRUND
sätt är att ta hjälp av gravitationskraften genom att ha flaskorna upp och ner ovanför
glaset.
Figur 2.2: Exempel på hur en stationär lösning på produkten kan se ut. Vätskan transporteras via t.ex. slangar till glaset.
Lösning där glaset förs till vätskan
Det andra alternativet är att använda en vagn/plattform eller ett rullband som transporterar glaset till rätt position. Man kan då placera t.ex. en motor på vagnen, som sedan
driver den genom att ha hjul fästa under vagnen. Ett annat alternativ är att placera
motorn vid sidan av eller under transportsträckan, koppla motorn till kuggremshjul och
kuggrem (se Figur 2.3). En plattform eller vagn fästs i remmen och förflyttas på så vis
synkront med remmen.
Figur 2.3: Exempel på hur en vagnlösning kan se ut. Glaset transporteras på en vagn
eller plattform med hjälp av en transportanordning.
Motor
För att kunna använda en vagnlösning behövs en motor. En motor är en maskin som
omvandlar en energi till mekanisk energi [12]. Till exempel så används kemisk energi i
en bilmotor för att få den mekaniska energin. Det finns även motorer som använder sig
av rörelseenergi eller elektrisk energi.
Det finns olika typer av motorer. En likströmsmotor är en motor som använder sig av
elektrisk energi i form av likriktad elektrisk ström som sedan omvandlas till rörelseenergi
[13]. Likströmsmotorn är uppbyggd av en rotor och en stator (se Figur 2.4). Rotorn är
den axel som roterar i motorn och som sedan kan kopplas till ett hjul. På rotorns axel
sitter det poler, dessa poler består av elektromagneter som matas med en likströmskälla.
Statorn är höljet som är runt om rotorn, i staton finns det en magnet som påverkar
startons poler. Statorns magnetpoler byter konstant polaritet, vilket resulterar i att de
Bottender
8
2.2. TEORETISKA LÖSNINGAR & KOMPONENTER KAPITEL 2. BAKGRUND
jagas av rotorn, och på så sätt uppstår rotation. När en likströmsmotor är spänningssatt
så rör den sig i kontinuerlig drift och slutar inte rotera fören spänningen slås av. För att
byta rotationsriktning på en likströmsmotor så byter man strömriktningen[14].
Figur 2.4: Bild på en likströmsmotor, och dess delar statorn och rotorn. För att byta
rotationsriktning på en likströmsmotor så byter man strömriktningen [15].
En annan typ av motor är stegmotor [16], eller digital-motor. De körs inte kontinuerligt
utan den tar steg för steg [17]. Stegmotorn består av en stator och en rotor. Statorn
består av ett antal olika lindningar som spänningssätts i olika tillfällen för att dra till
sig rotorn. Rotorn har “tänder” som förflyttar sig ett steg till den lindning som är
magnetiserad. När rotorn tar ett steg så förflyttar sig den ett vinkelsteg om det finns
fler tänder och lindningar så blir det ett mindre vinkelsteg som bidrar till jämnare
förflyttning. Stegmotorer används där hög precision är avgörande.
En stegmotor kan vara antingen bipolär eller unipolär. En bipolär motor använder hela
sin lindning per fas medans den unipolära har en sladd som delar upp den i två delar.
Unipolär har tunnare lindning som gör att mer metall tråd behövs och det resulterar i
att resistansen ökar. Bipolär behöver mer komplicerad styrning som gör att kostnaden
ökar för styrtekniken som ska användas [18].
Motorstyrning
För att driva en motor av någon sort från en styrenhet behövs det ofta någon typ av
motorstyrning. H-bryggan är en vanlig konstruktion för att driva likströmsmotorer och
stegmotorer i båda riktningarna. (Se Figur 2.5).
Figur 2.5: Ett schema på hur en H-brygga kan se ut [19].
H-bryggan fungerar så att om S1 och S4 är tillslagna så snurrar motorn medurs. För att
få motorn att snurra moturs så ska S3 och S2 vara tillslagna. S1 och S2 får inte vara
tillslagna samtidigt för då blir det en kortslutning, samma sak gäller för S3 och S4.
Bottender
9
2.2. TEORETISKA LÖSNINGAR & KOMPONENTER KAPITEL 2. BAKGRUND
Flödesreglage
För att kontrollera flödet ur flaskorna så behövs någon typ av reglage, som kan släppa
igenom vätskan exakt vid rätt tillfälle och i exakt rätt mängd. De sätt som nästan
uteslutande används vid liknande lösningar är med hjälp av ventiler. Det finns dock
andra lösningar för att kontrollera vätskeflödet, t.ex. med hjälp av en pump. Man pumpar
då upp vätskan från flaskorna ner i glaset.
Ventil
En ventil är en komponent som används för att reglera öppningsarean i ett system
med t.ex gas eller vätska i. Genom att öppnas helt eller stängas helt kan den reglera
genomströmningen av gasen eller vätskan.
En magnetventil använder sig av elektricitet för att bygga upp ett magnetfält som gör
att ventilen kan släppa igenom ett medium. Den körs i två olika lägen, när spänning är
påslagen eller avslagen. När det finns spänning öppnas en sluss och gas eller vätska kan
ta sig igenom. Avslagen spänning gör att slussen är stängd och varken gas eller vätska
kan inte ta sig förbi. (Se Figur 2.6a).
En mekanisk ventil behöver en yttre kraftpåverkan för att ändra sitt läge. Den mekaniska
ventilen kan anta alla lägen mellan öppen och sluten. En sluten ventil släpper inte igenom
gas eller vätska, sen när en kraft börjar vrida på hjulet som styr öppningsarean på
ventilensläpps mediet igenom (se Figur 2.6b).
(a) I en magnetventil bygger elektricitet upp
ett magnetfält som gör att ventilen kan släppa
igenom ett medium [20].
(b) En mekanisk ventil behöver en yttre
påverkan för att släppa igenom ett medium.
Figur 2.6: Ventiler i genomskärning.
Igenkänning av tom flaska
Några olika metoder man kan använd för att maskinen ska upptäcka att en flaska blir
tom. En rörelsesensor registrerar om någonting kommer ut igenom flaskorna. Om det
förväntas att det ska komma något och det inte gör det så innebär det att flaskan är
slut. En lastcell fungerar som en våg kan användas, om meningen är att vikten ska öka
med ett par gram när vätskan ska fylla på glaset och vikten inte stämmer överens med
det värdet som förvändas så indenterar det att flaskan med vätskan är slut.
Lastcell
En lastcell är en kraftgivare som mäter hur mycket kraft som trycker på änden. Den får
en inspänning som går till känsliga töjningssensorer och från töjningssensorer kommer
en utspänning som varierar beroende på hur mycket kraft som lastcellen utsätts för (se
Bottender
10
2.2. TEORETISKA LÖSNINGAR & KOMPONENTER KAPITEL 2. BAKGRUND
Figur 2.7).
Figur 2.7: Lastcellen ändrar sin utspänning när en kraft appliceras på dess ena sida [21].
Rörelsesensor
Det finns olika varianter på rörelsesensorer eller rörelsedetektorer”. Rörelsesensorerna
använder sig antingen av ljud eller ljus för att detektera rörelse. Exempel på en rörelsesensor
som använder sig av ljus för att detektera om någonting rör sig är en lasergivare. Den
ger en signal om någonting bryter strålen.
Positionering
Hur kan man veta om glaset befinner sig på rätt plats under rätt flaska vid val av vagneller rullbandslösning? Det finns flera sätt att hålla reda på positionen av glaset, där de
enklaste är med hjälp av räkning av stegmotorns steg, med en gränsbrytare eller med
sensorer.
Gränsbrytare
Gränsbrytare fungerar så att när den mekaniska armen trycks så byter switchen sitt läge
och en spänning kan passera. På så sätt kan man få en signal när ”armen” berörs.
Avståndssensor
En avståndssensor kan med hjälp av ultraljud mäta avstånd till föremål. En sensor med
upp till fyra meters räckvidd kan ha en känslighet på 3mm[22]. Detta varierar naturligtvis
beroende på komponentens kvalité.
Vagnkonstruktion
Vid lösning där glaset transporteras till vätskan kan en vagn användas som plattform
till glaset. Vagnen kan förflyttas med hjälp av hjul eller glidskenor.
Glidskenor
Glidskenor fungerar så att två skenor löper parallellt utmed varandra. I mitten av båda
skenorna sitter varsin glidkloss, som med låg friktion glider längstmed skidorna. (Se
Figur 2.8)
Figur 2.8: Bild på en glidskena (Grå) med en glidkoss (Grön) i.
Bottender
11
2.3. LIKNANDE PRODUKTER
2.3
2.3.1
KAPITEL 2. BAKGRUND
Liknande produkter
The Inebriator
Ett liknande projekt är “The Inebriator” [23] (Se Figur 2.9). Den använder en FEZ
Panda II för att lagra alla recept. Den skickar vidare informationen till ett Arduino
Mega 2560- kort som sköter styrningen av elektroniken.
Figur 2.9: Bild på The Inebriator, en liknande produkt [23].
För att driva glaset använder de en stegmotor, eftersom den underlättar acceleration
och retardation och möjliggör hög hastighet utan att spilla.
Till blanddrickan använder de en kylbox för att hålla drycken kall. Då kylboxen är
placerad på marken använder de gas för att få upp vätskan till glaset. Det går till så att
ett tryck byggs upp under vätskan, och när ett tillräckligt högt tryck uppnåtts öppnas
en elektrisk ventil och vätskan tvingas då upp till glaset.
För att förhindra oavsiktlig användning av maskinen sitter en kraftgivare på vagnen som
indikerar om ett glas finns på den eller inte. Om inte ska processen inte gå att starta. De
har olika LED-lampor inkopplade, vilka indikerar olika saker så som att programmet körs
och att programmet är färdigt. De använder sig av mekaniska ventiler för reglering av
vätskeflödet till glasflaskorna. För att öppna ventilerna använder de en likströmsmotor
med en inbyggd växellåda.
Fördelar
• Mekaniska ventiler med tryckarm ger större precision.
• Krävs ingen androidenhet för att användas.
• Ramen gör den flyttbar.
Nackdelar
• Ett inbyggt receptsystem gör det svårt att lägga till drinkar.
Bottender
12
2.3. LIKNANDE PRODUKTER
KAPITEL 2. BAKGRUND
• Mekaniska ventiler kan medföra att vätskan fortsätter rinna vid strömavbrott.
• Mekaniska knappar kan gå sönder, samt att man måste vara brevid maskinen för
att kunna starta en drink.
• Ramen hindrar utbyggnad samt gör att maskinen tar mer utrymme än nödvändigt.
2.3.2
Barobot
Denna produkt kan ha 12 flaskor samtidigt[1]. Den körs på en öppen källkod, häller upp
en drink med milliliter noggrannhet. Vanliga flaskor ska passa och vätskor som alkohol,
kolsytande drycker, mjölk ska kunna användas i den. Det behövs ingen rengöring mellan
drinkarna. En pekskärm används som användargränssnitt. LED-belysning indikerar att
en drink är klar samt används för olika funktioner. Det är smidigt att byta flaskorna,
och maskinen är lätt att transportera. (Se Figur 2.10).
Figur 2.10: Bild på Barobot, en liknande produkt [1].
Glaset förflyttas på en vagn under de olika flaskorna. Varje flaska har en dispenser, ett
vanligt redskap i barbranchen. Barobot använder sig av en 2 cl:s automat till spritsorterna och 5 cl:s för blandannat läskdrycker. Flaskorna monteras med öppningen neråt
så att gravitationen gör jobbet. Automaterna passar de flesta flaskorna. Glaset som
transponeras får max vara 17 cm högt för att det ska fungera.
Glaset rör på sig i två riktningar, X- och Y-riktning. X-axeln drivs av en stegmotor och
Y-axeln via ett servo. Ett annat servo går i Z-axeln, som ska trycka på dispenserna,
“automaterna”, under flaskorna för att släppa ner vätska i glasen.
Styrning av vagnen sköts av en ATmega328, samma mikrokontroller som Arduino UNO
Bottender
13
2.3. LIKNANDE PRODUKTER
KAPITEL 2. BAKGRUND
är baserad på. Det finns även 12 st ATmega8 mikroprocessorer. De driver i huvudsak 96
LED, där varje led styrs individuellt med PWM signaler. (Se Figur 2.11).
Figur 2.11: Barobots system [1].
Korten kommunicerar via I2 C och ISP. Fördelarna med detta är att alla LED’s kan lysa
på olika sätt, och att det är lätt att bygga ut. Avancerade funktioner körs via en android
7”.
Androidenheten är ansluten till moderkortet via PL2303 och USB / RS232. Den fungerar
som ledningscentral för alla mikrochip. Dess WiFi kan användas för att få tillgång till
Barobot-menyn på distans via en annan smartphone eller surfplatta.
Transportsystemet har magneter utsatta på olika ställen som detekteras av en hall-sensor
för att veta att positionen stämmer. Under glaset, i vagnen, finns det en viktsensor som
kollar om ett glas finns och om det kommer någon vätska från flaskorna.
Fördelar
• Mekaniska ventiler med tryckarm ger större precision.
• Ramen gör den flyttbar.
• Enkelt appliceringssystem för flaskorna.
• Minimal rengöring krävs.
Nackdelar
• Dyr (16 000-20 000).
• Mekaniska ventiler kan medföra att vätskan fortsätter rinna vid strömavbrott.
• Ramen gör att den tar onödigt mycket plats.
• Mekansika ventiler ger ingen WoW-faktor.
• Ej utbyggbar.
Bottender
14
2.3. LIKNANDE PRODUKTER
2.3.3
KAPITEL 2. BAKGRUND
Bartendro
Produkten använder sig av peristaltiska pumpar som doserar en känd volym med varje
varv som motorn snurrar[24]. Pumparna använder samma processor som Arduino och
ansluter via en RJ-45 kontakt till ett ”router board” som innehåller en Rasberry Pi (se
Figur 2.12).
Figur 2.12: Bild på Bartendro, en liknande produkt [24].
Fördelar
• Enkel att bygga.
• Lätt att byta ingredienser.
• Utbyggbar.
• Inget spill.
• Ingen motor/kompressor behövs.
• Ingen transport behövs.
• Lätt att bära.
Nackdelar
• Dyr. (Ca 1000 kr per pump).
• Rengöring av slangar.
• Ingen snygg lösning.
Bottender
15
2.3. LIKNANDE PRODUKTER
KAPITEL 2. BAKGRUND
Summering
De ovanstående produkterna har alla en förhållandevis stora stålramar vilket gör dem
otympliga att passa in i en bar. Det hindrar dessutom utbyggnad, samt utökning av flaskor. Bartendro är den enda som kan byggas ut och utöka flaskantalet, men dess slangar
medför mycket rengöring. Dessutom är det ingen snygg eller underhållande lösning.
Bottender
16
Kapitel 3
METOD
Projektet är indelat i en förfas, en utvecklingsfas och en efterfas.
Förfasen inleds med att fastställa projektets bakgrund, syfte, mål, systemöversikt, problem samt avgränsningar för projektet. Då förfasen är klar förväntas;
• Kunskap nödvändiga för projektet finnas i gruppen.
• Systemet var uppdelat i relevanta delsystem.
• En kravspecifikation vara framtagen som definierar vad som krävs av prototypen.
• En testspecifikation vara framtagen som beskriver hur det bevisas att produkten
tillgodoser de krav som ställts på den.
• En projektplan som definierar resurser, tidsplan mm finnas.
I denna rapport återfinns (med undantag av delsystem) dessa punkter under Inledning
eller Bilagor.
Under utvecklingsfasen skapas produkten med förfasens resultat som bakgrund. Mer
detaljer läggs till dokumentation, tester utförs och dokumenteras. Vid utvecklingsfasens
slut förväntas;
• Prototypen vara klar.
• Alla nödvändiga tester vara utförda och dokumenterade.
• Alla krav med hög prioritet vara uppfyllda.
• En test över hela systemet utförts och dokumenterats.
Till slut inleds efterfasen, där projektresultatet överförs till beställaren och en utvärdering
av projektet görs. Därefter avslutas projektet. Efterfasen kommer i denna dokumentation
framförallt att tas upp under Resultat, Diskussion och Slutsats.
17
3.1. SYSTEMÖVERSIKT
3.1
KAPITEL 3. METOD
Systemöversikt
Projektet är uppdelat i 5 olika delsystem;
• Delsystem 1- Applikation
• Delsystem 2- Styrenhet
• Delsystem 3- Transportering
• Delsystem 4- Flödesreglage
• Delsystem 5- Plattform
Delsystem 1 omfattar ren mjukvaruprogrammering, medan Delsystem 2 är inbyggda
system. Delsystem 3, 4 och 5 består av fysiska komponenter och hårdvara. (Se Figur
3.1).
Figur 3.1: Enkel översikt över projektets delsystem.
3.2
Applikation
Applikationen valdes att programmeras i språket och utvecklingsmiljön Delphi1 . Delphi
[25] är både ett språk och en utvecklingsmiljö som har funnits sedan 1990-talet. Det är
ett objektorienterat språk som har stöd för utveckling av applikationer till flera olika
operativsystem.
Delphi valdes eftersom det är ett enkelt objektorienterat språk med många komponenter
att välja mellan samt har ett användarvänligt grafiskt IDE2 . Biblioteket som framförallt
kommer att användas (utom vid vissa tester då VCL används) är Firemonkey. Versionen
som används är DelphiXE8.
1
2
Läs mer om valet under Diskussion
Integrated Development Environment
Bottender
18
3.2. APPLIKATION
KAPITEL 3. METOD
I Delphi finns det framförallt två stora bibliotek som är skapade för just utvecklingen
av applikationer. VCL3 är framtaget för Windowsapplikationer, medan Firemonkey är
utvecklad för mulitplattform-applikationer. Firemonkey [26] är en grafikmotor som gör
att samtliga firemonkey-komponenter kan användas på alla plattformar. Det innebär att
applikationerna som utvecklas i firemonkey direkt kan köras på bland annat Windows,
OS X, iOS och Android utan att koden behöver skrivas om. Det krävs inget extra tillägg
för att utveckla applikationer till Android eller iOS. Däremot så måste man köpa en
licens för att få programmera i Delphi.
Sammanfattningsvis kan sägas att fördelarna med Delphi är multiplattformsstöd, ett
lättanvänt grafiskt IDE och tillgång till komponent för Bluetooth. Nackdelen är att det
inte finns mycket hjälp och exempel att få till de nyare versionerna av Delphi.
3.2.1
Hantering av data
En databas underlättar hanteringen av all information, vilket ledde till slutsatsen att en
databas behövs. För att undvika behov av Internetåtkomst valdes en lokal databas. (Se
Tabell 3.1). Däremot om produkten vidareutvecklas kan en riktigt databas vara ett bra
alternativ då det ger möjlighet till delning av recept mellan användare av applikationen
och kan resultera i ett mycket större utbud av recept och ingredienser.
Tabell 3.1: För- och nackdelar med databas.
SQLite är den databas som används mest för androidapplikationer, då de flesta andra
databaser inte ännu är kompatibla med android.[27] Det är därför det självklara valet
till detta projekt.
Skiss över Delsystem 1- Applikation
Utifrån ovanstående val av metoder och komponenter kunde en mer detaljerad bild tas
fram över Delsystem 1- Applikationen (se Figur 3.2). Applikationen ska köras från en
androidenhet som trådlöst via bluetooth kommunicerar med styrenheten.
3
Visual Component Library
Bottender
19
3.3. STYRENHET
KAPITEL 3. METOD
Figur 3.2: Översikt över Delsystem 1- Applikation.
3.3
Styrenhet
Som styrenhet övervägdes en Arduino Mega 2560 och Raspberry Pi B. Arduino valdes
på grund av att den är användarvänlig för de med mindre erfarenhet av styrenheter och
liknande (se Tabell 3.2). Dessutom finns det många olika ”shields” som kan bygga ut
Arduinon för ytterligare funktionalitet. En Raspberry Pi är mer avancerad än vad som
krävs till detta projekt. Dock är den billigare än en Arduino Mega 2560, men tanken är
att efter tester av hela systemet ska en billigare Arduinomodell användas istället, när
det står klart exakt vad som behövs. T.ex. valdes Arduino Mega 2560 även pga dess 54
GPIO, men antagligen kommer inte alla dessa behövas. Det är möjligt att det i framtiden
räcker med en Arduino Uno, som endast kostar ca 260 kr.
Tabell 3.2: Arduino Mega 2560 jämförd med Raspberry Pi B.
För att kommunicera mellan applikationen och styrenheten valdes bluetooth, eftersom
prototypen ska vara så modulär som möjligt och ett trådlöst alternativ då är att föredra.
WiFi är ett annat trådlöst alternativ, men WiFi är krångligare att koppla upp mot via
en applikation, då man i koden måste ange vilket protokoll som ska användas mm. Bluetooth däremot behöver inte sättas upp från applikationen, utan kan anslutas separat
mellan enheterna. Dessutom kan enheterna då parkopplas, vilket innebär att de ”kommer ihåg” varandra i framtiden, och kopplingen däremellan behöver inte verifieras med
lösenord varje gång. Ytterligare en fördel är att Delphi har en ”Low Energy Bluetooth”
LEBT komponent, som automatiskt kan sköta sammankopplingen mellan enheterna om
så önskas. Man behöver då inte starta anslutningen manuellt från enheterna.
En Bluetooth-transceiver BTT valdes istället för en Arduino-shield BTShield då den är
billigare och mindre, och uppfyller samma krav som en shield.
Styrenheten programmeras i Arduinos eget språk och utvecklingsmiljö, då det är enkelt
och det finns mycket hjälp och exempel att få. Kommunikationen från styrenhetens sida
Bottender
20
3.4. MEKATRONIK
KAPITEL 3. METOD
ska byggas upp med hjälp av olika ”cases”, dvs med hjälp av olika ”fall’ för varje enskilt
kommando. Beroende på vilket kommando som skickas från applikationen så kommer
då olika ”fall” i koden att exekveras.
Skiss över Delsystem 2- Styrenhet
En Arduino Mega 2560 ska kommunicera seriellt via bluetooth mot applikationen. Ett
visst kommando utförs, och beroende på kommandot skickas en signal till antingen
transportsystemet eller flödesreglaget. (Se Figur3.3).
Figur 3.3: Översikt över Delsystem 2- Styrenhet.
3.4
Mekatronik
Nedan motiveras de val av komponenter och lösningar som gjorts för all mekanik i
projektet.
3.4.1
Transportering
Transponeringsmetoden som valdes var att glaset ska flytta sig till vätskan. Detta valdes av två anledningar, första anledning var att undvika rengöring som skulle behövas
om vätskan skulle transponeras till glaset, andra anledningen var från en mindre undersökning som påvisade att det var mer underhållande att se glaset flytta på sig än om
det hade stått still. (Se Tabell 3.3).
Tabell 3.3: De olika lösningarna för transportering jämförda mot varandra.
Bottender
21
3.4. MEKATRONIK
KAPITEL 3. METOD
För att få glaset att röra sig måste en motor användas. En stegmotor valdes för att
förflytta glaset. För och nackdelar som stegmotorn har jämfört mot en vanlig likströmsmotor är följande. Fördelarna stegmotorn har är att den är enkel att styra från digitala
system då det är en helt digital motor, är underhållsfri eftersom den inte använder
sig av några borstar, vid låg hastighet är det högt vridmoment, kan inte överbelastas
mekaniskt. Nackdelarna stegmotorn har mot en likströmsmotor, om det blir en förstor
mekanisk belastning kan stegmotorn kugga över och tappa sin position, inte lika snabb
rotationshastighet, ljud nivån kan bli hög.
För att veta vilken storlek det ska vara på motorn görs en uträkning. Uträkning på
kraften som motorn måste kunna utföra finns i Appendix C. Kraften som räknats ut
är från uppskattade värden. Massan som ska flyttas har värdet 500g, accelerationen
1, 1m/s2 , friktion på 100, tyngdacceleration 9.82m/s2 och draghjul med radien 2 cm.
För att få motorn att röra på sig från signalerna som kommer från Styrenheten valdes
det att använda en IC drivkrets L298[28]. L298 är en motordrivare som är uppbyggd av
en dubbel H-brygga. Möjlighet att styra motorn på andra sett finns men L298 var den
vanligaste lösningen som hittades vid styrning av stegmotorer. Ett program i styrenheten
behövs för att styra/köra stegmotorn. I koden sätts fyra utgångar på styrenheten sätts
till låg. För att stegmotorn sedan ska börja ta sina steg ska en av utgångarna bli hög.
När nästa steg ska tas så byter den höga signalen till en annan utgång. I en viss sekvens
så går motorn medurs. Hastigheten beror på vilken delay som sätts mellan stegen.
En gränslägesbrytare valdes också att användas till systemet då den kan ha olika funktioner. Den kommer användas för att ha kunna nollställa stegmotorn om den skulle
kugga över. En annan funktion man skulle kunna använda sig av om man integrerar
fler gränslägesbrytare till systemet är som en säkerhetsbrytare. För att inte systemet
ska komma till någon skada kan man montera in gränslägesbrytare i vadera ända av
transportsystemet. Om ett fel skulle inträffa och glaset vill fortsätta att röra sig till ett
håll även om det inte finns mer bana åt glaset så kommer gränslägesbrytaren göra att
motorn slutar snurra och glaset stannar.
Konstruktionen av transportsystemet(se Figur 3.4) är tänkt att glaset ska komma precis
ovanför ramen. Två kugghjul ska placeras på samma höjd så att kuggremmen är rak
där vagnen ska fästas. Stegmotorn är då tänkt att sitta bredvid vagnen, på ena sidan
av transportsystemet, eftersom vagnen då blir mindre och motorn blir mer skyddad mot
spill. Dessutom påverkas inte plattformen lika mycket av stegmotorns vibrationer.
Figur 3.4: Skiss på hur transportsystemet är tänkt att se ut.
Bottender
22
3.4. MEKATRONIK
KAPITEL 3. METOD
Skiss över Delsystem 3- Transportering
Från styrenheten ska en digital signal komma in till motorstyrningen (dubbel H-brygga),
som sedan ska skickas vidare till stegmotorn. Stegmotorn kör då åt vänster- respektive höger håll beroende på sekvensen signalerna skickades i. I motorns axel fästs ett
kugghjul som tillsammans med ytterligare två kugghjul ska driva runt en kuggrem.
Gränslägensbrytare ska placeras ut vid sidorna av transportsträckan för att kunna köra
plattformen till en ”startposition”. (Se Figur D3).
Figur 3.5: Översikt över Delsystem 3- Transportering.
3.4.2
Flödesreglage
För att få flöde från flaskorna behövs någon slags ventil. Det skulle även kunna fungera
med hjälp av en pump, men då krävs slangar från flaskorna till rätt position, vilket
medför rengöring. Därav uteslöts denna lösning. Valet av ventil stod mellan mekaniska
och magnetiska ventiler (se Tabell 3.4). Ventilen som valdes var magnetventilen detta
underlättar styrningen då produkten ska göras så modulär som möjligt. Den andra anledningen var att dessa ventiler inger en större ”WOW-faktor” enligt ett mindre antal
tillfrågade personer.
Tabell 3.4: Jämförelse mellan mekaniska och magnetiska ventiler. Priser varierar mycket
beroende på kvalité. Ofta är mekaniska ventiler billigare[29] än magnetventiler[30].
Styrningen av magnetventilerna ska skötas av transistorer4 . Styrenheten ger signalen
om ventilen ska vara öppen eller stängt med en hög eller låg signal. Transistorn styr en
matningsspänning som behövs för att driva ventilen. När transistorn får en hög signal
kan matningsspänningen öppna ventilen och när transistorn får en låg signal så kommer
matningsspänningen kapas och ventilen stängs. Transistorstyrning valdes för att det är
en simpel koppling och eftersom komponenterna fanns tillgängliga.
4
Transistor är en halvledarkomponent
spänningsreglerare, signalmodulering.
Bottender
som
23
används
som
signalförstärkare,
strömbrytare,
3.4. MEKATRONIK
KAPITEL 3. METOD
För att upptäcka om en flaska är tom valdes det att använda en lastcell för att jämföra om
vikten stämmer överens med uppskattad vikt. Lastcellen valdes över rörelesensorn av den
anledning att man med lastcellen kan veta hur mycket av en viss ingrediens som saknas
om vätskan skulle ta slut under processen. För att lastcellen ska kunna skicka läsbara
värden till styrenheten behövs en signalförstärkare av någon form. Signalförstärkningen
sker med en OP-förstärkare5 .
För att hänga upp flaskorna ska en hylla byggas där flaskorna kan fästas upp och ner.
(Se Figur 3.6) Detta eftersom det då inte behövs någon pump eller kompressor för att
få upp vätskan ur flaskorna. Flödet igenom ventilerna kommer då ske med hjälp av
gravitationen.
Figur 3.6: Bild över hyllkonstruktionen.
Skiss över Delsystem 4- Flödesreglage
Reglering av vätskeutsläpp från flaskorna ska kontrolleras med hjälp av magnetventiler.
En ventil ska finnas per flaska, och ska vara enkel att ta av och sätta på. När en ventil får
en signal från styrenhetens ska denna öppnas i en viss tid (tiden beräknas i applikationen,
som skickar med denna informationen till styrenheten, som i sin tur sätter en delay efter
det inkomna värdet). När tiden är slut ska ventilen stängas igen och strypa vätskeflödet.
(Se Figur 3.7).
Figur 3.7: Översikt över Delsystem 4- Flödesreglage.
5
En operationsförstärkare kan förstora upp en insignal flera tusen gånger för att få en bättre in signal.
Bottender
24
3.5. SYSTEMSPECIFIKATION
3.4.3
KAPITEL 3. METOD
Plattform
En plattform kommer skrivas ut med hjälp av en 3D-skrivare, eftersom detta ger bästa
möjlighet till en plattform som enkelt och snyggt kan integreras på transportramen.
För att hålla koll på plattformens position ska stegräkning av stegmotorns steg användas,
då detta inte medför någon extra kostnad och är ett enkelt sätt att göra detta på. Ett
annat sätt för att veta om positionen stämmer överens hade varit med en avståndsensor.
Man skulle kunna använda avståndsensorn som ett extra skydd om motorn skulle fastna.
En gränslägesbrytare ska också användas för att kunna nollställa stegmotorn om den
skulle kugga över.
Lastcellen som används för att ha koll på om en flaska skulle ta slut har även en annan
funktion. För att undvika processen av att skapa en drink utan att ett glas finns så kan
lastcellen kontrollera om glaset står på plattformen eller inte.
Efter att ha rådfrågat Kabetex AB[31] om bästa val av förflyttning av plattformen
valdes glidskenor, framförallt eftersom de inte måste vara noga centrerat för att undvika
friktion, till skillnad mot hjul.
Skiss över Delsystem 5- Plattform
En 3D-utskriven plattorm ska placeras över en lastcell, och sedan på transportsystemet.
Lastcellen ska kunna väga vätska med ett grams noggrannhet och skicka värdena till
styrenheten. (Se Figur 3.8). Glidskenor placeras utmed transportramens insida, mitt
emot varandra. De ska placeras så långt upp som möjligt. I varje glidskena placeras en
glidkloss. En liten metallplatta fästs mellan glidklossarna, så att en liten anordning för
att fästa plattformen kan fästas och gå upp ur ramverket.
Figur 3.8: Översikt över Delsystem 5- Plattform.
3.5
Systemspecifikation
Utifrån de valda metoderna och komponenterna kan en systemsspecifikation tas fram.
Prototypen ska vara delvis moduluppbyggd, dvs. enheten som applikationen körs från,
transportramen och ventilerna ska inte sitta ihop med varandra, mer än via en sladd melBottender
25
3.5. SYSTEMSPECIFIKATION
KAPITEL 3. METOD
lan transportramverket och ventilerna. Detta eftersom det gör det lättare att integrera
maskinen på önskat ställe. Dessutom underlättar detta för utbyggnad av produkten.
Det ska tack vare detta även gå att hänga produkten rakt på väggen, utan stöd från
bänk eller liknande. Styrenheten kan placeras i transportramverket eller bakom hyllan
flaskorna sitter på.
Applikationen ska skicka kommandon till styrenheten, som skickar signaler till motorn
och ventilerna. Lastcellen ska skicka information till styrenheten. (Se Figur 3.9). I applikationen kan man välja vilken drink man vill ha. Efter att en drink har valts så ska
systemet sätta igång. Ett glas ska förflyttas mellan olika flaskor med hjälp av transportsystemet. Då rätt ventil öppnas ska glaset fyllas på med olika vätskor enligt receptet för
den drinken.
Figur 3.9: Sammanfattande systemspecifikation där samtliga delsystem ingår.
Bottender
26
Kapitel 4
RESULTAT
4.1
Applikation
En applikation är framtagen för att användaren ska kunna interagera med maskinen.
Applikationen är programmerad i språket och utvecklingsmiljön Delphi XE8. Applikationen består av ett antal formulär/units, vilka kan liknas med klasser bestående av ett
grafiskt fönster och ett kod-fönster.
4.1.1
Design
Ett formulär kallat BaseForm (se Figur 4.3) ligger till grund för hela projektets mall,
dvs. menyer, toolbar, navigation mellan formulären vid menyklick samt popupfönster
för sparande av ändringar. Alla övriga formulär ärver BaseForm, d.v.s. de skapas som
en TBaseForm istället för som vanligtvis, en TForm. De får då samma utseende och
funktionalitet som BaseForm direkt, utan all dess kod. Detta är väldigt smidigt ifall
applikationen önskas byggas ut eller ändras. Nackdelen är dock att för att applikationen
ska kunna fungera så krävs det att BaseForm fungerar.
För att undvika att formulär är beroende av varandra sätter alltid ett formulär A värden
i formulär B utan att formulär B hämtar värden från formulär A. På så sätt är de bara
beroende åt ett håll. (Se Figur 4.1).
27
4.1. APPLIKATION
KAPITEL 4. RESULTAT
Figur 4.1: Bild på applikationens struktur. För att undvika att alla formulär är beroende
av varandra sätter ett formulär värden i nästa formulär och visar det, istället för att även
hämta värden från det formuläret.
Vid start av applikationen visas alltid BottlesForm1 (se Figur 4.5) först för att användaren
ska kontrollera att de ingredienser som sitter i maskinen stämmer överens med de som
är inskrivna i applikationen. Sedan öppnas HomeForm2 , och man kan därifrån navigera
fritt i applikationen. Längst upp finns en toolbar med två menyknappar (Se Figur 4.2a
och 4.2b).
Menyknappen till höger vänster drar in huvudmenyn, varifrån man kan klicka på det
formulär man vill gå till. Menyknappen till höger drar in en inställningsmeny, där man
kan gå till inställningar, Om oss, Kontakt eller avsluta programmet. Båda menyknapparna och toolbaren ligger i BaseForm men kan användas från alla synliga formulär. (Se
Figur 4.3).
(a) Genom huvudmenyn kan man förflytta sig
mellan de sex formulären i mitten. Från DrinkForm kan man även komma till EditDrinkForm (b) Genom inställningsmenyn kan man navigera
och MakeDrinkForm, och från InCabinetForm till de tre översta formulären, samt stänga av
till EditIngredienceForm.
programmet.
Figur 4.2: Karta över huvudmenyn och inställningsmenyn.
1
2
Mer information finns längre ner under Applikationens formulär.
Mer information finns längre ner under Applikationens formulär.
Bottender
28
4.1. APPLIKATION
4.1.2
KAPITEL 4. RESULTAT
Applikationens formulär
Nedan följer en kort beskrivning av varje formulär i applikationen
BaseForm
Basformuläret som ligger till grund för alla formulär. Använder en style, ”JET”, för en
snygg layout på hela applikationen. (Se Figur 4.3).
Figur 4.3: Bild på formuläret BaseForm. BaseForm är ett formulär vilket alla andra
formulär (som visas i applikationen) ärver av. Det innebär att när ett nytt formulär
skapas som TBaseForm istället för som vanligtvis, TForm, så kommer formuläret redan
från början att se ut som BaseForm samt ha alla dess funktioner utan att behöva dess
kod. Till vänster syns huvudmenyn, och till höger inställningsmenyn. Dessa är vanligtvis
dolda tills klick på iconerna ovanför dem. Endast en syns åt gången.
HomeForm
Visar bilder på maskinen, slumpar bilder på drinkar och förklarar kortfattat vad som kan
göras i applikationen. Hit kommer man vid start, efter konfirmation av flaskpositioner i
BottlesForm.
DrinkForm
Drinkform visar en lista över alla drinkrecept till vänster, och den just nu markerade drinkens information till höger. Där finns information som drinknamn, ingredienser,
styrka och bild. Längst upp finns flikar som bestämmer vilka drinkrecepts som kommer
visas i listan. Antingen alla, de som går att starta direkt med de upphängda ingredienserna, de som går att göra med ingredienser som finns hemma men inte nödvändigtvis
är upphängda, eller sparade favoriter. (Se Figur 4.4).
Det finns även fyra knappar längst ner, Skapa drink, Ändra drink, Ta bort Drink och
Starta drink. De två förstnämnda navigerar till EditDrinkForm, och den sista till MakeDrinkForm.
Bottender
29
4.1. APPLIKATION
KAPITEL 4. RESULTAT
Figur 4.4: Bild på formuläret Drinkform. Drinkform visar en lista över drinkrecept (vilka
recept som visas bestäms av vilken flik man är inne på). Till höger visas den valda drinkens information. Härifrån man kan skapa/ändra och ta bort ett drinkrecept, (Skickas
då till EditDrinkForm) samt starta tillverkningen av drinken (sker i MakeDrinkForm).
EditDrinkForm
Här kan man skapa eller ändra ett drinkrecept. Det går även att lägga till en bild till
receptet genom att ta kort med androidenhetens kamera. Om programmet körs på en
enhet utan kamera så döljs automatiskt knappen för att ta bild.
BottlesForm
BottlesForm är det första formuläret (förrutom en splashscreen) som visas när applikationen startas. (Se Figur 4.5). Det går även att navigera till BottlesForm i huvudmenyn
om man skulle byta flaskor under användandet av maskinen/applikationen. I formuläret
finns en lista över alla tillgängliga flaskpositioner i hyllan. Vid start av applikationen
visas alla ingredienser som varit inställda vid föregående användning av maskinen. Efter
att ha ställt in alla positioner till rätt ingrediens sparas de nya värdena genom OK klick.
Figur 4.5: Bild på formuläret BottlesForm. BottlesForm visar en lista över upphängda
ingredienser. Det går att ändra ingredienserna och klicka på ok för att utföra ändringen.
Bottender
30
4.1. APPLIKATION
KAPITEL 4. RESULTAT
InCabinetForm
I detta formulär finns 3 listor: En för alla ingredienser, en för ingredienser man har
hemma/ i baren, och en som visar vilka ingredienser som just nu sitter i hyllan. (Se
Figur 4.6). Den sistnämnda går inte att ändra. Genom pilarna mellan listorna kan man
lägga till eller ta bort en ingrediens från sina ”tillgängliga ingredienser”. Det finns även
knappar för att skapa, ändra eller ta bort en ingrediens. När man skapar eller ändrar en
ingrediens skickas man till EditIngredienceForm.
Figur 4.6: Bild på formuläret InCabinetForm. I InCabinetForm kan man lägga till vilka
ingredienser som finns hemma/ i baren. Här kan man även skapa/ändra eller ta bort
ingredienser (man skickas då till EditIngredienceForm).
EditIngredienceForm
I EditIngredienceForm skapar man en ny ingrediens. Man skriver då in namn, alkoholhalt, information och väljer en huvudgrupp (t.ex. blanddricka om ingrediensen är
apelsinjuice).
MakeDrinkForm
När man tryckt ”Starta drink” i DrinkForm så visas MakeDrinkForm, där instruktioner
om hur drinken görs visas steg för steg. T.ex. kan startinstruktioner som ”Fyll glaset
med is och sätt det på vagnen” visas, eller slutinstruktioner, ”Lägg i två limeklyftor”.
HistoryForm
Här loggas alla skapade drinkar i en lista, där tid, datum och drinkens namn visas.
Detta sparas även i databasen, vilket gör att informationen sparas även mellan att
applikationen stängs av.
StatisticsForm
StatisticsForm visar statistik över populäraste drinkarna.
SettingsForm
Här finns alla inställningar för applikationen, under olika flikar. Det finns inställningar
för att ange hur många flaskpositioner som finns på hyllan och inställning för kalibrering
av position under en flik, Flaskpositioner. Under nästa flik, Databas, kan man tömma
eller återställa databasen till ursrungsdatabasen som följer med applikationen. Den sista
fliken är Nätverkinställningar, där man kan välja om man vill koppla mot en speciell
Bottender
31
4.1. APPLIKATION
KAPITEL 4. RESULTAT
COM-port eller mot simulatorn.
AboutUsForm
Beskriver vilka som skapat applikationen och maskinen. Bakgrund till idén.
ContactForm
Visar kontaktinformation.
DBForm
Detta formulär innehåller all kod för skapande av och kummunikation med den lokala
databasen.
CommunicationForm
Sköter kommunikationen med styrenheten och simulatorn.
ParametersUnit
Innehåller definitionen av alla nödvändiga parametrar såsom TRecipe, TIngredience och
många fler.
4.1.3
Kommunikation- Applikation till Styrenhet
Applikationen kommunicerar med styrenheten med hjälp av en USB-kabel.
All kod för kommunikation mot styrenheten (och simulatorn) finns i CommunicationForm.
Med hjälp av en variabel kan sättas om applikationen ska kommunicera mot simulatorn
eller styrenheten (som kommunicerar vidare mot maskinen). För att kommunicera mot
styrenheten används seriell kommunikation.
För att kommunicera mellan applikationen och styrenheten används virtuella COMPortar3 . För att kunna använda en komponent som hanterar COM-porten så har ett
bibliotek kallat TurboPower AsynchProffessional implementerats. Dock så är det endast
kompatibelt med VCL, så enbart den nödvändiga Uniten för att kunna använda COMportar används. (På så sätt behöver inte hela biblioteket kompileras, och de delar som
inte är kompatibelt med FireMonkey ger inga fel vid kompilering av programmet.)
När programmet körs skapas först en COM-Port-komponent i koden. Sedan kollas i
CommunicationForm om en COM-port är öppen, om inte så öppnas en. (I detta fall
COM-port 3, då styrenheten dyker upp som COM3 när den kopplas in i PC:n.) Egentligen borde programmet upptäcka vilken COM-port enheten använder och sedan koppla
mot den, men för att göra det enkelt hårdkodas COM3.
I ett kommando GenericCommandMachine i CommunicationForm kollas återigen om
COM-porten är öppen, om inte så försöker den öppna den. Om den är öppen så skickas
ett starttecken (en byte som ansichar) via funktionen ComPort.PutChar(1). Detta ska
tas emot av styrenheten och säger åt den att ett kommando kommer. Därefter skickas
från applikationen ett kommandotecken på samma sätt, som säger vilket kommando som
ska utföras. Det är viktigt att både applikationen och styrenheten har samma värden för
de olika kommandona, så att rätt kommando utförs. Om kommandot som skickats även
ska överföra någon data som ska hanteras så skickas den därefter. (Se Figur 4.7)
3
Se Bakgrund/Seriell Kommunikation
Bottender
32
4.1. APPLIKATION
KAPITEL 4. RESULTAT
Figur 4.7: Applikationen skickar starttecken, kommandotecken och eventuell data till
styrenheten via en Com-Port. Sedan väntar den på svar från styrenheten i form av Ack
eller Nack. Om Ack skickas tillbaka så väntar den på all eventuell data.
Därefter ligger applikationen och lyssnar efter svarstecker från styrenheten i form av Ack
eller Nack. Detta gör den tills ett svarstecken kommer in, eller maxväntetiden går ut.
Om Ack fås så väntar sig applikationen ett svar med en viss längd på svaret. (Beroende
på vilket kommando som skickades. Funktionen väntar tills svarslängden är uppfylld,
sedan sparas svaret i en idBytes-array.
I CommunicationForm finns funktioner som ”Gå till vänster”, ”Gå till höger”, ”Hämta
position” och ”Gå till position()”. Vi kommandot ”Hämta position” förväntas ett värde
tillbaka. Vid ”Gå till position” skickas ett värde med för att tala om för styrenheten vart
vagnen ska köras.
Figur 4.8: Bilden visar de kommandotecken som anger vilket kommando som ska utföras.
Både applikationen och styrenheten har samma kod för detta, då de måste ha samma
tecken för samma kommandon för att fungera.
Bottender
33
4.1. APPLIKATION
4.1.4
KAPITEL 4. RESULTAT
Databas
En modell över databasen är framtagen. Den ligger till grund för databasens struktur.
(Se Figur 4.9). I DBForm ligger en FDConnection-komponent samt två FDQuerys, som
hanterar alla frågor mot databasen. Den ena används endast för att kunna hämta bilder
samtidigt som den andra loopar över recepten och läser in dem.
Figur 4.9: En enkel modell över databasstrukturen. För mer detaljerad modell, se Appendix B.
Om ingen databas redan finns när applikationen startas så används en redan skapad
databas med ca 30 recept i och ca 60 ingredienser från DBForm. Applikationen föreslår
själv en passande plats/ mapp att lägga databasen på. Sedan försöker applikationen
öppna en koppling mot databasen via FDConnection.
Databasen kan från applikationen tömmas om användaren inte vill ha standarddatabasen
som medföljer, och den kan dessutom återskapas till grunddatabasen om så önskas.
Om databasen töms eller återställs så raderas alla egna recept och ingredienser som
användaren lagt till.
I DBForm finns alla funktioner för att kommunicera med databasen via frågor i FDQueryn. (Se Figur 4.10). Funktionerna anropas t.ex. när man trycker på ”spara” i EditDrinkUnit för att spara en ny eller ändrad drink. (Se Figur 4.11).
Bottender
34
4.1. APPLIKATION
KAPITEL 4. RESULTAT
Figur 4.10: Exempel på en fråga till databasen- I funktionen formuleras en fråga via queryn med hjälp av FDQuery.Add(’Ett kommando, i detta fall Delete och From position’);
När hela frågan är klar, ofta av flera Add(), exekveras den. Gick allt bra retuneras True.
Figur 4.11: Exempel på hur koden ser ut då en ny ingrediens ska sparas.
Bottender
35
4.1. APPLIKATION
4.1.5
KAPITEL 4. RESULTAT
Simulator
För att kunna testa funktionaliteten på CommunicationForm finns en simulator i ett
nytt projekt. Simulatorns kod är liknande den kod som ska finnas i styrenheten. (Se Figur 4.12). Dock så skiljer sig kommunikationen åt. För att kommunicera med simulatorn
används TCP/IP4 . Simulatorn har en TCPServer, och applikationen har en motsvarande
TCPClient. För att applikationen ska kunna veta simulatorns IP-adress så har både simulatorn och applikationen en UDPServer5 Applikationens UDPServer broadcastar[32]
ut ett meddelande”Bottender” på en viss port, och simulatorns UDPServer lyssnar efter
meddelanden på samma port som börjar på ”B.o.” När den får in ”Bottender” broadcastar simulatorns UDPServer ett meddelande ”Simulator” tillbaka ut på samma port.
Figur 4.12: En bild på simulatorn när den blandar en drink som beställts via applikationen. Glaset förflyttar sig till rätt flaska och en animering av vätska visas.
UDPServern på applikationen som skickade ut ”Bottender” ligger samtidigt och lyssnar
efter meddelanden som börjar på ”s.i”. Den får tillbaka både meddelandet ”Bottender”
från sig själv och ”simulator” från simulatorn, men ignorerar den första eftersom den
bara lyssnar efter meddelande som börjar på ”s.i”. Simulatorns IP-adress maskas ut
från svarsmeddelandet, och sätts till TCPClientens IP-adress. På så sätt kan sedan
TCPClienten i applikationen kommunicera med simulatorn via TCP. (Se Figur 4.13) Om
ingen IP-adress erhålles antar applikationen att simulatorns applikation körs från samma
enhet som Bottender-applikationen, och sätter då TCPClientens Host till LokalHost.
Med hjälp av simulatorn kan man se hur maskinen skulle betett sig om applikationen
istället hade kopplats till styrenheten. Simulatorn kan köras från en android-enhet, och
kan då kommunicera trådlöst med hjälp av WiFi.
4
5
Transmission Control Protocol, ett dataöverföringsprotokoll / Internet Protocol.
UDP- User Datagram Protocol
Bottender
36
4.1. APPLIKATION
KAPITEL 4. RESULTAT
Figur 4.13: Via var sin UDPServer broadcastar båda applikationerna ut ett meddelande.
Först bottender-applikationen, sedan simulator-applikationen. Via svaret från simulatorn kan dess IP-adress maskas ut och sättas som TCPClientens Host. På så sätt kan
kommunikation via TCP upprättas.
Design av Delsystem 1- Applikation
Applikationen körs på en Windows-plattform och kommunicerar via en USB-kabel med
styrenheten. Applikationen kan även köras på en android-enhet och kommunicera trådlöst
via WiFi med simulatorn, som körs från en PC. All kommunikationen sker seriellt med
hjälp av virtuella com-portar (utom simulatorn som kommunicerar via TCP/IP). (Se
Figur 4.14).
I applikationen går det att välja mellan drinkar vars ingredienser sitter monterade på
maskinen, samt lägga till/ta bort och ändra recept och ingredienser. Det finns historik
över alla drinkar som någonsin startats i enheten, och statistik över populäraste drinken
just nu. Från applikationen kan com-port ändras, databasen kan tömmas eller återskapas,
och antal flaskpositioner kan ändras.
Figur 4.14: Resultat Delsystem 1- Applikation.
Bottender
37
4.2. STYRENHET
4.2
KAPITEL 4. RESULTAT
Styrenhet
Som styrenhet används ett Arduino Mega 2560- kort. Det skickar PWM-signaler till
transporteringen, strömsignaler till flödesreglaget, och tar emot kommandon från applikationen via en USB-kabel.
Kommunikation- Applikation och Styrenhet
I styrenhetens kod sköts kommunikationen via ett event kallat serialEvent(). Det triggas
för varje varv i huvudloopen. Där finns en whileloop som körs så länge Serial.available()
får in data. I whileloopen kollas det om tecknet som kommer in är ett starttecken, i så
fall väntar programmet på kommandotecknet som kommer därefter. Efter det kommer
eventuell data. Beroende på vilket kommandotecken som kommer in så hoppar programmet in i rätt ”case”. I ”caset” anropas funktionen för det som ska hända där. (Se Figur
4.15).
Figur 4.15: Bild på hur koden i styrenheten ser ut för att hantera inkommande tecken.
Bottender
38
4.3. MEKATRONIK
KAPITEL 4. RESULTAT
Design av Delsystem 2- Styrenhet
Styrenheten fungerar som ”mellanhand” mellan applikationen och maskinens olika delar
(motor, ventiler, våg). (Se Figur 4.16).
Figur 4.16: Översikt över Delsystem 2- Styrenhet.
4.3
4.3.1
Mekatronik
Transportering
Konstruktionen för transportsystemet är framtagen utifrån två aspekter, storleken på
motorn och plattformens storlek utifrån glasets bottendiameter. (Se Figur 4.17a och
4.17b).
(a) Ritning på ramverket utifrån.
(b) Bild på hur lådan ser ut inuti. Nr1 är ramverket, Nr2 är glidskenan som sitter på ramverket,
Nr3 är gildklossen som åker i gildskenan och Nr4 är var kugghjulen är placerade. Motorn driver
det kugghjul som är på botten.
Figur 4.17: Hur konstruktionen av ramverket är uppbyggt.
Motorn som används är stegmotorn 2BYGHM809 [33], vilken har en tillräcklig dragkraft
för att kunna transportera glaset. Stegmotorn är bipolär, har 400 steg/varv som gör att
den går smidigt. Stegmotor styrs lätt från styrenheten eftersom det är en digitalmotor.
Bottender
39
4.3. MEKATRONIK
KAPITEL 4. RESULTAT
Stegmotorn styrs via ett styrkort som är uppbyggt av en dubbel H-brygga. Kretsen får
sina signaler via fyra sladdar som kommer från styrenheten. (Se Figur 4.18). Styrningen
är byggt på ett L298 IC krets. Kretsen används för att stegmotorn drar mycket ström
och för att skydda styrenheten.
Figur 4.18: Elschema på stegmotor styrningen byggt från L298 IC krets [34].
Ingångarna A, B, C och D ska ha signal i form av att en är hög och resten är låga. (Se
Tabell (4.1).
Mellan varje steg är ett visst tidsintervall, ju mindre tidsintervall desto snabbare går
motorn. Om motorn går medurs med signalerna så byter den riktning om man kör
sekvensen baklänges.
Tabell 4.1: Tabellen visar hur signalen ser ut till motorstyrningen.
Bottender
40
4.3. MEKATRONIK
KAPITEL 4. RESULTAT
Design av Delsystem 3- Transportering
Transportsystemet består av ett ramverk i stål som omsluter ett system av motor, kugghjul och en kuggrem. Transportsystemet kan transportera glaset fram och tillbaka till
olika positioner. Till det används en stegmotor. Motorn är kopplad till ett av kugghjulen, som i sin tur driver runt kuggremmen. På remmen fästs en plattform där glaset kan
placeras. (Se Figur 4.19).
Figur 4.19: Systembild på hur transportsystemet fungerar.
4.3.2
Flödesreglage
För att inte behöva någon pump eller kompressor är flaskorna monterade upp och ner
på en hylla med hjälp av kardborreband. Den viktiga funktionen med hyllan är att det
ska vara lätt att byta flaskor som sitter uppe. Man ska dessutom kunna se vilka flaskor
som är uppsatta. Hyllan är konstruerad så att den är ihålig, med ett djup på ca 5 cm.
Detta för att sladdar ska kunna dras där utan att de syns. (Se Figur 4.20).
Figur 4.20: Bild på hyllan där flaskorna sitter fast med kardborreband och lysdioder
används för att simulera vätskeflöde.
Magnetventiler är inköpta och testade. Då vätska ska rinna igenom vid spänningssättning
släpps inte vätska igenom tillräckligt mycket för att det ska kunna rinna igenom i en
fin jämn stråle utan tryck i flaskan, vilket resulterar i droppande/bruten stråle. För att
kunna få ett bra resultat med hjälp av tidsmätning krävs en väldigt jämn och exakt
stråle, vilket är varför ventilerna inte är implementerade i systemet. Dessutom krävs
någon form av luftslang för att luft ska kunna komma in i flaskan när den släpper ut
vätska. Ett sätt att göra detta på utan att rengöring av slangen krävs behövs.
För att kunna demonstrera maskinen simuleras ventilerna av lysdioder. Lysdioderna
sitter på flasköppningarna likt ventilerna skulle ha gjort. De får en spänning när de ska
lysa, samt ingen spänning när de ska släckas. Då de är tända simulerar detta att en
ventil skulle ha släppt igenom vätska.
En lastcell sitter på plattformen för att kunna väga glaset med dryck i. Då vätskan har
fyllts på från en flaska vägs innehållet och värdet ska skickas till styrenheten. Lastcellen är
Bottender
41
4.3. MEKATRONIK
KAPITEL 4. RESULTAT
testad och implementerad i plattformen, men är ännu inte ihopkopplad med styrenheten.
Mellan ventilen och flaskan går det ett plaströr och i mitten av det plaströret går det
ett mindre plast rör upp i flaskan som ger luft för att det inte ska bildas något vakuum
i flaskan. (Se Figur 4.21a och 4.21b).
(a) Bild på en flaska som har en
ventil påkopplad.
(b) Bild på konstruktionen med ventil och flaska.
Styrning
Ventilen som valdes drivs av 12V och styrenheten kan bara ge en hög etta med 5V. Den
digitala signalen går igenom en transistor (Se Figur 4.22) för att styra ventilen.
Figur 4.22: Elschema på styrning av magnetventil.
Bottender
42
4.3. MEKATRONIK
KAPITEL 4. RESULTAT
Lastcell
En förstärkningskrets finns mellan lastcellen och styrenheten (Se Figur 4.23). Förstärkningen
behövs för att styrenheten ska kunna känna skillnaden mellan värdena. Lastcellen fungerar mellan 5 - 12V DC.
Figur 4.23: Elschema på förstärkning från lastcell till styrenhet via en OP- förstärkare.
Design av Delsystem 4- Flödesreglage
För att simulera hur ventilerna skulle betett sig om de var implementerade i systemet
används lysdioder som sitter på varje flasköppning. (Se Figur 4.24). Dioderna lyser/släcks
precis som ventilerna skulle ha öppnats/stängts.
En lastcell är inköpt och testad, och sitter integrerad i plattformen. Den är dock inte
ihopkopplad med styrenheten.
Figur 4.24: Översikt över flödesreglaget. Systemet visar att en lysdiod får en digital
signal för att öppna sig.
4.3.3
Plattform
En plattform är utskriven med hjälp av en 3D-skrivare. Ritningen har först tagits fram
i Catia, ett 3D-moduleringsprogram. (Se Figur 4.25).
Under plattformen sitter en lastcell som ska kontrollera vätskan i glaset när den fyllts
på. Plattformen som glaset står på och transponeras på är utskriven i en 3D-skrivare.
Den har en rektangulär yta och en tunn cirkel centrerad i mitten för att glaset ska stå
bra i mitten av plattan.
Bottender
43
4.3. MEKATRONIK
KAPITEL 4. RESULTAT
Figur 4.25: Bild på hur plattformen ser ut i Catia.
Flera små delar är utskrivna med 3D-skrivaren för att tillsammans bilda en sammankopplingsenhet mellan plattan och transportsystemet. (Se Figur 4.26).
Figur 4.26: Bilden visar hur konstruktionen är uppbyggd mellan vagn och plattform med
lastcell.
Design av Delsystem 5- Plattform
En plattform eller ”vagn” sitter fast i kuggremmen från transporteringen, och rör sig på
så sätt längst med transportsystemet. (Se Figur 4.27).
Figur 4.27: Översikt över Delsystem 5- Plattform.
Bottender
44
4.4. SYSTEMDESIGN
4.4
KAPITEL 4. RESULTAT
Systemdesign
En systemdesign har tagits fram över den färdiga prototypen. I Figur 4.28 kan man
se vissa avvikelser i jämförelse mot den ursprungliga systemskissen (se Figur 3.9 under
Metod ). Applikationen kan ange till vilken flaska glaset ska transponeras till för att rätt
drink ska framställas. Applikationen kan köras från en PC och kan kommunicera med
styrenheten via USB. Styrenheten skickar signaler till motorn och lysdioder. Den får inget
värde från lastcellen då denna ej är implementerad. Motorn transporterar plattformen
till rätt position under rätt flaska, och stannar där tills ”ventilen” är klar. Ett glas kan
transponeras mellan flaskorna utan att spilla. Ventilerna är inte implementerade utan
simuleras istället av lysdioder. Lysdioderna lyser när ventilerna skulle öppnats, och släcks
när ventilerna skulle stängts.
Prototypen är delvis moduluppbyggd, dvs. applikationen, transporteringen, flödesreglaget
och styrenheten sitter inte ihop med varandra mer än med de sladdar som kommer från
styrenheten vilka ger signaler till resterande system, samt en USB-kabel mellan PC:n
och styrenheten. (Se Figur 4.29).
Figur 4.28: Bilden visar resultatet av prototypen.
Figur 4.29: Bild på den klara prototypen.
Bottender
45
4.5. BUDGET
4.5
KAPITEL 4. RESULTAT
Budget
Här visas en tabell över den uppnådda budgeten. Det som projektet blivit sponsrat med
har uppskattats och räknats in i beräkningarna. (Se Tabell 4.2 nedan).
Tabell 4.2: Tabellen visar vad kostnaden för prototypen kostar med dess olika komponenter.
Bottender
46
4.6. TEST OCH UTVÄRDERING
4.6
KAPITEL 4. RESULTAT
Test och utvärdering
Här tas det upp hur kraven är testade, och om kraven efter testerna ansetts uppfyllda
eller inte. Siffrorna framför kraven och testerna är desamma som i Kravspecifikationen
(Appendix A).
4.6.1
Generellt
Krav/Mål- En liten uppsättning av prototypen med 5-6 flaskor ska inte kosta
mer än 5000 kr: Kontrollera budget. Kravet/målet är uppnått.
1. Prototypen ska kunna transportera en färdig drink utan att spilla: Ett glas
fyllt med vätska upp till ett finger under kanten kördes fram och tillbaka på vagnen i 5
min. Spill kontrollerades med hjälp av papper runtom. Kravet är testat och uppfyllt.
2. Användaren ska i applikationen kunna välja mellan de drinkar där ingredienser finns för tillverkning: Skapar 20 drinkar och 30 ingredienser och tilldelar
slumpmässigt drinkarna ingredienser. Kontrollerar sedan drinkarna i “Redo att startas”listan och ser så att alla dess ingredienser är monterade. Kravet är testat och uppfyllt.
3. Prototypen ska kunna göra minst två olika drinkar: Skapa ca 20 drinkar och
mäta dess ingredienser var för sig och se så att de stämmer (mängd och sort). Detta har
ej ännu kunnat testas, och är ej uppfyllt.
4. En drink ska göras under tiden: 120 sek: Testas genom att skapa 20 drinkar och
tima dem. Detta har testas utan vätska, och är uppfyllt.
4.6.2
Applikation
5. Applikationen ska kunna kommunicera med styrenheten via bluetooth:
En bluetooth-modul kopplades in i en PC, varpå en bluetooth-transceiver koppladens
in i styrenheten mot pinnarna Ground, VCC, RXD och TXD (Read och Transmitt).
Bluetooth-transceivern dök upp på PC:n som HC-06, och ett tecken testades att skickas
mellan styrenheten och PC:n. Tecknet kunde skickas fram och tillbaka. Kravet är testat
och uppfyllt (endast för PC).
6. Designen ska vara enligt standard för androidapplikationer: Applikationen
använder sig av en standardstyle för androider, samt använder standardknappar och
menyupplägg för android style. Kravet är uppfyllt.
7. Applikationens kod skriven på engelska: Applikationens kod är skriven på engelska, utom på de ställen där texten syns i applikationen. Kravet är uppfyllt.
8. Applikationen ska meddela om en flaska ska bytas: Då lastcellen ännu inte är
implementerad finns det inget sätt att veta om en flaska är tom. Kravet är inte testat
eller uppfyllt.
9. Applikationen ska meddela vid paus, fel, start, klar: Applikationen meddelar
när en drink startas och när den är klar, samt vid fel. Applikationen kan inte pausas
Bottender
47
4.6. TEST OCH UTVÄRDERING
KAPITEL 4. RESULTAT
i drinktillverkning. Detta testades genom att starta ca 20 drinkar och se att rätt kommando visades, vilket det gjorde. är testat och uppfyllt.
10. Visa valbara drinkar i en lista: Applikationen visar valbara drinkar i en lista.
Testades genom att kontrollera att drinkarnas ingredienser verkligen satt monterade.
Applikationen startades om emellan och kontrollerades igen ca 5 gånger. Kravet är testat
och uppfyllt.
11. Applikationen ska vara kompatibel med Samsung Galaxy 4 tab: Applikationen går att köra på Samsung Galaxy 4 Tab. Detta har testats genom att ladda in
programmet på en Samsung Galaxy 4 Tab, coh kontrollera så att alla funktioner fungerar
normalt. Kravet är testat och uppfyllt.
4.6.3
Styrenhet
12. Kommunicera med applikationen. (Skicka och ta emot): Kommunikation
mellan styrenheten och applikationen testades genom att skapa ett enkelt testprogram
som skickade ett tecken till applikationen, som då skulle skriva ut det tecknet i en
lista. Ett svarstecken skickades då från applikationen och skrevs ut i styrenhetens ”serial
monitor” som ingår i arduinos utvecklingsmiljö. Kravet är testat och uppfyllt.
13. PWM till transportsystemet: Testades att skicka PWM-signaler till motorn i
transportsystemet, som då körde åt ena hållet. Vid byte av sekvensen på signalerna
körde motorn åt andra hållet. Kravet är testat och uppfyllt.
14. Spänning till flödesreglage: Från styrenheten skickas spänningsignaler till de
olika flaskornas lysdioder. Detta är testat genom att kontrollera att dioderna lyser vid
rätt tillfällen när en drink skapas. Kravet är testat och uppfyllt.
15. Ta emot information från plattform: Kravet är ej testat och ej uppfyllt.
16. Omvandla värde från lastcell: Kravet är ej testat och ej uppfyllt.
4.6.4
Mekatronik
Transportering
17. Mekaniskt ihopkopplad med plattformen: Vagnen monterades på kuggremmen.
Vagnen förflyttades när remmen rörde sig. Kravet är uppfyllt.
18. Delsystem 3 ska kunna kopplas till styrenheten: Motorn som används till
transponering har testas att kopplas mot styrenheten och det fungerar. Kravet är testat
och uppfyllt.
19. Sladdar och elektronik hålls dolda: Elektronik förvaras i transportsystemet och
styrenheten med förbindelse med en kabel. Kravet är uppfyllt.
20. Plattformen ska flytta sig synkront med stegmotorn: Motorn som roterar ett
kugghjul som driver kuggremmen gör att vagnen flyttas synkront när motorn roterar.
Kravet är testat och uppfyllt.
Bottender
48
4.6. TEST OCH UTVÄRDERING
KAPITEL 4. RESULTAT
21. Motorn ska kunna rotera i både fram och backriktning: Insingnalerna till
motorstyrningen matades med olika sekvenser och motorn kunde rotera i både fram och
backriktning. Kravet är testat och uppfyllt.
22. Motorn ska kunna variera i hastighet: Motorns hastighet har testat att ändras
genom att sätta olika delays mellan signalerna som skickas till den. Ju högre delay desto
snabbare kör motorn. Kravet är testat och uppfyllt.
Flödesreglage
23. Flödesreglaget ska kunna kopplas till styrenheten: De inköpta ventilerna har
testas att kopplas mot styrenheten och de kan öppnas och stängas. Kravet är testat och
uppfyllt.
24. Systemet ska kunna kopplas till flaskor med standardstorlek på flasköppningen
(20-30 mm i diameter): Det köptes in droppkorkar som ventilen monterades på.
Droppkorken som används har testats på 5 olika tomflaskor med stor form och storleksvariation och har passat. Kravet är uppfyllt.
25. Öppna ventil vid signal: Transistor koppling på en kopplingsplatta gjordes. Ett
testprogram från Arduinokoret programmerades för att sköta styrningen. När programmet kördes öppnades och stängdes ventilerna när de skulle. Kravet är uppfyllt.
Plattform
26. Skickar information om uppmätta värden till applikationen via styrenheten: Kravet är ej testat och ej uppfyllt.
27. På plattformen ska ett vanligt dricksglas (höjd: 250mm, botten: 80mm i
diameter) kunna ställas utan att falla av under drift: Kravet har testats genom
att köra ett glas fram och tillbaka över 20 gånger. Glaset föll ej av utan stod stadigt.
Kravet är testat och uppfyllt.
28. Vagnens yta ska vara plan och “halkfri”: Kravet är uppfyllt.
4.6.5
Övriga krav
30. Modulär: Systemen sitter inte ihop med varandra förutom med olika sladdar som
går in i styrenheten. Kravet är uppfyllt.
31. Att projektet har godkänts på samtliga punkter med prioritering 1: Kravet
är ej uppfyllt.
33. Inkapslingen av elektroniken ska skydda mot direkt beröring “minst 12,5
mm”: Kontrollerat största öppningen är springan i transportsystemet på 10 mm Kravet
är uppfyllt.
34. Vid korrekt uppsättning ska inte flaskorna kunna falla ur upphängningssystemet:
Bottender
49
4.6. TEST OCH UTVÄRDERING
KAPITEL 4. RESULTAT
Flaskorna på upphängningssystemet har bytt plats och hängt flera dagar på samma plats
utan att falla. Kravet är uppfyllt.
43. Minimalt med vätskekontakt för enkelt underhåll: Metoden som valdes har
gjort att det inte finns mycket kontakt med vätska och slang eller liknande. Kravet är
uppfyllt.
44. Enkel att ta isär och sätta ihop för enkel rengöring: Om spill skulle inträffa
är det bara skruva på en skruv som sitter lättillgängligt på plattformen. För att sedan
lyfta bort locket och göra rent inuti. Kravet är uppfyllt.
Bottender
50
Kapitel 5
DISKUSSION
Analys av resultat
Prototypen är inte helt färdig då ventilerna inte är implementerade så en fullständig
slutsats kan inte lämnas. De resultat som finns ser lovande ut. Testkörning av transportsystemet ser bra ut, och de flesta av applikationens funktioner är klara. Alla funktioner
som krävs för tillverkning av en drink är helt klara.
Valet att programmera i Delphi var i princip redan bestämt vid starten av projektet,
då dataingenjören i projektteamet önskade vidareutveckla sina kunskaper i Delphi. En
diskussion uppstod då opponenter menade på att detta är ett förlegat och utdöende
språk. Vi mailade därför Embarcadero och frågade dem om detta var sant, och fick ett
långt mail som svar på detta. Svarsmailet finns att läsa i Appendix D.
Fördelar med vår prototyp gentemot de liknande produkter som tagits upp i rapporten
är framförallt att vår produkt inte har någon stor ram runt sig, vilken innebär att den
är lättare att passa in på ställen som inte har mycket utrymme. Det går dessutom att
hänga upp den på väggen, så att ingen bar eller bänkutrymme behövs över huvud taget.
Detta är något som ingen liknande produkt kan.
En annan stor fördel är att antalet flaskor kan varieras. Strukturen på applikationen ger
vidareutvecklare stor möjlighet till att bygga ut och ändra programmet. Allt i koden är
skrivet för att underlätta vidareutveckling. Att användaren direkt i applikationen kan
utöka eller minska antalet flaskor som kan ingå i systemet är något nytt. Detta öppnar
dessutom upp för möjligheten att produkten i framtiden skulle kunna säljas som en
utbyggbar produkt, d.v.s. att användaren kan köpa till tilläggsdelar såsom fler ventiler,
längre eller böjt transportsystem, mixer, ismaskin eller liknande.
Till skillnad från många andra produkter använder vi oss av magnetiska ventiler där de
flesta andra använder mekaniska ventiler. Detta är antagligen eftersom mekaniska ventiler ofta är billigare, och, vilket vi upptäckt nyligen, enklare att få att fungera korrekt. Mekaniska ventiler kanske hade varit ett bättre val, då de som sagt kan bli förhållandevis billiga och det nog hade varit lättare att sälja dem som tillägg till maskinen om användaren
vill utöka produkten. Dock så hade det sett bättre ut med magnetventiler.
Ett stort misstag var att inte beställa ventilerna tidigare in i projektet, då leveransen
tog väldigt lång tid, och första gången var ventilerna som kom inte särskilt bra för vårt
51
KAPITEL 5. DISKUSSION
ändamål. Detsamma gäller egentligen alla komponenter, beställningar borde gjorts så
fort som möjligt för att vara säkra på att det blir som man tänkt sig.
Det var svårare att införskaffa magnetventiler än vi hade trott från början. Vi försökte
hitta billiga magnetventiler att köpa i Sverige men de vi hittade kostade runt 1000 kr st
och om de hade använts hade prototypens pris gått upp avsevärt. Ventilerna beställdes
därför från Kina, vilket resulterade i en lång leveranstid.
För att kunna få en fungerade produkt även utan helt fungerande ventiler användes lysdioder för att simulera ventiler. Detta gjorde det möjligt att mer utförligt testa systemet
trots avsaknaden av ventilerna.
Resultatet landade inte långt ifrån hur tanken var från början att det skulle bli. Ett
misstag var att inte avgränsa prototypen mer, då det var väldigt många delar som skulle
göras samtidigt enligt ganttschemat (Se Appendix E).
Tidsuppfattning
Tiderna har inte stämt helt med uppskattade tider, t.ex. drog motorstyrningen ut mycket
på tiden, och applikationen tog längre tid än förväntat att göra, då ingen av oss har
hanterat databaser innan. Det tog mycket tid att få grepp om hantering av databasen
samt hur den skapas från applikationen. Mer tid än planerat har lagts på projektet, ca
100 timmar extra.
Många saker i projektet påverkades av den tidsbrist som uppstod drygt i mitten av
projektet. Då motorstyrningen tog väldigt mycket oväntad tid bestämde vi oss för att
”avgränsa” oss från trådlös kommunikation mellan applikation och styrenhet, samt från
att använda en lastcell för vägning av vätskan, då maskinen kan fungera även utan dessa.
Analys av budgeten
Priset har hållits nere utan att påverka kvalitén på prototypen för mycket. Från början
kopplades en egen H-brygga ihop för att spara pengar, men då vi led av tidsbrist och
kortet inte skulle hinna etsas ut köptes istället en färdig shield in som enkelt kopplades
ihop med Arduinon. Kortet kostade därför ca 150 kr mer än vad det hade gjort med det
egna kortet.
Det hade behövts tittas mer på olika sätt att tillverka ramverket på. Kanske finns det ett
ännu billigare alternativ vad gäller material. Den ram som användes användes framförallt
eftersom Berghems Mekaniska AB sponsrade med den.
Om vi hade fått ventilerna att fungera som tänkt hade en helt fungerande prototyp
funnits med en total kostnad under 5000 SEK. Projektgruppen är nöjd med hur pass
modulär prototypen blev, då detta förmodligen kommer hjälpa till med vidareutveckling
av prototypen.
För att lyckas med att göra en bättre prototyp ville gruppen från början ha en till medlem eftersom projektet var stort. Tanken var att den medlemmen skulle fokusera mer
på de olika elektriska lösningarna som gruppen nu har lagat mycket tid på. Exempel var
när motorstyrningen skulle tas fram. Alla komponenter köptes in för att sedan lödas fast
på ett kretskort som skulle konstrueras av gruppen själv. Vid uppkoppling mot en kopp-
Bottender
52
KAPITEL 5. DISKUSSION
lingsplatta blev det fel och motorn betedde sig inte som den skulle. När problemet var
fixat var det försent att göra kretskortet och en färdig shield var tvungen att införskaffas.
Efter att kursen är färdig så kommer vi forsätta med att arbeta för att få ihop en riktigt
bra prototyp. Det finns en del pengar kvar som vi kan utnyttja från Almi för att testa
andra idéer och få prototypen snyggare och ännu bättre. Vi är dock nöjda med resultatet
och är motiverade att fortsätta med dess utveckling!
Bottender
53
KAPITEL 5. DISKUSSION
Bottender
54
Kapitel 6
SLUTSATS
Projektet har visat att det går att ta fram en drinkplandarmaskin som kostar mindre
än 5000 kr för komponenter. Detta då den har möjlighet till sex stycken olika flaskor.
Prototypen som har tagits fram har uppskattats till en komponentkostnad runt 3000 kr.
Applikationen som har utvecklats till maskinen har funktionalitet för att starta en drink,
lägga till recept och ingredienser samt tömma eller återskapa databasen. Det finns funktioner för att välja mot vilken COM-port applikationen ska kopplas, samt om den istället
ska kopplas till en tillhörande simulator. Antalet flaskpositioner kan utökas/minskas i
applikationen.
Maskinen är modulär på det sättet att den består av olika delar som inte sitter ihop
med varandra förutom de spänning- och signalsladdar som går in i styrenheten. Maskinen består av fyra stora delar. Mekatronik delen som består av ett transportsystem, en
upphängnongsanordning och ett flödesreglage bestående av en ventil per flaska. Styrenheten innefattar ett arduinokort som fungerar som mellanhand mellan applikation och
resten av maskinen. En applikationen fungerar som användargränssnitt.
Eftersom det är uppbyggt på detta sätt så är det relativt enkelt att byta ut olika delar
och lägga till nya om man skulle vilja.
Tre stora saker som gör att maskinen skiljer sig mot andra produkter som gruppen har
jämfört med är att den inte är i någon ram, utan mer modulär. Den använder sig av
elektriska ventiler istället för mekaniska, en applikation som gör att användaren kan
bestämma hur många flaskor som finns monterade om man skulle vilja lägga till fler.
Uppbyggnaden av en hel maskin från grunden har gett mycket lärdom. Från applikation
till rörliga delar med mikrokontrollerstyrning. Det har ingått många nya komponenter
som gruppen inte har arbetat med innan.
Från alla avgränsningar som gjorts så kan man alltid bygga vidare på de för att få
en mer avancerad maskin. Priset kommer öka med fler funktioner och hjälpmedel. Det
gäller då att hitta en balans för pris och funktion. Exempel på vidareutveckling är bl.a.
att maskinen skulle kunna använda fler vagnar för att göra flera drinkar samtidigt. En
station som lägger is i glaset och en annan station som lägger till lime i glaset skulle
kunna implementeras. Applikationen kan också vidareutvecklas genom en databas som
55
KAPITEL 6. SLUTSATS
möjliggör för olika användare och delning av recept på nätet. En funktion som hjälper
en genom att säga vilka flaskor som ska bytas för att göra en viss drink hade varit bra
att ha.
Figur 6.1: Skriven av Mattias Sjögren, Mekatronikingenjör och Camilla Lenfors, Dataingenjör.
Bottender
56
Litteratur
[1]
Barobot. Barobot source repository. Kontrollerad: 2015-06-03. code.google.com.
url: https://code.google.com/p/barobot/.
[2]
Diffen. Bluetooth vs. Wi-Fi. Kontrollerad: 2015-06-03. www.diffen.com. url: http:
//www.diffen.com/difference/Bluetooth_vs_Wifi/.
[3]
Karl Nikka Emil. Hur funkar det? 408-409. 2013.
[4]
Diffen. Bluetooth vs. Wif. Kontrollerad: 2015-06-03. www.diffen.com. url: http:
//www.diffen.com/difference/Bluetooth_vs_Wif.
[5]
OmWLAN. Vad alla borde veta om WiFi. Kontrollerad: 2015-06-03. omWLAN.se.
url: http://www.omwlan.se/artiklar/wifi.aspx.
[6]
Bradley Mitchell. What is the Range of a Typical Wi-Fi Network? Kontrollerad: 2015-06-03. About.com. url: http : / / compnetworking . about . com / cs /
wirelessproducts/f/wifirange.htm.
[7]
Phil Belanger. 802.11n Delivers Better Range. Kontrollerad: 2015-06-03. WiFiPlanet, Quinstreet Enterprise. Maj 2007. url: http://www.wi-fiplanet.com/
tutorials/article.php/3680781.
[8]
Arduino. What is Arduino? Kontrollerad: 2015-06-03. Arduino. url: http://www.
arduino.cc/.
[9]
Electro:kit. Arduino. Kontrollerad: 2015-06-03. Electrokit Sweden AB. url: http:
//www.electrokit.com/arduino.html.
[10]
James Bruce. Arduino vs Raspberry Pi: Which Is The Mini Computer For You?
Kontrollerad: 2015-06-03. MakeUseOf. Maj 2013. url: http://www.makeuseof.
com/tag/arduino- vs- raspberry- pi- which- is- the- mini- computer- foryou/.
[11]
Brad Bourque. Arduino vs. Raspberry Pi: Mortal enemies, or best friends? Kontrollerad: 2015-06-03. Digital Trends. Mars 2015. url: http://www.digitaltrends.
com/computing/arduino-vs-raspberry-pi/.
[12]
Merriam-webster. engine. Kontrollerad: 2015-06-03. Merriam-Webster, Incorporated. url: http://www.merriam-webster.com/dictionary/engine.
[13]
Learn Engineering. DC Motor, How it works? Kontrollerad: 2015-06-03. LearnEngineering.org. Sept. 2014. url: https : / / www . youtube . com / watch ? v =
LAtPHANEfQo.
[14]
Mario Salutskij. Elmotorn – så fungerar den. Kontrollerad: 2015-06-03. Bonnier
Tidskrifter AB. Febr. 2014. url: http://teknikensvarld.se/elmotorn- safungerar-den-116707/.
57
LITTERATUR
LITTERATUR
[15]
biowiki. The Boyer Hypothesis. Kontrollerad: 2015-06-05. biowiki.ucdavis.edu. url:
http://biowiki.ucdavis.edu/@api/deki/files/313/A02rotorstator.gif.
[16]
The free encyclopedia Wikipedia. Stepper motor. Kontrollerad: 2015-06-03. en.wikipedia.org.
Maj 2015. url: http://en.wikipedia.org/wiki/Stepper_motor.
[17]
Drivteknik.nu. PRINCIP - STEGMOTOR. Kontrollerad: 2015-06-03. Drivteknik.nu.
url: http://www.drivteknik.nu/skolan/motor/stegmotor.
[18]
Alexan e. How do I know whether a circuit (originally for 5 wire) will work for four
wire stepper motor? Kontrollerad: 2015-06-03. electronics.stackexchange.com. Dec.
2013. url: http://electronics.stackexchange.com/questions/94734/howdo- i- know- whether- a- circuit- originally- for- 5- wire- will- work- forfour-wire.
[19]
wikipedia. H-brygga. Kontrollerad: 2015-06-05. sv.wikipedia.org. April 2014. url:
http://sv.wikipedia.org/wiki/H-brygga.
[20]
bmanishap. Solenoid Valves. Kontrollerad: 2015-06-05. oktober 2012. url: https:
//www.youtube.com/watch?v=9dqpmg7mz44.
[21]
LAUMAS Elettronica. Single-point load cell / aluminum. Kontrollerad: 2015-06-05.
www.directindustry.com. url: http://www.directindustry.com/prod/laumaselettronica/product-39615-964223.html.
[22]
Kjell Company. Avståndssensor. Kontrollerad: 2015-06-03. Kjell Company. url:
http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/
avstandssensor-p87891#ProductDetailedInformation.
[23]
The Inebriator - Jake. The Inebriator- Arduino powered cocktail machine. Kontrollerad: 2015-06-03. www.theinebriator.com. Maj 2014. url: http://www.theinebriator.
com/.
[24]
Party Robotics. Kontrollerad: 2015-06-03. Party Robotics Store. 2015. url: http:
//partyrobotics.com/.
[25]
Embarcadero. The Fastest Connected App Platform for Windows and Beyond.
Kontrollerad: 2015-06-03. Embarcadero Technologies, Inc. url: http : / / www .
embarcadero.com/products/delphi.
[26]
Embarcadero. The FireMonkey Framework in RAD Studio- The multi-device, true
native app platform. Kontrollerad: 2015-06-03. Embarcadero Technologies, Inc.
url: https://www.embarcadero.com/products/rad-studio/firemonkey.
[27]
Developer.android.com. Saving Data in SQL Databases. Kontrollerad: 2015-06-03.
developer.android. url: http://developer.android.com/training/basics/
data-storage/databases.html.
[28]
Mikael Antonsson. Martin Lindahl. Anders Lundström. Patrik Rodstedt. Byggnation och programmering av ett datorstyrt bordshockeyspel. Kontrollerad: 2015-0708. http://smarp.zoomy.org/bordshockey/rapport.pdf. pp. 16-17. 2008.
[29]
vega. Dosör standard. Kontrollerad: 2015-06-04. www.vega-direkt.se. url: http://
www.vega-direkt.se/glas/allt-for-baren/dosorer/dosor-standard.html.
[30]
ESSKA. 2/2-vägs magnetventil - vatten hydraulolja - 0 till 35 bar - mässing. Kontrollerad: 2015-06-04. www.esska.se. url: http://www.esska.se/esska_se_s/
2/2-vaegs-magnetventil-vatten-hydraulolja-0-till-35-bar-maessing207219101003-13420.html.
Bottender
58
LITTERATUR
LITTERATUR
[31]
Kabetex AB. Kabetex kunskap - din trygghet! Kontrollerad: 2015-06-03. Kabetex
AB. url: http://www.kabetex.se/.
[32]
W. Richard Stevens. TCP/IP Illustrated. Kontrollerad: 2015-07-06. 16:de upplagan. Reading : Addison-Wesley. pp. 169-173. Vol. 1 2000.
[33]
Elektro:kit. Stegmotor 400 steg/varv bipolär. Kontrollerad: 2015-06-03. Electrokit
Sweden AB. url: http://www.electrokit.com/stegmotor- 400- steg- varvbipolar.49047.
[34]
Lewis Loflina. Connecting the Arduino to a L298N H-Bridge. Kontrollerad: 201506-05. www.bristolwatch.com. url: http : / / www . bristolwatch . com / L298N /
L298N_arduino.htm.
Bottender
59
LITTERATUR
Bottender
LITTERATUR
60
Kapitel 7
BILAGOR
Appendix A- Kravspecifikation
Appendix B- Databas
Appendix C- Kraftuträkning
Appendix D- Brev från Embarcadero
Appendix E- Ganttschema
61
Bottender
1
Bottender
APPENDIX A­ ​
KRAVSPECIFIKATION Bottender
Version 1.1
Status
Granskad
Godkänd
2
Bottender
PROJEKTIDENTITET
VT2015
Bottender
Högskolan i Halmstad, IDE
Namn
Ansvar
Telefon
E-post
Mattias Sjögren
076-1705269
Sjomat10@student.hh.se
Camilla Lenfors
070-358 96 68
camlen12@student.hh.se
Kursansvarig​
: Björn Åstrand, Björn.astrand @hh.se
Handledare:​
Stefan Byttner, Hassan Mashad Nemati.
DOKUMENTHISTORIK
Version
Datum
Utförd förändring
Utföra av
1.0
2015.02.17
Första utkastet
Grupp
1.1
2015.05.09
Andra utkastet
Grupp
Granskad
3
Bottender
1
INLEDNING
Denna kravspecifikation redogör för en ​
prototyp ​
som ska kunna blanda drinkar enligt önskemål,
med andra ord en drinkblandarmaskin. ​
Prototypen ​
ska kunna användas som ett redskap för
bartenders eller som underhållning samt redskap för privatpersoner.
Prototypen ​
är en maskin som via kommandon från en applikation blandar en färdig drink åt
användaren. Id​
én
​till detta projekt kommer framförallt från diskussioner om att det tar alldeles för
lång tid att beställa sin drink i barer och på krogar. Om man dessutom sätter sig i bartenderns
situation så kan det vara väldigt stressigt i vissa situationer.
Det finns redan många varianter ​
av ​
en sådan produkt, men det är sällan, om ens någonsin, man
faktiskt ser en sådan användas i vardagen. Detta kan bero på att de ofta är väldigt stora och
otympliga, men framförallt eftersom de kan vara dyra att producera.
Tanken med denna produkt är att den till skillnad från många av de redan existerande liknande
produkterna ska vara så billig som möjligt att producera, samt att den ska vara modulbaserad.
Detta eftersom den då kommer att vara enklare att integrera i barer och liknande. Även i de barer
med lite utrymme ska det gå att enkelt finna utrymme åt maskinen.
Kraven i detta dokumentet beskrivs enligt tabellen nedan. Den första rutan beskriver kravets
nummer. Den andra rutan beskriver kravets status, den kan vara original, reviderad och utgånget.
Den tredje rutan ger en kort beskrivning av kravet. I den sista rutan ges en prioritet mellan 1-5, där
1 har högst prioritet.
Krav nr.
Förändring
Kravtext för krav
Prioritet.
1.1 Parter
Projektet är en egen idé och det finns därför ingen kund eller beställare. Handledare för projektet
är Stefan Byttner och Hassan Mashad Nemati. Utförare av projektet är Camilla och Mattias från
IDE-sektionen med inriktningarna data- och mekatrionikingenjör.
1.2 Syfte och mål
Syftet med produkten är att minska kötider i barer och restauranger samt underhålla väntande
kunder. Produkten ska fungera som ett hjälpmedel till bartendern, genom att blanda simplare
drinkar medans bartendern fokuserar på annat.
Målet är att få fram en fungerande prototyp som kan blanda minst 2 olika drinkar i tid till Utexpo.
4
Bottender
1.3 Användning
Produkten ska användas av bartenders, restaurangpersonal eller privatpersoner för att underlätta
arbetet att göra en drink.
2
ÖVERSIKT AV SYSTEMET
2.1 Grov beskrivning av produkten
P​
rototypen ​
är​
en drinkmaskin som ska vara moduluppbyggd. Alla delar i systemet styrs från en
styrenhet. Kortet får kommandon från en applikation. I applikationen ska man kunna välja vilken
slags drink man vill ha. Efter att en drinks ha valts så sätts systemet igång. Ett glas förflyttas mellan
olika flaskor med ett transportsystem. Glaset fylls på med de olika vätskor som receptet från
drinken säger därefter är programmet färdigt. Se Figur 1.
Figur 1.​
Översikt över hela systemet. Via en applikation på en androidenhet skickas instruktioner till ett mikrokontrollerkort som
sedan skickar vidare nödvändig information till ventiler, motor och övriga delar såsom lampor, våg mm.
5
Bottender
2.2 Produktkomponenter
Till prototypen kommer följande komponenter behövas:
○
○
○
○
○
○
○
○
Applikation som gränssnitt mot användaren.
Bluetoothtransciever för kommunikation mellan applikation och mikrokontrollerkort.
Styrenhet som gränssnitt mellan applikation och övriga delsystem.
Transporteringssystem för glas eller vätska.
Ventiler samt kork-konstruktion för kontroll avflödesgenomströmningen.
(Våg för kontroll av vätskemängd i glas.)
Belysning.
Upphängningssystem för flaskor.
2.3 Beroende till andra system
○ 50 Hz 230V standard svenskt eluttag.
○ En Androidenhet.
2.4 Ingående delsystem
1. ​
APPLIKATION
2. STYRENHET
3. TRANSPORTERING
4. FLÖDESREGLA​
GE
5. PLATTFORM
2.5 Avgränsningar
o
Ismaskin​
.
o
D​
atabas för lagring av recept.
o
Effektkontoll.
o
Mixer.
o
ID-kontroll
o
Extern kylbehållare för alkoholfria drycker.
o
Fler vagnar för snabbare resultat.
o
Inloggning för personlig sida.
6
Bottender
o
Enklare påbyggnadsansatser.
2.6 Designfilosofi
P​
rototypen ska vara lätt att sätta upp och en liten uppsättning med 5-6 flaskor ska inte kosta mer
än ​
50
​00 kr. Det ska vara lätt att byta och fylla på en existerande flaska. ​
Systemet ska var modulärt,
och bestå av separata delar som är enkla att byta ut​
.
2.7 Generella krav på hela systemet
1
Utgått
2015.05.09
Prototypen ska kunna transportera en färdig drink utan
att spilla.
1
1
Reviderat
Prototypen ska kunna transportera en färdig drink utan
att spilla.
2
2
Original
Användaren ska i applikationen kunna välja mellan de
drinkar där ingredienser finns för tillverkning.
4
3
Original
Prototypen ska kunna göra minst två olika drinkar.
1
4
Utgått
En drink ska göras under tiden: 60 sek
3
4
Reviderat
2015.05.09
En drink ska göras under tiden: 120 sek
3
3
DELSYSTEM 1 - APPLIKATION
För att kommunicera med själva maskinen behövs en applikation som kan "prata" med
styrenheten. Applikationen öppnas och hanteras av en användare, som då kan ange vilken drink
som ska produceras, eller ställa in vilka flaskor som för tillfället finns i flaskstället. Se Figur 2.
Figur 2.​
Översiktsbild över Delsystem 1, Applikation. En användare startar applikationen från en androidenhet (alternativt en dator),
och kan sedan i applikationen välja önskad dryck. Instruktioner skickas sedan vidare till Delsystem 2, Arduinokortet.
7
Bottender
3.1 Inledande beskrivning av delsystem
Delsystem 1 består av en Android-applikation​
.​
Applikationens syfte är att visa användaren en lista
med alla drinkrecept, så att användaren kan välja vilken drink som ska göras. Olika listor över
recept ska kunna visas och tillverkningsprocessen ska kunna startas från applikationen.
3.2 Gränssnitt
5
Original
Applikationen ska kunna kommunicera med delsystem 2 via
bluetooth.
1
3.3 Designkrav
6
Original
Designen ska vara enligt standard för androi​
d​
applikationer.
2
7
Original
Applikationens kod skriven på engelska.
1
3.4 Funktionella krav för delsystem
8
Original
Applikationen ska meddela om en flaska ska bytas.
3
9
Original
Applikationen ska meddela vid paus, fel, start, klar.
1
10
Original
Visa valbara drinkar i en lista.
1
11
Original
Applikationen ska vara kompatibel med samsung 4 tab.
1
8
Bottender
4
DELSYSTEM 2 - MIKROKONTROLLERKORT
Skickar signaler till Delsystem 3 och 4. Tar emot en signal från Delsystem 5. Se Fi​
gur 3.
Figur 3.​
Delsystem får via trådlös kommunikation instruktioner från en applikation. Beroende på instruktionerna skickar sedan
styrenheten PWM-signaler till Delsystem 3, en signal till Delsystem 4 eller en strömsignal till Delsystem 5.
4.1 Inledande beskrivning av delsystem
Styrenheten i Delsystem 1 ska skicka PWM-signaler till Delsystem ​
3.​
Det ska även skicka en
strömsignal till Delsystem 4. Styrenheten ansluter till Delsystem 1 via trådlös kommunikation.
4.2 Gränssnitt
12
Original
Kommunicera med​
D​
​
elsystem 1. (Skicka och ta emot)
1
13
Original
PWM till ​
Delsystem​
3​
​
.
1
14
Original
Spänning till ​
Delsystem ​
4.
1
15
Original
Ta emot information från ​
Delsystem ​
5.
5
4.3 Funktionella krav för delsystem
16
Original
Omvandla värde från lastcell.
5
9
Bottender
5
DELSYSTEM 3 - TRANSPORTERING
Transportsystemet ska transportera glaset till vätskan eller vätskan till glaset. Delsystemet ​
tar emot
signaler ​
från Delsystem 2. Se Figur 4.
Figur 4.​
Delsystem 3 får en signal från styrenheten.
5.1 Inledande beskrivning av delsystem
Delsystemet tar emot PWM signaler från Delsystem 2.
5.2 Gränssnitt
17
Original
Mekaniskt ihopkopplad med Delsystem 5.
1
18
Original
Delsystem 3 ska kunna kopplas till Delsystem 2.
1
Sladdar och elektronik hålls dolda.
3
5.3 Designkrav
19
Original
5.4 Funktionella krav för delsystem
20
Original
Delsystem 5 ska flytta sig synkront med stegmotorn.
1
21
Original
Motorn ska kunna rotera i både fram och backriktning.
1
22
Original
Motorn ska kunna variera i hastighet.
2
10
Bottender
6
DELSYSTEM 4 - FLÖDESREGLAGE
Flödesregla​
g​
et ska öppna och stänga flödet av vätska från en flaska.
Figur 5.​
Delsystem 4 får en konstant spänningssignal från Delsystem 2, vilket får ventilen att öppnas för vätskegenomströmmning.
6.1 Inledande beskrivning av delsystem
Delsystemet får signal ifrån Delsystem 2 i f​
or​
m av on/off. Medan signalen är på on ska vätska
flödas igenom. När signalen slås om till o​
ff​
ska vätskeflödet strypas.
6.2 Gränssnitt
23
Original
Kopplas till Delsystem 2.
1
Systemet ska kunna kopplas till flaskor med standardstorlek
på flasköppningen(​
20-30 ​
mm i diameter).
1
6.3 Designkrav
24
Original
6.4 Funktionella krav för delsystem
25
Original
Öppna ventil vid signal.
1
11
Bottender
7
DELSYSTEM 5 - PLATTFORM
Detta Delsystem ska monteras på Delsystem 3. Systemet ska vara en “vagn” där ett glas ska
placeras. Med hjälp av delsystem 3 ska glaset åka mellan olika positioner och samla upp vätskor.
På transportplattformen ska eventuellt en våg vara integrerad så att den uppsamlade vätskan kan
vägas och kontrolleras. Se Figur 5.
Figur 6​
. Delsystem 3 transporterar Delsystem 5 till olika positioner. En lastcell i Delsystem 5 tar emot från och skickar information till
Delsystem 2.
7.1 Inledande beskrivning av delsystem
När ett glas är placerad på transport plattformen så kan plattformen föras till en position med
hjälp av Delsystem 3. Positionen den ställs på ska vara under en flaska så att glaset kan ta emot
vätskan som kommer därifrån. Vågen på plattformen ska kontrollera om den vätska som kommer
ner i glaset överensstämmer med det förväntade resultatet från Delsystem 2.
7.2 Gränssnitt
26
Original
Skickar information om uppmätta värden till Delsystem 1 via
Delsystem 2.
5
På delsystemet ska ett vanligt dricksglas (höjd: 250mm, botten:
80mm i diameter) kunna ställas utan att falla av under drift.
1
7.3 Designkrav
27
Original
7.4 Funktionella krav för delsystem
28
Original
Vagnens yta ska vara plan och “halkfri”.
1
12
Bottender
8
KRAV PÅ VIDAREUTVECKLING
29
Original
Dokumentation, källkod, produktskisser, komponentlista ska finnas.
1
30
Original
Modulär.
3
9
31
TILLFÖRLITLIGHET
Original
Att projektet har godkänts på samtliga punkter med prioritering 1.
1
Varje student skall lägga minst 20h/vecka.
1
10 EKONOMI
32
Original
11 KRAV PÅ SÄKERHET
33
Original
Inkapslingen av elektroniken ska skydda mot direkt beröring “minst
12,5 mm”.
1
34
Original
Vid korrekt uppsättning ska inte flaskorna kunna falla ur
upphängningssystemet.
2
12 LEVERANSKRAV OCH DELLEVERANSER
35
Original
Samtliga punkter med prioritering 1 ska vara uppfyllda vid leverans.
1
13 DOKUMENTATION
36
Original
Projektet dokumenteras under arbetets gång och skall underlätta för
framtida projekt och vidareutveckling.
1
13
Bottender
14 UTBILDNING
37
Original
Ingen specifik utbildning krävs för användaren.
38
Original
Ingen specifik utbildning krävs för installeraren.
39
Original
För utvecklaren krävs goda programmeringskunskaper.
1
40
Original
För utvecklaren krävs goda kunskaper inom elektronik
och mekatronik.
1
15 KVALITETSKRAV
41
Original
Slutlig produkt testas enligt testplan.
2
42
Original
Varje delsystem testas enligt testplan.
2
16 UNDERHÅLLSBARHET
43
Original
Minimalt med vätskekontakt för enkelt underhåll.
2
44
Original
Enkel att ta isär och sätta ihop för enkel rengöring.
1
14
APPENDIX B- DATABASMODELL
APPENDIX C- KRAFTRÄKNING
APPENDIX DBREV FRÅN EMBARCADERO
Brev från Embarcadero
Från: Malin Lagerquist [mailto:malin@alfasoft.se]
Skickat: den 9 april 2015 15:02
Till: Camilla Lenfors
Ämne: Delphi på skolorna
Hej Camilla,
Det verkar som att det tagit fart på Embarcadero med dina frågor, de är i full färd med att
försöka ta fram ett whitepaper men det lär ju ta lite tid innan det är klart.
De har tipsat om dessa böcker så länge.
Sen skriver Stephen så här
We certainly have a large number of delphi developers globally.
Despite the lack of focus around education Glenn and I have managed to get a deal done
with the schools in South Africa where we provide free Delphi (even if it is an older
version) to enable the language to be learned by what we would see as GCSE level
computer science students. This is seen 10,000+ students in the last 2 years work with
Delphi. We also have a big presence in Russia and Brazil in the education areas.
Object Pascal is a fantastic teaching language, recognised world over for its fit in
education. However we are “fighting” against Microsoft (C#) in this space who are pumping
more money than we earn probably as a company in education alone, also joining that
fight is Google (python). While neither language are as suited for education, the free
training and help that teachers are getting is making them the choice to go for. In addition,
C# developers are easy to find, thus making the jobs out there targeted to those people,
which means it seems like there are fewer jobs and thus becomes a downward spiral.
Interestingly C# and Delphi are from the same original “farther” so to speak, a Dane,
Anders Hejlsberg. There are a lot of similarities in the languages, its just Delphi / Object
Pascal is a better teaching language than C#. C# however is a lot easier than C/C++ to
learn.
In terms of the development team, we have a bigger team now than when Delphi 1 was
launched, (that’s not a dying language) we have year over year growth in developer
numbers since Embarcadero purchased the tools from Borland (again, that’s not a dying
language!)
Hoppas att det är till någon nytta!
Mvh Malin
Med vänliga hälsningar / Kind regards,
Malin Lagerquist
License Specialist
APPENDIX E­ ​
GANTTSCHEMA Camilla Lenfors & Mattias Sjögren
Besöksadress: Kristian IV:s väg 3
Postadress: Box 823, 301 18 Halmstad
Telefon: 035-16 71 00
E-mail: registrator@hh.se
www.hh.se