Mobiele ultrasone plaatsbepaling met centimeterresolutie...

136
Faculteit Ingenieurswetenschappen Vakgroep Informatietechnologie Voorzitter: Prof. Dr. Ir. Paul Lagasse Academiejaar: 2007-2008 Mobiele ultrasone plaatsbepaling met centimeterresolutie steunend op looptijdsmetingen. door Christopher DERYCKE Promotoren: Prof. Dr. Ir. Jan VANDEWEGE, Ir. Bart BAEKELANDT Scriptiebegeleider: Dr. Ir. Johan BAUWELINCK Scriptie ingediend tot het behalen van de academische graad van Burgerlijk elektrotechnisch ingenieur

Transcript of Mobiele ultrasone plaatsbepaling met centimeterresolutie...

Page 1: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

Faculteit Ingenieurswetenschappen

Vakgroep Informatietechnologie

Voorzitter: Prof. Dr. Ir. Paul Lagasse

Academiejaar: 2007-2008

Mobiele ultrasone plaatsbepaling met

centimeterresolutie steunend op looptijdsmetingen.

door

Christopher DERYCKE

Promotoren: Prof. Dr. Ir. Jan VANDEWEGE, Ir. Bart BAEKELANDT

Scriptiebegeleider: Dr. Ir. Johan BAUWELINCK

Scriptie ingediend tot het behalen van de academische graad van

Burgerlijk elektrotechnisch ingenieur

Page 2: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

Voorwoord

Na een jaar hard werken, kijk ik zeer tevreden terug op mijn thesisjaar. De omvang van het

behandelde project stelde me van bij het begin voor een enorme uitdaging. Enerzijds het uit-

denken van een systeem en de haalbaarheid ervan controleren, anderzijds het ontwerpen en

bouwen ervan om een prototype te realiseren.

Het belangrijkste resultaat van dit afstudeerwerk is voor mij echter de verworven kennis die ik

heb opgedaan tijdens dit leerrijk en geslaagd jaar. Daarom wil ik van deze gelegenheid gebruik

maken om een woord van dank te richten aan allen die hiertoe hebben bijgedragen.

Mijn eerste woorden van dank gaan uit naar de promotor, Professor Vandewege, en de vak-

groepvoorzitter, Professor Lagasse, voor het ter beschikking stellen van de middelen en de in-

frastructuur. In het bijzonder wens ik mijn promotor, Prof. Dr. Ir. J. Vandewege, te bedanken

voor de raad en de motivatie die hij me gaf. Ook de copromotor, Ir. Bart Baekelandt, en de

begeleider, Dr. Ir. Johan Bauwelinck, verdienen een bijzonder woordje van dank. Zij stonden

me ten allen tijde bij, beantwoordden mijn vele vragen en lazen deze thesistekst grondig na.

Vervolgens wens ik Ing. Jan Gillis te bedanken voor zijn raad en hulp bij de vele praktische

moeilijkheden. Verder dank ik alle personen van het INTEC design team voor hun hulp.

Tot slot wens ik mijn ouders te bedanken voor hun jarenlange steun gedurende mijn studies.

Alsook bedank ik mijn vriendin voor de steun en voor de vele momenten van geduld toen ik

lang op het labo bleef doorwerken.

Christopher Derycke, mei 2008

Page 3: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

Toelating tot bruikleen

“De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van

de scriptie te kopieren voor persoonlijk gebruik.

Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met be-

trekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten

uit deze scriptie.”

Christopher Derycke, mei 2008

Page 4: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

Mobiele ultrasone plaatsbepaling met

centimeterresolutie steunend op

looptijdsmetingen.door

Christopher DERYCKE

Scriptie ingediend tot het behalen van de academische graad vanBurgerlijk elektrotechnisch ingenieur

Academiejaar 2007–2008

Promotoren: Prof. Dr. Ir. J. VANDEWEGE, Ir. B. BAEKELANDTScriptiebegeleider: Dr. Ir. J. BAUWELINCK

Faculteit IngenieurswetenschappenUniversiteit Gent

Vakgroep InformatietechnologieVoorzitter: Prof. Dr. Ir. Paul Lagasse

Samenvatting

Deze thesis behandelt het probleem om mobiele ultrasone plaatsbepaling met centimeterresolutiete realiseren. De scriptie bespreekt het ontwerp en de realisatie van een systeem om dit probleemop te lossen. De thesis wordt op dezelfde wijze als het systeem opgebouwd. In Hoofdstuk 2 wordteen simulatiemodel opgesteld. In Hoofdstukken 3 en 4 worden de zenders en de ontvanger onderde loep genomen en wordt uitgelegd hoe deze stap voor stap werden ontworpen. Hoofdstuk 5legt uit hoe de zenders gecombineerd worden met de ontvanger om tot een werkbaar geheel tekomen. Vervolgens wordt in Hoofdstuk 6 besproken hoe de gegevens afkomstig van de ontvangerverwerkt worden. In Hoofdstukken 7 en 8 wordt er dieper op de resultaten van het volledigesysteem ingegaan. Hoofdstuk 9 besluit de scriptie.

Trefwoorden

gps, ultrasoon, transducer, matlab, correlatie, looptijd

Page 5: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

Mobile ultrasonic positioning withcentimeter resolution based on travel delay

measurements

Christopher Derycke

Supervisor(s): Prof. J. Vandewege, Ir. B. Baekelandt, Dr. Ir. J. Bauwelinck

Abstract- This paper presents the design of codesand electronics needed for time delay measure-ments. These delay measurements provide thebasis for accurate positioning. Firstly, a modelthat describes the modulation and demodulationof acoustic signals is presented. Secondly, anadequate subset of codes is selected from thewide range of existing and practically applicablecodes to estimate a time delay in a multi-userenvironment. Finally, the transmitter andreceiver are presented.

Keywords- code generation, transducers, correla-

tion, pulse width modulation

I. INTRODUCTION

Worldwide, everyone is familiar with a GPS, buteveryone knows that this system can’t be used in-door, nor can GPS provide accurate positioningwith centimeter resolution.Hence, the idea rose, to design a system based onGPS, but using ultrasonic waves, to allow indoorpositioning with centimeter resolution.

II. PROPAGATION MODEL

A MATLAB model was developed to simulatethe modulation and demodulation of the acousticsignals. When transducers send modulated acousticsignals, this model computes the received signalsthat are picked up by a receiver somewhere in theroom. The model will then demodulate these signalsand determine the time delay between sending andreceiving, using correlation functions.From these delays the position of the receiver canthen be calculated.

III. CODE GENERATION

The transducers used for the transmitters areworking at a frequency of 40kHz. Codes were gen-erated that allow multi-transducer measurements.

This way, distances from the object to differenttransducers can be measured at the same moment.Following code families were compared: Barker,Gold and Kasami. For correct delay estimationsauto- and cross-correlation functions of the selectedcodes are highly important. A narrow autocorre-lation peak is required for precise time measure-ments. Low cross-correlation functions are neededto achieve multi-user performance. From simula-tions one can conclude that the family of Kasamicodes leads to the best performance. Figure 1 showsthe autocorrelation function of a Kasami code oflength 63. This length was chosen to providerobustness against interfering signals.

0 1 2 3 4 5 6 7 8

x 105

−1

−0.5

0

0.5

1

1.5

2

2.5

3

3.5

4x 10

5 Autocorrelation function

Am

plitu

de

Samples

Figure 1: Autocorrelation function

IV. DESIGN

The system is composed of five different com-ponents (three transmitters, a synchroniser and areceiver) which are all using a complex board. Eachboard has its own microcontroller (MSP430) and aninterface between the board and USB. All measureddata is sent to the computer through the USB-interface.

Page 6: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

A. Transmitter

Different pulse width modulation (PWM) signalsfor each code are generated using MATLAB andstored in each microcontroller. PWM is a tech-nique where digital signals are filtered to obtainthe desired analog signals. Because the microcon-troller board can only provide 3.3V, an amplifieris installed to provide more voltage. This ampli-fier provides the correct signals to the transducers.Figure 2 illustrates a Kasami code and its spectrum.Figure 3 illustrates the Kasami code and its spec-trum after PWM modulation and low pass filtering.

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035−1.5

−1

−0.5

0

0.5

1

1.5Kasami Code (length = 63)

Time (seconds)

Am

plitu

de

−20 −16 −12 −8 −4 0 4 8 12 16 200

5000

10000

15000Spectrum Kasami Code

Frequency (kHz)

Am

plitu

de

Figure 2: Kasami code and its spectrum

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6

x 10−4

−1.5

−1

−0.5

0

0.5

1

1.5PWM Signal

Time (seconds)

Am

plitu

de

−60 −50 −40 −30 −20 −10 0 10 20 30 40 50 600

200

400

600

800

1000

Spectrum PWM Signal

Frequency (kHz)

Am

plitu

de

Figure 3: PWM Signal and its spectrum

B. Receiver

After reception, analog electronics are used toamplify the received ultrasonic signals. The analogsignals coming from the amplifier are converted todigital signals, using an A/D-converter, present onthe MSP430, with a sampling frequency of 40kHz.The converted signals are stored in the chip’s mem-

ory untill a transfer using the USB-interface is re-quested.

C. Synchroniser

In order to obtain accurate results, the transmit-ters as well as the receiver must be synchronised.For this, a synchronisation protocol was developed.

V. SIGNAL PROCESSING

The codes used were chosen to have a low crosscorrelation and a high autocorrelation.To detect time delay between sending and receivingthe acoustic signal, one calculates the correlation ofthe received signal and the different codes. Detec-tion of a peak in these correlations means that thatcode is received on the transducer. Every trans-mitter has its own specific code, so by calculat-ing the correlation functions, one can determinewhere the received signal comes from. When onecombines the different time delays, the location ofthe receiver, relative to the transmitters, can becalculated. Figure 4 shows the transmitted code,the received signal from one transmitter and itsautocorrelation function.

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05

−101

Transmitted code

Time (sec)

Am

plitu

de

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05−0.05

0

0.05Received signal

Time (sec)

Am

plitu

de

−0.05 −0.04 −0.03 −0.02 −0.01 0 0.01 0.02 0.03 0.04 0.05−200

0200400600

X: 0.002468Y: 520.7

The autocorrelation function

Time (sec)

Am

plitu

de

Delay

Figure 4: Transmitted and received signal + autocor-relationfunction

VI. CONCLUSIONS

A system for position detection processing ultra-sonic signals was realised. It was shown that, whentransmitters and receiver are synchronised, onlythree transmitters are required to do an accuratemeasurement. Experimental results were demon-strated to validate the concept.

Page 7: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

INHOUDSOPGAVE i

Inhoudsopgave

Tabel van afkortingen en symbolen v

1 Inleiding 1

1.1 Doel van de thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 GPS - Een globaal positioneringssysteem . . . . . . . . . . . . . . . . . . . . . . . 2

1.2.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2.2 Werkingsprincipe van GPS . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3 Een eigen plaatsbepalingssysteem . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Matlab Model 7

2.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Principe van plaatsbepaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2.1 Tijdsmeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 Model in Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3.2 Initialisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3.3 Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3.4 Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.5 Bespreking van de Matlab code . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3.6 Optimalisatie van het model . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3.7 Besluit van het model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 De Zenders 20

3.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 Transducer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3 Aansturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Page 8: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

INHOUDSOPGAVE ii

3.4 Uitbreiding van het model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.4.1 Pulsbreedte modulatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.4.2 Bespreking van de Matlab code . . . . . . . . . . . . . . . . . . . . . . . . 25

3.5 USB interface tussen het microcontrollerbord en de PC . . . . . . . . . . . . . . 26

3.5.1 Programmeren van de MSP430 . . . . . . . . . . . . . . . . . . . . . . . . 26

3.5.2 Programmeren van het PC gedeelte . . . . . . . . . . . . . . . . . . . . . 26

3.6 Aansturing van de transducer m.b.v. TimerA . . . . . . . . . . . . . . . . . . . . 27

3.6.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.6.2 Programmeren van de MSP430 . . . . . . . . . . . . . . . . . . . . . . . . 29

3.6.3 Metingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.7 Aansturing van de transducer m.b.v. DMA en SPI . . . . . . . . . . . . . . . . . 30

3.7.1 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.7.2 SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.7.3 USB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.7.4 Transducer aansturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.7.5 Metingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.8 Constructie van de zenders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.8.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.8.2 PCB ontwerp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4 De Ontvanger 44

4.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.2 Transducer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.3 Aansturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.4 Programmeren van de ontvanger . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.4.1 Uitbreiding van de USB interface . . . . . . . . . . . . . . . . . . . . . . . 45

4.4.2 Programmeren van de chip voor de ontvanger . . . . . . . . . . . . . . . . 45

4.5 Constructie van de ontvanger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.5.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.5.2 PCB ontwerp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5 De Synchronisator 54

5.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Page 9: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

INHOUDSOPGAVE iii

5.1.1 PC werkt als synchronisator . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.1.2 Onderlinge synchronisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.1.3 Een extra component: de synchronisator . . . . . . . . . . . . . . . . . . . 57

5.2 Het protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.2.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.2.2 De synchronisator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.2.3 De zenders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5.2.4 De ontvanger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.2.5 Resultaat van een simulatie . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.3 Uitbreiding van het protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.3.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.3.2 Synchronisator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.3.3 De zenders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.3.4 De ontvanger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.4 Constructie van de synchronisator . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.4.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.4.2 PCB ontwerp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

6 Verwerking van de gegevens 67

6.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

6.2 Communicatie tussen de PC en de componenten . . . . . . . . . . . . . . . . . . 67

6.3 Verwerking in Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

6.4 Meetresultaat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

7 Meetresultaten 70

7.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

7.2 Meetresultaten in functie van de afstand . . . . . . . . . . . . . . . . . . . . . . . 71

7.2.1 Meetresultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

7.2.2 Voorbeeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7.3 Meetresultaten in functie van de hoek . . . . . . . . . . . . . . . . . . . . . . . . 74

7.3.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.3.2 Meetresultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.4 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Page 10: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

INHOUDSOPGAVE iv

8 Het systeem 76

8.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

8.2 De verschillende componenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

8.2.1 De synchronisator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

8.2.2 De zenders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

8.2.3 De ontvanger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

8.3 Communicatie tussen de PC en de componenten . . . . . . . . . . . . . . . . . . 81

8.4 Verwerking van de gegevens in Matlab . . . . . . . . . . . . . . . . . . . . . . . . 83

8.5 Positiebepaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

8.6 Verder onderzoek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

9 Besluit 87

A Code van het Matlab-model 88

B Code van het uitgebreide Matlab-model 91

C USB interface 93

D Oorspronkelijke MSP code voor de zenders 99

E Code voor de zenders 106

F Code voor de ontvanger 112

G Bespreking van de Visual Basic code 116

Page 11: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

TABEL VAN AFKORTINGEN EN SYMBOLEN v

Tabel van afkortingen en symbolen

Gebruikte afkortingen

A/D Analoog/Digitaal

ADC Analog-to-digital converter

BPSK Binary Phase Shift Keying

GPS Global Positioning System

PWM Pulse Width Modulation

USB Universal Serial Bus

Gebruikte symbolen

Hz Hertz, eenheid van frequentie

dB Decibel, logaritmische eenheid

kB Kilobyte

Wiskundige eenheden

femto f 10−15 milli m 10−3

pico p 10−12 kilo k 103

nano n 10−9 mega M 106

micro µ 10−6 giga G 109

Page 12: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

INLEIDING 1

Hoofdstuk 1

Inleiding

1.1 Doel van de thesis

Het uiteindelijke doel van de thesis is een meetmethode te ontwikkelen die toelaat een plaats-

bepaling te doen met centimeterresolutie. Deze methode kan dan worden geımplementeerd in

een programmeerbare robot zodat deze in staat is zijn positie te bepalen binnen een ruimte. Een

voorbeeld van zo’n robot is de iRobot die te zien is in Figuur 1.1. [1][2]

Wanneer men het over plaatsbepaling heeft, denkt iedereen tegenwoordig spontaan aan het

Amerikaanse GPS. Dit systeem maakt gebruik van hoogfrequente golven maar haalt geen cen-

timeter nauwkeurigheid. De idee rees om het principe van het GPS systeem te gebruiken.

Figuur 1.1: De iRobot

Page 13: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

1.2 GPS - Een globaal positioneringssysteem 2

1.2 GPS - Een globaal positioneringssysteem

1.2.1 Inleiding

GPS of Global Positioning System is een door het Amerikaanse ministerie van defensie ontworpen

systeem dat toelaat om je positie te bepalen overal ter wereld. [3]

GPS werkt met een constellatie van minstens 24 satellieten die in 6 vaste banen op 20200 km

hoogte rond de Aarde cirkelen en elk een eigen signaal uitzenden. Een illustratie hiervoor wordt

in Figuur 1.2 gegeven. Het GPS systeem is 24 uur per dag actief, is nagenoeg overal ter wereld

bruikbaar en werkt onder alle weersomstandigheden. Het is een militair systeem dat de overheid

van de Verenigde Staten met beperkende nauwkeurigheid aan iedereen beschikbaar stelt. Verder

werkt het GPS systeem met behulp van passieve ontvangers, het systeem zelf weet niet hoeveel en

welke ontvangers er ingeschakeld zijn. Het enige dat de satellieten doen, is continu hun signalen

verzenden. In een volgende paragraaf wordt kort de werking van dit systeem besproken.

Figuur 1.2: GPS constellatie

Page 14: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

1.2 GPS - Een globaal positioneringssysteem 3

1.2.2 Werkingsprincipe van GPS

In dit deel wordt kort uitgelegd op basis van welke principes GPS werkt, zonder hierbij teveel

in detail te gaan aangezien dit systeem in zijn geheel enorm complex is.

GPS vertrekt vanuit het principe dat je de positie van een object kan bepalen wanneer je

de afstand kent van dit object tot drie andere objecten. Wanneer de afstand tot een bepaald

object is gekend, weet men dat men zich bevindt op de rand van een cirkel met middelpunt het

object en straal gelijk aan de afstand tot het object. Dit wordt geıllustreerd in Figuur 1.3.

Figuur 1.3: Afstand tot een object is gekend

Wanneer de afstand tot twee objecten gekend is, weet men dat men zich bevindt op een van de

twee snijpunten tussen de afstandscirkels. (Figuur 1.4)

Figuur 1.4: Afstand tot twee objecten is gekend

Wanneer de afstand tot drie objecten gekend is, dan weet men dat men zich bevindt in het

snijpunt van de drie cirkels. Dit is te zien op Figuur 1.5. Ontvangt de ontvanger bijgevolg

de signalen van drie verschillende satellieten, dan kan deze aan de hand van deze signalen zijn

positie bepalen.

Page 15: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

1.2 GPS - Een globaal positioneringssysteem 4

Figuur 1.5: Afstand tot drie objecten is gekend

Verder gebruikt GPS het verband tussen een tijdsmeting en een afstandsmeting. Wanneer een

zender bepaalde gegevens naar een ontvanger verzendt, gaat er een zekere tijd voorbij vooraleer

de ontvanger deze gegevens ontvangt. Deze tijd is afhankelijk van de snelheid waarmee de

gegevens van de zender naar de ontvanger reizen. Het GPS systeem gebruikt elektromagnetische

golven, die zich met de lichtsnelheid voortplanten, waarop gegevens worden gemoduleerd. Uit

het tijdsverschil tussen het tijdstip waarop de zender begint te zenden en het tijdstip waarop

de ontvanger de gegevens ontvangt, kan de afstand tussen zender en ontvanger worden bepaald.

Wiskundig is dit eenvoudig in te zien als volgt: Als de zender begint met zenden op tijdstip

t=0 en de ontvanger ontvangt de (eerste) gegevens na t=T seconden dan is: d = cT met c de

lichtsnelheid in meter per seconde en d de afstand in meter.

Indien het tijdsverschil tussen een object en drie zenders bepaald kan worden en als ook de

posities van de drie zenders gekend zijn, kan de positie van het object berekend worden. Dit is

echter enkel correct wanneer de ontvanger de exacte tijdstippen, waarop de zenders beginnen

met zenden, kent. Indien deze tijdstippen niet gekend zijn, wordt een resultaat bereikt zoals in

Figuur 1.6 is weergegeven. De drie cirkels snijden elkaar niet langer in een punt zodat er niet

langer een punt bepaald wordt maar een gebied (gearceerde deel op de figuur).

Het GPS systeem bestaat uit een constellatie van 24 satellieten en elke satelliet beschikt over een

heel stabiele atoomklok. De tijdstippen waarop de satellieten hun gegevens verzenden, kunnen

dus heel goed worden geregeld. Een GPS ontvanger is echter een goedkoop toestel waarin een

kristaloscillator als klok dienst doet zodat er niet mag worden verondersteld dat de ontvanger

de tijdstippen, waarop de zenders beginnen zenden, kent.

Page 16: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

1.3 Een eigen plaatsbepalingssysteem 5

Figuur 1.6: Starttijdstip van zenden is niet gekend

Om dit op te lossen heeft de ontvanger een vierde zender nodig. Nadat de ontvanger op basis

van drie zenders zijn positie heeft berekend, zal hij een afstandsmeting uitvoeren met deze vierde

zender. Het verschil tussen deze twee metingen zal de ontvanger dan toelaten om een correctie

op het resultaat uit te voeren.

1.3 Een eigen plaatsbepalingssysteem

GPS is een wereldomvattend systeem waarbij de zenders op meer dan 20000 kilometer verwijderd

zijn van de ontvangers en waarbij gebruik gemaakt wordt van golven die zich voortplanten aan

de lichtsnelheid. De vertraging tussen de zender en de ontvanger is dus van de orde 10ms.

Vermits GPS ontvangers in allerlei voertuigen en vliegtuigen worden geımplementeerd, kan men

zich geen vertragingstijd van de orde milliseconden veroorloven. Anders zou de positie tussen

het tijdstip van verzenden en het tijdstip waarop het signaal wordt ontvangen immers sterk

kunnen afwijken.

In deze thesis ligt de nadruk niet op plaatsbepaling over een groot gebied maar op nauwkeurige

plaatsbepaling. Het gebied waarover een nauwkeurige plaatsbepaling moet worden uitgevoerd,

kan worden beperkt tot een eenvoudige ruimte zoals een kamer. Als de zenders zich in dezelfde

ruimte als de ontvanger zullen bevinden, kan het GPS systeem onmiddellijk een heel stuk ver-

eenvoudigd worden. Het is immers niet nodig om met hoogfrequente signalen te werken.

Het volstaat om gebruik te maken van akoestische golven met een voortplantingssnelheid van

340 meter per seconde. In een ruimte waar de zender 5 meter van de ontvanger staat, treedt er

een maximale vertraging van5

340≈ 15 milliseconden op.

Page 17: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

1.3 Een eigen plaatsbepalingssysteem 6

De attenuatie van akoestische golven [4] kan aan de hand van volgende formules worden bepaald:

C = 4.6151 - 6.8346(T0

T)1.261

h = 10Cpr

tr =T

293.15frO = p(24 + 4.04.104 h

(0.02 + h)(0.391 + h)

)

frN = p t−0.5r (9 + 280 h e(−4.17(t

−1/3r −1)))

α = 8.686f2(1.84.10−11

√trp

+ t−2.5r (0.01275

e−( 2239.1T

)

(frO + f2

frO)

+ 0.1068e−( 3352

T)

(frN + f2

frN)))[dbm−1] (1.1)

Waarbij:

T0 = 273.15 Kelvin

T: Omgevingstemperatuur in Kelvin

p: De relatieve druk =druk

101325r: De relatieve vochtigheid (in %)

tr: De relatieve temperatuur van de lucht (relatief tov 20C)

f: De frequentie van de geluidsgolf

Met T = 25C, p = 101325Pa, r = 58% en f = 40kHz is α gelijk aan 1.33 dB per meter.

Vijf meter afstand tussen zender en ontvanger geeft een verzwakking van 6.65dB, hetgeen een

aanvaardbare attenuatie is.

Page 18: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

MATLAB MODEL 7

Hoofdstuk 2

Matlab Model

2.1 Inleiding

Het ontwerpen van een plaatsbepalingssysteem zonder zicht te hebben op de aard van de

ontvangen en de te verzenden signalen, is een moeilijke opgave. Om inzicht te krijgen in de

aard van deze signalen werd in Matlab een theoretisch propagatiemodel opgesteld. Dit model

maakt het mogelijk om simulaties uit te voeren over het te bouwen systeem vooraleer er effectief

aan de bouw wordt begonnen.

2.2 Principe van plaatsbepaling

Wanneer een zender een signaal verzendt, kan dit signaal een tijdstip ∆t1 later worden op-

gevangen door een ontvanger. In het vorige hoofdstuk werd reeds uitgelegd dat er drie zenders

nodig zijn om de positie van een object te kunnen bepalen. Dit op voorwaarde dat de ontvanger

de tijdstippen waarop de zenders beginnen met zenden exact kent.

Verder is het noodzakelijk dat de ontvanger de verschillende zenders kan herkennen. Indien

dit niet het geval is, kan de ontvanger onmogelijk weten hoe ver hij van iedere zender verwijderd

is. Daarom krijgt iedere zender een eigen persoonlijke code toegewezen. Deze code wordt dan

gemoduleerd op een draaggolf en vervolgens door de zender verzonden. Het ontvangen signaal

dient dan te worden gedemoduleerd in de ontvanger. Vermits de drie zenders tegelijk signalen

met dezelfde frequentie verzenden, is het ook wenselijk dat de codes die erop worden gemoduleerd

orthogonaal zijn.

Page 19: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 8

2.2.1 Tijdsmeting

Een plaatsbepaling kan aan de hand van drie verschillende tijdsmetingen worden uitgevoerd.

Door de correlatiefuncties van de verzonden codes te gebruiken, kunnen de tijdsvertragingen

worden gemeten. Opeenvolgend wordt de correlatiefunctie tussen het totale ontvangen signaal

en de code van zender1, de code van zender2 en ten slotte deze van zender3, berekend. De piek-

waarden van deze functies geven de vertragingstijden aan tussen de ontvanger en respectievelijk

zender1, zender2 en zender3. Hierbij moet er onmiddellijk worden opgemerkt dat de kruis-

correlatie tussen de verschillende zenders zo klein mogelijk moet zijn en de autocorrelatiefunctie

een zo hoog mogelijke piek moet hebben.

2.3 Model in Matlab

2.3.1 Inleiding

Het Matlab-model begint met het initialiseren van de verschillende globale variabelen zoals

simulatietijd, voortplantingssnelheid en coordinaten van de zenders. Vervolgens worden de

signalen die de zenders genereren opgesteld en daarna wordt het gedrag van de ontvanger ge-

simuleerd.

2.3.2 Initialisatie

Initialisatie.m zorgt dat alle initiele waarden van het systeem correct worden ingesteld.

Variabele Omschrijving Waarde

Tsim De simulatietijd 50ms

fs De samplingfrequentie 5MHz

v De voortplantingssnelheid 340 m/sec

zender x De coordinaten van de verschillende zenders [x,y,z] in m

fm De modulatiefrequentie 2kHz

fc De frequentie van de draaggolf 40kHz

zendcode Het aantal keer dat de zender de code verstuurd 1

Tabel 2.1: Initialisatie waarden

Page 20: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 9

2.3.3 Main

De werking van de zenders en van de ontvanger wordt geıllustreerd in de blokdiagrammen van

Figuren 2.1 en 2.2.

Figuur 2.1: Blokdiagram van de zenders

Figuur 2.2: Blokdiagram van de ontvanger

In de volgende paragrafen wordt de werking van het model, zoals in Main.m, duidelijk

gemaakt.

Codes

Opdat de ontvanger de zenders zou kunnen herkennen, is het noodzakelijk dat aan elke zender

een eigen code wordt toegekend. Vermits de tijdsvertragingen aan de hand van de corre-

latiefuncties worden gemeten, moeten de codes een zo hoog mogelijke autocorrelatiepiek en

Page 21: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 10

een zo laag mogelijke kruiscorrelatie hebben. Hiervoor werden drie types codes in het model

geımplementeerd: Barker codes, Gold codes en Kasami codes. (zie ook [5] en [6]) In Figuren

2.3 en 2.4 worden respectievelijk de autocorrelatie- en de kruiscorrelatie-functies van deze codes

weergegeven.

Op deze figuren is duidelijk te zien dat alle codes een scherpe autocorrelatiepiek hebben. In

het geval van de Barker codes is de kruiscorrelatie echter niet verwaarloosbaar ten opzichte van

deze piek. Dit is te wijten aan de beperkte lengte van deze codes. Zowel de Gold en Kasami codes

vertonen goede autocorrelatie- en kruiscorrelatie-eigenschappen. Vermits de kruiscorrelatie in

het geval van de Kasami codes het laagst is, werd voor dit type codes gekozen.

Zoals te zien in het blokdiagram wordt deze code nu door een NON-Return to Zero encoder

gestuurd zodat een 0-bit wordt afgebeeld op -1 en een 1-bit wordt afgebeeld op +1.

−6 −4 −2 0 2 4 6−2

0

2

4

6

8Autocorrelatiefuntie Barker (len=7)

−150 −100 −50 0 50 100 150−50

0

50

100

150Autocorrelatiefuntie Gold code 1 (len=63)

−100 −50 0 50 100−20

0

20

40

60

80Autocorrelatiefuntie Kasami code 1 (len=63)

−10 −5 0 5 10−5

0

5

10

15Autocorrelatiefuntie Barker (len=11)

−150 −100 −50 0 50 100 150−50

0

50

100

150Autocorrelatiefuntie Gold code 2 (len=63)

−100 −50 0 50 100−20

0

20

40

60

80Autocorrelatiefuntie Kasami code 2 (len=63)

−15 −10 −5 0 5 10 15−5

0

5

10

15Autocorrelatiefuntie Barker (len=13)

−150 −100 −50 0 50 100 150−50

0

50

100

150Autocorrelatiefuntie Gold code 3 (len=63)

−100 −50 0 50 100−20

0

20

40

60

80Autocorrelatiefuntie Kasami code 3 (len=63)

Figuur 2.3: Autocorrelatiefuncties

Page 22: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 11

−10 −5 0 5 10−5

0

5Kruiscorrelatiefunctie Barker code 1 en Barker code 2

−150 −100 −50 0 50 100 150−20

−10

0

10

20

30Kruiscorrelatiefunctie Gold code 1 en Gold code 2

−100 −50 0 50 100−15

−10

−5

0

5

10Kruiscorrelatiefunctie Kasami code 1 en Kasami code 2

−15 −10 −5 0 5 10 15−5

0

5Kruiscorrelatiefunctie Barker code 1 en Barker code 3

−150 −100 −50 0 50 100 150−40

−20

0

20

40Kruiscorrelatiefunctie Gold code 1 en Gold code 3

−100 −50 0 50 100−20

−10

0

10Kruiscorrelatiefunctie Kasami code 1 en Kasami code 3

−15 −10 −5 0 5 10 15−5

0

5

10Kruiscorrelatiefunctie Barker code 2 en Barker code 3

−150 −100 −50 0 50 100 150−20

−10

0

10

20Kruiscorrelatiefunctie Gold code 2 en Gold code 3

−100 −50 0 50 100−15

−10

−5

0

5

10Kruiscorrelatiefunctie Kasami code 2 en Kasami code 3

Figuur 2.4: Kruiscorrelatiefuncties

Modulatie

De zenders moduleren hun code op een draaggolf met frequentie fc volgens het BPSK principe.

Het signaal dat wordt verzonden, is s(t) = d(t).cos(2πfct) waarbij d(t) de waarde +1 en -1 kan

aannemen wanneer de zender aan het zenden is en anders de waarde 0 heeft.

Demodulatie

Het ontvangen signaal o(t) moet nu worden gedemoduleerd in de ontvanger.

o(t) = d1(t).cos(2πfct) + d2(t).cos(2πfct) + d3(t).cos(2πfct) (2.1)

Het ontvangen signaal wordt vermenigvuldigd met een cosinus met dezelfde frequentie als de

draaggolf.

x(t) = o(t).cos(2πfct) (2.2)

Verder is cos(α).cos(α) = 12(1 + cos(2α))

Nu is:

x(t) = (d1(t).cos(2πfct) + d2(t).cos(2πfct) + d3(t).cos(2πfct)).cos(2πfct) (2.3)

x(t) =12(d1(t) + d2(t) + d3(t)) +

12((d1(t) + d2(t) + d3(t))).cos(4πfct) (2.4)

Page 23: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 12

Zodat x(t) een DC component en een frequentiecomponent op 2fc bevat. Vervolgens wordt

x(t) door een laagdoorlaatfilter gestuurd om de dubbele frequentie te verwijderen.

y(t) =12(d1(t) + d2(t) + d3(t)) (2.5)

Dit is de helft van de som van de verzonden codes.

Bepaling van de tijdsvertragingen

Uit de vorige paragraaf kan worden besloten dat uit het uiteindelijk signaal een code wordt

overgehouden die bestaat uit de som van de verzonden codes, al dan niet met een zekere tijds-

vertraging. Om nu de tijdsvertraging te bepalen, worden de correlatiefuncties van het ontvangen

signaal en de verzonden codes berekend. De maximale waarden van deze functies leveren de

tijdsvertragingen ten opzichte van de verschillende zenders.

2.3.4 Resultaten

In deze paragraaf wordt een voorbeeld-opstelling uitgewerkt waarbij gecontroleerd wordt of de

ontvanger zijn positie kan bepalen aan de hand van de ontvangen signalen.

De zenders bevinden zich in de posities [0,0,1], [1,0,1] en [3,3,1] en de ontvanger bevindt zich op

positie [4,3,1]. Dit wordt in Figuur 2.5 geıllustreerd.

−0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5−0.5

0

0.5

1

1.5

2

2.5

3

3.5

meter

met

er

Figuur 2.5: De opstelling

Page 24: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 13

De codes die worden gebruikt zijn Kasami codes van lengte 63 en worden voorgesteld op Figuur

2.6. Deze codes worden gemoduleerd op een draaggolf met frequentie fc en vervolgens verzonden.

0 0.01 0.02 0.03 0.04 0.05

−1

0

1

Code 1

Tijd (seconden)

Am

plitu

de

0 0.01 0.02 0.03 0.04 0.05

−1

0

1

Code 2

Tijd (seconden)

Am

plitu

de

0 0.01 0.02 0.03 0.04 0.05

−1

0

1

Code 3

Tijd (seconden)

Am

plitu

de

Figuur 2.6: De gebruikte Kasami codes

De ontvanger ontvangt de verzonden signalen met een zekere tijdsvertraging, zie Figuur 2.7.

0 0.01 0.02 0.03 0.04 0.05

−1

0

1

Ontvangen signaal 1

Tijd (seconden)

Am

plitu

de

0 0.01 0.02 0.03 0.04 0.05

−1

0

1

Ontvangen signaal 2

Tijd (seconden)

Am

plitu

de

0 0.01 0.02 0.03 0.04 0.05

−1

0

1

Ontvangen signaal 3

Tijd (seconden)

Am

plitu

de

Figuur 2.7: Ontvangen signalen van de verschillende zenders

Page 25: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 14

Het werkelijke signaal dat dan wordt ontvangen, is afgebeeld op Figuur 2.8 en bestaat uit de

som van de verzonden signalen.

0 0.01 0.02 0.03 0.04 0.05

−3

−2

−1

0

1

2

3

Totaal ontvangen signaal

Tijd (seconden)

Am

plitu

de

Figuur 2.8: Werkelijke ontvangen signaal

Dit signaal wordt gedemoduleerd. Het resultaat is afgebeeld op Figuur 2.9.

0 0.01 0.02 0.03 0.04 0.05

−3

−2

−1

0

1

2

3

Ontvangen signaal na demodulatie

Tijd (seconden)

Am

plitu

de

Figuur 2.9: Ontvangen signaal na demodulatie

Page 26: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 15

Uiteindelijk worden de correlatiefuncties tussen de originele codes en dit ontvangen signaal

bepaald. (Figuur 2.10)

−0.05 0 0.05−1

0

1x 10

5

X: 0.01471Y: 6.811e+004

Correlatie met code 1

Tijd (sec)

Am

plitu

de

−0.05 0 0.05−1

0

1x 10

5

X: 0.01248Y: 6.284e+004

Correlatie met code 2

Tijd (sec)

Am

plitu

de

−0.05 0 0.05−1

0

1x 10

5

X: 0.002916Y: 5.489e+004

Correlatie met code 3

Tijd (sec)

Am

plitu

de

Figuur 2.10: De correlatiefuncties

Met de maximumwaarden van deze functies wordt de positie van de ontvanger berekend. De

resultaten zijn weergegeven in Tabel 2.2.

Simulatietijd: 50ms

De vertragingen zijn:

Zender 1 tot ontvanger: 0.014707 sec

Zender 2 tot ontvanger: 0.012481 sec

Zender 3 tot ontvanger: 0.0029416 sec

Positie van de ontvanger: [3.99742957, 3.00303713, 0.92702707]

Tabel 2.2: Het resultaat

Dit resultaat komt op ongeveer vijf millimeter na overeen met de werkelijke positie, hetgeen een

aanvaardbare fout is.

Om nu na te gaan hoe het model zich gedraagt voor verschillende posities van de ontvanger,

wordt er gebruik gemaakt van het bestand simuleer.m. Deze code bepaalt, voor een gegeven

aantal posities, de fout van de met het model berekende positie ten opzichte van de werkelijke

positie van de ontvanger. Er wordt nu verondersteld dat de ontvanger zich in een vierkante

Page 27: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 16

kamer van 3m bij 3m bevindt en dat er in drie hoekpunten van de kamer een zender wordt

geplaatst.

Variabele Waarde Variabele Waarde

Tsim 0.1 sec zender1 [0,0,1]

fs 300kHz zender2 [3,0,1]

v 340 m/sec zender3 [0,3,1]

fm 2kHz fc 40kHz

zendcode 1

Tabel 2.3: Initialisatie Waarden

Met deze beginwaarden wordt de positie van de ontvanger in de kamer gesimuleerd in stappen

van 0.1 meter. Het resultaat van de simulatie is te zien in Figuur 2.11. De maximale fout is

5.016mm.

01

23

01

230

1

2

3

4

5

6

7

x 10−3

meter

X: 3Y: 3Z: 0.005016

meter

fout

(m

eter

)

Figuur 2.11: Relatieve fout

Page 28: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 17

Om na te gaan of er geen uitzonderlijke fouten optreden in bepaalde, niet gesimuleerde,

posities wordt de simulatie nogmaals uitgevoerd. Deze keer echter in een kleiner gebied van

de kamer en meer in detail. Het resultaat van de simulatie tussen 2 en 3 meter, waarbij er in

stappen van 5cm werd verschoven, is te zien op Figuur 2.12.

2

2.5

3

2

2.5

30

1

2

3

4

5

6

7

x 10−3

meter

X: 3Y: 3Z: 0.005016

meter

fout

(m

eter

)

Figuur 2.12: Relatieve fout in een gedetailleerd deel

Ook hier zijn geen verrassingen te merken en blijft de maximale fout beperkt tot 5.016mm.

2.3.5 Bespreking van de Matlab code

In deze paragraaf wordt kort uitgelegd hoe het Matlab-model werd opgebouwd. Meer uitleg

over de code kan gevonden worden in Bijlage A. Zoals in de vorige paragrafen werd aan-

gegeven, begint het model met het laden van enkele initiele variabelen zoals samplingfrequentie

en modulatiefrequentie, die eigen zijn aan het te simuleren systeem. Onmiddellijk hierna worden

de tijdsvertragingen die de codes bij het propageren zullen ondergaan bepaald. Dit gebeurt aan

de hand van een simpele formule:

afstand = snelheid*tijd

tijd =afstand

snelheid

Page 29: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 18

Hierbij stelt afstand de afstand voor tussen een zender en de ontvanger (=de robot). Verder

is snelheid hier de snelheid waarmee de golven zich verplaatsen. Vermits er met akoestische

golven, die zich met de snelheid van het geluid verplaatsen, gewerkt wordt, is de snelheid 340

meter per seconde. Na het bepalen van deze tijdsvertragingen worden de noodzakelijke signalen

gegenereerd. Hierbij worden drie types onderscheiden:

• Signalen gegenereerd door de zenders:

De verschillende zenders maken elk hun eigen Kasami code. Deze Kasami code wordt

vervolgens gemoduleerd op een draaggolf met frequentie fc. Dit zijn de signalen die worden

verstuurd.

• Signalen gegenereerd door de ontvanger:

De ontvanger maakt dezelfde Kasami codes als deze van de zenders. Vermits ze zullen

worden gebruikt om het binnenkomend signaal, afkomstig van de zenders, mee te

vergelijken, worden ze de originele signalen genoemd. Op basis van de correlatiefunctie

tussen de originele signalen en het gedemoduleerde ontvangen signaal, zal de ontvanger in

staat zijn een tijdsvertraging te berekenen.

• Signalen die aankomen bij de ontvanger:

Dit zijn in essentie vertraagde versies van de door de zenders verzonden signalen. Op basis

van de tijdsvertragingen die hiervoor werden bepaald, worden de signalen van de zenders

verschoven in de tijd en vervolgens bij elkaar opgeteld. Het is dit resultaat dat door de

ontvanger zal worden ontvangen.

Na het genereren van de signalen wordt de werking van de ontvanger gesimuleerd. Zoals in

vorige paragrafen werd besproken, moet de ontvanger het binnenkomend signaal demoduleren.

De wijze waarop de demodulatie gebeurt, werd in sectie 2.3.3 uitgelegd.

Na demodulatie van het ontvangen signaal bepaalt de ontvanger de correlatiefuncties tussen de

originele signalen en het gedemoduleerde ontvangen signaal. Vervolgens worden de verschillende

tijdsvertragingen bepaald door piekdetectie van deze correlatiefuncties.

Eens deze tijdsvertragingen gekend zijn, wordt volgend stelsel opgelost om de positie van de

ontvanger te berekenen. √(x− x1)2 + (y − y1)2 + (z − z1)2 = v.t1√(x− x2)2 + (y − y2)2 + (z − z2)2 = v.t2√(x− x3)2 + (y − y3)2 + (z − z3)2 = v.t3

Page 30: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

2.3 Model in Matlab 19

Waarbij [x,y,z] de coordinaten van de ontvanger voorstellen en [xi,yi,zi] de coordinaten van de

verschillende zenders. De tijdsvertragingen worden voorgesteld door t1, t2 en t3.

2.3.6 Optimalisatie van het model

De vorige paragraaf heeft duidelijk aangetoond dat het model klopt. In deze paragraaf wordt

nagegaan of het mogelijk is om met het model betere resultaten te krijgen. Het huidige model

werkt met een samplingfrequentie van 300kHz. Het is echter zonder probleem haalbaar om te

sampelen met een frequentie van meer dan 10 keer zo hoog. In Figuur 2.13 wordt de invloed op de

resultaten van het model nagegaan wanneer een samplingfrequentie van 5MHz wordt gebruikt.

Hierbij wordt er in een vierkant van 1 meter op 1 meter gesimuleerd waarbij de robot verplaatst

wordt in stappen van 5cm. De maximale fout is nu kleiner dan 4mm en gemiddeld gesproken is

de fout een stuk gedaald. Een hogere samplingfrequentie zal dus tot betere resultaten leiden.

22.5

3

2

2.5

30

1

2

3

4

5

x 10−3

meter

X: 3Y: 2.35Z: 0.003395

meter

fout

(m

eter

)

Figuur 2.13: Relatieve fout in een gedetailleerd deel

2.3.7 Besluit van het model

Het model toont aan dat het doel om een GPS systeem na te bouwen dat werkt met akoestische

golven realiseerbaar is.

Page 31: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

DE ZENDERS 20

Hoofdstuk 3

De Zenders

3.1 Inleiding

In dit hoofdstuk wordt uitgelegd hoe de constructie van de zenders tot stand is gekomen.

3.2 Transducer

Uit de vorige hoofdstukken is duidelijk gebleken dat drie zenders volstaan om aan plaatsbepaling

te doen. Dit op voorwaarde dat de zenders gesynchroniseerd zijn. De ontvanger moet, aan de

hand van signalen afkomstig van de zenders, zijn positie kunnen bepalen. De sterkte waarmee

de zenders signalen in bepaalde richtingen sturen, is sterk afhankelijk van de keuze van de

transducer. De voorkeur gaat uit naar akoestische transducers met een brede bundel, zodat

iedere zender de ruimte zo goed mogelijk beslaat. Wanneer de zenders zich in de hoeken van

de kamer bevinden, volstaat een bundel van ongeveer 90. Uiteindelijk werd er gekozen voor

de 400ET080 waarvan de karakteristieken in Tabel 3.1 beschreven zijn. Door de transducer

met een netwerk analyser uit te meten, werd bevestigd dat deze voldoet aan de vooropgestelde

specificaties uit de datasheet.

Page 32: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.3 Aansturing 21

Naam 400ET080

Centrale frequentie 40.0 ± 3.0kHz

Bandbreedte 1.5kHz

Stralingspatroon

Tabel 3.1: Transducer

3.3 Aansturing

Om de transducer aan te sturen, werd een microcontroller-bord, genaamd Flupke, ter beschikking

gesteld. Deze component werd ontworpen op het labo van INTEC Design en heeft als doel tot

communicatielink tussen de PC en elektronische circuits te dienen. Flupke beschikt over een

USB aansluiting waarmee de component wordt gevoed en waarlangs gegevensuitwisseling met

de PC kan plaatsvinden. Verder is er ook een microcontroller (MSP430 ) aanwezig die via de

COM-poort kan worden geprogrammeerd.

In eerste instantie wordt een systeem ontworpen waarbij de drie zenders perfect

gesynchroniseerd zijn en aangestuurd worden met behulp van de PC. De transducer zal als band-

doorlaatfilter werken, met een centrale frequentie van 40kHz en een bandbreedte van 1.5kHz.

Indien de code die bij 2kHz werkt, rechtstreeks aan de transducer wordt gelegd, zal deze er

volledig worden uitgefilterd. Daarom is een uitbreiding van het model nodig, zodat het mogelijk

wordt om via de MSP430 een digitaal signaal aan de transducer te leggen.

3.4 Uitbreiding van het model

3.4.1 Pulsbreedte modulatie

Om de transducer correct aan te sturen, is het wenselijk om aan de transducer een digitaal signaal

van ongeveer 40kHz, dat met de 2kHz code wordt gemoduleerd, te leggen. In dit deel wordt een

methode besproken die toelaat zo’n 40kHz signaal te maken. Eerst worden de Kasami codes en

Page 33: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.4 Uitbreiding van het model 22

hun spectrum in Figuur 3.1 van dichtbij bekeken. De energie van de code zit geconcentreerd

tussen 0 en 2kHz.

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035−1.5

−1

−0.5

0

0.5

1

1.5Kasami Code (lengte = 63)

Tijd (seconden)A

mpl

itude

−6000 −4000 −2000 0 2000 4000 60000

0.5

1

1.5

2x 10

4 Spectrum Kasami Code

Frequentie

Am

plitu

de

Figuur 3.1: Kasami Code en zijn Spectrum

Deze code wordt vervolgens op een cosinus van 40kHz gemoduleerd, zodat de energie in het

spectrum van dit gemoduleerd signaal geconcentreerd zit rond 40kHz, zie Figuur 3.2.

0 1 2 3 4 5 6 7

x 10−3

−1.5

−1

−0.5

0

0.5

1

1.5Gemoduleerd signaal

Tijd (seconden)

Am

plitu

de

−50 −40 −30 −20 −10 0 10 20 30 40 500

2000

4000

6000Spectrum Gemoduleerd Signaal

Frequentie (kHz)

Am

plitu

de

Figuur 3.2: Gemoduleerd Signaal en zijn Spectrum

Het is nu de bedoeling dat de transducer wordt aangestuurd met een digitaal signaal. Om

tot een digitaal signaal te komen, wordt Pulse Width Modulation of kortweg PWM gebruikt

(Figuur 3.3). PWM vertrekt van een signaal dat vergeleken wordt met een draaggolf. In het

geval het signaal een grotere waarde heeft dan de draaggolf, komt het PWM-signaal hoog te

staan. Wanneer het signaal kleiner is dan de draaggolf, staat het PWM-signaal laag. Het

spectrum van het PWM-signaal heeft pieken bij de draaggolf- en bij de signaalfrequentie.

Page 34: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.4 Uitbreiding van het model 23

Figuur 3.3: Pulse Width Modulation

Het bijzondere aan PWM codering is dat, wanneer het PWM-signaal door een laagdoorlaat-

filter gestuurd wordt, het oorspronkelijk signaal er terug uit komt. In Figuur 3.4 wordt het

resultaat, na PWM codering met een draaggolf van 320kHz, getoond.

0 0.5 1 1.5 2 2.5 3 3.5

x 10−4

−1

0

1

Draaggolf

Tijd (seconden)

0 0.5 1 1.5 2 2.5 3 3.5

x 10−4

−1

0

1

Gemoduleerd signaal

Tijd (seconden)

0 0.5 1 1.5 2 2.5 3 3.5

x 10−4

−1

0

1

PWM−signaal

Tijd (seconden)

−500 −450 −400 −350 −300 −250 −200 −150 −100 −50 0 50 100 150 200 250 300 350 400 450 5000

2000

4000

X: 4.024e+004Y: 2407

Spectrum van het PWM−signaal

Frequentie (kHz)

Figuur 3.4: De draaggolf, het gemoduleerde signaal, het PWM-signaal en zijn spectrum

Page 35: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.4 Uitbreiding van het model 24

Op Figuur 3.4 is duidelijk te zien dat het PWM-signaal een energiepiek bij 40kHz heeft.

Om te controleren of de code uit het PWM signaal gehaald kan worden, wordt de transducer

als een banddoorlaatfilter, met een centrale frequentie van 40kHz en een bandbreedte van 1.5kHz,

gesimuleerd. Daarna wordt dit uitgangssignaal op dezelfde wijze als in het oorspronkelijk

propagatiemodel gedemoduleerd. In Figuur 3.5 is een Kasami code te zien, samen met de

eerste milliseconde van het gevormde PWM-signaal. Dit PWM-signaal wordt vervolgens aan het

banddoorlaatfilter gelegd en de uitgang wordt gedemoduleerd zoals in sectie 2.3.3. Ter illustratie

wordt het resultaat vervolgens gequantiseerd, waarbij positieve waarden gelijk worden gesteld

aan 1 en negatieve waarden aan -1. Dat de code correct wordt gereconstrueerd, is onmiddellijk

te zien.

Figuur 3.5: Demodulatie van het PWM signaal

Dit PWM signaal wordt nu bemonsterd en zijn samplewaarden worden rechtstreeks in de

MSP430 geprogrammeerd om de transducers aan te sturen. De totale tijd om 1 code te verzenden

bedraagt63fm

=632e3

= 31.5ms. Indien er gesampeld wordt aan 1MHz dan zijn er 31.5e-3*fs =

31500 samples nodig per code. Als een MSP de 3 zenders wil aansturen, moet deze bijna 100.000

samples opslaan voor de codes. Dit is praktisch onmogelijk omdat het RAM-geheugen van de

chip beperkt is tot 5kB. [7] Het is gelukkig niet noodzakelijk om te sampelen aan een dergelijk

hoge frequentie. Indien de samplingfrequentie verlaagd wordt tot 120kHz zien de signalen eruit

zoals weergegeven in Figuur 3.6. Ook hier wordt de code nog voldoende gereconstrueerd. Bij

een samplingfrequentie van 120kHz zijn er 31.5e-3*fs = 3780 samples nodig per code, hetgeen

Page 36: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.4 Uitbreiding van het model 25

een realistischer aantal is om in het geheugen van de microcontroller op te slaan.

Figuur 3.6: Demodulatie van het PWM signaal bij een samplingfrequentie van 120kHz

3.4.2 Bespreking van de Matlab code

In deze paragraaf wordt kort de werking van de Matlab code besproken die voor de resultaten uit

de vorige paragraaf heeft gezorgd. Meer uitleg over de code kan worden gevonden in Bijlage B.

Deze code begint op dezelfde manier als de code in het oorspronkelijke Matlab-model. Er wordt

nu echter niet meer verondersteld dat de zender de transducer zomaar met een signaal van 2kHz

kan moduleren. Om dit te simuleren wordt de Kasami code gemoduleerd op een cosinus van

40kHz en wordt er een zaagtandsignaal gegenereerd. Vervolgens wordt Pulse Width Modulation

toegepast waarbij de zaagtand vergeleken wordt met het gemoduleerde signaal. PWM werd reeds

besproken in sectie 3.4.1. Deze methode zorgt voor een digitaal signaal met in zijn spectrum

een piek bij een frequentie van 40kHz. Dit signaal kan wel aan de transducer worden aangelegd

en zal er wel in slagen om de transducer correct te moduleren.

Er moet nu enkel nog gecontroleerd worden of het signaal dat via de transducer wordt ver-

zonden correct gedemoduleerd kan worden. Hiervoor wordt eerst de transducer gesimuleerd als

een banddoorlaatfilter met een centrale frequentie van 40kHz en een bandbreedte van 1.5kHz. De

uitgang van dit filter stelt dan het signaal voor dat wordt verzonden door de zender. Vervolgens

wordt dit signaal gedemoduleerd zoals reeds in het vorige hoofdstuk werd besproken.

Page 37: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.5 USB interface tussen het microcontrollerbord en de PC 26

3.5 USB interface tussen het microcontrollerbord en de PC

Het is voldoende om het digitale PWM-signaal op te slaan in het geheugen van de microchip.

Deze chip moet vervolgens, op bepaalde tijdstippen, de samples van dit signaal naar buiten

brengen. Vermits het microcontrollerbord voorzien is van een USB connectie, lijkt het logisch

om er in de eerste stap voor te zorgen dat er via de PC commandos verstuurd kunnen worden

naar de chip. In een tweede stap moet er dan voor gezorgd worden dat de MSP de codes, op de

specifieke tijdstippen, aan de correcte uitgangspinnen naar buiten brengt.

Om commandos via de USB verbinding van de PC naar het bordje te sturen, is er zowel

een deel code voor de PC als een deel code voor de MSP430 nodig. Voor het PC gedeelte

werd gebruik gemaakt van Visual Basic 6.0 als programmeeromgeving. Om de MSP430 te

programmeren werd het programma Code Composer Essentials 2.0 gebruikt. Dit programma

ondersteunt zowel de C programmeertaal als ASM. Vermits C een hogere niveau taal is en

bijgevolg eenvoudiger te begrijpen, werd C als programmeertaal gekozen.

3.5.1 Programmeren van de MSP430

Het microcontrollerbord bevat een FT2232 IC [8] die met de MSP430 verbonden is en het

mogelijk maakt om een USB connectie op te zetten tussen het bord en de PC. Voor deze IC’s

werd het JTAG protocol [9] ontworpen.

De C code voor de verbinding tussen het microcontrollerbord en de PC werd reeds geschreven

door ing. J. Gillis en is te vinden in Bijlage C.

3.5.2 Programmeren van het PC gedeelte

De Visual Basic code maakt gebruik van de functies die aanwezig zijn in het bestand

FTD2XX.DLL. Hierin worden de functies om het JTAG protocol te gebruiken gedeclareerd. [10]

In Tabel 3.2 wordt een lijst van de meest gebruikte functies weergegeven. Een afbeelding van

de uiteindelijke interface is te vinden in Hoofdstuk 8.

Page 38: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.6 Aansturing van de transducer m.b.v. TimerA 27

Funtie Uitleg

FT ListDevices Geeft informatie over de apparaten die zijn aangesloten

FT Open Zorgt dat er een verbinding wordt gemaakt met het apparaat

FT Write Schrijft gegevens naar het apparaat

FT Read Leest gegevens van het apparaat

FT Close Sluit de verbinding met het apparaat

Tabel 3.2: De meest gebruikte functies

3.6 Aansturing van de transducer m.b.v. TimerA

3.6.1 Inleiding

Het microcontrollerbord is te zien op Figuur 3.7 en een schematische voorstelling van de boven-

zijde is weergegeven in Figuur 3.8. Op Figuur 3.8 is verder aangegeven waar de MSP430 zich

bevindt en welke poorten (P3.5, P3.6 en P3.7) er gebruikt zullen worden om de drie zenders aan

te sturen. In de chip worden de drie PWM-signalen voor de verschillende zenders opgeslagen

met een samplingfrequentie van 127kHz, hetgeen resulteert in 4000 bits of 500 bytes per code. In

normale omstandigheden doet de MSP niks en werkt hij in zijn laag vermogen mode waarbij de

CPU is uitgeschakeld. Wanneer de MSP via de USB kabel het commando “z” ontvangt, wordt

de timer van de MSP zodanig ingesteld dat deze zal werken bij een frequentie van 127kHz.

Er zal met andere woorden iedere1

127e3= 7.8µs een interrupt signaal worden gegenereerd

die aanleiding zal geven tot het aanroepen van een functie. Deze functie zal er dan op haar

beurt voor zorgen dat de volgende bits aan de correcte poorten worden aangelegd. De exacte

frequentie wordt afgeleid van een 6MHz kwartskristal dat op het microcontrollerbord aanwezig

is en bedraagt6MHz

47= 127.659kHz.

Page 39: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.6 Aansturing van de transducer m.b.v. TimerA 28

Figuur 3.7: Het microcontrollerbord

Figuur 3.8: Schematische voorstelling van de bovenzijde van het microcontrollerbord

Page 40: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.6 Aansturing van de transducer m.b.v. TimerA 29

3.6.2 Programmeren van de MSP430

Oorspronkelijk was het de bedoeling de zenders aan te sturen door gebruik te maken van TimerA.

Door de timer, na een vast aantal klokcycli, een interrupt te laten genereren, wordt het mogelijk

om uit de timer een frequentie af te leiden. De code die hiervoor wordt gebruikt, is gegeven in

Bijlage D.

De tijd die de MSP nodig heeft om de interrupt routine af te werken, is echter veel groter dan

de tijd tussen de verschillende interrupts. Hierdoor is het niet mogelijk om op deze manier een

correcte frequentie af te leiden. In volgende paragraaf wordt het resultaat getoond.

3.6.3 Metingen

In dit deel wordt nagegaan of de MSP correct reageert op een PC commando en of de PWM-

signalen, aan de gewenste frequentie, op de correcte pinuitgangen verschijnen. Om dit te meten,

werden de uitgangspinnen van het microcontrollerbord aangesloten op een logic analyser. In

Figuur 3.9 is het resultaat weergegeven. Signaal D4 toggelt telkens de interrupt routine wordt

uitgevoerd en laat dus toe om de frequentie te controleren. Indien alles correct werkt, moet D4

een blokgolf met een frequentie van 127kHz zijn.

Figuur 3.9: Uitgang van de verschillende pinnen

Op Figuur 3.9 is onmiddellijk te zien dat de code aan een te lage frequentie wordt uit-

gezonden. TimerA, in combinatie met zijn interrupt routine, volstaat dus niet om de zenders

aan te sturen. Bijgevolg werd er op zoek gegaan naar een betere methode die minder tijd zou

kosten.

Page 41: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.7 Aansturing van de transducer m.b.v. DMA en SPI 30

3.7 Aansturing van de transducer m.b.v. DMA en SPI

Vorige paragraaf toonde aan dat het niet mogelijk is de drie zenders samen aan te sturen met

behulp van een enkel microcontrollerbord door gebruik te maken van TimerA. Daarom worden

er in deze sectie een aantal verbeteringen besproken die wel toelaten de zenders voldoende snel

aan te sturen.

3.7.1 DMA

DMA is een module die aanwezig is op de microcontroller (MSP430 ). Een blokdiagram van deze

module wordt weergegeven in Figuur 3.10. De DMA maakt het mogelijk om, zonder tussenkomst

van de CPU, bytes of woorden van de ene geheugenlocatie naar de andere te kopieren. Zoals in

het blokdiagram te zien is, zijn er drie identieke DMA modules aanwezig in de microcontroller.

In Tabel 3.3 worden de belangrijkste registers van de module kort besproken.

Register Uitleg

DMA0TSELx Dit register bepaalt wat de DMA module triggert

DMA0SA Bevat het bronadres, van waar de DMA gegevens moet halen

DMA0DA Bevat het doeladres, naar waar de DMA de gegevens moet schrijven

DMA0SZ Bevat de grootte van de te kopieren geheugenruimte

Tabel 3.3: De belangrijkste registers

Met behulp van DMA is het dus mogelijk om op het juiste moment de codes te kopieren

naar de uitgangspinnen. Er moet echter onmiddellijk worden opgemerkt dat er geen individuele

bits gekopieerd kunnen worden. Dit is een belangrijk nadeel vermits dit een grotere geheugen-

capaciteit vergt. Dit wordt hieronder duidelijker gemaakt.

De zenders moeten volgende codes uitsturen:

Zender 1: C1,1C1,2C1,3...

Zender 2: C2,1C2,2C2,3...

Zender 3: C3,1C3,2C3,3...

Waarbij Ci,j de j-de bit van de i-de zender voorstelt.

Vermits een zender serieel moet worden aangestuurd, vereist iedere zender een pin waarop

achtereenvolgens de verschillende codebits moeten komen te staan. Bijgevolg moet de DMA

Page 42: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.7 Aansturing van de transducer m.b.v. DMA en SPI 31

module, per operatie, telkens drie bits naar de drie uitgangspinnen kopieren. Daar deze module

enkel bytes of woorden kan kopieren, moeten de codes in het geheugen worden opgeslagen onder

volgende vorm:

C1,1C2,1C3,100000 om de eerste bit te versturen

C1,2C2,2C3,200000 om de tweede bit te versturen

C1,3C2,3C3,300000 om de derde bit te versturen

...

Er worden nu maar drie bits (drie zenders) per byte nuttig gebruikt, hetgeen een enorme

verspilling van geheugen is. Omdat elke code zo’n 4.000 bits nodig heeft, komt dit neer op

een verlies van 4.000*3*5 = 60.000 bits aan geheugenruimte. Vandaar dat een combinatie met

SPI misschien de oplossing kan bieden.

Page 43: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.7 Aansturing van de transducer m.b.v. DMA en SPI 32

Figuur 3.10: Blokdiagram van de DMA Module

Page 44: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.7 Aansturing van de transducer m.b.v. DMA en SPI 33

3.7.2 SPI

SPI is een andere module die op de MSP aanwezig is. De SPI module kan een parallele in-

gang omzetten in een seriele uitgang met een zekere frequentie. Daarnaast werkt deze module

onafhankelijk van de CPU, hetgeen automatisch voor snelheidswinst zal zorgen. Een blok-

diagram van de module wordt weergegeven in Figuur 3.11.

Door de DMA module een byte te laten kopieren naar de ingang van de SPI module wordt het

mogelijk om DMA te combineren met SPI. De SPI module zal er op zijn beurt voor zorgen dat de

uitgangspin achtereenvolgens de individuele bits zal uitsturen waaruit deze byte bestaat. Vermits

de MSP echter maar twee SPI modules bevat, is het niet mogelijk om de drie zenders vanuit

een microcontrollerbord aan te sturen. De drie zenders hebben bijgevolg minstens twee bordjes

nodig. Het is dan ook logischer om iedere zender op een afzonderlijk bordje te programmeren.

Op deze manier blijft de programmering, op hun persoonlijke code na, voor elke zender dezelfde

en komt er extra geheugenruimte vrij.

Page 45: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.7 Aansturing van de transducer m.b.v. DMA en SPI 34

Figuur 3.11: Blokdiagram van de SPI Module

Page 46: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.7 Aansturing van de transducer m.b.v. DMA en SPI 35

3.7.3 USB interface

Omdat het nogal omslachtig is om voor iedere zender een afzonderlijke USB connectie op te

zetten, wordt er nog een extra microcontrollerbord toegevoegd dat dienst doet als synchronisator.

Het is dit bord dat commandos van de PC zal ontvangen en vervolgens een aantal pinnen hoog

of laag zal brengen om te communiceren met de verschillende zenders. Op deze manier kan

de huidige PC-code behouden blijven en moet er enkel een synchronisatieprotocol ontwikkeld

worden. Dit hoofdstuk beperkt zich tot de constructie van de zenders en gaat niet dieper in op

het synchronisatieprotocol. In Hoofdstuk 5 wordt deze synchronisator wel in detail besproken.

Hier wordt verondersteld dat de zenders beginnen met zenden wanneer ze het zend-commando

ontvangen.

3.7.4 Transducer aansturing

Inleiding

Een afbeelding van het microcontrollerbord is te zien op Figuur 3.7 en een schematische voor-

stelling van de bovenzijde is weergegeven in Figuur 3.12. Op Figuur 3.12 is verder aangegeven

waar de MSP430 zich bevindt en welke poorten (P3.0 - P3.7, P5.1) er gebruikt zullen worden. In

de chip wordt het PWM-signaal voor de corresponderende zender, met een samplingfrequentie

van 240kHz, opgeslagen. Aan de hand van deze samplingfrequentie wordt het aantal bits die

de MSP moet opslaan bepaald. De Kasami codes zijn 63 bits lang en worden verzonden aan

2kHz. Het versturen van de volledige code neemt dus 31.5 milliseconden in beslag. Sampelen van

31.5ms aan een frequentie van 240kHz geeft 7560 samples of 945 bytes. Deze hogere frequentie is

mogelijk omdat de MSP nu maar de code van een zender moet bevatten in plaats van de codes

van de drie zenders.

Page 47: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.7 Aansturing van de transducer m.b.v. DMA en SPI 36

Figuur 3.12: Schematische voorstelling van de bovenzijde van het microcontrollerbord

Programmeren van de MSP430

In Figuur 3.13 wordt de werking van de code voor een zender geıllustreerd. De programmacode

is te vinden in Bijlage E. Wanneer de zender de opdracht krijgt om te zenden, worden de DMA

en de SPI module ingeschakeld en geconfigureerd. De DMA module wordt getriggerd op een

lege SPI buffer (UTXBuf). Wanneer dit het geval is, kopieert de DMA de volgende code-byte

naar deze buffer. Als het schuifregister van de SPI module leeg is, verplaatst de module de

inhoud van zijn buffer naar zijn schuifregister. Dit triggert de DMA om de volgende byte te

kopieren naar UTXBuf. De klokinstellingen van de SPI zorgen er verder voor dat de bits aan

de correcte frequentie, vanuit het schuifregister, aan pin 5.1 worden gelegd. Telkens wanneer de

DMA getriggerd wordt, verhoogt hij zijn teller. Wanneer de teller de codegrootte bereikt, wordt

een interrupt gegenereerd die aangeeft dat alles is verzonden. Vervolgens worden de DMA en

de SPI module terug uitgeschakeld.

Page 48: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.7 Aansturing van de transducer m.b.v. DMA en SPI 37

Figuur 3.13: Werking van de zender

3.7.5 Metingen

In dit deel wordt nagegaan of de MSP correct reageert op een PC commando en of het PWM-

signaal op een correcte wijze op pin 5.1 verschijnt. Om dit te meten, wordt het microcontroller-

bord op een oscilloscoop aangesloten. In Figuur 3.14 wordt een detail van het resultaat dat

op de scoop verschijnt weergegeven. Het duidelijk dat de zender zijn bits wel aan de correcte

frequentie van 240kHz verstuurt.

Page 49: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.8 Constructie van de zenders 38

Figuur 3.14: Uitgang van de zender

3.8 Constructie van de zenders

3.8.1 Inleiding

De MSP430 brengt een PWM-signaal naar buiten via pin 5.1 van het microcontrollerbord.

Hierbij zorgt een codebit met waarde 1 dat de corresponderende uitgangspin op een spanning

van 3.3V komt te staan. Een bitwaarde van 0 zorgt dan logischerwijze voor een spanning van

0V.

Deze bits zullen het 40kHz signaal van de transducer moduleren. Verder moet het signaal dat

de zender verstuurt voldoende sterk zijn om aan de ontvanger nog voldoende detecteerbaar te

zijn. Om dit te realiseren wordt de uitgangspin eerst versterkt vooraleer deze aan de transducer

wordt aangelegd. De versterker maakt gebruik van twee identieke buffers (CD4049UBCM [11])

van Fairchild Semiconductor en is te zien op Figuur 3.15. In Figuur 3.16 wordt getoond hoe de

verschillende pinnen van de buffers verbonden worden om het circuit uit Figuur 3.15 te realiseren.

Deze buffers hebben als groot voordeel dat de uitgangsspanning van de invertoren afhankelijk

is van de aangelegde voedingsspanning. Hierdoor kan de uitgangsspanning in trappen worden

verhoogd door meerdere buffers, die op een verschillende voedingsspanning werken, te gebruiken.

Tabel 3.4 geeft een aantal karakteristieken weer van deze buffer.

Page 50: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.8 Constructie van de zenders 39

Voedingsspanning (V) Ingangsspanning (V) Uitgangsspanning (V)

5V 0V 4.5V

5V 3.3V 0.5V

5V 4.5V 0.5V

10V 0V 9V

10V 0.5V 9V

10V 4.5V 1V

Tabel 3.4: Elektrische karakteristieken van de CD4049UBCM

Figuur 3.15: Versterking van het PWM signaal

Figuur 3.16: Uitvoering van de versterking van het PWM signaal

Page 51: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.8 Constructie van de zenders 40

3.8.2 PCB ontwerp

Met behulp van het programma Eagle werd een layout voor de zenders ontworpen.

Het resulterend elektrisch schema is te zien op Figuur 3.17. Figuur 3.18 toont een vereenvoudigde

voorstelling van dit circuit waarop enkel de belangrijkste bouwblokken zijn aangeduid. De twee

headers dienen om de zender op het microcontrollerbord te kunnen plaatsen. Verder worden de

pinnen, die nodig zijn voor de synchronisatie (zie Hoofdstuk 5), naar een afzonderlijke header,

de connector, gebracht. De batterij die gebruikt wordt, is een 9 Volt batterij en dient om een

van de buffers te voeden. Daarnaast wordt de 9 Volt ook als ingangsspanning aan de regulator,

ADP3335 [12], gelegd. Deze zet de 9 Volt om in 5 Volt waarmee dan enerzijds de tweede buffer

en anderzijds het microcontrollerbord gevoed kan worden. In Figuur 3.19 wordt de layout van

het zender bordje weergegeven. Figuren 3.20 en 3.21 tonen top en bottom laag.

Page 52: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.8 Constructie van de zenders 41

Figuur 3.17: Elektrisch schema van de zender

Page 53: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.8 Constructie van de zenders 42

Figuur 3.18: Vereenvoudigd schema van de zenders

Figuur 3.19: Layout van de zenders

Page 54: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

3.8 Constructie van de zenders 43

Figuur 3.20: De top-laag van de zenders

Figuur 3.21: De bottom-laag van de zenders

Page 55: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

DE ONTVANGER 44

Hoofdstuk 4

De Ontvanger

4.1 Inleiding

In dit hoofdstuk wordt uitgelegd hoe de bouw van de ontvanger tot stand is gekomen.

4.2 Transducer

Idealiter zou de transducer volledig omnidirectioneel moeten zijn, waarbij het signaal vanuit alle

richtingen even goed wordt ontvangen. Helaas bestaan zo’n transducers niet en werd hetzelfde

type transducer als bij de zenders gekozen, de 400ER080. In een uitbreiding op deze thesis zou

men eventueel gebruik kunnen maken van een transducer rooster om op deze manier vanuit alle

richtingen goed te kunnen ontvangen.

4.3 Aansturing

Om de transducer aan te sturen, werd er net zoals bij de zenders een component, Flupke, ter

beschikking gesteld. Verder wordt er nog steeds perfecte synchronisatie tussen de zenders en de

ontvanger verondersteld. De tijd die er moet worden gesampeld om alle gegevens te ontvangen is

niet gekend, maar men kan wel een bovengrens bepalen. De zenders versturen codes van 63 bits

aan 2kHz, hetgeen 31.5ms duurt. Daarnaast mag er verondersteld worden dat de ontvanger zich

niet verder dan 5 meter van de zenders bevindt. Het signaal zal na een vertraging van5

340=

14.7ms worden ontvangen (snelheid van het geluid = 340 m/s). De totale tijd dat de ontvanger

moet meten, kan dus begrensd worden door 31.5+14.7 = 46.2ms. Sampelt de ontvanger nu 0.05

seconden aan een frequentie van 200kHz dan worden er 10.000 samples genomen. Omwille van

Page 56: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.4 Programmeren van de ontvanger 45

de beperkte geheugenruimte van de MSP moet deze samplefrequentie drastisch verlaagd worden

om 50ms te kunnen meten.

4.4 Programmeren van de ontvanger

4.4.1 Uitbreiding van de USB interface

Om commandos via de USB verbinding van de PC naar het bordje te sturen, moet er zowel

een deel code voor de PC als een deel code voor de MSP430 geschreven worden. Voor het PC

gedeelte werd opnieuw gebruik gemaakt van Visual Basic 6.0 als programmeeromgeving. Om

de MSP430 te programmeren werd ook hetzelfde programma, Code Composer Essentials 2.0,

gebruikt. Het opzetten van een USB verbinding kan, door gebruik te maken van het JTAG

protocol (zie Hoofdstuk 3), op dezelfde manier gebeuren als bij de zenders. Bijgevolg kan de

code die te vinden is in Bijlage C opnieuw worden gebruikt om de MSP van de ontvanger te

programmeren.

De uitbreiding bestaat er nu in om de PC toe te laten, naast een eerste USB verbinding met

de zenders, een tweede USB verbinding op te starten die de PC met de ontvanger verbindt. In

Hoofdstuk 8 wordt de resulterende interface afgebeeld.

4.4.2 Programmeren van de chip voor de ontvanger

Algemene beschouwingen

Om de MSP nu te gaan programmeren, moet er rekening worden gehouden met het feit dat het

ontvangen signaal niet digitaal is. In tegenstelling tot bij de zenders mag dus niet zomaar gelijk

welke pin gesampeld worden als hoog (=1) of laag (=0), maar moet er eerst een analoog naar

digitaal omzetting gebeuren. Op de MSP430 bevindt zich een 12 bit ADC (ADC12 ) die een

analoog sample kan omzetten in 12 bits. Het is deze analoog naar digitaal omzetter die gebruikt

zal worden om het ontvangen analoog signaal om te zetten in een digitaal signaal, waarmee dan

verder gewerkt kan worden.

Tevens moet er ook rekening gehouden worden met een aantal beperkingen. De ADC zal

worden aangestuurd door een klok (TimerA). Een afgeleide klok zal aangeven wanneer het

programma naar de interrupt routine van de ADC moet springen. De interrupt moet volledig af-

gewerkt zijn vooraleer de volgende interrupt mag optreden. Is de Interrupt latency, de tijd tussen

Page 57: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.4 Programmeren van de ontvanger 46

het ontstaan van een interrupt en de afhandeling ervan, immers te hoog dan zal er niet langer

gesampeld worden aan een vaste frequentie. Dit vormt een eerste beperking op de maximale

klokfrequentie. Verder zorgt de beschikbare geheugenruimte voor een tweede beperking op de

frequentie. Wordt er gedurende 0.05 seconden aan 6MHz (de maximale klokfrequentie) ge-

sampeld, dan zijn er 300.000 samples nodig. Vermits de ADC ieder sample in 12 bits omzet,

moet de MSP 3.600.000 bits of 450.000 bytes kunnen opslaan om 0.05 seconden te meten. Dit

is veel meer dan het geheugen van de MSP430 kan bevatten.

Het is met andere woorden nodig om een afweging te maken tussen de maximale klokfrequentie

en de gewenste sampleresolutie.

Een oplossing voor de eerste beperking bestaat erin om, net zoals bij de zenders, gebruik

te maken van de DMA module. Wanneer de DMA getriggerd wordt door TimerA, wordt de

ADC uitgang rechtstreeks gekopieerd naar het geheugen. Vermits de DMA een module is die

onafhankelijk van de CPU kan werken, gaat er op deze manier geen kostbare tijd verloren in de

interrupt routines. Dit maakt het mogelijk om een hogere samplefrequentie te bereiken.

De energie, van de Kasami codes die worden gebruikt, zit geconcentreerd tussen 0 en 2kHz.

De codes worden BPSK gemoduleerd op een draaggolf van 40kHz. Na PWM codering worden de

samples aan een transducer, met centrale frequentie van 40kHz, gelegd. De verzonden signalen

hebben in hun spectrum een piek bij 40kHz. De verzonden codes liggen in een band van 38kHz

tot 42kHz. Dit is te zien op Figuur 4.1.

−60 −50 −40 −30 −20 −10 0 10 20 30 40 50 600

5000

10000

15000Spectrum Kasami code

Frequentie (kHz)

Am

plitu

de

−60 −50 −40 −30 −20 −10 0 10 20 30 40 50 600

1000

2000

3000

4000Spectrum PWM Signaal

Frequentie (kHz)

Am

plitu

de

Figuur 4.1: Spectrum van de Kasami code en van het PWM signaal

Page 58: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.4 Programmeren van de ontvanger 47

Het Nyquist criterium zegt dat een signaal met bandbreedte B gesampeld moet worden

aan een frequentie groter dan of gelijk aan 2 keer de bandbreedte van dat signaal om aliasing

te vermijden. Het criterium zegt niets over de plaats waar het signaal zich in het spectrum

moet bevinden.[13] De verzonden code bevindt zich in een band rond 40kHz en heeft er een

bandbreedte van 4kHz. Om de codes correct te ontvangen, volstaat het voor de ontvanger om

te sampelen aan een frequentie boven de 8kHz. Dit betekent echter niet dat de resultaten ook

altijd even nauwkeurig zullen zijn. Sampelen aan 8kHz betekent immers dat er maar om de1

8e3= 125µs een sample wordt genomen. Gedurende de dode tijd, waarin de gegevens van de

zenders naar de ontvanger propageren, wordt er dan ook maar om de 125µs gesampeld. In

125µs legt een geluidsgolf 125*10−6*340 = 0.0425m of 4.25cm af. Wanneer de ontvanger een

sample zou nemen net voor het signaal aankomt, kunnen er fouten tot bijna 4.25cm optreden.

Een hogere samplefrequentie zal bijgevolg ook tot een hogere nauwkeurigheid leiden. Het doel

van deze scriptie is om een nauwkeurigheid van een centimeter te halen. Een geluidsgolf legt

deze afstand in0.01340

≈ 30µs af. Een samplefrequentie van 30kHz zal voor een nauwkeurigheid

van 1cm zorgen.

Het beschikbare RAM geheugen dat overblijft voor het opslaan van de ontvangen samples

bedraagt zo’n 3kB. Er moet gedurende 50ms worden gemeten en ieder sample afkomstig van

de ADC resulteert in 12 bits. De maximale samplefrequentie bedraagt dan3000 ∗ 80.05 ∗ 12

= 40kHz.

Sampelen aan 40kHz zal tot een nauwkeurigheid van34040e3

= 0.0085m of 8.5mm leiden.

Bespreking van de MSP430 code

In deze paragraaf wordt de werking van de programmeercode voor de ontvanger besproken. Dit

wordt geıllustreerd in Figuur 4.2. De code zelf is gegeven in Bijlage F. Wanneer de ontvanger de

opdracht van de computer krijgt om met het sampelen te beginnen, zal deze TimerA configureren

en starten. Vervolgens wordt de DMA module zodanig geconfigureerd dat deze getriggerd wordt

telkens TimerA een zekere waarde bereikt. Op deze manier wordt de DMA getriggerd aan een

bepaalde, vaste frequentie. De DMA wordt verder zo ingesteld dat hij bij iedere trigger de

gegevens op de ingang (in dit geval de ADC12 poort) rechtstreeks kopieert naar het geheugen

van de MSP430. Gedurende deze bewerking hoeft de CPU niet tussen te komen, hetgeen een

significante tijdswinst oplevert. Wanneer de DMA voldoende lang gesampeld heeft, zal deze

de Timer en zichzelf uitschakelen. De sample resultaten blijven ondertussen bewaard in het

geheugen van de MSP tot de PC een nieuwe opdracht tot “ontvangen” geeft. De MSP kan

Page 59: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.5 Constructie van de ontvanger 48

ook de opdracht krijgen om zijn gegevens door te sturen naar de PC. In dat geval verstuurt de

controller de bewaarde resultaten via de USB connectie naar de PC.

Figuur 4.2: De werking van de ontvanger

4.5 Constructie van de ontvanger

4.5.1 Inleiding

Het is de bedoeling dat de transducer van de ontvanger een analoog signaal opvangt. Dat signaal

moet dan aangelegd worden aan de ingang van de ADC module. In de inleiding werd reeds

vermeld dat geluidsgolven een zekere verzwakking ondervinden naarmate ze verder propageren.

Wanneer zender en ontvanger zich op 5 meter van elkaar bevinden, is er een verzwakking van

6.65 dB. De ADC die wordt gebruikt, zet een analoog signaal om in 12 bits. Dit wil zeggen

dat deze analoog naar digitaal converter een bereik heeft van 72dB, hetgeen ruim voldoende

is om de gegevens nog goed te kunnen ontvangen. Om het bereik van de ADC zo optimaal

mogelijk te gebruiken, is het aangewezen om het ontvangen signaal eerst te versterken vooraleer

het aan de ingang van de ADC te leggen. De omzetting van het analoge signaal in de ADC

Page 60: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.5 Constructie van de ontvanger 49

module gebeurt aan de hand van een referentiespanning van 2.5 Volt (=VR+) die intern in de

MSP wordt gegenereerd en een referentiespanning van 0 Volt (=VR−). Een ingangssignaal van

2.5 Volt zal resulteren in een bitstring van 111111111111, terwijl een ingang van 0 Volt voor

000000000000 zal zorgen.

In Figuur 4.3 wordt het schema van het versterkercircuit getoond. Een simulatie ervan is te

vinden in Figuur 4.4. De ingangsspanning wordt met een factorR5

R4=

100kΩ1.8kΩ

= 55 versterkt.

Verder zorgt C4 ervoor dat de versterking beperkt blijft tot frequenties rond de 40kHz. Als

opamp wordt de TLV2771ID [14] van Texas Instruments gebruikt. De weerstanden R1 en R2

zorgen ervoor dat het DC punt op een vaste spanning komt te staan die gelijk is aan de helft

van de maximale referentie spanning van de ADC module, namelijk 1.25 Volt.

5 V

R 25 k

R 11 5 k

R 31 0 0 k

R 4 R 5

1 . 8 k 1 0 0 k

C 1. 2 2 µ F

C 2. 2 2 µ F

T L V 2 7 7 1

C 45 . 6 n F

A D C 1 2T r a n s d u c e r

Figuur 4.3: Versterkercircuit voor de ontvanger

Page 61: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.5 Constructie van de ontvanger 50

Figuur 4.4: Simulatie van het versterkercircuit

4.5.2 PCB ontwerp

Met behulp van het programma Eagle werd een layout voor de ontvanger ontworpen. Het

resulterend elektrisch schema is te zien op Figuur 4.5. Net zoals bij de zenders zijn er twee

headers aanwezig waarmee het ontvangerbordje op het microcontrollerbord geklikt kan worden.

Ook de header die als connector tussen de ontvanger en de synchronisator (zie Hoofdstuk 5) zal

werken, is hier aanwezig. Verder kan er gekozen worden om met een batterij van 9 Volt te werken.

Via de regulator wordt van de 9 Volt een spanning van 5 Volt afgeleid die vervolgens gebruikt

kan worden om zowel de opamp als het microcontrollerbord te voeden. Vermits de ontvanger

verbonden blijft met de PC, is het ook mogelijk om het microcontrollerbord te voeden via de

USB kabel. Deze 3.3 Volt spanning kan dan ook worden gebruikt om de opamp te voeden. In

dat geval zal het DC punt van 1.25 Volt zakken naar3.34

= 0.825 Volt.

Page 62: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.5 Constructie van de ontvanger 51

Figuur 4.5: Elektrisch schema van de ontvanger

Page 63: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.5 Constructie van de ontvanger 52

Figuur 4.6: Layout van de ontvanger

Page 64: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

4.5 Constructie van de ontvanger 53

Figuur 4.7: De top-laag van de ontvanger

Figuur 4.8: De bottom-laag van de ontvanger

Page 65: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

DE SYNCHRONISATOR 54

Hoofdstuk 5

De Synchronisator

5.1 Inleiding

Correcte plaatsbepaling kan enkel gebeuren wanneer zenders en ontvanger goed met elkaar

gesynchroniseerd zijn. In eerste instantie wordt deze synchronisatie bereikt door kabels te

gebruiken. Er bestaan een groot aantal mogelijkheden om de componenten met behulp van

kabels te synchroniseren. In de volgende paragrafen worden er enkele van besproken.

5.1.1 PC werkt als synchronisator

In dit geval zijn de drie zenders en de ontvanger aan het wachten op een commando. Wanneer de

PC het commando zenden verstuurt, zullen de componenten beginnen met zenden of ontvangen.

Dit wordt geıllustreerd in Figuur 5.1. Hieraan zijn echter een aantal nadelen verbonden. Een

eerste nadeel is dat de PC over vier verschillende USB uitgangen moet beschikken. Een tweede

nadeel is de toevoeging van een onbekende extra vertraging. Wanneer de gebruiker via de PC het

commando zenden wil versturen, zal het programma dit commando vier keer moeten versturen,

maar telkens naar een andere component. Dit resulteert in een zekere vertraging tussen het

versturen van het commando naar de eerste component en het versturen van het commando

naar de vierde component. Deze vertraging is onbekend en is afhankelijk van de PC waarop het

programma draait. Bijgevolg is het onmogelijk om voor deze vertraging te compenseren.

Page 66: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.1 Inleiding 55

Figuur 5.1: PC verstuurt commandos naar alle componenten

Page 67: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.1 Inleiding 56

5.1.2 Onderlinge synchronisatie

Het principe van onderlinge synchronisatie wordt weergegeven in Figuur 5.2. Net zoals in vorige

paragraaf verstuurt de PC zijn commando naar alle componenten. Daarna gaan de componenten,

vooraleer ze beginnen met het uitvoeren van hun opdracht, onderlinge boodschappen sturen om

zichzelf te synchroniseren. Naast de vier USB uitgangen zijn er ook minstens zes kabels nodig

om de verschillende componenten met elkaar te verbinden. Alhoewel de onbekende vertraging

uit de vorige paragraaf nu kan worden weggewerkt, schiet dit systeem te kort uit praktische

overwegingen.

Figuur 5.2: Onderlinge synchronisatie

Page 68: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.1 Inleiding 57

5.1.3 Een extra component: de synchronisator

In dit geval verstuurt de PC niet langer commandos naar de verschillende componenten maar

is de PC maar verbonden met een component, de synchronisator. Deze component wordt dan

gebouwd door een vijfde microcontrollerbord te gebruiken en de MSP zodanig te programmeren

dat er een synchronisatieprotocol wordt uitgevoerd bij het ontvangen van het PC commando

zenden. Dit wordt geıllustreerd in Figuur 5.3. Niet alleen is er hier geen sprake van een on-

bekende tijdsvertraging, ook praktisch gezien is dit systeem eenvoudig. Iedere zender heeft

immers maar een kabel nodig waarmee hij met de synchronisator moet worden verbonden.

Figuur 5.3: PC verstuurt commandos naar de synchronisator

Page 69: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.2 Het protocol 58

5.2 Het protocol

5.2.1 Inleiding

In dit deel wordt het protocol dat werd uitgewerkt om de verschillende componenten te syn-

chroniseren besproken.

5.2.2 De synchronisator

Figuur 5.4: Toestandsdiagram van

de synchronisator

Deze component kan worden beschouwd als de master.

De werking is gebaseerd op het toestandsdiagram weer-

gegeven in Figuur 5.4. Bij het opstarten bevindt hij

zich in de toestand luisteren.

Wanneer de synchronisator het commando om met het

meten te beginnen ontvangt, brengt hij P4.0 hoog en

komt hij in de toestand wachten 1 terecht waar hij

wacht tot alle componenten waarmee hij verbonden

is een antwoord geven. (P3.4-P3.7) Na dit antwoord

brengt hij P4.0 terug laag en komt hij in de toestand

bezig terecht. In deze toestand controleert hij pin-

uitgangen van de andere componenten (P3.0-P3.3) om

te weten wanneer de componenten hun taak hebben

afgewerkt. Als dat gebeurt brengt hij P4.1 hoog en

belandt de synchronisator in de toestand wachten 2.

Vervolgens observeert hij pinuitgangen opnieuw P3.0

tot P3.3 tot deze laag worden, waarop hij P4.1 terug

laag brengt en opnieuw naar de toestand luisteren

springt.

Page 70: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.2 Het protocol 59

5.2.3 De zenders

De zenders moeten nu zodanig worden aangepast dat deze zullen kijken naar de nieuwe com-

ponent in plaats van te wachten op een PC commando. Daartoe wordt het codegedeelte op de

MSP, dat betrekking had op de USB communicatie, vervangen door een nieuw stuk code.

Figuur 5.5: Toestandsdiagram van de zenders

Het toestandsdiagram van een zender is

weergegeven in Figuur 5.5. De werking van dit

toestandsdiagram verloopt analoog aan dat

van de synchronisator. Bij het opstarten van

de component bevindt deze zich in de toe-

stand luisteren. Wanneer de synchronisator

P4.0 hoog maakt, springt de zender naar toe-

stand wachten 1, waarbij hij P3.7 hoog maakt.

In deze toestand blijft de zender wachten tot

hij ziet dat de synchronisator P4.0 omlaag

brengt. Dit is het teken dat alle componenten

klaar zijn om te zenden of te ontvangen en

op het moment dat de zenders dit opmerken

brengen ze P3.7 laag en starten ze met zenden.

Wanneer een zender klaar is met zenden,

brengt hij P3.3 hoog en verblijft hij in toe-

stand wachten 2. Hier wacht de zender tot

de synchronisator P4.1 hoog brengt en op dat

moment brengt de zender P3.3 terug omlaag

en komt de zender in zijn oorspronkelijke toe-

stand luisteren terecht.

Er moet wel worden opgemerkt dat, alhoewel de zenders in Figuur 5.5 allen op dezelfde

manier werden opgebouwd en dezelfde pinuitgang hoog of laag zullen zetten, ze met een

verschillende pin van de synchronisator moeten worden verbonden. De zenders zouden immers

ook kunnen worden gebouwd zoals in Figuur 5.6 is weergegeven. In dat geval correspondeert de

uitgangspin die een bepaalde zender gaat wijzigen wel met de ingangspin van de synchronisator.

Maar het is veel praktischer wanneer de programma’s voor de verschillende zenders, op hun

Page 71: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.2 Het protocol 60

specifieke code na, volkomen analoog zijn. Vandaar ook dat er werd gekozen om met vaste

uitgangspinnen te werken.

Figuur 5.6: Toestandsdiagrammen van de zenders met verschillende pinuitgangen

Page 72: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.2 Het protocol 61

5.2.4 De ontvanger

Ook de ontvanger moet zodanig worden aangepast dat deze zal kijken naar de nieuwe component

in plaats van te wachten op een PC commando. De ontvanger heeft echter een extra taak die

de zenders niet hebben, namelijk de ontvangen samples doorsturen naar de PC, zodat de PC de

plaatsbepaling kan uitvoeren. Het is dus niet nodig om het volledige USB gedeelte te vervangen,

maar enkel het stuk dat betrekking heeft tot het starten met ontvangen moet worden aangepast.

Voor het sturen van de samples naar de computer wordt er nog steeds verondersteld dat de

ontvanger via een USB kabel verbonden is met de PC. In principe zou de ontvanger ook zodanig

kunnen geprogrammeerd worden dat hij zijn gegevens verstuurt naar de synchronisator en dat

deze de gegevens op zijn beurt doorstuurt naar de PC. Het enige voordeel hiervan zou zijn dat

er maar een enkele USB verbinding noodzakelijk is. Dit voordeel weegt echter niet op tegen de

moeilijkheden die erbij komen om zo’n extra communicatie toe te voegen.

Figuur 5.7: Toestandsdiagram van de

ontvanger

Het toestandsdiagram van de ontvanger is

weergegeven in Figuur 5.7. De werking van dit

toestandsdiagram verloopt volkomen analoog

aan dat van de zenders. Bij het opstarten van

de component bevindt deze zich in de toestand

luisteren. Wanneer de synchronisator P4.0

hoog maakt, springt de ontvanger naar toe-

stand wachten 1, waarbij P3.4 hoog wordt. In

deze toestand blijft de ontvanger wachten tot

alle componenten klaar zijn om te zenden of

te ontvangen (P4.0 laag). Dan brengt hij P3.4

laag en start hij met ontvangen. Wanneer de

ontvanger hiermee klaar is, brengt hij P3.0

hoog en verblijft hij in toestand wachten 2

tot de synchronisator P4.1 hoog brengt. Hier-

op brengt de ontvanger P3.0 terug omlaag en

komt hij terug in zijn oorspronkelijke toestand

luisteren terecht.

Page 73: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.3 Uitbreiding van het protocol 62

5.2.5 Resultaat van een simulatie

In Figuur 5.8 wordt het resultaat weergegeven waarbij de synchronisator werkt met 1 zender.

Het is de synchronisator die het zenden initieert. Vervolgens wacht de synchronisator tot de

zender laat weten dat hij klaar is met zenden.

Figuur 5.8: Simulatie van het protocol met 1 zender

5.3 Uitbreiding van het protocol

5.3.1 Inleiding

In bepaalde gevallen kan het noodzakelijk zijn dat de zenders, in plaats van eenmalig per

commando, continu hun codes verzenden. Om deze reden werd een uitbreiding voorgesteld

waarbij de PC een commando kan geven om met het zenden te starten en te stoppen. Terwijl

de zenders hun codes uitsturen, mag hun synchronisatie niet uit het oog worden verloren.

Page 74: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.4 Constructie van de synchronisator 63

5.3.2 Synchronisator

Om met het zenden te starten, moet er niets gewijzigd worden aan het basisprotocol. Na het

zenden zorgt de synchronisator opnieuw voor synchronisatie tussen de verschillende zenders.

Daarnaast laat hij de ontvanger ook telkens weten wanneer het zenden opnieuw begint. Verder

moet enkel nog de mogelijkheid toegevoegd worden om met zenden te stoppen.

5.3.3 De zenders

De zenders beginnen op dezelfde manier te zenden zoals in de vorige sectie reeds werd besproken.

Wanneer hun codes werden verzonden, zullen ze echter niet terugkeren naar hun begintoestand

maar zullen ze zich aan de hand van de synchronisator opnieuw synchroniseren en vervolgens

hun codes opnieuw verzenden. Het is pas wanneer de synchronisator het commando tot stoppen

geeft dat de zenders naar hun begintoestand zullen terugkeren.

5.3.4 De ontvanger

Alhoewel de zenders ditmaal continu hun codes verzenden, is het niet de bedoeling dat de

ontvanger blijft sampelen. De geheugenruimte, aanwezig op de microcontroller, is hiervoor

immers veel te klein. Bijgevolg zouden oudere samples, die nog niet naar de PC werden

verzonden, overgeschreven kunnen worden door recentere samples, hetgeen automatisch tot

verkeerde resultaten zou leiden. Om dit probleem op te lossen, wacht de ontvanger expliciet tot-

dat deze de opdracht tot ontvangen krijgt. Daarna wacht de ontvanger tot de zenders opnieuw

beginnen met het zenden van hun code. Dit kan omdat de synchronisator het “opnieuw zenden”

aan de ontvanger kenbaar maakt. Vanaf dan zal de ontvanger gedurende een bepaalde tijd gaan

sampelen.

5.4 Constructie van de synchronisator

5.4.1 Inleiding

Vermits het synchronisatie protocol voor de verschillende zenders en voor de ontvanger telkens

andere, vaak niet bij elkaar gelegen pinnen van het microcontrollerbord gebruikt, wordt er

een extra stuk hardware toegevoegd. Dit stuk zal de pinnen, die gebruikt worden door de

verschillende componenten, zodanig gaan ordenen dat de synchronisator en de componenten

toch met 1 enkele kabel kunnen worden verbonden.

Page 75: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.4 Constructie van de synchronisator 64

5.4.2 PCB ontwerp

Net zoals bij de zenders en de ontvanger werd een layout voor de synchronisator met behulp

van het programma Eagle ontworpen. Dit bordje heeft enkel tot doel de pinnen die bij de

synchronisatie gebruikt worden zodanig te ordenen dat de verschillende componenten door een

enkele kabel kunnen worden verbonden. Figuur 5.9 laat het elektrisch schema zien. In Figuur

5.10 wordt de layout getoond en figuren 5.11 en 5.12 tonen respectievelijk de top en de bottom

laag.

Figuur 5.9: Elektrisch schema van de synchronisator

Page 76: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.4 Constructie van de synchronisator 65

Figuur 5.10: Layout van de synchronisator

Figuur 5.11: De top-laag van de synchronisator

Page 77: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

5.4 Constructie van de synchronisator 66

Figuur 5.12: De bottom-laag van de synchronisator

Page 78: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

VERWERKING VAN DE GEGEVENS 67

Hoofdstuk 6

Verwerking van de gegevens

6.1 Inleiding

De ontvanger zal via zijn analoog naar digitaal convertor samples nemen van het ontvangen

signaal. Deze analoge samples worden omgezet in digitale samples van 12 bits. Per sample slaat

de ontvanger dus 12 bits op in zijn geheugen. Het zijn deze 12 bit samples die vervolgens door

de ontvanger naar de PC worden verzonden en waarmee de verwerking dient te gebeuren.

6.2 Communicatie tussen de PC en de componenten

In een vorig hoofdstuk werd er reeds vermeld dat de gegevens worden ingeladen in de PC wanneer

het juiste commando naar de MSP wordt verzonden. Op dat moment verstuurt de ontvanger

alle genomen samples naar het Visual Basic programma dat op de PC draait. Hierbij mag het

feit dat de MSP enkel bytes en geen bits kan verzenden niet uit het oog worden verloren. Vermits

ieder sample 12 bits groot is, moeten er dus minstens twee bytes per sample worden verzonden.

Dit betekent dat het programma niet 12 maar 16 bits ontvangt per sample. Bijgevolg moet de

ontvangen bitstring eerst nog verwerkt worden. De bitstring van een ontvangen sample zal er

als volgt uitzien: [b12, b11, ..., b0, 0, 0, 0]. Hierbij is b12 het meest significante bit van het sample

en b0 het minst significante bit.

Dit wil dus zeggen dat, per 16 bits, telkens de eerste 12 bits moeten worden behouden en de 4

laatste bits genegeerd mogen worden. Na deze eerste manipulatie wordt de ontvangen bitstring

opgeslagen in een tekstbestand en gebeurt de verdere verwerking in Matlab.

Page 79: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

6.3 Verwerking in Matlab 68

6.3 Verwerking in Matlab

Per sample worden er 12 bits opgeslagen. Deze 12 bits zijn het resultaat van de omzetting van

de analoog naar digitaal converter op de MSP. De omzetting van het analoge ontvangen signaal

naar een digitaal sample gebeurde met onderstaande formule:

NADC = 4095Vin − VR−VR+ − VR−

(6.1)

NADC : De digitale uitgang

Vin : De analoge ingang

VR− : Referentie spanning

VR+ : Referentie spanning

In Hoofdstuk 4 werd de keuze voor de waarde van VR− en van VR+ reeds gegeven. Uit deze

formule kan Vin nu ook in functie van het digitale sample worden bepaald:

Vin =1

4095NADC(VR+ − VR−) + VR− (6.2)

In Matlab wordt de ontvangen bitstring omgezet in een lijst van analoge samples Vin. Dit zijn

de samples van een versterkte versie van het analoge ingangssignaal. Om de verwerking op

een gebruiksvriendelijke manier te kunnen doen, werd in Matlab een interface geschreven. (Zie

Hoofdstuk 8)

6.4 Meetresultaat

Om te controleren of de verwerking correct gebeurt, wordt een meetopstelling met een en-

kele zender gebouwd. De afstand tussen zender en ontvanger bedraagt 60 centimeter. De

zender wordt, met behulp van de synchronisator, gesynchroniseerd met de ontvanger. Zoals in

Hoofdstuk 1 werd vermeld, volstaat een enkele zender om een afstandsmeting uit te voeren. De

verzonden code en het ontvangen signaal worden in Figuur 6.1 weergegeven en de correlatie-

functie is te zien in Figuur 6.2. Deze correlatiefunctie heeft een piek bij 1.7814 milliseconden,

bijgevolg is de afstand tussen zender en ontvanger gelijk aan 340 ∗ 1.7814 ∗ 10−3 = 60.57cm.

Page 80: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

6.4 Meetresultaat 69

0 0.01 0.02 0.03 0.04 0.05−1.5

−1

−0.5

0

0.5

1

1.5De verzonden code

Tijd (sec)

Am

plitu

de

0 0.01 0.02 0.03 0.04 0.05−0.1

−0.05

0

0.05

0.1Het ontvangen signaal

Tijd (sec)

Am

plitu

de

Figuur 6.1: Verzonden code + ontvangen signaal

−0.05 0 0.05

−500

0

500

1000

1500

2000

2500

3000X: 0.001781Y: 3290

De correlatiefunctie

Tijd (sec)

Am

plitu

de

Figuur 6.2: De correlatiefunctie

Page 81: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

MEETRESULTATEN 70

Hoofdstuk 7

Meetresultaten

7.1 Inleiding

In dit hoofdstuk wordt nagegaan wat de betrouwbaarheid is van de afstandsmetingen en welke

nauwkeurigheid er wordt gehaald. Dit wordt gedaan aan de hand van een aantal opeen-

volgende afstandsmetingen waarbij een enkele zender wordt gebruikt. De meetopstelling wordt

geıllustreerd in Figuur 7.1. Eerst worden er een aantal metingen in functie van de afstand

gedaan. Vervolgens wordt de invloed van de hoek tussen zender en ontvanger bestudeerd.

Page 82: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

7.2 Meetresultaten in functie van de afstand 71

Figuur 7.1: De meetopstelling

7.2 Meetresultaten in functie van de afstand

7.2.1 Meetresultaten

De zender wordt achtereenvolgens op verschillende afstanden van de ontvanger geplaatst. Op

iedere positie voert de ontvanger een vijftal metingen uit vooraleer de zender wordt verplaatst.

Na deze metingen wordt de gemiddelde afstand en de gemiddelde fout bepaald. De meet-

resultaten zijn te vinden in Tabel 7.1. Uit deze resultaten volgt dat de gemiddelde fout over

vijf metingen stijgt naarmate de afstand tussen de zender en de ontvanger toeneemt. Bij

afstanden groter dan 4 meter wordt het verzonden signaal nog nauwelijks gedetecteerd. Een

van de mogelijke oorzaken kan de bandbreedte van de codes zijn. De energie van de codes is

geconcentreerd tussen 0 en 2kHz. Na BPSK modulatie en PWM codering liggen de codes in een

band tussen 38kHz en 42kHz (bandbreedte in de basisband = 4kHz). De beperkte bandbreedte

van de transducers kan ervoor zorgen dat de golfvormen teveel vervormd worden.

Page 83: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

7.2 Meetresultaten in functie van de afstand 72

Afstand Meting (meter) Gemiddelde

(meter) 1 2 3 4 5 (meter)

0.4Resultaat 0.418 0.3697 0.4187 0.4245 0.4464 0.41546

| Fout | 0.018 0.0303 0.0187 0.0245 0.0464 0.02758

0.6Resultaat 0.6057 0.6071 0.5938 0.5379 0.6378 0.59646

| Fout | 0.0057 0.1319 0.0062 0.0621 0.0378 0.02378

0.8Resultaat 0.8233 0.8221 0.7947 0.8388 0.8534 0.82646

| Fout | 0.0233 0.0221 0.0053 0.0388 0.0534 0.02858

1Resultaat 0.8233 0.8221 0.7947 0.8388 0.8534 1.0139

| Fout | 0.0233 0.0221 0.0053 0.0388 0.0534 0.02182

2Resultaat 2.0186 1.9732 2.0951 2.0147 1.9072 2.00176

| Fout | 0.0186 0.0268 0.0951 0.0147 0.0928 0,0496

2.4Resultaat 2,3588 2.4912 2.4336 2.455 2.3685 2.42142

| Fout | 0,0412 0.0912 0.0336 0.055 0.0315 0.0505

3Resultaat 2.9752 3.0421 3.0818 3.0793 3.0426 3.0442

| Fout | 0.0248 0.0421 0.0818 0.0793 0.0426 0.05412

3.6Resultaat 3.5022 3.6213 3.682 3.5592 3.7049 3.61392

| Fout | 0.0978 0.0213 0.082 0.0408 0.1049 0.06936

4.2Resultaat 5.7715 6.3748 4.0547 5.083 4.8236 5.22152

| Fout | 1.5715 2.1748 0.1453 0.883 0.6236 1.07964

Tabel 7.1: Meetresultaten

Page 84: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

7.2 Meetresultaten in functie van de afstand 73

7.2.2 Voorbeeld

Figuur 7.2 illustreert het verzonden en ontvangen signaal wanneer zender en ontvanger zich op

een afstand van 3.3 meter van elkaar bevinden. De autocorrelatiefunctie heeft een maximum bij

9.6 milliseconden, hetgeen overeenkomt met een afstand van 3.27 meter.

0 0.02 0.04 0.06−1.5

−1

−0.5

0

0.5

1

1.5De verzonden code

Tijd (sec)

Am

plitu

de

−0.05 0 0.05

−60

−40

−20

0

20

40

60

80

100

120

140X: 0.009594Y: 138.2

De autocorrelatiefunctie

Tijd (sec)

Am

plitu

de

0 0.02 0.04 0.06−0.01

−0.005

0

0.005

0.01Het ontvangen signaal

Tijd (sec)

Am

plitu

de

Figuur 7.2: Verzonden en ontvangen signaal bij een afstand van 3.3 meter en hun auto-

correlatiefunctie

Page 85: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

7.3 Meetresultaten in functie van de hoek 74

7.3 Meetresultaten in functie van de hoek

7.3.1 Inleiding

In dit deel wordt nagegaan wat de invloed is van de hoek tussen zender en ontvanger op

de afstandsbepaling. Hiervoor wordt de zender op een afstand van 60 centimeter van de

ontvanger geplaatst. Vervolgens wordt de zender verschoven volgens een cirkel met middelpunt

de ontvanger en een straal van 60 centimeter. Figuur 7.3 illustreert deze opstelling.

−0.5 0 0.5 1

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

x (meter)

y (m

eter

)

α

Figuur 7.3: Meetopstelling waarbij de zender verschoven wordt volgens een cirkel met straal

0.6 meter

7.3.2 Meetresultaten

De resultaten van deze meting worden weergegeven in Figuur 7.4. Het is duidelijk dat de fout

beperkt blijft voor hoeken tussen -60 en 60 graden. Dit strookt met het feit dat de bundelbreedte

van de gekozen transducers 120 graden bedraagt. (Zie Hoofdstuk 3)

Bij hoeken groter dan 70 zijn de resultaten niet langer betrouwbaar.

Page 86: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

7.4 Besluit 75

−80 −60 −40 −20 0 20 40 60 80

0

1

2

3

4

De fout in functie van de hoek

Fou

t (m

eter

)

Hoek (graden)

−80 −60 −40 −20 0 20 40 60 800

0.05

0.1

Detailweergave van de fout in functie van de hoek

Fou

t (m

eter

)

Hoek (graden)

Figuur 7.4: De fout in functie van de hoek

7.4 Besluit

Voor afstanden tot 4 meter, waarbij de hoek tussen de ontvanger en de zender beperkt blijft

tot 60, kan dit systeem een afstandbepaling uitvoeren waar de fout beperkt blijft tot enkele

centimeters. Er dient wel opgemerkt te worden dat de transducers goed gealigneerd en naar

elkaar gericht moeten zijn. Misalignatie kan er immers voor zorgen dat de stralingsbundel van

de zender buiten de bundelbreedte van de ontvanger valt. En dit zal tot grote fouten leiden.

Page 87: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

HET SYSTEEM 76

Hoofdstuk 8

Het systeem

8.1 Inleiding

In de vorige hoofdstukken werd de opbouw van de verschillende deelaspecten van dit project

besproken. In dit hoofdstuk worden al deze onderdelen samengenomen tot een werkend systeem.

8.2 De verschillende componenten

In eerste instantie worden de componenten in de ruimte geplaatst. De synchronisator en de

ontvanger worden via een USB kabel met de PC verbonden. Verder worden de zenders en de

ontvanger ook verbonden met de synchronisator. Figuur 8.1 toont een bovenaanzicht van de

meetopstelling terwijl Figuur 8.2 een vooraanzicht vanuit het standpunt van de ontvanger laat

zien.

Page 88: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.2 De verschillende componenten 77

Figuur 8.1: Bovenaanzicht van de meetopstelling

Page 89: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.2 De verschillende componenten 78

Figuur 8.2: Vooraanzicht van de meetopstelling

8.2.1 De synchronisator

De positie van de synchronisator speelt geen rol. Zijn functie is het synchroniseren van de

zenders en van de ontvanger. Figuur 8.3 toont de synchronisator in detail.

Figuur 8.3: De synchronisator

Page 90: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.2 De verschillende componenten 79

8.2.2 De zenders

De drie zenders worden op verschillende posities in de ruimte geplaatst. In deze test worden de

zenders op de omtrek van een cirkel met straal 60 centimeter geplaatst. Het middelpunt van

deze cirkel stelt de oorsprong van het referentieassenstelsel voor. (Zie Figuur 8.1) De posities

van de verschillende zenders worden in Tabel 8.1 gegeven. Figuur 8.4 toont een van de zenders

in detail.

Zender Coordinaten (meter)

Zender 1 [ 0.5196, 0.3 ]

Zender 2 [ 0.6, 0 ]

Zender 3 [ 0.5196, -0.3 ]

Tabel 8.1: De posities van de zenders

Figuur 8.4: De zender

Page 91: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.2 De verschillende componenten 80

8.2.3 De ontvanger

De ontvanger wordt in Figuur 8.5 weergegeven. De ontvanger bevindt zich in het middelpunt

van de cirkel waarop de zenders zich bevinden.

Figuur 8.5: De ontvanger

Page 92: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.3 Communicatie tussen de PC en de componenten 81

8.3 Communicatie tussen de PC en de componenten

Het is duidelijk dat het de PC is die opdrachten zal geven aan de componenten. Om de op-

drachten op een eenvoudige manier te kunnen geven, was een programma noodzakelijk. Aan dit

programma werden een aantal eisen gesteld.

Het programma moet:

• de verschillende componenten kunnen detecteren

• een verbinding kunnen opzetten tussen de computer en de component

• in staat zijn om eenvoudige instructies aan de componenten te geven

• gegevens kunnen lezen uit de ontvanger

• de ontvangen data kunnen opslaan voor verdere verwerking

• eenvoudig zijn om te gebruiken

Figuur 8.6 toont het uiteindelijke programma na het ontvangen van de gegevens. De meeste

knoppen die de gebruiker kan aanklikken zorgen voor de communicatie tussen de PC en de

verschillende componenten. In Tabel 8.2 wordt kort wat uitleg gegeven bij de andere knoppen.

De code zelf wordt meer in detail uitgelegd in Bijlage G.

Knop Uitleg

Wis Maakt het tekstvak met de ontvangen bits leeg

Opslaan Schrijft de ontvangen bits naar een bestand

Verwerk Verwerkt de bits, uit iedere 16 bits zijn er maar 12 informatiebits

? Controleert of de component wel degelijk goed werd geprogrammeerd

Tabel 8.2: De overige knoppen

Page 93: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.3 Communicatie tussen de PC en de componenten 82

Figuur 8.6: Visual Basic interface na het ontvangen van de gegevens

Page 94: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.4 Verwerking van de gegevens in Matlab 83

8.4 Verwerking van de gegevens in Matlab

Om de verwerking van de gegevens op een eenvoudige en gebruiksvriendelijke manier te kunnen

doen, werd in Matlab een interface geschreven. De gebruiker kan op eenvoudige wijze de positie

van de zenders instellen, vervolgens het ontvangen signaal inladen en uiteindelijk, met behulp

van de correlatiefuncties (zie Hoofdstuk 2), de afstanden tussen de zenders en de ontvanger

bepalen. Figuur 8.7 illustreert het resultaat na het inlezen van de ontvangen gegevens en de

verwerking. De afstanden en de vertragingstijden van de drie zenders tot de ontvanger worden

gegeven in Tabel 8.3.

Zender Vertragingstijd Afstand

Zender 1 0.001686 seconden 0.57324 meter

Zender 2 0.0018405 seconden 0.62577 meter

Zender 3 0.001707 seconden 0.58038 meter

Tabel 8.3: Het resultaat

Page 95: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.4 Verwerking van de gegevens in Matlab 84

Figuur 8.7: Matlab interface na de verwerking

Page 96: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.5 Positiebepaling 85

8.5 Positiebepaling

De positie van de ontvanger werd reeds in vorige paragraaf geıllustreerd. Figuur 8.8 toont het

gebied waar de ontvanger zich in moet bevinden in detail.

−0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

x (meter)

y (m

eter

)

Afstand totzender 1

Afstand totzender 2

Afstand totzender 3Zender 1Zender 2Zender 3

Gebied waar deontvanger zichmoet bevinden

Figuur 8.8: Positiebepaling

Page 97: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

8.6 Verder onderzoek 86

8.6 Verder onderzoek

In deze sectie worden enkele toekomstige uitbreidingen voor het systeem onder de loep genomen.

• In het huidige systeem wordt gebruik gemaakt van drie zenders, waardoor het meetgebied

beperkt blijft. Om het meetgebied te vergroten, kan men meer zenders gebruiken. De

ontvanger heeft immers maar nood aan drie afstandsmetingen om zijn positie te kunnen

bepalen. Wanneer een van de zenders te ver van de ontvanger verwijderd is, kan de extra

zender de ontvanger misschien wel bereiken.

• Ook is de ontvanger op dit moment voorzien van een enkele transducer. Om het systeem

omnidirectioneler te maken kan de ontvanger gebruik maken van een transducer-rooster.

• Momenteel gebeurt de synchronisatie tussen zenders en ontvanger m.b.v. een afzonderlijke

synchronisator waarmee alle componenten via kabels verbonden zijn. In een normale

gebruiksomgeving worden kabels echter als hinderlijk ervaren. Een manier om toch zonder

kabels te synchroniseren is bijvoorbeeld de synchronisator op vaste tijdstippen elektro-

magnetische pulsen te laten uitsturen. Deze pulsen planten zich voort met de lichtsnelheid,

zodat de tijdsvertraging tussen de synchronisator en de verschillende componenten ver-

waarloosbaar is. De zenders verzenden hun codes en de ontvanger begint met sampelen

op het moment dat een puls wordt ontvangen.

• De gebruikte codes hebben een bandbreedte van 2kHz. Na BSPK modulatie en PWM

codering wordt de bandbreedte, in de basisband rond 40kHz, 4kHz. De transducers

hebben echter een beperkte bandbreedte waardoor de verzonden signalen vervormd kunnen

worden. Door de bandbreedte van de codes te beperken tot 1kHz blijft de bandbreedte,

in de basisband rond 40kHz, beperkt tot 2kHz. De resulterende golfvorm zal bijgevolg

minder vervormd zijn. Een kleinere bandbreedte resulteert ook in minder ruis en doordat

het uitgezonden vermogen hetzelfde blijft, een betere signaal-tot-ruis verhouding. Een

nadeel van deze methode is dat het versturen van de codes nu trager zal gebeuren. Hier-

door moet er gedurende een langere tijd worden gesampeld, wat aanleiding geeft tot een

grotere geheugenvereiste.

• Men kan ook transducers kiezen met grotere bandbreedte, waardoor de signalen minder

vervormd zullen zijn. Dit zal dan weer leiden tot meer ruis waardoor de signaal-tot-ruis

verhouding kan dalen.

Page 98: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESLUIT 87

Hoofdstuk 9

Besluit

Het doel van deze thesis was een concept uit te denken waardoor plaatsbepaling met centimeter-

resolutie binnen een ruimte mogelijk zou worden. Naast het uitdenken van het concept heb ik

tevens een werkend prototype van het systeem ontwikkeld, uitgevoerd en uitgetest. Het volledig

concept en systeem is gebaseerd op akoestische golven. Met behulp van eenvoudige en courante

apparatuur, drie zenders en een ontvanger kan de plaatsbepaling met grote nauwkeurigheid

berekend worden. Voor afstandsmetingen tot 3.6 meter blijft de gemiddelde fout beperkt tot 7

centimeter.

Het belangrijkste van deze thesis is voor mij echter de kennis en de ervaring die ik heb opgedaan.

Dankzij de omvang van dit project ben ik met allerlei facetten van systeemontwerp in aanraking

gekomen. Zowel digitale als analoge elektronica kwamen ruim aan bod. Ook verdere signaal-

verwerking om aan plaatsbepaling te doen, vormde een belangrijk deelaspect. Daarnaast leerde

ik werken met gespecialiseerde software voor simulatie, lay-out, programmeren en debuggen. Een

ander belangrijk leerpunt is de praktijkervaring die ik heb opgedaan door de vele moeilijkheden,

die bij het praktische werk komen kijken, te overwinnen.

Kort samengevat kan ik, gewapend met een pak nieuwe kennis en vaardigheden, terugblikken

op een boeiend en geslaagd thesisjaar.

Page 99: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VAN HET MATLAB-MODEL 88

Bijlage A

Code van het Matlab-model

main.m

%3D-coordinaten:

%robot: [x,y,z]

%geefres = 0 als er niks moet worden getoond (bij het simuleren)

function [posx,posy,posz] = main(robot,geefres)

Initialisatie

...

Dit stuk beschrijft de functie aanroep, deze heeft 2 argumenten namelijk “robot”, wat een 3

dimensionale vector is die de positie van de robot in de kamer bevat, en “geefres” die beslist of

het resultaat al dan niet getoond moet worden.

afstanden(1) = bepaal_afstand(zender1,robot);

afstanden(2) = bepaal_afstand(zender2,robot);

afstanden(3) = bepaal_afstand(zender3,robot);

...

vertragingen(1) = afstanden(1)/v;

vertragingen(2) = afstanden(2)/v;

vertragingen(3) = afstanden(3)/v;

...

Hier wordt de afstand tussen de robot en de verschillende zenders bepaald. Vervolgens worden

Page 100: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VAN HET MATLAB-MODEL 89

ook de vertragingen die zullen optreden, tussen het moment waarop de zender begint te versturen

en het moment waarop de ontvanger deze gegevens begint te ontvangen, berekend.

signaal_orig1 = maak_signaal(Ts,Tsim,0,code1,Tm,zend_code);

signaal_orig2 = maak_signaal(Ts,Tsim,0,code2,Tm,zend_code);

signaal_orig3 = maak_signaal(Ts,Tsim,0,code3,Tm,zend_code);

...

signaal1 = maak_signaal(Ts,Tsim,vertragingen(1),code1,Tm,zend_code);

signaal2 = maak_signaal(Ts,Tsim,vertragingen(2),code2,Tm,zend_code);

signaal3 = maak_signaal(Ts,Tsim,vertragingen(3),code3,Tm,zend_code);

...

gemoduleerd_signaal1 = signaal1.*cos(2*pi*fc*t);

gemoduleerd_signaal2 = signaal2.*cos(2*pi*fc*t);

gemoduleerd_signaal3 = signaal3.*cos(2*pi*fc*t);

...

gemoduleerd_ontvangen_signaal = gemoduleerd_signaal1 + gemoduleerd_signaal2

+ gemoduleerd_signaal3;

...

Hier worden de signalen gesimuleerd. Eerst worden de codes gemaakt die de drie zenders

zullen versturen. Vervolgens wordt de correcte vertraging toegevoegd, waardoor het tweede

type signalen ideale voorstellingen vormen van de ontvangen codes aan de ontvanger. Het derde

type signalen zijn dan de gemoduleerde signalen. De variabele gemoduleerd ontvangen signaal

stelt dan het signaal voor dat de ontvanger ontvangt nadat de drie zenders hun code hebben

verstuurd.

%Demodulatie van het ontvangen signaal

x1 = gemoduleerd_ontvangen_signaal.*cos(2*pi*fc*t);

[b,a] = butter(5,fc*2/fs);

x1 = filtfilt(b,a,x1);

y = x1*2;

...

In dit stuk code is te zien hoe het ontvangen signaal wordt gedemoduleerd.

Page 101: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VAN HET MATLAB-MODEL 90

ontvangen_signaal = y;

Ronts1 = xcorr(ontvangen_signaal,signaal_orig1);

Ronts2 = xcorr(ontvangen_signaal,signaal_orig2);

Ronts3 = xcorr(ontvangen_signaal,signaal_orig3);

[C1,I1] = max(Ronts1);

[C2,I2] = max(Ronts2);

[C3,I3] = max(Ronts3);

delay1 = (I1-ceil(size(Ronts1,2)/2))*Ts;

delay2 = (I2-ceil(size(Ronts2,2)/2))*Ts;

delay3 = (I3-ceil(size(Ronts3,2)/2))*Ts;

%Oplossen van het stelsel om de plaats te bepalen

r1 = v*delay1;

r2 = v*delay2;

r3 = v*delay3;

...

[oplx,oply,oplz] = solve(vgl1(1,:),vgl2(1,:),vgl3(1,:),’x’,’y’,’z’);

...

return;

Dit laatste stuk bepaalt de correlatiefuncties tussen het gedemoduleerde ontvangen signaal en

de originele codes. Uit de maximale waarden van deze functies worden dan de vertragingen

ten opzichte van de verschillende zenders bepaald. En met deze vertragingen wordt het stelsel

opgelost.

Page 102: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VAN HET UITGEBREIDE MATLAB-MODEL 91

Bijlage B

Code van het uitgebreide

Matlab-model

%fs = Samplefrequentie

%fm = Frequentie gemoduleerd signaal

%fd = Draaggolffrequentie

%T = Tijd

function [pwmsign] = pwm(fs,fm,fd,T);

fc = 40e3;

tijdsas = 0:1/fs:T-1/fs;

signaal_code = signalen(1,fs,fm,T);

signaal = signaal_code.*cos(2*pi*fc*tijdsas);

draaggolf = signalen(4,fs,fd,T);

...

In dit stuk code werd de functie-aanroep gedefinieerd. Vervolgens wordt het code signaal ge-

maakt dat daarna gemoduleerd wordt op een cosinus. Als laatste wordt ook de draaggolf (hier

een zaagtand) gesimuleerd.

msig = moduleer(draaggolf,signaal);

...

Deze regel roept de PWM codering op waarbij het gemoduleerde signaal vergeleken wordt met

de draaggolf.

Page 103: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VAN HET UITGEBREIDE MATLAB-MODEL 92

%Stuur het PWM signaal door een banddoorlaatfilter

%Banddoorlaatfilter = Transducer

% Centrale frequentie = 40 kHz

% BW = 1.5 kHz

Wp = [40e3-750 40e3+750]/(fs/2);

Ws = [40e3-800 40e3+800]/(fs/2);

Rp = 3; Rs = 6;

[n,Wp] = cheb1ord(Wp,Ws,Rp,Rs);

[b,a] = cheby1(n,Rp,Wp);

z = filtfilt(b,a,msig);

Dit stuk Matlab code simuleert de transducer van de zender als banddoorlaatfilter met een

centrale frequentie van 40kHz. Vervolgens wordt het signaal aan dit filter gelegd, hetgeen in het

verzonden signaal zal resulteren.

%Stuur het ontvangen signaaal door een banddoorlaatfilter

%Banddoorlaatfilter = Transducer van de ontvanger

% Centrale frequentie = 40 kHz

% BW = 2 kHz

Wp = [40e3-1e3 40e3+1e3]/(fs/2);

Ws = [40e3-1.5e3 40e3+1.5e3]/(fs/2);

Rp = 3; Rs = 6;

[n,Wp] = cheb1ord(Wp,Ws,Rp,Rs);

[b,a] = cheby1(n,Rp,Wp);

ontv = filtfilt(b,a,z);

signaal_ontvangen = ontv.*cos(2*pi*fc*tijdsas);

Wp = fc/(fs/2);

Ws = (fc+fc/4)/(fs/2);

[n,Wn] = cheb1ord(Wp,Ws,2,50);

[b,a] = cheby1(n,2,Wn);

ontvsign = 2*filtfilt(b,a,signaal_ontvangen);

In dit laatste deel wordt de transducer van de ontvanger gesimuleerd als een banddoorlaatfilter

met een centrale frequentie van 40kHz en een bandbreedte van 2kHz. Daarna wordt dit signaal

gedemoduleerd zoals in het oorspronkelijke model.

Page 104: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

USB INTERFACE 93

Bijlage C

USB interface

FT2232.h

//**********************************************************

// FT2232.h

//

// J. Gillis

// Intec design

// september 2006

// Built with CCE for MSP430 Version: 2.00

//**********************************************************

#ifndef FT2232L_H_

#define FT2232L_H_

#define nRXF 0x01

#define nTXE 0x02

#define nRD 0x04

#define WR 0x08

extern unsigned char Received[1024];

extern unsigned char Write[1024];

extern int n_bytes;

extern int Flag_ignore;

Page 105: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

USB INTERFACE 94

//function prototypes

int read_245(void);

int write_245(int);

void init_ftdimsp(void);

void write_buf(const char*);

int read_ans(void);

#endif /*FT2232L_H_*/

FT2232.c

//****************************************************************************

// FT2232L.c

//

// FT2232L FTDI

//

// Description; DUAL USB UART/FIFO IC

//

// MSP430F1611 <=>FT2232L | 245 FIFO interface

// -------------------------

// | P1.<0..7><=>D0...D7 |

// | P2.0 < nRXF | When high no data in FIFO

// | P2.1 < nTXE | When high do not write to FIFO

// | P2.2 >nRD | Fetches next byte from FIFO on the RD# rising edge

// | P2.3 >WR | Write data on the falling edge into FIFO

// | P2.4 <=>SI/WU | (Not used for now)

//

// J. Gillis

// Intec design

// september 2006

// Built with CCE for MSP430 Version: 2.00

//****************************************************************************

Page 106: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

USB INTERFACE 95

#include <msp430x16x.h>

#include <string.h>

#include "ft2232l.h"

// function prototypes

int read_245(void);

int write_245(int);

void init_ftdimsp(void);

void write_buf(const char*);

int read_ans(void);

int read_245()

// Returns the characted if successful, else -1

int return_val=-1;

if (!(P2IN&nRXF)) // nRXF low ?

P1DIR=0x00; // Make sure that the MSP data pins are inputs

P2OUT&=~nRD; // strobe nRD low

_NOP();

return_val=P1IN; // grab the data off P1

return (return_val);

int write_245(int send_data)

// Returns 0 if successful, else -1

while ((P2IN&nTXE)); // TXE low ?

P2OUT|=WR; // strobe WR high

P1DIR=0xFF; // make data bus output (P1)

P1OUT=(unsigned char) send_data;

P2OUT&=~WR; // strobe WR low

_NOP();

Page 107: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

USB INTERFACE 96

P1DIR=0x00; // make data bus input (P1)

return (0);

void write_buf(const char * text)

int i=0;

int size = strlen(text);

for (i = 0; i < size; ++i)

write_245(text[i]);

void init_ftdimsp()

int i;

P1DIR = 0x00; // FIFO Data lines (MSP INPUTS)

P5DIR |= 0x01; // Reset PIN

P2OUT = 0x04; // WR low, nRD high

P2DIR = 0x1C; // FIFO Control Signals

// P2.4 (MSP OUTPUT) SI/WUA Send/Immediate Wakeup - Not Used for now

// P2.3 (MSP OUTPUT) WR Write Data on the falling edge into FIFO

// P2.2 (MSP OUTPUT) nRD Fetches Next Byte from FIFO on the nRD rising edge

// P2.1 (MSP INPUT) nTXE When High do not write to the FIFO

// P2.0 (MSP INPUT) nRXF When High, no data in FIFO

P2IE |= 0x01; // P2.0 enable interrupt

P2IES |= 0x01; // P2.1 interrupt falling edge

P5OUT &= 0xFE;

for (i = 0; i < 1000; ++i) _NOP();

P5OUT |= 0x01;

Page 108: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

USB INTERFACE 97

interrupts.h

#ifndef INTERRUPTS_H_

#define INTERRUPTS_H_

#pragma vector = PORT2_VECTOR

__interrupt void port2_isr(void);

#endif /*INTERRUPTS_H_*/

interrupts.c

//**********************************************************************

// interrupts.c

//

// Description;

//

// J. Gillis

// Intec design

// September 2006

// Built with CCE for MSP430 Version: 2.00

//**********************************************************************

#include <msp430x16x.h>

#include "FT2232L.h"

int n_bytes=0;

int Flag_ignore=0;

int RX_245=0;

char MST_Data = 0x00, SLV_Data = 0xFF;

__interrupt void Port_2(void);

PORT2_ISR(Port_2)

__interrupt void Port_2(void)

Page 109: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

USB INTERFACE 98

P5OUT ^= BIT7; // Toggle P5.7 using exclusive-OR

RX_245 = read_245();

if ( Flag_ignore == 0 )

Flag_ignore = 1;

Received[0] = RX_245;

n_bytes = 1;

else if ((Flag_ignore == 1) && ((int)n_bytes < Received[0]))

Received[n_bytes]=RX_245;

n_bytes++;

else

Received[n_bytes]=RX_245;

n_bytes++;

LPM0_EXIT;

Flag_ignore = 0;

P2IFG &= ~0x01; // Clear interrupt

P2OUT|=nRD; // strobe nRD high

Page 110: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

OORSPRONKELIJKE MSP CODE VOOR DE ZENDERS 99

Bijlage D

Oorspronkelijke MSP code voor de

zenders

Bij het opstarten van de zender worden de codes in het geheugen geladen en wordt de klok

waarmee de zender gegevens zal verzenden gedefinieerd. Vervolgens wordt er gewacht tot de PC

een commando verzendt. Wanneer dit gebeurt, wordt er een interrupt gegenereerd waardoor

de code, die in een vorige paragraaf kort werd besproken en die ook in bijlage C gegeven is,

wordt uitgevoerd. Hierdoor krijgt de variabele “Received” een zekere waarde. Na het ontvangen

van een zend-commando start de zender zijn timer. De timer werkt aan een frequentie van

6MHz en wordt afgeleid uit een kwartskristal. Bij iedere klokcyclus verhoogt de timer zijn teller

met 1. Wanneer de timer de waarde CCR0 bereikt, genereert deze een interrupt waardoor het

programma naar zijn interrupt routine springt en wordt de teller opnieuw op 0 geplaatst.

Hieronder worden de belangrijkste stukken code van de MSP weergegeven.

Page 111: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

OORSPRONKELIJKE MSP CODE VOOR DE ZENDERS 100

main.c

#include <msp430x16x.h>

#include "ft2232l.h"

#include "codes.h"

unsigned char code1[503];

unsigned char code2[503];

unsigned char code3[503];

...

void main(void)

...

//Laden van de codes in het geheugen

init_codes();

TACTL = TACLR; //Resetten van de klok

CCTL0 = CCIE; //Interrupt van de klok aanleggen

CCR0 = 0; //De klok moet nog afliggen

//Volgende regel definieerd de klok:

TACTL = TASSEL_2 + MC_1 + ID_0;

//TASSEL_2: TimerA werkt aan de SMCLK frequentie

//MC_1: UP mode = Tellen tot CCR0 en dan een interrupt genereren

//ID_0: SMCLK frequentie wordt gedeeld door 1

...

while(1)

_BIS_SR(LPM0_bits + GIE); //Hier wordt er gewacht op een interrupt

switch((int)Received[1])

//Er werd een commando ontvangen

case ’s’: if (bezig)

//Stoppen met zenden

cont_zenden = 0;

Received[1] = 0;

bezig = 0;

Page 112: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

OORSPRONKELIJKE MSP CODE VOOR DE ZENDERS 101

CCR0 = 0; //De klok afleggen

break;

case ’c’: if (! bezig)

//Continu zenden

Received[1] = 0;

cont_zenden = 1;

bezig = 1;

//Het PWM signaal aan ongeveer 127kHz sampelen

//6MHz/47 = 127.659kHz

CCR0 = 47-1;

break;

case ’z’: if (! bezig)

//Eenmalig zenden

Received[1] = 0;

cont_zenden = 0;

bezig = 1;

//Het PWM signaal aan ongeveer 127kHz sampelen

//6MHz/47 = 127.659kHz

CCR0 = 47-1;

break;

default: ...

...

Dit vormt dus de basis van de MSP code. Het programma start met het laden van de codes in

het geheugen. Vervolgens wordt de timer ingesteld maar nog niet aangelegd. Hierna wacht het

programma op een commando vooraleer verder te lopen. Indien het commando “z” of “c” werd

ontvangen, zal de timer worden aangelegd en wacht de MSP opnieuw op een volgende interrupt.

Page 113: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

OORSPRONKELIJKE MSP CODE VOOR DE ZENDERS 102

De volgende interrupt kan dan zowel afkomstig zijn van de timer als van het USB gedeelte.

Indien de timer verantwoordelijk was voor de interrupt zal er naar de interrupt routine van de

timer gesprongen worden. Deze is hieronder gegeven.

interrupts.h

#ifndef INTERRUPTS_H_

#define INTERRUPTS_H_

...

#pragma vector = TIMERA0_VECTOR

__interrupt void timerA0_isr(void);

...

#endif /*INTERRUPTS_H_*/

interrupts.c

#include <msp430x16x.h>

#include "FT2232L.h"

#include "codes.h"

...

__interrupt void timerA0_isr(void);

TIMERA0_ISR(timerA0_isr)

__interrupt void timerA0_isr(void)

if (! bezig)

return;

zend_codes();

LPM0_EXIT;

...

Wanneer de MSP in de interrupt van de timer terecht komt, controleert deze eerst of hij wel echt

aan het zenden is. Is bezig immers gelijk aan nul dan kan de interrupt gewoon worden verlaten.

In het andere geval wordt er gesprongen naar een functie zend codes() die ervoor zal zorgen dat

de juiste bits aan de correcte pinnen zullen worden aangelegd. Na het uitvoeren van deze functie

Page 114: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

OORSPRONKELIJKE MSP CODE VOOR DE ZENDERS 103

springt het programma terug naar de code waar hij oorspronkelijk mee bezig was. De functie

zend codes(), alsook de initialisatiefunctie van de verschillende codes, wordt hieronder gegeven.

codes.h

#ifndef CODES_H_

#define CODES_H_

extern unsigned char code1[503];

extern unsigned char code2[503];

extern unsigned char code3[503];

//function prototypes

void init_codes(void);

void zend_codes(void);

void init_code1(void);

void init_code2(void);

void init_code3(void);

#endif /*CODES_H_*/

codes.c

#include <msp430x16x.h>

#include <string.h>

#include "codes.h"

...

void init_codes()

init_code1();

init_code2();

init_code3();

void zend_codes()

//Zender 1

zend_code += (code1[byteteller] << bitteller) & 0x80;

Page 115: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

OORSPRONKELIJKE MSP CODE VOOR DE ZENDERS 104

//Zender 2

zend_code += ((code2[byteteller] << bitteller) >> 1) & 0x40;

//Zender 3

zend_code += ((code3[byteteller] << bitteller) >> 2) & 0x20;

if (byteteller == 1)

zend_code += 0x10;

P3OUT = zend_code; //De codes worden buiten gebracht aan poort 3

bitteller++;

if (bitteller > 7)

bitteller = 0;

byteteller++;

if (byteteller > 502)

byteteller = 0;

if (byteteller == 502 && bitteller == 7)

byteteller = 0;

bitteller = 0;

if (! cont_zenden)

bezig = 0;

CCR0 = 0; //De klok afleggen

void init_code1()

code1[1] = 0x2C; //00101100;

code1[2] = 0x93; //10010011;

...

code1[501] = 0x34; //00110100;

code1[502] = 0x55; //01010101;

Page 116: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

OORSPRONKELIJKE MSP CODE VOOR DE ZENDERS 105

void init_code2()

...

code2[94] = 0x4D; //01001101;

code2[95] = 0xB2; //10110010;

...

code2[501] = 0xD9; //11011001;

code2[502] = 0x74; //01110100;

void init_code3()

code3[1] = 0xBA; //10111010;

code3[2] = 0x6D; //01101101;

...

code3[501] = 0x34; //00110100;

code3[502] = 0x55; //01010101;

Bij het initialiseren worden de codes geladen in de variabelen code1, code2 en code3. Bij het

uitvoeren van zend codes() wordt telkens de eerstvolgende bit uit de verschillende codes genomen

en samengevoegd in een variabele zend code. Deze variabele wordt uiteindelijk naar de uitgang

van poort 3 gebracht waardoor de verschillende codes elk op een verschillende pin naar buiten

gebracht worden. Zo verschijnt de bit van code 1 aan pin 3.7, deze van code 2 aan pin 3.6 en

deze van code 3 aan pin 3.5. Wanneer de volledige codes werden verzonden, zal de timer worden

uitgeschakeld indien de zender de opdracht had gekregen om de code eenmaal te versturen.

Page 117: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ZENDERS 106

Bijlage E

Code voor de zenders

main.c

#include <msp430x16x.h>

#include "ft2232l.h"

#include "codes.h"

#include "dma.h"

#include "spi.h"

unsigned char codes[946];

unsigned int bezig = 0;

int laatste = 0;

void main(void)

volatile unsigned int i;

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

...

init_ftdimsp(); //USB functies laden

init_codes(); //Codes laden

//P5.1 is de uitgang van de zender

P5SEL |= 0x0E; // P5.1,2,3 SPI option select

...

Page 118: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ZENDERS 107

while(1)

_BIS_SR(GIE); //Intterupt aanleggen

switch((int)Received[1])

...

case ’z’: if (! bezig)

Received[1] = 0;

bezig = 0xFF;

init_DMA();

init_spi();

break;

default: ...

if (laatste == 0xFF)

ME2 &= ~USPIE1; //Disable Transmitter

laatste = 0;

DMA0CTL &= ~DMAEN;

bezig = 0;

codes.h

#ifndef CODES_H_

#define CODES_H_

extern unsigned char codes[946];

// function prototypes

void init_codes(void);

#endif /*CODES_H_*/

Page 119: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ZENDERS 108

codes.c

#include <msp430x16x.h>

#include "codes.h"

void init_codes()

codes[0] = 0x38; //00111000;

codes[1] = 0x61; //01100001;

...

codes[944] = 0xF1; //11110001;

codes[945] = 0x00; //00000000;

interrupts.h

#ifndef INTERRUPTS_H_

#define INTERRUPTS_H_

#pragma vector = PORT1_VECTOR /* lowest priority */

__interrupt void port1_isr(void);

#pragma vector = PORT2_VECTOR

__interrupt void port2_isr(void);

#pragma vector = DACDMA_VECTOR

__interrupt void dacdma_isr(void);

...

#endif /*INTERRUPTS_H_*/

Page 120: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ZENDERS 109

interrupts.c

#include <msp430x16x.h>

#include "FT2232L.h"

#include "codes.h"

...

__interrupt void Port_2(void);

PORT2_ISR(Port_2)

__interrupt void Port_2(void)

...

RX_245 = read_245();

if ( Flag_ignore == 0 )

Flag_ignore = 1;

Received[0] = RX_245;

n_bytes = 1;

else if ((Flag_ignore == 1) && ((int)n_bytes < Received[0]))

Received[n_bytes]=RX_245;

n_bytes++;

else

Received[n_bytes]=RX_245;

n_bytes++;

Flag_ignore = 0;

P2IFG &= ~0x01; // Clear interrupt

P2OUT|=nRD; // strobe nRD high

...

__interrupt void dacdma_isr(void);

DACDMA_ISR(dacdma_isr)

__interrupt void dacdma_isr(void)

laatste = 0xFF;

Page 121: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ZENDERS 110

DMA0CTL &= ~DMAIFG;

...

dma.h

#ifndef DMA_H_

#define DMA_H_

void init_DMA(void);

#endif /*DMA_H_*/

dma.c

#include <msp430x16x.h>

#include "dma.h"

#include "codes.h"

void init_DMA()

//DMA0TSEL_10: DMA0 wordt getriggerd op UTXIFG1

//DMA0 zal gegevens naar de uit-buffer sturen

DMA0CTL &= ~DMAEN;

DMACTL0 = DMA0TSEL_10;

// TX Init

DMA0SA = (unsigned int)codes; // Src address

DMA0DA = (int)&U1TXBUF; // Dst address = de uitgangsbuffer

DMA0SZ = 946; // Size in bytes

DMA0CTL = DMADT_4 + DMASBDB + DMASRCINCR_3 + DMAEN + DMAIE;

spi.h

#ifndef SPI_H_

#define SPI_H_

void init_spi(void);

#endif /*SPI_H_*/

Page 122: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ZENDERS 111

spi.c

#include <msp430x16x.h>

#include "spi.h"

void init_spi()

U1CTL = CHAR + SYNC + MM + SWRST; // 8-bit, SPI, Master

U1TCTL = CKPL + SSEL1 + STC; // Polarity, SMCLK, 3-wire

U1BR0 = 20;

U1BR1 = 0x00;

U1MCTL = 0x00;

ME2 |= USPIE1; // Module enable

U1CTL &= ~SWRST; // SPI enable

Page 123: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ONTVANGER 112

Bijlage F

Code voor de ontvanger

main.c

#include <msp430x16x.h>

...

unsigned int results[2000];

...

void main(void)

WDTCTL = WDTPW + WDTHOLD;

...

init_ftdimsp(); // initialize ftdi

init_ADC();

...

for (i = 0; i < 2000; ++i)

results[i] = 0;

P6SEL |= 0x01; // Enable A/D channel A0

...

while(1)

_BIS_SR(GIE);

switch((int)Received[1])

Page 124: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ONTVANGER 113

...

case ’d’: if (! bezig)

...

stuur_naar_PC();

...

break;

case ’z’: if (! bezig)

...

ADC12CTL0 |= ENC;

init_Timer();

init_DMA();

TACTL = TASSEL_2 + MC_1 + ID_0 + TACLR;

break;

default: ...

codes.h

#ifndef CODES_H_

#define CODES_H_

void stuur_naar_PC(void);

void init_ADC(void);

void init_Timer(void);

void init_DMA(void);

#endif /*CODES_H_*/

Page 125: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ONTVANGER 114

codes.c

#include <msp430x16x.h>

#include <string.h>

#include "codes.h"

extern unsigned int results[2000];

extern int nummer;

void stuur_naar_PC()

int i=0;

for (i = nummer*100; i < (nummer+1)*100; ++i)

write_245(results[i] >> 4); //De eerste 8 bits

write_245(results[i] << 4); //De laatste 4 bits + 0000

_NOP();

void init_ADC()

ADC12CTL1 = SHS_1 + SHP + CONSEQ_2; // TA trig., rpt conv.

ADC12MCTL0 = SREF_1 + INCH_0; // Channel A0 = INCH_0

ADC12CTL0 = SHT0_1 + REF2_5V + REFON + ADC12ON; // Config ADC12

void init_Timer()

TACCR0 = 150 - 1;

TACCR1 = 100 - 1;

TACCTL1 = OUTMOD_3;

void init_DMA()

DMA0SA = (int)&ADC12MEM0; // Src address = ADC12 module

DMA0DA = (int)&results; // Dst address = RAM memory

DMA0SZ = 2000; // Size in words

DMACTL0 = DMA0TSEL_6; // ADC12IFGx triggers DMA0

DMA0CTL = DMADSTINCR_3 + DMASWDW + DMAIE + DMAEN; // Config

Page 126: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

CODE VOOR DE ONTVANGER 115

interrupts.h

#ifndef INTERRUPTS_H_

#define INTERRUPTS_H_

...

#pragma vector = DACDMA_VECTOR

__interrupt void dacdma_isr(void);

...

#endif /*INTERRUPTS_H_*/

interrupts.c

...

__interrupt void dacdma_isr(void);

DACDMA_ISR(dacdma_isr)

__interrupt void dacdma_isr(void)

DMA0CTL &= ~DMAIFG;

DMA0CTL &= ~DMAEN;

TACCR0 = 0;

TACCR1 = 0;

TACTL = 0;

ADC12CTL1 &= ~CONSEQ_2; // Stop conversion immediately

ADC12CTL0 &= ~ENC; // Disable ADC12 conversion

ADC12CTL0 = 0; // Switch off ADC12 & ref voltage

init_ADC();

...

...

Page 127: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESPREKING VAN DE VISUAL BASIC CODE 116

Bijlage G

Bespreking van de Visual Basic code

Zoek de USB apparaten

Wanneer op de knop “Zoek de USB apparaten” wordt geklikt, voert het programma onderstaande

code uit. Hier zullen alle FT2232 apparaten gedetecteerd worden, tesamen met een paar van

hun karakteristieken zoals hun serie nummer.

Private Sub cmdChkDevices_Click()

...

LoggerList.Clear

flFailed = True

If FT_GetNumDevices(lngNumDevices, vbNullString,_

FT_LIST_BY_NUMBER_ONLY) <> FT_OK Then

LoggerList.AddItem ("FT_GetNumDevices failed")

Exit Sub

Else

LoggerList.AddItem ("Number of Devices: " & lngNumDevices)

End If

For i = 0 To lngNumDevices - 1

If FT_ListDevices(i, strDescription, _

FT_LIST_BY_INDEX Or FT_OPEN_BY_DESCRIPTION) <> FT_OK Then

LoggerList.AddItem ("ListDevices failed")

Exit Sub

Else

Page 128: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESPREKING VAN DE VISUAL BASIC CODE 117

LoggerList.AddItem ("Device Description:")

LoggerList.AddItem strDescription

End If

If FT_ListDevices(i, strSerialNumber,_

FT_LIST_BY_INDEX Or FT_OPEN_BY_SERIAL_NUMBER) <> FT_OK Then

LoggerList.AddItem ("ListDevices failed")

Exit Sub

Else

LoggerList.AddItem ("Serial Number:")

LoggerList.AddItem strSerialNumber

End If

Next i

End Sub

Open Ontvanger / Synchronisator

Hier wordt getoond hoe de verbinding met de ontvanger of de synchronisator wordt gemaakt.

Daarnaast worden er een aantal eigenschappen ingesteld zoals de tijd tot een time-out en de

baudrate.

Private Sub cmdOpxxx_Click()

’ Open the device

If FT_OpenEx(LoggerList.Text, FT_OPEN_BY_SERIAL_NUMBER,_

lngHandle_xxx) <> FT_OK Then

lstLogs.AddItem "Open Failed"

Exit Sub

Else

lstLogs.AddItem "Open device OK"

End If

’ Set baud rate to 115200

ftStatus = FT_SetBaudRate(lngHandle_xxx, 115200)

If ftStatus <> FT_OK Then

lstLogs.AddItem "SetBaudRate Failed"

GoTo CloseHandle

Page 129: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESPREKING VAN DE VISUAL BASIC CODE 118

End If

’ 8 data bits, 1 stop bit, no parity

If FT_SetDataCharacteristics(lngHandle_xxx, FT_BITS_8,_

FT_STOP_BITS_1, FT_PARITY_NONE) <> FT_OK Then

lstLogs.AddItem "SetDataCharacteristics Failed"

GoTo CloseHandle

End If

’ no flow control

If FT_SetFlowControl(lngHandle_xxx, FT_FLOW_NONE, 0, 0) <> FT_OK Then

lstLogs.AddItem "SetFlowControl Failed"

GoTo CloseHandle

End If

’ 15 second read timeout

If FT_SetTimeouts(lngHandle_xxx, 15000, 0) <> FT_OK Then

lstLogs.AddItem "SetFlowControl Failed"

GoTo CloseHandle

End If

If FT_SetChars(lngHandle_xxx, 126, 1, 0, 0) <> FT_OK Then

lstLogs.AddItem "SetFlowControl Failed"

GoTo CloseHandle

End If

...

klok_xxx.Enabled = True

...

Exit Sub

CloseHandle:

’ close the device

If FT_Close(lngHandle_xxx) <> FT_OK Then

Page 130: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESPREKING VAN DE VISUAL BASIC CODE 119

lstLogs.AddItem "Close Failed in Open"

End If

If flFailed = True Then

lstLogs.AddItem "Open Failed"

End If

klok_xxx.Enabled = False

End Sub

Page 131: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESPREKING VAN DE VISUAL BASIC CODE 120

Verzenden

De code die hieronder is weergegeven, illustreert wat er gebeurt wanneer de gebruiker op “Ver-

zenden + Ontvangen” klikt en hoe er wordt weggeschreven naar de USB uitgang.

Private Sub cmdVerzend_Click()

schrijven_zender "z"

schrijven_ontvanger "z"

End Sub

Public Function schrijven_xxx(commando As String)

Dim lengte As Integer

lengte = Len(commando)

strWriteBuffer_xxx = Chr(lengte) & commando

lngBytesWritten = 0

If FT_Write(lngHandle_xxx, strWriteBuffer_xxx,_

lengte + 1, lngBytesWritten) <> FT_OK Then

lstLogs.AddItem "Write xxx Failed"

GoTo CloseHandle

Else

lstLogs.AddItem "Write xxx OK"

End If

Exit Function

CloseHandle:

’close the device

If FT_Close(lngHandle_xxx) <> FT_OK Then

lstLogs.AddItem "Close Failed in Schrijven"

End If

klok_xxx.Enabled = False

End Function

Page 132: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESPREKING VAN DE VISUAL BASIC CODE 121

Ontvangen

Dit stuk code wordt uitgevoerd zolang de betreffende klok aanligt. Na iedere klokcyclus wordt

gecontroleerd of er gegevens klaar staan om te worden ontvangen. Wanneer dit het geval is

begint de ontvanger of de zender met het ontvangen van de gegevens.

Private Sub klok_xxx_Timer()

klok_xxx.Enabled = False

flTimedout_xxx = False

flFatalError_xxx = False

lngRxBytes_xxx = 0

If FT_GetQueueStatus(lngHandle_xxx, lngRxBytes_xxx) <> FT_OK Then

GoTo CloseHandle

End If

If lngRxBytes_xxx = 0 Then

’Niets te lezen

klok_xxx.Enabled = True

tmrControle_xxx.Enabled = True

Exit Sub

Else

...

End If

...

lngTotalBytesRead_xxx = 0

strReadBuffer_xxx = ""

strLoggerBuffer_xxx = ""

strLoggerBufferBits_xxx = ""

Dim result_xxx As String

Do

lngBytesRead_xxx = 0

ftStatus_xxx = FT_Read(lngHandle_xxx, strReadBuffer_xxx,_

lngRxBytes_xxx, lngBytesRead_xxx)

If (ftStatus_xxx = FT_OK) Or (ftStatus_xxx = FT_IO_ERROR) Then

Page 133: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESPREKING VAN DE VISUAL BASIC CODE 122

If lngBytesRead_xxx > 0 Then

strLoggerBuffer_xxx = strLoggerBuffer_xxx + _

Left(strReadBuffer_xxx, lngBytesRead_xxx)

For i = 1 To Len(Left(strReadBuffer_xxx, lngBytesRead_xxx))

result_xxx = result_xxx + char2bin(Mid(Left(_

strReadBuffer_xxx,lngBytesRead_xxx),i,1))

Next i

strLoggerBufferBits_xxx = strLoggerBufferBits_xxx & result_xxx

lngTotalBytesRead_xxx = lngTotalBytesRead_xxx + lngBytesRead_xxx

...

Else

flTimedout_xxx = True

End If

Else

flFatalError_xxx = True

End If

Loop Until (lngTotalBytesRead_xxx = lngRxBytes_xxx) _

Or (flTimedout_xxx = True) Or (flFatalError_xxx = True)

If (flTimedout_xxx = False) And (flFatalError_xxx = False) Then

flFailed_xxx = False

ElseIf flTimedout_xxx = True Then

lstLogs.AddItem "FT_Read timeout ftStatus=" & ftStatus_xxx

Else

lstLogs.AddItem "FT_Read error ftStatus=" & ftStatus_xxx

End If

klok_xxx.Enabled = True

...

Exit Sub

CloseHandle:

’ close the device

Page 134: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BESPREKING VAN DE VISUAL BASIC CODE 123

If FT_Close(lngHandle_xxx) <> FT_OK Then

lstLogs.AddItem "Close Failed (klok_xxx)"

End If

If flFailed_xxx = True Then

lstLogs.AddItem "Read Failed (klok_xxx)"

End If

End Sub

Sluit Ontvanger / Synchronisator

Dit stuk code toont hoe de verbinding met de ontvanger of de synchronisator verbroken wordt.

Private Sub cmdClxxx_Click()

...

klok_xxx.Enabled = False

If FT_Close(lngHandle_xxx) <> FT_OK Then

lstLogs.AddItem "Close xxx Failed"

Else

lstLogs.AddItem "Close xxx OK"

End If

End Sub

Page 135: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BIBLIOGRAFIE 124

Bibliografie

[1] iRobot Create Programmable Robot http://www.irobot.com

[2] iRobot Create http://www.irobot.com/sp.cfm?pageid=305

[3] U.S. Government website “Global Positioning System” http://www.gps.gov

[4] Attenuation of sound waves in air http://www.sengpielaudio.com/calculator-air.htm

[5] F. Bossuyt en S. Vancoillie (2006). “Digitale generatie en verwerking van ultrasoonsignalen

voor vroegtijdtijdige ambulante detectie van borstkanker.”

Afstudeerwerk, Faculteit toegepaste wetenschappen INTEC.

[6] P. Poelaert (2006). “Codering en analoge verwerking van ultrasoonsignalen voor vroegtijdige

ambulante detectie van borstkanker.” Afstudeerwerk, Faculteit toegepaste wetenschappen

INTEC.

[7] MSP430F1610 - Datasheet

http://focus.ti.com/docs/prod/folders/print/msp430f1610.html

[8] FT2232D - Dual USB UART/FIFO IC

http://www.ftdichip.com/Products/FT2232C.htm

[9] JTAG Protocol http://www.jtag.com

[10] FTDI Knowledgebase http://www.ftdichip.com/Support/Knowledgebase/

[11] Fairchild Semiconductor “CD4049UBCM - Hex Inverting Buffer.”

http://www.farnell.com/datasheets/67078.pdf

[12] Analog Devices “ADP3335ARMZ-5-R7 - Voltage Regulator.”

http://www.analog.com/UploadedFiles/Data Sheets/ADP3335.pdf

Page 136: Mobiele ultrasone plaatsbepaling met centimeterresolutie …lib.ugent.be/fulltxt/RUG01/001/312/456/RUG01-001312456... · 2010. 6. 7. · Mobiele ultrasone plaatsbepaling met centimeterresolutie

BIBLIOGRAFIE 125

[13] What the Nyquist Criterion Means to Your Sampled Data System Design

http://www.analog.com/en/content/0,2886,760%255F%255F91249,00.html

[14] Texas Instruments “TLV2771ID - High Speed OpAmp.”

http://www.ti.com/lit/gpn/tlv2771