

Igniter
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
5ATTINY841-MU
QFN-20-EP(4x4)-40℃~+85℃ 1.7V~5.5V 10bit 12 16MHz 512Byte 512Byte 8 Bit 8KB AVR Built-in FLASH QFN-20-EP(4x4) Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)74LVC3G17DP
TSSOP-8-40℃~+125℃ 1 1.65V~5.5V 3 3.6ns@3.3V,50pF 32mA 32mA 4uA 74LVC Schmitt trigger Unidirectional TSSOP-8 Buffers, Drivers, Receivers, Transceivers ROHSNexperiaBuffers, Drivers, Receivers, TransceiversISL9V3040D3ST-F085C
DPAK(TO-252)1.3V@1mA 1.65V@6A,4V 150W 17nC@12V 21A 4.8us 400V 700ns DPAK(TO-252) IGBT Transistors / Modules ROHSonsemiIGBT Transistors / ModulesMAX9924UAUB+T
MSOP-10-40℃~+125℃ 1 2.6mA 4.5V~5.5V Angle-to-digital converter Programmable gain、Low noise front-end MSOP-10 ADCs/DACs - Special Purpose ROHSMaxim Integrated (Analog Devices)Interface - SpecializedADG419BR
SOIC8LC2MOS Precision Single SPDT Analog SwitchesAnalog DevicesUncategorised
README
README.mdIgniter 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:
graph LR
A[ECU] -- IGf --> B[Igniter Module]
B -- IGt --> A
B -- NE --> A
B --> C((Ignition Coil))
C --> D{Engine}
D -- VR Signals --> BKnow 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:
- Use the overvoltage on the primary side of the coil to trigger a multivibrator that creates our signal after IGt.
- 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| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 390 | Resistor_SMD:R_0603_1608Metric | R7, R14, R15, R16, R17, R18, R19 |
| 4 | 1N4007 | Diode_SMD:D_SMF | D1, D2, D3, D5 |
| 2 | 100 | Resistor_SMD:R_0603_1608Metric | R9, R10 |
| 2 | 10k | Resistor_SMD:R_0603_1608Metric | R2, R8 |
| 2 | 10k | Resistor_SMD:R_0805_2012Metric | R12, R13 |
| 2 | 10nF | Capacitor_SMD:C_0805_2012Metric | C8, C10 |
| 2 | 10pF | Capacitor_SMD:C_0805_2012Metric | C11, C12 |
| 2 | 33uF | Capacitor_Tantalum_SMD:CP_EIA-7343-30_AVX-N | C1, C2 |
| 2 | LED | LED_SMD:LED_0805_2012Metric | D7, D8 |
| 1 | 0.47uF | Capacitor_SMD:C_0805_2012Metric | C9 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric | R5 |
| 1 | 100nF | Capacitor_SMD:C_0805_2012Metric | C3 |
| 1 | 10R | Resistor_SMD:R_0805_2012Metric | R4 |
| 1 | 12v 1W | Diode_SMD:D_SMF | D6 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 1n | Capacitor_SMD:C_0805_2012Metric | C7 |
| 1 | 1nF | Capacitor_SMD:C_0805_2012Metric | C4 |
| 1 | 20mOhm | Resistor_SMD:R_1206_3216Metric | R3 |
| 1 | 220 | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 220nF | Capacitor_SMD:C_0805_2012Metric | C5 |
| 1 | 22nF | Capacitor_SMD:C_0805_2012Metric | C6 |
| 1 | 22v 1W | Diode_SMD:D_SMF | D4 |
| 1 | 32.768MHz | Crystal:Crystal_SMD_3215-2Pin_3.2x1.5mm | Y1 |
| 1 | 4.7k | Resistor_SMD:R_0805_2012Metric | R11 |
| 1 | 74LVC3G17 | Package_SO:VSSOP-8_2.4x2.1mm_P0.5mm | U3 |
| 1 | ADG419BR | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U4 |
| 1 | ATtiny841-M | Package_DFN_QFN:QFN-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm | U6 |
| 1 | COIL | Connector_Wire:SolderWire-1sqmm_1x02_P5.4mm_D1.4mm_OD2.7mm | J3 |
| 1 | DIST | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | ECU | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1 |
| 1 | FAN1100 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U5 |
| 1 | HOUSING | MountingHole:MountingHole_3.2mm_M3_Pad | H1 |
| 1 | ISL9V3040D3ST-F085C | Package_TO_SOT_SMD:TO-252-2 | Q2 |
| 1 | MAX9924UAUB+T | Package_SO:MSOP-10_3x3mm_P0.5mm | U2 |
| 1 | MC78L05_SOT89 | Package_TO_SOT_SMD:SOT-89-3 | U1 |
| 1 | PROG | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J5 |
More from jephilp/22RE_Igniter
1- 2 layers31.2 × 35.8 mm

Similar boards
- 4 layers80.6 × 93.7 mm

Hw v1
Churrosoft/uEFI-v6.x
Speeduino compatible board, x4 ignition channels, x4 injection channels, 2&4 wire IAC
183 parts2 - 2 layers65 × 56 mm

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 mm

- 4 layers106.1 × 132 mm

- 4 layers88.9 × 97 mm

- 2 layers40 × 40 mm

- 2 layers245.2 × 100 mm

V5 main
zynthian/zynthian-hw
Zynthian hardware stuff: PCBs, schemes, parts specifications, pin assignment, ...
160 parts156 - 4 layers44 × 64 mm

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).