12 years, 10 months ago.

Help with Interrupts

Hello Mbed Team,

I'm tryin to implement a break beam circuit(consisting of ir led and phototransistor) for calculating the number of persons entering the room .

I rigged up the circuit and the same circuit worked well for arduino,but here on mbed i'm not getting the exact output .For a single beam cut the count is incrementing by 30 or 40 not sure why .

I have attached the code and the hyperterminal o/p for the same .

main.cpp

 #include "mbed.h"

char counter=0;

InterruptIn button(p18);

void inc()
{
  counter++;
}

int main() {

button.rise(&inc);

    while(1) {
    
    
    
    printf("The number of persons Entered = %d \n",counter);
    wait(0.2); 
    
    
       
    }
}

Before 1st cut

/media/uploads/sanpai/before_cutting.jpg

After 1st cut

/media/uploads/sanpai/after_1st_cut.jpg

The count has increased by 36 instead of 1 ,not sure why .Please help .

4 Answers

12 years, 10 months ago.

Are you possibly now using a button to simulate your circuit? Then this could simply be bouncing. Even if not I guess something similar could happen. You can have a look at the PinDetect library: http://mbed.org/users/AjK/code/PinDetect/docs/tip/

12 years, 10 months ago.

Hello Mr Erik,

I'm using an IR break beam circuit to count the number of ppl entering , i tried with the circuit given in the below link and could even implement an tachometer too on arduino . Not sure why its not working with the mbed board .

Below is the link where i got the circuit .

http://arduinoprojects101.com/arduino-rpm-counter-tachometer/

12 years, 10 months ago.

Hi!

char counter=0;

I think this should be

int counter = 0;

Debounce could be an issue too.

Charly

Should not make a difference. Compiler should convert it to int before passing to printf

posted by Ad van der Weiden 04 Apr 2013
12 years, 10 months ago.

Most likely cause is bouncing. Original arduino code used falling edge for count. The ir diode may have better response that way. Try button.fall(&inc). You may also try some small capacitor parallel to the ir diode to reduce bouncing.