Posts

Showing posts with the label AC

VFD Updates - More Prototyping and PCB Design

Image
Several things have been done since the initial prototype: the prototype has been further tested, the motor has been validated, and the PCB has been designed and sent to the FAB. Here is an image of the rendered board: The PCB render Prototype Validation The prototype has been changed - specifically gate and pull-down resistors were added. A big change is that the inverter generates a 12 V peak to peak signal which is then boosted up to 120 V RMS by a transformer and powers the motor. This was done instead of having a 120 V sine wave be generated as an isolated power supply would be needed for the logic components, however the current being drawn at the inverter stage is significantly higher. Here are some key waveforms generated by the inverter. The switching voltage between inverter legs A and B The filtered output voltage The firmware is running a 100% modulation index, thus showing that the output wave has peaks of $\pm V_{dc}$ or $\pm 12 V$. The frequency can also be modulated to ...

VFD Inverter Prototyping

Image
I began prototyping the VFD circuit discussed in the previous post, specifically the inverter stage. I modified it to be a single-phase full bridge inverter instead of the three-phase simulated. This is due to me using a single-phase shaded pole induction motor for testing down the line - 120 V, 60 Hz on the nameplate. Here is an image of the circuit: Full-bridge inverter circuited Before making the circuit, I simulated the inverter in LTSpice. Similar to the PSIM simulation, a bipolar switching scheme is being generated for the SPWM signal. Inverter legs and gate driver ICs Bipolar PWM generation and output filter For the spice simulation, LTC7061 half-bridge MOSFET drivers are being used. In the actual circuit I sourced IR2104 gate drivers however they both do the same thing so I opted to use the default Analog Devices IC in LTSpice.  Picking Bootstrap Capacitors The gate driver ICs require a bootstrap capacitor and diode. For the diode I picked a standard 1N4148/1N4007. However,...

Variable Frequency Drive for Induction Motors - Overview and Design

Image
I began a new project to design and construct a Variable Frequency Drive (VFD) for AC induction motors. The purpose of this project is for me to apply some of my power electronics knowledge of inverter design and also aid me in my FOC project since the power stage of this drive is similar (FOC just has more complex control algorithms). This post will cover some the high level design considerations and some preliminary simulation of the VFD. Background - Induction Motors To me motor drives are super interesting as AC motors are used everywhere and they are the basis of many machines. More specifically, AC induction motors (invented by Nikola Tesla) are the most popular motor kind - 90% of motors used in industrial and commercial applications are induction type.  To see how a VFD works it is important to know how an induction motor works. At a high level, the induction motor, like many AC motors, is made up of a stator and a rotor. The stator is made up of windings - for a three-phas...

AS5048A Magnetic Encoder and STM32

Image
This past week I began to write the controller firmware - mainly playing with the AS5048A angular position sensor from AMS. Here is the datasheet .  This sensor will be used to get the rotor position and then compute the resulting electrical angle for the Clarke/Park transforms and also it will be used to find rotor speed for the out loop.  I will be using an STM32F446 board to run the loop as it has a high clock speed. The AS5048A sends its measurements over SPI. Below is the read package sent from the sensor: We get 14 bits of position data - aka 16384 ticks per revolution, or a resolution of 0.0219 degrees. I wrote this read() function that sends the SPI command package and reads the resulting response: uint16_t read(uint16_t registerAddress) { uint16_t command = 0x4000; // PAR=0 R/W=R uint8_t RxBuff[2]; uint8_t TxBuff[2]; command = command | registerAddress; command |= (uint16_t) (spiCalcEvenParity(command) << 0xF); TxBuff[0] = command >> 8; TxBuf...

First Post on a AC Servo Drive Project + Current Loop Simulation

Image
Introduction Over the past year I have been working on a motor driver for an AC hobby motor (total time about a month due to school and work) - I decided to document my past developments and continue the project as I am less busy. I looked back and refined what I wanted out of this motor drive. Requirements Have precise control of position, speed, and torque of an AC motor No torque ripple in output Controller should be suitable for a wide range of PMSM motors Goals Small PCB footprint (~50 mm squared) Develop software to tune controller profiles and gains Constraints Design drive for permanent magnet synchronous machines (PMSM) with surface mounted magnets (non-salient motor) Use field oriented control (FOC) to modulate phase currents End board should be <$100 CAD To clarify, these PMSMs are hobby grade motors used for drones/UAVs, however the goal is to make it work with any sinusoidally wound brushless motor.