Arduino Ping))) Sensor suddenly stops after showing a few results

Hello Everyone

I have a Ping))) Sensor (hc-sr04) which is connected correctly and am using an Arduino UNO.

I start it up without being connected to ground (otherwise it doesn't even want to start) and it keeps writing 0 to the serial window (distance), once I plug in the ground pin, I get a few lines of correct distance readings and than it stops and hangs, no more results in the serial window, and the board itself seems to be in a fault state and I need to unplug it from the USB, disconnect the ground, and than re-plug to the USB

Does anyone have any ideas what can be the cause of the problem?

Thanks in advance!

Code:

#define echoPin 2 // Echo Pin
#define trigPin 4 // Trigger Pin
#define LEDPin 13 // Onboard LED

int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance
int currentDistance = 0;

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
}

void loop() {
/* The following trigPin/echoPin cycle is used to determine the
 distance of the nearest object by bouncing soundwaves off of it. */ 
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 

 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 

 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);

 //Calculate the distance (in cm) based on the speed of sound.
 distance = duration/58.2;

 if (distance >= maximumRange || distance <= minimumRange){
 /* Send a negative number to computer and Turn LED ON 
 to indicate "out of range" */
 Serial.println("-1");
 digitalWrite(LEDPin, HIGH); 
 }
 else {
 /* Send the distance to the computer using Serial protocol, and
 turn LED OFF to indicate successful reading. */
 Serial.println(distance);
 digitalWrite(LEDPin, LOW); 
 }

 //Delay 50ms before next reading.
 delay(50);
}

From your description I'd guess an incorrect wiring. Please post of picture of the wiring, showing all connections.

Hi, Thanks for the reply.

I don't think it will show up clearly in a photo, but here's how I got it connected:

Ping))) GND port -> Breadboard -> Arduino GND port (this is the port I disconnect to make it start and than reconnect)
Ping))) Echo port -> Breadboard -> Arduino Digital Port 2
Ping))) Trig Port -> Breadboard -> Arduino Digital Port 4
Ping))) VCC Port -> Breadboard -> Arduino 5V Port

Try measuring the voltage between the GND and the 5V pin on the Arduino using a multimeter while the Ping sensor is connected. What do you get?

How do you power your Arduino? Using the USB connector or using an external power supply?

Hi Pylon

I don't have a multimeter, my Arduino is connected via the USB to the computer

I should also mention that if I plug the Ping))) sensor into the 3.3V port, it doesn't cause the Arduino to stop, but it also doesn't show correct readings

Hi Guys.

It would seem that the problem is not with the sensor but with the serial interface: I have attached an led to the board and am giving it an analog value according to the distance, once the Arduino gets "stuck", the led keeps working correctly, so I guess the problem is with the Arduino shutting down the serial interface and stopping data transmission through the USB.

Any ideas?

Power the Arduino by an external power supply. Probably this will solve your problems, your PC seems to have a standard compliant USB port which delivers only 100mA without a high power request. That seems to be not enough for your setup. With an external power supply you shouldn't run into an under-power state.