GEÏNTEGREERDE PROEF. VTI Sint-Laurentius. Pakketweegschaal. Industriële informatie & communicatietechnologie SCHOOLJAAR 2010-2011.



Vergelijkbare documenten
GEÏNTEGREERDE PROEF. VTI Sint-Laurentius. Pakketweegschaal. Industriële informatie & communicatietechnologie SCHOOLJAAR

VTI Sint-Laurentius De school voor Wetenschap, Techniek en Technologie Pr. Thuysbaertlaan Lokeren info@vti-lokeren.

Condensator. Het hellingsgetal a is constant. Dit hellingsgetal noemen we de capaciteit van de condensator C. Er geldt dus: C = Q U

Inductiemeter via de parallelle poort

Impedantie V I V R R Z R

Locobuffer Handleiding

Technology, Innovation & Society Delft

ES1 Project 1: Microcontrollers

Netwerk Interfacing Data Logging.

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Condensator. Het hellingsgetal a is constant. Dit hellingsgetal noemen we de capaciteit van de condensator C. Er geldt dus: C = Q U

Meten met de multimeter Auteur: Wouter (Flush) [ ]

7,6. Samenvatting door A woorden 12 april keer beoordeeld. Natuurkunde. Natuurkunde Systemen. Systemen

Signalen stroom, spanning, weerstand, vermogen AC, DC, effectieve waarde

Zelf een hoogspanningsgenerator (9 kv gelijkspanning) bouwen

Tweede workshop Arduino

Meting zonnepaneel. Voorbeeld berekening diodefactor: ( ) Als voorbeeld wordt deze formule uitgewerkt bij een spanning van 7 V en 0,76 A:

Tinyserir-RC5. Datasheet. Tinyserir-RC5 Page: 1 of 8

Elektronicapracticum. een toepassing van complexe getallen. Lesbrief

C:\PIC\Navigatielichten\Navigatielichten.c

In- en uitgangssignalen van microprocessoren

PIC Callgever Door PA1RUM

B3C 70cm converter besturing. v PE5PVB bar.net bar.net

De Arduino-microcontroller in de motorvoertuigentechniek (3)

Zelf een simpele ionisatiekamer bouwen

Fig. 5.1: Blokschema van de 555

In deze mannual zal ik het voorbeeld van de Led cube gebruiken maar de principes zijn op alles toepasbaar.

Arbeid, vermogen en rendement

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

Langere vraag over de theorie

Algemene beschrijving van de regelprogramma's

Inhoudsopgave LED dobbelsteen

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (3)

Oefening 1 - Seriële communicatie via USB

Workshop Arduino voor beginners. door TkkrLab Enschede

ES1 Project 1: Microcontrollers

Materialen in de elektronica Verslag Practicum 1

Technisch ontwerp positiebepaling Smart Blocks

Microcontrollers. Bart Kardinaal E Verslag microcontrollers Rev 1.0 Status definitief.

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Inhoudsopgave De condensator

Practica bij het vak. Inleiding tot de Elektrotechniek: Practicum 2 Analoge versus digitale signalen en hun overdracht

AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT. Geschreven door: Tom Vocke

S88XPressNetLI v1.0. Installatie- en gebruikershandleiding en naslagwerk KDesign Electronics, PCB ontwerp door RoSoft

DATALOGGERS. Technolog - Cello 8-kanaals CELLO 8 KANAALS SMS/GPRS DATALOGGER

12 Elektrische schakelingen

Elektronica monteur, Technicus Elektronica

Inleiding elektronica Presentatie 1

Installatiehandleiding

Repetitie Elektronica (versie A)

Stappenmotor Interface. Controller

Gebruiksaanwijzing AVR910 USB Programmer

Pajottenlandse Radio Amateurs. De multimeter

DIGITALE MODE MET POWER SDR

Digitale Systeem Engineering 1. Week 4 Toepassing: Pulse Width Modulation Jesse op den Brouw DIGSE1/

Combinatorische schakelingen

Testen en metingen op windenergie.

3.4.3 Plaatsing van de meters in een stroomkring

Scan-pad technieken. Zet elk register om in een scan-pad register (twee opeenvolgende D-latches: master-slave):

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

Besturingspaneel v Raam E-systeem functie omschrijving v109

Hoofdstuk 5: Signaalverwerking

1. Sluit de LED aan zoals afgebeeld 2. Sluit de USB-kabel aan op de Arduino 3. Klik op de knop uploaden 4. De LED begint te knipperen

Installatiehandleiding

Schriftelijk examen: theorie en oefeningen Fysica: elektromagnetisme

LABO. Elektriciteit OPGAVE: De cos phi -meter Meten van vermogen in éénfase kringen. Totaal :.../ /.../ Datum van afgifte:

Fig. 2. Fig ,5 4 3,5 3 2,5 2 1,5 U (V) 0, temperatuur ( C)

Gebruikershandleiding Axitour AT-900 audio communicatiesysteem

Vak: Labo elektro Pagina 1 / /

16F877A development board cursus deel 1

Bouwbeschrijving en aansluitgegevens.

Antwoorden vragen en opgaven Basismodule

Parallelle poort interface.

Programmeren: Visual Basic

Onderzoeken welke onderdelen noodzakelijk zijn om een PV-installatie autonoom te laten werken.

Installatie-instructies

code Foutmelding Omschijving en Mogelijke oplossingen

Tentamen Elektronische Schakelingen (ET1205-D2)

MATRIX STURING VOOR INDUCTIELUSSEN

Microcontrollers Labo

Opgave 2 Een spanningsbron wordt belast als er een apparaat op is aangesloten dat (in meer of mindere mate) stroom doorlaat.

ANALYSER-DDS een 500Khz tot 65,536Mhz antenne-analyser Intro

Benodigdheden Gloeilampje, spoel, condensator, signaalgenerator die een sinusvormige wisselspanning levert, aansluitdraden, LCR-meter

GEINTEGREERDE PROEF DE COMPUTER ALS TV AFSTANDSBEDIENING

Uitwerkingen VWO deel 1 H2 (t/m par. 2.5)

Zelfbouw frequentieteller

Handleiding software USB PIC DEV. BOARD

Installatie responsbox bij Windows XP en Windows Vista

Module 1: werken met OPAMPS. Project 1 : Elementaire lineaire OPAMP schakelingen.

Dit tentamen bestaat uit vier opgaven verdeeld over drie bladzijden. U heeft drie uur de tijd.

Werkstuk Natuurkunde Schakeling

SmartSDR CAT + DDUtil handboek

Inhoudsopgave De weerstand

Naam: Klas Practicum elektriciteit: I-U-diagram van lampje Nodig: spanningsbron, schuifweerstand (30 Ω), gloeilampje, V- en A-meter, 6 snoeren

Seriële bluetooth verbinding ATmega128

Aan de totstandkoming van dit boekje hebben meegewerkt: HET ELEKTROCARDIOGRAM (ECG).

-Zoek de eventuele benodigde gegevens op in het tabellenboek. -De moeilijkere opgaven hebben een rood opgavenummer.

Arduino : Morse Voltmeter

Transcriptie:

VTI Sint-Laurentius De school voor Wetenschap, Techniek en Technologie Pr. Thuysbaertlaan 1 9160 Lokeren www.vti-lokeren.be info@vti-lokeren.be GEÏNTEGREERDE PROEF Pakketweegschaal Industriële informatie & communicatietechnologie SCHOOLJAAR 2010-2011 Robbe Vehent

2

VTI Sint-Laurentius De school voor Wetenschap, Techniek en Technologie Pr. Thuysbaertlaan 1 9160 Lokeren www.vti-lokeren.be info@vti-lokeren.be GEÏNTEGREERDE PROEF Pakketweegschaal Industriële informatie & communicatietechnologie SCHOOLJAAR 2010-2011 3 Robbe Vehent

1. Voorwoord Dit project boeide mij omdat het een project is waar veel werk en tijd is ingestoken en het echt iets is wat ik zelf heb gemaakt. Vooral dat zelf maken geeft een zekere drang om er aan verder te werken. Het is niet alleen omdat het voor een groot stuk meetelt qua punten maar vooral om het af te krijgen en dan ook trots te kunnen zijn op je eigen werk. 4

Inhoudsopgave 1. Voorwoord... 4 2. Inleiding... 6 3. Omschrijving... 7 4. Hardware... 8 4.1. De gebruikte componenten... 8 4.2 Uitleg hoe de meting wordt uitgevoerd... 8 5. Microcontrollersoftware... 16 5.1 Flowcharts... 16 5.2 Code... 18 5.3 uitleg van de code... 21 5.4 Uitleg over Timer 1... 22 6. Graphical User Interface... 24 6.1 Code met figuur... 24 7. Databladen... 29 7.1 Datasheet PIC 16F877 van Microchip... 29 8. Bronvermeldingen... 31 9. Logboek... 31 5

2. Inleiding Als opdracht heb ik voor een pakketweegschaal gekozen. Daarmee kan je een pakket tot maximum 10 kg wegen op 1 g nauwkeurig. Bij deze opdracht maken we gebruik van een capacitieve sensor. Ik gebruik een oudere digitale weegschaal waarin die capacitieve sensor zit ingebouwd. Er is een pinnetje op het printplaatje van de oude weegschaal waar je een blokgolf kan aftakken waarvan de frequentie veranderd naarmate je meer of minder gewicht op de weegschaal legt. Deze blokgolf, waarvan de periode door een microcontroller wordt geteld, schommelt tussen 15 khz en 30 khz. De gemeten periode wordt doorgestuurd naar de PC via RS232. De pc zet de periode om in een frequentie en aan de hand van die frequentie wordt het gewicht berekend. Het gewicht wordt op het scherm getoond. 6

3. Omschrijving Mijn project is een pakketweegschaal die het gewicht van pakketten meet, dat gewicht doorstuurt naar de PC en het gewicht op het scherm toont. Om te starten met mijn project heb ik, zoals ik bij hardware uitleg, eerst gebruikt gemaakt van een potentiometer ter afwachting van de levering van mijn sensor. Daarna ben ik overgestapt van een krachtsensor naar een capacitieve sensor. 7

4. Hardware 4.1. De gebruikte componenten Bij de hardware worden de volgende componenten gebruikt: - µcontroller - oude weegschaal met capacitieve sensor - Moederbordje voor de µcontroller 4.2 Uitleg hoe de meting wordt uitgevoerd Dit deel wordt niet meer gebruik. Dit is het opzoekwerk van voor ik de plannen wijzigde. De opstelling die wel is gebruikt staat op pagina 12 en verder. In dit onderdeel wordt de werking van de Force Sensing Resistor uitgelegd. Deze component is een weerstand die verminderd in waarde naarmate de kracht die er op uitgeoefend wordt groter wordt. Aangezien ik nog geen FSR had, begon ik alvast met die te vervangen door een potentiometer van 100 K Ω. Je kunt dan de weerstandskarakteristieken van de FSR testen op de voorlopige schakeling met de potentiometer. Hieronder zie je een afbeelding die de schakeling van de FSR illustreert. Figuur 1: RG is een terugloopweerstand en FSR is als een potentiometer. De weerstand aangeduid als FSR is in de voorlopige schakeling vervangen door een potentiometer van 100 KΩ. 8

De karakteristieken van de FSR worden in volgende grafieken weergegeven. Figuur 2: RG values zijn waarden van de RG weerstand van in figuur 1. Figuur 3: Op deze figuur zie je duidelijk dat de weerstand verminderd als er meer kracht komt op te staan. 9

In figuur 1 zie je dat er ook een opamp in de schakeling gebruikt wordt. Ik heb een LM324 IC gebruikt om die opamp te schakelen. Figuur 4: De weerstandswaarde van 0 tot 10 kg. Figuur 5: De weerstandswaarde van 0 tot 1 kg. Nieuwe sensor: Soehnle Weegschaal Capacitieve sensor. Deze sensor wordt wel gebruik maar niet in deze opstelling. De opstelling die wel is gebruikt staat op pagina 12 en verder. De sensor die ik nu gebruik is een sensor uit een oude weegschaal (zie foto). Figuur 6: oude weegschaal waar de capacitieve sensor uit komt. 10

Figuur 7: het plaatje verbonden met de rode draad is de "ground" van de schakeling. Deze sensor maakt gebruik van een capaciteitsmeting. Daarmee bedoelt men dat de capaciteit van deze (grote) beweegbare condensator gemeten wordt zonder belasting en opgeslagen in de µcontroller. Dan wordt de capaciteit gemeten met belasting en vergeleken met de opgeslagen waarde. De eerste bedoeling was om alle drie de plaatjes te gebruiken, maar ik ga nu maar twee plaatjes gebruiken. Het plaatje dat met de rode draad verbonden is, is een niet bewegend plaatje wanneer je de weegschaal induwt op het vlak dat daar voor dient. Zie figuur 6. Figuur 8: schakeling van capacitieve sensor met 2 metalen plaatjes. 11

Om deze sensor te maken ga ik de plaatjes gebruiken die op figuur 7 verbonden zijn met de rode draad en de gele draad. De schakeling hiervan zie je in figuur 8. Voor de schmitt-trigger gebruiken we een IC met allemaal inverterende schmitttriggers. Zie figuur 9. Figuur 9: IC met inverterende schmitt-triggers (links), schakeling van 1 schmitt-trigger (rechts). Verandering van plan. Al het voorgaande ga ik niet gebruiken. Ik ga wel nog de weegschaal en de bijhorende schakeling gebruiken (zie figuur 7 en figuur 6). Op dat plaatje tak ik een blokgolf af op pin 2, waarvan de frequentie wijzigt naarmate de kracht op de weegschaal veranderd. 12

Figuur 10: Frequentie met gewicht op de weegschaal. Frequentie is ongeveer 26 khz. Figuur 10 is de meting van het signaal op pin 2 als er een gewicht op de weegschaal ligt. Figuur 11: Frequentie zonder gewicht op de weegschaal. Frequentie is ongeveer 18 khz. Figuur 11 is de meting van het signaal op pin 2 als er geen gewicht op de weegschaal ligt. 13

Het is nu de bedoeling dat ik die periode meet met de PIC 16f877 controller. Die periode kan ik in mijn GUI omzetten naar frequentie en dan kan ik kalibreren. 4.3 Werking van capacitieve sensor Figuur 11a: Werkingsprincipe van een capacitieve versnellings-opnemer (tek. Seat). De werking van Capacitieve sensoren zoals hierboven is afgebeeld: Deze sensor werkt met 2 condensatoren. Van die condensatoren moet op een of andere manier de capaciteit gemeten worden. Er zijn 2 formules om de capaciteit van een condensator te weten. en C=. In de eerste formule staat de C voor de capaciteit van de condensator, de Q staat voor de lading energie die opgeslagen wordt en de U voor de spanning. C wordt uitgedrukt in Farrad (F) Q wordt uitgedrukt in Coulomb (C) U wordt uitgedrukt in Volt (V) In e twee e formule staat e ε (epsilon) voor het iëlektricum dat is de constante die een eigenschap is van isolatiemateriaal. A staat voor de loodrecht parallelle gemeenschappelijke oppervlakte van de 2 platen, en d staat voor de afstand tussen de 2 platen. Het iëlektricum (ε) wor t uitge rukt in farra per meter (F/m). 14

A wordt uitgedrukt in vierkante meter (m²) d wordt uitgedrukt in meter (m) Om in de eerste formule de spanning te kunnen berekenen, want enkel de spanning kunnen we meten, moeten we ook nog de Q berekenen. Dat gaat met volgende formule: Q=I.t I is de stroom uitgedrukt in Ampère (A) t is de tijd uitgedrukt in seconden (s) Deze tijd is de tijd dat de stroom nodig heeft om de condensator volledig op te laden. De I bereken je in een kring door de spanning te delen door de weerstand. Die weerstand moet groot zijn. Bij een grote weerstand wordt de condensator traag geladen. Dus kiezen we voor een grote weerstand. Op afbeelding 11a kan je zien dat als je de afstand tussen de verplaatsbare plaat en een vaste plaat veranderd, de afstand tussen de beweegbare en de andere vaste plaat ook veranderd. 15

5. Microcontrollersoftware 5.1 Flowcharts In de oneindige lus gebeurt er niets omdat dat eigenlijk niet nodig is, het zou van geen enkel belang zijn. 16

17

5.2 Code Figuur 12: start µ controllerprogramma. Figuur 13: hoofdprogramma. 18

Figuur 14: Interrupt configuratie. 19

Figuur 15: ISR (interrupt service routine). 20

Figuur 16: wachttijd voor verzenden. Zoals je in het begin van het programma kan zien, gebruik ik de PIC 16F877 als controller. 5.3 uitleg van de code Bespreking van het microcontroller programma: Bij de start van het programma worden 2 tellers aangemaakt. Deze worden later gebruikt. Dan start het hoofdprogramma. Daarin wordt eerst de subroutine intconfig aangeroepen. Die subroutine zorgt er voor dat poort RB0 ingesteld wordt als interrupt ingang. Die interrupt komt er pas als er een stijgende flank is gedetecteerd. Ook wordt de prescaler waarde ingesteld op 1:1. Dat wil zeggen dat de gebruikte klok niet wordt gedeeld, daardoor wordt geteld op een gewone klokimpuls. De klok die geselecteerd is, is de interne klok van de microcontroller. Timer 1 wordt hier ook nog aangezet. Dan wordt de RS232 communicatie ingesteld. Daarna nog een flush van RCREG maar die is niet echt nodig. Terug in het hoofdprogramma wordt aan de tellers een waarde gegeven. Nadat dat gebeurt is springt het programma in een oneindige loop. 21

De enige manier om daar uit te geraken is door de interrupt op RB0. Als er een stijgende flank gedetecteerd wordt, zal de interrupt routine aangeroepen worden. In die interrupt routine wordt er eerst gekeken of Timer 1 wel aan staat. Staat die niet aan dan wordt die aangezet en wordt Timer 1 gecleared. 5.4 Uitleg over Timer 1 Timer 1: Figuur 17: blokschema van timer 1. Hieronder bespreek ik hoe het blokschema van timer 1 in elkaar zit. TMR1H en TMR1L vormen samen het timer 1 register. De pijl die omhoog gaat vanuit het timer register is de overflow vlag. Als die uitgang op 1 staat wilt dat zeggen dat de timer Figuur 18 Figuur 19 op zijn maximum is. In de afbeelding hiernaast zie je een AND poort en een multiplexer. De AND poort heeft twee ingangen. Als TMR1ON op 1 staat laat deze poort de uitgang van de multiplexer door. Deze MUX heeft ingangen, 1 uitgang en 1controle ingang. Deze controle ingang kijkt naar de TMR1CS bit. Als die bit op nul staat wordt hij gewoon genegeerd en dan gebruikt timer 1 de interne klok. Als TMR1CS op 1 staat en de TMR1SYNC staat op 22

1 dan is er geen synchronisatie met de externe klok. Staat de TMR1SYNC op 0 dan wordt de externe klok wel gesynchroniseerd. Hier zie je vanwaar de MUX ingangen komen. Het Synchronize blok dient om de externe klok te synchroniseren. Bij Prescaler kan je een Prescalerwaarde instellen. Figuur 20 23

6. Graphical User Interface 6.1 Code met figuur private void InitializeControlValues() { cmbportname.items.clear(); foreach (string s in SerialPort.GetPortNames()) cmbportname.items.add(s); if (cmbportname.items.contains(settings.default.portname)) cmbportname.text = Settings.Default.PortName; else if (cmbportname.items.count > 0) cmbportname.selectedindex = 0; else { MessageBox.Show(this, "There are no COM Ports detected on this computer.\nplease install a COM Port and restart this app.", "No COM Ports Installed", MessageBoxButtons.OK, MessageBoxIcon.Error); 24

} } this.close(); //Enable/disable controls based on the app's current state private void EnableControls() { // Enable/disable controls based on whether the port is open or not gbportsettings.enabled =!comport.isopen; if (comport.isopen) btnopenport.text = "&Close Port"; else btnopenport.text = "&Open Port"; } private void Display(string msg1, string msg2, string msg3) { lblhexwaarde.invoke(new EventHandler(delegate { lblhexwaarde.text = msg1; })); lbldecwaarde.invoke(new EventHandler(delegate { lbldecwaarde.text = msg2; })); lblaantalgram.invoke(new EventHandler(delegate { lblaantalgram.text = msg3; })); } 25

private void abouttoolstripmenuitem2_click(object sender, EventArgs e) { (new frmabout()).showdialog(this); } private void helptoolstripmenuitem1_click(object sender, EventArgs e) { (new frmhelp()).showdialog(this); } 26

public partial class frmhelp : Form { public frmhelp() { InitializeComponent(); } private void Help_Load(object sender, EventArgs e) { textbox1.text = " If you have any questios, please contatct Robbe Vehent at info@robbevehent.be. Please make the subject: <GUI + your problem>." + "\r\n" + "\r\n" + " Als u Vragen of problemen heeft, contacteer dan Robbe Vehent via info@robbevehent.be. Maak wel dat u het onderwerp <GUI + uw probleem> noemt. "; } } private void btnclosehelp_click(object sender, EventArgs e) { this.close(); } public partial class frmabout : Form { 27

public frmabout() { InitializeComponent(); } private void button1_click(object sender, EventArgs e) { this.close(); } private void frmabout_load(object sender, EventArgs e) { tbxabout.text = " Ik ben Robbe Vehent, dit programma is een deel van mijn GIP (Geïntegreerde proef). Het programma is geschreven in C# met het programma Microsoft Visual C# 2010 Express. Het is getest op Windows Vista en Windows 7. Meer vragen kan je beantwoord krijgen op www.robbevehent.be of op info@robbevehent.be. "; } } private void afsluitentoolstripmenuitem_click(object sender, EventArgs e) { this.close(); } 28

7. Databladen 7.1 Datasheet PIC 16F877 van Microchip 29

30

8. Bronvermeldingen http://www.circuitsonline.net/forum/view/65301 http://msmvps.com/blogs/coad/archive/2005/03/23/serialport- _2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx http://www.microchip.com 9. Logboek 09/11/2010 -- informatie opzoeken over bruikbare componenten. 16/11/2010 -- keuze maken bruikbare componenten. 24/11/2010 -- opbouw gipdossier + bespreking opdracht. 03/12/2010 -- schrijven aan dossier. 27/12/2010 -- opstellen elektrische schakeling. 11/01/2011 -- uitmeten elektrische kring met voorlopige componenten. 18/01/2011 -- verdere uitmeting elektronische schakeling. 31

21/01/2011 -- Update site: logboek, uitzoeken gepaste elektronische schakeling 26/01/2011 -- begin aan µc programma en flowchart Main. 01/02/2011 -- solderen permanente component en elektronische schakeling met permanente componenten. 04/02/2011 -- werkend maken Olimex bordje met PIC16f877 met ADC programma in. 05/02/2011 -- grote update website. 11/02/2011 -- soehnle weegschaal: begin tekenen van elektrisch schema. 15/02/2011 -- verder tekenen aan elektrisch schema. 02/03/2011 -- schrijven µc programma: RB0 = interrupt; aanpassen dossier. 04/03/2011 -- optimaliseren µc programma 15/03/2011 -- uittesten programma met klok van 1Hz, 10Hz, 100Hz en 1 khz. 29/03/2011 -- uitesten programma met uitgang van de Soehnle weegschaal. 01/04/2011 -- fout zoeken waarom meting met factor 10 verkeerd is. 08/04/2011 -- fout gevonden factor 10. 11/04/2011 -- volledige uittekening elektrisch schema. 13/04/2011 -- volledige uittekening van elektrisch schema in TINA. 02/05/2011 -- update website. 05/05/2011 -- werken aan seriële communicatie in GUI. 17/05/2011 -- oplossing zoeken voor onder elkaar krijgen van ingelezen data in GUI. 20/05/2011 -- updaten website + verder werken aan inlezing van de data die doorgestuurd is. 24/05/2011 -- Update website (foto about us; links Articles; logboek) 32

33