03/11/2015 at 05:52 •
Tore in to the Lexus inverter. It has two main sections. There's the inverter section, which has the power electronics for driving the motors (and a really big capacitor encased in aluminum). There's also a "converter" section, which is what boosts the voltage from the original battery (288v) to the high voltage needed to drive the motors (650v). This converter can also step the voltage generated by the motors during braking down to the correct voltage to charge the battery.
For my project, I'll have to figure out how to control the power electronics using my own hardware. This will involve determining the pinouts of all the connectors, where the sensors connect and how to read them, and generally how it all goes together.
05/24/2015 at 17:39 •
This project is certainly still progressing! The reason there haven't been updates lately is because the work I've been doing is mostly on the computer for the moment, finalizing the schematics and laying out the PCB for the new inverter control board. Not much to show from that process, but there will be more updates soon. I'm actually taking this whole next week off from work to get the PCB layout finished and sent off to be made. It's a long process that I just won't get done in time if I can only work on it on weekends, so I'll power through it over the next 7 days so I can get back to the good stuff.
05/25/2015 at 19:09 •
Okay, something more exciting to show. I got the charger out of a Chevy Volt working so I quickly hooked it up to my inverter as a power supply to try it out. I set it to its lowest setting (200v). The inverter is still running on the breadboard and Arduino with no current sensing but it does have motor position sensing. If you saw my video from back on the 2nd of this running on 12v, 200v will look a bit more impressive. Again, the final voltage will be 650v.
The LEDs that light up are connected to the oil pressure sensors in the transmission. The input shaft isn't locked yet so it spins with the motor and turns the internal pump. Once the input shaft is locked, I'll have to use the electric oil pump. Interesting fact, the transmission defaults to the high speed gear unless I drive the solenoids to get it do downshift to the low speed gear. This is so that if a solenoid or pump fails at high speed, the transmission won't downshift and overspeed the motor.
05/28/2015 at 17:01 •
Got the PCB layout for my project done yesterday. Before and after images attached. The blue pour is a heatsink for the two high current op amps (one for each motor) I'm using as part of my resolver excitation.
05/31/2015 at 01:37 •
Put the finishing touches on the layout and silk screen for my inverter control board. This board is the first I've designed using Altium. There were a few things I noticed while laying it out where the behavior of the net-naming didn't work as I expected (a power net that didn't propogate across sheets even though every other power net did, very confusing). Hopefully I didn't miss anything and there are no nasty surprises when it arrives. If all goes well, this should let me get to the real meat of the project: programming. Any other hardware I have to design for it after this should just be simple CAN interfaces and maybe a few light-duty drivers for relays or contactors.
The board is being made by Seeed and should hopefully arrive by the end of next week. Hackaday is giving away "stickvices" this week, which if I won one, would be perfect timing for board assembly. There are more than a handful of 0603 resistors to be placed, along with a few to be put on the other side. Something to hold the board off the bench while I hot-air solder (so the parts on the other side don't get disturbed) would be handy. I've been eyeing the panavises lately, especially at maker faire, but just can't justify spending the minimum of $100 on one, not to mention the suction cup wouldn't work on my bench.
Anyway, here's a picture of the final board layout with the layers in the correct order and silk screen visible:
06/11/2015 at 02:08 •
Two things arrived today: the PCB, and the Stickvise I won in the HaD giveaway. Here they are together.
Looks like it's going to be handy! Hopefully the plastic holders can withstand the heat of hot-air soldering going on in their vicinity. I don't have a 3D printer to replace them, but if I need to, I'll probably cut some from HDPE as an upgrade.
I also have all the components to go on the board. I'll start with the power supply (lower right) and make sure that's happy before putting the rest of my parts on. If all goes well, I get to spend the next several weeks getting the firmware to the point where I can spin the motors. For tuning, I'll use the motors against each other as a dyno built in to the transmission. This is really the only way to properly tune IPM parameters. Thankfully, the dyno is free!
06/12/2015 at 03:57 •
I got started with microcontrollers, like many, with Arduino. This set me on the path to use Atmel parts in my personal projects. First I started embedding Arduino-compatible AVR devices in projects, using the Arduino IDE to code for them, and an AVR-ISP clone to program them. Once I started doing more complex projects, I looked at other Atmel devices beyond those supported by the Arduino IDE. I moved to Atmel Studio and played with the xmega series of devices. Still 8-bit, but with more "grown up" peripherals and a higher clock speed. It was an xmega device that ran my first 3-phase inverter.
With this new project I wanted to take another step up. I looked at Atmel's ARM offerings but couldn't find the right combination of peripherals, performance, and motor-control libraries so I decided to branch out. In my searches, I came across the Freescale V-series ARM devices. These are aimed towards motor control and power conversion, have the right collection of peripherals, and a motor control library is offered for use on them which will greatly simplify the coding portion of the project. These seem to be a good fit.
My inverter control board has three microcontrollers and two resolver-to-digital (R2D) converters. There is one microcontroller and R2D pair per motor and a main "supervisory" microcontroller.
My specific choices of device are:
1x Teensy 3.1 (Freescale MK20DX256VLH7) 32-bit ARM Cortex M4 @ 72MHz (Teensy product page)
The MKV10's will do the PWM generation, read the R2D's and phase currents, and perform the vector control calculations for the motors. The current controller setpoints will be fed to these via SPI from the Teensy. The speed control loops, transmission control, CAN link, and supervisory functions will be performed in the Teensy. It'll have more on its plate, but the calculations it needs to do aren't as numerically intense, so it should be a good balance.
I'm getting used to the Freescale toolchain (Kinetis Design Studio). It's a different environment than I'm familiar with (Eclipse for KDS vs Visual Studio for AS), but there are some very handy tools included. I'm using a Freedom KL25Z dev board as my programmer until I can pick up a proper one.
Meanwhile, I've made some progress assembling my board. Ordered a few of the wrong parts, which has delayed me a bit, but I got the power supply components installed and working. I've populated the bottom side of the board (the stick vise sure came in handy for that!) and will do the top side this weekend. If only I could get some 22k ohm SMD resistor arrays locally! Hardly worth placing a digikey order just for those.
Anyway, keep an eye out for more updates over the next few days.
06/14/2015 at 00:42 •
Finished populating the new board today. It's sitting on my bench right now with a blinking LED, so that's a good sign! Still got a lot of testing and verification to do, but it's looking good so far. I need to do some programming to really test out the board, so that's where I'm at now.
Pictured below is the new board next to the original Toyota/Lexus board
Picture above is the new board installed in the inverter. Everything plugs in just like it's supposed to!
06/28/2015 at 05:21 •
First spins on the new control board happened today. Getting the code tuned in. The motors are making some very fun sounds!
The slow ramp-rate of the motor here is due to the current limited of the charger I'm using as a power supply. I've got it set to 1A @200v for safety. I certainly have to be careful with regen here. I managed to get the bus up over 700v a few times while actively spinning it down to a stop. That'll be fine when there are batteries powering it, but not so good with the charger that's only rated to 430v.
Here's a quick teaser video of it spinning on up one of the motors. Have to hook up the electric oil pump to keep things lubricated and close the clutches, then I can spin MG2 up and have it play along (or against) MG1.
After that, it's just a matter of software tweaking and tuning. Will have to generate a look-up table for each motor at various operating points. Handy that the transmission will work as a dyno by driving the motors against each other.
I've ordered a radiator and some hose so I can get cooling set up, then I'm good to go. That should be ready by next weekend. Good thing too, since it's a long one.
07/03/2015 at 03:27 •
Had a friend help me fabricate the piece that I'll use to lock the input shaft of the transmission.
The splines are from the center piece of a clutch for an old Toyota Celica. It's a 21-tooth 28mm diameter spline. A google search of the spline dimensions brought up the clutch alignment tool for a 70's Celica. You could probably go backward from the clutch alignment tool to find other cars with the same spline. Apparently Toyota used the same size splines on several other vehicles including the Rav4. I find itquite amusing that the clutch from an old Toyota fits perfectly on the input shaft of a 2007 Lexus Hybrid.
The clutch hub was welded to a piece of 3" exhaust pipe which was then welded to a circular plate. I'll drill holes in the plate this weekend and bolt it to a sheet of 6mm aluminum which will also bolt to the bellhousing to lock the shaft from spinning.
All up, it cost me about $30 plus dinner for my friend for the welding and some scrap steel he had laying around.