TLP250 for Arduino Nano SPWM Generator

  1. Introduction
  2. Circuit diagram and wiring
  3. Code for SPWM generation with TLP250
  4. Testing and results
  5. Conclusion

In this project, I will build an Arduino Nano SPWM (sinusoidal pulse width modulation) generator using a TLP250 MOSFET driver.

Introduction

The TLP250 is a high-speed, low-power MOSFET driver with a single output and a wide voltage range. Then making it suitable for a variety of applications including SPWM generation.
Now I will try to use the TLP250 as an alternative to the IR2110, which I used in my previous project.
I use the TLP250 mainly in 3.3V systems because it is more suitable for these types of systems compared to the IR2110, which operates at 5V even though it is stated as being compatible with 3.3V. Additionally, I also use the TLP250 as an alternative option.
My goal is to demonstrate the capabilities of the TLP250 as a MOSFET driver and to evaluate its performance.
For more complete information, you can refer to the datasheets for both the TLP250 and IR2110.

Circuit diagram and PCB using TLP250

Here, I will explain the Arduino Nano SPWM generator circuit with TLP250 and its differences compared to the previous circuit using IR2110.

Arduino Nano SPWM generator using TLP250

I made this circuit simpler by eliminating the cross-conduction prevention logic section. In this way, the driver’s input is directly connected to the Arduino’s pin. I removed the cross-conduction prevention logic circuit because the SPWM generation testing stage has been passed. And no programming errors were found that caused both drivers to be active at the same time, causing damage to the MOSFETs.

Then I changed the driver using the TLP250, in this case, I want to try another driver as an alternative to the IR2110.

With fewer components, the PCB dimensions become smaller. In the IR2110 version PCB, I connected all the Arduino pins to the sip header, but now I only connect the header to the used pins. There are 3 headers that I added, namely for the LCD, button, and battery sensor input.

Another change I made was to move the buzzer control to the built-in LED. The program I had made previously would turn on the LED and the buzzer at the same time. So I actually only need one control for the alarm indicator, so I combined these two controls.

PCB Layout (Silk Screen) for SPWM using TLP250
PCB Layout (Bottom) for SPWM using TLP250

Attention: I forgot to add a header for J2 in the schematic. So I still need to add a header for it that is connected to the D2 pin and GND. This can be resolved by using the available button, but it will require additional coding.

Code for SPWM generation with TLP250

For the coding, you can use the code in the:
Arduino Nano SPWM generator, Arduino Nano SPWM Generator w/ LCD, or Arduino Nano SPWM Generator w/ LCD & Button posts.

Basically, the code for the circuit using the IR2110 in my previous post can be used in the TLP250 version. The changes I made here only involve the hardware device to control the MOSFET H-Bridge.

One more thing is about the buzzer. As I mentioned earlier, the pin for the buzzer is now combined with the built-in LED, so any commands related to the buzzer are ignored. Or if desired, it can be removed without affecting SPWM generation.

Testing and results

After I assembled it, the result was as follows:

PCB with TLP250 and IR2110

The Arduino SPWM generator at the top uses TLP250, and the one below uses IR2110. The PCB dimension with TLP250 becomes smaller because some transistors and other components are eliminated.

The sinusoidal generation produced by the TLP250 driver circuit is still the same as that using IR2110. Feedback for voltage, temperature, LCD and buttons also function well, the same as the previous version.

Conclusion

In this project, I build an Arduino Nano SPWM (sinusoidal pulse width modulation) generator using a TLP250 MOSFET driver. I am using the TLP250 as an alternative to the IR2110, which was utilized in my previous project. The main reason is that the TLP250 is better suited for 3.3V systems than the IR2110, in preparation for trying out newer controllers.

To improve upon the previous circuit using the IR2110, I removed the cross-conduction prevention logic section and directly connected the driver’s input to the Arduino’s pin. This allowed me to use fewer components and only connect the header to the necessary pins, resulting in a smaller PCB. Additionally, I combined the control for the buzzer with the built-in LED.

The code used in the previous version can be utilized for this version. During testing, the results showed that the sinusoidal generation produced by the TLP250 driver was the same as that produced using the IR2110. Feedback for voltage, temperature, LCD, and buttons also functioned well. The main difference between the two versions is the size of the PCB and the type of driver used.