Category Archives: Engines

1999 Honda Civic Head Gasket Replacement

In the winter of 2014 my wife’s 1999 Honda Civic overheated at the end of her drive home from college (about a three hour trip). After finishing up finals, I drove back home and met her at her mom’s house where the car had been moved into the garage so i could look at it. I found a lot signs of how bad the overheat was – the lid of the radiator overflow tank had melted, the label on the oil filter had shrunk to half its size, the valve cover smelled of roasted oil. One of my friends came up from St. Louis for a few days and helped me replace a large number of components and fluids: new radiator, new cooling hoses, thermostat, overflow reservoir, oil change, multiple coolant flushes, and the battery (I think it just happened to die around this time).

After all our work was complete, we fired the car up and it ran fine. However, I figured this wasn’t the last of the trouble – there was no obvious problem I had found during any of our work, nothing that seemed to be the root cause. After returning to school my suspicions were confirmed; the car was low on coolant. From there began a multi-month journey of trying every possible diagnostic method I had available to determine where the leak was. In the meantime, I kept a bottle of coolant in the back of her car and would regularly fill it up (every 3-4 weeks I’d put about half an overflow tank’s worth of coolant in). After trying leak-test dye, radiator headspace exhaust testing, radiator cap pressure testing – nothing turned up any obvious results. Everything pointed to a small leak between the cooling jacket and a cylinder, but small enough that my radiator headspace test didn’t turn up anything.

However, her car kept running, it just needed a bit of coolant every now and then. Fast-forward to December 2014. I take a job at Southwest Research Institute, we move to Michigan, and her car keeps on trucking. Finally, this summer I had to decide between selling the car or replacing the head gasket. I choose the later and below is a gallery providing an overview of the process. Before embarking on this project i had no experience in this sort of major automotive repair. I printed out roughly 40 pages of service manual information, watched numerous videos from Eric the Car Guy, and called numerous friends and family members with automotive experience.

The job in total took three weeks, a bit longer than I anticipated but twice I unexpectedly had to order parts (see the timing belt cover photo below). However, in the end, the car fired up and ran. I learned a lot in the process, and gained a decent amount of confidence in my auto tech abilities along the way.

Update (2017-07-15): The car ran without needing a drop of coolant for two years! While the car has been a good learning experience (since this post I’ve replaced roughly half the exhaust system, the power steering rack, and bled the brakes), I was definitely glad to finally sell it and upgrade to something a bit newer.

ThumperFI – Single-Cylinder Motorcycle EFI Controller

What started as a summer project morphed in to today what I like to call ThumperFI – “thumper” from the characteristic sound associated with single-cylinder dirt bikes and “FI” for Fuel Injection. I started the project with the intention of fuel injecting a lawn mower as a sort of in-depth introduction to fuel injection before I started work in the Internal Combustion Engines lab at school. However, the project quickly increased in complexity as my goals became loftier (and I maxed out the inputs to the MyDAQ) until it became a full-fledged system for controlling any single-cylinder engine.

Assembled ThumperFI v1.0 board

Assembled ThumperFI v1.0 board

The system is based around the Atmel ATMega644 8-bit microprocessor. Among it’s many features:

  • On-board serial-to-USB converter (FT232RL)
  • 16kB SPI EEPROM
  • Variable Reluctance CPS (MAX9924)
  • Flyback protected injector output

There are 6 analog inputs to the system, which uses speed-density to calculate airflow. The analog inputs are:

  • Manifold Absolute Pressure (MAP)
  • Intake Air Temperature (IAT)
  • Coolant Temperature (CLT)
  •  Throttle Position (TPS)
  •  Wideband O2 (UEGO)
  • Battery Voltage (BATT)

The firmware is written C and compiled by the AVR-GCC compiler in AVR Studio 6. User configuration and tables (warm-up table, MAP-RPM VE table, etc.) are stored on the external 16kB EEPROM.

The driving force behind this project has been my own desire to learn and grow in both my field of study (mechanical engineering) and other, related fields of study (computer, electrical engineering) as well as learn about engines and controlling them. Since starting this project I have attained experience in:

  • Use of oscilloscope for general measurement and circuit debugging (TDS 320)
  • Use of digital logic analyzer (USBee ZX)
  • Familiarity with engine control sensor use and operation
  • Circuit construction, design and debugging
  • Component selection and sizing
  • Basic engine fuel control algorithms and theory
  • Reading data sheets
  • Microcontrollers and embedded programming
  • Project management and documentation
  • Soldering, both through-hole and SMD (with Weller WES51)
  • PCB layout and assembly

Needless to say, I’ve learned quite a lot – and I’m always learning more each day. Two weeks ago I put the finishing touches on my communication scheme and implementation. Over winter break (2013) I received my PCB from the fab, spent 10 hours soldering it, tested it and only had to make two slight modifications.

Missouri S&T Engine Lab – CFR Pressure DAQ

I have worked in the Missouri S&T Combustion and Spray Dynamics Lab from spring 2013 to present. Primarily I maintain operating test stands and set up stands for use (from obtaining and installing mechanical hardware to developing the LabView interfaces used to operate and record data). My first major project in the lab was to remove an antiquated, somewhat functional in-cylinder pressure DAQ system and integrate the same functionality in to our existing cRIO control system.

This project involved quite a bit of work and research:

  • Reverse-engineering the LabView program written years prior to my arrival for a different NI DAQ system (the CFR is based on the cRIO RT/FPGA system)
  • Implementing the same functionality on the cRIO by adding a DMA FIFO to the CFR “driver” and writing a custom front-end to dequeue and process the pressure data
  • Creating a usable interface that could be easily taught to the TA running the labs
A snippet of the RT processing loop that grabs a complete cycle of data.

A snippet of the RT processing loop that grabs a complete cycle of data.

The most complex portion of the project was researching and implementing the DMA FIFO system to pass data between the FPGA and Real Time (RT) controller – I collected a data point at every crank angle and wanted to be able to display a cycle-to-cycle pressure graph along with calculating IMEP.

A P-V diagram of the system from a single cycle

A P-V diagram of the system from a single cycle

When complete, my program offered significant improvement over the previous iteration:

  • Cycle-to-cycle graphs not only possible but seamless
  • Live Pressure-CAD and Pressure-Volume graphs, as well as calculated IMEPn and work without taxing the real-time system.
  • Clean, organized, commented block diagram
  • User-selectable graph averaging

Aside from the programmatic improvements, I was able to remove an entire cabinet that housed the old computer and DAQ interface, as well as a specialized signal box that was simply inverting the crank position signal – this allowed us to officially control and log data from the CFR from a single cabinet.

The CFR cabinet controls and records data from the research engine

The CFR cabinet controls and records data from the research engine

ME 240 Final Project

In the fall of 2014 I took ME 240, Mechanical Instrumentation, a course described on the class website as:

This course is designed to provide the students with a background in a broad number of transducers and measurement systems for recording and controlling real world processes and conditions. This course will combine a combination of lecture, laboratory and additional hands on work to teach the indicated topics.

Every student purchased an NI MyDAQ and learned the basics of LabView to create simple DAQ systems. The final project for the course was open-ended and allowed the students to direct the project as long as it fit the guidelines (at least one transducer of our choice, as well as used LabView and measured some sort of signal). My project partner and I decided to instrument a simple lawn mower engine and calculate mass flow as the primary measurement; however, in total we measured six different signals:

  • Exhaust Gas Temperature (EGT)
  • Wideband O2 (UEGO)
  •  Throttle Position (TPS)
  •  Intake Air Temperature (IAT)
  • Manifold Absolute Pressure (MAP)
  • Crankshaft speed
The front panel for our final project, we tried to make the main interface as simple and readable as possible with configuration in other tabs.

The front panel for our final project, we tried to make the main interface as simple and readable as possible with configuration in other tabs.

We calculated mass flow using the speed-density algorithm, adjusted for air density. We also measured other parameters, such as EGT from cold-start and heat soak after shutdown. Live information was displayed on a front panel and the user had the option to log data, as well as the ability to configure various parameters such as sample rate, transducer configuration, etc.

The program was based on a producer-consumer model and the consumer loop was a state machine that handled processing, displaying, data logging, etc. The data logging was also a state machine that handled opening, writing to and closing a file (allowing multiple logs to occur during a single run).

The consumer loop, processing state demonstrating the number of custom VIs developed for the project. These custom VIs simplified the layout and made functionality obvious in addition to adding reusability for other projects.

The consumer loop, processing state demonstrating the number of custom VIs developed for the project. These custom VIs simplified the layout and made functionality obvious in addition to adding reusability for other projects.

We had access to some more advanced hardware through the Engines Lab and as a result were able to record data at a fairly high throughput. With this data we were able to examine the MAP signal during the intake and calculate true mass flow using the measured value and time differential between samples. If you’re interested in learning more about this project you can download our final presentation from Dropbox. We mounted the engine to a “stand” that we secured with a moving blanket to reduce vibration and to stop it from moving around on the floor. The lawn battery we were originally using for power stopped working so we used my Accord’s battery as power.

Sometimes it was too cold outside to run the engine with the garage door open so we ran the jumper cables and exhaust out the cat door.

Sometimes it was too cold outside to run the engine with the garage door open so we ran the jumper cables and exhaust out the cat door.