Stapdetector op basis van een large-area capacitieve sensor Jochen Deconinck
Promotor: prof. dr. ir. Jan Vanfleteren Begeleiders: Fabrice Axisa, Bjorn Vandecasteele Scriptie ingediend tot het behalen van de academische graad van Burgerlijk elektrotechnisch ingenieur
Vakgroep Elektronica en informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen Academiejaar 2007-2008
Faculteit Ingenieurswetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout
Stapdetector op basis van een large-area capacitieve sensor door Jochen Deconinck
Promotor: prof. dr. ir. Jan Vanfleteren Begeleiders: Fabrice Axisa, Bj¨orn Vandecasteele
Scriptie ingediend tot het behalen van de academische graad van Burgerlijk elektrotechnisch ingenieur Academiejaar 2007–2008
VOORWOORD
i
Voorwoord In hedendaagse functionele gebouwen worden steeds meer technologie¨en gebruikt die het leven heel wat makkelijker maken. Deze vernuftige uitvindingen zijn niet meer weg te denken uit het alledaagse leven, en stellen ons in staat om soms slechts met ´e´en simpele druk op een toets een hele reeks acties uit te voeren. Al jaren ben ik gefascineerd door elektronische apparaten. Hoe is het mogelijk dat er muziek uit mijn radio komt door middel van elektriciteit? En waar komt deze elektriciteit eigenlijk vandaan? In tegenstelling tot vele voorwerpen in ons dagelijks leven, zijn elektronische toestellen niet op zicht begrijpbaar. Een tafel, een fiets, een notenkraker, een bed,... zijn voorwerpen die je onmiddellijk kan ontleden en verstaan hoe het werkt. Maar de werking van een eenvoudige bureaulamp, een rekenmachine of een uurwerk valt niet op zicht uit te leggen. Door mijn studiejaren heen heb ik dit leren begrijpen, maar dit neemt niet weg dat deze wonderlijke magie van de technologie me blijft boeien. Ook de scriptie die ik gekozen heb, ligt in de lijn van deze nieuwsgierigheid. Mijn interesse ging er namelijk voor uit om iets te kunnen ontwikkelen die uiteindelijk zou gebruikt worden in sommige toepassingen. Deze thesis gaf mij de kans om zelf een product te kunnen ontwerpen en om met de nieuwste methodes te werken bij het vervaardigen van flexibele elektronica. Vooraleer ik deze scriptie koos, was mijn interesse voor onderzoek maar matig. Vandaag kan ik zeggen dat ik mijn mening toch moet herzien en toch twijfel om mijn toekomst in onderzoek verder te zetten. Niet alleen het onderwerp zelf, maar ook de personen rond mij hebben meegedragen aan deze boeiende ervaring. Graag zou ik dan ook vooral mijn begeleiders ing. Bj¨orn Vandecasteele en Dr. Fabrice Axisa willen bedanken voor hun grote hulp. Ze stonden steeds paraat om mijn vragen te beantwoorden, hoe vanzelfsprekend het antwoord voor hen ook leek. Steeds hadden ze geduld om te wachten op mijn resultaten. Ze introduceerden me
ook met de verschillende mogelijkheden van de cleanroom. Ook mijn promotor Prof. Dr. ir. Jan Vanfleteren zou ik graag bedanken. Hij wekte mijn interesse voor de projecten binnen CMST Microsystems en introduceerde me dit boeiende onderwerp. Verschillende medewerkers van CMST zou ik ook willen bedanken omdat ze me bijgestaan hebben bij verschillende stappen van het ontwerpen van de flexibele elektronica. Ing. Lieven Degrendele hielp me met de basis van het lay-outen van mijn design en wees me op verbeteringen die ik zou kunnen aanbrengen. Ir. Thomas Vervust was vooral specialist op vlak van microcontrollers en hielp me met de basisstappen van het ontwerp met een MSP430. In de cleanroom zelf kreeg ik de hulp van volgende personen: ing. Bart Reekmans, ir. Tomas Podprocky, ir. Kristof Dhaenens en mijn vaste begeleiders. Door hen heb ik bijgeleerd over de processtappen van het lamineren, etsen, soldeermasker aanbrengen, nikkel-goud plating en assembleren. Ook ir. Frederic Bossuyt verdient een bedanking om mij af en toe raad te geven bij problemen. Ook de mensen uit mijn persoonlijke omgeving kan ik niet vergeten. Mijn ouders die mij steeds gesteund hebben in mijn keuzes, waren er dit jaar nog meer voor me en hielden steeds de moed hoog bij me. Ook mijn broers waren er steeds voor mij. Pieter zorgde onder meer ook dat ik ook af en toe nog wat ontspanning kon nemen. Mijn vrienden die ik dagelijks tegenkwam, wil ik ook bedanken voor hun steun en geduld dat ze met me hadden. Uiteindelijk zijn er nog vele mensen die ik zou willen bedanken die mij steeds bijgestaan hebben tijdens dit jaar en de vorige jaren. Bedankt voor jullie steun en toeverlaat.
Jochen Deconinck, augustus 2008
TOELATING TOT BRUIKLEEN
iii
Toelating tot bruikleen
“De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopi¨eren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie.”
Jochen Deconinck, augustus 2008
Stapdetector op basis van een large-area capacitieve sensor door Jochen Deconinck Scriptie ingediend tot het behalen van de academische graad van Burgerlijk elektrotechnisch ingenieur Academiejaar 2007–2008 Promotor: prof. dr. ir. Jan Vanfleteren Begeleiders: Fabrice Axisa, Bj¨orn Vandecasteele Faculteit Ingenieurswetenschappen Universiteit Gent Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout
Samenvatting In dit werk wordt een druksensor met grote oppervlakte ontwikkeld. De druksensor is capacitief en bestaat uit een di¨electricum tussen twee flexibele geleidende kopervlakken. De laag tussen de geleidende oppervlakken is samendrukbaar onder het gewicht van het individu dat het oppervlak betreedt, waardoor de capaciteit verandert en dus de aanwezigheid kan gedetecteerd worden. In samenwerking met de firma Domo is deze sensor ingewerkt in een tapijttegel. De gemeten capaciteit, of de verandering ervan, wordt naar een computer doorgestuurd. De ontwikkeling wordt uitgevoerd in flexibele elektronica.
Trefwoorden sensoren, flexibele elektronica, domotica, security
Design of a stepdetector based on a large-area capacitive sensor Jochen Deconinck Supervisor(s): Fabrice Axisa, Bj¨orn Vandecasteele Abstract— This article explains how to design a stepdetector based on a pressure sensor that consists of large-area capacitor. This detector is made with flexible electronics and is embedded in a carpettile of the company Domo. Keywords—Sensors, flexible electronics, domotics, security
M
I. I NTRODUCTION
Fig. 1. Schematic of the Bridge of Wheatstone.
ANY modern application make use of sensors. Everyday we are confronted with systems that are full of electronic devices that measure quantities from the environment. Think about a car which has several features to control the comfort or the safety of the passengers.[1] The stepdetector that is discussed in this paper, consists of a measurementsystem that gets data from the environment. A pressure sensor will be integrated in the carpetfloor and will register if a person is standing on a certain place, or better, if he is stepping on it. It could be used for security reasons to make an alarm go off when a person enters a certain area. This could for example trigger an automatic lockdown of the area. But this sensor can also come in handy for domotic applications: it could make the lights go on in a room when someone enters, or even the central heating. This sensor will exist of two copper layers, that will together create a capacitor. When pressure is applied to this capacitor (by standing on it), this will change the value of the capacitance and this can be meausered by an electronic system. However, the design of cheap large-area pressure sensors is still being explored, and the embedding of electronics in carpetfloors is still in development. But the research team of CMST Microsystems (former TFCG) is working on a promising technology that will be used for this application: the electronic system will be made in flexible technology so it can be implemented easily in a carpet. II. H OW TO M EASURE C HANGE IN C APACITANCE The most easiest way to measure a change in amplitude of the output, consists of a voltage divider. The output will be given by a function like VOU T =
Zs Zs +Z VSU P P LY
.
We notice that this does not give a linear function and so we expand this idea to the bridge of wheatstone (see figure 1). For this general form of a bridge of wheatstone to balance, the impedance ratios of each branch must be equal: [2] Z1 Z3 = Z2 Z4 J. Deconinck is studying at the Electronical Engineering Department, Ghent University (UGent), Gent, Belgium. E-mail:
[email protected] .
It must be stressed that the impedance quantities in the above equation must be complex, accounting for both magnitude and phase angle. It is insufficient that the impedance magnitudes alone be balanced; without phase angles in balance as well, there will still be voltage across the terminals of the null detector and the bridge will not be balanced. For this application we will use Z1 = Z3 = R and Z2 = C0 . The sensor will be noted by Z4 = C0 + ∆C and is represented by ∆C as the change according to the nominal value C0 . For this application, we didn’t want to make it very complex and used this simple AC-bridge that we discussed. This bridge is easily integrated with IC’s provided by several companies, including Analog Devices and Texas Instruments. III. C OMPONENTS In this section we briefly take a look at the IC’s we will use in this project. The most important component used, is the AD698, developped by Analog Devices. It is mainly used in conjunction with LVDT’s (Linear Variable Differential Transformers) to convert transducer mechanical position to a unipolar or bipolar dc voltage. But it is also capable to read out AC-bridges. It will drive the bridge with the wanted oscillating frequency and amplitude and it will measure the change of the capacitance. We briefly describe how the component works: • The internal oscillator creates a sine-wive and this signal is used to drive the bridge • The differential voltage between the two branches has to be amplified by external opamps so that the output of the bridge is in a wanted range and we can control the resolution of the measurement • This amplified signal is then sent back to the chip and is compared to the excitation amplitude of the oscillator. The ratio of both amplitudes is calculated and results in a dc-value that represents the variation of the capacitance from the nominal value. • Finally, it filters out the noise and amplifies the signal so that the output is given in a wanted voltage range. To be able to measure the differential voltage across the bridge, we will use an operational amplifier. The OPA2137 is perfectly capable of amplifying signals in the voltage range -
Fig. 2. Picture of a created sensor.
Fig. 3. Picture of the created flexible electronics.
15..15V. It consists of two amplifiers, one for each side of the bridge. The next component used is the MSP430f2234: a microcontroller designed by Texas Instruments. This microcontroller is very good for low-power applications and has many features that can be used. We will use this chip for storing the output from the signalconditioner. Therefor, we will make use of the analog-to-digital converters (ADC) in the chip that will transform the signal in a 10-bit value. The chip will also provide the communication between the chip and the pc. The I 2 Cprotocol will be implemented and two lines (SDA or serial-dataline, and SCL or clock-line) will be connected to the external circuit. However, an extra driver will be needed for this. The microcontroller uses a voltage source of 3.3 Volt, instead of the dual voltage source +/-15 V for the other components. Therefor, we add a component that converts the high voltage to the wanted 3.3V. This is done by the L78L33ACUTR. We will also use an analog multiplexer so that multiple sensors can be connected. This should be good to create a matrix of sensors in a carpettile. The last important item to be added, is the driver that controls the I 2 C-communication between the system and the pc: the FT2232 designed by Future Technology. It is designed so that the system can be connected with an USB-interface.
The last part was providing the software to display the capacitive change on the computer or central unit. The program LabView is very handy in displaying results, and allows to create a virtual interface to configure the detection. In figure 4 we can see the result when the detection happens.
IV. D ESIGN We can now create the sensor and the flexible electronics. We can see the result of the sensor in figure 2. It consists of two copper layers and the di¨electricum is a polyeruthane foam. The size of it is about 10 x 10 cm2 and the thicknes around 1 mm. The final design of the flexible electronics is illustrated in figure 3. We can clearly see the signalconditioner in the upper left corner of it. Also noticable are the USB-connection, the microcontroller, the driver and the amplifiers. Due to a delayed order with the providing companies, the multiplexer could not be added in time, and minor changes had to be made to continue working with one sensor. Finally the software code that has to be programmed in the microcontroller can be written. Herefor, the provided software by Texas Instruments was used: IAR Embedded Workbench KickStart. With this tool, we are able to configure the microcontroller and load the code by JTAG connection.
Fig. 4. Detection of a weight of 250g.
V. C ONCLUSION The results of the first creation of the flexible electronic design were poor. A second sample was made and this gave better results. We could conclude that an error in the processteps affected the performance of the system. Redesigning the system and creating a new design gave a good result. We were able to measure the change of the capacitance, and the results are shown on the computerscreen. The system was tested and we optimised the system so that it could detect a weight of 250g and more. During this testfase however, the microcontroller was badly affected and could not be used anymore. This is probably due to a temporarily short circuit or there is maybe still an error that causes a voltage peak to destroy the chip. However, the results have shown that it is possible to detect small weights and further investigation could lead to a full design of it. R EFERENCES [1] Herbert De Smet, SENSA: Sensoren en actuatoren, Faculty of engeneering science, department Electronics and Informationsystems, 2006. [2] Tony R. Kuphaldt, All About Circuits, Design Science License, 1999.
INHOUDSOPGAVE
vii
Inhoudsopgave Voorwoord
i
Toelating tot bruikleen
iii
Overzicht
iv
Extended abstract
v
Inhoudsopgave
vii
Gebruikte afkortingen
ix
1 Inleiding 1.1 Capaciteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Basisformule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2 2
2 Ontwikkelen 2.1 Amplitudemodulerende signaalconditioneerders . . . . . . . . . . . . . . . 2.2 Frequentiemodulerende signaalconditioneerders . . . . . . . . . . . . . . . . 2.3 Alternatieve methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 4 7 8
3 Componenten 3.1 LVDT signaalconditioneerder: AD698 3.2 Operationele versterker: OPA2137 . . 3.3 Microcontroller: MSP430f2234 . . . . 3.4 Multiplexer: ADG408 . . . . . . . . . 3.5 I2C/USB controller: FT2232D . . . . 3.6 DC/DC-converter: L78L33ACUTR . 4 Breadboarddesign
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
13 13 18 18 20 21 23 26
INHOUDSOPGAVE
viii
5 Layout 5.1 Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Ontwerp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29 29 30 34
6 Software 6.1 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38 38 42
7 Resultaten
46
8 Besluit
51
A Berekening frequentie astabiele multivibrator
52
B Figuur Schematic
53
C Figuren LabView
55
Bibliografie
60
Lijst van figuren
62
GEBRUIKTE AFKORTINGEN
Gebruikte afkortingen ac
alternating current
ACK
ACKnowledgement
ACLK
Auxilary Clock
ADC
Analog to Digital Converter
AM
Active Mode
bit
binary digit
dc
direct current
DCO
Digitally Controlled Oscillator
EN
Enable
I2C
Inter-Integrated Circuit
IC
Integrated Circuit
IPA
Isopropyl Alcohol
IrDA
Infrared Data Association
ISP
In-System Programming
ISR
Interupt Service Routine
LPM
Low Power Mode
LVDT
Linear Variable Differential Transformers
MCLK
Main Clock
PC
Personal Computer
PCB
Printed Circuit Board
RISC
Reduced Instruction Set Computing
ix
GEBRUIKTE AFKORTINGEN SMCLK
Sub Main Clock
SCL
Serial Clock Line
SDA
Serial Data line
UART
Universal Asynchronous Receiver/Transmitter
USB
Universal Serial Bus
WDT
Watch Dog Timer
x
INLEIDING
1
Hoofdstuk 1 Inleiding Vele moderne toepassingen maken tegenwoordig gebruik van sensoren of voelers. Denk maar aan je auto die boordevol meetsystemen zit om het comfort of veiligheid van de inzittenden te garanderen. Een temperatuursensor meet de binnentemperatuur op en deze wordt dan vergeleken met de gewenste waarde. Een versnellingssensor zou kunnen aangeven wanneer de versnelling opeens verandert, bijvoorbeeld bij een botsing, en de airbags doen afgaan. Al deze sensoren genereren elektrische signalen die informatie bevatten over een te meten fysische grootheid. Die informatie wordt dan doorgestuurd naar een rekeneenheid en kan afgebeeld worden op een display of wijzerplaat. Deze eenheid zal dan de informatie vergelijken met opgeslagen data en dan een correcte beslissing uitvoeren. Indien de sensor een te hoge of te lage waarde meet, kan het regelsysteem een actuator aansturen die ervoor zorgt dat de omgeving wordt be¨ınvloed totdat de sensor weer de gewenste waarde opmeet. [1] Ook de stapdetector die in deze thesis zal besproken worden, bestaat uit een meetsysteem die gegevens uit de omgeving haalt. Een sensor zal ge¨ıntegreerd worden in vloerbedekking en registreert of een persoon zich al dan niet op een bepaalde plaats in de ruimte bevindt, m.a.w. als er een stap gedetecteerd wordt. Registratie van dergelijke aanwezigheid kan voor verscheidene toepassingen gebruikt worden. Op het gebied van security kan deze ervoor zorgen dat er een alarm afgaat wanneer een bepaalde persoon de ruimte betreedt. Hierdoor zouden automatische acties - zoals het afsluiten van de ruimte - kunnen geactiveerd worden. Maar ook in de domotica kan dit handig gebruikt worden. Het aanschakelen van de verlichting of verwarming kunnen hiermee geregeld worden. Ook de veiligheid van personen kan door deze sensor verzekerd worden. Denken we bijvoorbeeld aan de assemblage van personenwagens die door robotten worden verwezenlijkt. Een werknemer zou zich
1.1 Capaciteit
2
hevig kunnen verwonden bij het betreden van deze zones. Deze sensor zou de robotten dus tijdelijk kunnen uitschakelen. De sensor zal bestaan uit twee grote kopervlakken, die samen een capaciteit vormen. Onder invloed van het gewicht van een persoon zal deze capaciteit een verandering ondergaan en kan deze opgemeten worden door een elektronisch systeem. Het ontwikkelen van goedkope large-area druksensoren zijn echter nog in de onderzoeksfase, en ook het inbouwen van de elektronica in de vloerbedekking staat nog in de kinderschoenen. De onderzoeksgroep CMST Microsystems (TFCG) is echter een veelbelovende technologie aan het ontwikkelen, die voor deze toepassing zal gebruikt worden. Het elektronisch systeem zal namelijk gemaakt worden in flexibele technologie die dus in een tapijt zou kunnen worden ge¨ımplementeerd. Vooraleer we het werk aanvatten, geven we een korte inleiding tot de wereld van capacitieve druksensoren. We overlopen eerst kort een aantal basisdefenities en gaan daarna eens kijken in welke toepassingen dit kan gebruikt worden.
1.1
Capaciteit
De term capaciteit is een elektrische eigenschap in de zin van het vermogen tot opslaan van elektrische lading zoals in een condensator. Deze waarde wordt uitgedrukt in Farad. De capaciteit van een condensator is afhankelijk van zijn geometrie en de elektrische eigenschappen van het di¨elektricum. De capaciteit neemt toe met de oppervlakte van de geleiders en af met de afstand daartussen. [2] Een condensator bestaande uit twee vlakke platen met oppervlakte A (m2 ) op een onderlinge afstand d (m) en gescheiden door een di¨elektricum met (relatieve) di¨elektrische constante r heeft (bij benadering) een capaciteit: C = 0 r
A d
Hierin is 0 de elektrische veldconstante met waarde 8.85410−12 F/m
1.2
Basisformule
Indien we de druksensor capacitief maken, dan zal de capaciteit dus verhogen wanneer de afstand tussen beide platen kleiner wordt. En als we ervoor zorgen dat de oppervlakte
1.2 Basisformule
3
groot genoeg is, krijgen we een grote capaciteitswaarde. We moeten er echter wel voor opletten dat we de sensor niet te groot maken, zodat een betreding van de sensor nog steeds een voldoende grote afwijking vertoont. Ook zorgt de verandering van de di¨elektrische constante voor een verhoging wanneer de druk op de sensor toeneemt. Maar hoe is het mogelijk deze verandering op te meten? We weten dat een condensator voldoet aan de volgende vergelijking: dV I=C dt of er gaat dus pas stroom doorheen de condensator indien de afgeleide van de spanning niet nul is. We zullen de sensor dus moeten aansturen met een wisselspanning opdat we een stroomverandering zouden kunnen waarnemen. Een gelijkspanning zou er immers voor zorgen dat de stroom nul is en blijft, onafhankelijk van de capaciteitswaarde. De technieken die gebruikt kunnen worden om de verandering op te meten, worden in het volgende hoofdstuk uitgelegd.
ONTWIKKELEN
4
Hoofdstuk 2 Ontwikkelen Sensoren produceren meestal niet rechtstreeks een elektrische spanning, maar gedragen zich als passieve componenten waarvan de waarde verandert onder invloed van de te meten fysische grootheid. Een elektronisch circuit kan dan deze sensorwaarde omzetten in een spanning. Deze sensorelektronica kan nog andere functies uitvoeren, zoals bijvoorbeeld het lineariseren van de spanning als functie van de te meten fysische grootheid. Zo’n functie noemen we signaalconditionering [1]. Er zijn verschillende mogelijkheden om een capaciteitsverandering op te meten. In wat volgt zullen we de verschillende signaalconditioneerders bespreken. We kunnen onderscheid maken in twee belangrijke klassen, naargelang de manier waarop de informatie aanwezig is in het uitgangssignaal: hetzij als de amplitude van het uitgangssignaal hetzij als de frequentie van het uitgangssignaal
2.1
Amplitudemodulerende signaalconditioneerders
De eenvoudigste manier die ervoor zorgt dat de amplitude van het uitgangssignaal verandert, is een eenvoudige spanningsdeler (zie figuur 2.1). De uitgangsspanning V zal in dit 2 U In het geval geval een functie zijn van de sensorimpedantie R2 , namelijk: U2 = R1R+R 2 1 waarbij we condensatoren gebruiken, herleidt de formule zich tot: U2 = C1C+C U. 2 Het grote nadeel hieraan is dat deze manier geen lineaire functie geeft. Om dit op te lossen bestaat er een uitbreiding op de spanningsdeler: de brugschakeling van Wheatstone. Hierbij worden drie impedanties in combinatie met de sensor geplaatst, zodat de verschilspanning
2.1 Amplitudemodulerende signaalconditioneerders
5
Figuur 2.1: Principe spanningsdeler.
V tussen beide takken kan uitgelezen worden. Hierdoor kunnen we aan de uitgangsklemmen rechstreeks de afwijking t.o.v. de rusttoestand van de sensor meten. Dat is zeker nuttig indien de variaties in impedantie van de sensor klein zijn t.o.v. de absolute waarde van deze impedantie. Het principe is voorgesteld in figuur 2.2. De verschilspanning V voldoet dan aan de vergelijking: V = VA − VB = Vcc
R3 R1 − R2 Rx R3 (R1 + R2 ) + Rx (R1 + R2 )
Er is dus een evenwicht wanneer de teller hiervan nul is. De verschilspanning is dus nul wanneer R3 R1 − R2 Rx = 0. Wanneer we Ri = R0 stellen en Rx = R0 + ∆R dan krijgen we: ∆R V = Vcc 4R0 Deze waarde is dus wel lineair en het idee is goed bruikbaar in onze toepassing. Een nog betere oplossing bestaat erin om de vaste weerstanden te vervangen door weerstanden die ook veranderen, maar in de omgekeerde richting als de sensor. Deze methode wordt dus verwezenlijkt door het push-pullprincipe: stellen we Rx = R2 = R0 + ∆R en R1 = R3 = R0 − ∆R, dan bekomen we: ∆R V = Vcc R0
2.1 Amplitudemodulerende signaalconditioneerders
6
Figuur 2.2: Principe brug van Wheatstone.
Dit heeft als voordeel dat de resolutie hoger kan gemaakt worden. De voorgestelde brug is echter enkel mogelijk voor weerstanden en we hebben dus nood aan een uitbreiding hierop: de ac-brug. Deze brug is weergegeven in figuur 2.3. Ook hier is de brug in evenwicht wanneer de verhoudingen van de impedanties in de ene tak gelijk is aan de verhouding van de impedanties in de andere tak, dit is dus wanneer de sensor de waarde CS aanneemt. [3]
Figuur 2.3: Principe van een ac-brug.
2.2 Frequentiemodulerende signaalconditioneerders
2.2
7
Frequentiemodulerende signaalconditioneerders
Signaalconditioneerders kunnen ook als nuttige output een frequentie hebben. Dit heeft als voordeel dat het uitgangssignaal vrij ongevoelig is voor stoorinvloeden (bv. resistieve spanningsval), zeker in het geval dat het over een lange afstand moet getransporteerd worden. Ook is een dergerlijk signaal makkelijk digitaliseerbaar (pulsen tellen). Bij een sinuso¨ıdale oscillator kan een capacitieve sensor in de resonantiekring de oscillatiefrequentie be¨ınvloeden. Als voorbeeld van een toepassing van dit principe vermelden we een eenvoudige FM zender waarbij C een condesatormicrofoon is. [1] In figuur 2.4 wordt een andere methode getoond: de astabiele multivibrator. Hierin kan bijvoorbeeld C2 als sensor gekozen worden. De operatie kan als volgt uitgelegd worden [2]: steeds is er ´e´en transistor die aan staat terwijl de andere uit staat. Veronderstel dat Q1 aan is en Q2 uit:
Figuur 2.4: Astabiele multivibrator.
Q1 houdt de ene zijde van R1 (en de linkerzijde van C1) aan de grond (0V). De rechterzijde van C1 (en basis van Q2) worden opgeladen door R2 van onder 0V tot 0.6V.
2.3 Alternatieve methodes
8
R3 trekt de basis van Q1 omhoog, maar de basis-emittor diode verhindert dat de spanning boven 0.6V gaat. R4 laadt de rechterzijde van C2 op tot de voedingsspanning (+V). Omdat R4 kleiner is dan R2, wordt C2 sneller opgeladen dan C1.
Wanneer de basis van Q2 0.6V bereikt, schakelt Q2 aan, en de volgende positieve feedbacklus vindt plaats: Q2 trekt abrupt de rechterzijde van C2 naar 0V. Omdat de spanning over een condensator steeds continu is, zorgt dit ervoor dat de linkerzijde van C2 onmiddellijk tot -V valt, ver onder 0V. Q1 schakelt af door het plotse verdwijnen van zijn basisspanning. R1 en R2 trekken beide einde van C1 naar +V, en vervolledigen deze fase. Het proces wordt gestopt door de B-E diode van Q2, die de rechterzijde van C1 niet ver zal laten stijgen.
Hierna volgt het spiegelbeeld aan deze fase waarin Q1 uitgeschakeld is en Q2 aan. Dan trekt R1 snel de linkerzijde van C1 naar +V, terwijl R3 de linkerzijde van C2 naar +0.6V trekt (al zij het trager). Wanneer het linkereinde van C2 0.6V bereikt, herhaalt de cyclus zich. De frequentie die hierdoor wordt veroorzaakt is gelijk aan: f=
1 ln(2)(R2 C1 + R3 C2 )
Deze astabiele multivibrator kan ook uitgevoerd worden met behulp van operationele versterkers. Deze methode is zichtbaar in figuur 2.5. De frequentie voldoet hier aan de vergelijking (zie bijlage A voor de berekening): f=
2.3
R3 2πR1 R2 C1
Alternatieve methodes
We vermelden nog twee methodes die ook kunnen gebruikt worden. Eerst vermelden we kort de Wien brug oscillator. Deze is eigenlijk ook een sinusgenerator zonder dat er enige
2.3 Alternatieve methodes
9
Figuur 2.5: Astabiele multivibrator met operationele versterkers.
bron nodig is. Er kan een groot bereik aan frequenties bekomen worden. Het is eigenlijk een combinatie van een astabiele multivibrator (toegepast met een versterker) en een brug die bestaat uit vier weerstand en twee condensatoren. In figuur 2.6 is het schema voorgesteld.
De manier die echter verkozen werd, indien het de bedoeling was een analoog ontwerp te maken, zou eerder op de volgende wijze zijn opgesteld. We beginnen eerst met de formule C = VI/s of dus: capaciteit is gelijk aan stroom over Volt per seconde. Stel dat we ´e´en zijde van de condensator aan de grond hangen en een constante stroom erdoor sturen, dan zal de spanning aan de andere zijde lineair stijgen. Meten we de helling van deze lineaire rechte, dan kunnen we de capaciteit bepalen. Maar dit werkt niet goed voor kleine capaciteiten omdat de timing tussen twee referentiespanningen in een klein interval moeilijk te meten is. Daartegenover staat wel dat deze procedure wel redelijk precies is bij lage snelheden. Wat wij doen is net de spanning per seconde constant houden en de resulterende stroom meten. Het is immers makkelijker om stroom te meten aan hoge snelheden dan spanning
2.3 Alternatieve methodes
10
Figuur 2.6: Schema Wien brug oscillator.
per seconde. E´en van de voordelen is dat de circuits volledig analoog zijn. Enkel ruis zal dus een beperkende factor zijn. De circuits zijn echter zeer sterk immuun aan ruis omdat drie capaciteiten als ruisfilters werken: een referentiecondensator, de sensorcondensator en de piekdetector condensator. Het principe gaat als volgt [4]. De constante spanning per seconde wordt geproduceerd door een precisie driehoeksgolfgenerator. Sturen we deze driehoeksgolf aan op de ene zijde van de sensor, dan detecteren we de stroom aan de andere zijde met een stroom-spanning converteerder. Deze zal een blokgolfvorm hebben. Met een piekdetector meten we de amplitude van de blokgolf. De resulterende spanning geeft dan weer welke capaciteitswaarde de sensor heeft. De figuren 2.7 en 2.8 geven een duidelijk schema van het idee. De simulatieresultaten geven weer dat het resultaat inderdaad uiteindelijk een dc-waarde geeft die afhankelijk is van de capaciteitswaarde van de sensor (zie figuur 2.9).
2.3 Alternatieve methodes
Figuur 2.7: Schema van de driehoeksgolfgenerator.
Figuur 2.8: Schema van de Current-to-voltage converteerder met de piekdetector.
11
2.3 Alternatieve methodes
Figuur 2.9: Simulatieresultaat voor een sensor van 200 tot 300 pF.
12
COMPONENTEN
13
Hoofdstuk 3 Componenten Met behulp van verschillende componenten zullen we een schakeling opbouwen die in staat is om de capaciteitsverandering te registreren en door te sturen naar de computer. In wat volgt zullen we elke ic (integrated circuit) bespreken en kort uitleggen hoe deze component werkt en waartoe deze component in staat is.
3.1
LVDT signaalconditioneerder: AD698
De belangrijkste component die gebruikt wordt, is de AD698 die door Analog Devices ontwikkeld is. Deze chip wordt voornamelijk gebruikt als LVDT signaalconditioneerder, maar is ook bruikbaar voor de toepassing die in deze thesis beschreven wordt. Het zal ons in staat stellen de wheatstonebrug aan te sturen en de capaciteitsverandering op te meten. Deze zal uiteindelijk als dc-signaal beschikbaar gesteld worden aan de uitgang. Het basisprincipe van de AD698 kan als volgt worden uitgelegd (zie ook figuur 3.1): [5] de interne sinusoscillator zorgt voor een gewenst ac-signaal. De frequentie en amplitude hiervan kunnen extern geregeld worden. Dit ac-signaal wordt gebruikt om de sensorschakeling aan te sturen, in ons geval dus de brug van wheatstone bestaande uit de sensor en de drie impedanties. de verschilspanning over de brug zal worden versterkt door twee operationele versterkers. Deze opamps zullen extern moeten toegevoegd worden om goede resultaten te bekomen. We moeten ervoor zorgen dat de versterkers een lage biasstroom hebben.
3.1 LVDT signaalconditioneerder: AD698
14
het versterkte signaal wordt ingelezen door de chip en vergeleken met het excitatiesignaal. De verhouding van beide amplitudes wordt berekend en hierdoor bekomt men een dc-waarde die de afwijking van de impedantie weergeeft t.o.v. de nominale waarde. uiteindelijk filteren we de ruis nog weg uit dit signaal en versterken we dit. Hier kunnen we met behulp van een externe weerstand bepalen wat het bereik is van de uitgangsspanning.
Figuur 3.1: Functioneel blokdiagram van de signaalconditioneerder AD698.
Het schema met alle externe componenten wordt weergegeven in figuur 3.2. We merken eerst en vooral op dat deze component een hoge duale voedingsspanning nodig heeft van +15 en -15 Volt. Om het systeem draadloos te maken zodat deze op batterijen kan werken, zullen we dus verschillende batterijen in serie moeten plaatsen. Voorlopig echter gebruiken we nog geen batterijen en sluiten het systeem aan op een in te stellen spanningsbron. Het tweede dat opvalt is de brugschakeling die duidelijk zichtbaar is. Deze bestaat in ons geval uit twee weerstanden en twee condensatoren (waarvan ´e´en de eigenlijke sensor is). Naast deze wheatstonebrug merken we de versterkers op die het signaal terugsturen naar de chip. In de feedbacklus van deze opamps worden er twee weerstanden gebruikt die gedimensioneerd moeten worden. Ook nog veel andere externe componenten moeten nog gedimensioneerd worden en in de volgende paragraaf wordt uitgelegd hoe elke waarde kan berekend worden.
3.1 LVDT signaalconditioneerder: AD698
15
Figuur 3.2: Het interconnectie-diagram van de AD698 voor een AC-brug.
Om alle waarden te dimensioneren beginnen we eerst de brug zelf te bepalen. De brug bestaat uit vier elementen, waarvan de bovenste twee weerstanden zijn en de onderste zijn condensatoren. De waarden van deze componenten kunnen arbitrair gekozen worden, maar we krijgen het beste resultaat als we ervoor zorgen dat de brug symmetrisch is en dat de linkertak zo goed mogelijk gelijk is aan de rechtertak. Hiervoor hebben we de nominale waarde van een sensor nodig en dit blijkt - na creatie en meting van een sensor - rond de 125 pF te schommelen. We kiezen voor een condensator van waarde 125pF in de rechtertak. De bovenste weerstanden zijn beide 47kΩ. Het is mogelijk om voor deze componenten andere waarden te nemen, maar we willen de brug rond het evenwichtspunt houden, zodat de karakteristiek lineair is. De weerstanden kunnen andere waarden aannemen, maar be¨ınvloeden de nodige versterking van de operationele versterkers. Deze vervangen door capaciteiten is niet aangewezen omdat de punten over de brug dan zwevend zijn en lading kan zich moeilijk verwijderen bij ontlading. Nu de brug gedimensioneerd is, kunnen versterkers A1 en A2 bepalen. We berekenen hiervoor eerst de gevoeligheid van de brug en stellen een waarde voorop tot hoehoog de uitgangswaarde mag versterkt worden. We leggen de limiet voor de uitgangsspanning op
3.1 LVDT signaalconditioneerder: AD698
16
80% van de excitatiespanning. Dit wordt weergegeven door de verhouding A/B volgens de datasheet en werd dus op 0.8 vastgelegd. We gaan ervan uit dat de maximale verandering van de capaciteitswaarde van de sensor het dubbele is, en vinden hieruit dat de sensitiviteit rond de 30 mV/V ligt. Echter, willen we enkel een detectie realiseren, dan mag de uitgangsspanning satureren en kunnen we de gevoeligheid dus veel hoger nemen. Opdat een gewicht van 250g zou kunnen gedetecteerd worden, nemen we de gevoeligheid gelijk aan 350µV /V . Hieruit vinden we dus dat de versterking van de opamps moet gelijk zijn aan 0.8/0.00035, dus ongeveer rond de 2500. Nu weten we dat VOU T voldoet aan de volgende vergelijking: 2RS )VIN 1 RG We kiezen voor RG de waarde 27Ω en met VOU T /VIN gelijk aan 2500, vinden dus voor RS een waarde van 33kΩ (deze waarde is afgerond tot dichtstbijzijnde beschikbare weerstand). Vversterkt = (1 +
Vervolgens bepalen we de overige parameters door R1 , R2 , R3 , R4 , C1 , C2 , C3 en C4 . De oscillatoramplitude wordt bepaald door de weerstand R1 en is af te lezen uit volgende grafiek:
Figuur 3.3: Excitatiespanning tegenover de waarde R1 .
Willen we dus de brug aansturen met een spanning van bijna 4 V oltRM S , dan zal R1 ergens 1
In de datasheet van de AD698 staat deze formule verkeerd genoteerd.
3.1 LVDT signaalconditioneerder: AD698
17
in de omgeving van 12kΩ. Nu we ook A/B weten, kunnen we R2 berekenen aan de hand van volgende formule: A 500µF R2 B Stellen we het uitgangsbereik van 0 tot 3 Volt, dan bekomen we dat R2 een waarde aanneemt van 8.2kΩ. Dit bereik is redelijk klein, maar dit is noodzakelijk omdat de microcontroller, die het signaal ontvangt, slechts met waarden kan werken die kleiner zijn dan 3.3 Volt. Voor de waarden R3 en R4 is het niet nodig om een weerstand aan te schakelen. Deze zijn enkel nodig om een offsetspanning aan te passen. We hebben dit niet nodig voor deze toepassing, de verandering van de capaciteit zal steeds in dezelfde richting veranderen bij druk, namelijk groter worden. VOU T =
De vier condensatoren worden bepaald afhankelijk van de bandbreedte. C1 Voldoet aan de volgende formule: fexcitatie = 35µF/C1 We kozen voor een frequentie van 1 kHz en bekwamen dus een waarde van 33 nF. De andere condensatoren hebben dezelfde waarde zijn gelijk aan 10−4 Farad Hz/fsubsystem . Zij zorgen voor de filtering van de ruis en cre¨eren het dc-signaal. Het subsysteem moet een frequentie hebben die minstens 10 keer kleiner is dan de excitatiefrequentie en dus is dit 100 Hz. Hierdoor is de waarde van C2 , C3 enC4 gelijk aan 1µF . We maken ook geen gebruik van een extra compensatie voor phase-lead-lag en dit zijn dus gewone doorverbindingen. We sommen nog eens kort alle waarden op: Rbrugrechts 47kΩ Rbruglinks 47kΩ Cbrugrechts 125pF RS 33kΩ RG 27Ω R1 12kΩ R2 8.2kΩ C1 33nF C2 1µF C3 1µF C4 1µF
3.2 Operationele versterker: OPA2137
3.2
18
Operationele versterker: OPA2137
Deze component bestaat uit twee ingebouwde operationele versterkers die kunnen gebruikt worden om signalen tussen -15 en +15 Volt te versterken (zie figuur 3.4). In ons geval zullen we deze gebruiken om de verschilspanning over de brug te versterken. De OPA2137 gebruikt een duale voedingsspanning van +/-15 V en kan dus aangesloten worden aan dezelfde voeding als de LVDT-signaalconditioneerder. Een eerste optie bestond erin om deze component niet te gebruiken en de interne opamps van de microcontroller te gebruiken. Echter, de interne opamps zijn niet in staat om signalen groter dan 3.3 V te versterken en dus kan de brug niet correct versterkt worden.
Figuur 3.4: Schema van de 2 opamps in component OPA2137.
3.3
Microcontroller: MSP430f2234
Dit is het microcontroller, ontworpen door Texas Instruments en behoort tot de reeks van MSP430-controllers [6]. Deze microcontrollers zijn zeer handig voor low-power toepassingen en hebben tal van mogelijkheden die aangestuurd kunnen worden. Elke microcontroller heeft zijn eigen specifieke functionaliteiten en we beschrijven kort wat de MSP430f2234 allemaal te bieden heeft. De MSP430f2234 wordt gevoed met een spanningsbron van 3.3 Volt. En het stroomverbruik van de microcontroller wordt steeds zo laag mogelijk gehouden door de
3.3 Microcontroller: MSP430f2234
19
functionaliteiten die niet benut worden, af te schakelen. Zo kan deze chip in 6 modes werken waarbij onder andere ook de kloksignalen aan- en afgeschakeld kunnen worden. Deze zes modes kunnen geconfigureerd worden door de software: – Active Mode (AM): alle klokken zijn actief – Low-power Mode 0 (LPM0): CPU en de master klok (MCLK) zijn uitgeschakeld – Low-power Mode 1 (LPM1): CPU en de MCLK zijn uitgeschakeld. Ook de DCgenerator van de digitaal gecontroleerde oscillator (DCO) wordt uitgeschakeld als deze niet gebruikt wordt in actieve mode. – Low-power Mode 2 (LPM2): CPU, MCLK en de sub-main klok (SMCLK) zijn uitgeschakeld – Low-power Mode 3 (LPM3): CPU, MCLK en SMCLK zijn uitgeschakeld. Ook de dc-generator van de DCO is uitgeschakeld. – Low-power Mode 4 (LPM4): CPU, MCLK, SMCLK, de DCO’s DC-generator en de hulpklok (ACLK) zijn allemaal uitgeschakeld. De crystal oscillator is nu ook afgeschakeld. De CPU heeft een 16-bit RISC-architectuur en beschikt over 16 registers, waarvan er 4 gebruikt worden voor program counter, stack pointer, status register en constant generator. De andere registers kunnen vrij gebruikt worden en staan in verbinding met alle perifere functionaliteiten via databussen. De instructieset bestaat uit 51 instructies en kan uitgevoerd worden op woorden en bytes. Je hebt drie formaten waarvan gebruik gemaakt kan worden: het eerste type heeft twee argumenten en voert een bewerking uit tussen deze twee registers (bijvoorbeeld een optelling); de tweede mogelijkheid heeft slechts ´e´en operand nodig en wordt vaak gebruikt om woorden op te vragen; als laatste is er het type om in de code te jumpen naar een plaats en deze heeft geen argument nodig. Er zijn vier 8-bit I/O-poorten die elk aangeduid zijn met P1 tot P4. Deze kunnen algemeen gebruikt worden maar hebben ook vaak een extra functionaliteit waarmee deze pinnen verbonden zijn. Ze zijn appart programmeerbaar en elke mogelijke combinatie van input, output en interruptvoorwaarde zijn mogelijk. Zoals elke microcontroller beschikt de MSP430f2234 ook over een watchdog timer (WDT). Deze zorgt er voornamelijk voor dat er een gecontroleerde heropstarting is
3.4 Multiplexer: ADG408
20
van het systeem nadat er een software probleem heeft plaatsgevonden. Het kan ook gebruikt worden als interval timer die op bepaalde tijdstippen interrupts genereerd. Het grote verschil met andere microcontrollers is te merken aan de twee ingebouwde operationele versterkers. Deze kunnen gebruikt worden om externe en zelfs interne signalen te versterken. Hiervoor is het ook noodzakelijk dat de microcontroller beschikt over een ADC zodat er effectief analoge waarden kunnen ingelezen worden. Softwarematig kunnen we deze opamps instellen en de ingangspinnen kiezen, de slew-rate, de mode waarin het werkt... Als laatste belangrijk puntje is de mogelijkheid om te communiceren met andere systemen via verschillende protocollen zoals I2C, ISP, UART, uitgebreide UART en IrDA.
3.4
Multiplexer: ADG408
De ADG408 is een analoge multiplexer, ook ontwikkeld door Analog Devices [7]. Deze zou kunnen gebruikt worden om meerdere sensoren uit te lezen met eenzelfde elektronisch systeem. Dit componentje is in staat om 8 verschillende signalen te multiplexen afhankelijk van binaire ingangen. Deze chip werkt met een duale voedingsspanning van 15 Volt en heeft de volgende functionaliteit: Drie digitale inputs A0, A1 en A2 bepalen welke analoge input wordt doorgestuurd naar de uitgang. Wanneer de drie ingangen nul zijn, dan wordt S1 geselecteerd. Indien alle ingangen hoog staan, dan wordt schakelaar 8 in werking gezet.
A0 0 1 0 1 0 1 0 1
A1 0 0 1 1 0 0 1 1
A2 Schakelaar 0 S1 0 S2 0 S3 0 S4 1 S5 1 S6 1 S7 1 S8
Er is ook nog een mogelijkheid om de chip volledig uit te schakelen met behulp van het enable-signaal. Indien deze hoog staat, is de chip in werking.
3.5 I2C/USB controller: FT2232D
21
Figuur 3.5: Het functionele blokdiagram van de ADG408.
3.5
I2C/USB controller: FT2232D
De FT2232D is een complexe chip die zorgt voor de communicatie tussen het systeem en een pc. Deze zet de I2C-signalen van de microcontroller om zodat deze via een USB-interface kunnen geladen worden naar het geheugen van de computer. De chip is ontworpen door Future Technology Devices [8]. In de volgende figuur zien we het schema van de FTDI-chip: We moeten opmerken dat de figuur niet volledig overeenkomt met connecties die in realiteit gemaakt zijn. We willen namelijk communiceren met de microcontroller die slechts signalen van 3.3 Volt aankan i.p.v. de normale 5 Volt. We moeten dus pin 6 (3v3OUT) verbinden met pin 14 en 31 (VCCIOA). Ook moeten er bij elke I2C communicatie twee pull-up weerstanden aanwezig zijn, die ervoor zorgen dat de SDA- en SCL-lijn automatisch naar 3.3V getrokken worden wanneer ze niet gebruikt worden. Deze twee weerstand hebben een waarde van 10kΩ.
3.5 I2C/USB controller: FT2232D
22
We zien op de figuur dat we gebruik maken van een extern crystal die zorgt voor een oscillatie van 6MHz. Dit crystal is gefabriceerd door Murata en wordt aangeraden om te gebruiken bij deze chip. Dit crystal bestaat uit 3 pinnen, waarvan de middelste aan de grond moet geconnecteerd zijn. Parrallel hierover plaatsen we een weerstand van 1 M Ω en de capaciteiten van 27pF mogen we hierdoor negeren. De belangrijkste signalen op dit schema zijn pin 2 en 3 van de USB-aansluiting, die zorgen voor de up- en downstreamcommunicatie met de pc, en ook de pinnen 22, 23 en 24 van de FT2232D zijn belangrijk. De eerste twee worden verbonden en zorgen voor de effectieve communicatie en zijn aangesloten op de SDA-lijn. De ene pin zorgt eigenlijk voor input en de andere voor output. Pin 24 wordt gebruikt om de SCL-lijn te controleren. Het I 2 C-protocol (Inter-Integrated Circuit) wordt vaak gebruikt en gaat als volgt te werk. [9] Op het niveau van de fysische laag zijn voor het protocol slechts twee verbindingen noodzakelijk: een seri¨ele datalijn (SDA) en een seri¨ele kloklijn (SCL). Deze twee lijnen zijn open-drain zoals geillustreerd in figuur 3.7. Op de figuur is duidelijk te zien dat een IC de lijn enkel laag kan trekken en niet hoog. Hierdoor moet de lijn voorzien zijn van een pull-up weerstand (Rp ) zodat, indien geen enkel device de lijn laag trekt, ze automatisch hoog komt te staan. Naast de SDA en SCL lijnen worden meestal ook de voeding (VCC) en de referentie (GND) als lijnen aangeboden, hoewel dit geen verplichting is. Een node kan in het busprotocol slechts twee mogelijke rollen vervullen: master of slave. Een master initieert steeds een transmissie van gegevens door een slave te adresseren en levert het kloksignaal op de kloklijn. Een slave bezit een uniek adres bestaande uit 7 bits en beantwoordt de vragen van de master indien hij geadresseerd wordt. Het I 2 C protocol voorziet ook dat meerdere masters op ´e´en buslijn verbonden worden. Figuur 3.8 illustreert het verloop van datatransmissie in het I 2 C-protocol. De master initieert de communicatie door de startconditie op de lijnen te plaatsen. Vervolgens zendt de master het 7 bit adres van de slave waarmee hij wenst te communiceren, gevolgd door een enkel bit dat uitdrukt of hij wenst te schrijven (0) of te lezen (1). De geadresseerde slave bevestigt dat de boodschap goed ontvangen werd door een ACK op de datalijn te plaatsen. Indien een schrijfoperatie wordt uitgevoerd zendt de master byte per byte de gewenste data door naar de slave, die op zijn beurt elke byte bevestigt met een ACK. Indien een leesoperatie wordt uitgevoerd zijn de rollen net omgekeerd, met als enige verschil dat de master geen ACK meer zendt indien hij geen bytes meer wenst te ontvangen van de slave. Nadat de datatransmissie is afgelopen plaatst de master de stopconditie op de lijnen om het einde van de communicatie aan te geven.
3.6 DC/DC-converter: L78L33ACUTR
23
De startconditie wordt gekenmerkt door een overgang van hoog naar laag op SDA terwijl SCL hoog blijft. Een stopconditie bestaat uit een overgang van laag naar hoog op SDA terwijl SCL hoog blijft. Bij het doorsturen van bytes wordt steeds begonnen bij het meest significante bit en een ACK bestaat uit het laag trekken van SDA. Het aanpassen van de waarde van SDA gebeurt enkel terwijl SCL laag is en bijgevolg is de data op SDA enkel geldig terwijl SCL hoog is. Tussen de transmissie van twee opeenvolgende bytes kan de ontvanger de zender doen wachten door SCL laag te trekken. Op deze manier kan de ontvanger eerst de data verwerken alvorens de volgende byte te ontvangen. Indien de master op het einde van de communicatie onmiddellijk opnieuw wenst te communiceren, kan hij ook de startconditie verzenden in plaats van de stopconditie. Op deze manier behoudt de master de controle over de bus en kan hij bijvoorbeeld onmiddellijk een leesoperatie uitvoeren na een schrijfoperatie.
3.6
DC/DC-converter: L78L33ACUTR
Dit is een heel compacte chip die ervoor zorgt dat we slechts ´e´en (duale) spanningsbron nodig hebben, namelijk die van +/- 15V. Deze component zorgt namelijk voor een stabiele omzetting van de spanning naar 3.3 Volt. Met dit spanningsniveau kan de microcontroller aangestuurd worden. Voor de driver die de communicatie tussen de pc en elektronica regelt is dit niet nodig, deze zal zijn spanning krijgen via de USB-aansluiting.
3.6 DC/DC-converter: L78L33ACUTR
Figuur 3.6: Het connectiediagram van de FT2232D.
24
3.6 DC/DC-converter: L78L33ACUTR
Figuur 3.7: I2C-bus opbouw.
Figuur 3.8: Het verloop van datatransmissie bij I2C.
25
BREADBOARDDESIGN
26
Hoofdstuk 4 Breadboarddesign In een eerste fase stellen we een breadboarddesign op waarbij de sensor een led laat branden afhankelijk van het gewicht op de sensor. Indien niemand de sensor betreedt, is de led uit. Naarmate er meer druk uitgeoefend wordt op de sensor, begint de led feller en feller licht te geven. Het breadboarddesign is weergegeven op de volgende foto:
Figuur 4.1: Het breadboardontwerp van de stapdetector.
BREADBOARDDESIGN
27
In het centrum merken we de LVDT-signaalconditioneerder op die in een socket is gemonteerd opdat deze makkelijk met het breadboard kan verbonden worden. Onderaan in het centrum vinden we de operationele versterkers terug. Links van deze opamps bemerken we de brugschakeling waar de sensor zelf aan geconnecteerd zal worden. Eerst werd er geen gebruik gemaakt van de multiplexer die links op het bordje te zien is. Deze werd pas later bijgevoegd en kan dus een matrix van sensoren uitlezen. Dit zou handig zijn om bijvoorbeeld meerdere sensoren in een tapijt te integreren. Een eerste testfase bestaat erin om bekende condensatoren in te voegen op de plaats van de sensor. Een grotere capaciteitswaarde zorgt ervoor dat de led feller brandt. Tijdens deze test viel het op de de dimensionering nog niet volledig correct was. Een herberekening van de waarden en aanpassing zorgde uiteindelijk dat de led fel genoeg brandde bij een voldoende hoge capaciteitswaarde. Nu was het tijd om de stapsensor te introduceren in het breadboarddesign. Eerst werd deze ontworpen in de cleanroom. De sensor (zie figuur 4.2) bestaat uit twee polymide koperfolies van ongeveer 10 cm x 10 cm. Hiertussen is een isolerend schuimlaagje van polyurethaan. De dikte van deze laag is ongeveer 1 mm. Eigenlijk is de dikte niet zo belangrijk, zolang we maar een reproduceerbaar resultaat krijgen. Daarom cre¨eren we een vijftal samples om na te gaan of deze effectief ongeveer dezelfde capaciteitswaarden weergeven. Een laatste sample was geconstrueerd met de koperfolies omgekeerd zodat de koperzijdes van elkaar weg lagen. We wilden hiermee nagaan of de invloed hiervan significant is of niet.
Figuur 4.2: Foto van de sensor.
BREADBOARDDESIGN
28
We controleerden de verschillende samples en vonden dat deze allemaal schommelden rond de 125 pF. We kunnen dus concluderen dat we een stabiele waarde hebben, en dat het resultaat reproduceerbaar is. De speciale sensor met kopervlakken van elkaar weggericht, had een grotere capaciteit dan de andere, maar zou ook kunnen gebruikt worden. De afwijkingen onderling zijn waarschijnlijk vooral te wijten aan de dikte van de polyurethaan. De ontwikkeling van deze laag is immers niet gecontroleerd waardoor de dikte soms kan afwijken van de nominale waarde. Ook de porositeit van het schuim kan mee bepalen dat de di¨elektrische constante verschillend is van sample tot sample. We passen de brugschakeling aan zodat deze voldoet aan de gemeten capaciteitswaarde. Nu de sensor klaar is en het breadboarddesign volledig, kunnen we testen als de combinatie van beide ook nog steeds een correct resultaat levert. We merken dat het ledje inderdaad meer oplicht wanneer de stapdetector ingedrukt wordt. Deze oplichting varieert van sensor tot sensor en we zouden deze variantie kunnen wegwerken door een veranderlijke weerstand in de brug in te bouwen. We hebben echter gekozen om de variantie softwarematig te veranderen en hoeven dus geen wijziging aan te brengen in de layout. We kunnen dus concluderen dat de ontworpen sensor en de dimensionering van de componenten correct zijn. We gaan dus over tot het uiteindelijk ontwerp in flexibele elektronica.
LAYOUT
29
Hoofdstuk 5 Layout 5.1
Schematic
We begonnen met het ontwerpen van de schematic in PSpice. Het resultaat is te zien in de volgende figuur (een grotere figuur is te vinden in de bijlages).
Figuur 5.1: De schematic van het systeem.
5.2 Ontwerp
5.2
30
Ontwerp
Het ontwerp van de layout kan beginnen. We hebben ervoor gekozen om het ontwerp in OrCad te doen omdat we hier al meer ervaring mee hebben. Andere mogelijkheden waren onder andere Eagle of MentorGraphics. Wegens de beperkte ervaring van ontwerpen van PCB’s, bestond deze fase uit verschillende stappen van redesignen. In eerste instantie was het idee om de communicatie met de pc te laten verlopen met een extern bordje. De connectie zou eenvoudigweg met draden gesoldeerd worden aan het bordje. We merken dus geen USB-aansluiting en de component FT2232D is ook niet aanwezig. Het ontwerp hiervan is zichtbaar op figuur 5.2.
Figuur 5.2: Eerste poging tot ontwerp layout.
5.2 Ontwerp
31
Centraal merken we de pads op van de signaalconditioneerder. Onderaan zal de microcontroller geplaatst worden. Linksboven staat de kleine dc/dc-converteerder en daaronder de multiplexer die ervoor zorgt dat meerdere sensoren kunnen aangesloten worden. Omdat het veel simpeler is om flexibele elektronica te maken op ´e´en laag, werd de layout dus enkel in de toplaag gerouteerd. Dit zorgde voor omslachtige verbindingen en dit werd opgelost door weerstanden in te voegen die een waarde hebben van 0Ω. Deze cre¨eren dus eigenlijk een klein brugje waaronder andere signalen door kunnen passeren. Dit is duidelijk zichtbaar op de figuur. Deze weerstanden worden R0-weerstanden genoemd. Uiteindelijk zien we rechts nog de pads waar we de communicatie met de I 2 C-driver aan zullen solderen. De drie pads bovenaan zorgen voor de voeding: +15 V, GND en -15 V. De linkerpads zijn de connectie met de sensoren zelf. In het totaal kunnen er acht sensoren aangeschakeld worden. Dit ontwerp had vele nadelen en moest nog een grote facelift krijgen vooraleer deze kon opgezonden worden om het masker te laten maken. De volgende redenen lagen aan de grondslag van een nieuw ontwerp: De layout is gebaseerd op het feit dat een externe driver zal zorgen voor de communicatie met de pc. We willen echter dat deze ook op het bordje ge¨ıntegreerd is en zullen dus nog de FT2232D moeten toevoegen aan het ontwerp. Het is ook niet handig om de verbinding met de pc te voorzien door draden te solderen aan de flexibele elektronica. Aangezien we gekozen hebben voor een USBcommunicatie, zullen we ook een USB-aansluiting moeten plaatsen waaraan een kabel dan makkelijk kan worden aan- en afgekoppeld worden. De vele R0-weerstanden maken de assemblage van de componenten zeer risicovol en we willen eigenlijk een minimum aan componenten zodat de kans op slechte connectie of kortsluiting ook miniem is. In deze layout zijn er zo’n 82 R0-weerstanden gebruikt. In deze testfase is het ook handige om makkelijk te bereiken testpunten te hebben. Dit zijn gewoon vlakjes op de layout waar een probe tegenaan kan gehouden worden om het signaal te meten.
In de figuur 5.3 is de tweede layout weergegeven die gebruikt is voor de creatie van de flexibele elektronica. Weer merken we centraal, onderaan, linksboven en linksonder respectievelijk de componenten: signaalconditioneerder, microcontroller, dc/dc-converteerder en multiplexer. De bijkomende componenten zijn de USB-aansluiting centraal bovenaan,
5.2 Ontwerp
32
en de I 2 C-driver rechtsbovenaan. In dit ontwerp is er slechts gebruik gemaakt van twee R0-weerstanden, alhoewel deze groter gekozen zijn dan in de vorige versie. Deze zijn ook aangegeven op de figuur door een rode rechthoek. We merken dat sommige signalen hierdoor omslachtige routes moeten nemen eer ze aan hun gewenste pin komen. Ook zijn de baantjes in dit ontwerp smaller gekozen omdat de kwaliteit van instrumenten in de cleanroom voldoende hoog is om een pad met dikte 0.1 mm te kunnen ontwerpen.
Figuur 5.3: Tweede poging tot ontwerp layout.
Ook dit ontwerp was niet feilloos en er waren nog een paar opmerkingen die verbeterd konden worden. Eerst en vooral was er niet genoeg stilgestaan bij de USB-aansluiting. De gekozen component is immers redelijk groot waardoor deze niet handig is om in een tapijt te
5.2 Ontwerp
33
integreren. De USB-aansluiting werd vervangen door een mini-USB-aansluiting. De tweede aanpassing die kon worden doorgevoerd, zijn de componenten die niet gebruikt worden te verwijderen. Een aantal componenten worden immers gebruikt om offset-aanpassingen te maken of andere toepassingen die niet gebruikt worden in deze thesis. Andere componenten daarentegen konden nog toegevoegd worden zodat de layout voldeed aan de specificaties van de datasheets. Deze componenten zijn echter niet noodzakelijk en worden vaak verwaarloosd in projecten. Toch zullen we deze toevoegen om zo correct mogelijk te werk te gaan. Uiteindelijk was er nog ´e´en belangrijke verandering die cruciaal is voor de werking van dit systeem: de uitgang van de signaalconditioneerder moet verbonden worden met een pin van de microcontroller die in staat is om analoge waarden naar digitale om te zetten. Dit was in de vorige versie vergeten en een willekeurige pin was geselecteerd. Dit werd opgelost door het met de juiste pin te solderen. Het resultaat van dit ontwerp, wordt in figuur 5.4 weergegeven. In deze layout werd ook een aanpassing gemaakt voor de diktes van de draden. Voor voedingslijnen van hoge voltages werd een dikte van 0.25 mm gekozen, 0.2 mm voor voedingslijnen van 5 V en 0.15 voor voedingslijnen van 3.3 V. De ground werd ook op 0.25 mm bepaald tegenover de standaarddikte van 0.1 mm. Terwijl het debuggen verder ging op het tweede ontwerp, kozen we ervoor om een extra speceficatie in te voeren: compactheid van het design. We wilden het design zo compact mogelijk houden, en een finale layout werd gemaakt. Deze zou volledig in orde moeten zijn om het systeem te doen werken. We waren immers te weten gekomen dat er bij de processing van de flexibele elektronica van het tweede ontwerp iets fout gelopen was. Een processtap moet waarschijnlijk te lang geduurd hebben, of een chemische samenstelling te zwak. Hierdoor was het solderen van de componenten op de flex niet betrouwbaar: soms gaven de componenten contact met de koperlaag, maar daarvoor was het nodig om druk uit te oefenen op sommige chips. De adhesiekrachten tussen het soldeersel en het nikkel-goud van op de pads was niet voldoende. Een nieuwe ontwikkeling van de flex, of beter, een nieuwe layout processen was aangewezen en we konden onmiddellijk de gewenste compacte layout uitvoeren die zichtbaar is in figuur 5.5. Omdat we zo compact mogelijk wilden werken, hebben we de dikte van alle paden minimaal gekozen en geen onderscheid gemaakt tussen voedingsdraden of signalen. Aangezien we met geen grote stromen te maken hebben, zou dit geen invloed mogen hebben op het resultaat.
5.3 Processing
34
Figuur 5.4: Derde poging tot ontwerp layout.
5.3
Processing
De processing van de flex gebeurd in verschillende stappen. We overlopen kort even de stappen die in de cleanroom worden uitgevoerd. Het uiteindelijke overloop is te zien in figuur 5.6 De eerste stap bestaat erin om een koperfolie te nemen en deze op een substraat te plakken zodat het stevig vast zal zitten tijdens de processtappen. Hierbij moeten we ervoor zorgen dat er zo weinig mogelijk luchtbellen zich onder de folie bevinden omdat deze tijdens sommige fases kunnen uitzetten en zorgen voor vervorming van
5.3 Processing
35
Figuur 5.5: Finale poging tot ontwerp layout.
de folie. Ook willen we zeker zijn dat de folie niet met stof is bevuild, en maken het proper met de vluchtige vloeistof IPA (isopropyl alcohol) die zeer geschikt is om oppervlakten schoon te maken. Daarna blazen we het droog met N2. Vervolgens gaan we een micro-ets uitvoeren op het koper, omdat er een klein laagje op ligt die het beschermt tegen krassen of dergelijke. Ook al is er geen zo’n laag aanwezig, toch is het beter om een klein beetje te etsen om zeker te zijn dat het contact met het koper optimaal zal zijn. De volgende belangrijke fase bestaat erin om op de juiste plaatsen het koper over te houden, zodat deze de gewenste layout vormen. Hiervoor gebruiken we een fotoresist die op het vlak wordt aangebracht via spinning: een kleine druppel wordt in het midden geplaatst en door een centrifugale kracht, waaiert dit zich uit over de hele oppervlakte met een uniforme dikte. Om deze dikte al wat vaster te maken, gebruiken we een prebake die ervoor zorgt dat de resist lichtjes opwarmt en vaster wordt. Daarna vindt de belangrijkste stap plaats: het belichten van de gedeelten die verwijderd mogen worden. Via een UV-lamp belichten we een masker van de layout, die zijn ’schaduw’ werpt op het substraat. Door deze belichting wordt de compositie van de resist aangepast en zullen de belichte delen anders reageren op ontwikkelvloeistof dan de niet-belichte plaatsen. We laten dit dan even rusten in
5.3 Processing
36
deze ontwikkelvloeistof zodat alle belichte delen los kunnen komen. Hierna kunnen we het volledig laten uitbakken zodat de overgebleven delen goed vasthechten. Om overblijvende losgekomen deeltjes te verwijderen, wordt er nog een korte ets gedaan. De voorlaatste stap is het aanbrengen van het soldeermasker. In deze fase zal er een laag aangebracht worden die de koperbaantjes beschermt van de buitenwereld (passivatielaag) en zal op de juiste plaatsen een opening voorzien zodat deze kunnen in aanraking komen met de chips of draden. Deze stap wordt via screenprinting gedaan. Een extra stap die uit voorzorg genomen wordt is het aanbrengen van de screenprint op de achterkant van de flex. Dit zorgt ervoor dat eventuele stress die veroorzaakt wordt door het soldeermasker ongedaan gemaakt wordt, omdat dezelfde tegengestelde trek wordt veroorzaakt door de achterkant. Hierdoor zal het flex-substraat niet beginnen krullen. Nikkel-goudplating is de laatste stap en dient voor een optimale bonding tussen het soldeersel en de pads. Deze chemische verbinding zal aangebracht worden op plaatsen waar het substraat in contact zal komen met soldeersel. De adhesiekrachten worden hierdoor bevorderd.
5.3 Processing
37
Figuur 5.6: Processtappen.
SOFTWARE
38
Hoofdstuk 6 Software 6.1
Code
We komen uiteindelijk aan het laatste deel aan en dit is het schrijven van de software die nodig is in de microcontroller en op de pc. De code die in de microcontroller zal geprogrammeerd worden, wordt met behulp van een jtag-kabel van Olimex doorgestuurd naar de MSP430 (extra pads voor deze aansluiting zijn aanwezig). In de code moeten we ervoor zorgen dat we verschillende features activeren en aansturen en dat de pinnen correct zijn ge¨ınitialiseerd. De code wordt geschreven met behulp van de handleiding die door Texas Instruments is voorzien. Eerst en vooral moeten we ervoor zorgen dat de ADC’s goed geconfigureerd zijn en dat deze van de correcte pinnen zijn voorzien. We zorgen er tegelijkertijd voor dat ingelezen data opgeslaan wordt in een lijst die doorgestuurd kan worden. Vervolgens initialiseren we de interface om via I 2 C te communiceren. Uiteindelijk sturen we de data door naar de pc. De code is hieronder beschikbaar. Sommige delen van de code bestaan uit commentaar die nuttig is bij het debuggen van het systeem. Het eerste deel is de configuratie van alle parameters. Hier worden de variabelen ge¨ınitialiseerd voor lussen, data en ook voor de sensoren. Er zijn immers 3 pinnen voorzien die naar de multiplexer gaan en die de pinnen A0, A1 en A2 aansturen. Ook worden in dit gedeelte de juiste delen van de msp aangeschakeld en anderen afgeschakeld zoals de watchdog-timer. #include "msp430x22x4.h" volatile unsigned int i; unsigned int j;
// volatile to prevent optimization
6.1 Code
// amount of sensors unsigned char sensoren = 8; unsigned char *PTxData; volatile unsigned char TXByteCtr; unsigned int TxData[]; unsigned char *PSensors; const unsigned char Sensors[] = { 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF }; int main(void) { WDTCTL = WDTPW + WDTHOLD; // BCSCTL1 = CALBC1_8MHZ; // DCOCTL = CALDCO_8MHZ;
39
// Pointer to TX data // Table of data to transmit // Pointer to Sensors-array
// // // // // // // //
Sensor Sensor Sensor Sensor Sensor Sensor Sensor Sensor
1, left 2 3 4 5 6 7 8, right
// Stop watchdog timer // Set DCO to 8MHz
// configuration ADC sampling ADC10CTL0 = ADC10SHT_3 + ADC10ON; ADC10AE0 |= 0x01;
// 64x, ADC10 ON // P2.0/A0 analog function select
// general configuration P3SEL |= 0x06; UCB0CTL1 |= UCSWRST; UCB0CTL0 = UCMODE_3 + UCSYNC; UCB0I2COA = 0x48; UCB0CTL1 &= ~UCSWRST;
// // // // //
Assign I2C pins to USCI_B0 Enable SW reset I2C Slave, synchronous mode Own Address is 048h Clear SW reset, resume operation
6.1 Code
40
Het volgende deel stuurt de sensoren die in de bovenste tabel waren opgeslagen, correct aan via de A0, A1 en A2 pinnen van de multiplexer. Ook leest deze de data in, converteert deze naar een 10-bit-woord en verstuurt ze tenslotte via de I2C-interface naar de driver.
//operation while (1) { PSensors = (unsigned char *)Sensors; for (j=0;j<sensoren;j++) { P4OUT = *PSensors++; // store in TxData[] ADC10CTL0 |= ADC10IE; ADC10CTL0 |= ENC + ADC10SC; __bis_SR_register(CPUOFF + GIE); ADC10CTL0 &= ~ADC10IE; TxData[j] = ADC10MEM;
// Start of Sensors-array // Next sensor // Drive next sensor
// // // //
ADC10-interrupt enabled Sampling and conversion start LPM0, ADC10_ISR will force exit ADC10-interrupt disabled
// // // // // // // //
Start of TX buffer Clear TX byte count Enable STT and STP interrupt Enable TX interrupt Enter LPM0 w/ interrupts Remain in LPM0 until master finishes RX Disable STT and STP interrupt
} // send from TxData[] PTxData = (unsigned char *)TxData; TXByteCtr = 0; UCB0I2CIE |= UCSTPIE + UCSTTIE; IE2 |= UCB0TXIE; __bis_SR_register(CPUOFF + GIE);
UCB0I2CIE &= ~UCSTPIE; UCB0I2CIE &= ~UCSTTIE; IE2 &= ~UCB0TXIE; } }
// Disable TX interrupt
6.1 Code
41
Dit laatste deel code zorgt voor de correcte interupt-service-routines (ISR). //ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR(void) { __bic_SR_register_on_exit(CPUOFF); }
// Clear CPUOFF bit from 0(SR)
//-----------------------------------------------------------------------------// The USCI_B0 data ISR is used to move data from MSP430 memory to the // I2C master. PTxData points to the next byte to be transmitted, and TXByteCtr // keeps track of the number of bytes transmitted. //-----------------------------------------------------------------------------#pragma vector = USCIAB0TX_VECTOR __interrupt void USCIAB0TX_ISR(void) { UCB0TXBUF = *PTxData++; // Transmit data at address PTxData TXByteCtr++; // Increment TX byte counter } //-----------------------------------------------------------------------------// The USCI_B0 state ISR is used to wake up the CPU from LPM0 in order to do // processing in the main program after data has been transmitted. LPM0 is // only exit in case of a (re-)start or stop condition when actual data // was transmitted. //-----------------------------------------------------------------------------#pragma vector = USCIAB0RX_VECTOR __interrupt void USCIAB0RX_ISR(void) { UCB0STAT &= ~(UCSTPIFG + UCSTTIFG); // Clear interrupt flags if (TXByteCtr) // Check TX byte counter __bic_SR_register_on_exit(CPUOFF); // Exit LPM0 if data was } // transmitted
6.2 Programma
6.2
42
Programma
Het programma LabView wordt gebruikt om een virtueel gebruikerspaneel aan te maken die de sensor kan uitlezen. Het bestaat uit twee delen: het blokdiagram (een gedeelte is zichtbaar op figuur 6.1) is het onderliggende gedeelte dat de berekeningen uitvoert, terwijl de interface zelf meer gebruiksvriendelijk is en de resultaten weergeeft (een gedeelte is zichtbaar op figuur 6.2). Het blokdiagram bestaat uit verschillende subgedeeltes (een volledige figuur is zichtbaar in de bijlages): Het eerste grote blok opent de usb-aansluiting en zorgt ervoor dat de communicatie kan beginnen Het volgende gedeelte initialiseert de verbinding zodat de correcte snelheid voor I2C wordt toegepast. We moeten rekening houden met de maximale snelheid van de microcontroller die 32kHz bedraagt. De volgende blok kan aangestuurd worden om de verbinding met de usb te sluiten. Het belangrijkste blokje echter is het laatste die de berekeningen uitvoert van de doorgestuurde data van de microcontroller. We hebben ervoor gekozen om de resultaten op vier mogelijkheden weer te geven in een tijdsschema: de samples afzonderlijk, het gemiddelde van een aantal opeenvolgende samples, het maximum over een aantal samples en een piek bij detectie van een verandering die instelbaar is. Deze vier grafieken zijn uitgewerkt voor slechts ´e´en sensor, de anderen nemen steeds de maximale waarde over een aantal samples (in dit geval 30).
De gebruikersinterface ziet er volledig anders uit en bestaat uit verschillende displays, knoppen en invulbalken. Hier kunnen we de gepaste waarden invullen en aanpassen naar believen. We zien verschillende mogelijkheden (een volledige figuur is zichtbaar in de bijlage): Het openen van de usb-aansluiting kunnen we doen door op de knop START-UP te duwen Met behulp van de clock-divisor, kunnen we de snelheid van de connectie instellen en deze wordt standaard op 250 gezet. We zorgen er ook voor dat we de juiste
6.2 Programma
43
microcontroller aansturen die het adres 91 heeft meegekregen in voorgaande code (in de code staat echter 48 ofte 1001000, maar deze moet omwille van het I2C-protocol naar links opgeschoven worden, ofte 10010000 en hierbij moeten we nog de laatste bit op 1 zetten opdat er data wordt ingelezen i.p.v. geschreven). Dit vullen we in bij WriteControlBuffer. We klikken op de Control Acknowledge zodat deze groen oplicht. Deze zorgt ervoor dat de communicatie steeds een bepaalde tijd zal wachten op een ACK van de microcontroller, vooraleer voort te doen met zijn taken. Deze bepaalde tijd kan eronder ingevuld worden en is standaard 20 ms Uiteindelijk is het klaar om te starten en drukken we op INITIALISEER Nu kunnen we de data inlezen door de knop LEES omhoog te plaatsen. De samples worden onmiddellijk weergegeven op de grafieken. Indien het correct gaat, zien we een constante lijn (met ruis) die bij het indrukken van de sensor omhoog gaat. Indien er iets fout loopt, wordt dit weergegeven in het bovenste kader m.b.v. een foutmelding.
6.2 Programma
44
Figuur 6.1: Blokdiagram van het programma in LabView.
6.2 Programma
Figuur 6.2: Gebruikersinterface van het programma in LabView.
45
RESULTATEN
46
Hoofdstuk 7 Resultaten Het eerste deel van de thesis bestond erin een oplossing te zoeken om een capaciteitsverandering op te meten. Deze methode werd gevonden en gesimuleerd via PSpice. De simulatieresultaten gaven al correcte waarden, maar deze konden nog geoptimaliseerd worden. Dit was echter niet meer noodzakelijk aangezien we besloten hadden om van het pad af te stappen om een eigen analoog ontwerp te cre¨eren. De voorgestelde chip die in staat was om een ac-brug aan te sturen en die met een uitgangsspanning aangaf welke capaciteitswaarde er gemeten werd, gaf een oplossing om verder te gaan met het maken van een schema. Het circuit werd gedimensioneerd en er werd gezocht naar welke componenten er konden gebruikt worden om het idee in realiteit uit te voeren. Een eerste fase bestond erin om een breadboarddesign te ontwerpen. Door de eenvoudige manipulaties van de componentwaarden, was het mogelijk om snel de dimensionering te herberekenen en onmiddellijk aan te passen. Voor vaste referentiecapaciteiten gaf het ontwerp correcte resultaten door middel van een led die oplicht bij hoge waardes en die dimt bij lagere. Daarna volgde de creatie van de sensor zelf, en deze werd uitgevoerd in de cleanroom. Om zeker te zijn dat de resultaten reproduceerbaar zijn, maakten we verschillende samples aan. Deze sensoren werden met draden voorzien. We gingen na als alle samples in hetzelfde bereik liggen en konden concluderen dat alle capaciteiten schommelden rond een stabiele waarde van 125 pF. De variantie op deze waarden kan door verschillende redenen zijn: de dikte van het isolerende schuimlaagje tussen de kopervlakken kan vari¨eren, de grootte van de kopervlakken en de grootte van het polyeruthaan. Vervolgens werd de combinatie sensor-breadboard uitgetest, en dit gaf - na wat herdimen-
RESULTATEN
47
sionering - het resultaat van een oplichtende led bij een toenemende druk op de sensor, en een gedoofde led bij afwezigheid van een stap. Een uitbreiding werd toegevoegd op het breadboard door een component die in staat was om verschillende sensoren te multiplexen. Dit gaf een correct resultaat. De layout werd ontworpen in OrCad en onderging verschillende stappen. Wegens de beperkte ervaring met het ontwerpen van pcb’s moest er vaak geredesigned worden. Ook extra componenten toegevoegd die oorspronkelijk eerst als externe componenten zouden aangesloten worden aan het bordje. Na veel trial en error bekwamen we uiteindelijk een layout die voldeed aan de normen en dit werd opgestuurd om een masker te laten maken. Na de levering van het masker begon het eigenlijke proces van de creatie van de flexibele elektronica. Deze onderging verschillende stappen in de cleanroom en uiteindelijk hadden we een goed sample gecre¨eerd. Toch was het assembleren in de laatste stap niet vlot gegaan aangezien het soldeersel niet voldoende uitvloeide over de pads. Een reden hiervoor zou kunnen zijn dat de Nikkel-Goud plating niet voldoende lang was uitgevoerd. Dit sample gaf echter toch contact op de nodige plaatsen en er kon hier dus zonder probleem mee gewerkt worden.
Figuur 7.1: De flexibele elektronica: ontwerp 1.
RESULTATEN
48
De eerste flex gaf geen goede resultaten: bij het aanschakelen van de voedingsbron gaf rook aan dat er iets fout was met het bordje. De voedingslijnen kregen blijkbaar veel te veel stroom en werden zo warm dat de flex errond aan het smelten was. In eerste instantie dachten we dat de voedingsbaantjes te dun gekozen waren, maar dit was onwaarschijnlijk omdat de componenten op de flex niet veel stroom nodig hebben. Nadat we een extra koperdraadje gesoldeerd hadden tussen de belangrijkste voedingspinnen, testten we opnieuw de schakeling. Het gaf geen soelaas en de uitleg voor het probleem moest ergens anders liggen. Na lang zoeken werd het uiteindelijk duidelijk dat de polaire condensatoren verkeerd stonden. Wegens een misverstand waarbij een streep als min werd ge¨ınterpreteerd (terwijl deze de positieve zijde aantoonde) was het systeem waardeloos geworden. De assemblage van flex nummer 2 begon en dit gaf geen problemen op het eerste zicht. Alles werd correct aangeschakeld en de sensor werd inderdaad correct gelezen door de signaalconditioneerder. Dit was mogelijk door het uitgangssignaal te meten met een voltmeter. Toch bleek ook hier niet alles correct te verlopen. Een fout in de layout zorgde ervoor dat de uitgangsspanning van LVDT niet aan een pin van de microcontroller aangesloten was die in staat was om deze analoge waarde om te zetten naar een digitale waarde. Via een extern draadje was dit wel mogelijk en werd het probleem tijdelijk omzeild. Maar niet alleen daar lag er een grote ontwerpfout: ook was er bij de keuze van sommige IC’s te weinig nagedacht en waren de eerste IC’s die zorgden voor de versterking van de verschilspanning over de brug en het multiplexen van de sensoren, niet in staat om zo’n hoge spanningen aan te kunnen. De interne opamps van de microcontroller konden slechts spanningen aan binnen het bereik van de voedingsspannning en zorgden er dus voor dat de versterking nooit negatieve spanningen kon versterken; deze werden afgesneden op -0.5 V. Ook de ge¨ımplementeerde multiplexer was niet in staat de juiste spanningen door te geven en moest vervangen worden. Een laatste belangrijk feit die de doorslag gaf tot het ontwerp van een nieuwe layout, was dat opnieuw het contact tussen de flex en de chips niet was zoals het moest: enkel bij druk op sommige IC’s konden deze correct functioneren. Het nieuwe ontwerp had een nieuwe specificatie gekregen: zo compact mogelijk. Dit werd gerealiseerd en het resultaat is te zien in figuur 7.2. Dit ontwerp had geen gebreken en alles kon uitgevoerd worden. Een finale specificatie werd toegevoegd om het systeem zo gevoelig mogelijk te maken. We wilden nagaan hoe gevoelig deze sensor kon gemaakt worden en als deze niet teveel be¨ınvloed werd door ruis en omgeving. De eerste metingen toonden aan dat de sensor niet gevoelig waren voor kleine gewichten, maar een mensenlichaam zou voldoende zijn om het
RESULTATEN
49
Figuur 7.2: De flexibele elektronica: ontwerp 2.
te kunnen detecteren. Maar omdat het niet de bedoeling was om een persoon te kunnen wegen, en enkel slechts detectie nodig was, konden we het systeem laten satureren bij grote gewichten en het zeer gevoelig maken voor kleinere gewichten. Na wat herdimensioneren waren we uiteindelijk in staat om gewichten van hoger dan 250g te detecteren. Er zijn wel twee belangrijke nadelen hieraan verbonden: Het systeem is niet gevoelig voor ruis, maar is echter wel zeer gevoelig voor de nabijheid van een menselijk lichaam. Indien een vinger op een afstand van een halve centimeter wordt gebracht van de sensor, slaat deze al volledig uit en satureert deze alsof het een gewicht detecteert van hoger dan 250g. Dit is heel sterk het geval bij een lichaam, maar komt ook lichtjes voor bij geleidende voorwerpen. De verklaring hiervoor heeft waarschijnlijk te maken met de lading die in ons lichaam zit (statische elektriciteit) waardoor een parasitaire capaciteit gevormd wordt. Een ander nadeel is dat deze configuratie slechts geldig is voor deze ene sensor en steeds moet aangepast worden als een andere sensor wordt aangeschakeld. Dit kan opgelost worden door een soort variabele capaciteit in te bouwen voor elke sensor zodat deze de brug steeds in evenwicht kan brengen in rusttoestand.
RESULTATEN
50
Figuur 7.3: Resultaat van een detectie van 250g.
De resultaten waren goed en toonden aan dat het mogelijk was om op deze manier een gewicht van 250g te detecteren. Spijtig genoeg moet er in de laatste week iets fout gelopen zijn waardoor de microcontroller toch beschadigd geraakt is. Een tweede flex werd gemaakt en toonde dezelfde opmerkelijke fout: de MSP430 werd beschadigd bij het aanschakelen van de JTAG-connector. Er moet waarschijnlijk een stroom- of spanningspiek ergens ontstaan zijn die een interne kortsluiting veroorzaakt in de controller waardoor de voeding aan de grond geconnecteerd wordt. Hiervan hebben we de oorzaak niet meer kunnen nagaan. Na een correcte werking van meer dan twee weken, zouden we kunnen veronderstellen dat er iets teveel veranderd was bij de dimensionering waardoor deze een foutieve spanning veroorzaakte.
BESLUIT
51
Hoofdstuk 8 Besluit Deze thesis heeft ons veel bijgeleerd over de ontwikkeling van een elektronisch systeem. We hebben gemerkt dat het niet eenvoudig is om zomaar alles in elkaar te voegen. Het ontwerp van een analoog systeem vergde veel kennis en ervaring over elektronica in het algemeen en hierbij was er veel nood aan bijkomstige informatie. Gelukkig bestaan er bedrijven die gespecialiseerd zijn in dergelijke ontwerpen en deze aanbieden in de vorm van miniature chips. Met deze chips werken verlichtte de last wat, maar de constructie van het systeem bracht toch nog moeilijkheden met zich mee. We leerden bij over de dimensionering van elektronische componenten en hebben nu meer inzicht hoe we een datasheet van een component kunnen bestuderen. Ook is er een deur opengegaan over de basis van microcontrollers. Door een correcte code te schrijven is het mogelijk om deze voor verschillende applicaties te kunnen laten werken. Als laatste, maar tevens belangrijkste puntje, hebben we veel kennis opgedaan over wat er allemaal in de cleanroom kan gedaan worden. We hebben er de flexibele elektronica gemaakt en leerden hieruit dat de elektronica op sommige vlakken nood heeft aan de chemie. Dit werk heeft een goede basis gelegd voor een verdere ontwikkeling van dit ontwerp en kan al gebruikt worden. We kunnen spreken van een geslaagde missie waarbij we een grote ervaring hebben opgedaan en die onze interesse gewekt heeft voor onderzoek.
BEREKENING FREQUENTIE ASTABIELE MULTIVIBRATOR
52
Bijlage A Berekening frequentie astabiele multivibrator In deze bijlage berekenen we de resulterende frequentie uit voor een astabiele multivibrator, gebaseerd op een operationele versterker. Noemen we I1 de stroom doorheen R1 , I3 de stroom door R3 , VA en VB de negatieve en positieve ingangsklem respectievelijk, dan bekomen we: I1 =
VA − VOU T VB − VOU T VB = −sCVA I3 = =− R1 R3 R2
We vinden: VA =
VOU T R1 VOU T VB = = VA 1 + sR1 C1 R2 + R3
Hieruit volgt: 1 + sR1 C1 =
R2 + R3 R3 sR1 C1 = R2 R2
Uiteindelijk bekomen we: s=
R3 R3 fosc = R1 R2 C1 2πR1 R2 C1
FIGUUR SCHEMATIC
Bijlage B Figuur Schematic In deze bijlage geven we de uitvergrootte figuur van de schematic.
53
FIGUUR SCHEMATIC
54
Figuur B.1: Schematic.
FIGUREN LABVIEW
Bijlage C Figuren LabView In deze bijlage geven we de figuren van het uitgewerkte programma in LabView.
55
FIGUREN LABVIEW
Figuur C.1: Volledig blokdiagram van het programma in LabView: deel 1.
56
FIGUREN LABVIEW
Figuur C.2: Volledig blokdiagram van het programma in LabView: deel 2.
57
FIGUREN LABVIEW
Figuur C.3: Volledige gebruikersinterface van het programma in LabView: deel 1.
58
FIGUREN LABVIEW
Figuur C.4: Volledige gebruikersinterface van het programma in LabView: deel 2.
59
BIBLIOGRAFIE
60
Bibliografie [1] Herbert De Smet. Sensoren en Actuatoren. Faculteit van de Ingenieurswetenschappen: Vakgroep Elektronica en Informatiesystemen, 2006. [2] Wikipedia, the free encyclopedia. http://en.wikipedia.org/. [3] All About Circuits. http://www.allaboutcircuits.com/. [4] The Femto Capacitance Meter. http://nov55.com/. [5] Analog Devices. Universal lvdt signal conditioner. 1995. [6] Texas Instruments. Msp430x22x4 mixed signal microcontroller. [7] Analog Devices. Cmos 8-channel analog multiplexer. [8] Future Technology Devices. Ft2232d dual usb uart / fifo i.c. [9] Benoit Huyghe en Herbert De Smet. Accelerometer project, 2006. [10] Takashi Saito and Masahiro Ofuji. Passenger detection system, 2001. [11] Ryan Seguine. Capacitive sensing techniques and considerations. [12] J. Baeten. Capacitieve opnemers. [13] Add-on capacitance meter. http://www.talkingelectronics.com/. [14] Circuit collection. http://www.ecircuitcenter.com/. [15] Edward John Nicolson. Tactile sensing and control of a planar manipulator, 1994. [16] J. Kalinski. A simple analogue method of amplitude ratio measurement. [17] John C. Scott. A simple null method for measuring the peak-to-peak amplitude of low frequency signals.
BIBLIOGRAFIE
61
[18] Roger L. Frick. Capacitive pressure sensor having circuitry for eleminating stray capacitance. [19] Koichi Futsuhara Masayoshi Sakai and Toshihito Shirai. Mat sensor. [20] William W. Fultz and Morgan D. Murphy. Capacitive weight sensor. [21] Thomas J. Lemense Michael C. McCarthy and Michael J. Fullerton. Capacitive occupant presence detection apparatus for a vehicle seat. [22] D. Bruce Wilson Alfred R. Deangelis and Brian A. Mazzeo. Printed capacitive sensor.
LIJST VAN FIGUREN
62
Lijst van figuren 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
Principe spanningsdeler. . . . . . . . . . . . . . . . . . Principe brug van Wheatstone. . . . . . . . . . . . . . Principe van een ac-brug. . . . . . . . . . . . . . . . . Astabiele multivibrator. . . . . . . . . . . . . . . . . . Astabiele multivibrator met operationele versterkers. . Schema Wien brug oscillator. . . . . . . . . . . . . . . Schema van de driehoeksgolfgenerator. . . . . . . . . . Schema van de Current-to-voltage converteerder met de Simulatieresultaat voor een sensor van 200 tot 300 pF.
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
5 6 6 7 9 10 11 11 12
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8
Functioneel blokdiagram van de signaalconditioneerder AD698. Het interconnectie-diagram van de AD698 voor een AC-brug. . Excitatiespanning tegenover de waarde R1 . . . . . . . . . . . . Schema van de 2 opamps in component OPA2137. . . . . . . . Het functionele blokdiagram van de ADG408. . . . . . . . . . Het connectiediagram van de FT2232D. . . . . . . . . . . . . . I2C-bus opbouw. . . . . . . . . . . . . . . . . . . . . . . . . . Het verloop van datatransmissie bij I2C. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
14 15 16 18 21 24 25 25
4.1 4.2
Het breadboardontwerp van de stapdetector. . . . . . . . . . . . . . . . . . Foto van de sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26 27
5.1 5.2 5.3 5.4 5.5 5.6
De schematic van het systeem. . . . Eerste poging tot ontwerp layout. . Tweede poging tot ontwerp layout. Derde poging tot ontwerp layout. . Finale poging tot ontwerp layout. . Processtappen. . . . . . . . . . . .
29 30 32 34 35 37
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . piekdetector. . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
6.1 6.2
Blokdiagram van het programma in LabView. . . . . . . . . . . . . . . . . Gebruikersinterface van het programma in LabView. . . . . . . . . . . . .
44 45
7.1 7.2 7.3
De flexibele elektronica: ontwerp 1. . . . . . . . . . . . . . . . . . . . . . . De flexibele elektronica: ontwerp 2. . . . . . . . . . . . . . . . . . . . . . . Resultaat van een detectie van 250g. . . . . . . . . . . . . . . . . . . . . .
47 49 50
B.1 Schematic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
C.1 C.2 C.3 C.4
56 57 58 59
Volledig blokdiagram van het programma in LabView: deel 1. Volledig blokdiagram van het programma in LabView: deel 2. Volledige gebruikersinterface van het programma in LabView: Volledige gebruikersinterface van het programma in LabView:
. . . . deel deel
. . . . 1. 2.
. . . .
. . . .
. . . .