Varvräknare (3 / 4 steg)
Steg 3: kretsar
Det finns tre viktiga kretsar för våra varvräknare finns: IR-sändare och mottagare, motor dc och msp430 LCD-gränssnitt, (se första sensorn IR)
DC-Motor
Bestå av 3-5V dc-motor med en rektangulär akryl (svart akryl) på hans axel, detta stycke är inte symmetrisk, jag menar den har bara en lång sida. Hur stor är den? se Fig. 1.4, oroa dig inte om de två motorerna, att vi verkligen behöver är hur man sätter akryl pjäsen på shaft(rotor), lappa måste blockera ljuset mellan sändaren och mottagaren.
Bild 1.4
IR-Sensor (IR-sändare och mottagare)
Utsändaren alltid kommer att skicka en IR-signal till mottagaren som i normalt tillstånd tar emot nästan alla IR-ljus från sändare (som vi ser på bild 1.5), utom när den akryl är rätt i mitten, när detta hända signal i mottagaren kommer att förändras.
Fig.1.5
Sändaren är ansluten till vcc och fortsättningsvis gnd genom en 150 ohm resistor(Fig 1.3), mottagaren är ansluten till vcc och att marken genom en dra ner motstånd (20 k ohm) (Fig 1.3), när är inte hinder mellan sändaren och mottagaren signalen på P1.1 är den spänning vcc minus mottagningsspänning (vanligtvis 0,7 volt), då P1.1 signalen kommer att vara en hög , en '1' logik, när är ett hinder P1.1 signal är jordad, är '0' logik.
Då måste vi läsa zeros, det innebär att vi kommer att räkna nollor, eftersom signalen är noll när akryl lappa passerar mellan mottagare och emitte; Fig. 1.6 Visa utdata från IR-sensorn när motorn arbetar
Figur 1.6 a. P1.1 signal b.DC motor fungerar, märker att akryl freden passerar genom sensorn.
Här är när microcontroller början en räknare som räknar de gånger att P1.1 är noll, det är enkelt, som en polling stiftet och plus en enhet till en variabel, programmet faktiskt använda ett avbrott av fallande kant till stjärna räkningen i ett intervall på 0,25 second.the nästa del av koden Visa variabla "greven" ökas varje gång det är en fallande kant , "räkna" t är en unsigned int, och är klart när passerar 0,25 sekunder, efter detta räkningen multipliceras för 240 för få hastighet på minuten, (0.25s * 240 = 60-talet) sedan ("räkna" * 240 = rpm), den kunde ses i filen.
Port-avbrott rutin
#pragma vektor = PORT1_VECTOR
__interrupt void PUERTO_P1 (void) {
antal = antal + 1.
P1IFG = 0X00; Avmarkera flaggan avbrott
}
Exempel på kod.