Skip to the content
2 layers56.6 × 22.2 mmIgniter, the printed circuit board in 3D

Drop-in replacement for 22RE igniter modules.

Size
56.6 × 22.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
52
Nets
50
Pads
161
Tracks, vias
219, 10
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
8 Jan 2024
Updated
24 Jul 2024

Overview

Igniter is an open-source printed circuit board by jephilp, from the jephilp/22RE_Igniter repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 56.6 × 22.2 mm with 52 parts on 50 nets, routed with 219 tracks and 10 vias.

It is built around the ATTINY841-MU, 74LVC3G17DP and ISL9V3040D3ST-F085C, with the MAX9924UAUB+T and ADG419BR among its other parts. Its parts include 19 resistors, 12 capacitors, 8 diodes, 6 ICs and 4 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

5

README

README.md

Igniter Module for Toyota VAST Engines

Hi there! This is a repository first for the 22RE igniter module, and eventually most Toyota VAST igniters. It is currently a work in progress.

What is VAST?

VAST stands for variable advance spark timing system. It's the system Toyota uses on a ton of their older vehicles.

How does it work?

Here's a very generalized diagram to get a better idea of how the system works:

mermaid
graph LR
A[ECU] -- IGf --> B[Igniter Module]
B -- IGt --> A
B -- NE --> A
B --> C((Ignition Coil))
C --> D{Engine}
D -- VR Signals --> B

Know the flow

The way that everything ties together is fairly simple:

  • At startup, the igniter assumes a locked timing. This is stated in the manual for each engine.
  • The VR signal is sent to the igniter.
    • The signal is converted from a sine to a square wave by the igniter (NE).
    • NE is used to reference the spark timing for the igniter.
    • NE is also sent to the ECU for spark timing reference.
  • The ECU begins sending the IGt (Ignition Time) signal to the igniter
    • The igniter uses the FALLING EDGE of this signal to trigger the coil.
    • The igniter STILL CONTROLS DWELL.
    • The style of signal depends on year, make and model.
  • The ECU expects to receive the IGf (Ignition Fired) signal from the igniter.
    • If the ECU does not receive this signal it will assume locked timing and issue a CEL.
    • The style of signal depends on year, make and model.
    • This is the critical signal that blocks most ignition coil swaps.
    • The igniter can disable this signal to signify ignition issues like a bad coil.
  • The ECU receives the signal
    • Once the signal is received within a certain time, the ECU will assume all is good.
    • The engine will run with no trouble codes as long as the timing is correct.

Spoofing our signal

If you roam around forums long enough, you'll find that many people have figured out a way to spoof this signal. This just involves tying the IGt signal to a diode and transistor. This generates our "spoofed" IGf signal.

While this can and does work, it's not the best option. We are losing a lot of capability, and you will still need some type of module to control the coils.

There is a better way!

Recreating our signal

There are two main ways that our IGf signal is generated:

  1. Use the overvoltage on the primary side of the coil to trigger a multivibrator that creates our signal after IGt.
  2. Use the current through the coil to create a ramped signal during IGt.

Then in the middle of all of this is our checking scheme. Failing coils won't have enough overvoltage or won't flow enough current quick enough. So ideally when our coils are failing we stop sending the IGf signal to tell the ECU to trip a CEL.

We can create our signal using analog "dumb" logic or we can use a microcontroller for "smart" logic. Smart logic will be easier for creating a more universal module that will work with more models and allow for some tweaking.

Other Options

There are some other options if your igniter fails:

  • Spend $300+ on a used module from eBay or a forum member.
  • Spend $500+ on an NOS module if you can find it, or import one.
  • Delete the igniter system with something similar. This is only possible on some systems (22R).
  • Replace the entire ECU with another that does not need IGf.
  • Find an igniter delete module. This is only available for certain models and years.

Creating our new module

Our new module will hopefully maintain original capability and add on some new capabilities as well.

The easiest way to describe creating the module is to divide up each of our signals.

NE Signal

Our NE signal is pretty easy to generate! For my module I am using a MAX9924 following an identical scheme to the Speeduino MAX9926 module.

You can also generate the NE signal using GM HEI modules or other off the shelf modules. There are lots of options for us here!

IGt Signal

Our IGt signal designates when our coil will fire. From most of the information I can find, it DOES NOT control the dwell of the coil. So all we need to do is use the signals falling edge to control the fire point.

I will talk about dwell control later...

IGf Signal

The IGf signal is the critical signal here. We can:

  • Use a multivibrator or microcontroller to give the ECU the duty cycle it wants when the signal FOLLOWS AFTER the IGt signal.
  • Use a shunt resistor to measure the current through the coil then deliver the signal to the ECU. There will be certain scaling needs to get the correct signal it wants. This is when it wants the signal DURING the IGt signal.

Dwell Control

Dwell control is our final piece here. The igniter always appears to control the dwell, so unless we have an external module, we will need to control it.

The simplest way is to depend on an IGBT controller or similar logic to begin charging and holding the current immediately after or a certain amount of time after the last spark. This is going to generate a lot of excess heat even with a current hold feature and will decrease the life on our module and coil.

The smart way is to calculate RPM, guess when our next spark event will be, then begin charging a certain time before we expect our IGt signal. This is the best way since we will hopefully be within a few microseconds of our expected fire point and we can charge accordingly. If we use the coil current as well then we allocate extra time if our coils are taking longer than expected. There's other things we can do here too!

Current Progress

Currently we are on the second version of the module. I will be keeping any older versions on this repo for reference, but do not encourage anyone to try building them until they are completely vetted.

BUILD AT YOUR OWN RISK

V1

V1 went about generating the IGf signal by building the circuit with only analog and passive components. It was simulated in LTSpice to verify ideal behavior before real life testing.

While the circuit does work, it didn't yield the performance I wanted. It's also exclusive to the 53EX igniter module for the 22RTE, so it's not the best to be developing as a universal module.

V2

V2 is instead intended to be changed and modified for as many igniter modules as possible:

  • It uses an ATTINY841 chip to do all of our calculations and logic.
  • It is mostly chosen for ease of use and 5V logic, there are buffers as well for output protection.
  • The IGBT is controlled through a FAN1100 Ignition IGBT controller. This is much easier than a custom control scheme and relieves processing from our MCU.
  • Currently has an analog switch to swap between using NE and the MCU for IGBT control. This is a failsafe but there may be a better way to go about it.
  • Each chunk is made to be modular. If someone needs 3 more outputs then they can multiple the output circuit 3 more times and use a similar MCU.

Overall this is still a work in progress. My ECU and original Igniter are out for repair and testing, so I am unable to verify the new design until I get them back.

Parts

52
QtyValueFootprintReferences
7390Resistor_SMD:R_0603_1608MetricR7, R14, R15, R16, R17, R18, R19
41N4007Diode_SMD:D_SMFD1, D2, D3, D5
2100Resistor_SMD:R_0603_1608MetricR9, R10
210kResistor_SMD:R_0603_1608MetricR2, R8
210kResistor_SMD:R_0805_2012MetricR12, R13
210nFCapacitor_SMD:C_0805_2012MetricC8, C10
210pFCapacitor_SMD:C_0805_2012MetricC11, C12
233uFCapacitor_Tantalum_SMD:CP_EIA-7343-30_AVX-NC1, C2
2LEDLED_SMD:LED_0805_2012MetricD7, D8
10.47uFCapacitor_SMD:C_0805_2012MetricC9
1100kResistor_SMD:R_0603_1608MetricR5
1100nFCapacitor_SMD:C_0805_2012MetricC3
110RResistor_SMD:R_0805_2012MetricR4
112v 1WDiode_SMD:D_SMFD6
11kResistor_SMD:R_0603_1608MetricR1
11nCapacitor_SMD:C_0805_2012MetricC7
11nFCapacitor_SMD:C_0805_2012MetricC4
120mOhmResistor_SMD:R_1206_3216MetricR3
1220Resistor_SMD:R_0603_1608MetricR6
1220nFCapacitor_SMD:C_0805_2012MetricC5
122nFCapacitor_SMD:C_0805_2012MetricC6
122v 1WDiode_SMD:D_SMFD4
132.768MHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY1
14.7kResistor_SMD:R_0805_2012MetricR11
174LVC3G17Package_SO:VSSOP-8_2.4x2.1mm_P0.5mmU3
1ADG419BRPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU4
1ATtiny841-MPackage_DFN_QFN:QFN-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU6
1COILConnector_Wire:SolderWire-1sqmm_1x02_P5.4mm_D1.4mm_OD2.7mmJ3
1DISTConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1ECUConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1FAN1100Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1HOUSINGMountingHole:MountingHole_3.2mm_M3_PadH1
1ISL9V3040D3ST-F085CPackage_TO_SOT_SMD:TO-252-2Q2
1MAX9924UAUB+TPackage_SO:MSOP-10_3x3mm_P0.5mmU2
1MC78L05_SOT89Package_TO_SOT_SMD:SOT-89-3U1
1PROGConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5

More from jephilp/22RE_Igniter

1
  • 2 layers31.2 × 35.8 mmIgniter, the printed circuit board in 3D

    Igniter

    jephilp/22RE_Igniter

    Drop-in replacement for 22RE igniter modules.

    45 parts1GPL-3.0

Similar boards

  • 4 layers80.6 × 93.7 mmHw v1, the printed circuit board in 3D

    Hw v1

    Churrosoft/uEFI-v6.x

    Speeduino compatible board, x4 ignition channels, x4 injection channels, 2&4 wire IAC

    183 parts2
  • 2 layers65 × 56 mmToy Ikea MicrowaveController, the printed circuit board in 3D

    Toy Ikea MicrowaveController

    SkullKill/Toy-Ikea-MicrowaveController-PCB

    PCB for Microwave Controller for Ikea Kitchen DUKTIG

    73 parts1GPL-3.0
  • 2 layers27.9 × 15.2 mmTinyBoard84100, the printed circuit board in 3D

    TinyBoard84100

    HrnekBezucha/TinyBoard84100

    Tiny ATtiny841 board in KiCAD

    13 partsMIT
  • 4 layers106.1 × 132 mmSTM, the printed circuit board in 3D

    STM

    annegautham/STM

    Repo for STM prototype personal project

    128 partsMIT
  • 4 layers88.9 × 97 mmVideo thingy, the printed circuit board in 3D

    Video thingy

    C0DE-Z/LOUD

    A open source Analog video Destructor and Dirty mixer

    56 parts
  • 2 layers245.2 × 100 mmV5 main, the printed circuit board in 3D

    V5 main

    zynthian/zynthian-hw

    Zynthian hardware stuff: PCBs, schemes, parts specifications, pin assignment, ...

    160 parts156
  • 4 layers44 × 64 mmJTAGProgrammer, the printed circuit board in 3D

    JTAGProgrammer

    anthony-bernaert/ftdi-jtag-programmer

    FTDI-based JTAG Programmer Circuit for FPGAs

    122 parts77CERN-OHL-P-2.0

Questions

How big is the Igniter PCB?

It measures 56.6 × 22.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Igniter use?

52 parts, built around the ATTINY841-MU, 74LVC3G17DP, ISL9V3040D3ST-F085C and MAX9924UAUB+T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Igniter KiCad files?

From the jephilp/22RE_Igniter repository on GitHub, at the commit this page was made from: the board is KiCAD Files/V2/Igniter.kicad_pcb and its schematic KiCAD Files/V1_Archive/Igniter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Igniter design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).