Silicon ChipAutomotive Sensor Modifier - December 2016 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Publisher's Letter: Controversial topics should be able to be discussed
  4. Feature: A Look At Nuclear Submarines by Dr David Maddison
  5. Project: Automotive Sensor Modifier by John Clarke
  6. Feature: Keep Track Of Anything With TrackR by Ross Tester
  7. Feature: Altronics: 40 Years And Going Strong by Leo Simpson
  8. Project: Arduino-Based Digital Theremin by Bao Smith
  9. Product Showcase
  10. Serviceman's Log: Two crook MacBook Pro laptops by Dave Thompson
  11. Project: Voltage/Current Reference With Touchscreen, Pt.2 by Nicholas Vinen
  12. Feature: Micromite Plus Advanced Programming, Pt.2 by Geoff Graham
  13. Project: El Cheapo Modules From Asia - Part 2 by Jim Rowe
  14. Subscriptions
  15. Vintage Radio: Grundig’s 1958 Taschen-Transistor-Boy 58 by Ian Batty
  16. PartShop
  17. Market Centre
  18. Advertising Index
  19. Notes & Errata: 50A Battery Charger Controller, Nov 16; WiFi Switch Using A Raspberry Pi, Nov 16; Precision Voltage & Current Reference With Touchscreen Control, Oct 16
  20. Outer Back Cover

This is only a preview of the December 2016 issue of Silicon Chip.

You can view 45 of the 104 pages in the full issue, including the advertisments.

For full access, purchase the issue for $10.00 or subscribe for access to the latest issues.

Items relevant to "Automotive Sensor Modifier":
  • Automotive Sensor Modifier PCB [05111161] (AUD $10.00)
  • PIC16F88-E/P programmed for the Automotive Sensor Modifier [0511116A.HEX] (Programmed Microcontroller, AUD $15.00)
  • Firmware (ASM and HEX) files for the Automotive Sensor Modifier [0511116A.HEX] (Software, Free)
  • Automotive Sensor Modifier PCB pattern (PDF download) [05111161] (Free)
Items relevant to "Arduino-Based Digital Theremin":
  • Firmware (.ino and .c) files for Giving the Ultrasonic Theremin a Volume Control (Software, Free)
  • Firmware (INO and C) files for the Arduino Theremin (Software, Free)
Articles in this series:
  • Arduino-Based Digital Theremin (December 2016)
  • Arduino-Based Digital Theremin (December 2016)
  • Giving the Ultrasonic Theremin A Volume Control (January 2017)
  • Giving the Ultrasonic Theremin A Volume Control (January 2017)
Items relevant to "Voltage/Current Reference With Touchscreen, Pt.2":
  • Touchscreen Voltage/Current Reference PCB [04110161] (AUD $12.50)
  • PIC32MX170F256B-50I/SP programmed for the Micromite-based Touchscreen Voltage/Current Reference v1.00 [0411016A.HEX] (Programmed Microcontroller, AUD $15.00)
  • Short Form Kit for the Touchscreen Voltage/Current Reference (Component, AUD $120.00)
  • Translucent Blue UB1 Lid for the Precision Voltage & Current Reference with Touchscreen Control (PCB, AUD $10.00)
  • Firmware (HEX) file and BASIC source code for the Micromite-based Touchscreen Voltage/Current Reference v1.00 [0411016A.HEX] (Software, Free)
  • Touchscreen Voltage/Current Reference PCB pattern (PDF download) [04110161] (Free)
Articles in this series:
  • Voltage/Current Reference With Touchscreen, Pt.1 (October 2016)
  • Voltage/Current Reference With Touchscreen, Pt.1 (October 2016)
  • Voltage/Current Reference With Touchscreen, Pt.2 (December 2016)
  • Voltage/Current Reference With Touchscreen, Pt.2 (December 2016)
Articles in this series:
  • Micromite Plus Advanced Programming (November 2016)
  • Micromite Plus Advanced Programming (November 2016)
  • Micromite Plus Advanced Programming, Pt.2 (December 2016)
  • Micromite Plus Advanced Programming, Pt.2 (December 2016)
Articles in this series:
  • El Cheapo Modules From Asia - Part 1 (October 2016)
  • El Cheapo Modules From Asia - Part 1 (October 2016)
  • El Cheapo Modules From Asia - Part 2 (December 2016)
  • El Cheapo Modules From Asia - Part 2 (December 2016)
  • El Cheapo Modules From Asia - Part 3 (January 2017)
  • El Cheapo Modules From Asia - Part 3 (January 2017)
  • El Cheapo Modules from Asia - Part 4 (February 2017)
  • El Cheapo Modules from Asia - Part 4 (February 2017)
  • El Cheapo Modules, Part 5: LCD module with I²C (March 2017)
  • El Cheapo Modules, Part 5: LCD module with I²C (March 2017)
  • El Cheapo Modules, Part 6: Direct Digital Synthesiser (April 2017)
  • El Cheapo Modules, Part 6: Direct Digital Synthesiser (April 2017)
  • El Cheapo Modules, Part 7: LED Matrix displays (June 2017)
  • El Cheapo Modules, Part 7: LED Matrix displays (June 2017)
  • El Cheapo Modules: Li-ion & LiPo Chargers (August 2017)
  • El Cheapo Modules: Li-ion & LiPo Chargers (August 2017)
  • El Cheapo modules Part 9: AD9850 DDS module (September 2017)
  • El Cheapo modules Part 9: AD9850 DDS module (September 2017)
  • El Cheapo Modules Part 10: GPS receivers (October 2017)
  • El Cheapo Modules Part 10: GPS receivers (October 2017)
  • El Cheapo Modules 11: Pressure/Temperature Sensors (December 2017)
  • El Cheapo Modules 11: Pressure/Temperature Sensors (December 2017)
  • El Cheapo Modules 12: 2.4GHz Wireless Data Modules (January 2018)
  • El Cheapo Modules 12: 2.4GHz Wireless Data Modules (January 2018)
  • El Cheapo Modules 13: sensing motion and moisture (February 2018)
  • El Cheapo Modules 13: sensing motion and moisture (February 2018)
  • El Cheapo Modules 14: Logarithmic RF Detector (March 2018)
  • El Cheapo Modules 14: Logarithmic RF Detector (March 2018)
  • El Cheapo Modules 16: 35-4400MHz frequency generator (May 2018)
  • El Cheapo Modules 16: 35-4400MHz frequency generator (May 2018)
  • El Cheapo Modules 17: 4GHz digital attenuator (June 2018)
  • El Cheapo Modules 17: 4GHz digital attenuator (June 2018)
  • El Cheapo: 500MHz frequency counter and preamp (July 2018)
  • El Cheapo: 500MHz frequency counter and preamp (July 2018)
  • El Cheapo modules Part 19 – Arduino NFC Shield (September 2018)
  • El Cheapo modules Part 19 – Arduino NFC Shield (September 2018)
  • El cheapo modules, part 20: two tiny compass modules (November 2018)
  • El cheapo modules, part 20: two tiny compass modules (November 2018)
  • El cheapo modules, part 21: stamp-sized audio player (December 2018)
  • El cheapo modules, part 21: stamp-sized audio player (December 2018)
  • El Cheapo Modules 22: Stepper Motor Drivers (February 2019)
  • El Cheapo Modules 22: Stepper Motor Drivers (February 2019)
  • El Cheapo Modules 23: Galvanic Skin Response (March 2019)
  • El Cheapo Modules 23: Galvanic Skin Response (March 2019)
  • El Cheapo Modules: Class D amplifier modules (May 2019)
  • El Cheapo Modules: Class D amplifier modules (May 2019)
  • El Cheapo Modules: Long Range (LoRa) Transceivers (June 2019)
  • El Cheapo Modules: Long Range (LoRa) Transceivers (June 2019)
  • El Cheapo Modules: AD584 Precision Voltage References (July 2019)
  • El Cheapo Modules: AD584 Precision Voltage References (July 2019)
  • Three I-O Expanders to give you more control! (November 2019)
  • Three I-O Expanders to give you more control! (November 2019)
  • El Cheapo modules: “Intelligent” 8x8 RGB LED Matrix (January 2020)
  • El Cheapo modules: “Intelligent” 8x8 RGB LED Matrix (January 2020)
  • El Cheapo modules: 8-channel USB Logic Analyser (February 2020)
  • El Cheapo modules: 8-channel USB Logic Analyser (February 2020)
  • New w-i-d-e-b-a-n-d RTL-SDR modules (May 2020)
  • New w-i-d-e-b-a-n-d RTL-SDR modules (May 2020)
  • New w-i-d-e-b-a-n-d RTL-SDR modules, Part 2 (June 2020)
  • New w-i-d-e-b-a-n-d RTL-SDR modules, Part 2 (June 2020)
  • El Cheapo Modules: Mini Digital Volt/Amp Panel Meters (December 2020)
  • El Cheapo Modules: Mini Digital Volt/Amp Panel Meters (December 2020)
  • El Cheapo Modules: Mini Digital AC Panel Meters (January 2021)
  • El Cheapo Modules: Mini Digital AC Panel Meters (January 2021)
  • El Cheapo Modules: LCR-T4 Digital Multi-Tester (February 2021)
  • El Cheapo Modules: LCR-T4 Digital Multi-Tester (February 2021)
  • El Cheapo Modules: USB-PD chargers (July 2021)
  • El Cheapo Modules: USB-PD chargers (July 2021)
  • El Cheapo Modules: USB-PD Triggers (August 2021)
  • El Cheapo Modules: USB-PD Triggers (August 2021)
  • El Cheapo Modules: 3.8GHz Digital Attenuator (October 2021)
  • El Cheapo Modules: 3.8GHz Digital Attenuator (October 2021)
  • El Cheapo Modules: 6GHz Digital Attenuator (November 2021)
  • El Cheapo Modules: 6GHz Digital Attenuator (November 2021)
  • El Cheapo Modules: 35MHz-4.4GHz Signal Generator (December 2021)
  • El Cheapo Modules: 35MHz-4.4GHz Signal Generator (December 2021)
  • El Cheapo Modules: LTDZ Spectrum Analyser (January 2022)
  • El Cheapo Modules: LTDZ Spectrum Analyser (January 2022)
  • Low-noise HF-UHF Amplifiers (February 2022)
  • Low-noise HF-UHF Amplifiers (February 2022)
  • A Gesture Recognition Module (March 2022)
  • A Gesture Recognition Module (March 2022)
  • Air Quality Sensors (May 2022)
  • Air Quality Sensors (May 2022)
  • MOS Air Quality Sensors (June 2022)
  • MOS Air Quality Sensors (June 2022)
  • PAS CO2 Air Quality Sensor (July 2022)
  • PAS CO2 Air Quality Sensor (July 2022)
  • Particulate Matter (PM) Sensors (November 2022)
  • Particulate Matter (PM) Sensors (November 2022)
  • Heart Rate Sensor Module (February 2023)
  • Heart Rate Sensor Module (February 2023)
  • UVM-30A UV Light Sensor (May 2023)
  • UVM-30A UV Light Sensor (May 2023)
  • VL6180X Rangefinding Module (July 2023)
  • VL6180X Rangefinding Module (July 2023)
  • pH Meter Module (September 2023)
  • pH Meter Module (September 2023)
  • 1.3in Monochrome OLED Display (October 2023)
  • 1.3in Monochrome OLED Display (October 2023)
  • 16-bit precision 4-input ADC (November 2023)
  • 16-bit precision 4-input ADC (November 2023)
  • 1-24V USB Power Supply (October 2024)
  • 1-24V USB Power Supply (October 2024)
  • 14-segment, 4-digit LED Display Modules (November 2024)
  • 0.91-inch OLED Screen (November 2024)
  • 0.91-inch OLED Screen (November 2024)
  • 14-segment, 4-digit LED Display Modules (November 2024)
  • The Quason VL6180X laser rangefinder module (January 2025)
  • TCS230 Colour Sensor (January 2025)
  • The Quason VL6180X laser rangefinder module (January 2025)
  • TCS230 Colour Sensor (January 2025)
  • Using Electronic Modules: 1-24V Adjustable USB Power Supply (February 2025)
  • Using Electronic Modules: 1-24V Adjustable USB Power Supply (February 2025)

Purchase a printed copy of this issue for $10.00.

Trick your car’s ECU with this . . . By John Clarke Automotive Sensor Modifier With this Automotive Sensor Modifier you can change the signal response of many of the sensors to improve your car’s driveability, throttle response, handling and so on. It allows you to modify and program the response of any voltage sensor in your car, without prejudicing reliability or affecting the ECU in any way. M ODERN CARS have lots of sensors to closely monitor the engine and other systems and they provide information to the ECU (Engine Control Unit) which controls the fuel injectors and ignition timing, based on this information. Some of the sensor outputs you can modify include the air flow meter, oxygen sensor, accelerometers (or G force sensors) used in stability control and traction control, and the throttle position sensor (TPS). For cars with an electronic (drive-by-wire) throttle rather than a throttle cable, modification of the TPS signal can literally transform the way the car drives. For example, you can alter the TPS signal so that there is less pedal travel required to provide more throttle. This will make the car feel as though it has more power. And you can use this Modifier to restore correct air/fuel 24  Silicon Chip ratios after engine modifications, for preventing turbo boost cuts or to alter other sensor signals for improved driveability. The Automotive Sensor Modifier is especially useful for adjusting a sensor output after engine modifications. The Modifier is then used to dial out the change in a sensor output due to the modification, to enable the engine to run correctly. In particular, various engine modifications or add-ons can cause a sensor output to go beyond the range normally expected by the ECU. This could cause it to issue an engine fault code that may result in the engine being set to run in limphome mode. That means the engine and automatic transmission (if fitted) will be severely constrained until the fault code is cleared. The Automotive Sensor Modifier takes a voltage signal and it can be pro- grammed to produce a similar voltage at the output but which is shifted up or down in voltage level or changed in some other way. The programming is done using four pushbuttons in conjunction with a small LCD panel. Once the programming is done, the Modifier will do its job and the car will drive as you want it to. In a little more detail, the input voltage from the sensor is divided into 256 different levels called load sites. Each load site can be independently programmed to alter the output by a set amount. The overall programming of all load sites is called a map. So as the sensor output changes in value, the output voltage from the Automotive Sensor Modifier will produce a modified voltage that follows the map. Mapping is only one-dimensional, altering the output voltage according to a single input. This does have siliconchip.com.au limitations compared to having two inputs, where for example, mapping can be for voltage from a sensor against engine RPM. But a single dimension interceptor is effective in many cases when altering the response from a sensor such as an engine MAP (Manifold Absolute Pressure) or MAF (Mass Air Flow) sensor. This Automotive Sensor Modifier is the third in a series of our popular voltage modifiers. The original Digital Fuel Adjuster (DFA) was featured in a 2004 SILICON CHIP publication titled “Performance Electronics for Cars”. The second modifier was the Voltage Interceptor for Cars (described in SILICON CHIP, December 2009 and January 2010) which had a world-wide following by vehicle owners. Specifically, the Voltage Interceptor for Cars has been successfully used to modify the MAF sensor output of the 3-litre Nissan Direct Injection diesel engine. When these engines have modifications and operate under certain driving situations, the MAF will produce out-of-range values. In response to these out-of-range values, the ECU sets the engine to run in limp-home mode. The Voltage Interceptor tricks the ECU into avoiding this. However, all good things must come to an end (or be superseded) and since the kit for the Voltage Interceptor has now been discontinued, it was time for a new approach. This completely new Automotive Sensor Modifier is much simpler to build and does not require Features & Specifications • • • • • • • • • • • Voltage input range: 0-5V Voltage output range: 0-5V Output adjustment: ±127 steps Output adjustment range: ±0.53V to ±5V (see Table 2) Adjustment resolution: 4.17mV to 39mV (see Table 2) Input adjustment points: 0-255 between the upper and lower input setting Upper input voltage limit: adjustable between 2.5V and 5V Lower input voltage limit: adjustable from 0V to the upper adjustment minus 2V Output adjustment response: typically 10ms to within 10% of the desired value Bypass relay: signal bypassed until the supply voltage rises by 0.5V from when power is first applied or the supply voltage exceeds 13.5V. Also switched by pressing the View/Run switch. Power Supply: 10-15V, 100mA a separate hand controller. In addition, we have reduced the chip count to just two (compared to eight in the superseded design). And all controls and the LCD panel are on a single PCB. Setting up is simple and it is also easy to transfer the adjustments of one Automotive Sensor Modifier to a second unit. This is most useful when building a second unit for an identical vehicle. Features An important feature of the Automotive Sensor Modifier is that when the map is set so that it produces no changes to the output, then the output exactly follows the input. That way, when you first connect the Modifier and before it is programmed, it will not affect the running of the vehicle in any way. Any subsequent changes introduced by programming the map values will smoothly alter the output. Programming of the output mapping needs to be done with care and often in conjunction with equipment such as an air/fuel ratio meter to measure the effect of any changes. Adding in wildly varying values could cause error codes issued by the ECU or worse, engine damage. The input to the Automotive Sensor Modifier can range from 0-5V but most sensors do not fully cover this voltage range. For example, a typical sen- The PCB assembly is mounted inside a standard plastic case which can either be installed under the dashboard or in the engine bay. siliconchip.com.au December 2016  25 Parts List 1 double sided, plated through PCB, code 05111161, 122 x 58.5mm 1 plastic case, 130 x 68 x 44mm 1 LCD module (Altronics Z7013, Jaycar QP5512) 4 pushbutton momentary contact switches (S1-S4) (Altronics S1099, Jaycar SP0723) 2 tactile switches (S5,S6) (Altronics S1120, Jaycar SP0602) 1 DPDT 1-5A 12V relay, RLY1 (Jaycar SY-4059, Altronics S4150) 1 18-pin DIL IC socket 1 16-pin DIL IC socket (cut to form a 16-pin SIL socket for the LCD) 1 14-pin DIL IC socket (optional) 1 16-way SIL pin header 2 2-way pin headers, 2.54mm spacing (JP1 & JP2) 2 jumper shunts 1 cable gland for 3-6.5mm diameter cable 2 2-way screw terminal blocks, 5.08mm spacing (CON1,CON2) 4 M3 x 15mm tapped Nylon spacers 9 M3 x 6mm pan head screws 4 M3 x 6mm countersink head screws 2 M3 x 9mm tapped spacers (to mount LCD) 2 M3 Nylon washers (to mount LCD) 1 M3 nut 5 PC stakes (TP1-TP3, TP GND & TP5V) Semiconductors 1 LMC6484AIN quad op amp (IC1) 1 PIC16F88-E/P microcontroller programmed with 0511116A.hex (IC2) 1 LM317T adjustable regulator (REG1) 1 BC337 NPN transistor (Q1) 1 16V 1W zener diode (ZD1) 2 1N0004 diodes (D1,D2) sor output may only vary from 1.96V (minimum) to 4.65V (maximum). With the Modifier, you can set the input voltage range to be between the minimum and maximum sensor values. In doing this, a full 256 input load points are available for mapping. The LCD shows both the current input load site number and the adjustment value that’s set in the map. If there’s no change, then the adjustment value for that load site is shown as 0. Changes to increase the output voltage are positive and changes to decrease the output voltage are negative. Changes are made using the Up and Down switches, in one of two modes: (1) either in the Run mode (while the engine is running) as each load site is accessed in real time; or (2) in the View mode where the load sites are accessed using the Left and Right switches. 26  Silicon Chip Capacitors 5 100µF 16V electrolytic 3 10µF 16V electrolytic 4 100nF 63V MKT 2 10nF 63V MKT 1 1nF 63V MKT Resistors (0.25W, 1%) 2 100kΩ 2% 10-pin SIL 5-resistor arrays (4610X-102-104LF) (RA1,RA2) 1 20kΩ 1 300Ω 1 10kΩ 1 150Ω 5 1kΩ 1 120Ω 1 390Ω 1W 1 10Ω R1 – see Table 2 Trimpots 2 10kΩ multi-turn top-adjust trimpots (VR5,VR6) 2 1kΩ multi-turn top-adjust trimpots (VR2,VR3) 2 100Ω multi-turn top-adjust trimpots (VR1,VR4) Where to buy parts The PCB and programmed microcontroller for this design are available from the SILICON CHIP Online Shop: www. siliconchip.com.au Circuit description Fig.1 shows the circuit details. The two ICs used in the Automotive Sensor Modifier are a PIC16F88 microcontroller (IC2) and a quad op amp (IC1). The microcontroller monitors the sensor voltage and then produces a modified output according to the programmed map, in conjunction with quad op amp IC1. IC2 also monitors the switches and drives the LCD panel. The sensor voltage is applied to the INPUT terminal of CON1 and then either directly through the normally closed relay contacts of RLY1a and RLY1b (when the relay is off) or in modified form via op amps IC1d-IC1a when the relay is switched on by the microcontroller. The relay is included so that when the Automotive Sensor Modifier is first powered up (and when it’s off), the input signal is bypassed around the Modifier circuit to the output. This is done so that the engine ECU will initially be directly connected to the sensor so as not to issue a fault code. This bypass mode allows the Modifier circuitry to start up and then produce the required output voltage. IC2 monitors the battery voltage using a resistive divider at its AN4 input, pin 3. When power is first applied, it measures the voltage and stores the value. IC2 then continues to measure the voltage and when the supply reaches 0.5V above the stored value, the relay is switched on by IC2’s RA6 output via transistor Q1 (the relay will also be switched on if the battery is above 13.5V). When the relay is on, the sensor signal is fed to op amp IC1d via an RC low pass filter comprising a 100kΩ resistor and 1nF capacitor. IC1d is configured as a unity gain buffer and its output is fed to the AN1 input (pin 18) of IC2 via a 1kΩ resistor. IC2 converts the voltage to an 8-bit digital value and each digital value becomes a separate load site ranging from 0-255. Each site can then be mapped for an altered output. Note that there is also a jumper (JP1) that connects trimpot VR5 to provide a voltage which can be used instead of that from the sensor. This is used when setting up and testing the Automotive Sensor Modifier. The voltage at the AN1 input is fed to IC2’s internal ADC (analog-to-digital converter) and it has two references, REF+ and REF-, which are adjustable using trimpots VR2 and VR3. There are limits in setting these two reference voltages. REF- can be set from 0V to 2V below REF+ while REF+ can be set between 2.5V and 5V. So for a sensor that has a 1.96V minimum and 4.65V maximum, REF- is set for 1.96V and REF+ set to 4.65V (these are within the voltage limit restrictions). The next part of the circuit involving IC1c, IC1b and IC1a looks (and is) quite complicated but we can simplify it in siliconchip.com.au siliconchip.com.au December 2016  27 K 100 µF 16V V+ 10 µF 1 0 0 µF 1 0 0 µF 4 TP3 TP2 3 1 2 18 11 IC1d 10kΩ 1kΩ 13 12 14 4 AN4 REF– A A ZD1 K K D1, D2 Vss 5 RB1 RB2 RB3 RB7 RB4 RB5 RB6 RA7 RA0 7 8 9 13 10 11 12 16 17 Vdd 15 RA6 6 PWM 14 1kΩ VR1 100Ω 1kΩ OFFSET IC2 PIC16F88 -E PIC16F88E/P REF+ MCLR AN1 1kΩ +5V AUTOMOTIVE SENSOR MODIFIER A D1 1N4004 20kΩ VR3 1kΩ MIN VR2 1kΩ +5V 1nF (* RA1,2) 100kΩ MAX VR5 10kΩ RLY1a 100kΩ JP2 E IC1c LOCK 1 00 nF 9 10 B 8 (* RA1,1) C Q1 R1 (* RA2,2) 100kΩ (* RA1,5) 100kΩ S1 LEFT 1 0 0nF 1 0 0kΩ IC1: LMC6 4 8 4 AIN (* RA1,3) (* RA1,4) 100kΩ S3 DOWN 5 6 1 0 0nF S5 VIEW /RUN IC1b (* RA2,1) 100kΩ 10nF 7 S6 ZD1 16V 1W 10Ω 100 µF 16V S4 1 VR4 1 00 Ω 1 00 nF 7 15 IN LM317T A K 300Ω IN 10 µF ADJ OUT Q1 BC337 RLY1 TP5V V+ 10 µF 120Ω +5V OUT VR6 10kΩ 390Ω 1W E C LCD CONTRAST B RLY1b REG1 LM317T OUT ADJ 16 5V ADJUST 5 KBL CONTRAST 3 1kΩ * RA1 & RA2 ARE EACH 5x100kΩ ARRAYS A K S2 RIGHT 8 TP1 D2 1N4004 ABL +5V 150Ω GND R/W 16 x 2 LCD MODULE Vdd 2 10nF 14 13 12 11 10 9 UP 1 (* RA2,4) (* RA2,5) D7 D6 D5 D4 D3 D2 D1 D0 EN RS RESET 6 4 100kΩ (* RA2,3) IC1a 1 0 0kΩ 1 0 0kΩ 2 3 V+ (CON 1 b) OUTPUT Fig.1: the Automotive Sensor Modifier is based on PIC16F88-E/P microcontroller IC2 which has the ability to adjust a sensor’s output at 256 points. The signal from the sensor is fed in via relay RLY1a, buffered by IC1d and fed to IC2’s AN1 (pin 18) input. IC2 then produces a PWM signal at pin 6 which is then filtered and fed to IC1b to produce the programmed offset voltage. This is then fed to pin 2 of IC1a and then to the output terminal via relay RLY1b. 20 1 6 SC  CON2 0V +12V POWER INPUT JP1 TEST TP GND 100 µF (CON 1 a) INPUT 1 Max Min RA2 : 5 x 100kΩ NC JP1 4004 ZD1 NO 16V OUT IN NO 150Ω TEST RA1: 5 x 100kΩ 100nF D2 1nF 100nF + 2 x100 µF C S3 DOWN NC RLY1 IC1 LMC6484 4004 R1 1kΩ RIGHT 1kΩ S4 S1 100Ω VR4 C +12V REG1 LM317T 10Ω Q1 390Ω 1W 0V D1 BC337 1 LEFT TP5V 100nF 300Ω 10kΩ VR6 S2 UP VR3 VR2 1kΩ 1kΩ 1kΩ 1kΩ S6 VIEW /RUN 100Ω VR1 OFFSET CONTRAST 20kΩ 3 x 10 µF PIC16F88 10nF 1 16 15 S5 14 TP2 120Ω IC2 LCD MODULE ABOVE MAIN PCB, SUPPORTED ON SPACERS 10nF RESET TP3 100 µF 10kΩ CON2 + LOCK 1kΩ + JP2 2 x 100 µF 100nF + C 2016 05111161 Rev.B Automotive Voltage Interceptor TP1 CON1 TP GND VR5 10kΩ + Fig.2: follow this parts layout diagram and the photo to build the PCB. The LCD module plugs into a 16-way pin header and is supported on two spacers. Make sure that all polarised parts are correctly orientated. the following manner. Ignore IC1c and IC1b for the moment. Now the buffered output of IC1d is fed to an attenuator consisting of two series 100kΩ resistors and a shunt 100kΩ resistor. This attenuates the signal to one third the original level. The attenuated signal is then fed to op amp IC1a which has a gain of 3, to make up for the loss in the attenuator. So why go to the bother of attenuating and then amplifying the signal to bring it back to the original amplitude? The signal needs to be attenuated so it can be level-shifted by op amp IC1b, in response to a filtered PWM signal from pin 6 of microcontroller IC2. Without the attenuation, the level shifted signal from IC1b would overload IC1a. Finally, IC1c is included to provide offset correction for the inevitable shifts caused by the signal manipulation. The amount of level shifting performed by IC1b (as varied by the PWM signal) is set by the value of resistor R1 which effectively forms a divider with the 100kΩ PWM filter resistor. When R1 is 100kΩ, the output can be shifted by up to 5V in either direction. This means that a 0V signal can be shifted up to +5V while a 5V level could be shifted down to 0V. There are some restrictions though. IC1a’s output can only range from between 0V and 5V. So you won’t be able to shift a 4V output to beyond 5V. Smaller ranges of adjustment are available by using lower R1 values and this also provides finer adjustment resolution. Table 2 shows the details. Note that the red numbering used for the 100kΩ resistors around the op amps indicates two precision 5-resistor arrays. So, for example, the 100kΩ resistor between pins 8 & 6 of IC1 is RA2,2 (red), meaning that it is the second 100kΩ resistor in the second resistor array, RA2. age. REG1 has resistors connected to its OUT and ADJ (adjust) terminals so that the output can be adjusted to an accurate 5V using trimpot VR4. The LCD module is driven by IC2 via its RA0, RA7 and RB4-RB7 outputs. These outputs go to data inputs DB4-DB7 of the LCD module and to its enable (EN) and register select (RS) inputs. Pushbutton switches are connected to IC2’s RB5, RB6 & RB7 outputs. The RB2 & RB3 inputs are normally pulled high (to 5V) via internal pull-ups and if any switch is closed, then one of the RB2 or RB3 inputs will be pulled low via the closed switch contact. IC2 then checks to see which switch is closed. It does this by taking RB5, RB6 and RB7 low one at a time. The closed switch will show a low on either RB2 or RB3 when one of the RB5, RB6 and RB7 outputs is low. For example, when S1 is closed, the RB2 input will be low when RB5 is low. Power supply An LM317T adjustable 3-terminal regulator, REG1, provides power for the LCD module, IC1 and IC2 and forreferences REF+ and REF-. A 10Ω resistor and zener diode ZD1 protect the regulator’s input from excessive volt- Building it Building the unit is straightforward Table 1: Resistor Colour Codes o No. Value 4-Band Code (1%) 5-Band Code (1%) o o o o o o o o   1   1   5   1   1   1   1   1 20kΩ 10kΩ 1kΩ 390Ω 300Ω 150Ω 120Ω 10Ω red black orange brown brown black orange brown brown black red brown orange white brown brown orange black brown brown brown green brown brown brown red brown brown brown black black brown red black black red brown brown black black red brown brown black black brown brown orange white black black brown orange black black black brown brown green black black brown brown red black black brown brown black black gold brown 28  Silicon Chip siliconchip.com.au their respective holes. The two outer leads will need to be bent down about 7mm from the regulator’s body, while the centre lead is bent down some 5mm from the body. Having bent the leads, drop REG1 into place and secure its metal tab to the PCB using an M3 x 6mm screw and M3 nut before soldering its leads. Note: the mounting screw can later be removed if it fouls the cable gland used to pass the external wiring connections when the PCB is later mounted in the case. Trimpots & LCD header since all parts, including the LCD, are mounted on a PCB coded 05111161 (122 x 58.5mm). The assembly is housed in a plastic utility case (130 x 68 x 44mm) and the switches and LCD are low enough for the lid to be attached without any clearance holes. This means that the case is sufficiently sealed to keep dust and debris away from the PCB. It also means that any adjustments to the circuit must be done with the lid off but that’s no great hardship since the adjustments are basically “set and forget”. Fig.2 shows the parts layout on the PCB. Begin the assembly by installing the resistors. Table 1 shows the resistor colour codes but a digital multimeter should also be used to check each value before it is soldered into place. Diodes D1 & D2 (1N4004) can go in next, making sure they go in with the correct polarity. That done, install an 18-pin socket for IC2 with its notched end orientated as shown, then install IC1. The latter can either be directly soldered into place or mounted via a 14-pin socket. Leave IC2 out of its socket for the time being; it’s fitted later, after the supply rail has been checked. Next, install 2-way pin headers for JP1 (bottom, right) & JP2 (top, left), then fit PC stakes to the five test points: TP1TP3, TP GND & TP5V. The capacitors can then all go in. Note that the electrolytic types must all be orientated as shown on Fig.2. Transistor Q1 (BC337) is next on the list, followed by regulator REG1. As shown, REG1 is mounted flat against the PCB with its leads bent down through 90° so that they go through siliconchip.com.au Now for multi-turn trimpots VR1VR6. VR1 & VR4 are both 100Ω trimpots and may be marked as 101, while VR2 & VR3 are 1kΩ types and may be marked as 102. Similarly, VR5 & VR6 are 10kΩ types and may be marked as 103. Be careful not to get the trimpots mixed up and be sure to install each one with its adjustment screw orientated as shown. The single-in-line (SIL) 16-way pin header for the LCD module can now be installed on the PCB. Solder the two end pins first, then check that it’s sitting flush against the PCB before soldering the remaining pins. Once it’s in place, mount a 16-way SIL socket on the underside of the LCD module (ie, with its pins soldered to the top of the module). This socket can be made by cutting a 16-pin (DIL16) IC socket in half lengthways and then mounting the two separate 8-pin sockets end-to-end on the LCD module. Screw terminal blocks CON1 & CON2, relay RLY1 and the six switches can now be installed. Note that S1S4 must be orientated as shown, with the flat edge of each switch towards the LCD module. S5 & S6 can be mounted on the PCB with the correct orientation only. Installing IC2 & the LCD Before installing microcontroller IC2 and the LCD module, it’s necessary to accurately set the +5V rail. To do this, first apply power (12V DC) to CON2, then connect a multimeter between TP5V & TP GND and adjust trimpot VR4 for a 5.00V reading. Now switch off and install IC2 in its socket. Make sure that its notched end is orientated as shown in Fig.2. The LCD module can then be installed by plugging it into the 16-way pin header and securing it to two M3 x 9mm tapped Nylon spacers, with a Nylon washer added to the top of each spacer. Begin by securing the two M3 x 9mm spacers to the PCB using M3 x 6mm screws (see Fig.2). Do these screws up firmly, then plug the LCD module into the pin header, slide the two Nylon washers into place (ie, on top of the spacers) and secure the assembly using two more M3 x 6mm machine screws. Fitting it in the case The PCB is mounted inside the case on four M3 x 15mm tapped Nylon spacers. That’s done by first using the PCB to mark out the mounting hole positions in the base, then drilling the holes to 3mm. It’s best to use a 1mm pilot drill to start the holes, to ensure accuracy. The holes can then be enlarged to 3mm and countersunk using an oversize drill. A hole is also required in one end of the case for the cable gland, positioned 12.5mm down from the top edge and centred horizontally. This hole should also be initially drilled to 3mm. It’s then reamed out to around 12mm to accept the cable gland. The PCB assembly can now be secured in position. First, attach the four spacers to the PCB using M3 x 6mm machine screws. The assembly can then be dropped into place and secured using four M3 x 6mm countersink head screws which pass up through the base. Test & adjustment Now for the test and adjustment procedure: Step 1: apply power and check that characters appear on the display. If no characters initially appear, adjust contrast trimpot VR6 until characters do become visible. Step 2: press and hold Reset switch S6 for four seconds until RESET is shown on the LCD. This resets the map, with all the adjustment values cleared to 0. Step 3: install jumper JP1 and connect a multimeter between JP1 and TP GND. Adjust VR5 for a reading of 2.5V. Step 4: connect the DMM between TP1 and TP GND and adjust VR1 so that TP1 is also at 2.5V. Step 5: connect the DMM between JP1 and TP1 and adjust VR1 for a reading that’s as close to 0V as possible, then remove JP1. Note: this adjustment sets the Automotive Sensor Modifier’s output to follow the input. Note also that any voltage applied to December 2016  29 Table 2: Output Adjustment Range vs. Resistor R1 Adjustment Range Adjustment Resolution R1 ±5V 39mV 100kΩ ±4.05V 31.9mV 68kΩ ±3V 23.6mV 43kΩ ±2.48V 19.5mV 33kΩ ±2V 15.7mV 24k ±1.3V 10.2mV 15kΩ ±1V 7.87mV 11kΩ ±0.697V 5.49mV 7.5kΩ ±0.53V 4.17mV 5.6kΩ the input cannot by altered until the relay is switched on. When the unit is installed in a vehicle, the relay switches on when the battery voltage rises after the engine has been started, ie, as the alternator begins charging. However, if you are testing the unit with a fixed 12V supply, this feature may not be convenient. In that case, the relay can be switched on by pressing View/Run switch S5. Using it As stated earlier, the LCD lets you view the input load sites and the corresponding output change values, as set by pushbutton switches S1-S4. On the top line, the LCD shows ADJUST followed the adjustment value and either (∆V) or LOCK. The ∆V stands for “delta voltage” and indicates the voltage change made to the output. The bottom line shows the input load site. The ADJUST value can be any number between -127 and +127 and is 0 when there is no change made to the output compared to the input. As previously stated, the voltage range depends on the value of resistor R1, as shown above in Table 2. This means that R1 also sets the adjustment resolution (or voltage steps). If LOCK is displayed instead of (∆V), it means that lock jumper link JP2 has been installed. This prevents any changes to the adjustment values using the pushbutton switches. If BYPASS is shown instead of ADJUST, it means that the relay is not switched on and so the modified signal is not being fed through to the output. Instead, the input signal is directly connected to the output. As a result, when BYPASS is shown, the ∆V symbol is replaced with 0V to indicate that the output hasn’t been changed by the 30  Silicon Chip programmed adjustment value. The lower line of the display shows LOAD and then a number from 0-255. Following that is either /RUN/ or <VIEW>. The LOAD number shows the current load site which is one of 256 possible sites evenly spaced between the minimum and maximum input voltages. The displayed load site has the corresponding adjustment value shown on the top line. The RUN display shows input load sites in real time as they follow any input voltage variation. You can observe each load site by adjusting trimpot VR5 (if jumper JP1 is fitted). The VIEW display doesn’t show the input load sites as they vary in real time. Instead, the input load site is selected by the Left and Right pushbutton switches (S1 & S4). This allows the entire load site map to be viewed (and altered) by scrolling through each value. The display is switched between the RUN and VIEW modes by pressing the View/Run switch (S5). Up & Down switches The Up and Down switches (S2 & S3) are used to change the adjustment value for each load site. Each single press of an Up or Down switch increases or decreases the value by one step. Holding a switch down results in the value changing by about four steps per second. After five value changes, the values increase or decrease in steps of five. The Left and Right buttons change the load site when in the VIEW mode. As with the Up/Down switches, the step rate increases when a switch is held closed. These switches do not operate in the RUN mode. Pressing and holding the Reset switch (S6) for two seconds immediately clears all load site adjustment values to 0. The display briefly shows RESET on the top line when the reset occurs. Adjustment Before adjusting the unit, you first need to determine the voltage range produced by the sensor whose output you wish to modify. That can be done by connecting a multimeter to the sensor’s output and checking the voltages produced under various driving conditions. This should include a wide range of throttle and engine load conditions. Get someone else to do the driving while you keep a record of the minimum and maximum voltages produced by the sensor. Next, connect a multimeter between TP2 & TP GND and adjust VR2 for a reading equal to the sensor’s maximum recorded voltage. That done, connect the multimeter between TP3 & TP GND and adjust VR3 for a reading equal to the sensor’s minimum voltage. There are a couple of things to watch out for here: (1) TP2 must be set somewhere between 2.5V and 5V; and (2) TP3 must be between 0V and 2V below TP2. This means that TP2 must be set to at least 2.5V, even if the sensor’s maximum output is below this. TP3 then must be set so that it is at least 2V below TP2, even if this is below the sensor’s minimum output. Installation Installing the Automotive Sensor Modifier is relatively straightforward, since there are just four external connections. Two of these are for power (+12V and chassis earth), while the other two “intercept” the sensor’s output. The sensor’s output is connected to the Modifier’s CON1 input, while the output from CON1 is connected to the sensor’s ECU wire. Note that the original sensor-to-ECU connection has to be broken for the Modifier to intercept the signal, ie, the unit is installed in series with this lead. Use automotive connectors for all wiring attachments and be sure to use automotive cable for the leads. The +12V rail for the unit should be derived from the switched side of the ignition and a suitable point can usually be found in the fusebox. The connection to the switched ignition supply should be run to the Automotive Sensor Modifier via a 1A inline fuse. Use a circuit which is switched on by the ignition but does not drop out during cranking. siliconchip.com.au An ELM327 OBD reader paired with an Android smart-phone or tablet can be used to help set up the unit. A WiFi version will be required to pair with an iPhone or iPad. The best location to mount the unit is inside the cabin, so that it remains cool. If you do later install it in the engine bay, be sure to keep it well away from the engine and the exhaust system so that it is not unduly affected by heat. It can be secured in position using suitable brackets. Programming adjustments In order to make real-time adjustments, you first have to ensure that the mode is set to RUN. That’s done by pressing switch S5. It’s also important to remove the jumper shunt at JP1. Note that any adjustments made will not take effect until the relay switches on and the word BYPASS is replaced by ADJUST on the LCD module. Before going further though, a word of warning: using the Automotive Sensor Modifier could result in engine damage if the programming adjustments are not done carefully and methodically. You have been warned. The best way to tune an engine using the unit is to set the car set up on a dynamometer and have a specialised engine tuner make the adjustments. Alternatively, you can make initial adjustments under actual driving conditions, using suitable instruments to monitor the performance. This is best done on a closed road, eg, a racetrack. Be sure to get an assistant to drive the car for you while you make the programming adjustments and monitor the instruments. On no account should you attempt to adjust the unit yourself while driving. An on-board diagnostics (OBDII) reader will enable you to monitor the performance. If you don’t have one, you can purchase an ELM327 OBD reader cheaply on eBay, typically siliconchip.com.au for less than $10 including postage. It plugs directly into your car’s OBD socket (located near the steering column) and pairs with an Android smartphone via Bluetooth (a WiFi version of the ELM327 will be required to pair with an iPhone). By installing a suitable app on the smart-phone (eg, Torque Lite for an Android device – https://play.google. com/store/apps/details?id=org.prowl. torquefree&hl=en), you can monitor various engine sensors and performance parameters, as well as check for (and clear) fault codes. Note that while modern cars use the standard OBDII reader format, some older vehicles may require a specialised reader. Changes are made at the load sites as appropriate using the Up and Down buttons to assign values. Note that the load site values are likely to change while making adjustments. To minimise this, try to maintain constant engine conditions during programming. The unit locks onto the input value selected when an Up or Down button is pressed so that the input load site will not alter during an adjustment, so take care to ensure that you don’t drift too far off the input load site by changing the engine conditions. Releasing the Up or Down button will show the current load site. At this stage, it isn’t necessary to access every input load site to make changes. However, you must keep a record of any sites that are actually assigned a value of 0, since these must be left at 0 when you later interpolate between the adjusted load site values – see below. After mapping has been completed, you may find that you are using only a small range of adjustment values. In that case, try reducing the value of resistor R1. This results in larger adjustment values and increases the adjustment resolution. Of course, any changes to R1 will require a complete remapping of the load sites. After making adjustments, there will inevitably be load sites that were not accessed and changed. This is because there could be up to 256 individual sites that may need adjustment and so only a representative number of sites are usually adjusted. Interpolating the values Switching to the VIEW mode lets you check your mapping. You should have already noted those sites which were mapped at 0. Any outputs that have Running the Torque Lite app on an Android smart-phone paired with an ELM327 lets you monitor a wide range of engine parameters. This screen grab shows just some of the gauges that can be displayed. a number other than 0 are obviously sites that were changed. The job now is to make changes to the unmapped sites that sit between the adjusted sites. This involves interpolating the values so as to smooth out the changes between adjacent adjusted sites. Basically, it’s just a matter of calculating the value of each step. That’s done by dividing the difference between two adjusted sites by the number of unadjusted sites between them plus one. As an example, Tables 3 & 4 show the initial mapped values and the result after manually interpolating the values. In Table 4, load sites 10, 11, 12 & 13 have values of 30, 0, 0 & 12 respectively. The difference between the two adjusted sites is 18 (ie, 30 12) and there are two unadjusted sites between them. In this case, we divide 18 by 3 (ie, 2 + 1) and this gives a step value of 6. As a result, load sites 11 & 12 would be changed to 24 (30 - 6) and 18 (24 6) respectively, as shown in Table 5. Similarly, for load sites 14-17, the output values are interpolated from an 8 at site 14 to a 0 at site 17. Note that site 17 was one that was mapped as a 0 and so this remains at 0. If the result of December 2016  31 Table 3: Mapped & Unmapped Values ∆V 30 0 0 12 8 0 0 0* 0 Load Site 10 11 12 13 14 15 16 17 18 0* = load site mapped at 0; 0 = load site left unmapped Table 3: initial values for load sites 10-18. The load sites with a value of 0 (ie, 11, 12, 15, 16 & 18) were left unmapped, while load site 17 was mapped at 0. Table 4: Values After Interpolation ∆V 30 24 18 12 8 5 2 0 0 Load Site 10 11 12 13 14 15 16 17 18 Interpolated values shown in red – see text Table 4: the load site values after interpolation. The interpolated values are in red. the divsion isn’t a whole number, keep the decimal places and round the result for each load site to the nearest integer. Finally, when mapping has been completed, the Lock jumper link can be installed on JP2 to prevent any further changes. If you are completely satisfied with the mapping, the LCD module can then be removed from the PCB. Modifying sensor outputs As stated, the unit can be used to modify any sensor that has an output ranging from 0-5V. In particular, this includes MAP and MAF sensors but an exception here is the Karman Vortex air flow sensor, as this produces an output frequency rather than a voltage. Typically, you would use the unit to modify a sensor’s output to improve engine response or performance, or simply to prevent engine fault codes occurring. You will need a separate unit for each sensor you wish to modify. Most of the time, an engine runs in what is called “closed loop”. This is where the MAF (or MAP) sensor and the oxygen sensors are monitored so that the correct amount of fuel is delivered to the engine via the injectors. In operation, the oxygen sensor acts as a feedback sensor to let the ECU know whether the engine is running rich or lean. This means that it’s possible to make changes to a sensor’s output but then find that there’s no change in engine response. That’s because the ECU is receiving feedback from the oxygen sensor and adjusts the injector signal accordingly to provide the air/ fuel ratio required. Basically, the ECU has a set of maps for each engine sensor and for the throttle position sensor and the injectors. These are just tables of expected sensor outputs against engine RPM, tem32  Silicon Chip perature, load and mixture. When the engine is running, the ECU compares the sensor maps against the actual sensor values. However, over time, the ECU makes some changes to the map (called trims) that are based on realtime engine running. OK, let’s take a look at some of the changes you can make: (1) Changing The Oxygen Sensor Signal: when an oxygen sensor is work- ing correctly, it will provide the ECU with accurate air/fuel ratios. The ECU then modifies the injector duty cycle to match the oxygen sensor’s signal and the signals from other sensors, to give the desired air/fuel ratio. It’s unlikely that a narrowband oxygen sensor signal can be successfully modified, mainly because the sensor signal appears more like a switch, as it produces a sharp change in voltage between lean and rich air/fuel ratios about stoichiometric. The output of a wideband oxygen sensor is also difficult to modify, because the sensor’s expected output is determined internally by the ECU. Note that a faulty oxygen sensor will be flagged if the injector and MAF (or MAP) sensor maps fail to correlate with the oxygen sensor’s signal. This means that if you make changes to the output that go beyond what is expected by the ECU, then an error code will be issued. This not only applies to the oxygen sensor but to other sensors as well. (2) Changing Air/Fuel Mixtures: as well as operating in closed loop mode, many engines also operate in open loop mode under some conditions, during which the oxygen sensor is not monitored. This usually occurs at or near full throttle when the mixture is made richer to provide extra engine cooling. Adjusting a sensor output, such as from a MAF, will result in mixture changes under such conditions, with corresponding changes to engine performance. You will need to make before and after modification measurements to ensure that the engine will not be running too lean or rich. If the mixture is set too lean, the engine could run too hot and damage the valves and pistons. Conversely, running an engine too rich can foul spark plugs, damage catalytic converters and cause pollution. (3) Reducing Turbo Boost Cuts: another possible use of the unit is to restrict the MAF (or MAP) sensor’s output under high loads to prevent turbo boost cut. You will need a boost gauge to correctly carry out this modification. It’s just a matter of using the unit to alter the MAF’s signal so that the ECU no longer reduces the boost above certain engine loads. By using the boost gauge, the load points where the boost is cut can be determined and the output from the Sensor Modifier reduced to eliminate the boost cut as required. (4) Throttle Position Sensor (TPS): electronic or drive-by-wire throttles (as distinct from cable-operated throttles) can be modified to alter the way a vehicle responds to throttle changes. This can radically change the way the car drives. Using the unit to increase the throttle voltage at low-throttle positions can make the engine appear to have better response, especially from a standing start. Conversely, on more powerful vehicles, reducing the throttle voltage at low-throttle positions can make the vehicle more docile. This could be especially helpful when moving off in slippery conditions, where wheel-spin could otherwise easily occur. (5) Injector Changes: when larger than standard injectors are fitted, the unit can be used to reduce the air flow meter’s output so that the correct the air/ fuel mixture ratios are maintained. Reducing the air flow meter’s output will thus allow the ECU to operate within its normal range of input values, so that it can control the injector duty cycle and maintain correct mixtures. (6) Air flow Meter Changes: installing a larger air flow meter results in lower air flow readings compared to the original unit. The Sensor Modifier can be used to restore the signal to the normal range of values expected by the ECU. Finally, when you have completed mapping, don’t forget to install the SC Lock jumper link at JP2. siliconchip.com.au