• No results found

Design och tillverkning av universell förstärkarmodul för trådtöjningsgivare

N/A
N/A
Protected

Academic year: 2021

Share "Design och tillverkning av universell förstärkarmodul för trådtöjningsgivare"

Copied!
58
0
0

Loading.... (view fulltext now)

Full text

(1)

Design och tillverkning av universell

förstärkarmodul för

trådtöjningsgivare

Reg.kod: Oru-Te-EXE084-EL103/06

Rahman Hassanzadeh

Elektronikingenjörsprogrammet 120 p

Örebro vårterminen 2006

Examinator: Sune Bergelin

Handledare: Thorbjörn Andersson

DESIGN OF UNIVERSAL STRAIN GAUGE AMPLIFIER MODULE

Örebro universitet Örebro University

Institutionen för teknik Department of technology

(2)

Förord

Denna rapport är resultatet av mitt examensarbete som utförts på företaget Contec i Arboga under vårterminen 2006.

Jag vill särskilt tacka min tålmodige handledare Thorbjörn Andersson (forskningsingenjör EPE) för hans handledning genom hela projektet och även rikta ett stort tack till

företagshandledaren Mark Tierney som varit en källa för värdefulla synpunkter och diskussioner under arbetets gång. Jag vill också passa på att tacka Bo-Lennart Silfverdal (forskningsingenjör AASS). De råd och tips som han delat med sig av har varit ytterst värdefulla, och jag är även tacksam för att han hjälpte mig att få låna material och få tillgång till den utrustning som krävts för programkörning.

Förutom dessa personer vill jag rikta ett varmt tack till min examinator Sune Bergelin (programledare) samt Thomas Tierney på företaget som varit behjälpliga i olika frågor som kommit upp under diskussionen. Thomas gav mig en cd där han själv sjunger och spelar gitarr. Jag vill tacka honom för detta också.

Örebro den 16: e maj

Rahman Hassanzadeh

(3)

Sammanfattning

Som examensarbete har jag fått den spännande uppgiften att ta fram en universell förstärkarmodul för trådtöjningsgivare för användning med kvart-, halv- och helbrygga (Wheatstonebrygga). Uppgiften ska utföras åt ett företag som kommer att använda kretskortet för mätningar i industrimiljö.

Det här kortet är tänkt att uppfylla många olika behov, där det viktigaste är kraftmätning på ett objekt. Det här görs med hjälp av en Wheatstonebrygga, eftersom spänning är direkt

proportionell mot resistans som i sin tur är proportionell mot kraften, vilket betyder att en ändring i resistansen ökar eller minskar spänningen. Modulen ska känna av minsta möjliga resistansändring för att registrera belastningen på bryggan. Syftet med att använda kvarts-, halv- eller fullbrygga följer senare i rapporten.

Mätningsspänningen till hela modulen är +15 och -15 volt. Vid nollbalansering av bryggan är det viktigt att modulen inte ger ut en signal på grund av temperaturdrift eller obalans i

mätobjektet. För att uppnå detta mål fick jag använda:

 En mikroprocessor (ATmega 16) som har inbyggd A/D –omvandlare.  En D/A –omvandlare på 10 bitar.

Vid mätning på stora avstånd avsåg jag att göra avläsningar på ström istället för spänning. Till skillnad från spänning som avtar ju längre ledningen är, bevaras strömstyrkan hela vägen. Att beräkna spänningen när resistansen och strömmen är givna, är enkelt.

Konstruktionen gjordes delvis i programmet Multisim och kretskortet tillverkades med hjälp av programmet Ultiboard.

Resultatet av projektet var att ett mönsterkort tillverkades enligt företagets kravspecifikation samt att komponenterna monterades.

(4)

Abstract

The degree project assigned to me was to build a universal amplifier module for a strain gauge that could be used in 3 different states ie. quarter, half or full wheatstone bridge. The printed circuit card to be built for a company shall fulfil many needs and it is intended for industrial purposes.

The most important is measuring the force on an object. This is accomplished with the help of a wheatstone bridge since voltage is directly proportional to resistance and furthermore resistance is proportional to force. This means that a change in resistance results in an increment or decrement of voltage. The important factor in this module is that it should register the least possible change in resistance so that a value gets recorded in the bridge. The reasons for using quarter, half or full bridge are explained later in the report.

Measurement voltage for the module is +15 and -15 volts. The module should not give out a signal because of temp drift or imbalance of the object in measure at the point of zero balancing it. To attain this goal, I used:

 A microprocessor (ATmega 16) that has a built-in A/D converter.  A D/A converter of 10 bits.

In long distance measurements, the idea of monitoring current instead of voltage sounded better. This is because current remains the same along the line(wire) whereas voltage subsides the longer the wire. Calculation of voltage when resistance and current are given is pretty simple.

The construction was partly done with the help of the program Multisim while the printed circuit card was manufactured with the help of Ultiboard.

The result was a complete card with components mounted and constructed according to the company’s demands and specifications.

(5)

Innehållsförteckning

FÖRORD ... I SAMMANFATTNING ... II ABSTRACT ... III INNEHÅLLSFÖRTECKNING ... IV FIGURFÖRTECKNING ... VI TABELLFÖRTECKNING ... VI 1. INLEDNING ... 1 2. BAKGRUND ... 1

2.1. KRAV, SYFTE OCH MÅLSÄTTNING ... 1

3. ARBETSGÅNG ... 3

4. INLEDANDE STUDIE/TEORI ... 4

4.1. TRÅDTÖJNINGSGIVARE ... 4

4.1.1. GIVARENS K-FAKTOR (TÖJNINGSKÄNSLIGHET) ... 4

4.2. WHEATSTONEBRYGGA ... 5 4.2.1. KVARTSBRYGGA ... 5 4.2.2. HALVBRYGGA ... 5 4.2.3. HEL-/FULLBRYGGA ... 5 4.3. NOLLBALANSERING ... 6 4.4. INSTRUMENTFÖRSTÄRKAREN ... 7 4.5. AVR ATMEGA 16 ... 9 4.6. A/D-OMVANDLARE... 10 4.7. D/A-OMVANDLARE... 10

4.7.1. 10-BITARS D/A-OMVANDLARE (MAX 515) ... 10

4.8. EEPROM ... 11 4.9. KAPSLING ... 11 4.10. CE- MÄRKNING ... 11 5. GENOMFÖRANDE ... 12 5.1. VERKTYG ... 12 5.2. KRETSSCHEMA ... 14 5.2.1. BRYGGANS BALANSERING ... 15

5.2.2. KOPPLINGSCHEMAT MED INSTRUMENTFÖRSTÄRKARE INA125 ... 15

5.2.3. MICROPROCESSORN OCH D/A –OMVANDLAREN SOM KOPPLATS ... 17

5.2.4. LT1013CN8 SOM INNEHÅLLER TVÅ OP –FÖRSTÄRKARE ... 18

5.2.5. SUMMATORINVERTERARE ... 19

5.2.6. KAPSEL SOM INNEHÅLLER 2 OP –FÖRSTÄRKARE ... 19

5.2.7. KOPPLINGSCHEMAT EFTER ATT KOMPLETTERAT MED KOPPLINGEN I FIGUR 20 ...20

5.3. ATT PROGRAMMERA MIKROPROCESSORN ... 21

5.4. KORTLAYOUT ... 22

(6)

5.5.2. FLÖDESDIAGRAM ... 25 5.5.3. TESTSCENARIO ... 26 5.5.4. EEPROM-MINNET... 26 6. PROTOTYP ... 28 7. SLUTSATS... 28 8. REFERENSER ... 29 8.1. INTERNET ... 29 8.2. LITTERATUR ... 30 8.3. DATABLAD ... 31 9. BILAGOR ... 32 BILAGA 1: PROGRAMKOD... 32

(7)

Figurförteckning

Figur 1 : en kanal av modulen ... 2

Figur 2: En kvartsbrygga med 2 wire/2 ledningar ... 2

Figur 3: En kvartsbrygga med 3 wire/3 ledningar ... 2

Figur 4: Trådtöjningsgivare ... 4

Figur 5: Wheatstonebrygga ... 5

Figur 6: Kvartsbrygga, givare med tre ledningar ... 6

Figur 7: INA125s utseende ... 7

Figur 8: kopplingsschemat för INA 125 ... 8

Figur 9 : AVR Atmega16 benkonfiguration ... 9

Figur 10: MAX 515 Typical Operating Circuit ... 11

Figur 11: Flödesdiagram över arbetet ... 12

Figur 12: Bryggor ... 13

Figur 13: Blockschema ... 14

Figur 14: Bryggans balansering ... 15

Figur 15: Kopplingsschemat med instrumentförstärkare INA 125 ... 16

Figur 16: Microprocessorn och D/A –omvandlaren som kopplats ... 17

Figur 17: Definition för differentialförstärkare ... 17

Figur 18: LT1013CN8 som innehåller två OP –förstärkare ... 18

Figur 19: Summatorinverterare ... 19

Figur 20: Kapsel som innehåller 2 OP –förstärkare... 19

Figur 21: Kopplingschemat efter att kompletterat med figur 20 ... 20

Figur 22: Atmega16 & Max 515 ... 21

Figur 23: Kortlayout ... 23

Figur 24 : Programmering och test kör av kopplade 10-bitars D/A-omvandlare(MAX 515) och AtMega 16 på Laborationsplattan AVR STK500 ... 24

Figur 25: Flödesdiagram ... 25

Tabellförteckning

Tabell 1: förstärkningen i INA 125 enligt RGs värden ... 8

Tabell 2: Egenskaper för D/A -omvandlare(MAX 515) ... 10

(8)

1.

Inledning

Företaget som jag fick examensarbeta åt heter Contec, det är ett konsultföretag som gör följande:

 Felsökningar på drivsystem som frekvensomriktare och strömriktare.  Utbildar folk inom mätteknik, mest stålindustri och pappersindustri.  Säljer ABB Argus mätsystem.

Användning av Wheatstonebrygga förekommer i många olika sammanhang. I marknaden finns flera typer av chip som är anpassad för användningen av Wheatstonebrygga.

Jag har försökt konstruera kretsens funktion på ett så okomplicerat sätt som möjligt så att den

ska varaenkelatt tillverka samt lätt att förstå och använda.

2.

Bakgrund

Jag har alltid varit intresserad av elektronik och inte minst längtat att få tillämpa mina teoretiska kunskaper i praktiken.

Med tanke på mitt stora intresse för elektronik, valde jag att inom ramen för min

examensuppgift att bygga ett kretskort med tekniken for Wheatstonebrygga. Uppgiften är i stort sett rent elektronisk. Projektet går ut på att ta fram en universell förstärkarmodul för användning med trådtöjningsgivare. Detta innebär följande moment:

 Konstruktion för att klara specifikationen nedan  Cadning och tillverkning av mönsterkort

 Tillverkning och testning av färdigt kort  Kapsling av kortet

 Dokumentation inklusive ritningar, komponentlista och användarbeskrivning

2.1. Krav, syfte och målsättning

I arbetet ingår följande punkter:  Antal kanaler

Förstärkarmodulen ska bestå av fyra separata kanaler så att varje kanal ska kunna kopplas för en, två eller fyra givare, alltså kvartbrygga, halvbrygga eller fullbrygga.

Figuren nedan visar en exempel på en kanal, modulen skall bestå av 4 st. likadana kanaler och varje kanal ska kunna konfigureras som kvartsbrygga, halvbrygga eller helbrygga. Nollbalansering ska ske från en impuls via en switch antingen monterad i modulkapslingen eller från en fjärrutrustning.

(9)

Figur 1 : en kanal av modulen

 Givartyp

Trådtöjningsgivare ska väljas 350 ohm. Man skall kunna använda både så kallad 2- och

3-wiregivare. Konstruktionen måste tillåta att man enkelt kan välja mellan 2- eller 3-3-wiregivare. En DIPswitch monterad på kortet och tillgänglig från kapslingens utsida ska användas för att välja önskad givartyp.

Figur 2: En kvartsbrygga med 2 wire/2 ledningar

(10)

 Nollbalansering

Nollbalanseringen skall ske med en tryckknapp monterad på kapslingens framsida eller via en inpuls som kommer från en tryckknapp för fjärnollställning.

 Typ av brygga

Man ska kunna konfigurera varje kanal för följande alternativ:

1. En trådtöjningsgivare. Bryggan realiseras med 3 motstånd monterade på förstärkarkortet. 2. Två trådtöjningsgivare. Bryggan realiseras med 2 motstånd monterade på förstärkarkortet. 3. Fyra trådtöjningsgivare. Bryggan utnyttjar inget på kort monterat motstånd.

En DIP switch monterad på kortet och tillgänglig från kapslingens utsida ska användas för att välja önskad konfiguration.

 Förstärkning

Enligt uppgiften skall förstärkarens defaultvärde vara 1000 ggr. Man ska dessutom kunna åstadkomma valfri förstärkning genom att byta en komponent på kortet.

 Kapsling

Kapslingen skall väljas för att dels kunna fastmonteras i apparatskåp, och dels för att kunna byggas in i portabla mätutrustningar.

 Utsignal

Utsignalen skall vara valbar för+-10volt eller +-4-20mA

 CE-märkning

Konstruktionen ska göras för att klara kravet för CE-märkning.

3.

Arbetsgång

Jag har planerat arbetet på följande sätt:

 Leta material med hjälp av Internet och mm.

 Söka mera information och berika kunskaper om examensuppgiften  Inspirera med problemlösning inom uppgiften

 Beräkningar och ritningar

 Programmering av mikroprocessorn  Att göra klart ritningar

 Prova funktion  Rätta eventuella fel  Bygga prototyp

(11)

4.

Inledande studie/Teori

Inledningsvis utfördes en övergripande studie av de vanligast förekommande användbara komponenter och material i uppgiften.

4.1. Trådtöjningsgivare

Det är ett vanligt sätt för att mäta vilka krafter1 som verkar på ett konstruktionselement.

Trådtöjningsgivare består av en tunn metalltråd som monteras mellan två lager plastfilm med anslutningsblecken åtkomliga för anslutning av kablar. Givaren limmas sedan fast på ytan där man vill mäta töjningen. Töjningen av givaren är proportionellt med resistansens ökning vilket betyder att när givaren sträcks ut ökar dess resistans vilket kan utnyttjas för att beräkna töjningen. Det finns olika standardvärden på trådtöjningsgivares resistans, exempelvis 120, 350 och 700 ohm. I uppgiften har jag använt resistansen 350 ohm.

En vanlig användningsmetod av trådtöjningsgivare är att koppla i en Wheatstonebrygga eftersom man kan öka utsignalen om flera givare används. Beroende på hur många givare som används pratar man om kvartsbrygga, halvbrygga eller helbrygga.

I den här uppgiften har jag konstruerat en förstärkarmodul som kan användas för 1, 2 eller 4 trådtöjningsgivare.

När jag använder 1 trådtöjningsgivare kortsluter jag en utav de fyra 350-Ohmsresistorerna i bryggan. Med 2 trådtöjningsgivare kortslutes två resistorer. Med 4 trådtöjningsgivare kortslutes alla fyra 350-Ohmsresistorer.

Trådtöjningsgivare med tre ledningar är mer noggranna än de med två ledningar och genom att använda tre ledningar kan påverkan av ledningsresistansen elimineras samtidigt som man kompenserar för temperaturen. Se kapitel 5 i [2] och kapitel 2 i [1].

Figur 4: Trådtöjningsgivare

4.1.1. Givarens K-faktor (töjningskänslighet)

En givares töjningskänslighet eller K-faktor bestäms av den resistansändring som givaren ger då den utsätts för en töjning. Detta beskrivs av följande formel:

1 Att det finns ett samband mellan kraftpåverkan och längdförändring upptäcktes av vetenskapsmannen Robert

Hooke (1635-1703). Han fann i sina undersökningar att kraftpåverkan ger upphov till en förändring av det påverkade objektets längd.

(12)

4.2. Wheatstonebrygga

Med bryggor kan man mäta töjning, kraft och tryck och principen för bryggkopplingar är att mätstorheten åstadkommer en impedansändring hos givaren, vilket i sin tur innebär en spänningsändring på givarens utgång.

När elementen i givaren är rent resistiva, går den under namnet Wheatstonebrygga och en sådan visas i fig. 5. Med en spänning över två ytterpunkter matas bryggan och utsignalen från de andra två ytterpunkterna förstärks sedan av en mätförstärkare. De bryggkopplingar som används är kvartsbrygga, halvbrygga och fullbrygga. Se [6] och kapital 4 i [2].

Figur 5: Wheatstonebrygga

4.2.1. Kvartsbrygga

I fallet kvartsbrygga är det endast en arm i bryggan som befinner sig vid mätstället och de övriga tre armarna befinner sig i mätförstärkaren. Eller med andra ord kan man säga att en utav de fyra motstånden i bryggan kortsluts och istället kopplas en givare (Se figur 2). Att kabeldragningen och applikationen blir enkel kan räknas som fördelen med kvartsbrygga. Nackdelar är att temperaturkompenseringen kan bli dålig, utsignalen liten och störkänsligheten relativ stor.

4.2.2. Halvbrygga

I halvbryggas fall kortsluts två utav de fyra motstånden i bryggan och istället kopplas två givare, med andra ord kan man säga att två armar i bryggan befinner sig vid mätstället. En eller båda två givarna kan vara aktiva (med aktiva menar att de själva ger utspänning utan i passiva man måste skicka in någon spänning för att få utspänning). Om en givare är aktiv fungerar den andra som temperaturkompensering. Om båda två givarna är aktiva en skall ha positiv och den andra negativ töjning. Fördelen i detta fall är att kabeldragningen enkel och temperaturkompenseringen blir bra. Nackdelen är att utsignalen blir relativt liten.

(13)

4.3. Nollbalansering

Bryggkopplingar är alltid behäftade med en viss obalans. Resultatet blir att utsignalen från en brygga skiljer sig från noll. Obalansen beror på att bryggresistanserna inte är exakt lika. När Vout = 0, så är bryggan balanserad och med lite justeringar av resistorerna kan Vout få ett värde. När man jobbar med strain gage-instrument har man inte något att göra med

resistorerna utan då är det ändringar på resistorerna som är intressanta. I början är resistorerna viktiga för att balansera och få noll på utsignalen. Vout är proportionellt med

resistansändringen (∆R).

Vout ska vara så stor som möjligt, men det finns en gräns och denna gräns skapas av

strömmen som går in i givaren. Bryggans normala inspänning är mellan 1-15 V och man skall vara noggrann och veta hur stor Vin som valts, eftersom Vout direkt är proportionellt mot Vin. Om inspänningen är stor, går mycket ström i givare, då högre ström ger värme. Om instrumentet ger en fixerad Vin, är det smart att välja ett lågt värde på Vin för att minska

värmeeffekten. Om man sätter ”OF” (att ta bort Vin) och det fortfarande finns ett värde på

Vout, kan det bero på elektriskt brus. För att testa problemet med elektriskt brus kan man sätta ”PÅ” eller ”OF” och läsa av värdet.

I den fullständiga bryggan kan ibland vara istället kvartsbrygg, halv- och fullbrygga, så för att få exakta värden måste de (resistorer eller givaren) vara stabila. Om det är bara en gren som har aktiv givare, skall de andra tre resistorer ha toleransen ± 0.01 % och

temperaturkoefficienten en miljondel ° C (1 ppm/° C). Det måste också tas hänsyn till strömmen som värmer upp resistorerna. Om resistorerna inte kan nå den karaktäriska värmeförlust skapas instabilitet i kretsen. Ett annat problem kan vara ledningen som ger resistans till strömmen.

För att kompenseraförtemperaturen genom ledningen i kvartsbryggan sätter man en extra

ledningfrån Vout till (givare). och skall vara lika, men det krävs inte att de ska vara

ekvivalenta med (givare) och, utan (givare) och skall vara lika.

(14)

4.4. Instrumentförstärkaren

INA125 är en lågeffektförstärkare med hög noggrannhet på förstärkning och

referensspänning. Instrumentförstärkaren innehåller två inbyggda förstärkare A1 och A2 som

är identiskt icke-inverteradeoch fungerar som en spänningsförstärkare åt inkommande

signaler från Wheatstonebrygga som i sin tur sköter obalansen från givarna som är kopplade till bryggan. I figur 8 ses fyra seriekopplade resistorer som har varsin VREF som varierar i värde på Uut beroende på resistorernas motståndsvärde, vid pin 4 finns 10 V som utspänning. RG är för stabilisering och temperaturdrift. Om RG ges ett lågt värde så ska en resistans från ledningarna förekomma, låg RG ger hög ”Gain” och det gör ledningsresistansen viktig. I INA 125 finns en typisk summatorkoppling som anger olika värden i V1, V2 och V3. Spänningsnivåerna är lasertrimmade i syfte att ge lågt intialfel och låg temperaturdrift. Transistorns funktion är att förbättra utspänningen från op-förstärkaren. Denna

externa transistor är alltså för att få utspänningen från INA 125( pin 4:an).

Inputen i INA 125 är skyddad för spänning upp till   V och från 120 A till 190  Inputerna är skyddade även när strömmen är avstängd.

Instrumentförstärkaren är lasertrimmad för låg kompensationsspänning (250 V), låg kompensationsdrift (2 V/C) och hög ”common-mode rejection” (100 dB vid

G = 100). Den arbetar med enkelmatning mellan + 2.7V och + 36V eller dubbelmatning mellan  1.35V och  18V.

Förstärkningen kan varieras från 4 till 10 000 gånger, genom val av lämplig resistans på resistorn RG kan förstärkningen varieras från 4 till 10 000 ggr. Dessa värden visas i tabell 1. Jag har valt RG till 60 ohm eftersom förstärkaren ska förstärka 1000 ggr. RG kopplades mellan ben 8 och 9. (Se figur 8)

(15)

Tabell 1: förstärkningen i INA 125 enligt RGs värden

(16)

4.5. AVR ATmega 16

Processorn innehåller de flesta av de funktioner som vår konstruktion består av: digitala in- och utgångar, minne (1Kb SRAM, 512 byte EERAM och 16 Kb flash programminne).

In- och utgångarna är grupperade i fyra block (A-D) om åtta portar:

 A-blocket består av A/D-ingångar men de går även att programmera som digitala in- eller utgångar, vilket jag valde att göra. Jag använde port A0 (PA0) för att mäta spänningen från förstärkaren.

 B-blocket är digitala in- eller utgångar. B-portarna styr D/A–omvandlarens funktion.  C-blocket är digitala in- eller utgångar. C-portarna användes endast för testutskrifter till en display.

 D-blocket är även de in- eller utgångar. D-portarna fungerar i detta fall som ingång för knappen.[7]

(17)

4.6. A/D-omvandlare

A/D-omvandlare och D/A-omvandlare är en mycket viktigt klass av kretsar. Givare från fysikaliska förlopp, såsom temperatur, ljud, tryck, ljus osv. ger analoga utsignaler som måste omvandlas i A/D-omvandlare för att kunna behandlas i datorer.

En Analog/Digital-omvandlare, A/D-omvandlare (eng. A/D Converter, ADC) omvandlar ett analogt ingångsvärde. I mikroprocessorn Atmega 16 ingår en A/D-omvandlare.

A/D- och D/A-omvandlare förekommer i egna kapslar, men en kanske ännu viktigare förekomst är i mikrostyrkretsar, signalprocessorer och ASIC. Se kapital 10 i [4].

4.7. D/A-omvandlare

En Digital/Analog-omvandlare, D/A-omvandlare (eng. D/A Converter, DAC) omvandlar, som namnet säger, ett digitalt ingångsvärde till ett analogt utgångsvärde. En digital insignal kan tillhöra antingen ett rent positivt talområde eller ett talområde med både positiva och negativa tal. En analog utsignal kan vara en spänning eller en ström proportionell mot ett digitalt värde. Se kapital 10 i [4].

4.7.1. 10-bitars D/A-omvandlare (MAX 515)

MAX 515 strömsnål 10-bitars D/A-omvandlare avsedd för enkel matningsspänning. Den har ett seriellt interface som är kompatibelt med SPI, QSPI och Microwire.

MAX 515 kräver extern referens och har fast förstärkning 2.

Egenskaper 1.1.1.1.1.1 MAX 515 Matningsspänning: +5 V ±10 % Strömförbrukning

enkel matning: 140 µA typ

dubbel matning: µA typ

Settling time: 25 µs typ

Olinjäritet: ±1 LSB max

Slewrate: 0,25 V/µs typ

Temperaturområde: 0 till +70 °C

(18)

Figur 10: MAX 515 Typical Operating Circuit

4.8. EEPROM

EEPROM, (eng. Electrically Erasable PROM) är ett läsminne och skrivminne som kan programmeras och raderas elektriskt i den aktuella tillämpningen. Radering och

programmering sker i Atmega16 processorn byte-vis. Vi använder 10 bitar och lagrar dessa i en integer. Genom att kombinera 2 Bytes kan de sättas ihop till en integer.[4]

4.9. Kapsling

Moderna elektronikkomponenter fordrar en funktionsanpassad förpackning. Kapslingar erbjuder kostnadsbesparning genom enkel tillverkning och bra försäljningsargument. Kapslingen gör för det mesta att modulen blir lätt att installera och byta ut.

4.10. CE- märkning

Den som tillverkar eller sätter en maskin eller annan produkt som omfattas av

maskindirektivet eller något av de andra produktdirektiven på marknaden är ansvarig för att maskinen är CE-märkt. Att CE-märka en utrustning innebär bl.a. att man skall:

 utföra riskanalys utifrån tillämpbart direktiv

 upprätta en teknisk dokumentation i enlighet med kraven  skriva en försäkran om överensstämmelse

(19)

5.

Genomförande

Efter att jag sökt tillräcklig information och läst teorien om de moment och termer som ingår i uppgiften, strukturerade jag upp uppgiften i tre delar i följande ordning:

1. Rita kanalen i Multisim så att den fungerar på det sätt som krävs i uppgiften.

2. Att lagra spänningen i ett minne på kretskortet via programmering av mikroprocessorn. 3. Att göra layouten för det färdiga kopplingsschemat i Ultiboard.

Figur 11: Flödesdiagram över arbetet

5.1. Verktyg

Som det visats i figur 11 användes följande verktyg för att genomföra arbetet:  Multisim

 C –Programmering  Ultiboard

(20)

I första hand jobbade jag mycket i Multisim för att åstadkomma och uppfylla de kraven för kanalen som skulle fungera för kvartsbrygga, halv- och fullbrygga. Här krävs det noggrannhet och tålamod, för att genomföra uppgiften enligt de uppsatta kraven. Här nedan i figur 12 har jag visat hur det ska göras för att kunna växla mellan kvarts-, halv- och fullbrygga. I fallet kvartsbrygga skall switchen S1 vara öppen vid tre ledningar och sluten vid två ledningar och det ska bara vara givare som kopplas med andra de tre resistorerna (R1, R2 och R4).

Switcharna S2, S3, S4 och S5 ska vara slutna och S6, S7 och S8 öppna. I fallet halvbrygga skall givare1 och givare2 kopplas, och S1 och S2 vara öppna vid tre ledningar och slutna vid två ledningar.

Switcharna S3, S6 och S8 skall vara öppna och S4 och S5 slutna. (Figur 12 visar i nuvarande läget en halvbrygga). För fullbrygga skall S1, S2, S6, S7 och S8 vara slutna och S3, S4 och S5 öppna, vilket betyder att de fyra givarna ska kopplas. Figuren nedan är till för att enkelt visa konfigurationen av bryggan vid kvarts-, halv- och helbrygga där det ingår givare med både två och tre ledningar. Efter att jag fick ordning på detta, började jag utveckla

mikroprocessorn via C-programmering. Efter testkörning av mjukvaran började jag komplettera kopplingsschemat i Multisim med den där delen som höll på under

programmering (koppling mellan Atmega 16 och 10-bitars D/A-omvandlare MAX 515). Under det tredje steget, efter att kopplingsschemat transformerades/exporterades från Multisim till Ultiboard, importerades nätlista för att göra layout och sedan tillverka kretskortet.

Vrefplus

Kvartsbrygga, halv- och helbrygga

S5 S8 Key = H Key = E Givare1 350ohm R1 Givare4350ohm 350ohm S1 S2 Key = C

vinminus Key = A Vin+ Vinplus

S6 S4 R2 350ohm Key = F Givare2 350ohm Key = D Givare3 350ohm S3 R4 350ohm Key = B S7 Key = G Vref0

(21)

5.2. Kretsschema

För att rita kretsschema användes programmet ”Multisim”. Det är ett elektroniskt

simuleringsprogram som kan användas för att simulera analoga och digitala kopplingar. Innan jag kunde börja med att rita kretsschema var jag tvungen att skapa alla komponentsymboler, eftersom deras storlek och utseende inte fanns i Multisim. Genom framtagningen av datablad kunde de olika komponenternas symboler skapas i Creat Component. Där det väljs layout only (foot print), eftersom de inte skulle simuleras. Det var viktigt att ange rätt antal nummer av ben, i vilken ordningsnummer de kommer och deras package type, eftersom de skall exporteras senare till programmet Ultiboard för att kunna konstruera kretskort. Efter att jag skapade alla komponentsymboler, ritade jag kretsschemat i Multisim. Ex. INA 125, resetkort (DS1233), spännigsregulator (L7805CV), MAX 515, transistor BC547B, 4 pol DIPswitch osv. Vissa av dessa komponenters package type fanns inte med i Multisim. Deras package type skrevs ändå in i Creat Component, för att kunna skapa de senare under samma namn i Ultiboard.

Jag har använt kondensatorer för att förhindra störningar på matningsspänningen. Genom att koppla kondensatorer mellan matningsspänning och jord, kan störningar på matningsspänning som påverkar funktionen i kretsschemat förhindras.

(22)

5.2.1. Bryggans balansering

Denna koppling som redovisas nedan ingår i kopplingsschemat och det är för att balansera bryggan. Matningsspänningen är + och -15 då spänningen över R9, R8 och R10 blir 10 volt. Potentiometern R8 kan justeras 10 varv tills noll volt fås av U1 (balansering). Förstärkarens utgång skall kopplas till ben 6 (Vin +) i instrumentförstärkare INA125.

Figur 14: Bryggans balansering

5.2.2. Kopplingschemat med instrumentförstärkare INA125

I nedanstående ritningen har jag kopplat instrumentförstärkaren. I den kopplingen skall switchen J1 vara öppen vid tre ledningar och sluten vid två ledningar, J2, J3 slutna och J3 öppen för kvartsbrygga. För halvbrygga J1 och J4 slutna vid två ledningar och öppna vid tre ledningar och J2 skall vara öppen och J3 sluten. I fallet fullbrygga skall de fyra givarna kopplas till Vref +, Vref 0, Vin + och Vin -.

V1 V2 R6 15V 15V 47.5kOhm_1% V3 R5 4 2 1V 47.5kOhm_1% U1 6 R7 3 R10 20.0kOhm_1% XMM1 7 1 8 OPA177GZ 10kOhm_5% R8 50% Key = a 20_LIN R9 20.0kOhm_1%

(23)

Figur 15: Kopplingsschemat med instrumentförstärkare INA 125 C1 V1 15V 100nF Q1 BC547BP V2 15V C2 U2 100nF V+ sleep V-Vref_OUT IAref V4 V3 Vref_plus G1_b1 Givare1 350ohm R6 350ohmR1 Vin+ Vin- RG Vref_10v Vref_5v Vref_2,5v Vref_BG Vref_COM sense V0 RG1 Vout_p 15V 15V 47.5kOhm_1% INA125 4 J4 G1_b2 R7 Vinminus J1 Key = B 20.0kOhm_1% R10 2 Key = C 47.5kOhm_1 % U1 3 6 RG G1_b3 7 1 R5 50% Key = a 20K_LIN 8 OPA177GZ J2

Key = D 60ohm Vout_m

G2_b1 Vinplus R8 R4 350ohm 10.0kOhm_1% Givare2 350ohm R9 20.0kOhm_1% R2 350ohm G2_b2 J3 Key = E G2_b3 Vref0

Givare_1 350ohm Givare3

350ohm

Givare4

(24)

5.2.3. Microprocessorn och D/A –omvandlaren som kopplats

Här utvecklade jag den föregående kopplingen genom att koppla mikroprocessorn ATmega 16 och 10-bitars D/A-omvandlare (MAX 515). Utspänningen från ben 10 på

instrumentförstärkaren ska kopplas till både mikroprocessorn (ATmega 16 som har en inbyggd A/D-omvandlare) och differentialförstärkare. Utspänningen på ben 7 i D/A-omvandlare kopplas också till den andra ingången på differentialförstärkaren. Syftet med användningen av differentialförstärkare är att förstärka spänningsskillnaden mellan

ingångarna. I figur 17 visas definitionen för differentialförstärkare som tagits från sidan 56 i [3].

Figur 16: Microprocessorn och D/A –omvandlaren som kopplats

C1 V1 15V 100nF Q1 BC547BP V2 15V C2 U2 100nF V + sleep V -V re f_ O U T I Are f Vref_plus G1_b1 Givare1 350ohm Vref_10v Vref_5v Vref_2,5v Vref_ BG Vref_ COM sense V 0 RG1 R12 V4 V3 Vi n+ Vin- RG 47kOhm_5% 15V 15V R6 47kOhm_5% R1

350ohm Vout_p R11 4 U5A

2

INA125 47kOhm_5% R13 1 Vout

4 Vinminus J4 3 G1_b2 20.0kOhm_1% R10 R7 47kOhm_5% 47kOhm_5% LT1013CN8 8 2 J1 Key = B Key = C U1A R14 47kOhm_5% 1 RG 3 V6 V7 LT1013CN8 G1_b3 8 J2

Key = D 60ohm Vout_m

Vinplus R5 50 % Key = a 20K_LIN 15V 15V G2_b1 R8 R4 350ohm 10.0kOhm_1% Givare2 350ohm R9 20.0kOhm_1% R2 350ohm G2_b2 U3 J3 Key = E PB0_(X CK/ T0 ) (ADC0 )_P A0 U4 G2_b3 P B1 _ (T1 ) PB2_(INT2/ AIN0 ) Vref0

Givare_1 350ohm Givare3

350ohm PB3_ (O CO/ AI N1) P B4 _ (S S ) PB5_(M O SI) PB6_(MIS O ) (ADC1 )_P A1 (ADC2 )_P A2 (ADC3 )_P A3 (ADC4 )_P A4 (ADC5 )_P A5 (ADC6 )_P A6 DI N V DD D/A- SCLK omvandlareVOUT CS M AX 515 RE FI N C4 DOU T AG ND Givare4

350ohm Givare_2350ohm

U7 RE S E T P B7 _ (S CK) RE S E T V cc G N D V CC GND XTAL2 XTAL1 PD0_(RX D) PD1_(TX D) PD2_(I NT0) PD3_(I NT1 ) PD4_(O C1 B) AtMega 16 (ADC7 )_P A7 ARE F G ND1 AV C C +5 v DA-omvandlare 100nF U6 DS1233 (TOS C2 )_P C7 (TOS C1 )_P C6 (TDI)_ P C5 LM7805CT V re g I N O U T (TDO)_ P C4 Knapp PD5_(O C1 A) P D6 _ (I CP ) (TM S)_ P C3 (TCK)_P C2 (S DA)_ P C1 (S CL)_P C0 (O C2)_P D7 C5 C3 330nF 100nF Key = F J5 AtMega16PI

(25)

5.2.4. LT1013CN8 som innehåller två OP –förstärkare

Den här kopplingen är samma koppling som föregående med skillnaden att jag i denna har använt kapsel LT1013CN8 som innehåller två op-förstärkare. Detta har jag genomfört för att

få mer plats på kortet. Kapseln har åtta ben, och footprint har gjorts enligt datablad i elfa2.

Figur 18: LT1013CN8 som innehåller två OP –förstärkare

C1 V1 15V 100nF U6 Q1 BC547BP V2 15V C2 OUTPUT_A V -IN_A OUTPUT_B +IN_A -IN_B U2 V- +IN_B 100nF V+ sleep V-Vref_OUT IAref Vref_10v Vref_5v Vref_2,5v Vref_BG Vref_COM se nse V0 RG1 LT1013CN8 R12 V4 V3 Vref_plus 47kOhm_5% G1_b1 R6 47kOhm_5% R1 350ohm Vin+ Vin- RG Vout_p R11 15V 15V Givare1

350ohm INA125 47kOhm_5% R13

J4 Vout G1_b2 R7 Vinminus 47kOhm_5% J1 Key = B 20.0kOhm_1% R10 Key = C 47kOhm_5% RG R14 47kOhm_5%

G1_b3 J2Key = D 60ohm Vout_m

Vinplus R5 50% Key = a 20K_LIN G2_b1 R8 R4 350ohm 10.0kOhm_1% Givare2 350ohm R9 20.0kOhm_1% R2 350ohm G2_b2 U3 J3 Key = E PB0_(XCK/T0) (ADC0)_PA0 U4

G2_b3 PB1_(T1) PB2_(INT2/AIN0) (ADC1)_PA1 DIN VDD

Vref0

Givare_1 350ohm Givare3

350ohm PB3_(OCO/AIN1) PB4_(SS) PB5_(MOSI) PB6_(MISO) (ADC2)_PA2 (ADC3)_PA3 (ADC4)_PA4 (ADC5)_PA5 (ADC6)_PA6 SCLK D/A- omvandlar e VOUT CS MAX 515 REFIN DOUT AGND C3 Givare4

350ohm Givare_2350ohm

U5 DS1233 RESET Vcc GND PB7_(SCK) RESET VCC GND XTAL2 XTAL1 PD0_(RXD) PD1_(TXD) AtMega 16 (ADC7)_PA7 AREF GND1 AVCC +5 v DA-omvandlare 100nF U1 LM7805CT (TOSC2)_PC7 (TOSC1)_PC6 (TDI)_PC5 Vreg IN OUT PD2_(INT0) PD3_(INT1) PD4_(OC1B) Knapp PD5_(OC1A) PD6_(ICP) (TDO)_PC4 (TMS)_PC3 (TCK)_PC2 (SDA)_PC1 (SCL)_PC0 (OC2)_PD7 Ci 330nF Co 100nF Key = F J5 AtMega16PI

(26)

5.2.5. Summatorinverterare

Denna koppling har jag gjort för att spänningen i A/D-omvandlare skall vara mellan noll och + 5 volt. Både A/D-omvandlare i mikroprocessorn och D/A-omvandlare kan bara klara av spänningen mellan 0 och + 5 volt. U1A är en summator och inverterare och U2A är en inverterare. Den stabila referensspänningen (Vref + 10 volt) adderas till spänningen från instrumentförstärkaren. Summaspänningen spänningsdelas med R6 och R7. Spänningen som delas går in i A/D-omvandlare. Används sidan 46 i [5].

R3

Spänningen som kommer ut 10kohm

från instrumentförstärkare. 4 R1 R5 10kohm R4 4 V1 12V V2 12V IO1 IO2 30kOhm_5% 20kohm 2 U1A 1 3 8 10kohm 2 U2A 1 R2

Här kopplats till spänningen 10 volt (Vref+) på ben 16 i instrumentförstärkare.

TL062CP 3 8 TL062CP R6 10kohm R7 10kohm Spänningsdelning, spänningen går in i A/D-omvandlare. IO3 Figur 19: Summatorinverterare

5.2.6. Kapsel som innehåller 2 OP –förstärkare

Samma koppling som ovanstående, men för att spara plats på kortet, har jag använt kapsel TL082 som innehåller 2 op-förstärkare. Ovanstående figur har ritats för att utförandet ska bli mer förståeligt.

Spänningen som kommer ut från instrumentförstärkare. R1 R3 10.0kOhm_1% V2 15V U1 V1 15V IO2 30kOhm_5% R2 1out 1in- 1in+ Vcc+ 2out 2in- R5 20.0kOhm_1% Vcc- 2in+ TL082 R6 10.0kOhm_1% IO1

R4 10.0kOhm_1% Spänningsdelning, spänningen går in i A/D-omvandlare.

Här kopplats till spänningen 10 volt (Vref+) på ben 16 i instrumentförstärkare.

10.0kOhm_1% R7

10.0kOhm_1%

(27)

5.2.7. Kopplingschemat efter att kompletterat med kopplingen i figur 20 Nu har jag kompletterat kopplingsschemat genom att koppla in den ovanstående kopplingen (figur 20) innan ingången till A/D-omvandlare. Nu är dags att förbereda kopplingsschemat för att transformera/exportera till Ultiboard. Istället för de fyra switchar har jag använt en 4 pol DIPswitch, och därefter gjorde jag footprint med samma namn och bennummer så att det ska stämma överens med den som görs i Ultiboard. Spänningskällor, jordpunkter och givarna har jag tagit bort och kopplat fyra kontakter, varje kontakt med fyra ben. (Se bilaga 2 sidan 2)

Figur 21: Kopplingschemat efter att kompletterat med figur 20

C1 V1 15V 100nF U6 Q1 BC547BP V2 15V C2 O U TP U T_ A -I N_ A +I N_ A U2 V -V O U TP U T_ B -I N_ B +I N_ B 100nF V + sl ee p V -V re f_ O U T I Are f V4 V3 Vref_plus G1_b1 Givare1 350ohm R6 47kOhm_5% R1 350ohm Vi n+ Vi n- RG Vre f_10v Vre f_5v V re f_ 2, 5v Vre f_ BG V re f_ CO M se ns e V 0 RG 1 LT1013CN8 R12 47kOhm_5% Vout_p R11 15V 15V INA125 47kOhm_5% R13 Vout G1_b2 R7 Vinminus J4 J1 Key = B 20.0kOhm_1% R10 47kOhm_5% Key = C 47kOhm_5% RG R1447kOhm_5%

G1_b3 J2Key = D 60ohm Vout_m Vinplus R5 50 % Key = a 20K_LIN G2_b1 R8 R4 350ohm 10.0kOhm_1% R9 20.0kOhm_1% R2 350ohm Givare2 350ohm G2_b2 U3 J3 Key = E PB0 _ (X CK/ T0 ) G2_b3 P B1 _ (T1 ) PB2 _ (I N T2 / AI N0 ) (AD C0 )_ P A0 (ADC1 )_ P A1 (ADC2 )_ P A2 (ADC3 )_ P A3 (ADC4 )_ P A4 (ADC5 )_ P A5 (AD C6 )_ P A6 U4 DI N V DD Vref0

Givare_1 350ohm Givare3

350ohm

Givare4

350ohm Givare_2350ohm

P B3 _ (O CO / AI N1 ) P B4 _ (S S ) PB5 _ (M O SI ) PB6 _ (MI S O ) PB7 _ (S CK) RE S E T D/A- SCLK omvandlareVOUT CS M AX 515 RE FI N DOU T AG ND C3 U5 DS1233 RE S E T V cc G N D (ADC7 )_ P A7 ARE F G N D1 AV C C +5 v DA-omvandlare 100nF Knapp VCC G ND X TA L2 X TAL1 PD0 _ (RX D) PD1 _ (TX D) PD2 _ (I N T0 ) PD3 _ (I N T1 ) PD4 _ (O C1 B) P D5 _ (O C1 A) P D6 _ (I CP ) AtMega 16 LM7805CTU1 (TO S C2)_P C7 (TO S C1)_P C6 (TDI )_ P C5 (TDO )_ P C4 (TM S )_P C3 (TC K)_ P C2 (S DA)_P C1 (S CL)_ P C0 (O C2 )_ P D7 V re g I N O U T Ci 330nF Co 100nF Key = F J5 AtMega16PI R15 30kOhm_5% U7 1 O U T V c c + 1I N- 2OU T 1I N+ 2I N-V cc - 2I N+ R19 R20 R17 10.0kOhm_1% TL082 10.0kOhm_1% 10.0kOhm_1% R18 R16 20.0kOhm_1% R21 10.0kOhm_1% 10.0kOhm_1%

(28)

5.3. Att programmera mikroprocessorn

Syftet med detta är att kunna spara spänningen i ett minne på kretskortet som via en

tryckknapp kan nollställa bryggan. I detta fall har jag valt att använda AtMega 16 PI (som har en inbyggd A/D-omvandlare) samt en 10-bitars D/A-omvandlare (MAX515).

Via att läsa datablad och söka information genomfördes först kopplingen mellan dem och följande signaler programmerades: SCLK, CS, MOSI. (Se bilaga 1 för kod)

V1

5V

DS1233

Kopplingen mellan AtMega 16 och 10-bitars D/A-omvandlare(MAX 515)

U2 PB0_(XCK/T0) (ADC0)_PA0 PB1_(T1) PB2_(INT2/AIN0) PB3_(OCO/AIN1) PB4_(SS) PB5_(MOSI) PB6_(MISO) PB7_(SCK) RESET (ADC1)_PA1 (ADC2)_PA2 (ADC3)_PA3 (ADC4)_PA4 (ADC5)_PA5 (ADC6)_PA6 (ADC7)_PA7 AREF GND1 AVCC U1 DIN VDD SCLK D/A- VOUT CS omvandlare REFIN MAX515 +5 V DOUT AGND C3 VCC GND XTAL2 XTAL1 PD0_(RXD) PD1_(TXD) PD2_(INT0) PD3_(INT1) PD4_(OC1B) AtMega 16 100nF DA-omvandlare (TOSC2)_PC7 (TOSC1)_PC6 (TDI)_PC5 (TDO)_PC4 PD5_(OC1A) PD6_(ICP) (TMS)_PC3 (TCK)_PC2 (SDA)_PC1 (SCL)_PC0 (OC2)_PD7 AtMega16PI U3 GND Vcc RESET

(29)

5.4. Kortlayout

Innan jag började med konstruktionen skapade jag de komponentsymboler som saknade package type. De komponenter som saknade symboler package type ritades i Ultiboard med hjälp av Component Wizard enligt datablad. Ultiboard är ett program som går ut på att skapa en design genom att importera en nätlista från Multisim.

Först skapade jag fyra kontakter (VHD1x4), tre resistorer med 350 ohm (högt precisionsmotstånd 0,1 %) som var större än vanliga resistorer i Multisim och en

4DIPswitch enligt deras mått i datablad. Dessa komponenter sparades i library i Ultiboard. Som tidigare nämnt skapade jag i Multisim footprints för dessa komponenter med samma namn och ordningsnummer på pinnarna.

När jag importerade nättlista ritade jag i första hand kortet enligt de angivna måtten (Se bilaga 2 sidan 10) och ändrade de komponenterna till dem som sparade i library Ultibord. Jag försökte placera komponenterna på så sätt att få mindre ledningskorsor. Jag tog tjockleken 0,7 mm på de ledningarr som gick mellan hållen på komponenterna och 1,0 mm på de övriga. Vid korsning av ledningar användes gröna ledningar (copper top) som bro genom att placera via på bägge sidor av ledningar.

Här nedan har jag angivit namnen på de fyra kontakterna och på deras ben.(Se tabellen nedan) Ordningsben är samma i både Multisim och Ultiboard.

J5(kontakt 1) J2(kontakt2) J1(kontakt3) J4(kontakt4)

Vref+ Givare1_ben1 V+(15V) Givare2_ben1

Vref0 Givare1_ben2 V-(15V) Givare2_ben2

Vin+ Givare1_ben3 Vout+ Givare2_ben3

(30)

Här nedan i figur 23 har visats en bild på layouten, resterande bilder kan ses i bilaga 2.

(31)

5.5. Test av programmeringen

I bild 24 kan man se kopplingen mellan Atmega16 och 10-bitars D/A-omvandlare (MAX 515) på Laborationsplattan AVR STK500 som gjordes enligt kopplingen i figur 22.

Resultatet av testskörningen kan på ett tydligt sätt ses i fotograferade bilden (figur 24), när mätvärdet 287 skickades erhölls spänningen 1,3 V. Om man skickar 1023 får man 5 V, för 512 får man hälften alltså 2,5 V. Genom att köra på plattan testades funktioner för A/D-, D/A-omvandlaren, minnet och knappen. Programkoden kan ses i bilaga 1.

Figur 24 : Programmering och test kör av kopplade 10-bitars D/A-omvandlare(MAX 515) och AtMega 16 på Laborationsplattan AVR STK500

5.5.1. Programmets funktion

[detta sker i main( )]

1. programmet laddar föregående EEPROM -värde då Atmega16 startas. 2. Om någon trycker på knappen sker kallibrering.

3. Analog signal på PORTA (pinne 0) A/D omvandlas till 10 bitars digitalt värde (en unsigned int).

(32)

[detta sker i main_run( )]

5. Kretsen aktiveras (CS får noll volt)

6. Alla bitar skickas en och en (från msb3 till lsb4).

7. Digitala värdet skiftas tillbaka genom att skifta in 2 nollor från vänster (xxxxxxbbbbbbbbbb)

8. Digitala värdet lagras i EEPROM -minnet, detta minne kan bara lagra tecken (char), (1 st. unsigned int lagras som 2 st unsigned char, detta fungerar eftersom 1 st. int är 16 bitar och 1 st. char är 8 bitar).

9. Programmet går till punkt 2.) 5.5.2. Flödesdiagram

(33)

5.5.3. Testscenario

Syftet med testet är att provköra kopplingarna genom att skicka in spänning som kan lagras i minnet. När spänning är lagrad kan den jämföras med en ändrad spänning som kan ses som obalans. Vridresistansen används i det här testet för att ge olika spänningar.

1.) Ha en vridresistor (potentiometer) som spänningsdelare,

mittenledaren kopplad till PORTA pinne 0 blir signalen (bryggans obalans). 2.) Programmet lagrar denna spänning genom tryck på knappen.

3.) Avläs nu värdet, (det är spänningen som balanserar bryggan)

4.) Vrid på vridresistorn (detta motsvarar obalans i bryggan, observera att D/A-omvandlaren fortfarande sänder ut värdet då knappen trycktes in).

5.) Tryck på knappen (den nya spänningen lagras)

6.) Stäng av och sätt på processorn för att visa att nuvarande värde från EEPROM används efter omstart.

5.5.4. EEPROM-minnet

EEPROM-minnet sitter i AtMega16 och lagras genom ett tryck på en knapp. Adressering görs bytevis. Mikroprocessorn programmerades så att när en spänning avläses via en A/D-

omvandlare lagras den permanent i EEPROM-minnet och läses in i en D/A-omvandlare. D/A- omvandlarens spänning ligger kvar som ett minne tills ett nytt värde läses in till D/A-

omvandlare.

1.) Avläsning och lagring av mätvärde görs till adressen 10 och 11 (Byte 10 och Byte 11). 2.) Funktioner för Bytelagring ges från Atmega16 manualen.

(34)

Namn Leverantör Artikelnummer Pris/st Antal(st) Resistans 47 kΩ Elfa 6074181 2,53 6 Resistans 20 kΩ Elfa 6073746 2,53 3 Resistans 10 kΩ Elfra 6073423 2,53 6 Potentiometer 20 kΩ Elfa 6467344 18,00 1 INA125PA:IC Farnell 67290696 67,50 1 Kondensator 330nf=0,33 uf Elfa 6570303 6,85 1 Kondensator 10nf=0,1 uf Elfa 6568794 6,19 4 Transistor BC547B Elfa 7103922 1,53 1

10-bitars D/A (MAX515) Elfa 7324098 94,50 1

AtMega 16PI Elfa 7367246 97,00 1

4 Pol DIP switch Farnell 9471570 8,13 1

Resistans 350 Ω Farnell - - 4

Resistans RG=60,4 Ω Elfa 6070890 2,53 1

Kontakter (MKDSO 2,5/4 –L) Phoenix

contact 1707234 - 2

Kontakter (MKDSO 2,5/4 –R) Phoenix

contact 1707247 - 2 Spänningsregulator L7805CV Elfa 7326242 11,10 1 LT1013CN8 Elfa 7310345 52,60 1 Resetkort (DS1233) 5 V Elfa 7376759 23,20 1 TL082 Elfa 7311822 6,28 1 Kretskort Phoenix contact BP 05434 - 1 Låda Phoenix contact PA 66-FR - 1 Resistans 30 kΩ Elfa 6070528 2,53 1

(35)

6.

Prototyp

När jag kom fram till det riktiga kopplingsschemat och ritningen, bestämde jag mig först för att genomföra hela kopplingen på den vita plattan (Laborationsplattan AVR STK500) innan jag skulle tillverka själva kortet (etsa). Då kopplade jag steg för steg enligt

kopplingsschemat på plattan och testade var och en i taget. Jag fick göra om kopplingen flera gånger tills jag fick ordning på detta.

Efter att kortet etsades fick jag borra det för hållmontering, för det mesta fick jag borra med diametern 0,9 mm och bara på de fyra kontakter som hade totalt 16 hål fick jag borra med diametern 1,2 mm.

Efter att jag blev färdigt med borrningen av hela kortet, började jag att löda det. Istället för att löda kapslar direkt på kortet, lödde jag socklar med motsvarande ben som kapslar, exempelvis lödde jag en sockel med 40 ben (2 x 20) och därefter förde jag in mikroprocessorn ATmega

16 i sockeln. Prototypen tillverkades och företaget var nöjd medden.

7.

Slutsats

Jag lärde mig de praktiska delarna i de teorier jag studerat på ingenjörsutbildningen under projektprocessen. Det var mycket lärorikt att studera inom elektronik. Examensarbetet är för mig den mest spännande delen av ingenjörsprogrammets utbildning och den ledde till ökat självförtroende.

Trots att jag var intresserad av projektet stötte jag på tre särskilda utmaningar, som en konsekvens av konstruktionens flerfaldiga funktioner.

Den första utmaningen hade att göra med att varje kanal konfigureras som kvart-, halv- och helbrygga. Samtidigt borde den växla trådtöjningsgivare med både två ledningar och tre ledningar i fallet kvarts- och halvbrygga. Detta tog ganska lång tid att få ordning på. Den andra utmaningen uppkom då jag jobbade med mikroprocessorn.

D/A-omvandlare och mikroprocessorn kunde bara klara positiva spänningar mellan 0 och 5 volt. Matningsspänningen var +/- 15 V så jag fick göra om den så att den klarar av spänningar mellan -15 och + 15 V.

Det tredje problemet var det begränsade utrymmet i kortet. Komponenterna borde placeras så att mindre täthet mellan ledningar erhålls, vilket innebär att ha färre korsningar. Samtidigt var det krav att alla ledningar skulle vara på samma sida av kortet.

Att jobba med Multisim och Ultiboard under projektprocessen gjorde mig intresserad av att jobba inom detta område i framtiden.

(36)

8.

Referenser

Följande referenser har jag använt mig för detta examensarbete.

8.1. Internet

http://www.vishay.com/doc?11092 (Hämtades figurer 2 och 3, 2006-04)

http://www.vishay.com/brands/measurements_group/guide/ta/Sgms/sgmsndex.htm

(Hämtades figur 5 samt information om Wheatstonebrygga och dess balansering, 2006-04) http://eshop.phoenixcontact.de/phoenix/treeViewClick.do?UID=1861060&ParentUID=12356 9&reloadFrame=true (Söktes information om kontakter och låda, 2006-05)

http://www.rhopointcomponents.com/ (För sökning av komponenter, 2006-05)

www.google.se (Att söka allmänt)

(37)

8.2. Litteratur

1. Elektriska mätsystem och mätmetoder

Art.nr 7322

ISBN 91-44-02903-9

Lars Bengtsson och Studentlitteratur 20001, 2003

2. Mätgivare -Mätning av mekaniska storheter och temperatur

Art.nr 6212

ISBN 91-44-00054-5

Per-Erik Lindahl, William Sandqvist och Studentlitteratur 1996

3. Analog elektronik

Art.nr 7331

ISBN 91-44-01435-X

Bengt Molin och Studentlitteratur 2001

4. Digitala kretsar

Art.nr 3454

ISBN 91-44-01918-1

Lars Hugo Hemert och Studentlitteratur 1992, 2001

5. Formler och Fakta ELEKTROTEKNIK Bertil Näslund

EL

Ellära, Elektonik, Elmätteknik, Elkraftteknik

ISBN 91-7582-158-3

6. Modern elektronisk mätteknik Per Carlsson, 1997

ISBN 91-47-01098-3 7. Kompendium

Objektorienterad modulering (datorteknik) Kjell Mårdensjö

(38)

8.3. Datablad

Bra adress till många datablad exempelvis Atmega16, D/A-omvandlare(MAX515), Resetkort(DS1233) 5V .

www.elfa.se

Hämtades datablad till 4 pol DIP-switch

http://se.farnell.com/jsp/endecaSearch/searchPage2.jsp?Ntt=9471570&Nty=1&N=401&Ntk= gensearch

Här hämtade jag databladet för resistansen 350 ohm.(hög precitions motstånd 0,1 %) http://www.rhopointcomponents.com/genres/pdfs/miniohm.pdf

(39)

9.

Bilagor

Bilaga 1: Programkod

(40)

Bilaga 1: Programkod

Koden för test av D/A –omvandlare

// main.h

#ifndef MAIN_H #define MAIN_H #include <stdio.h>

#include <io_atmega16.h>

#include "io_ai.h" // nedskalad frekvens i lokal io_ai.h

#include <io_do.h> // utgång till D/A -omvändlare

#include <delay_loop.h> typedef struct { // variabler int mater; // objekt io_do CS; io_do MOSI; io_do SCL; delay_loop delayBitTransfer; }mainV;

void main_init( mainV *this );

void main_run( mainV *this, unsigned int data );

#endif

// main.c

#include "main.h"

//=== Global objects ==================================== /*=== main ==============================================

(41)

========================================================*/

void main_init( mainV *this ) {

io_do_init( &this->CS, &PORTB, IO_DO_D4 ); // CS

io_do_init( &this->MOSI, &PORTB, IO_DO_D5 ); // DIN

io_do_init( &this->SCL, &PORTB, IO_DO_D7 ); // SCLK

delay_loop_init( &this->delayBitTransfer, 1000, DELAY_LOOP_8MHZ ); // 1 ms

}

void main_run( mainV *this, unsigned int data ) // ska ta emot int från

A/D-omvandlaren {

// variabler

int i;

unsigned int mask;

mask = 0b1000000000000000;

io_do_reset( &this->CS ); // sätter på D/A omvandlare (aktiv vid

noll)

delay_loop_delay( &this->delayBitTransfer ); // säkerställer att

kretsen är aktiv

for( i=0; i<15; ++i )

{

io_do_reset( &this->SCL ); // clock är noll

if( mask & data ) // ex. [(1)0 0 0 0 0 0 1] [(1)0 1 0 1 0 1 1]

{ //MOSI = 1; io_do_set( &this->MOSI ); } else // ex. [(0)0 0 0 0 0 0 1] [(0)0 1 0 1 0 1 0] { //MOSI = 0; io_do_reset( &this->MOSI ); }

// (bit skrivs in)

io_do_set( &this->SCL );

delay_loop_delay( &this->delayBitTransfer ); // tid går åt för

skrivning av bit /////

mask = mask >> 1; // nästa bit läses in

}

io_do_set( &this->CS ); // stänger av D/A omvandlaren (aktiv vid noll)

}

int main(void) {

(42)

//unsigned int matvarde0; unsigned int matvarde0; main_init( &brygga );

while(1)

{

matvarde0 = 287; // testvärde, analog spänning

// skicka mätvärde0 till D/A-omvandling //main_run( &brygga, matvarde0 );

main_run( &brygga, matvarde0 << 2 );

/////

}

return 0;

}

Koden för test av EEPROM

#ifndef EEPROM_H #define EEPROM_H

#include <io_atmega16.h>

void EEPROM_write(unsigned int uiAddress, unsigned char ucData); unsigned char EEPROM_read(unsigned int uiAddress);

void EEPROM_write_int( unsigned int uiAddress, unsigned int uddata ); unsigned int EEPROM_read_int( unsigned int uiAddress );

(43)

include "eeprom.h" //#define dataSize 16

// EEPROM_write och EEPROM_read är standardfunktioner från ATmega16 manualen.

// EEPROM_write_int och EEPROM_read_int förenklar skrivning/läsning av integer.

// Skriva ett tecken till vald adress i EEPROM-minnet.

void EEPROM_write(unsigned int uiAddress, unsigned char ucData) {

/* Wait for completion of previous write */

while(EECR & (1<<EEWE))

;

/* Set up address and data registers */

EEAR = uiAddress; EEDR = ucData;

/* Write logical one to EEMWE */

EECR |= (1<<EEMWE);

/* Start eeprom write by setting EEWE */

EECR |= (1<<EEWE); }

// Läsa ett tecken från vald adress i EEPROM-minnet.

unsigned char EEPROM_read(unsigned int uiAddress) {

/* Wait for completion of previous write */

while(EECR & (1<<EEWE))

;

/* Set up address register */

EEAR = uiAddress;

/* Start eeprom read by writing EERE */

EECR |= (1<<EERE);

/* Return data from data register */

return EEDR; }

// ska lagra en int som har 16 bitar i EEPROM-minnet.

// måste maska av 8 bitar och tilldela till 2 separata bytes

// adressen verkar börja på 10 och räknas upp med ett för varje Byte.

void EEPROM_write_int( unsigned int uiAddress, unsigned int uddata ) {

// ska skriva tecken som löses ut //int ch, i, s;

int i;

//unsigned int udtal;

unsigned char uctal, uctal_msb; unsigned char maskning;

uctal = uctal_msb = 0;

maskning = 8;

i = 15; // [ (1) 1 1 0 1 0 1 1 1 0 0 0 0 0 0 ]

do {

(44)

if( (0x0001 << i) & uddata ) // bit i är satt

{

8 bitar.

//uctal |= ( 0x01 << (i-8) ); // här sätts bitar in i en byte.

uctal |= ( 0x01 << (i-maskning) ); // här skapas ett tecken med

// [15-8 == 7], när i == 8 ges i nästa varv [7-0 = 7] // här sätts bitar in i en byte.

}

else // bit i är inte satt

; if( i == 8 ) { uctal_msb = uctal; uctal = 0x00; maskning = 0; } --i; }while( i >= 0 );

EEPROM_write(uiAddress, uctal); // skriv tecken till EEPROM

EEPROM_write(uiAddress+1, uctal_msb); // skriv tecken till EEPROM

}

// Ska lagra en int som har 16 bitar i EEPROM-minnet.

// måste maska av 8 bitar och tilldela till 2 separata bytes

// adressen verkar börja på 10 och räknas upp med ett för varje Byte.

unsigned int EEPROM_read_int( unsigned int uiAddress ) {

unsigned int uidata, mask; unsigned char uc_msb, uc_lsb;

// ska skriva tecken som löses ut

// läs 2 Byte från minnet

uc_lsb = EEPROM_read( uiAddress );

uc_msb = EEPROM_read( uiAddress + 1 );

////////

// sätt ihop 2 Byte till en unsigned int

mask = uc_msb; // [ 0 0 0 0 0 0 0 0 x x x x x x x x ] mask = mask << 8; // [ x x x x x x x x 0 0 0 0 0 0 0 0 ] uidata = mask; mask = uc_lsb; // [ 0 0 0 0 0 0 0 0 y y y y y y y y ] uidata |= mask; // [ x x x x x x x x y y y y y y y y ] //////// return uidata; }

(45)

Det färdiga programmet // da.h #ifndef MAIN_H #define MAIN_H #include <stdio.h> #include <io_atmega16.h>

#include "io_ai.h" // nedskalad frekvens i lokal io_ai.h

#include <io_do.h> // utgång till D/A -omvändlare

#include <io_di.h> // läser av knapp

#include <lcd4.h> #include <delay_loop.h> #include "eeprom.h" typedef struct { // variabler int mater; // objekt io_do CS; io_do MOSI; io_do SCL; io_di knapp; io_ai analogIN0; lcd4 display; delay_loop delayBitTransfer; }mainV;

void main_init( mainV *this );

void main_run( mainV *this, unsigned int data );

#endif

include "main.h"

//=== Global objects ==================================== /*=== main ==============================================

(46)

OSBSERVERA Debug-format är DWARF-2, om du kör programmet i simulatorn skall du ladda main.elf.

========================================================*/

// här initeras objekt och variabler

void main_init( mainV *this ) {

io_do_init( &this->CS, &PORTB, IO_DO_D4 ); // CS

io_do_init( &this->MOSI, &PORTB, IO_DO_D5 ); // DIN

io_do_init( &this->SCL, &PORTB, IO_DO_D7 ); // SCLK

lcd4_init( &this->display, &PORTC, &DDRC, 4000, 50 );

// knapp;

io_di_init( &this->knapp, &PORTD, IO_DI_D7 );

PORTD = 0x80; // (pullup-resistor) [ 1 0 0 0 0 0 0]

// A/D omvandling

io_ai_init( &this->analogIN0, IO_AI_CHANNEL0 ); // en Analog ingång

per kort

1 ms

}

// fördröjning

delay_loop_init( &this->delayBitTransfer, 1000, DELAY_LOOP_8MHZ ); //

// main_run sköter D/A omvandlingen som sker i kretsen MAX515

void main_run( mainV *this, unsigned int data ) // ska ta emot int från

A/D-omvandlaren

{

// variabler

int i;

unsigned int mask;

unsigned char text[16];

// börjar från mest signifikanta biten

mask = 0b1000000000000000;

io_do_reset( &this->CS ); // sätter på D/A omvandlare (aktiv vid

noll)

delay_loop_delay( &this->delayBitTransfer ); // säkerställer att

kretsen är aktiv

for( i=0; i<15; ++i )

{

io_do_reset( &this->SCL ); // clock är noll

if( mask & data ) // ex. [(1)0 0 0 0 0 0 1] [(1)0 1 0 1 0 1 1]

{

//MOSI = 1;

(47)

// (bit skrivs in på stigande flank)

io_do_set( &this->SCL );

delay_loop_delay( &this->delayBitTransfer ); // tid går åt för

skrivning av bit /////

mask = mask >> 1; // nästa bit läses in

}

io_do_set( &this->CS ); // stänger av D/A omvandlaren (aktiv vid noll)

// utskrift av värde till LCD (vid test)

sprintf( text, "Varde:%d ", data >> 2 );

lcd4_cup_row1(&this->display); //LCD rad 1 lcd4_write_string(&this->display, "HEJ"); lcd4_cup_row2(&this->display); //LCD rad 2 lcd4_write_string(&this->display, text ); ///////// } // huvudprogrammet int main(void) { mainV brygga;

unsigned char knapp, knapp_fg; unsigned int matvarde0;

knapp = 0;

knapp_fg = 0;

// startsekvens

main_init( &brygga );

matvarde0 = EEPROM_read_int( 10 ); // läser av eeprom vid start

if( matvarde0 < 0 || matvarde0 > 1023 ) // definierat värde (inom

mätområdet)

{

matvarde0 = 433; // testvärde, analog spänning

}

// skicka mätvärde0 till D/A-omvandling

main_run( &brygga, matvarde0 << 2 );

/////

///////////// startsekvens

while( 1 )

{

if( knapp != knapp_fg ) {

// A/D omvandling

// test för knappmanöver (kommandon ska inte upprepas)

//matvarde0 += 1;

(48)

matvarde0 = io_ai_read( &brygga.analogIN0 );

/////

// skriver mätvärde0 till EEPROM

EEPROM_write_int( 10, matvarde0 );

/////

// skicka mätvärde0 till D/A-omvandling

main_run( &brygga, matvarde0 << 2 );

///// knapp_fg = knapp; } else { do {

// knappavläsning utifrån (nollställning med 5v på PD7),pullup-resistor är aktiverad.

knapp = io_di_read( &brygga.knapp ); }while( knapp == knapp_fg );

} }

return 0; }

(49)

Bilaga 2: Kretskortsspecifikation och ritningar

ÖREBRO UNIVERSITET

INSTITUTIONEN FÖR TEKNIK

Projekt

Examensarbete Presenterad av Rahman Hassanzadeh

Dokument nr.

001 Specification

Datum

10 - 08- 2006 Sid nr. 1

Dokumenttyp Dokument nummer Sid nummer

Kopplings schema 002 2

Bill of Materials 003 3

Coppar bottom 004 4

Coppar top 005 5

Silkscreen top 006 6

Copper bottom –Board outline- Silkscreen top 007 7

Copper top –Board outline- Silkscreen top 008 8

Solder mask bottom 009 9

(50)

ÖREBRO UNIVERSITET

INSTITUTIONEN FÖR TEKNIK

Projekt

Examensarbete Presenterad av Rahman Hassanzadeh

Dokument nr. 002 Kopplingsschema Datum 10 - 08- 2006 Sid nr. 2 J7 V+(15v) V-(15v) Vout+ Vout-Kontak t_3 C1 100nF U6 Q1 BC547BP C2 OUT PUT _A -IN _A +IN_A U2 V-V OUTPUT_B -IN _B +IN_B 100nF G1_b2 G1_b3 Knapp Kontak t_2 G1_b1 V+ sleep V-Vref_OUT IAref Vin+ Vin- RG INA125 Vref _10v Vref _5v Vref _2,5v Vref _B G Vref _C OM sense V0 RG1 LT1013CN8 R12 J5 G1_b1 47kOhm_5% R6 47kOhm_5% R1 350ohm R11 47kOhm_5% R13 G1_b2 20.0kOhm_1% R10 R7 47kOhm_5% 47kOhm_5% RG R14 47kOhm_5% G1_b3 R5 50% Key = a 20K_LIN R8 G2_b1 R4 350ohm 10.0kOhm_1% R9 20.0kOhm_1% R2 350ohm G2_b2 60ohm J6 G2_b1 G2_b2 G2_b3 GND Kontakt_4 U3 PB 0_( XCK/T0) (ADC 0) _PA0 U4 G2_b3 PB 1_(T 1) PB2_(INT2/AIN0) PB3_(OCO/AIN1) PB 4_( SS) PB5_(MOSI) PB6_(MISO) PB7_(SCK) R ESET (ADC1)_PA1 (ADC2)_PA2 (ADC3)_PA3 (ADC4)_PA4 (ADC5)_PA5 (ADC6)_PA6 (ADC7)_PA7 AREF DIN VDD SCLK D/A- VOUT omvandlare CS MAX 515 R EF IN U5 DS1233 RESET Vcc GND DOUT AGN D C3 +5 v DA-omv andlare 100nF U7 G1_ben3(Vin+) G1_ben2 Vin- mellan_R1_R2 R1 R2 G2_b en 2 G2_b en 3 4_DIPsw i tch J8 Vref+ Vref0 Vin+ Vin-Kontakt_1 VCC GND XTAL2 XTAL1 PD0_(RXD) PD1_(TXD) PD2_(INT0) PD3_(INT1) PD4_(OC1B) AtMega 16 GND1 AVCC (TOSC2)_PC7 (TOSC1)_PC6 (TDI)_PC5 (TDO) _PC 4 (TMS)_PC3 (TCK)_PC 2 (SDA)_PC1 (SCL)_PC0 (OC2)_PD 7 U1 LM7805CT Vreg IN OU T Ci 330nF Co 100nF PD 5_( OC 1A) PD 6_(ICP) AtMega16PI 10.0kOhm_1% R17 U8 1OUT Vcc+ 1IN- 2OUT 1IN+ 2IN-Vcc- 2IN+ R20 10.0kOhm_1% TL0 82 R19 10.0kOhm_1% R15 30kOhm_5% R21 10.0kOhm_1% R16 R18 20.0kOhm_1% 10.0kOhm_1%

References

Related documents

[r]

[r]

Om arbete ska utföras på en elektrisk ledning eller en dithörande skyddsanordning i farlig närhet av en luftledning för starkström, är innehavaren av starkströmsledningen skyldig

Tekniken har under några år även använts för vissa VA-ledningar - klena tryckledningar för vatten- och avlopp och för dräneringsledningar i myr- och mossmarker

Det ligger i förvaltningens intresse att deras ledningar får vara såväl tillgängliga som säkra mot flytt men då de är samma juridiska person som kommunen

Du som på något sätt ska arbeta i närheten av en luftledning, gör klokt i att re- dan i förväg undersöka terrängen med hänsyn till luftledningen, exempelvis ta ut den bästa

a) För bestående skada och intrång, som uppkommer genom ledningens nedläggande och bibehållande, skall ledningsägaren betala en engångsersättning som skall beräknas efter de

Informationsmaterialet Säker nära elektriska ledningar är elnätsföretagens budskap till allmänhet, yrkespersoner och