Featured Post

SA / FB RX7 Drift Tune Index

Monday, January 22, 2018

FORD 302 with GM TBI on Speeduino EFI Build and Conversion

So, i decied to attack going to EFI, but like anything i do i like to keep everything on the super affordable side so i started to build my own EFI system. I deceid to go with a speeduino setup as it is an experimental and super affordable setup i wanted to see what it was like building one from scratch. i have posted my forum posts as i have been building this. and i figured i share the new progress.  
so far i have only about $350ish invested into a EFI system. 


 Machined an Adaptor Plate to go from the square bore to TBI

I decided on TBI for 2 reasons, one i had one laying around waiting for a home, and the GM units pretty much have everything that i need in one unit. It doesn't flow as nicely as i would like, but it should flow enough to supply my motor with what power it can produce. Later I plan on going to a plate injection system on the square bore and a different larger 90mm throttle body , and at that time i'm going to go forced induction with a HX55 turbo, and feeding it with E85. but like i said before i want to get the hang of this and understand it well before i trust myself with that setup. 
I machined the adaptor from a scrap piece of 3/4" aluminum i had laying around. I plan to tear down the Throttle body as well and do a dip clean and rebuild. 
Image

Right Now I'm waiting on My Stepper motor driver board and the bluetooth board to show up so i can finish the controller and start building a harness.
i grabbed some 28 wire 20awg cable to start my harness with.

Image

i mean it looks to me like i can just push it with the driver, wired in matching winding pairs

So i got a few great things accomplished.

I got my HC-05 Bluetooth board Configured to the correct settings VIA my Mega Board. i didnt want to buy some extra cable or what ever to do this as the mega should be capable. There are a Few diffrent HC-05 boards and mine happen to be the biggest PITA one. It has a Key pin, instead of a convenient button. so there is more BS involved. As well as mine had older Version AT commands for it not, the ones listed. Now you cant hook the BT to TX0 and RX0 because that is being used by your computer and the USB port for communication, so instead of the speedy recommended install TX1 and RX1.

Here is the simple code to use if you have a HC-05 with a button

CODE: SELECT ALL
// Basic Bluetooth test sketch 5a for the Arduino Mega. 
// AT mode using button switch
// HC-05 with EN pin and button switch
//
// Uses serial with the host computer and serial1 for communication with the Bluetooth module
//
//  Pins
//  BT VCC to Arduino 5V out. Disconnect before running the sketch
//  BT GND to Arduino GND
//  BT RX (through a voltage divider) to Arduino TX1 (pin 18)
//  BT TX  to Arduino RX1 (no need voltage divider)   (pin 19)
//
// When a command is entered in to the serial monitor on the computer 
// the Arduino will relay it to the Bluetooth module and display the result.
//
 
char serialByte = '0';
const byte  LEDPIN = 13; 
 
void setup() 
{
    pinMode(LEDPIN, OUTPUT);
 
    // communication with the host computer
    Serial.begin(9600);  
 
    Serial.println("Do not power the BT module");
    Serial.println(" ");
    Serial.println("On the BT module, press the button switch (keep pressed, and at the same time power the BT module");
    Serial.println("The LED on the BT module should now flash on/off every 2 seconds");
    Serial.println("Can now release the button switch on the BT module");
    Serial.println(" ");
    Serial.println("After entering AT mode, type 1 and hit send");
    Serial.println(" ");
 
 
    // wait for the user to type "1" in the serial monitor
    while (serialByte !='1')
    {
        if ( Serial1.available() )   {  serialByte = Serial1.read();  }
    }  
 
 
    // communication with the BT module on serial1
    Serial1.begin(38400);
 
    // LED to show we have started the serial channels
    digitalWrite(LEDPIN, HIGH);  
 
    Serial.println(" ");
    Serial.println("AT mode.");
    Serial.println("Remember to to set Both NL & CR in the serial monitor.");
    Serial.println("The HC-05 accepts commands in both upper case and lower case");
    Serial.println(" "); 
}
 
 
void loop() 
{
    // listen for communication from the BT module and then write it to the serial monitor
    if ( Serial1.available() )   {  Serial.write( Serial1.read() );  }
 
    // listen for user input and send it to the HC-05
   if ( Serial.available() )   {  Serial1.write( Serial.read() );  }
}
How Ever i didnt have button you have to jumper the key to 3.3v temporarily to trigger the AT mode. Once the light starts blinking slow like 2 sec on/2sec off, your Good to go! 

I then Entered this Code i modified it a bit only to trigger right away for some reason mine wouldnt work unless i did that. 

CODE: SELECT ALL
// Basic Bluetooth test sketch 5a for the Arduino Mega. 
// AT mode using button switch
// HC-05 with EN pin and button switch
//
// Uses serial with the host computer and serial1 for communication with the Bluetooth module
//
//  Pins
//  BT VCC to Arduino 5V out. Disconnect before running the sketch
//  BT GND to Arduino GND
//  BT RX (through a voltage divider) to Arduino TX1 (pin 18)
//  BT TX  to Arduino RX1 (no need voltage divider)   (pin 19)
//
// When a command is entered in to the serial monitor on the computer 
// the Arduino will relay it to the Bluetooth module and display the result.
//
 
char serialByte = '1';
const byte  LEDPIN = 13; 
 
void setup() 
{
    pinMode(LEDPIN, OUTPUT);
 
    // communication with the host computer
    Serial.begin(9600);  
 
    Serial.println("Do not power the BT module");
    Serial.println(" ");
    Serial.println("On the BT module, press the button switch (keep pressed, and at the same time power the BT module");
    Serial.println("The LED on the BT module should now flash on/off every 2 seconds");
    Serial.println("Can now release the button switch on the BT module");
    Serial.println(" ");
    Serial.println("After entering AT mode, type 1 and hit send");
    Serial.println(" ");
 
 
    // wait for the user to type "1" in the serial monitor
    while (serialByte !='1')
    {
        if ( Serial1.available() )   {  serialByte = Serial1.read();  }
    }  
 
 
    // communication with the BT module on serial1
    Serial1.begin(38400);
 
    // LED to show we have started the serial channels
    digitalWrite(LEDPIN, HIGH);  
 
    Serial.println(" ");
    Serial.println("AT mode.");
    Serial.println("Remember to to set Both NL & CR in the serial monitor.");
    Serial.println("The HC-05 accepts commands in both upper case and lower case");
    Serial.println(" "); 
}
 
 
void loop() 
{
    // listen for communication from the BT module and then write it to the serial monitor
    if ( Serial1.available() )   {  Serial.write( Serial1.read() );  }
 
    // listen for user input and send it to the HC-05
   if ( Serial.available() )   {  Serial1.write( Serial.read() );  }
}

now i was able to go into the AT commands 
BUT NONE OF THE LIST COMMANDS WERE WORKING!!!! EXCEPT THE AT+NAME
so i had to search and this is the commands i found based on the Firmware version i had. 

CODE: SELECT ALL
Command Comment
AT Serial communications test.
Returns “OK”.
AT+VERSION? Get the firmware ID/version number.
Returns “+VERSION:2.0-20100601″.
AT+ORGL Resets the module to the factory default settings.
Returns “OK”.
AT+RESET Restarts the module. Some times required for changes to take place.
AT+NAME? Get the device name. Requires pin 34 to be HIGH. If the pin is not HIGH the HC-05 will not reply.
Returns the device name such as “+NAME:H-C-2010-06-01″.
AT+NAME=newName Change the modules name to newName.
Returns an “OK” if successful.
AT+ADDR? Query the module mac address. Returns a hex value in the form “+ADDR:1234:12:123456″.
AT+UART? Query the baud rate used for UART serial communication. This is the speed a host device like an Arduino uses to talk to the BT module. It is not the the speed used to send wireless signals between different modules.
Returns the baud rate, stop bit, parity bit in the form “+UART:38400,0,0″
AT+UART=baudRate,stop,parity Set the baud rate used for serial UART commincation.
baudRate is one of the following decimal values: 
4800
9600
19200
38400
57600
115200
230400
460800
1382400
stop is the stop bit. Either 0 or 1
parity is the parity but. Either 0, 1, or 2.
0 = none.
1 = odd.
2 = even.
i.e. “AT+UART=38400,0,0″
AT+STATE? Query the current device state.
Replies with one of the following:
INITIALIZED
READY
PAIRABLE
PAIRED
INQUIRING
CONNECTING
CONNECTED
DISCONNECTED
UNKNOWN
AT+ROLE? Query the current role. Returns 0,1, or 2.
0 = slave mode
1 = master mode
2 = slave echo mode.
AT+ROLE=x Set the module mode.
Where x = 0,1, or 2.
AT+ROLE=0 puts the HC-05 in to slave mode.
AT+ROLE=1 puts it in to master mode.
AT+ROLE=2 puts it in to slave echo mode.
Returns “OK” if successful.
In Slave echo mode, the module echos back the data it receives.
AT+CMODE? Query the current connection mode. Returns the connection mode value (0,1,2) in the form “+CMOD:0″.
0 = Manual connection.
1 = Auto connection on start.
2 = Slave loop mode.
AT+CMODE=x Set the connection mode.
Where x can be 0,1, or 2. For CMODE to work, the module has to be in master mode (“AT+ROLE=1″).
0 = Manual connection: The remote device address must be specified to make a connection.
1 = Auto connect: Connect to any module/last connected module on start.
2 = Slave loop mode.
AT+PSWD? Query the current PIN.
Returns a 4 digit decimal number.
AT+PSWD=xxxx Set the PIN code used for pairing
xxxx = a 4 digit decimal number.
AT+PAIR=address,timeout Attempt to PAIR with a remote Bluetooth device.
The address must be in the form 1234,56,abcedef (notice the commas).
timeout is a decimal value that sets the length of time to try.
“AT+PAIR=98d3,32,70facf, 9″ attempts to PAIR with a slave module with the address 98d3:32:70facf for 9 seconds. If pairing is not successful within 9 seconds a”FAIL” error message is given.
The SPP has to be initialized before using the AT+PAIR command.
AT+INIT Initialize the Serial Port Profile (SPP)
This is required by some of the other commands.
“AT+INIT” requires pin34 to be HIGH. If the HC-05 is in AT command mode but pin34 is not HIGH the module will not reply.
If AT+INIT is used and SPP has already been initialized the “ERROR(17)” error message is given.
If a command requires SPP and it has not been initialized a “ERROR(16)” error message is given.
I Sometimes had to send the command twice but it works. Changed the baud rate ,then mode to slave, and even changed the name to something cool. Image

So yea now take all that back off and install how the speed wiki shows moving the TX and RX pins Back to TX0 RX0 and So yea it fired up. 

So i fired up MS-droid to test the Bluetooth and......
Image

seen this. yay, so i moved a copy of the speedy ini file to the ini file directory and it seemed to except the speedy board now. Only problem is once i disconnect and reconnect it does something weird, and cant match the tune to the board signature. so i have to start a new project everytime i want to connect. IS there a FIX for this? do i have to mode the ini for the tune? or is it something MSDROID is looking for from the speedy that MSBOARDS have and speedy does not?

But on the plus Side i made this sweet dashs
Image
Image

As well as my stepper Drive board and my injector resistors showed up!!!
Image
Next i'll have to experiment on the bench with my stepper IACV see if i can make it do what i want.
I also talk to my buddie to see if could have him do some work on my Throttle body and see if we cant open it up for some more CFM as i am already pretty close to its limits. 

I did score some goodies for Free.99
A few mated 12 pin connectors, and a few mated 5 pin connectors - not sure what ill use these for but prob be nice for sensors or harness break points
as well as some 26 wire 20awg cable - it will make a great start to a clean nice harness
and an old , but good thermocouple, to test with. I was hoping to score a free 4 pin 3mm plug... but oh well i guess not. i thought i found one, but it must be a 3.5mm or 4mm
Image
Image


Quickly installed my stepper board as well looks good on there!
Image
Image

If I get some motivation i'll wire up and figure out my stepper motor settings, PSIG since tou played with gm TBI any ideas on starting settings for stepper IACV like home step settings? (never mind i found in the Wiki 250 steps to home and 3 ms steps ) but is there a good way to test function like a command to open or a command to close?)
Image
Been busy with holidays but i got a chance to mess around a litte. Still have been having issues with my stepper motor, so i deiced to write some code to test it, while mounted to the NO2C board. Just to make sure that i have good working hardware, not something messed up. I did have some success as i did get my stepper to move correctly under my code. I did how ever learn that my stepper motor seems very particulate about its settings, too fast and it doesn't step and too slow it doesn't step just jitters, had to find Goldilocks zone for it. well here is my test code if anyone else will need to use it to test, it is written just for NO2C boards, if you want to use it on others you will have to correct the output pins 




CODE: SELECT ALL


// testing a stepper motor with a NO2C and DRV8825 driver board or equivalent
// Stepper should Step out (extend) and Step In (retract)
// this version uses delay() to manage timing

byte directionPin = 25;
byte stepPin = 24;
int numberOfSteps = 250;
byte Enablepin = 27;
int pulseWidthMicros = 200;  // microseconds
int millisbetweenSteps = 20; // milliseconds - or try 1000 for slower steps


void setup() { 

  Serial.begin(9600);



So i have a few updates i been meaning to post about. I been kinda in a slow down awaiting parts and here is where I'm at.
My new 5 ohm 25 watt resistors showed up for my injectors, sorry no, pic but they are nothing special just the same as my 10 ohm ones but 5 ohm.

I was lucky enough to be bless to be the recipient of a SLC2 FREE wide band controller, from the giveaway. This is a great as i had planned on running the 14point7 SLC controller so this is the absolutely perfect addition to my parts.
The SCL2 Free Unit Shipped fast and is a solid looking unit. it was package well and the USPS was not able to destroy it in transport. Here is what I got When I opened the package.


The fit on the case is pretty good and snug, I don't for see it having any issues slopping about.

After some quick soldering I added the breakout header and plug headers


It was very simple work and the online instructions were pretty clear on what to do.
so i slipped everything together and fired it up.

Fired up on the first try and looks to be working great.

Now my only complaint and its not really a complaint, that being the case is 3d printed I'm not a fan of the finish on it,nor the color. I personally would have liked a smoother looking case, but that is not hard to remedy, i just do an acetone vapor finish to smooth it and prob refinish with a coat of black.

Now i needed a Wideband 4.9 sensor for this great unit. During a Christmas party i was at, my buddy Doug that works at a high end salvage yard, i asked him if he could get me some sensors to work with as i have been in the mindset to do this as economically as possible, so i do try and cut some cost in some places. Soon after i spoke with him, he had a 2016 Ford f150 come into yard, with barely 7k on the clock. So he removed all 4 o2 sesnors for me as well as the harness in that area. I was pretty sure that after 2007 almost all manufacturers where using 4.9 sensors. The 2 upstream sensors he sent me were both 4.9s and the down stream sensors were both narrow band sensors. Now anyone that is going to say hey get a new one so you know it works. either they work or don't work, these came out of a running truck that had been hit in the side, they obliviously were working just fine, and I'm not too worried about it. And my sensors were FREE. I got two of them but i only need one, but i may take one and set it up on a cheaper controller and maybe feed my gauge with it so i can make a decent comparison between the two.


I have had been having issues with my stepper motor not sure if it was stepping properly when controlled thru TS and speedy code, but had no way to test it properly thru everything. I suspect the stepper hardware is fine as with simple code controlling it, i can get it to step both directions. So i decide it would prob be best to setup a Ardu-stim to test my board and stepped setup to make sure everything else was firing correctly. As well as picked up another stepper board just in case mine is no good.

So i picked up a Arduino Nano and a terminal shield for it, as i didnt want to deal with loose or direct solder wires to it. After some quick soldering on my shield it was ready to rock.


I did have some issues trying to download Device Druid as the newest version of the software doesnt download from the MS store as it is supposed to. I did find the older version and installed that and got it up and running.

i did hook up my meter the the nano to make sure it was outputing something, was able to see voltage, as well as the frequency output fluctuate as i changed it in device druid , so i think its working.
I did happen upon a project to reuse my nano for when im done testing, it was a pretty cool idea, guy used it to control he popup lights

now to get another 28 pin microfit plug as well as a 4 pin microfit, so i can make some extra connectiong to the no2c and not some hokey rig job. and get to testing. moving slow but moving. All i need yet is my 2 temp sensors (coolant and air) and I'm ready to start wiring up my harness. i do have some old industrial thermo couplers idk if i can use them, or maybe ill have to make something to use them to monitor exhaust temps

No comments:

Post a Comment