CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los...

35
1 24/4/2009 Lessius De Nayer Instituut | Dries Hulens COÖRDINATOR: WIM DAMS CANSAT DRIES HULENS

Transcript of CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los...

Page 1: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

1

24/4/2009

Lessius – De Nayer Instituut | Dries Hulens

COÖRDINATOR: WIM DAMS

CANSAT DRIES HULENS

Page 2: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

2

Page 3: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

3

Inhoud Inleiding ................................................................................................................................................... 5

Sensoren .................................................................................................................................................. 6

GPS – Module ...................................................................................................................................... 6

NMEA ............................................................................................................................................... 7

Vochtsensor ....................................................................................................................................... 10

Code ............................................................................................................................................... 11

Acceleratiesensor .............................................................................................................................. 12

Code ............................................................................................................................................... 14

Temperatuur sensor .......................................................................................................................... 16

I²C temperatuur sensor ................................................................................................................. 16

Code ............................................................................................................................................... 17

Analoge temperatuur sensor ........................................................................................................ 18

Code ............................................................................................................................................... 18

Zender – Ontvanger ............................................................................................................................... 20

Antenne ............................................................................................................................................. 20

Voeding .................................................................................................................................................. 22

5V voeding ......................................................................................................................................... 22

3,3 Volt voeding ................................................................................................................................. 23

Labview .................................................................................................................................................. 24

Parachute .............................................................................................................................................. 27

Foto parachute .................................................................................................................................. 28

CanSat ................................................................................................................................................ 28

PCB’s ...................................................................................................................................................... 29

Sensor print ....................................................................................................................................... 29

ADuC Print ......................................................................................................................................... 29

GPS print ............................................................................................................................................ 30

5V voeding print ................................................................................................................................ 30

3V voeding print ................................................................................................................................ 31

Acceleratie sensor print .................................................................................................................... 31

Temperatuur sensor print ................................................................................................................. 31

Bronnen ................................................................................................................................................. 32

Blokschema’s ......................................................................................................................................... 33

Code ....................................................................................................................................................... 35

Page 4: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

4

Page 5: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

5

Inleiding Een CanSat is een kleine satelliet ter grootte van een blikje Cola. Dit blikje wordt door een raket of

luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar

beneden. Aan de CanSat is een parachute bevestigt zodat hij niet neerstort. Dit blikje moet een

aantal sensoren bevatten om metingen te doen tijdens de val. Één maal per jaar wordt er een

wedstrijd georganiseerd door de Universiteit in Delft. Diegene met de meest indrukwekkende Cansat

wint de wedstrijd.

Ik heb deze Cansat niet gemaakt om mee te doen aan deze wedstrijd maar omdat ik dit semester

met verschillende sensoren wilde leren werken. Hierom heb ik de Cansat uitgerust met een GPS,

vochtsensor, acceleratiesensor en 3 temperatuursensoren. Hiernaast wilde ik ook leren werken met

I²C, hierom heb ik temperatuursensoren gebruikt die werken met I²C. Doordat ik nu een I²C bus op de

Cansat heb kan ik hem uitbreiden met zoveel sensoren als ik zelf wil.

Door deze CanSat te maken heb ik veel bijgeleerd over de verschillende sensoren en de manier

waarop ze werken. Ik heb ook een aantal schakelingen ontworpen waardoor ik bepaalde sensoren

beter kon uitlezen. Door het vele oefenen op het maken van printplaten heb ik dit nu ook goed onder

de knie.

In de uiteenzetting van dit werk ga ik stuk voor stuk uitleggen hoe ik mijn CanSat ontworpen heb.

Tevens zal ik ook alle gebruikte sensoren toelichten.

Page 6: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

6

Sensoren

GPS – Module Om de CanSat terug te vinden na de val uit de parachute heb ik gebruik gemaakt van een GPS-

module. Deze gps-module komt uit een palmtop. Aan de GPS module hing een connector die ik heb

verwijderd. Deze connetor had 4 aansluitingen: rood, zwart, groen en grijs. De rode en zwarte

aansluiting waren logischerwijs voor de voeding bedoeld. Door het signaal te meten op de groene en

grijze aansluiting kwam ik tot de conclusie dat de groene aansluiting de output was en de grijze

aansluiting de input van de satelliet. Hierna heb ik de GPS op volgende manier aangesloten:

De RS232 connector heb ik aangesloten op mijn palmtop en uitgelezen met Hyperterminal. Ik kon

volgende informatie lezen:

Page 7: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

7

NMEA

Via wikipedia heb ik gevonden wat voor informatie een GPS ontvangt. Het gebruikte protocol bij GPS

systemen is NMEA, dit werd oorspronkelijk gebruikt aan boord van schepen om gegevens te laten

uitwisselen. Dit protocol is geschikt om via seriële verbindingen informatie te versturen. Volgens het

officiële protocol gaat dit met 4800 baud.

Het precieze protocol is beschermd materiaal en kan via het National Marine Electronics Association

(NMEA) tegen betaling verkregen worden. Er zijn talloze beschrijvingen van sentences te vinden op

het Internet.

Het protocol bestaat uit losse berichtjes (sentences) waarin bepaalde gegevens gegroepeerd zijn. De

sentences bestaan in principe alleen uit leesbare ASCII characters en de 'Carriage Return' en

'Linefeed' characters. Een sentence kan maximaal 82 tekens lang zijn, inclusief de $ en de CR/LF.

Er zijn vele tientallen verschillende NMEA-sentences mogelijk en nog veel meer als je de fabrikant-

eigen uitbreidingen meeneemt (beginnen met een $P). Niet alle NMEA-sentences zijn echter altijd

even nuttig en worden daarom ook niet standaard weergegeven. (NMEA-sentences zijn vaak wel

aan- of uit te zetten). Op het einde van een NMEA-sentence word een checksum meegezonden om

de ontvangen data te controleren.

Dit zijn de meest voorkomende:

* $GPRMC Recommended minimum specific GNSS data

De meest nuttige informatie in 1 NMEA-sentence. Hierin staan de coördinaten, tijd, datum,

grondsnelheid en -richting en of de data "Valid" is.

* $GPGGA Global positioning system fixed data

Hierin staat onder andere de tijd, de breedte- en lengtegraad, Noord/Zuid, Oost/West, de hoogte,

aantal satellieten, HDOP en of er een "fix" is en zo ja of dat een 2D of 3D-fix is.

* $GPGLL Geographic position - latitude / longitude

Een vrij korte NMEA-sentence met de coördinaten en de tijd.

* $GPGSA GNSS DOP and active satellites

Informatie over de gebruikte satellieten, diverse DOP-waardes en of er een "fix" is.

* $GPGSV GNSS satellites in view

Gedetailleerde informatie over de satellieten die in beeld zijn. Dit kan zelfs verdeeld zijn over

maximaal 3 NMEA-sentences.

* $GPVTG Course over ground and ground speed

Deze (vaak korte) NMEA-sentence geeft aan wat de koers en snelheid (in knopen en/of km/u) is.

Page 8: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

8

Ik ga maar 1 zin uit de informatie gebruiken, de GPGGA zin. Hieruit zal ik de Noord en Oost-lengte

uithalen en de hoogte. Om deze zin uit het hele pakket te filteren heb ik een kleine routine gemaakt

die controleert of de eerste letters van de zin ’GPGGA’ zijn. Hierna heb ik een routine gemaakt waar

je als argument een getal meegeeft. Dit getal is het aantal komma’s dat je wil negeren. Hierna zal hij

de waarde na de laatste komma afprinten. Zo heb ik de juiste waardes uit de string gehaald. In de

volgende zin kan je zien dat de verschillende waardes door komma’s gescheiden zijn.

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4 ,M,46.9,M,,*47

Hieronder zie je de betekenis van elke waarde. GGA Global Positioning System Fix Data 123519 Fix gemaakt op 12:35:19 UTC 4807.038,N Latitude 48 deg 07.038' N 01131.000,E Longitude 11 deg 31.000' E 1 Fix quality: 0 = invalid 1 = GPS fix (SPS) 2 = DGPS fix 3 = PPS fix 4 = Real Time Kinematic 5 = Float RTK 6 = estimated (dead re ckoning) (2.3 feature) 7 = Manual input mode 8 = Simulation mode 08 Number of satellites being tracked 0.9 Horizontal dilution of position 545.4,M Altitude, Meters, above mean sea level 46.9,M Height of geoid (mean sea level) above WGS84 ellipsoid empty field) time in seconds since last DGPS update (empty field) DGPS station ID number *47 the checksum data, always begins with * Om mijn geschreven code te testen laat ik de GPS coördinaten op het display weergeven.

Page 9: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

9

De data die de GPS uitstuurt is een RS232 signaal met spanningsniveaus tussen plus en min 3 tot 15 volt. Omdat ik een aparte pcb heb gemaakt voor de controller moest ik de spanningsniveaus beperken tot 0 en 5 volt. Omdat ik het gebruik van een MAX232 wat overkill vond (omdat ik in eerste instantie maar in 1 richting wou omzetten) heb ik een schakeling ontworpen die juist hetzelfde doet als een MAX232.

Op het schema kan je zien dat het

signaal via een transistor word

teruggebracht tot 0 en 5 volt. De diode

staat er voor de flanken van de data

stijl te laten verlopen. De data moet in

de code wel geïnverteerd worden.

Na nader inzien heb ik toch een

MAX232 moeten gebruiken omdat ik

ook ging zenden met de seriële poort.

Ik heb dit schema wel getest en heb de

volgende meting gedaan.

Hierop kan je zien dat de flanken stijl genoeg zijn en dat de spanningsniveaus nu 0 en 5 volt

bedragen.

Page 10: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

10

Vochtsensor Om de vochtigheid van de lucht te meten heb ik een vochtigheidssensor van Vishay kunnen samplen,

met name de ‘HUMIDITY-SENS-E’. Deze sensor veranderd zijn capaciteit naarmate de vochtigheid

veranderd. De sensor kan een luchtvochtigheid meten tussen 10 en 90%, hierbij veranderd zijn

capaciteit met 0,4pF per 1%. De sensor bestaat uit een plaatje isolatie met langs beide kanten een

laagje goud. De diëlektrische constante van de isolatie veranderd naarmate de vochtigheid van de

lucht, waardoor de capaciteit van de sensor veranderd. De isolatie is bevestigd tussen 2 veren in een

plastieken behuizing, hierdoor kan het geen kwaad moest de behuizing wat nat of vochtig worden,

omdat het plaatje niet rechtstreeks in contact staat met de behuizing.

Om deze verandering in capaciteit te meten heb ik een schakeling ontworpen met een 555 timer.

Dit is een monostabiele multivibrator, dit wil zeggen: als men een ingangspuls aanbied zal de uitgang

een bepaalde tijd hoog zijn. Deze bepaalde tijd word bepaald met C1, wanneer men C1 vergroot zal

de uitgang langer hoog zijn. Nu heb ik op de plaats van C1 de vochtigheidssensor gezet. Dit wil

zeggen: hoe vochtiger, hoe langer de uitgangspuls duurt.

Pin 2 en 3 zijn aangesloten op de controller, dit is wat er gebeurd in de controller:

- Pin 2 even laag maken.

- Pin 3 word nu hoog, we beginnen te tellen tot pin 3 terug laag word.

- Als pin 3 terug laag is stoppen we met tellen.

- Waarde van de teller opslaan en doorsturen.

De controller is zo geconfigureerd zodat hij aan volle snelheid draait. Zo kunnen we ook tot een

hogere waarde tellen bij het meten van de tijd van de puls op pin3. Dit wil zeggen dat we een

nauwkeurigere waarde bekomen.

Page 11: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

11

De waarde die we nu uiteindelijk bekomen reken ik niet om in een procentuele waarde omdat ik er

nog niet ben achter gekomen hoelang een puls juist duurt bij een bepaalde capaciteit. Doordat de

waarde in grafiekvorm op de laptop komt kan je wel zien of de lucht vochtiger word naarmate de

hoogte of niet.

Ik heb volgende waardes kunnen afleiden:

pf HR%

140 85%

125 50%

115 10%

Dit is een stuk code waarmee ik een teller laat lopen zolang de outputpuls van de monostabiele

multivibrator hoog is:

Code main: mov R7,#255h ;Waardes voor delay in de regis ters zetten mov R6,#255h clr P2.0 ;Pin P2.0 laag maken om zo de 555 te set ten setb P2.0 ;De pin mag terug hoog worden anders bl ijft

de uitgang van de 555 hoog lcall int lcall lcd mov teller,#000H ;teller resetten lus1: djnz R7,lus1 ;vertragingslus. Als we deze kl einer maken kunnen we sneller me ten. djnz R6,lus1 ljmp main int: jb P2.2,tellen ;zolang de pin hoog is kunnen we tellen ret ;als de pin laag is stoppen we met tellen tellen: inc teller ;in deze routine tellen we ljmp int lcd: mov a,#003h ;en de waarde afbeelden op het lc d lcall outcharlcd mov a,#00dh lcall outcharlcd mov a, teller lcall outbytelcd ret

Page 12: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

12

Acceleratiesensor Ik wou graag weten welke G-krachten de Cansat ondervind tijdens zijn val, ook of hij recht naar

beneden valt, of op zijn zij valt. Hiervoor heb ik een Acceleratiesensor van Analog Devices kunnen

bemachtigen. Meer specifiek de ADXL330. Dit is een acceleratiesensor die de G-kracht meet in 3

richtingen. Hij heeft een bereik van -3,6 to 3,6G. Deze is zo gevoelig dat ik zelf kan zien in welke

positie de Cansat op de grond ligt. De waarde van de G-kracht komt uit de sensor als een analoge

spanning. Deze spanning is bij 0G 1,5V en stijgt met 300mV per G.

Je kan de sensor het best bekijken als een isolatieblokje dat in een kubus van metaal hangt. Twee

overeenstaande platen van de kubus vormen dan een condensator waarvan de waarde veranderd

wanneer het blokje tussen de plaatjes schuift. Deze capaciteitsverandering word door de chip zelf

omgezet naar een variërende spanning.

Deze 3 uitgangsspanningen meet ik met 3ADC’s van de ADuC en reken ik dan om op volgende wijze:

5V = 4096d 0V = 0d 10mV = 8d 0,0012V = 1d 1,5V = 1250 = 0G

1.Gemeten waarde – 1250 bv 1G = 1,8V = 1500 – 12 50 = 250 2. Uitkomst / 25 250/25 = 10 of 1,0G

Voorbeelden:

0G = 1,5V = 1250 -> 1250 – 1250 / 25 = 0 = 0G

1G = 1,8V = 1500 -> 1500 – 1250 / 25 = 10 = 1,0G

2G = 2,1V = 1750 -> 1750 – 1250 / 25 = 20 = 2,0G

3G = 2,4V = 2000 -> 2000 – 1250 / 25 = 30 = 3,0G

Wanneer de we onder 0G gaan moeten we hiermee reken ing houden en doen we 1250 – gemeten waarde ipv gemeten waarde – 1250. Hierdoor komen we hetzelfde uit maar dan voor negatieve G-Kr achten.

Page 13: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

13

De accelerometer is 4x4mm groot en telt 16 pinnen. Voor deze chip heb ik een print geëtst waar de

banen een stukje onder de chip doorlopen. Voordat ik de chip op de pcb heb gesoldeerd heb ik eerst

de banen vertind, vervolgens de chip op de juiste plaats geplakt en hierna baan per baan even warm

gemaakt met de soldeerbout. Doch maakte deze ergens geen goed contact en heb ik er minidraadjes

moeten aansolderen om de verbinding te maken. Na het testen of alles werkte heb ik de sensor

ingegoten met 2-componentenlijm zodat deze goed vastzat op de PCB. Normaal moet je na het

solderen van de sensor op een pcb de print een aantal uur in een speciale oven leggen. Na dit proces

is de print en sensor pas echt klaar voor gebruik.

Nu de sensor op een aparte pcb staat kan ik hem in mijn breadboard prikken om er zo testen op te

doen. Op volgende figuur kan je zien wat de uitgang is onder verschillende posities.

Page 14: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

14

Met g-kracht of g-force wordt in tegenstelling tot wat de naam suggereert niet een kracht aangeduid.

Het is een versnelling die wordt uitgedrukt in de gravitatieversnelling. De "g" staat hier dan ook voor

het gebruikelijke symbool voor de zwaartekrachtsversnelling. Deze bedraagt in Belgie ongeveer 9.81

m/s². Een g-kracht van 1g is dus een versnelling in grootte gelijk aan de valversnelling. Hierdoor dat

de sensor 1G meet wanneer hij niet beweegt. Dit is de ‘aantrekkingskracht of zwaartekracht van de

aarde’ die je meet.

Code

Code van de acceleratiesensor:

start: setb sconv ; start conversion

waitbt: jb sconv, waitbt ; wacht tot conversion is voltooid mov a,#00dh ;lcd instellen lcall outcharlcd mov a,ADCDATAH ;hoogste waarde inlezen anl a,#00001111b ;laagste 4 bits mov R1,a ;dit in R1 steken mov a,ADCDATAL ;laagste waarde in R0 steen mov R0,a clr c mov a,R1 cjne a,#004h,verder1 ;controlleren waarde boven 0G of -0G ljmp next

verder1:jnc plus ;>0G ga naar plus ljmp minn ;<0G ga naar min

next: mov a,R0 clr c cjne a,#0E2h,verder2 ljmp minn

verder2: jnc plus ljmp minn

plus: mov R3,#004h ;eerst 1250 van af trekken mov R2,#0E2h lcall sub16 ;uitkomst staat nu in R2,R1, R0 mov R3,#000h ;dan gaan we dit getal delen door 25 mov R2,#025d lcall div16 ;delen door 25 mov a,#'+' lcall outcharlcd ljmp print

minn: mov a,R1 mov R3,a mov a,R0 mov R2,a

Page 15: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

15

mov R1,#004h mov R0,#0E2 lcall sub16

mov R3,#000h ;dan gaan we dit getal delen door 25 mov R2,#025d lcall div16 mov a,#'-' lcall outcharlcd ljmp print

print:mov a,r3 mov r1,a mov a,r2 mov r0,a lcall hexbcd16 ;deze waarde nog omzetten naa r BCD mov a,R0 lcall outbytelcd

lus: djnz r7,lus ;klein vertragingslusje ljmp start

Page 16: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

16

Temperatuur sensor

I²C temperatuur sensor

Ik meet de temperatuur in de satelliet, op de voedingsprint en buiten de satelliet. Omdat ik met I²C

wilde leren werken heb ik dan ook gekozen voor temperatuursensoren die werken via het I²C

protocol. Ik heb van Texas Instruments de ‘TMP100’ kunnen samplen. Deze sensor heeft een

temperatuurbereik van -55°C tot 125°C en een resolutie van 12 bit. De sensor werkt van 2,7V tot

5,5V dus kan je deze in verschillende applicaties gebruiken. De temperatuursensor is in smd

uitvoering geleverd dus dacht ik in eerste instantie voor elke sensor een klein printje te maken.

Omdat ik de sensor gemakkelijk wou kunnen verbergen heb ik gewoon draden op de chip gesoldeerd

en het adres hardwarematig ingesteld. Het adres kon je instellen door 2 adres pinnen te verbinden

met GND, VCC of floating.

Uit de datacheet kon ik afleiden hoe je de sensor moest aanspreken.

Page 17: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

17

Eerst moet je een startcoditie genereren, dit doe je door de data te veranderen terwijl de klok hoog

is. Hierna stuur je het adres door. Dan krijg je een ack van de geselecteerde sensor.

In het begin had ik problemen om deze ACK te ontvangen, dit komt omdat ik deze inlas op de 9de

klokpuls, maar deze komt pas tussen de 9de en 10de kolkpuls. Hierna moeten we 8 nullen sturen,

hierdoor is de sensor ingesteld om alleen te kunnen lezen. Nu is de sensor gedigitaliseerd. Nu kunnen

we data lezen, dit doen we door terug een startcoditie te sturen. Hierna sturen we opnieuw het

adres van de desbetreffende sensor. Nu krijgen we de eerste 8 bits data doorgestuurd, hierna

moeten we een 0 als ACK naar de sensor sturen. Nu stuurt hij het 2de deel van de data door. In het 2de

deel staat of het de temperatuur xx,0 of xx,5 is. Nu sturen we terug een AKN en daarna de

stopconditie. Als we de sensor nu opnieuw willen uitlezen moeten we hem niet opnieuw initialiseren.

Nu kunnen we ook de andere sensoren uitlezen door het adres van de sensor in de code te

veranderen.

Code tempiic: lcall iicstart ;startcoditie sturen

mov a,adres ;adres van de sensor moven in acc lcall iicoutbyte ;sensor aanspreken clr a clr c lcall iicoutbyte ;instellen op READ ONLY jc tempiic ;kijken of we ACK ontvangen nu is hij geinitialiseerd lcall iicstart ;startconditie mov a,adres ;adres moven in acc orl a,#00000001b ;op read zetten ipv op write lcall iicoutbyte ;sensor aanspreken jc tempiic ;zien of we ACK krijgen lcall iicinbytea ;data deel 1 inlezen lcall hexbcd8 ;omzetten naar bcd lcall outbyte ;doorsturen naar laptop mov a,#',' lcall outchar ;komma afprinten lcall iicinbytea ;2 de deel van data inlezen cjne a,#000h,voliic ;als dit niet gelijk is aan nul is het 0,5 ljmp printiic

voliic: mov a,#050d ljmp printiic

printiic: lcall hexbcd8 ;2de deel omzetten lcall outbyte ;doorsturen naar laptop lcall iicstop ;stopconditie sturen mov a,#00Ah ;LF zetten achter getal lcall outchar mov a,#00dh lcall outchar ret

Page 18: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

18

Analoge temperatuur sensor

Omdat ik ook een analoge temperatuursensor had liggen heb ik deze ook even getest, maar

uiteindelijk zal ik deze niet gebruiken. Het is een sensor van Analog Devices, de AD22103. Deze

sensor heeft een bereik van 0 tot 100°. De uitgang van de sensor veranderd 28mV/°C. Hiervoor heb ik

een printje gemaakt zodat ik de sensor op mijn breadboard kon zetten. De uitgang van de sensor heb

ik aangesloten op een ADC van de ADuC. De waarde reken ik op volgende manier op:

2^12 = 4096 Dit wil zeggen bij 5 volt aan de ingang krijg ik de waarde 4096 Bij nul volt aan de ingang krijg ik de waarde 0 Dit wil zeggen: 0,0012V => 1 De temperatuursensor geeft voor 0 graden 0,25V => 2 08 De temperatuursensor geeft voor 100°C 3,05V => 2542 om dit nu om te reken naar een temperatuur doe ik h et volgende: (2542 - 208) /23 en nu kom ik een getal tussen 0 en 100°C uit. Met een fout van 0,014%

Code

temp: mov adccon2, #00010110b ;adres 1

temp1: setb sconv ; start conversion

waitbttt: jb sconv, waitbttt ; wacht tot conversion is voltooid

mov a,#'T'

lcall outchar

mov a,ADCDATAH ;hoogste waarde inlezen

anl a,#00001111b ;laagste 4 bits van eb u

mov R1,a ;dit in R1 steken

mov a,ADCDATAL ;laagste waarde in R0 steen

mov R0,a

clr c ;hier test ik of de waarde niet onder de 208

komt

mov a,R1 ;want dit wil tog zeggen 0° en de tempsens werkt niet onder 0

cjne a,#000h,verder11 ;als hij dus onder de 208 komt stuur ik 0 naar buiten

mov a,R0 ;anders stuur ik de temperatuur naar buiten.

cjne a,#208d,verder12

verder12: jnc verder11

mov a,#'0'

lcall outchar

clr c

ret

verder11: mov R3,#000d ;eerst 208 van af trekken

mov R2,#208d

lcall sub16 ;uitkomst staat nu in R2,R1, R0

mov R3,#000h ;dan gaan we dit getal delen door 23

mov R2,#023d

lcall div16

mov a,r3

Page 19: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

19

mov r1,a

mov a,r2

mov r0,a

lcall hexbcd16 ;deze waarde nog omzetten naar BCD

mov a,R1

lcall outnib ;alleen laagste 4 bits weergeven

mov a,R0

lcall outbyte

mov a,#00Ah ;LF zetten achter getal

lcall outchar

mov a,#00dh

lcall outchar

ret

Page 20: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

20

Zender – Ontvanger Ik heb een zender en ontvanger op 866Mhz. Deze zouden een afstand van 4,5km MAX moeten halen.

Op deze zender/ontvanger kan je RS232 of TTL aansluiten. De zender staat op de cansat gemonteerd.

Ik stuur een RS232 signaal vanuit de aduc. Ik stuur men data naar de zender met een baudrate van

4800 omdat dit ook de baudrate is van de GPS. Ik heb de zender en ontvanger getest en ik heb

ongeveer 2KM (vogelvlucht) ontvangst in een dicht bebost gebied. Dus dit is behoorlijk goed. De

zender/ontvanger kan zowel als zender en ontvanger fungeren. Wanneer men niets naar de

zender/ontvanger stuurt werkt hij als een ontvanger, wanneer je iets naar de zender stuurt, werkt

deze als zender. De zender/ontvanger heb ik kunnen kopen op http://www.ideetron.nl

Hij heeft een vermogen van 50mW en verbruikt 100mA maximum. De zender/ontvanger bevat ook

een antenne, mr. Bauwels heeft mij uitgelegd hoe een antenne uitstraalt. Dit is op volgende manier.

Antenne Wanneer de ontvanger nu juist onder de satelliet staat zal de straling niet invallen op de ontvanger.

Wanneer we de antenne horizontaal plaatsen zal de ontvanger deze straling wel ontvangen.

Ontvanger

Ontvanger

Page 21: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

21

Zoals je kan zien heeft de zender/ontvanger meerdere aansluitingen. Dit is omdat je zowel TTL niveau

als RS232 niveau kan ontvangen of versturen. Via jumpers kan je RS232 of RS485 instellen, eveneens

als de baudrate.

De ontvanger heb ik ingebouwd in een mooie behuizing. Hierop heb ik een RS232 connector

gemonteerd voor de communicatie en een USB connector voor de voedingsspanning. Een USB poort

kan maximum 200mA leveren, de Z/O verbruikt maximum 100mA dus dit levert geen problemen. Zo

kan ik de ontvanger op mijn laptop aansluiten zonder een extra voeding nodig te hebben.

Page 22: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

22

Voeding

5V voeding De hele CanSat zal werken op 5V. Hiervoor heb ik een voeding/verdeel printje gemaakt waarop ik

gemakkelijk 5V kan aftappen. De voeding bestaat uit 2 spanningsstabilatoren (7805) die elk 1A aan

kunnen. De schakeling gaat nooit 2A trekken maar ik wou niet dat de componenten warm werden en

zo de temperatuur sensor zouden beinvloeden. Achter elke 7805 staat ook een indicatieled zodat je

kan zien of hij aanstaat. Eerst had ik het probleem dat de 7805 aan het oscilleren was. De

uitgangsspanning lag dan rond de 8V maar dit was snel opgelost door parallel over de ingang een

condensator van 330nF te zetten.

Page 23: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

23

3,3 Volt voeding Mijn analoge temperatuursensor en acceleratiemeter hebben een werkspanning van 3,3V. Om deze

spanning te bekomen heb je speciale chip’s. Omdat ik een LM317 had liggen heb ik deze gebruikt. Dit

is een spanningsregelaar waarmee je de spanning kan regelen van 1,2V tot voedingsspanning. Deze

heb ik afgeregeld tot 3,3V. Deze regulator kan ongekoeld een stroom van 1A leveren.

Page 24: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

24

Labview Om de gegevens die de satelliet doorstuurt duidelijk te kunnen weergeven heb ik een programma in

Labview gemaakt. Hierin kan je De GPS gegevens bekijken, de hoogt, de G-krachten in 3 richtingen,de

vochtigheid en de temperaturen. Dit allemaal in grafieken. Bij het stoppen van het programma

worden alle gegevens nog eens opgeslagen in een tekstdocument. Ik heb eraan gedacht om deze ook

op te slagen in een html bestand, zodat deze via mijn website live te bekijken zijn.

De layout en het programma kan je op volgende 2 pagina’s bekijken.

Page 25: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

25

Page 26: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

26

Page 27: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

27

Parachute Op internet heb ik een programma gevonden waarmee ik de diameter van mijn parachute kan

berekenen. Hierbij kwam ik uit op een diameter van 1,7 meter. Hierna heb ik een schets gemaakt hoe

de verschillende delen van de parachute er moesten uitzien. Op volgende afbeelding kan je dit zien.

Dit is 1 van de 12 delen van de parachute, het deel is zo getekend zodat de parachute ,als hij aan

elkaar genaaid is, een perfecte vorm heeft. Hiervoor moest er aan het uiteinde van het deel een

bepaalde boog worden gevormd. Dit heb ik uit testjes ondervonden.

Page 28: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

28

Foto parachute En dit is dan de parachute die helemaal uit het stof geknipt is en aan elkaar genaaid is. Je kan zien dat

hij al goed werkt want de luchtbel blijft gevangen onder de parachute.

CanSat

Page 29: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

29

PCB’s Alle PCB’s heb ik zelf ontworpen, geëtst en gesoldeerd. Ik heb er ook een greencoat opgespoten, dit

geeft de print een professioneel uitzicht en beschermt de print tegen corrosie.

Sensor print

ADuC Print

Page 30: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

30

GPS print

5V voeding print

Page 31: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

31

3V voeding print

Acceleratie sensor print

Temperatuur sensor print

Page 32: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

32

Bronnen NMEA http://nl.wikipedia.org/wiki/NMEA-0183 GGA http://www.gpsinformation.org/dale/nmea.htm#GGA Modelbouwraket http://www.drra.nl/index_nl.html Analog Devices http://www.analog.com/en/index.html Vishay http://www.vishay.com

Page 33: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

33

Blokschema’s

Page 34: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

34

Page 35: CanSat - hulens.be · luchtballon tot een hoogte van 1 km gebracht, hierna wordt de CanSat los gelaten en valt hij naar beneden. Aan de CanSat is een parachute bevestigt zodat hij

35

Code