Buzzer Negative Trigger Passive Buzzer Module Problem Heat

I am using ESP32 WROOM-DA
Negative Trigger Passive Buzzer Module
Buzzer Module Use 3.3V
Buzzer Module input is Negative Trigger

When ESP32 Port Value 0(LOW) behaves as Ground

I can not found any code for Port ( GPIO pin) Fully OFF

Using noTone(soundpin) or ledcDetach(soundpin)

When no sound Buzzer increases Heat & found using Multi meter Piezo two-pin 1.7V

  • Any code for Port (GPIO pin) Fully OFF ?
  • Have any solution Negative Trigger Passive Buzzer Module Heat?

Start by showing us what you have done and why it did not work.

Buzzer Module Create Sound Properly but Buzzer Module Creating Heat itself.
I Found when Buzzer off,that time Piezo also get 1.7V ,So why Buzzer Module circuit create itself heat.This Buzzer Module input is only Negative input.So When Microprocessor port value 0 (LOW/GND/Negative) that time Buzzer Module get trigger Voltage.

*Physically Sound off but piezo get 1.7V & make itself heat.

*Problem is Creating Heat.

using ESP32

I share My code

Using tone,noTone below my Code

#define soundpin 4

void setup() {
 
  Serial.begin(115200);
  delay(6000);
  Serial.println("Buzzer Start");

  pinMode(soundpin,OUTPUT); // for tone

  
  tone(soundpin,2000);  //tone(pin, frequency, duration)  or tone(pin, frequency)
  delay(900);

  noTone(soundpin);
  Serial.println("Buzzer Stop");
}

void loop() {

}

Using ledcAttach, ledcWriteNote, ledcWrite, ledcDetach, below my Code

#define soundpin 4

void setup() {

  Serial.begin(115200);
  delay(6000);
  Serial.println("Buzzer Start");

  ledcAttach(soundpin,NOTE_A,7); //ledcAttach(uint8_tpin,uint32_tfreq,uint8_tresolution); for ESP core V3
  
  delay(115); 
  ledcWriteNote(soundpin,NOTE_A, 7);    // PIN, frequency, octave for ESP core V3
  delay(900);
  
  ledcWrite(soundpin,0); // No sound 
  ledcDetach(soundpin);  
  Serial.println("Buzzer Stop");
}

void loop() {

}

It might help us if you let us know what buzzer module you have and post a link to its technical information. Your port probably has three states, 'ON' which would be high for most, 'LOW' which would be off for most and input/tristate where it is floating. Do you have a volt meter and maybe a 10K resistor?

passive Buzzer Module

Link:
https://www.aliexpress.com/item/32679393824.html

Your link is only to ACTIVE buzzer modules.. SEE the "+" sign on the plastic cover? That is the clue!

1 Like

Connect your buzzer to 5V and ground. Touch the input to 5V and Ground. If it chirps it is an active one if it clicks it is a passive one. If it clicks do not hold it very long. Many times passive buzzers are coupled with a transistor to do the oscillation making it chirp or be an active device.

This Buzzer Module manually Connect
(+3.3V & GND) as power Supply --> input & GND short (as like Touch for millisecond ) make small Sound ( Like.."tock..tock")

When input & +3.3V short(as like Touch for millisecond) not create any sound.

I also check it with +5V as power supply.

For +5V power supply & input -->Sound Volume more

For +3.3V power supply & input -->Sound Volume less

Before my Coding,i already check it.

Also this Module PCB back side written Negative Trigger & font side chinese Language say "Negative Trigger"

If it is active Buzzer, input trigger continue at a time sound continue but this buzzer not like that. (Buzzer, No in build Oscillator)

You are confusing the "buzzer" with the module. The circuit on the module controls the active buzzer so it operates as a passive buzzer. Why the module was built, is anyone's guess.

I think the module was built with a transistor to switch the buzzer because the buzzer itself draws too much current to be driven directly from an Arduino pin.

To prevent it getting hot, all you need to do is add digitalWrite(soundpin, HIGH); as the next line after noTone(soundpin);.

Do this every time you stop it sounding.

noTone(soundpin);
digitalWrite(soundpin, HIGH);
Serial.println("Buzzer Stop");

The buzzer gets hot because noTone() leaves the output low, which turns on the transistor, causing a current to flow continuously through the buzzer.

Your Logic correct.

When i use noTone or tone

I Found physically
digitalWrite(soundpin, HIGH);

Not work.

*using noTone,tone that pin not work
digitalWrite command.

*Any problem digitalWrite command with noTone &tone ?

I physically measure Voltage for soundpin found 0V (GND/LOW). So digitalWrite not work.

Since you are using an ESP32 (3.3V) you should connect the buzzer VCC 3.3V NOT 5V
When you set the output pin HIGH it will go OFF

I am using......

*Arduino IDE V2.3.2,
*ESP32 WROOM-DA
*Negative triggered Buzzer module

noTone then use digitalWrite(soundpin, HIGH);

I am surprise why digitalWrite(soundpin, HIGH);
Command not work.

For checking purpose
Only ESP32 check soundpin with volt meter
Lastly show 0V but as per coding must be show 3.3V(or near to 3.3V) for HIGH

Create sound properly.
Buzzer off increase heat itself buzzer

For checking purpose
I also write separate code (not use tone & noTone) for checking command
digitalWrite(soundpin, HIGH);
This time soundpin High(3.3V) & show volt meter is ok.

But again when use tone, noTone that time
digitalWrite not work

Have any solution?

That means negative in relation to the module ground, and you are not providing that with any Arduino! Try a 9 volt battery with the positive lead connected to the module ground. Touch the negative lead to the module input.

Lastly i found Solution

noTone & tone use pin as analog Output(PWM). So, digitalWrite command will not work.

I use analogWrite(soundpin,255); // Positive Value out

I found in my Negative Trigger Bazzer Module enough for

analogWrite(soundpin,115);

Another solution is..............

Negative Trigger Bazzer with optocoupler
Or
Negative Trigger Bazzer with NPN Transistor

*Also, using ledcAttach, ledcWriteNote, ledcWrite, ledcDetach

Same Solution work properly.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.