E-Miata

#003 E-Miata

last updated: 9/16/23

Over quarantine, (~9/20 to ~8-21) I worked on converting a 1990 Mazda Miata to run using an electric drivetrain. I bought a body, mounted electric motors, assembled and mounted a battery pack, and ran wires. It is was fully electric and can be plugged in using public charging.

However, the original design on two motors connected via a chain to the transmission was very noisy and wasn't torque-y or smooth. Over winter break of my sophomore year of college, I did a sprint to replace my two motors with a single Warp 9 motor that was directly connected to the driveshaft without the transmission.

Summer of 2023 I finally built up enough courage to take the car some distance - I decided to drive it on the highway and up the mountains to my summer camp job. (50 miles). At the top of the ~1000 ft hill climb my front battery pack caught fire. The fire was slow and I was was never in danger, but the car was not salvageable. This sadly devastatingly concluded the project. I learned a lot and grew immensely over the time that I worked on and drove the car, and I don't regret anything, besides being a little more cautious about testing a new battery pack.

I have not updated the tense of the article below.

Unable to load miata/IMG_5316-COLLAGE.jpg
The car at night.
Unable to load miata/inspection.jpg
Attempt at inspection.
Unlike other projects, this one is so multifaceted I have provided a table of contents to easily navigate the project.

Overview

The original idea for a DIY electric car project developed during spring 2020, but was abandoned because with senior year I would not have enough time to work. When we (my parents really) realized that schools were not going to open, I began seriously considering the feasibility of a project.
When choosing the model, I had a few requirements. The car had to be
  1. LIGHT! Lighter cars get better performance from cheap electronics than a heavier car would.
  2. Mechanically and electrically SIMPLE. (Manual transmission and minimal (or at least lenient) engine diagnostics)
  3. Be CHEAP! Cars made after 2000 aren't worthless yet; before 1980 has historical value.
Top choices were the Mazda Miata, Pontiac Fiero, Porsche 924 and 944, and Alfa Romeo Spider . The sheer number of cheap (broken) local Miatas is what drove the decision. I spent about a month tracking prices and looking for cars. I only had a few prerequisites. The paint job needed to be decent because I didn't want to do that myself and the interior could not be ripped because I didn't want to replace the seats.
Unable to load miata/before.JPG
I found this Miata for $1600. For a 30 year old car, it is in good condition. Seats are great, exterior only has some very minor scratches, minimal rust, and a new top. All the electronics worked including the headlights, blinker circuitry, even the pop-up headlights which are notorious for breaking! My grandfather and father accompanied me when we drove to Fredericksburg, VA to pick it up.

Batteries

The car currently employs a 21S 136AH 78V nominal lithium ion battery pack constructed by me out of cylindrical cells.

Originally, the plan was to use 3 Tesla Modules (see right) getting about 12 kWh (18s) and for about $3600. Once I started digging, I got the notion the DIY option (spot welding cylindrical cells) could be 1 to 2 thousand dollars cheaper, in addition to being able to supply the exact voltage and capacity I wanted. I started research by looking at 18650 cells, finding a few cheap options. However, a few folks over on the DIY Energy Pack Discord pointed me toward a somewhat more reputable company, where I found an even more cost efficient battery.

Not only was the QB26800 battery (see far right) cheaper (including shipping from CN) than the Tesla cells, the bigger form factor would require less welding connections to assemble the pack compared to a custom 18650 pack. (by a factor of about 2.5:1). It would also supply more current due to the 5C (5C * 6.8 Ah = 34 Amps per cell * 40 cells = 1360A, on the half pack that's 680A) max discharge rate.

Should I have built my own battery pack? No. But I learned a lot doing it - I even built a pack for my bike out of leftover cells.

Unable to load miata/teslamodule.jpg
The 74p6s 18650 pack - 5.3kWh - ~1300 dollars, 357$/kWh when factoring in capacity degradation
Unable to load miata/battery.jpg
The QB26800 - 20Wh - $4.40, 220$/kWh, including shipping. (minimal capacity degradation). In 2021 this was acceptable for new cells. For used cells 100-120 $/kWh is more typical.

Testing the QB28600 Battery

I had two main goals when testing the 8s3p trial pack.

Quantify Heat Generation

I needed to determine the heat generated by the cells in order to decide whether air cooling or water cooling was necessary. After several high current tests with various levels of forced air flow, I deduced that blowing air through batteries could keep them within 20 or 15 °C under a constant 3C. In MD, the hottest days get up to 35 or 40 °C. The batteries are rated to function at 55 °C. I concluded that it would be feasible to cool the batteries with forced ambient air.

Determine Cell Quality

Buying cells off of the internet is always a risk, so I did everything I could to mitigate that risk. The company I purchased my cells from was recommended to me as providing reliable batteries. I tested my batteries for their thermal characteristics and capacity using a simple capacity tester from Amazon and my lipo chargers' discharge function.
Unable to load miata/batterythermal.jpg
A thermal image using a FLIR One camera.
Low power run-up of the testing fan. This is not the fan I ended up using.

Battery Monitoring

To monitor the batteries, I am using cheap chinese BMS and 15 analog temperature sensors. The temperature sensors are read by an Arduino to within about 1°C accuracy. The BMS also reports data via Serial about the packs total voltage, individual cell voltages, temperature of the BMS. I wrote my own Arduino library to communicate with the board.

Design

My first idea was a to use machined MDF in combination with 3D printed brackets. This was just a bad idea. It would cost at least $100 alone in filament, and the 3D support structure could just be solely fashioned out of the MDF. It would also take 1 month of strait printing to make all the brackets out of ABS. Because of this, I then fashioned a new design that did not include the brackets. The new design also allowed smaller holes to be machined, which means a stronger part in the end.
Unable to load miata/cad1.png
The full pack if designed using using the bracket method
Unable to load miata/cad2.jpg
The full pack if designed without brackets

Physical Construction

When I began, I targeted for 50 miles of range. To be on the safe side, I planned for 70, with two identical half packs on top of each other. As the scope of the project became more apparent, I decided to scale down to only one half pack, and 35 miles. The half pack could still deliver 680 amps at 5C.
Unable to load miata/wholepack.jpg
Unable to load miata/OneChannel.jpg
Laying nickel strips down for the series connections.
Unable to load miata/donepack.jpg
Finished pack with temperature sensors and high current output.

Temperature Management Solution

The current design uses 8 * 80mm square fans set up in a push pull configuration per half pack. Both heating and cooling is controlled by the Arduino based on the temperature of cells, and the driving/charging state. They keep the batteries to a very acceptable temperature. I did an aggressive test drive on a warm day (450 amps continuous for several minutes) and the batteries did not get even hot to the touch, just slightly warm.

V1 Motor Setup

Unable to load miata/motors.jpg
Unable to load miata/motor.JPG

I used two ME1007 motors for the original motor setup. They are bolted onto a 1/2" aluminum plate that then bolts to the transmission housing.

However, 3.7 miles into the first road test, the belt snapped. I had to decide between a chain drive, a wider belt, and gears. Gears would mean enclosing the space, and potentially moving the motors. Expensive and time consuming. Widening the belt could be hundreds of dollars for each wider pulley. New sprockets and chain would set us back 70 or 80 dollars, far cheaper than the belt upgrade. I made the switch in a day and had the car driving. At the time of writing, V1 has traveled over 100 miles on the chain drive. The noise is higher than the belt but only slightly so. I am very pleased with my decision.

One question I get a lot is about the transmission. The manual transmission has remained in the car for version 1 for two reasons: it is fun, and it spans three of the six feet from the motors to the differential. Yes, i just keep it in 3rd the whole time.

V2 Motor Setup

The last setup was noisy, was not conducive to acceleration, and the chain slipped under high torque. Pretty bad.

So, here's version 2.

The Sled

Unable to load miata/sled.png
The CAD in Fusion 360. I scanned the miata frame with my iPhone. (Not shown)
Unable to load miata/sledwelded.jpg
The sled after being welded with the Miata Power Plant Frame attached.
Unable to load miata/sledincar.jpg
The sled in the car.

The motor sits on a welded metal frame. I designed the frame in Fusion 360, bought the metal at metals supermarkets in Beltsville, cut it at home with an angle grinder and had it welded by a neighbor. For my first ever steel welded part, it came out pretty well. I coated it with a rubberized top coat.

The frame is directly bolted to the power plant frame that is attached to the differential. The reaction torque force from the differential pushes it forward (wheels pushing backward, diff rotates around rubber connection point and pushes itself forward). Something must resist that force - in the original car the Power Plant Frame (PPF) was attached to the transmission which connected to the engine. The forward force was absorbed by the engine mounts.

In my design, the forward force goes into the PPF. The PPF is bolted solidly to the sled. The sled is mounted on rubber mounts, so the PPF can still move - like it did when connected to the engine.

The Adapter

The adapter changed the most over the course of the design. I was set on having the adapter attach to the motor shaft via taper lock bushing. Luckily, the motor came with a taper lock and taper lock hub. I decided to machine a circular block with the correct bolt holes and center hole to weld a section of the old transmission output shaft into it. My machinist made sure that the hole for the shaft was perfectly straight relative to the holes for the bolts, so I knew the spline shaft would be dead straight. Sure enough, it is!

Unable to load miata/adaptercad.png
The CAD. Yes, the taper lock is not fully modeled, just it's flange.
Unable to load miata/adapterparts.jpg
The parts on the bench.
Unable to load miata/adapteronmotor.jpg
The adapter on the motor.

Motor Controller

Unable to load miata/soliton.jpg
The Soliton 1 controller in the car.

V2

V2 uses a Soliton 1 controller. 340V max, 1000A. A beast. Super smooth, cool user interface. Pretty sure the company that built it fell apart so I am toast if it breaks... otherwise not much to say.

V1

V1 used a Alltrax 7245 DC motor controller. Although this model is outdated (as are the motors), it provides 450 amps at 72 volts which was enough power for V1. The controller is controlled by a 0-5k potentiometer pedal and enabled by the key ignition. Not comparable to a Tesla (Model S base model has 285 kW (382 hp)), but as of the V2 battery the car reaches 65mph and can take most hills at 45 mph.

Vacuum Brakes

V2 (EZ version)

For the v2 car I replaced all of these parts with a more professional pump, reservoir, and switch that was thrown in along with my Soliton 1 purchase.

V1 Car (DIY Version)

Unable to load miata/parts.jpg
Assortment of parts for the brakes.
A video of the switch in action.
Unable to load miata/IMG_3260.jpg
The installed product, complete with a switch.

There are several components that run off the engine power including the power steering, air conditioning, power (vacuum) brakes, and heating. The latter two I decided to implement. Vacuum brakes on gas cars usually use the air rushing into the throttle, employing Bernoulli's principle to deliver a vacuum and assist the master cylinder. Sadly, we have no engine.

The vacuum system consists of three main components: A vacuum pump, a vacuum buffer(empty can), and a pressure switch to actuate the pump based on pressure levels. I bought a 12 volt vacuum pump from Amazon, made the buffer with a brass fitting and an old aluminum bottle, and bought the switch. During this time, I learned that I could 3D print airtight parts, so I printed a 5 way tee and the adapter to the hose that attaches to the brake booster out of ABS and reinforced it with epoxy.

The brakes switch when the ignition switch is in the run position. It is not very noisy compared to the noise of the engine. When stopped it is the only source of noise and noticeable when the speakers aren't on.

After a year the parts were quite leaky... So they got replaced.

J1772 Public Charging Socket

Unable to load miata/IMG_2223.jpg
Unable to load miata/IMG_2224.jpg
The car features a J1772 socket, and is compatible with Level 1 and Level 2 public charging. The onboard Arduino will handle the handshake between the car and the charging port. I read two pins (see image): pin four on which I apply varying resistances (via a relay and some simple circuitry) to turn the charging on and off. Pin 5 (The proximity pin) by reading the voltage can determine if the car is plugged in. Currently, the Arduino detects when the plug has been inserted and starts charging. The Arduino communicates with the BMS and charger and will stop charging for balancing via a custom two wire digital interface with the charger.
Unable to load miata/j1772.png

The J1772 was one of my favorite parts to build.

Accessories

Onboard Screen

Unable to load miata/IMG_7931.MOV.jpg
Click the image to open a video demonstrating the screen.
The car features an information center with statistics about the car. It uses a 10.2 inch touchscreen that is plugged into a Intel NUC which in turn displays the information via a Svelte (recommend) + an Electron app.

Available information includes
  • individual cell voltages
  • balance status
  • voltage statistics
  • a graph of the voltage over user specified duration time
  • Battery and motor current as reported by the controller

I build the Electron app on my laptop and then use a script to upload it to an Amazon bucket. The bucket is downloaded and ran manually. You can see the code for this app here.

Inverter

The car has a 300 watt inverter to power various accessories. It is powered by the 12 volt battery and is turned on and off by a button on the screen.

Charger

The car carries an early EMW charger. It can do 12kW or 60 amps, although since I am currently running at 72V, I am limited to 77*60 = 4.62 kW. After the planned upgrade to 144 volts (maybe higher), I will be able to charge at the full 12 kW (48 miles of charge per hour). I have edited the firmware of the charger in order to allow for a custom serial interface to communicate with the charger. This allows for full control over the charger and realtime charging stats to appear on the screen.

Performance Specs

Characteristic V1 (Aug 21 - Dec 22) V2 (Jan 22 - Jun 23) V2 (Jun 23 - Fire)
Max Speed 65 53 80+
System Voltage 88.2V - 74.2V (21s) 88.2V - 74.2V (21s) 172.2V - 144V (41s)
Actual Power Throughput ~10 kW ~30 kW ~80 kW
Battery kWh 10.5kWh 10.5kWh 21kWh
Max range (mi) 35 35 70
Time to full charge Level 1: 8 hours, Level 2: 2.5 hours Level 1: 8 hours, Level 2: 2.5 hours Level 1: 16 hours, Level 2: 2.5 hours
Acceleration 💩 fun really fun
Flamability low low high

Future Plans

  • Upgrade the speed controller to a 144 volt 1000 amp model. (One that supports 72 volts as well) (Jan 2023) - Got Soliton 1 controller: 340V 1000V
  • Upgrade the drivetrain to a single 144V 1000A motor directly powering the wheels. (Jan 2023)
  • Upgrade the batteries from a 21s to a 40s or 60s (more likely) (3.7V*40=148) or (3.7V*40=222)
  • Switch the electronics over to CAN Bus using a custom PCB CAN node.

This results in a 150kW setup, direct drive. That is a significant upgrade in power (and noise, the chain was quite loud) to the current V2 setup. Performing the steps in this order allows the car to be operational in between all of the steps.

As of January 2023, the motor and controller upgrades are complete and the car drives great up till 45 mph. The additional voltage will help lower battery currents and allow for continued acceleration to a higher speed.

Go To Top Guess what? I made this website! Check it and many of my other projects on my github.