Per-Emil Eliasson, Claes Fälth, Manne Gustafson, Andreas Gustafsson

Relevanta dokument
Designplan mätning av acceleration hos bilbanebil

SLUTRAPPORT. Per-Emil Eliasson, Claes Fälth, Manne Gustafson, Andreas Gustafsson

Projektplan. Per-Emil Eliasson, Claes Fälth, Manne Gustafson, Andreas Gustafsson. 29 januari 2003

Miniprojekt: MEX och molekyldynamik

Programmeringsteknik med C och Matlab

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Mätteknik 2016 Mätsystem

AD-DA-omvandlare. Mätteknik. Ville Jalkanen. 1

Vad är kommunikation? Vad är datorkommunikation? Dataöverföring; Inledning

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

(Lösningsförslag finns sist i denna fil.)

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Att sända information mellan datorer. Information och binärdata

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Mätsystem. Upplägg. Josefin Starkhammar. Före pausen: Efter pausen:

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

Mätsystem Lektion inför lab.

Accelerometer. Rikard Ekström Mattias Kindborg. Informationsteknologi Lunds Universitet

Mäta rakhet Scanning med M7005

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

PROGRAMMERINGSTEKNIK TIN212

Objektorienterad Programmering (TDDC77)

UTREDNING AV MARKVIBRATIONER KRUTBRUKET, ÅKERS STYCKEBRUK

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Kapitel 2 o 3. Att skicka signaler på en länk. (Maria Kihl)

Lufttryck i ballong laboration Mätteknik

PM - Vibrationsutredning Götaverksgatan

LiTH. WalkCAM 2007/05/15. Testrapport. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

Projekt 1 (P1) Problembeskrivning och uppdragsspecifikation

Introduktion till programmering, hösten 2011

Micro:bit och servomotorer

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Klassdeklaration. Metoddeklaration. Parameteröverföring

Magnetiska fält laboration 1FA514 Elektimagnetism I

Teknisk dokumentation MCIV

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Ett urval D/A- och A/D-omvandlare

LiTH. WalkCAM 2007/05/15. Testplan. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs

Parameteröverföring. Exempel. Exempel. Metodkropp

Lösningar till tentamen i EIT070 Datorteknik

Lab 4: Digital transmission Redigerad av Niclas Wadströmer. Mål. Uppstart. Genomförande. TSEI67 Telekommunikation

Manual för ett litet FEM-program i Matlab

LiTH Lab1: Asynkron seriell dataöverföring via optisk länk Laboration 1. Asynkron seriell dataöverföring via optisk länk

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Android La sa va rden fra n sensorer

Tjoho. Applikationsutvecklarens handledning. Maj 2003

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Tillämpning av komplext kommunikationssystem i MATLAB

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Projektrapport. MegaLoad. Nätverksprogrammering EDA

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Kravspecifikation. LiTH Segmentering av MR-bilder med ITK Anders Eklund Version 1.0. Status

Dagens föreläsning (F15)

Medicinska Bilder, TSBB31. Lab3: Mätvärden på Medicinska Bilder

Naturlagar i cyberrymden

Uppgifter till praktiska tentan, del A. (7 / 27)

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

Programmering av inbyggda system 2014/2015

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Jens A Andersson

Enkla datatyper minne

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

TDIU01 - Programmering i C++, grundkurs

Övning från förra gången: readword

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Jens A Andersson

1. Introduktion Instruktionen utgörs av Radian Innovas handledning för ML-1.

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Hemuppgift för E2 SF1635, HT 2007

Tentamen Nätverksprogrammering Lösningsförslag

Laboration 1 Fysik

C++ Objektorientering - Klasser. Eric Elfving

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

OCH ANTENN ÄR INTEGRERAD I INSTRUMENTET

Värmedistribution i plåt

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Synkronisering - Semaforen. Om att vänta men inte i onödan

Fartbestämning med Dopplerradar

Teoretisk del. Facit Tentamen TDDC (6)

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Mätning av fokallängd hos okänd lins

Arduinokurs. Kurstillfälle 4

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

"Crash Course in Programming"

Övervakningssystem. -skillnader i bilder. Uppsala Universitet Signaler och System ht Lärare: Mathias Johansson

Programmeringsteknik med C och Matlab

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Jens A Andersson

Objektorienterad Programmering (TDDC77)

Introduktion till programmering och Python Grundkurs i programmering med Python

2D1339 Programkonstruktion för F1, ht 2003

3D- LJUD. Binaural syntes med hjälp av HRTF- filter och duplexteorin. DT1174 Ljud som informationsbärare Sandra Liljeqvist

Transkript:

ANVÄNDARHANDLEDNING FÖR MÄTNING AV ACCELERATION HOS BILBANEBIL Per-Emil Eliasson, Claes Fälth, Manne Gustafson, Andreas Gustafsson 6 juni 2003

INNEHÅLL Industriprojekt ISY Innehåll 1 Inledning 2 2 Allmänt om systemet 3 3 Mjukvara 3 3.1 Funktioner i MATLAB....................... 3 4 Felkällor 5 4.1 Accelerometer........................... 5 4.2 Kommunikation.......................... 6 4.3 Databehandling.......................... 7 A Bilagor 8 A.1 MATLAB-kod............................ 8 A.1.1 make_getaccelerationtime.m.............. 8 A.1.2 getacceleration.m.................... 8 A.2 C-kod (getacceleration.c).................... 9 sida 1

1 INLEDNING Industriprojekt ISY 1 Inledning Dokumentet beskriver de funktioner som används för att erhålla aktuellt accelereometrvärde från bilbanebilen. För en mer detaljerad dokumentation se slutrapport. sida 2

3 MJUKVARA Industriprojekt ISY 2 Allmänt om systemet Mätningen utförs i följande steg, vilket även ses grafiskt i figur 1 1. Accelerometern registrerar en acceleration och skickar ut en pulsbreddsmodulerad signal som anger hur stor accelerationen är. 2. Signalen läses av i en Basic Stamp II (BS2). Bredden på pulsen översätts till ett binärt tal (12 bitar) som sedan skickas seriellt till en sändare. Informationen skickas i två byte, á åtta bitar. 3. Sändaren tar emot datan och skickar denna radiomodulerad till en mottagare, vilken i sin tur skickar den mottagna signalen seriellt till en BS2. Informationen läggs ut parallellt på pinnar från BS2. 4. Mätkortet i datorn (NI PCI-6602) läser in de parallella bitarna och kan sedan översätta dessa till ett absolut värde på accelerationen. Genom att anropa en dll-fil ifrån MATLAB kan sedan detta värde användas vid reglering etc. 3 Mjukvara I systemet skrivs mjukvara i både c-kod, som kommunicerar med mätkortet, och MATLAB-kod. C-koden kompileras till en dll-fil genom att anropa filen make_getaccelerationtime.m ifrån MATLAB-prompten. Funktionen getaccelerationtime kan sedan anropas för att få pulsbredden för accelerometervärdet. I MATLAB har funktionen getacceleration implementerats, vilken översätter pulsbredden till ett absolut värde på accelerationen. En översikt av de olika filerna och deras syfte ses i tabell 1. 3.1 Funktioner i MATLAB Mätvärden som genereras av systemet beskrivet i avsnitt 2 kan användas genom att använda MATLAB. För att få aktuellt accelerationsvärde från sida 3

3 MJUKVARA Industriprojekt ISY Figur 1: Översiktisschema för accelarationsmätning. Tabell 1: Översikt av kodfiler. För mer information se fullständig kod i bilaga Namn getaccelerationtime.c Syfte Läsa av mätkortets port och översätta de binära bitarna till ett heltal som anger pulsbredden hos accelerometern. make_getaccelerationtime.m Kompilerar getaccelerationtime.c och genererar en dll-fil, som kan anropas ifrån getacceleration.m MATLAB. Funktion i MATLAB som översätter pulsbredden till ett absolut accelerationsvärde. sida 4

4 FELKÄLLOR Industriprojekt ISY accelerometern anropas funktionen getacceleration, vilken returnerar det önskade värdet. Dock bör man vara medveten om att mätvärdet endast uppdateras med en frekvens av 50 Hz. Därför bör funktionen anropas med en högsta frekvens om just 50 Hz. Funktionen getacceleration har följande MATLAB-syntax: [value,flag] = getacceleration; Förutom mätvärdet returnerar getacceleration även en flagga som signalerar (flag=1) om mätvärdets storlek inte är rimlig. Om värdet överstiger ±2g kan värdet förkastas eftersom detta ligger utanför mätområdet för accelerometern. 4 Felkällor I detta avsnitt avser vi att redogöra för de fel som vi funnit påverkar mätvärdet. De olika delsystemen accelerometer, kommunikation och databehandling behandlas i nämnd ordning. 4.1 Accelerometer Den felkälla vi funnit vara av störst betydelse för det slutgiltiga mätvärdet är vibrationer som uppkommer vid drift på grund av motorn. Dessa detekteras av accelerometern och ger därför utslag i mätvärdet. Vi har inte lyckats identifiera någon metod att eliminera detta fel. Förslagsvis filtreras värdena för att få bort det mesta av detta fel. Vidare har accelerometerns montering stor betydelse för noggrannheten. Om accelerometern monteras snett detekteras inte den verkliga accelerationen i bilens färdriktning, utan en funktion av denna som är beroende av den vinkeln mellan accelerometerns detektionsriktning och bilens färdriktning. Sambandet illustreras i figur 2. Notera att felmontering kan ske både i höjd- och sidled. Ytterligare ett fel som påverkar mätvärdet via accelerometern är banans lutning. Detta fel ger samma utslag som felmontering i höjdled. Detta bör också tas i beaktning vid kalibrering av accelerometerns nollnivå. Andra tänkbara fel i samband med själva mätningen är sida 5

4 FELKÄLLOR Industriprojekt ISY Bilens färdriktning θ Accelerometerns mätriktning Figur 2: Felvridning av accelerometer. Accelerometern mäter i fel riktning jämfört med bilens färdriktning. accelerometerns temperaturkänslighet, denna är dock liten i förhållande till övriga faktorer. Inte heller tyder någonting på att strömförsörjningen från skenan eller fälten från motorn påverkar accelerometern. 4.2 Kommunikation Kommunikationen sker uteslutande digitalt, varför störningskänsligheten i detta delsystem är god. Vi har inte sett några tecken på att de accelerationsvärden som skickas från accelerometern skulle ha ändrats på vägen. Däremot sker överföringen förstås med ett givet antal bitar, vilket ger en minsta möjliga upplösning på de accelerationer som kan detekteras. Våra mätningar visar dock att upplösningsfelet är försumbart i förhållande till de fel som skakning och felmontering ger upphov till. Vad användaren dock bör ha ta i beaktande är att det tar en viss tid för accelerationsvärdet att överföras från mätpunkten till datorn. Vid vissa tillfälle har störningar i radiolänken observerats. Det yttrar sig som orimligt höga eller låga värde på accelerationen. Vad detta beror på vet vi inte, men det skulle kunna vara andra radiovågor som stör. sida 6

4 FELKÄLLOR Industriprojekt ISY 4.3 Databehandling I databehandlingsdelen används talformat som gör att ingen upplösning tappas i detta steg. Även här kan dock en viss tidsfördröjning finnas. Denna är dock svår att uppskatta och är beroende av i vilket operativsystem som koden körs och vilka program som samtidigt körs på systemet. sida 7

A BILAGOR Industriprojekt ISY A Bilagor A.1 MATLAB-kod A.1.1 make_getaccelerationtime.m % ================================================ % Filnamn : m a k e _ g e t A c c e l e r a t i o n T i m e.m % % M a k e f i l e f o r g e t A c c e l e r a t i o n T i m e. c % % Anropas i f r a n MatLab prompten och g e n e r e r a r % g e t A c c e l e r a t i o n T i m e. d l l som sedan kan a n r o p a s % i f r a n MatLab f o r a t t f a a k t u e l l p u l s b r e d d f o r % a c c e l e r o m e t e r n i b i l e n. % ================================================ mex g c IC :\ Program\N a t i o n a l getaccelerationtime. c Instruments\ NI DAQ\Include mex g getaccelerationtime. obj C:\ Program\N a t i o n a l Instruments\ NI DAQ\Lib\nidaq32b. l i b A.1.2 getacceleration.m % ================================================ % Filnamn : g e t A c c e l e r a t i o n.m % % Omvandlar p u l s b r e d d t i l l ä a c c e l e r o m e t e r v r d e % % Anropas i f r a n MatLab prompten och r e t u r n e r a r d e t a k t u e l l a % a c c e l e r a t i o n s v a r d e t ( i [ g ] ) och en f l a g g a, f l a g, som ar % hog ( = 1 ) da a c c e l e r a t i o n s v a r d e t ar o r i m l i g t % ( p u l s b r e d d o v e r 5 0 0 0 e l l e r mindreä n 0 ). % % Bor a n r o p a s med h o g s t 5 0 Hz e f t e r s o m d e t ar med den f r e k v e n s som % ä a c c e l e r a t i o n s v r d e t f r a n b i l e n u p p d a t e r a s. % % ================================================ sida 8

A BILAGOR Industriprojekt ISY function [ accvalue, flag ] = g e t A c c e l e r a t i o n k =2/1160; % For omrakning t i l l [ g ] m=1 k 3 0 8 0 ; % " flag = 0 ; time = double ( getaccelerationtime ) ; i f time > 5 0 0 0 or time < 0 flag = 1 ; end accvalue = ( k time+m) ; A.2 C-kod (getacceleration.c) / ================================================================= Filnamn : g e t A c c e l e r a t i o n T i m e. c R e t u r n e r a r a k t u e l l t ä a c c e l e r a t i o n s v r d e hos b i l e n. Vardet u p p d a t e r a s med 5 0 Hz. Anropas v i a MatLab med a c c t i d = g e t A c c e l e r a t i o n T i m e ; dar a c c t i d m o t s v a r a r a c c e l e r o m e t e r n s p u l s b r e d d. Detta v a r d e o v e r s a t t s t i l l a b s o l u t a c c e l e r a t i o n i MatLab s e MatLab kod f o r g e t A c c e l e r a t i o n.m f o r mer i n f o. Koden kan k o m p i l e r a s med kommandot m a k e _ g e t A c c e l e r a t i o n T i m e i MatLab ================================================================= / # include "mex. h" # include " nidaqex. h" # include " math. h" short utsign [ 3 2 ] ; i 3 2 b u f f e r ; i n t b i n t e s t [ 3 2 ] ; i n t datain_bin [ 1 5 ] ; i 3 2 datain_dec ; / / K o n v e r t e r a r h e l t a l t i l l b i n a r t t a l void dec2bin ( i n t value, i n t binary [ 3 2 ] ) { sida 9

A BILAGOR Industriprojekt ISY } i n t i = 0 ; while ( value! = 0 & & i < 3 2 ) { binary [ i ] = value % 2 ; value = value / 2 ; i = i + 1 ; } i f ( i = = 0 ) i = 1 ; / / K o n v e r t e r a r b i n a r t t a l t i l l h e l t a l i 3 2 bin2dec ( i n t binary [ 1 5 ] ) { i n t val = 1, i =0; i 3 2 value = 0 ; } while ( i < 1 5 ) { value + = val binary [ i ] ; val = val 2 ; i = i + 1 ; } return value ; void mexfunction ( i n t nlhs, mxarray plhs [ ], i n t nrhs, const mxarray prhs [ ] ) { i 1 6 i S t a t u s = 0 ; i 1 6 idevice = 1 ; i 1 6 i P o r t = 0 ; u32 check = 0 ; plhs [ 0 ] = mxcreatedoublematrix ( 1, 1,mxREAL ) ; / / Vanta åp t i l l a t e l s e f o r a t t l a s a f r a n BS2 while ( check = = 0 ) { i S t a t u s = DIG_In_Line ( idevice, 0, 3 0, & check ) ; } sida 10

A BILAGOR Industriprojekt ISY / / Las h e l a 32 b i t a r s p o r t e n i S t a t u s = DIG_In_Prt ( idevice, iport, & b u f f e r ) ; / / K o n v e r t e r a v a r d e t f r a n 32 b i t a r s p o r t e n f r a n h e l t a l t i l l b i n a r t. dec2bin ( buffer, b i n t e s t ) ; / / P l o c k a ut de i n t r e s s a n t a b i t a r n a datain_bin [ 0 ] = b i n t e s t [ 1 3 ] ; datain_bin [ 1 ] = b i n t e s t [ 1 4 ] ; datain_bin [ 2 ] = b i n t e s t [ 1 6 ] ; datain_bin [ 3 ] = b i n t e s t [ 1 7 ] ; datain_bin [ 4 ] = b i n t e s t [ 1 8 ] ; datain_bin [ 5 ] = b i n t e s t [ 2 1 ] ; datain_bin [ 6 ] = b i n t e s t [ 2 2 ] ; datain_bin [ 7 ] = b i n t e s t [ 2 3 ] ; datain_bin [ 8 ] = b i n t e s t [ 2 4 ] ; datain_bin [ 9 ] = b i n t e s t [ 2 5 ] ; datain_bin [ 1 0 ] = b i n t e s t [ 2 6 ] ; datain_bin [ 1 1 ] = b i n t e s t [ 2 7 ] ; datain_bin [ 1 2 ] = b i n t e s t [ 2 8 ] ; datain_bin [ 1 3 ] = b i n t e s t [ 2 9 ] ; datain_bin [ 1 4 ] = 0 ; / / K o n v e r t e r a de b i n a r a b i t a r n a t i l l h e l t a l datain_dec = ( i 3 2 ) bin2dec ( datain_bin ) ; } / / R e t u r n e r a v a r d e t ( h e l t a l ) mxgetpr ( plhs [ 0 ] ) = datain_dec ; sida 11