Kandidatuppsats
Civilingenjör i intelligenta system 300 hp
System för optisk mätning av linjeprofil
Elektroteknik 15 hp
Halmstad 2021-06-21
Andreas Johansson och Victor Svahn
i
Förord
Vi vill börja med att tacka Lantz Measuring AB för förtroendet att genomföra detta projekt. Ett extra tack till Christoffer Lantz som varit vår kontaktperson på företaget och som har svarat på frågor och givit råd under projektets gång.
Vi vill även tacka vår handledare, Håkan Pettersson, som bidragit med tips och ideér.
ii
iii
Abstract
Today’s industry is moving towards a fourth revolution based on digitilizing tech- nologies to reduce errors and streamline processes. When manufacturing hydraulics and other pressurized systems, couplings are pressed onto pipes and hoses that must be able to maintain an expected pressure. If such a coupling has not been pressed correctly, there is a risk of leakage. This can have devastating consequences such as a liquid polluting the environment, inhalation of toxic gas, an important work stop, or a pilot losing control of an aircraft.
Lantz Measuring AB therefore wants to develop a system that will be able to effect- ively ensure that these couplings have the correct shape around the entire coupling with an accuracy of 0.1 mm. With this information, the manufacturer should be able to ensure that a coupling is correctly pressed.
In this paper, a prototype for such a system has been developed as a contribution to a product that will meet Lantz Measuring’s requirements for accuracy, durability, and cost-effectiveness. The system is based on optical triangulation, which means calculating the line profile via the refraction of line lasers against the coupling using image sensors. Control and processing takes place with an FPGA and associated peripherals.
The prototype shows that the requirement for trueness in the measured value is met, but that there is room for improved precision. Sources of error and methods that contribute to improved results are presented. The work describes the development of the system, testing of precision, and analysis of results.
iv
v
Sammanfattning
Dagens industri rör sig mot en fjärde revolution som bygger på digitaliserande tekno- logier för att minska fel och effektivisera processer. Vid tillverkning av hydraulik och andra trycksatta system så pressas kopplingar på rör och slangar som måste kunna hålla ett förväntat tryck. Om en sådan koppling inte har pressats fast korrekt så finns det risk för läckage. Detta kan ge förödande konsekvenser genom att en vätska förorenar omgivningen, inandning av giftig gas, ett viktigt arbete stannar av, eller att en pilot tappar kontrollen över ett flygplan.
Lantz Measuring AB vill därför utveckla ett system som effektivt ska kunna säker- ställa att dessa kopplingar har rätt form kring hela kopplingen med en noggrannhet på 0,1 mm. Med denna information ska tillverkaren kunna säkerställa att en kop- pling är korrekt pressad.
I detta arbete har en prototyp för ett sådant system utvecklats som bidrag till en produkt som ska uppfylla Lantz Measurings krav på noggrannhet, hållbarhet, och kostnadseffektivitet. Systemet baseras på optisk triangulering, vilket innebär att beräkna linjeprofilen via brytningen av linjelasrar mot kopplingen med hjälp av bildsensorer. Styrning och processing sker med en FPGA och tillhörande krin- gutrustning.
Prototypen påvisar att kravet på riktighet i mätvärdet är uppfyllt, men att det finns utrymme till förbättrad precision. Felkällor samt metoder som bidrar till förbättrat resultat presenteras. Arbetet beskriver utvecklingen av systemet, test av precision, samt analys av resultat.
vi
vii
Innehållsförteckning
1 Introduktion 1
1.1 Inledning . . . . 1
1.2 Syfte . . . . 1
1.3 Kravspecifikation . . . . 2
1.4 Avgränsningar . . . . 2
2 Bakgrund/Teori 3 2.1 Optisk mätning av linjeprofil . . . . 4
2.1.1 Triangulering . . . . 4
2.1.2 Beräkningsmetoder . . . . 5
2.2 Mätkomponenter . . . . 6
2.2.1 Bildsensor . . . . 6
2.2.2 Laser . . . . 8
2.3 Digitalt inbyggt system . . . . 9
2.3.1 FPGA . . . 10
2.3.2 Mjukvara . . . 10
2.3.3 Gränssnitt . . . 11
3 Metod 13 3.1 Jämförelser och val av komponenter . . . 13
3.1.1 Bildsensor . . . 13
3.1.2 FPGA . . . 13
3.1.3 Laserval . . . 14
3.2 Implementation och konstruktion . . . 14
3.2.1 Initiering av sensor . . . 14
3.2.2 Avläsning av pixeldata . . . 15
3.2.3 Kolumnprocessning . . . 16
3.2.4 Geometri . . . 16
3.3 Test . . . 18
3.3.1 Konfiguration av FPGA . . . 18
3.3.2 Initiering av sensor . . . 19
3.3.3 Systemets precision . . . 19
3.4 Utvärdering och analys av resultat . . . 21
4 Resultat 22 4.1 Val av komponenter . . . 22
4.2 Beräkningar . . . 23
viii
4.3 Digitalt inbyggt system . . . 24
4.4 Test . . . 24
4.4.1 Konfiguration av FPGA . . . 25
4.4.2 Initering av sensor . . . 25
4.4.3 Systemets precision . . . 26
5 Diskussion 28 5.1 Testresultat . . . 28
5.2 Geometri . . . 28
5.3 Export av data . . . 29
5.4 PCB design . . . 30
5.5 Samhällskrav på teknisk produktutveckling . . . 30
6 Slutsats 32
INNEHÅLLSFÖRTECKNING ix
1. Introduktion
1.1 Inledning
Lantz Teknik AB är ett företag beläget i Halmstad som konstruerar och tillverkar automatiska maskiner som pressar kopplingar på rör och slangar som ska vara tryck- satta i hydraulik- och AC-system. Dessa maskiner säljs sedan världen över bland annat till de allra mest kända biltillverkarna och deras underleverantörer.
Att tidigt upptäcka en felaktigt pressad koppling motverkar potentiella kostnader och risker som kan uppstå om en koppling hamnar i ett hydraulik- eller AC-system.
Därför vill företagets dotterbolag, Lantz Measuring AB, sälja ett prisvärt mätinstru- ment till deras kunder som möjliggör noggrann och effektiv kontroll av att kopplingar är korrekt pressade av deras maskiner.
Uppdraget är tilldelat av Lantz Measuring AB och innebär att konstruera ett sys- tem för optisk mätning av en linjeprofil (yttre konturen) på cylindriska objekt genom att triangulera brytningen av linjelasrar mot dessa via fotoelektriska matrissensorer.
Signalen ska därefter processas och sändas vidare med hjälp av en FPGA för yt- terligare behandling. Systemet ska göra det möjligt för en arbetare att snabbt och enkelt kontrollera att linjeprofilen för pressade kopplingar är inom önskad tolerans med hög noggrannhet och på så vis säkerställa att de kommer att hålla för det tryck som förväntats.
Systemet går att konstruera med redan utvecklade sensorer, dock är urvalet av sensorer begränsat. Därför består uppgiften även av att utveckla egna sensorer med hjälp av lösa sensorelement och linjelasrar för att uppnå specifika egenskaper samt för att få ner priset.
1.2 Syfte
Syftet med projektet är att utveckla ett inbyggt optoelektroniskt system som mäter yttre konturen kring ett tvärsnitt, även kallat linjeprofilen, på cylindriska objekt, samt behandlar och sänder ut mätdatan. Lämplig metod och hårdvara för mätning, behandling, och sändning ska väljas så att de krav som specificerats av uppdrags- givaren uppfylls. Systemet ska bidra till en kostnadseffektiv produkt, lämpad för försäljning, med huvudsakligt syfte att på ett snabbt och pålitligt vis säkerställa att kopplingar pressats korrekt innan de monteras i ett tryckbelagt system.
1
1.3 Kravspecifikation
Kraven angivna av uppdragsgivaren innebär följande:
• Mätningar ska kunna utföras på cylindriska kopplingar med en enhetlig textur upp till 50 mm i diameter.
• Mätvärdet ska besitta en noggrannhet på 0,1 mm.
• All hårdvara skall tåla industrimiljö.
• Lämplig kommunikationsstandard ska användas för export av mätdatan.
• Storleken på systemet ska minimeras i möjligaste mån.
• Kostnaden för mätinstrumentet ska hamna på en prisvärd nivå.
• Mätinstrument ska vara utformat på ett sätt som ger objekten stor frihet att enkelt placeras oavsett form.
• Ett mätobjekt ska på en kort tid kunna föras in, mätas, och föras ut igen.
1.4 Avgränsningar
Projektet begränsas till att använda bildsensorer, med tillhörande optisk lins, lödade på breakout boards för enkel sammankoppling med övrigt system. Kretsen och tillhörande komponenter för styrning av sensorerna samt behandling och sändning av datan kommer att befinna sig på en färdig development board baserad på den FPGA som väljs ut i projektet. Färdiga lasrar med tillhörande optik för att projicera linjer kommer att användas. Den valda FPGA-tillverkarens mjukvarupaket kommer att användas för systemutveckling.
Introduktion 2
2. Bakgrund/Teori
Det finns redan idag ett utbud av olika optiska system för mätning av linjeprofil [1–4]. Dessa system är konstruerade för att kunna anpassa sig till flera olika app- likationer. Systemen består ofta av endast en enskild sensor inkapslad tillsammans med ett inbyggt digitalt system som behandlar och sänder ut datan från den en- skilda sensorn via en kommunikationsstandard. En negativ aspekt med detta för ett ändamål där ett flertal sensorer ska användas i kombination är att det då används ett inbyggt digitalt system per sensor, när det endast krävs ett sådant system totalt.
Genom att konstruera ett eget system kan endast nödvändiga komponenter använ- das och anpassas för en utvald miljö och ändamål. En annan nackdel med färdiga sensorer är att de ofta är dyra i förhållande till ändamålsspecifika system eftersom de besitter onödiga egenskaper. Detta projekt går ut på att skapa ett system för mätning av just cylindriska objekt och därför kan ett system konstrueras för just detta ändamål vilket kan bli fördelaktigt med avseende på storlek, pris, och miljö.
Relaterade studier finns kring tidigare, liknande delsystem. Ett exempel på ett sådant delsystem konstruerat av en CMOS
1bildsensor, FPGA
2, samt upprättad Ethernetkommunikation via vilken en bildström sänds [5]. Utförliga beräkningar kring nödvändig bandbredd vid dataöverföring presenteras, samt metoder som an- vänds i mjukvaran för att hantera dataströmmar in från en sensor, mellan delsystem i FPGAn, och ut över Ethernetbussen.
Ett liknande projekt är ett examensarbete [6], utfört 2012 på Högskolan i Halmstad.
Syftet med projektet var att bygga ett intelligent system som, med hjälp av en sensor, kunde instruera en legorobot att utföra vissa uppgifter. Komponenterna som an- vänds är FPGA och bildsensorer, vilket är samma typ av komponenter som kommer att användas i detta projekt. Även om det inte är exakt samma komponenter så kan inspiration hämtas ifrån detta arbete.
Ett annat exempel är David Williams [7], som noggrant beskriver initieringen av en bildsensor i programspråket Verilog
3. Williams använder sig av samma bildsensor men inte samma FPGA som kommer att användas i detta projekt. Inspiration finns att hämta om initieringen och styrning av sensorerna.
LAP [8] är ett exempel på ett företag som har skapat ett sensorsystem, uppbyggt av ett flertal sensorer, vilket fungerar till att mäta linjeprofilen av cylindriska objekt.
Det består av linjelasrar, högpresterande bildsensorer, samt övrigt digitalt system för att processa data. Lasrar projicerar raka linjer, vinkelräta mot den yta som ska mätas, och linjeprofilen avläses via brytningen av laserlinjerna utifrån kamerornas perspektiv. Systemet är ämnat för stålindustrin, och därför ska objekt mycket större och varmare än i detta projektets mätas. Dessa två skillnader bidrar till att systemet kräver egenskaper som inte är nödvändiga detta projekt och systemet är därför dyrare än vad som krävs i detta fall.
1
CMOS 2.2.1
2
FPGA 2.3.1
3
Verilog 2.3.1
3
2.1 Optisk mätning av linjeprofil
För att optiskt mäta linjeprofilen av ett objekt kan ett flertal metoder användas.
Det finns metoder som baseras på tid såsom time of flight (TOF), och metoder som baseras på fasskiftet hos det utsända och mottagna ljuset. En, för detta projekt, passande metod är att triangulera en lasers brytning med hjälp av en fotoelektrisk sensor. Anledningen till att denna metod lämpar sig så väl är att den kräver färre komponenter och enklare beräkningar än övriga metoder, men ändå kan uppfylla kraven på systemet.
2.1.1 Triangulering
Principen
Triangulering går ut på att identifiera positionen hos brytningen av en linjelaser längs ett objekt som ska mätas med hjälp av en fotoelektrisk matrissensor, även kallad bildsensor. Principen visualiseras i figur 2.1. Beskrivning av en linjelaser läses i avsnitt 2.2.2.
Kritiska komponenter är laser, sensor, och optisk lins. Dessa komponenter placeras ut med en viss geometri, relativt till mätobjektet, med vilken ett avstånd till mäto- bjektet sedan kan beräknas. Detta visualiseras i figur 2.3.
Figur 2.1: Grundprincip för sensorns funktion
Då projektet går ut på att mäta linjeprofilen kring ett cylindriskt objekt så kommer tre identiska sensorsystem för triangulering att placeras med 120 graders förskjut- ning kring den punkt där mätobjektet ska placeras.
Felkällor
Noggrannheten vid optisk triangulering beror delvis på tolkningen av reflektionen mot mätobjektet [9]. Om bredden av en laserlinje täcker mer än en pixel i bild- sensorn, vilket den ofta gör, kan ett centrum definieras genom att välja toppvärdet eller att beräkna ett medelvärde. Dessa metoder är dock endast tillräckliga då mäto- bjektet motsvarar en, mot laserkällan vinkelrät, plan yta. Skulle mätobjektet inte ha dessa egenskaper så måste hänsyn till eventuella felkällor tas. Fyra av dessa felkällor demonstreras i en två-dimensionell version i figur 2.2, principen är densamma.
Bakgrund/Teori 4
Figur 2.2: Felkällor vid avvikande mätobjekt. (a) Diskontinuitet i
reflektionsegenskaper. (b) Diskontinuitet av belysningspunkten. (c) Mittpunkten av lasern missar ytan. (d) Skuggning av laserns mittpunkt.
2.1.2 Beräkningsmetoder
För att det optiska trianguleringssystemet ska fungera optimalt krävs vissa egenskaper såsom optiskt fokus för hela mätområdet, samt att komponenter placeras ut på ett optimalt sätt. Detta görs genom att placera lasern och bildsensorn nära varandra för att uppnå en mindre formfaktor vid inkapsling, även om en teoretiskt optimal placering innebär ett längre avstånd.
Figur 2.3: Ofta använd anordning för projektets ändamål.
Fokus
Ekvation 2.1 beskriver sambandet som måste uppfyllas för att uppnå fokus för alla infallsvinklar ρ från en lasers reflektion då en ideal lins används, där α är bildvinkeln och β är sensorns lutning i förhållande till linsen [10]. Bildvinkel är ett begrepp inom fotografi och avser den vinkel inom vilken allt avbildas av kameran.
tan(β) = b
0tan(α) a
0(2.1) En anordning som enligt [10] vanligtvis används i system av den typ som ska utveck- las i detta projekt är den som demonstreras i figur 2.3. α kan användas för att beräkna β med hjälp av önskade värden på längderna a
0och b
0.
Bakgrund/Teori 5
Avstånd
En pixels positions representation av avstånd r mellan laserkällan och brytpunkten kan beräknas matematiskt enligt ekvation 2.2 med beteckningar enligt figur 2.3, där s i ekvationen är positionen på bildsensorn i längdenheter i y-led [10].
r = B(b
0sin(α) − s)
b
0cos(α) (2.2)
En annan metod som kan användas för att konvertera pixeldata till avstånd är kalibrering. Kalibrering går ut på att skapa en tabell med mätvärden från mätningar med mätanordningen på mätobjekt av kända mått. Noggrannheten av denna metod beror på antal kända mätvärden och är därför i teorin inte lika noggrann. Dock kan metoden i praktiken ge ett bättre resultat om man inte vet varje komponents placering och vinkel med extremt hög precision, vilket kan vara svårt. Mätningar där mätvärdet hamnar mellan kalibrerade, kända värden löses ut via interpolering.
Interpoleringen kan beräknas linjärt, men ett bättre mätresultat kan uppnås om interpoleringen är baserad på ekvation 2.2.
2.2 Mätkomponenter
2.2.1 Bildsensor
En bildsensor består av en matris av pixlar som kan konvertera fotoelektrisk inform- ation för att skapa en bild. En bildsensor använder sig av så kallade fotodetektorer som ofta består av kisel. När fotoner träffar fotodetektorerna kan elektroner i kislet absorbera energin. Detta fenomen är en slags intern fotoelektrisk effekt. Beroende på hur många fotoner som träffar pixeln uppstår en viss laddning som kan mätas för att få en uppfattning om ljusintensiteten från en reflektion eller ljusskälla.
De två vanligaste typerna av bildsensorer är CCD (Charged-Coupled Device) och CMOS (Complementary Metal–Oxide–Semiconductor).
CCD fungerar på så sätt att laddningen som skapats genom absorption av fotoner i varje pixel transporteras vidare med hjälp av ett horisontellt och vertikalt skiftre- gister [11], vilket illustreras till vänster i figur 2.4. Det horisontella skiftregistret flyttar ett steg åt vänster, som sedan kompletteras med ett vertikalt skiftregister vilket gör att varje laddning, en i taget, kan generera en ström och sedan förstärkas.
Denna procedur fortsätter tills varje pixel har laddats ur. När alla laddningar är konverterade till spänning kommer den slutliga signalen att digitaliseras med hjälp av en AD-omvandlare som oftast är ett separat chip.
I en CMOS-sensor har istället varje pixel en egen konverterare som låter laddningen generera en ström [11], vilket illustreras till höger i figur 2.4. Det finns även en switch för varje pixel som aktiveras en efter en och information kan läsas av. Samma procedur fortsätter för varje kolumn tills varje pixel är tom på laddning. Detta tillvägagångssätt är betydligt mer effektivt än CCD [12].
Det finns två olika sätt för bildsensorn att skanna en bild, Global eller Rolling Shutter. Rolling Shutter innebär att en pixelkolumn exponeras och avläses i taget
Bakgrund/Teori 6
Figur 2.4: CCD vs. CMOS illustration
[13]. Alla delar av bilden är alltså inte tagna vid exakt samma tillfälle och detta kan märkas ifall en bild tas av ett objekt som rör sig snabbt, då objektet hinner flyttas innan nästa kolumn skannas. Global shutter är istället att alla pixlar exponeras på samma gång, för att sedan efter en tid stänga alla pixlar [12]. Detta gör att ljus i varje pixel absorberas vid exakt samma tidpunkt.
Beroende på ifall man vill ha färg på den tagna bilden eller inte används antingen en färg- eller monokrom-sensor. En monokrom sensor registrerar all typ av ljus, oberoende på vilken färg ljuset är. Om en sensor t.ex. kan känna av vågläng- der i spannet 400-1000nm kommer varje pixel att registrera dessa våglängder och, beroende på hur många elektroner som emitteras, avgöra ljusintensiteten. Detta resulterar i att bilden får en gråskala eftersom det inte finns någon information om det absorberade ljusets våglängd.
Figur 2.5: Monokrom
Bakgrund/Teori 7
I en färgsensor har istället varje pixel ett färgfilter innanför linsen. Filtret släpper igenom ett smalare frekvensband än själva pixeln under, ett rött filter låter alltså bara rött ljus passera till pixeln osv. Filtren är utspridda över sensorn i ett mönster där femtio procent av alla filter är gröna, tjugofem procent röda och tjugofem procent blåa, detta för att människans öga är känsligare för den gröna färgen jämfört med de andra två.
Figur 2.6: Bild som beskriver hur ett färgfilter fungerar. Det röda filtret låter bara rött ljus passera osv.
Styrning av bildsensor
För att kunna extrahera relevant pixeldata från en bildsensor krävs det att ett antal digitala signaler och parametrar skrivs till och tas emot från sensorn via diverse pins.
Signalerna som ska till sensorn består generellt av en klockpuls som bestämmer den huvudsakliga frekvensen som sensorn körs med, en klockpuls för seriell data, och den själva seriella datan som ska skrivas till sensorns register. De parametrar som generellt är relevanta att skrivas är exponeringstid, horisontell blankningstid, vertikal blankningstid, start- och slutkolumn, samt start- och slutrad för avläsning.
De signaler som ska tas emot från sensorn är en pixelklockpuls som används för att mottagaren ska kunna synkronisera avläsningen av den parallella pixeldatan. Övriga signaler är vertikal synkronisering och horisontell synkronisering för att mottagaren ska veta när en bild och rad ska avläsas.
2.2.2 Laser
Laser (Light Amplification by Stimulated Emission of Radiation) är en enhet som stimulerar atomer eller molekyler för att sända ut ljus. När en elektron absorberar energi exciteras den till ett högre tillstånd som befinner sig längre bort från atomkärnans centrum. Detta tillståndet är väldigt instabilt vilket gör att elektronen snabbt faller tillbaka från det högre tillståndet till det lägre, energiskillnaden som uppstår mellan tillstånden sänds då ut i form av fotoner. Lasern sänder sedan ut dessa fotoner i form av en ljusstråle där alla fotoner är fas med varandra och har samma våglängd [14]. Beroende på vilken våglängd som fotonerna har kan lasern sända ut synligt, infrarött eller ultraviolett ljus. Det finns olika typer av linser som kan appliceras för att fokusera ljuset i en punkt eller en linje. En punktlaser använder sig av en sfärisk lins till skillnad från en linjelaser, vilken används i det här projektet, som använder sig av en cylindrisk lins.
Varje laser har en strålavvikelse (stråldivergens) vilket är ett mått på hur mycket stråldiametern ökar beroende på avståndet från ljuskällan. Kortfattat kan man
Bakgrund/Teori 8
förklara det så att ju längre avstånd från källan, desto större strålavvikelse. För att beskriva en lasers strålavvikelse används enheten milliradian, mrad. Vanligtvis brukar strålavvikelsen ligga mellan 0,3 till 2 mrad.
Figur 2.7: Olika storlek på laserspots vid samma avstånd med olika strålavvikelser.
Då strålning kan vara mycket farligt för ögon och hud klassas lasrar in i olika säker- hetsklasser. Det är många faktorer som påverkar hur farlig skadan kan bli som t.ex. vad lasern har för effekt, våglängd, spridning och hur länge man utsatts för ljuset. Om ögat utsätts för en laserstråle blir ögats lins som ett brännglas då ljuset fokuseras i samma punkt. Detta leder till näthinnan och syncellerna överbelastas.
Ögat har en blinkreflex som gör att man vid vissa våglängder blundar och skyddar ögat mot det farliga ljuset. Detta fungerar dock bara för vissa våglängder och där- för kan det vara viktigt att i vissa arbetsmiljöer använda en laser där blinkreflexen fungerar.
2.3 Digitalt inbyggt system
Ett digitalt inbyggt system är det elektroniska delsystem som styr övriga kom- ponenter, såsom mätkomponenter och databussar, genom att hantera dataflöden, både in och ut. Komponenter som vår typ av system baseras på kan till exempel vara digital signal processor hardwares (DSP) eller field-programmable gate arrays (FPGA). FPGAs har fördelen att kunna utföra parallella operationer i större ut- sträckning än DSPs, vilket är av intresse i detta projekt då tre sensorer ska nyttjas parallellt.
I
2C
I
2C är en multi-master, multi-slave, single-ended, seriell databus skapad av Philips Semiconductor, idag känd som NXP Semiconductors och används för att upprätta långsam kommunikation mellan komponenter i ett digitalt inbyggt system [15].
Protokollet är ett robust och flexibelt kommunikationsprotokoll som är mycket an- vändbart för kommunikation vid utveckling av ett digitalt inbyggt system [15].
Bakgrund/Teori 9
Figur 2.8: Logik för I
2C-kommunikation.
2.3.1 FPGA
En FPGA är ett chip bestående av omprogrammerbara logiska block, utplacerade i en matris, sammankopplade till ett fysiskt nätverk, vilket också är omprogram- merbart. En FPGA kan liknas vid en mikroprocessor med omprogrammerbar arkitek- tur för att kunna anpassas till förändringar eller för att åtgärda problem som upptäckts efter implementering i ett system. Möjligheten för en erfaren utvecklare att kunna anpassa och testa arkitekturen utifrån specifika behov kan ge upphov till avsevärt mer effektiva resultat. Möjligheten att kunna utveckla en egen arkitek- tur i iterationer genom tester är en funktion som, för en mindre erfaren utvecklare, möjliggör utveckling av en integrerad krets, vilket annars inte skulle vara rimligt.
FPGAs har även många general purpose input output (GPIO) som är användbara för att styra externa digitala komponenter. Till många FPGA-chip finns flera så kal- lade development boards som innehåller de komponenter och den kringutrustning som krävs för de flesta grundläggande applikationer, samt enkel tillgång till GPIOs.
Arkitekturen programmeras via kommandon lagrade i minnestyper som till exempel SRAM, Flash, eller EPROM. Dessa kommandon är formulerade i ett språk som benämns Hardware Description Language (HDL), eller Very High Speed Integrated Circuit Hardware Description Language (VHDL), eller Verilog.
2.3.2 Mjukvara
Hårdvarutillverkare, såsom Xilinx och Altera, erbjuder mjukvarupaket, som till ex- empel Vivado av Xilinx, för enkel generering av de kommandon som programmerar FPGAn. Dessa mjukvarupaket innehåller även färdiga arkitekturer, intellectual properties (IP), som kan användas och sammankopplas av utvecklare för att snabba på och förenkla designprocessen. Dessa IPs kan vara allt från olika slags gränssnitt till hela softcore processorer såsom MicroBlaze av Xilinx. IP-blocken sammanställs till en blockdesign som sedan konverteras till ett speciellt filformat kallat bitstream, som sedan laddas in i FPGAns internminne via en så kallad JTAG-anslutning.
Det finns även andra metoder än JTAG om dessa implementerats hårdvarumässigt.
Denna bitstream är vad som programmerar FPGAn.
Då dessa mjukvarupaket i kombination med tillhörande FPGAs används brett så finns det inspiration att hämtas till utveckling av grundläggande system såsom de delsystem som ska utvecklas i detta projekt.
Bakgrund/Teori 10
Figur 2.9: Blockdesign av ett Ethernetgränssnitt i Xilinx Vivado.
2.3.3 Gränssnitt
Olika versioner av gränssnitt kan användas för att sända mätdata vidare till en ex- tern enhet för ytterligare behandling. Gränssnitt med lägre överföringshastigheter tenderar att vara enklare att implementera, medans motsatsen gäller för gränssnitt med högre överföringshastigheter. Dock kan det i vissa fall krävas högre hastigheter för att sändningarna inte ska hamna efter det övriga systemet, ofta i applikationer som behandlar video i realtid. Frekvent använda kommunikationsstandarder anpas- sade för högre hastigheter är till exempel Ethernet och USB.
Gigabit Ethernet stödjer idag överföringshastigheter upp till 1 Gbps [16], beroende på version. Denna standard används brett inom industri på grund av stöd för relativt högt antal noder, bakåtkompabilitet med äldre versioner, och möjlighet för långa distanser mellan master- och slave-enhet.
USB 3.0 stödjer överföringshastigheter upp till 5 Gbps [17]. Denna standard kräver dock många avgifter för exempelvis det USB-ID som enheten måste erhålla för att kunna säljas, samt för användning av USB logotyp, för att kunna implemen- teras. Standarden är anpassad för anslutningar mellan system på kortare avstånd i förhållande till Ethernet. Kretsen som krävs för att upprätthålla versioner av hö- gre hastigheter bygger på intelligenta styrenheter, och kan därför bli kostsam att implementera i förhållande till hastigheten jämfört med Ethernet.
Bakgrund/Teori 11
Bakgrund/Teori 12
3. Metod
3.1 Jämförelser och val av komponenter
Jämförelser genomfördes med syfte att välja den metod eller komponent som är bäst lämpad för ändamålet. Metoden som användes för att välja ut komponen- terna gick ut på att börja med den komponent som är mest kritisk för att uppfylla kravspecifikationen, och sedan anpassa övriga komponentval efter denna. Det var viktigt att först bestämma precis vilka egenskaper som faktiskt behövs hos kompon- enten för att undvika att välja en överkvalificerad komponent vilket ofta leder till en högre kostnad. Slutsatser drogs tillsammans med uppdragsgivaren och baserat på den information som utvärderingen bidragit med valdes passande komponenter för projektet. Dessa komponenter, såsom sensorer och development board, köptes in av uppdragsgivaren Lantz Measuring AB. Se kapitel 4 för valda komponenter och deras specifikationer.
3.1.1 Bildsensor
Det första ämnet som undersöktes var vilken slags sensorteknologi som var bäst lämpad för optisk triangulering av en linjelaser då det är den mest kritiska delen i systemet. De två teknologier som vi fokuserade på var CCD och CMOS fo- toelektriska area-sensorer. CCD är den vanligaste typen av sensor för applikationen sedan länge tillbaka, dock har dagens CMOS-teknologi potentialen att vara bättre lämpad för detta projekt.
Utifrån diskussioner med uppdragsgivaren drogs slutsatsen att global shutter-teknik passar bäst för industriell mätning eftersom alla kolumner i varje bild tas vid samma tidpunkt. Vid rolling shutter-teknik kan ett felaktigt värde ges ifall mätobjektet skulle röra sig under mätningen, vilket behövde undvikas. Dagens CMOS sensorer har global shutter-teknik [18] samt erbjuder ett bättre utbud, kvalité och ett pris. De flesta sensorer klarar en bildfrekvens som är mer än tillräcklig för att en mätning ska kunna ske under ett relativt snabbt skede. Vid val av en monokrom eller färgsensor togs beslutet att använda en monokrom bildsensor eftersom endast ljusintensiteten för en specifik våglängd från en laser ska mätas. Detta kan alla pixlar i en monokrom sensor utnyttja och på så vis få en högre effektiv upplösning.
3.1.2 FPGA
Därefter forskades det kring valet av FPGA. Kravet var att det ska finnas en devel- opment board med board files och kringutrustning såsom USB- eller Ethernet-krets, samt tillräckligt många GPIOs och lagringsminne tillgängligt. Development board krävs för att få tillgång till FPGAns pins utan att behöva tillverka ett kretskort och löda, då vi inte hinner att utföra detta inom tidsramen. Antalet GPIOs bestämdes med hjälp av förundersökningen kring de tre bildsensorerna, där varje bildsensor be- höver ett visst antal GPIOs för att fungera. Storleken på lagringsminnet bestämdes av att minst tre bilder med P
hpixlar i höjd och P
bpixlar ska kunna lagras och där varje pixel byggs upp av 10 bitar. Kravet på storleken B i byte av lagringsminnet kan beräknas utifrån ekvation 3.1,
13
B = 10P
hP
b8 (3.1)
FPGAn måste även ha tillräckligt med logiska block för att klara av det som för- väntas utföras av systemet, det vill säga att köra tre sensorer med tillhörande al- goritm parallellt. En annan viktig aspekt är att det behövs en tillräckligt hög klockfrekvens för att kunna utnyttja sensorernas och datakommunikationens fulla potential.
3.1.3 Laserval
Vid val av laser var det viktigt att ljusstyrkan är jämn över hela linjen och inte faller av mot ändarna. Detta eftersom det då blir svårt för sensorn att läsa av linjen i det yttre mätområdet. Eftersom lasern kommer att placeras nära mätobjektet måste dess fokus ligga på ett kort avstånd, samt att linjen ska vara så tunn som möjligt.
Detta för att med hjälp av en algoritm för kolumnprocessing, få ett mer tillförlitligt mätvärde i Y-led.
Lasern behöver även ha en viss våglängd som ger optimal uppladdning av pixlarna i bildsensorn. Sensorns maximala kvanteffektivitet går att avläsa i tillhörande dat- ablad. Strålavvikelsen som nämns i avsnitt 2.2.2 måste beaktas och ju lägre detta värde är, desto mindre kommer linjens bredd att skilja sig åt på olika avstånd inom mätområdet. En homogen smal linjebredd är nödvändig för att erhålla korrekta mätresultat.
3.2 Implementation och konstruktion
En översiktlig förståelse över systemets funktion ges i figur 4.6.
Förberedelser gjordes genom att ladda ned så kallade board files, som tillhör devel- opment boarden. Detta för att avgränsa funktionerna i designstudion till de som är relevanta, med andra ord; möjliga att använda på development boarden i fråga.
Bland dessa filer ingår en constraint file som tilldelar namn till fysiskt användbara pins på FPGAn så att dessa kan användas i programmet.
3.2.1 Initiering av sensor
Varje sensor behöver initieras genom att skriva parametrar till dess cirka 200 register.
Detta görs via seriell datakommunikation över två specifika pins på varje sensor, en för seriell data och en för klockpuls. I
2C protokollet ansågs lämpligt för att skriva seriell data då det används brett inom digitalt inbyggda system [15].
Det första delmomentet gick ut på att upprätta kommunikation mellan FPGAn och en sensor för att skriva värden till sensorns register. Programmet är kodat i Verilog, uppbyggt av moduler strukturerade i lager, där det lägsta lagret för initieringspro- cessen är en modul som innehåller den grundläggande logiken som I
2C-protokollet bygger på.
Denna modul, som kan benämnas I
2C-modulen, kallas på av en modul i ett högre lager med den data som ska skrivas och även adressen på mottagaren. Modulen i
Metod 14
det högre lagret, som kan benämnas kärnmodulen, hämtar data ur en initieringsfil som sedan skrivs till sensorn i form av värden på parametrar och information om vilka register som dessa värden ska skrivas i. Under kommunikationsprocessen så uppdateras flaggor av I
2C-modulen som berättar för resterande delar av programmet vilket stadie i dataöverföringen som den befinner sig i. Kärnmodulen kallas på i sin tur av en huvudmodul som är det högsta lagret. Här tilldelas de GPIOs som är kopplade till sensorn, bland annat seriell data-pin och seriell data klockpuls-pin, till modulerna i FPGAn. Huvudmodulen får också uppdaterade flaggor av kärnmodulen för att förhindra logiska kollisioner som kan leda till att sensorn inte initieras korrekt eller att pixeldatan avläses fel.
Figur 3.1: Logik för seriell dataöverföring.
De huvudsakliga parametrar som kom att korrigeras var exponeringstid, horisontell blankningstid, vertikal blankningstid, start- och slutkolumn, samt start- och slutrad.
3.2.2 Avläsning av pixeldata
Kärnmodulen har även uppgiften att hantera avläsningen av pixeldatan. Detta sker genom att påbörja samplingen av en ny bild då den vertikala synksignalen från sensorn blir hög, och därefter avläsa pixlar synkroniserat med sensorns pixelklocka då den horisontella synksignalen från sensorn är hög, detta illustreras i figur 3.2.
Varje pixel består av 10 bitar som tas emot av sensorn parallellt över 10 GPIOs och lagras i en buffer för varje kolumn i en bild.
Figur 3.2: Logik för avläsning av pixeldata.
Metod 15
3.2.3 Kolumnprocessning
Det andra delmomentet gick ut på att implementera en metod som indentifierar positionen av en lasers brytning på sensorn längs varje kolumn. En, för ändamålet, passande algoritm implementerades för att utföra detta. Fördelen med att använda en FPGA är förmågan att kunna utföra parallella operationer, vilket vi ville utnyttja i detta projekt genom att köra algoritmen parallellt med den inkommande pixeldatan för möjligheten att behålla bildfrekvensen.
Då bilden av en laserlinje på sensorn är bredare än 1 pixel längs varje kolumn, vilket kan observeras i figur 3.3, så måste ett centrum c identifieras. Metoden som användes för detta går ut på att beräkna ett viktat centrum för en grupp sammanhängande pixlar som alla avgivit ett värde över ett fördefinierat gränsvärde g. Gränsvärdet undviker att brus och omgivningens skillnad i ljusintensitet påverkar det beräknade centrumet. Fördelen med denna metod är att det framräknade centrumet inte be- höver vara en representation av en specifik pixels position, utan genom att behålla decimaler kan ett mer noggrannt centrum hittas och systemet blir inte lika begrän- sat av sensorns upplösning, vilket illustreras i figur 3.3. Denna metod tar också hänsyn till att laserns avbild inte alltid kommer att vara symmetrisk beroende på vissa felkällor som nämndes i avsnitt 2.1.1, illustrerade i figur 2.2, vilket medför att centrum inte alltid är den pixel med högst värde. Algoritmen kan beskrivas med ekvation 3.2,
c =
P
n
np
nP
n
p
n, p
n≥ g (3.2)
där n är en pixels position längs kolumnen och p
när pixelns värde.
Figur 3.3: En lasers avbild över 16 kolumner med viktat centrum (rött), först utan och sedan med decimaler.
3.2.4 Geometri
Det tredje delmomentet gick ut på att bestämma alla geometriska parametrar som krävs för att kunna översätta ett beräknat värde c ur ekvation 3.2 till en position r i mätområdet. Resultaten av testen beskrivs i kapitel 4.
Metod 16
Beräkningar
För att bestämma hur bildsensor och laser ska placeras i förhållande till varandra beräknades geometrin utifrån avsnitt 2.1.2. Då sensorns breakout board inte tillät att förflytta eller vinkla sensorn i förhållande till linsen, krävdes en geometri som baserades på breakout bordens konstruktion för att kunna implementeras i ett test. Begränsningarna uppfyllde inte kravet att mätobjekten ska ha stor frihet med avseende på form kring den cylindriska koppling som ska mätas, men fungerar utmärkt till att bestämma noggrannheten av systemet. Breakout boarden tillät för- flyttning av optiskt centrum vinkelrätt mot sensorplanet, vilket kunde utnyttjas till att välja en passande baslinje B. Figur 3.4 visar hur den geometriska uppbyggnaden ser ut.
Figur 3.4: Geometrisk uppbyggnad av laser, lins, och bildsensor i förhållande till varandra.
Först bestämdes längden B mellan lasern och det optiska centrumet. Det var viktigt att välja ett kort avstånd så att den slutliga inkapslingen skulle bli så liten som möjligt. Objekten som ska mätas fick ha en radie mellan 0 och 25 mm vilket gavs av uppdragsgivaren. Figur 3.4 visar att mitten på sensorplanet motsvarar positionen r = 12,5 mm i mätområdet vilket då utnyttjar hela bildsensorn. Genom att välja B, samt radien till 12,5 mm kunde vinkeln α räknas ut enligt ekvation 3.3.
α = arctan 12, 5
B (3.3)
Metod 17
Nästa steg var sedan att med hjälp av uttryck 3.4 beräkna intervallet för s,
s ∈ ± N 4x
2 (3.4)
vilket är den fysikaliska dimensionen på bildsensorn, där N är antal pixlar i den vertikala riktningen och 4x är den verkliga dimensionen av en pixel. Dessa värden fanns att hämta ur bildsensorns datablad.
b
0kunde sedan lösas ut i syfte att utnyttja hela sensorytan. För att göra detta sattes s till det högsta värdet på sensorytan, eftersom att detta motsvarar det lägsta värdet i mätområdet. Detta visualiseras genom att titta på den horisontella linjen som går ifrån 0 mm i mätområdet till det högsta värdet s på sensorplanet i figur 3.4. Värdet sätts sedan in i ekvation 2.4, vilket kan förenklas som i ekvation 3.5.
r = B(b
0sin(α) − s)
b
0cos(α) − → b
0= s
sin(α) (3.5)
För att omvandla enheten av ett identifierat centrum c, som fås ur ekvation 3.2, till en position s på sensorn i längdenheter användes följande ekvation 3.6,
s = ( 2c
n
max− 1)s
max(3.6)
där n
maxär antal pixlar i en kolumn och s
maxär största värdet i intervallet för s, framräknat med ekvation 3.4. Detta görs för att sedan kunna använda ekvation 2.2, där mätobjektets position i mätområdet för den kolumnen kan beräknas.
Ekvationer 3.6 och 2.2 implementerades i en loop i koden som körs på FPGAn för att kunna bilda vektor med alla värden r från ekvation 3.2 och därefter kunna sändas ut till en extern mottagare för vidare behandling.
3.3 Test
Tester utfördes på systemet efter varje delmoment av konstruktionen för att under- söka huruvida systemet beter sig som förväntat. Resultaten från testen beskrivs och presenteras i sektion 4.3.
3.3.1 Konfiguration av FPGA
Det första som behövde kontrolleras var att en bitstream kunde laddas ned till development boarden och konfigurera FPGAn korrekt. Detta testades genom att skriva ett simpelt program i Verilog som skapade en binär klocka utav 8 LED-lampor på dev-boarden, direkt kopplade till pins på FPGAn. Denna metod ansågs enklast och tillräcklig då LED-laporna var ett bra sätt att få respons från FPGAn innan någon annan form av kommunikation är upprättad.
Metod 18
3.3.2 Initiering av sensor
Nästa test utfördes efter initieringen av sensorn och gick ut på att verifiera att pixeldatan som avläses uppförde sig som förväntat och på så vis säkerställa att sensorn initierats korrekt. För att testa detta skrevs en modul i VHDL som kon- verterar ett 10 bitars binärt pixelvärde till motsvarande decimaltal på dev-boardens 7-segment display i realtid. En counter, baserad på 100 MHz-klockan i development boarden, räknade antal mottagna bilder under en sekund implementerades sedan.
För avläsning av detta värde användes också 7-segment displayen.
3.3.3 Systemets precision
Inför detta test bestämdes och beräknades de geometriska storheter, nämnda i avs- nitt 3.5.4, som krävs för att översätta en position s på sensorn till ett position r i mätområdet. Dessa storheter benämns som vinkeln α, baslinjen B, samt kortaste avståndet b
0mellan sensorn och linsens fokus. Övriga storheter, specifika till de komponenter som använts är linsens brännvidd som är 6 mm, samt laserns avstånd till fokus som är 70 mm. Framräknade värden på storheterna presenteras i kapitel 4.
För att få ett optimalt testresultat av systemets precision krävdes att kompon- enternas positionering motsvarade nämnda geometriska storheter till största möj- liga precision. Av denna anledning användes ett optikbord med tillhörande skena, vinkelanslutningar, och hållare. För förflyttning av ett mätobjekt mot laserkällan längs skenan användes en mikrometer med 10 µm mätnoggrannhet. Uppställningen illustreras i figur 3.5 och 3.6.
Osäkerheten kring mätområdets slutliga position kalibrerades bort genom att flytta mätobjektet tills sensorn visade ändpositionen på displayen. Positionen r i mil- limeter för en kolumn beräknades i FPGAn och visades därefter på 7-segment displayen med två decimalers precision. Bildsensorns värden avlästes mellan 100 µm stora förflyttningar av mätobjektet för ytterligare analys. Noggrannheten i de verkliga förflyttningarna är relaterade till mikrometerns noggrannhet, vilken är sig- nifikant högre än den som förväntas av systemet och kan därför försummas. Totalt antecknades 25 värden för att sedan jämföras med teoretiska värden i ett diagram.
Metod 19
Figur 3.5: Uppställning av testutrustning och komponenter, från ovan.
Figur 3.6: Uppställning av testutrustning och komponenter, från sidan.
Metod 20
3.4 Utvärdering och analys av resultat
Efter varje genomfört test gjordes en utvärdering av systemet för att se huruvida det förhåller sig till kravspecifikationen. Utvärderingen i sig bestod av att avgöra ifall systemet behöver ytterligare utveckling, jämförelse, konstruktion eller test. Det gjordes även jämförelser till tidigare forskning för att se hur resultaten förhåller sig till varandra. I slutändan kunde utvärderingarna resultera i förändringar eller att nya metoder och/eller komponenter valdes ut.
Systemets precision
För att analysera resultatet från precisionstestet beräknades medelvärdet av av- vikelserna E på de uppmätta värdena från de faktiska värdena.
E beräknades genom att subtrahera den faktiska positionen r från den uppmätta positionen r
menligt ekvation 3.7.
E = r
m− r (3.7)
Medelvärdet beräknades därefter enligt ekvation 3.8, där n är antal mätvärden.
E =
P
n
E
nn (3.8)
Därefter beräknades variansen v utifrån ekvation 3.9,
v =
P
n