View unanswered posts | View active topics It is currently Mon Jul 13, 2020 7:33 pm

Reply to topic  [ 35 posts ]  Go to page 1, 2, 3, 4  Next
sim's Volvo 245 
Author Message
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
Comments thread here:

The Snot Rocket

My name is Simeon, I have a 1979 Volvo 245 with a B21A engine.

That is, a 2100cc SOHC 4-cylinder gasoline engine, with a
carburettor and points ignition.

The motor makes about 100hp stock.

Ultimately, I intend to convert the motor to EFI and electronic
spark control, as well as adding a turbocharger.

I bought the car in February of 2010, and spent much of the year
getting it stable. The engine runs a whole lot better now, it
used to diesel and was hard to start hot. A tune-up, a few sea-foam
treatments and a couple of long road trips have made the car a
lot happier, though she is still dog-slow.

I've divided my goals up into phases, the first phase will be
getting a FreeEMS system up and running and controlling spark

Second phase will be building a pressurized fuel system and
getting the car running on EFI reliably.

Third phase is adding turbocharging. I have manifolds and
turbochargers in my parts bin from several turbocharged Volvo
motors, including two B21FTs, a B230FT from a '89 740T, and a
turbo from a '94 850T (a TDH04-15G).

In the long term, I'm interested in implementing lean-burn maps
and techniques in order to reduce the fuel consumption of the
car, while retaining performance. I expect to experiment with
water/meth injection as well as EGR. I want to fully instrument
the engine with WBO2 and EGT/cylinder.

I'm a competent shadetree mechanic, good with a soldering iron.
I'm smart, but I doubt I'll be designing boards for FreeEMS. I
really want to get into the software, I know I need a running
car to really make a difference here though.

I became interested in FreeEMS after spec'ing a MS3 and then
realizing I would be unable to use the EMS to control an e-fan
using PWM. If the source was free, it would be trivial to
experiment with fan duty cycle. As they closed the source, it is
now impossible. I have no bad feelings, they have the right to
choose their license, however, the license they chose does not,
and will never work for me. The FreeEMS license[s] do work for
me, in perpetuity, and, with luck, I'll be able to contribute
back to the project. Making thirty-something-year-old cars
awesome is a good thing to get into.

This FreeEFI thing is pretty awesome, and I'm happy to be a part
of it.

To summarize,
My goals are to roughly double my power, on a stock bottom end
(Volvo redblock motors are good for way more) and, ultimately,
double my fuel economy. Resulting in a fun and economical
roadtrip machine (Canada is a large country).

My wagon, on a forest road outside of Thunder Bay, Ontario.
(She is a roadtrip machine, so far, ~10,000km of tripping under her [timing] belt)

<@TekniQue> but in the end, it's code that makes a computer useful

Last edited by sim on Fri Sep 02, 2011 5:36 am, edited 1 time in total.

Thu Jul 28, 2011 6:14 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
I am using a Camshaft Angle Sensor from a DSM engine, a 1992
Eagle Talon, in fact. B&D auto (
provided me with two sensors, and a bunch of other stuff.

I bought an adapter that fits in place of the block mounted
distributor and accepts the DSM CAS on top. The adapter was
designed and made by Yoshifab (,
I was happy to be one of the first Volvo owners to get this

On the left is a DSM CAS mounted to the Yoshifab adapter. On the
right is a stock B21FT distributor.

Yoshifab also supplies a higher resolution trigger wheel for the
sensor. The higher resolution comes at the cost of fewer
opportunities for synchronizing per revolution.

The stock Mitsubishi wheel on the left, the Yoshifab wheel on the

Jammi designed a better pattern that uses multiple windows of
increasing size instead of the single window for sync that the 24/1
has. (

Fred has done some work on decoding the stock wheel:

I believe the 24/1 wheel is already supported in code.

Once I'm up and running with spark, I will be able to test the
code for both wheels. Having a second CAS sensor makes swapping
wheels pretty easy.


This is the CAS installed on a B21FT on a stand. It is much more
compact than the distributor.

The Yoshifab adapter makes it easy to get a decent cam position
sensor sorted on this antique engine.

<@TekniQue> but in the end, it's code that makes a computer useful

Last edited by sim on Fri Sep 02, 2011 4:18 am, edited 4 times in total.

Fri Jul 29, 2011 7:54 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
To fire the plugs I have a set of GM LS1 coils from a Chevy
Suburban. My friends at B&D supplied me with all eight, as well
as the bracket and wiring harness that goes with them.

I chose these coils because they are very easy to interface to an
ECU. They are beefy enough to handle much more boost than I ever
expect to run. They are also a common GM part, with replacements
available pretty much anywhere in North America.

Each coil is a self contained unit that has a power
connection and ground, and a signal connection and ECU ground.
By bringing the input high, the dwell period starts, the spark is
fired when the input is brought back low. There is a dwell limit
built into the coils. Very user friendly coils.

I made up a bracket to mount four of the coils to the top of the
valve cover.


The matte black paint hides the organic nature of the bracket, ;)
it's nice to have an engine on a stand handy to use as a fixture.

The part number for these coils is H6T55171ZC

Fred suggested using a line driver chip, one of 74HC[367,368]
(non-inverting). I was only able to find the inverting version at
a local electronics store, but I got two SN74HC241N line drivers
for $0.88. One of these chips should be enough to drive four
coils and four injector drivers.

The schematic for the ECU->coil driver circuit is in a following post.

Summary: I chose LS1 coils because they are easy.

Edit 12 Nov 2012:
These coils appear to be third generation GM LS coils based on
this page:

As LS3 coils, they will have a somewhat shorter maximum dwell
period. I need to figure this out prior to boosting the engine;
the reduced maximum dwell period can lead to unintended ignition
advance increase. The coils do charge quickly, so slightly
conservative settings should not be a problem.

My understanding is that the LS2 "truck coil" settings should be

Another thing to try is opening up the plug gap a bit. These
coils are hot. The gap specs for points ignition should be
excessively conservative.

<@TekniQue> but in the end, it's code that makes a computer useful

Last edited by sim on Tue Nov 13, 2012 6:28 am, edited 4 times in total.

Fri Jul 29, 2011 9:00 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112

Fueling this engine is a problem that has been deferred to phase
two. I do have a plan, however.

I pulled a bunch of parts from a 1989 740T last summer through a
Craigslist ad. With the long term goal of building an EMS for my
1979 wagon, I pulled the entire intake manifold with the fuel
rail and the injectors and the throttle body.

This is the chunk that will ultimately replace the SU carb on my
B21A (1906 technology!).

The injectors are Bosch "Green Top" injectors. A low-z injector.


The fuel rail has a manifold pressure indexed FPR set up for
boost. It is ready to be hooked up to a source of pressurized
fuel, a return line and some wires. These are commodity parts,
not as common as GM, but easy to source.

I bought a Peak and Hold injector driver board from JBPerf
( a fine Canadian outfit.
I'm happy to not have to solve this problem.

This, again, is pure laziness. The P&H board takes a simple logic
input and handles the rest for you. Line drivers again are all
that is required to drive the injectors with this board.

<@TekniQue> but in the end, it's code that makes a computer useful

Last edited by sim on Sat Aug 13, 2011 7:19 pm, edited 2 times in total.

Fri Jul 29, 2011 9:27 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
Throttle Position Sensor

The TPS is not critical to getting a spark-only set-up running.

I have a later manifold from a B230FT ready to go when it comes
time to go EFI. The TPS sensor on this manifold is two switches.
The TPS signals WOT and closed throttle.

A proper rheostat TPS exists on the Volvo 960 series. I obtained
a TPS from a Volvo 960 from my friends at B&D auto.

I have yet to mate the newer TPS to the older throttle body.

This has been done before:

Maybe a GM TPS would be better to adapt?

[TODO: Post final solution to this here]

<@TekniQue> but in the end, it's code that makes a computer useful

Fri Jul 29, 2011 9:41 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
Wideband O2 Sensor

To determine the actual air:fuel ratio I have an LC1 wideband O2

I bought an Innovate LC1 wideband system from

Due to the long 4-2-1 downpipe, and the fact that some muffler
shop welded the downpipe to the rest of the exhaust, I have not
yet installed my wideband O2 sensor. This 1979 Canadian market
car did not come with a catalyitic converter and has no provision
for an O2 bung in the exhaust system. The LC-1 came with a
weld-on O2 bung, good for when I drop the exhaust.

I'm keen to get this thing installed, my fuel economy has been
pitiful lately, and watching the ratio in real time will provide
no end of entertainment while I get my car off of the

Due to the pain-in-the-ass factor, getting the LC-1 installed may
happen at the same time as widening the exhaust.

<@TekniQue> but in the end, it's code that makes a computer useful

Fri Jul 29, 2011 9:56 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
Circuits for driving the LS1 coils and conditioning the inputs
from the CAS.



The LS1 coils need a simple logic level signal to trigger them.

I am using a MC14503BPC Line Driver IC to buffer the CPU from the
coils. The inputs to this chip from the CPU go through a 1K ohm
resistor. The outputs drive the coils through a 200 ohm resistor
as well as driving a LED through a 3k ohm resistor.

The enable pin for the bank of four buffers is tied to ground,
the drivers are always enabled.

There will be four driver circuits, connected to pins PT2-PT5 on
the TA board. This is sufficient for sequential ignition.

I will connect the remaining two drivers to PT6 and PT7 so that I
can do wasted spark and sequential injection if I get my
pressurized fuel system built before the xgate code is testable.
I think Sean is on track to beat me to it, but it's good to be
prepared and I won't have to feel like two of the drivers on the
chip are "wasted".


The Mitsubishi CAS pulls its normally floating outputs to ground
when the (optical) sensor is occluded. For normal operation, the
output from the sensor must be inverted between the sensor and
the CPU.

The CAS sensor has two channels, CKP is the (outer) crank signal,
and provides resolution, CMP is the (inner) cam signal and
provides synchronization. (Really, the wheel spins at cam speed,
so the cam/crank distinction is a little misleading. Even
resolution/synchronization, while apt for the 24/1 wheel, is not
quite right for the stock 4/2 wheel as each band contributes both
to resolution and to synchronization opportunities.)

CKP connects to PT0 on the CPU, CMP connects to PT1.

I am using a SN74HC368N chip to condition the signals from the
CAS. This is a line driver chip that inverts its inputs.

I have not included LEDs in the diagram, but they will be added
on the driven side parallel to the CPU connection in series with
3k ohm current limiting resistors.

Unused inputs on the SN74HC368N are tied to ground. The
unused bank is disabled.

EDITED: Added intent to use the two extra Port T pins. Added
information about the pins the CAS connects to.

<@TekniQue> but in the end, it's code that makes a computer useful

Sat Aug 13, 2011 6:37 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
At this point, I have a power supply built on veroboard along
with connectors for the TA card, and line drivers for Port T --
two input for the CAS, four output for the coils and two spare.



I built two identical supplies side by side using LM1940T
regulators and the circuit from their datasheet. One regulator
powers the TA board, the other is powering the Ignition board.
The grounds are tied together and power is fed in through a three
pin connector. Both positive leads are tied together in a mating
connector and wired to an old laptop supply feeding 12.5v at 3A.

I built two supplies thinking that one might be "always on" for
the TA board at some time in the future. In any case, it provides
a total of 2A.

The regulator on board the TA board (a LM1937) has its ground
lead clipped, and the input and output leads bridged. Regulated
power is fed to the board through the normal power connector.

I'm using a 74HC368 3-state inverting line driver to condition
the signal from the Mitsubishi Cam Angle Sensor through a 1k ohm

I'm using a MC14503BPC 3-state non-inverting line driver between
the Port T 2-7 pins and the pigtails coming off of the board.

Both the outputs and the inputs from the CAS drive LEDs on the
driven side of the line drivers through 3K3 resistors. I'm using
small LEDs that light up fine through the big resistors.

So, how is it working?

The CAS inputs work properly. The LEDs light up, when a window
passes through the sensor, they go out. The LEDs are either on
brightly, or off.

The outputs are a little questionable. The LEDs seem to come on
dimly randomly (some do others don't, unpredictably) when the CAS
is turning, some of the LEDs tend to flicker dimly in time to the
CAS LEDs. If I wave my hand near the board, the LEDs flicker.

I have about two feet of pigtail coming off of the board, shrink
wrapped in two cables, one with PT2-5 and a ground, and one
with PT6 and PT7, as well as a ground.

I've scraped clean every gap between traces on the veroboard,
brushed the whole thing with a small wire brush, and verified I
can fit my dental pick (at least) between every soldered trace.

I'm pretty sure I've wired everything up correctly.

Maybe the weird behavior is because the inputs to the drivers
are floating?

Next on the agenda is sorting out a loader and some kind of
firmware to load to test things out.

I am planning a trip to obtain a couple of MAP sensors for,
hopefully, Wednesday.

I'm getting close here.

<@TekniQue> but in the end, it's code that makes a computer useful

Tue Aug 16, 2011 6:42 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
FreeEMS Build environment

A i386 architecture Debian system. I'm using squeeze, which is
Debian Stable at this time. I set up a xen VM as my desktop runs
the amd64 version of squeeze, and a VM ensures that nothing I do
can ruin my stable desktop system. This is serious overkill, but
I'm accustomed to using a fresh VM for developing web
applications, so it is easy to set up for me.

An up to date i386 Debian system will work fine also.

Add the following line to /etc/apt/sources.lst
deb css-debs binary

Run these commands to get the build tools:
sudo apt-get update
sudo apt-get install git build-essential freeems-toolchain

Use git to pull a working copy of the FreeEMS project.
sim@bluebottle:~/FreeEMS$ git clone

cd freeems-vanilla/src

make all

As a result of the successful build, a directory 'output' is
created in the 'src' directory. It contains a number of

make s19

This produces the s19 files that can be loaded on to the
MCU in a subdirectory named 'firmware'.

To build the Snot Rocket specific firmware, run:
CLIFLAGS="-DSNOTROCKET=1" make clean s19

Use either the freeems-loader program, or a recent build of
MegaTunix to load the BenchTest.s19 firmware to the board.

The MegaTunix loader is called mtxloader or msloader.

Serial communications with the TA board.

I initially tried to use a generic USB->RS232 adapter cable to
talk to the TA board.

Using the adapter, I was able to connect to the board, and issue
the flash command to the demo app, however all output from the TA
board was garbled.

On a hunch, I dug out an older P4 desktop machine that had four
hardware RS232 ports. Once I sorted out a Debian install on the
machine, and bodged together a straight-through serial cable, I
was able to run the demo program on the TA board and get the
expected output.

If you are having problems with your TA board, an initial
suspect should be any USB->Serial adapters you might be using.

I have been using an old 32bit Thinkpad X41 running Debian unstable
since I got the car running. I found a USB-RS232 adapter that works,
information follows in a newer post.

<@TekniQue> but in the end, it's code that makes a computer useful

Last edited by sim on Fri May 18, 2012 12:21 am, edited 4 times in total.

Thu Aug 18, 2011 7:42 am
LQFP112 - Up with the play
User avatar

Joined: Thu Jun 02, 2011 8:17 pm
Posts: 112
I went to the pick-a-part yard in search of a couple of MAP
sensors to use. I looked at many of the cars there, and wound up
pulling three from various early nineties Hondas. I chose them
because they were easy to identify, and easy to pull. You
can find them bolted to the top centre of the firewall, in the
engine bay, just behind the intake manifold.

All of the sensors are made by Denso.

I pulled two sensors with part number: 079800-1691 and one with
part number TN079800-2540.

When I got home, I searched the internet for information on the
sensors. It turns out there is not that much out there.


The sensor takes a 5v reference voltage, a ground, and produces a
voltage on the third pin proportional to the pressure sensed.

The sensor response is linear.

I could not reliably find a pin-out online, but discovered that
the letters "V G O" are molded into the inside of the connector.

In the picture, 'V' is at the top, 'O' at the bottom.

V is the 5v reference voltage, G is ground (ECU ground!) and O is
the output.

Having determined the pin-out, I set up a test rig to determine
the response. I connected the sensor to power (4.95v, to be
precise) and ground and hooked my multimeter to the output wire.

I used a hand operated MityVac vacuum pump with a gauge to test
the output at ten points spaced 10 kPa apart.

I plotted the results and extended the line to 0v and 5v. The
maximum vacuum it can read is -105 kPa (about -15psi) while the
maximum boost is 80 kPa (about 11 psi).

(Ambient is about 102.0 kPa today)

All three sensors gave results that were very close to each
other, within the measurement error, I expect.


Here are the raw values:
kPa, Volts
  0, 2.86
 -10, 2.63
 -20, 2.34
 -30, 2.06
 -40, 1.80
 -50, 1.55
 -60, 1.31
 -70, 1.02
 -80, 0.74
 -90, 0.43

This should be suitable for a naturally aspirated car (as these
were, I was unable to find a forced induction car with a MAP
sensor in the yard), or possibly even a low pressure turbo.

I will likely have to get a 3 bar sensor at some point, but these
were easy to find, cheap, and didn't require waiting for

(EDIT) Interfacing the MAP sensors to the TA board

I am using the input conditioning circuit for an external MAP
sensor from the RavAGE project.


I substituted a 22nF capacitor for the 15nF, as that is what I

For the Schottky diodes, I am using 1N5817 parts I obtained
locally. There are Schottkys out there with lower forward voltage
that would be a better choice.

The MAP sensor connects to the AN04 input on the TA board, the
AAP sensor connects to AN05.

MegaTunix shows a reading for both sensors (The TA board is
running the Bench Test Decoder firmware).

I connected a vaccum pump to each sensor and recorded the


kPa     MAP     AAP
0       164     72
-10     152     67
-20     136     61
-30     122     55
-40     108     50
-50     93      45
-60     78      40
-70     63      35

Interestingly, the MAP readings seem to be scaled to 2x AAP. I'm
using the same sensor part number and the same conditioning
circuit for both.

I'm hoping this difference is the result of the firmware
expecting different sensors, rather than some kind of screw up on
my part.

<@TekniQue> but in the end, it's code that makes a computer useful

Fri Aug 19, 2011 7:00 am
Display posts from previous:  Sort by  
Reply to topic   [ 35 posts ]  Go to page 1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 1 guest

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software for PTF. ColorizeIt.