{"product_id":"chevy-npp-bi-valve-exhaust-controller-chevrolet","title":"Chevy NPP\/Bi-Valve Exhaust Controller – Chevrolet","description":"\u003cp\u003eReplace a broken or missing chevy npp\/bi-valve exhaust controller on your Chevrolet with this 3D printable part from PartsRemade.\u003c\/p\u003e\u003ch2\u003eAbout this part\u003c\/h2\u003e\u003cp\u003eDisclaimer: I am NOT responsible for any damage you may do. This is offered for free with no intention to profit, monetize or take responsibility for your actions. This was made possible by some amazing research from the C8 Corvette, adding the NPP RPO-code to cars that never came with the feature. I am sharing this information gathered between several websites and the code written by corvetteforum.com member CityOf9Gates, a super nice guy and was willing to talk to me years later about his earlier work. I am only adding the 3D printed case that can zip tie to the trunk\/battery area. Two initial designs were done several years ago, one created the pulse width signal using hardware and the this one (what I think is more sustainable) uses a cheap Arduino microcontroller to do the job. A transistor is used to do the heavy lifting, as to protect the Arduino’s relatively low power output (think amplifier power wire on an old car stereo system) and a 12 Volt voltage regulator is used to keep everything tidy. It may get warm but shouldn’t get ‘hot’. The resistors keep the signal from bouncing from high to low, thereby opening the valve when you don’t want it to. This is a 9th grade level electrical project at its finest… Using Arduino: If you do not know how to open a sketch, include a library and compile\/upload using an Arduino, there are great tutorials on youtube to show you how. You download the free software, download the library for PWM from here and install it in your Arduino Libaries https:\/\/code.google.com\/archive\/p\/arduino-pwm-frequency-library\/downloads Then, copy and paste the following text into a new sketch: #include \/\/ pwm-frequency-library #include 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\u003c\/p\u003e\u003ch2\u003eCompatible vehicles\u003c\/h2\u003e\u003cul\u003e\u003cli\u003eChevrolet\u003c\/li\u003e\u003c\/ul\u003e\u003cp\u003e\u003csmall\u003eAlways compare with your original part before printing. Fitment can vary by trim level and production date.\u003c\/small\u003e\u003c\/p\u003e\u003ch2\u003eSpecifications\u003c\/h2\u003e\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003ePart\u003c\/th\u003e\n\u003ctd\u003eChevy NPP\/Bi-Valve Exhaust Controller\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCategory\u003c\/th\u003e\n\u003ctd\u003eMechanical\/Functional\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eMake\u003c\/th\u003e\n\u003ctd\u003eChevrolet\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFormat\u003c\/th\u003e\n\u003ctd\u003eDigital download – STL file for FDM 3D printing\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFiles included\u003c\/th\u003e\n\u003ctd\u003e2 (STL)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003ePart number\u003c\/th\u003e\n\u003ctd\u003eCAT-P04294\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\u003ch2\u003eWhat you get\u003c\/h2\u003e\u003cp\u003eA digital 3D model (STL file) of this part, ready to print on your own 3D printer or at any local print shop or online printing service. This is a digital download: no physical part is shipped. Not sure it fits your car? \u003ca href=\"\/pages\/contact\"\u003eContact us\u003c\/a\u003e with your vehicle details before you buy.\u003c\/p\u003e\u003ch2\u003eMore Chevrolet parts\u003c\/h2\u003e\u003cp\u003eBrowse all \u003ca href=\"\/collections\/chevrolet-parts\"\u003eChevrolet replacement parts\u003c\/a\u003e or search the full \u003ca href=\"\/collections\/parts-catalogue\"\u003e3D printable car parts library\u003c\/a\u003e.\u003c\/p\u003e\u003cp\u003e\u003csmall\u003eDesign credit: original design by Cassidy on \u003ca href=\"https:\/\/www.thingiverse.com\/thing:5852128\" rel=\"nofollow\"\u003eThingiverse\u003c\/a\u003e, licensed CC BY.\u003c\/small\u003e\u003c\/p\u003e","brand":"PartsRemade","offers":[{"title":"Default Title","offer_id":68042373497064,"sku":"CAT-P04294","price":9.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0818\/0252\/6952\/files\/1783231326_060019bff56b_npp_ss_exhaust_arduino_box_cover_only.png?v=1793211604","url":"https:\/\/partsremade.com\/products\/chevy-npp-bi-valve-exhaust-controller-chevrolet","provider":"PartsRemade","version":"1.0","type":"link"}