Introduction: Induction Motor Test Device

About: Hi. My name is Bardia, and I am an Electronic engineer from Iran. I am interested in Electronics, especially Embedded Systems. In my leisure time, I try to share useful projects with you.

A tester device which can measure RPM, Temperature and current of induction motor with overcurrent detection and modular speed controller

Step 1: Story

Important Note

The main supply for this project is 220V AC. be conscious that this voltage is dangerous and it can lead to death. so if you are not familiar with this supply stop building this

The story goes back to my father's youth. On those days, my father was working as an electrical technician in his store. Motor winding was one of his services. Most of the time, the motors that he was winding where single-phase AC motors and universal motors. For example, vacuum cleaner motors, washing machine motors or mixer motors. After graduation, he sold his store and started his career in the power engineering field. Now, After 35 years, he is retired. However, he decided to open his store again and do the same jobs as he was young. He found his stuff in our warehouse, and some of them were related to the motor winding. Take the uploaded image of ancient tachometer as an example.

I thought it would be helpful to make a test unit for him that includes all the stuff he needs to test a motor after winding it. So I asked him what things does he want to be included in this unit. He told me that he needs :
1- RPM Meter 2- temperature meter 3- current meter And after I made a prototype, he told me that it could be useful to add a modular speed controller to this unit. So I added TRIAC Based speed controller. ( I will share a speed controller project with IGBT later)

Hardware

I will separate this part into five different sections:

1- power part

2- digital dimmer

3- temperature and RPM meter

4- current meter

5- control part

Step 2: Power Part

This PCB includes power supply and TRIAC. There are two relays over TRIAC's output that connects and disconnects motor. Also, I put the zero detection circuit on this PCB to control output power using TRIAC. There are many tutorials about microcontroller-based TRIAC control that you can find over the internet, So I do not want to explain the whole principle here. I used a 9V transformer with two outputs to separate relays power supply from the main power supply. Also, I put a DIP switch on PCB that can control relays and TRIAC manually. I designed a digital dimmer part, as a modular part. So if you do not need speed controller part, you can disconnect it from the circuit and put the related dip switch to on position to get output directly.

Step 3: Digital Dimmer

As you probably know, the output of TRIAC is based on zero-cross detection and firing angle. Let's look at the zero-cross detection circuit (Uploaded Image).

Whenever the input of bridge diode goes over a few volts, the optoisolator goes active so the output will be zero. And when it goes near zero, the outcome of PC817 will be high. With this method, we can detect whenever a signal comes to zero. However, the output of optocoupler is not square exactly, especially when the transistor is in the border of cut-off and saturation. To solve this, I passed the output of PC817 from 7414, which is a Schmitt trigger. Also, as the signals pass from a flat cable, it is vulnerable to noises. Using a Schmitt trigger with capacitors can help to neutralize these noises and get a pure square output. At last, I fed the output of Schmitt trigger to the microcontroller. After detecting zero crosses, we have to trigger TRIAC's gate after a delay which is related to the frequency of the input signal. The higher the delay, the lower the power.

In my country, the power line is 220V/50Hz. So the period will be 20 mS. And the halfwave period will be 10mS. To control the output power, you have to trigger TRIAC'S gate with a delay of 0 to 10ms after zero-cross detection. To make that delay, I configured timer with 100uS steps. So if the counter counts to 100, the output delay will be 10000uS which is 10mS. On 10mS the output power is zero, and on 0mS the output power is at its highest(input wave goes out directly). So the steps of power control with TRIAC is: 1- detection of zero-crossing 2- wait between 0-10ms based on user input and trigger the TRIAC's gate after that. For triggering, I used the MOC3021 TRIAC gate driver. Moreover, as the load is conductive, I used snubber and varistor to eliminate noises.

Step 4: Temperature and RPM Meter

As I wanted to measure temperature without contact, I decided to use IR thermometer. There is a famous infrared temperature sensor out there which is MLX90614. This sensor uses SMBus communication (similar to I2C) to communicate with the microcontroller. As I am using STM32 microcontroller, I did not find an appropriate library for this sensor for STM32. So I wrote my library for it.

I searched over the internet for the RPM meter sensor, and I found an interesting laser receiver sensor. The sensor name is ISO203, and it is Chinese. You can find it as a laser receiver module on the internet. I saw that people used this sensor to detect laser presence. Also, I saw an RPM meter project on youtube with this sensor and Arduino. So I decided to test it. I bought it and combined it with a laser. I stuck a little white paper on a motor and put the laser and sensor in front of it. I saw that whenever the white paper passes in front of the sensor, the sensor's output goes high. The sensor was receiving reflection. The sensor worked very well in different conditions. However, it faced a problem in direct sunlight because of saturation. But I wanted to use it in the store, and there was no direct sunlight there.

I put MLX90614, ISO203, and a laser on a PCB and connected it to the mainboard with a shielded wire.

Step 5: Current Meter

To measure current, I used current transformer. Before adding TRIAC, the output wave was sinusoidal. So I could calculate RMS current with multiplying peak voltage to radical 2. However, if you change the waveform, you have to use RMS formula to get the desired output. Although using ADC and software-based RMS calculator can solve the problem(not accurately), I decided to use True RMS to DC converter to get good results. I used LTC1966 RMS to DC converter. You can find the circuit on its datasheet.

As my father said that he does not need more than ten ampers, I decided to limit current on ten ampers. The input of LTC1966 can not exceed above 1 volt. As a result, I could not change the burden resistor. (My CT's typical burden resistor is 100 ohm). So I added a non-inverting amplifier on the output to increase output Volt per amper. I set the output 330mV/Amper(with multi-turn resistor). So with ten ampers, I got 3.3 volts on ADC's input. At last, I designed a PCB for the current part and put all components on it.

Step 6: Control Part

I used STM32F030C8T6 ARM Cortex M0 from STMicroelectronics. You can find the specification of this microcontroller here.

Also, I used Schmitt trigger and RC network for hardware debouncing of the rotary encoder. Although I tried to design a reliable power supply for the microcontroller, I used the supervisor IC TL7705 from Texas Instruments, which monitors voltage rails for safety purposes. The LCD type is Alphanumeric LCD 20*4

Step 7: Software

I used stm32cubeide from ST to write the code in C. Also, I wrote a library for MLX90614 and LCD. I made a GUI for the user to change the setting. You can watch how it works on the video that I uploaded. For programming, I used ST-Link V2.

when you turn on the device, you will see the main menu. You can choose between run and setting. On the setting menu, you can set the limit current and emissivity of MLX90614. The default is 4 for current and 1 for emissivity. You can measure temperature and RPM alongside controlling the motor's speed with rotary encoder on the run mode. You can find all the sources you need, including PCB, code, and schematic on my Github.

Microcontroller Contest

Participated in the
Microcontroller Contest