Stap 3: Circuits
Er zijn drie belangrijke circuits voor onze toerenteller er zijn: IR zender en ontvanger, motor dc en msp430 LCD-interface, (Raadpleeg eerst de IR-sensor)
Gelijkstroommotor
Bestaat in 3-5V dc-motor met een rechthoekig stuk van acryl (zwart acryl) op zijn schacht, dit stuk is niet symmetrisch, ik bedoel dat het is gewoon een lange kant. Hoe groot is het stuk? Zie Fig. 1.4, maak je geen zorgen over de twee motoren, dat we echt nodig hebben is hoe de acryl stuk op de shaft(rotor), het stuk te blokkeren het licht tussen de zender en de ontvanger.
Fig. 1.4
IR-Sensor (IR zender en ontvanger)
De emitter altijd gonna een IR signaal afgeven aan de ontvanger dat in normale toestand ontvangt bijna alle IR licht van de emitter (zoals we zien op Fig. 1.5), behalve wanneer het acryl stuk is rechts in het midden, bij dit gebeuren het signaal in de ontvanger zal veranderen.
Fig.1.5
Emitter is aangesloten op vcc en gnd via een 150 ohm resistor(Fig 1.3), blijven de ontvanger is aangesloten op vcc en blijven aan de grond door middel van een pull-down weerstand (20 k ohm) (Fig 1.3), wanneer niet obstakels tussen de zender en de ontvanger het signaal op P1.1 is de spanning vcc minus ontvanger spanning (meestal 0,7 volt), dan P1.1 signaal zal een hoge , een '1' logica, wanneer een signaal van de P1.1 obstakel is geaard, is '0' logica.
Dan we moeten om te lezen de nullen, dat betekent dat we de nullen, zal rekenen omdat het signaal nul is wanneer het acryl stuk doorgeeft tussen de ontvanger en de emitte; Fig. 1.6 tonen de output van de IR-sensor wanneer de motor werkt
Fig. 1.6 a. P1.1 signaal b.DC motor werkt, merk op dat de acryl vrede is passeren van de sensor.
Hier is wanneer de microcontroller start een teller die de tijden telt dat P1.1 gelijk is aan nul, het is simpel als een polling de pin en plus een eenheid aan een variabele, het programma eigenlijk een interrupt gebruikt van dalende rand aan ster van de graaf in een interval van 0,25 second.the volgende deel van de code Toon de variabele "count" verhoogd telkens thats een dalende rand , "count" t is een unsigned int, en is duidelijk wanneer het doorgeven van 0,25 seconden, daarna de graaf voor 240 voor de snelheid van verkrijgen op minuut, (0.25s * 240 = 60s) vervolgens wordt vermenigvuldigd ("count" * 240 = rpm), het kan gezien worden in het bestand.
poort interrupt routine
#pragma vector = PORT1_VECTOR
void PUERTO_P1 (void) {} __interrupt
count = count + 1;
P1IFG = 0X00; de interrupt-markering wissen
}
Voorbeeld van de code.