NPP retrofit
I have put together a very simple circuit that allows the npp valves to be open and closed (with a wireless switch at this time). I take no responsibility for any results good or bad for anyone who tries this on their own. I'm happy to try and answer questions and help where I can though this solution is intended to be DIY and it does require some computer work as well as some electronics component soldering.
Now to the solution.
The npp valves require a very specific kind of signal to get them to work. Much of this is explained in the incredibly detailed post here https://www.corvetteforum.com/forums...-retrofit.html. I won't attempt to re-explain any of the inner working of the actuators. The circuits that were produced in the original solution were fairly complicated and some had heat issues that my solution hopes to avoid. The central component of my solution is an arduino microcontroller.
I purchased all the components through amazon, but many other (maybe cheaper) options are available.
Here are the necessary parts (note, the links that I have attached show what I purchased, but on most things I purchased more than needed so I included the necessary quantity on each line item):
1. Arduino UNO(a nano will work also, and some creative form factors could be implemented with both a nano and uno. I cheaped out and used a knock off nano) x 1 (
2. 12v voltage regualtor (IC 7812) x 1 (
3. Npn transistor (BC637) x 1 (
4. Various resistors (10k ohm x 2, 1.5k ohm x 1, 1k ohm x 1) (
5. Wireless rf remote control switch (though you could replace this with a wired momentary button if you so desire). x 1 ( )
6. Male/Female single row pin header connectors (this is optional as you can solder the nano directly to your circuit if you choose to do so) (
7. Prototyping perf board (
8. Actuator plugs x 2 (https://www.mouser.com/ProductDetail...FW4V%2Fg%3D%3D) (for these, you'll also need to buy the appropriate pins for these connectors)
9. Solder, wire, etc.
10. Optional (but recommended) Prototyping Breadboard (it'll make your life easier if you mock this and test it on a breadboard first so that you don't waste time and components soldering until you have everything worked out)
11. Some kind of project box to put your circuit board in inside the hatch of the car (depending on the form factor you come up with).
there are 2 parts to this solution, one is laying out the circuit, the second is uploading the following code to your arduino. I won't give you a tutorial on arduino programming and the arduino ide, I will link to a how to that will explain the basics to you https://www.arduino.cc/en/Guide/HomePage.
I'll paste in the code here for the arduino and I'll just say that this is not as complicated as it all looks. Once the ide is installed on your computer and you've done some basic arduino interfacing (uploading code to your arduino, etc) you'll want to upload the following code to your arduino: (note, you'll need to add the pwm library google add library as zip to arduino and add the library from here https://code.google.com/archive/p/ar...rary/downloads)
#include <PWM.h> // pwm-frequency-library
#include <EEPROM.h>
const int _pwmPin = 9; //pin9 on arduino board
const int _buttonPin = 7; // pin7 on board
bool _isRunning = true;
bool ReadValveState()
{
int valveSt = EEPROM.read(0); //read the last valve state from memory
if (valveSt == 1)
{
return true;
}
else
{
return false;
}
}
void DoOpenValves()//sends a pwm signal to valves causing them to open
{
pwmWrite(_pwmPin, 203);
}
void DoCloseValves()//sends a pwm signal to valves causing them to close
{
pwmWrite(_pwmPin, 51);
}
void setup() {
InitTimersSafe();
SetPinFrequencySafe(_pwmPin, 200); //sets the pwm pin frequency to 200 Hz
pinMode(_pwmPin, OUTPUT); // sets the pwm pin as an output pin
pinMode(_buttonPin, INPUT_PULLUP); //sets the input pin for the button
pinMode(LED_BUILTIN, OUTPUT);
if (ReadValveState() == true) //initialize the valves to the last state (if the valves were open when the car was turned off, the valves will be open when the car is turned on, etc
{
DoCloseValves();
}
else
{
DoOpenValves();
}
_isRunning = false;
}
void loop() //the main body of our arduino code, this is run over and over as long as there is power
{
if (_isRunning == false) //this is to prevent repeated button presses
{
if (digitalRead(_buttonPin) == LOW) //check the state of the button if it's pressed
{
_isRunning == true;
if (ReadValveState() == true) //if the valves are closed,
{
EEPROM.write(0, 0); //set the new valve state and open the valves
DoOpenValves();
}
else //the must be opened
{
EEPROM.write(0, 1); //set the new valve state and close the valves
DoCloseValves();
}
FlashBuiltInLED(); // this will give a delay of 1 seconds this helps in debugging to know if your circuit is working when not connected to a valve. If your button is pressed and you see a flashing, then the button is triggering the open/close of the the valve pwm
_isRunning == false;
}
}
}
void FlashBuiltInLED() {
for (int i = 0; i <= 10; i++) {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on
delay(100); // wait for tenth a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off
delay(100); // wait for tenth a second
}
}
Once the above code is uploaded, you should be able to test this on your car. Connect via and add a fuse (I used a 10 amp fuse) and ground and you should be ready to go. I have intentionally not described how all the components of the circuitry and the microcontroller code work as I don't know if anyone really cares. I'd be happy to elaborate on individual components as necessary, but I don't want to spend time doing so if people really just want to build the circuit and don't care how it works. Hopefully this helps some people who'd like to add npp to their non npp car.
Last edited by CityOf9Gates; Aug 11, 2020 at 11:09 AM. Reason: Revised to show better layout with larger UNO
EDIT: Ack! Sorry, I didn't realize this was the C7 forum. So does this mean that the C7s use electronic actuators for their NPP instead of vacuum solenoids as in the C6?
Last edited by ncnmra; Jul 8, 2020 at 12:15 PM.
2017 Actuator
The Best of Corvette for Corvette Enthusiasts
Then you select your board in the board manager in Arduino ide (probably a nano if your following my write up) and select the USB port on your PC that the board is connected to in the connection manager. Then paste the code that I supplied in this thread into the editor window of the ide and select compile. It should compile correctly as that link is the exact library file that I used. Once you have verified that it compiles successfully, just upload it to your Arduino using the upload menu option (it'll recompile it too) and then at that point your Arduino is provisioned correctly















