VTI Sint-Laurentius De school voor Wetenschap, Techniek en Technologie Pr. Thuysbaertlaan 1 9160 Lokeren www.vti-lokeren.be
[email protected]
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
[email protected]
GEÏNTEGREERDE PROEF
Pakketweegschaal
Industriële informatie & communicatietechnologie SCHOOLJAAR 2010-2011 3 Robbe Vehent
1. Voorwoord
4
Inhoudsopgave 1.
Voorwoord ....................................................... 4
2.
Inleiding .......................................................... 6
3.
Omschrijving .................................................... 7
4.
Hardware ......................................................... 8
5.
Microcontrollersoftware .................................... 14
6.
Graphical User Interface .................................. 19
7.
Databladen ..................................................... 19
8.
Bronvermeldingen ........................................... 20
9.
Logboek ......................................................... 20
10. Besluit ........................................................... 21 11. Bijlage ........................................................... 22 12. ...................................................................... 22
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 kracht sensor. Als er een pakket op de weegschaal wordt gezet, gaat na ± 3 seconden een pieptoon te horen zijn. Als die pieptoon is geweest wordt de juiste waarde naar de pc gestuurd en wordt daar opgeslagen in een database. Op de pc loopt een programmatje dat de mogelijkheid biedt om alle voorgaande gegevens terug op te roepen en op het scherm te tonen.
6
3. Omschrijving Mijn project is een pakketweegschaal die het gewicht van pakketten meet, dat gewicht doorstuurt naar de PC en alles opslaat in een database. 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.
7
4. Hardware Bij de -
hardware worden de volgende componenten gebruikt: µcontroller Force sensing resistor Een luidspreker Moederbordje voor de µcontroller
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 kan 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 weerstad 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. 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.
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. 11
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.
Figuur 10: Frequentie met gewicht op de weegschaal.
12
Figuur 11: Frequentie zonder gewicht op de weegschaal.
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.
13
5. Microcontrollersoftware Alles wordt onder de afbeeldingen beschreven en uitgelegd.
Figuur 12: start µ controllerprogramma.
Figuur 13: voorlopig hoofdprogramma.
14
Figuur 14: Interrupt configuratie.
15
Figuur 15: simulatie ISR (interrupt service routine).
16
Figuur 16: wachttijd voor verzenden.
Zoals je in het begin van het programma kan zien, gebruik ik de PIC 16F877 als controller. (bespreking programma)
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
17
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 Figuur 19 gewoon genegeerd en dan gebruikt timer 1 de interne klok. Als TMR1CS op 1 staat en de TMR1SYNC staat op 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(die ingangen komen. Het Synchronize blok dient om de externe klok te synchroniseren. Bij Prescaler kan je een Prescalerwaarde instellen.
Figuur 20
18
6. Graphical User Interface
7. Databladen
Vooral datasheet van PIC16F877 gebruikt. Bij start ook FSR datasheet.
19
8. Bronvermeldingen 18/02/11
http://www.circuitsonline.net/forum/view/65301
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. 20
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
10.
Besluit
21
11.
Bijlage
Voor Pasen: Frequentie meting zichtbaar in GUI en terminal venster. Logboek en dossier aanpassen. Blokschema timer. Principeschema weegschakeling.
Tijdens paasverlof:
22