Import configuration files

This commit is contained in:
Josh Stewart 2020-01-06 12:43:46 +11:00 committed by GitHub
parent a8c8fe1be2
commit 4433e638e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 964 additions and 0 deletions

View File

@ -0,0 +1 @@
1. REDIRECT [Acceleration Wizard](Acceleration_Wizard "wikilink")

View File

@ -0,0 +1,32 @@
Overview
--------
Acceleration Enrichment (AE) is used to add extra fuel during the short transient period following a rapid increase in throttle. It performs much the same function as an accelerator pump on a carbureted engine, increasing the amount of fuel delivered until the manifold pressure reading adjusts based on the new load.
To operate correctly, you must have a variable TPS installed and calibrated.
Theory
------
Tuning of acceleration enrichment is based on the rate of change of the throttle position, a variable known as TPSdot (TPS delta over time). This is measured in %/second, with higher values representing faster presses of the throttle and values in the range 50%/s to 1000%/s are normal. Eg:
- 100%/s = pressing the throttle from 0% to 100% in 1 second
- 1000%/s = pressing the throttle from 0% to 100% in 0.1s
TPSdot forms the X axis of the acceleration curve, with the Y axis value representing the % increase in fuel.
<center>
&lt;img src="<https://raw.githubusercontent.com/speeduino/wiki/master/tuning/accel.png> /&gt;
</center>
### Tuning
The enrichment curve included with the base Speeduino tune is a good starting point for most engines, but some adjustment is normal depending on injector size, throttle diameter etc.
In most cases, tuning of the AE curve can be performed in a stationary environment, though dyno or road tuning is also possible. Fast and slow blips of the throttle should be performed and the affect on the AFRs monitored using the live line graph on the AE dialog. This graph shows both TPSdot and AFR values in sync with each other, making adjustments to the correct part of the AE curve simpler to identify.
If you find that the AFR is initially good, but then goes briefly lean, you should increase the 'Accel Time' setting, with increments of 10-20ms recommended.
#### False triggering
In cases where the TPS signal is noisy, spikes in its reading may incorrectly trigger the acceleration enrichment. This can be seen in a log file or on a live dash in TunerStudio by the activation of the 'TPS Accel' indicator when there is no (or little) throttle movement occurring. Should this occur (and assuming that the TPS wiring cannot be corrected to reduce noise) then the false triggers can be prevented from triggering AE by increasing the "TPSdot Threshold" value. This should be increased in increments of ~5%/s, pausing between each increase to observe whether AE is still being incorrectly activated.

View File

@ -0,0 +1,89 @@
Overview
--------
Speeduino also supports the reading of up to 16 additional input channels. These inputs can be either Analog or Digital Pins on the Mega2560(or other mcu in use) or from a remote data aquistion device (such as The DxControl GPIO for instance) via the secondary serial port or the Canbus interface(if available).
A data channel configured here will have the raw data avilable in TunerStudio as a Gauge and will also be loggable too.
How to Use
----------
The configuration is mainly split into two categories,
- **Local MCU Pin** - [How to Configure to use a Local MCU pin](#How_to_Configure_to_use_a_Local_MCU_pin "wikilink")
- **External Data Source** - [How to Configure to use a External Data Source](#How_to_Configure_to_use_a_External_Data_Source "wikilink")
### How to Configure to use a Local MCU pin
The configuration page is accessed from the Accessories drop down within TunerStudio ,select the "local Auxillary input channel configuration" option ![](Auxindrop_nocan.jpg "fig:Auxindrop_nocan.jpg")
This window will be opened. ![](Auxin_config.jpg "fig:Auxin_config.jpg")
In the above image the first two channels have been configured as an local analog and a local digital input respectively.
- **Input Alias** - This is a user defined Alias name (up to 20 characters) for the input channel
- **Aux Input Channel Enable** - This Enables/Disables the input channel
- **PIN** - Is the pin selected(only for local options)
#### Input Alias
The input alias can be any ascii character name the user wishes up to 20 characters long. This can also be left as the default .
#### Aux input Channel Enable
Options here are
- **OFF** - Channel is disabled
- **EXT/CAN** - The channel is assigned to an external data source
(this option is only visible if CAN_COMMANDS is enabled in project properties.[See here for further information](#How_to_Configure_to_use_a_External_Data_Source "wikilink")
- **Local_analog** - Select a local analog mcu pin
- **Local_Digital** - Select a local digital mcu Pin
#### PIN
This setting is only available for local mcu pin selections. It is the actual mcu pin name.
### How to Configure to use a External Data Source
To use the Auxillary input channels for external data the Secondary IO must be enabled. [See here for further information on how to do this.](Secondary_Serial_IO_interface#Enable_Secondary_IO_interface "wikilink")
The configuration page is accessed from the Accessories drop down within TunerStudio ,select the "External Auxillary input channel configuration" option ![](Auxindrop_withcan.jpg "fig:Auxindrop_withcan.jpg")
This window will be opened. ![](ExtAuxin_config2.jpg "fig:ExtAuxin_config2.jpg")
For External data inputs to be active the "Enable External Data Input" option must be enabled.
In the above image the first three channels have been configured as an local analog and a local digital input and a External input respectively.
- **Input Alias** - This is a user defined Alias name (up to 20 characters) for the input channel
- **External Aux Input Channel Enable** - This Enables/Disables the input channel
- **Source CAN Address** - Is Real Can address of the source device
- **Source Data Start Byte** - Is the first byte ( of the 8bytes in a canbus command) where the data can be found
- **Input Parameter Number of Bytes** - Is the number of bytes the data is stored in(lsb first)
#### Input Alias
The input alias can be any ascii character name the user wishes up to 20 characters long. This can also be left as the default .
#### External Aux input Channel Enable
Options here are
- **OFF** - Channel is disabled
- **EXT/CAN** - The channel is assigned to an external data source
- **Local_analog** - Select a local analog mcu pin
- **Local_Digital** - Select a local digital mcu Pin
#### Source CAN Address
This is the Hex address of the remote Device
#### Source Data Start Byte
A can data command has up to 8 bytes. This value sets the first data byte the data value begins at.
#### Input Parameter Number of Bytes
The data byte can be made from a single byte or two (word or 16bit value)

View File

@ -0,0 +1,24 @@
Overview
--------
Speeduino has an on board closed loop boost controller than can be used to regulate standard single turbo setups.
Most 3 or 4 port boost solenoids can be used, with frequencies between 15Hz and 500Hz supported. Any of the on board high current outputs can be directly connected to the solenoid and is controlled via a boost target table and PID tuning. Over boost limiting is also available.
Settings
--------
Speeduino's boost control uses a PID algorithm with 2 modes of operation, Simple and Full. Each has their own advantages and disadvantages, as outlined below
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/accessories/boost_settings.PNG" width="500" />
</center>
In Simple mode, the PID values themselves are controlled by the ECU itself and a sensitivity slider is used to adjust how aggressive the output duty cycle will be set. The simple mode can be easy and fast to setup, however has the downside that to avoid overboost, the sensitivity may need to be set low, which can increase lag.
### Target table
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/accessories/boost_map.png" width="500" />
</center>

19
configuration/Cranking.md Normal file
View File

@ -0,0 +1,19 @@
Overview
--------
Cranking conditions during starting typically require multiple adjustments to both fuel and ignition control in order to provide smooth and fast starts. The settings on this dialog dictate when Speeduino will consider the engine to be in a cranking/starting condition and what adjustments should be applied during this time.
Settings
--------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/warmup/cranking.png" height="500" />
</center>
- **Cranking RPM** - This sets the threshold for whether Speeduino will set its status to be cranking or running. Any RPM above 0 and below this value will be considered cranking and all cranking related adjustments will be applied. It's generally best to set this to be around 100rpm higher than your typical cranking speed to account for spikes and to provide a smoother transition to normal idle
- **Flood Clear level** - Flood clear is used to assist in removing excess fuel that has entered the cylinder/s. Whilst flood clear is active, all fuel and ignition events will be stopped and the engine can be cranked for a few seconds without risk of starting or further flooding. To trigger flood clear, the RPM must be **below** the above Cranking RPM setting and the TPS must be **above** the threshold of this setting.
- **Fuel pump prime duration** - When Speeduino is first powered on, the fuel pump output will be engaged for this many seconds in oder to pressurise the fuel system. If the engine is started in this time, the pump will simply keep running, otherwise it will be turned off after this period of time. Note that fuel pump priming only occurs at system power on time. If you have USB connected, Speeduino remains powered on even without a 12v signal.
- **Priming Pulsewidth** - Upon power up, Speeduino will fire all injectors for this period of time. This pulse is NOT intended as a starting fuel load, but is instead for clearing out air that may have entered the fuel lines. It should be kept short to avoid engine flooding.
- **Cranking enrichment** - Whilst cranking is active (See Cranking RPM above), the fuel load will be increased by this amount. Note that as a standard correction value, this cranking enrichment **is in addition** to any other adjustments that are currently active. This includes the warmup enrichment etc.
- **Cranking Bypass** - This option is specifically for ignition systems that have a hardware cranking ignition option. These systems were used throughout the 80s and early 90s and allowed ignition timing to be fixed and controlled by the ignition system itself when active (Via an input wire). With this option you can specify an output pin that will be set HIGH when the system is cranking. The pin number specified is the ARDUINO pin number.
- **Fix cranking timing with trigger** - Some (usually low resolution) trigger patterns are designed to align one of their pulses with the desired cranking advance. This is typically 5 or 10 degrees BTDC. When enabled, Speeduino will wait for this timed input pulse before firing the relevant ignition output (A dwell safety factor is still applied incase this pulse is not detected). This option is only made available when a trigger pattern that supports this function is selected (See [Trigger Setup](Trigger_Setup "wikilink"))

32
configuration/Dwell.md Normal file
View File

@ -0,0 +1,32 @@
Overview
========
The dwell control dialog alters the coil charging time (dwell) for Speeduino's ignition outputs. Care should be taken with these settings as igniters and coils can be permanently damaged if dwelled for excessive periods of time.
From the April 2017 firmware onwards, dwell will automatically reduce when the configured duration is longer than the available time at the current RPM. This is common in single channel ignition configurations (Eg 1 coil with a distributor) and in particular on higher cylinder count engines.
Settings
========
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/ignition/dwell.png" height="600" />
</center>
**Note:** Both the running and cranking dwell times are nominal values, assumed to be at a constant voltage (Usually 12v). Actual dwell time used will depend on the current system voltage with higher voltages having lower dwell times and vice versa. See section below on voltage correction
- Cranking dwell - The nominal dwell time that will be used during cranking. Cranking is defined as being whenever the RPM is above 0, but below the 'Cranking RPM' values in the [Cranking](Cranking "wikilink") dialog
- Running dwell - The nominal dwell that will be used when the engine is running normally.
- Spark duration - The approximate time the coil takes to fully discharge. This time is used in calculating a reduced dwell when in time limited conditions, such as mentioned above on single coil, high cylinder count engines. The limited dwell time is calculated by taking the maximum revolution time at the given RPM, dividing by the number of spark outputs required per revolution and subtracting the spark duration. Outside of those conditions, this setting is not used.
- Over dwell protection - The over dwell protection system runs independently of the standard ignition schedules and monitors the time that each ignition output has been active. If the active time exceeds this amount, the output will be ended to prevent damage to coils. This value should typically be at least 3ms higher than the nominal dwell times configured above in order to allow overhead for voltage correction.
Voltage correction
------------------
As the system voltage rises and falls, the dwell time needs to reduce and increase respectively. This allows for a consistent spark strength without damaging the coil/s during high system voltage conditions. It is recommended that 12v be used as the 'nominal' voltage, meaning that the Dwell % figure at 12v should be 100%.
The correction curve in the base tune file should be suitable for most coils / igniters, but can be altered if required.
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/ignition/dwell_correction.png" height="520" />
</center>

View File

@ -0,0 +1,42 @@
<languages/> <translate>
Overview
--------
From the Settings menu, select Constants
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/TS_8.png" width="40%" />
</center>
Here you need to setup the engine constants. Fill out the fields in the bottom section before calculating the Required Fuel.
Settings
--------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/constants/engine.png" width="30%" />
</center>
- **Control Algorithm:** The load source that will be used for the fuel table
- **Squirts per Engine Cycle:** How many squirts will be performed over the duration of the engine cycle (Eg 720 degrees for a 4 stroke). most engines will not require values greater than 4. For sequential installations, this should be set to 2 with the injector staging set to 'Alternating'(Internally Speeduino will adjust the squirts to 1)
- Note that for 3 and 5 squirts, you must have a cam signal in addition to the crank.
- **Injector Staging:** This configures the timing strategy used for the injectors
- Alternating (Recommended for most installs) - Injectors are timed around each cylinders TDC. The exact closing angle can be specific in the Injector Characteristics dialog.
- Simultaneous - All injectors are fired together, based on the TDC of cylinder 1.
- **Engine stroke:** Whether the engine is 2 stroke or 4 stroke
- **Number of cylinders:** Number of cylinders in the engine. For rotary engines, select 4.
- **Injector Port Type:** Option isn't used by firmware. Selection currently does not matter
- **Number of injectors:** Usually the same as number of cylinders (For port injection)
- **Engine Type:** Whether the crank angle between firings is the same for all cylinders. If using an Odd fire engine (Eg Some V-Twins and Buick V6s), the angle for each output channel must be specific.
- **Injector Layout:** Specifies how the injectors are wired in
- **Paired:** 2 injectors are wires to each channel. The number of channels used is therefore equal to half the number of cylinders.
- **Semi-Sequential:** Semi-sequential: Same as paired except that injector channels are mirrored (1&4, 2&3) meaning the number of outputs used are equal to the number of cylinders. Only valid for 4 cylinders or less.
- **Sequential**: 1 injector per output and outputs used equals the number of cylinders. Injection is timed over full cycle. Only available for engines with 4 or fewer cylinders.
- **Board Layout:** Specifies the input/output pin layout based on which Speeduino board you're using. For specific details of these pin mappings, see the utils.ino file
- **MAP Sample Method:** How the MAP sensor readings will be processed:
- **Instantaneous:** Every reading is used as it is taken. Makes for a highly fluctuating signal, but can be useful for testing
- **Cycle Average:** The average sensor reading across 720 crank degrees is used. This is the recommended option for 4 of more cylinders
- **Cycle Minimum:** The lowest value detected across 720 degrees is used. This is the recommended method for less than 4 cylinders or ITBs
</translate>

87
configuration/Errors.md Normal file
View File

@ -0,0 +1,87 @@
Overview
--------
From the July 2016 firmware onwards there is an error handling system that provides feedback and 'limp home' type options in case an issue is detected. The system can manage up to 4 errors at any given time.
Viewing Errors
--------------
When an error is detected, the Error indicator within TunerStudio will activate
TBA
### Using Default Values
TBA
Error Numbers
-------------
| Error Number | Default Value | Description |
|--------------|---------------|-----------------------------------------------------------------------------------------------------------------------|
| 0 | N/A | No errors |
| 1 | N/A | Unknown error. This should typically not occur, but indicates that an error was detected, but could not be identified |
| 2 | 40C | Inlet Air Temperature (IAT) sensor is shorted to 5v |
| 3 | 40C | Inlet Air Temperature (IAT) sensor is shorted to ground |
| 4 | 40C | Coolant (CLT) sensor is shorted to 5v |
| 5 | 40C | Coolant (CLT) sensor is shorted to ground |
| 6 | 14.7 | O2 sensor is shorted to 5v |
| 7 | 14.7 | O2 sensor is shorted to ground |
| 8 | 50% | Throttle Position Sensor (TPS) is shorted to 5v |
| 9 | 50% | Throttle Position Sensor (TPS) is shorted to ground |
| 10 | 13v | Battery input above 20v |
| 11 | 13v | Battery input below 5v |
| 12 | 240kPa | MAP sensor shorted to 5v |
| 13 | 80kPa | MAP Sensor shorted to ground |
| 14 | | Not currently in use |
| 15 | | Not currently in use |
| 16 | | Not currently in use |
| 17 | | Not currently in use |
| 18 | | Not currently in use |
| 19 | | Not currently in use |
| 20 | | Not currently in use |
| 21 | | Not currently in use |
| 22 | | Not currently in use |
| 23 | | Not currently in use |
| 24 | | Not currently in use |
| 25 | | Not currently in use |
| 26 | | Not currently in use |
| 27 | | Not currently in use |
| 28 | | Not currently in use |
| 29 | | Not currently in use |
| 30 | | Not currently in use |
| 31 | | Not currently in use |
| 32 | | Not currently in use |
| 33 | | Not currently in use |
| 34 | | Not currently in use |
| 35 | | Not currently in use |
| 36 | | Not currently in use |
| 37 | | Not currently in use |
| 38 | | Not currently in use |
| 39 | | Not currently in use |
| 40 | | Not currently in use |
| 41 | | Not currently in use |
| 42 | | Not currently in use |
| 43 | | Not currently in use |
| 44 | | Not currently in use |
| 45 | | Not currently in use |
| 46 | | Not currently in use |
| 47 | | Not currently in use |
| 48 | | Not currently in use |
| 49 | | Not currently in use |
| 50 | | Not currently in use |
| 51 | | Not currently in use |
| 52 | | Not currently in use |
| 53 | | Not currently in use |
| 54 | | Not currently in use |
| 55 | | Not currently in use |
| 56 | | Not currently in use |
| 57 | | Not currently in use |
| 58 | | Not currently in use |
| 59 | | Not currently in use |
| 60 | | Not currently in use |
| 61 | | Not currently in use |
| 62 | | Not currently in use |
| 63 | | Not currently in use |
| | | |

View File

@ -0,0 +1,42 @@
Overview
--------
Speeduino has the ability to modify fuel and ignition settings based on the ethanol content of the fuel being used, a practice typically known as flex fuelling. A flex fuel sensor is installed in the feed or return fuel lines and a signal wire is used as an input on the Speeduino board.
As ethanol is less energy dense, but also has a higher equivalent octane rating, adjustments to the fuel load and ignition timing are required.
Hardware
--------
Speeduino uses any of the standard GM/Continental Flex fuel sensors that are widely available and were used across a wide range of vehicles. These were available in 3 different units, all of which are functionally identical, with the main difference being only the physical size and connector. The part numbers for these are:
- Small - \#13577429
- Mid-size - \#13577379
- Wide - \#13577394 (Same as the mid-size one, but with longer pipes)
All 3 use a variant of the Delphi GT150 series connector. You can use a generic GT150 connector, but you will have to clip off 2 tabs from the side of the sensor.
Part numbers :
- Housing (\#13519047)
- Pins (\#15326427)
- Seal (\#15366021)
Alternatively, there is a GM part for a harness connector, part number 13352241: <http://www.gmpartsdirect.com/oe-gm/13352241>
### Wiring
All units are wired identically and have markings on the housing indicating what each pin is for (12v, ground and signal) Speeduino boards v0.3.5+ and v0.4.3+ have an input location on their proto areas that the signal wire can be directly connected to.
On boards earlier to these, you will need to add a pullup resistor of between 2k and 3.5k Ohm. Recommended value is 3.3k, however any resistor in this range will work. Note that this is a relatively strict range, more generic values such as 1k or 10k DO NOT WORK with these sensors.
Tuning
------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/flex/flex_settings.png" width="40%" />
</center>
- **Sensor frequency -** The minimum and maximum frequency of the sensor that represent 0% and 100% ethanol respectively. For standard GM/Continental flex sensors, these values are 50 and 150
- **Fuel multiplier% -** This is the additional fuel that should be added as ethanol content increases. The Low value on the left represents the adjustment to the fuel map at 0% ethanol and will typically be 100% if the base tune was performed with E0 fuel. If the base tune was made with E10 or E15 however, this value can be adjusted below 100%. The high value represents the fuel multiplier at 100% ethanol (E100) and the default value of 163% is based on the theoretical difference in energy density between E0 and E100. Tuning of this value may be required
- **Additional advance -** The additional degrees of advance that will be applied as ethanol content increases. This amount increases linearly between the low and high values and is added after all other ignition modifiers have been applied.

View File

@ -0,0 +1,12 @@
Overview
--------
The IAT density curve represents the change in oxygen density of the inlet charge as temperature rises. The default curve approximately follows the ideal gas law and is suitable for most installations, however if you are seeing very high inlet temperatures (Either due to heat soak in the engine bay or from turbocharging) the you may need to adjust the hot end of this curve.
Settings
--------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/constants/iatDensity.png" width="40%" />
</center>

152
configuration/Idle.md Normal file
View File

@ -0,0 +1,152 @@
Overview
--------
### Compatible Idle Valve Types
There are currently 3 modes of idle control available, using on/off, PWM duty cycle, or a stepper step count, enabled below a set coolant temperature. These modes cover the most common types of idle mechanisms in use. At this time only open loop control is available, meaning that an air bypass passage is enabled, rather than a target RPM. Closed loop control is anticipated at some point in the future, but no commitment is currently made.
### Stand-Alone (Non-Electronic)
While not an idle control mode, Speeduino is compatible with stand-alone idle valves that are self-controlling. Examples of this are thermal wax or bi-metal spring idle or auxiliary air valves like the one below. Internally expanding and contracting material opens and closes air valves, providing increased air flow and engine rpm when cold for warmup. Speeduino functions to enrich the cold engine and adjust for the additional air, in the same way it would if you opened the throttle slightly.
<img src="http://i.imgur.com/I9Wc9p2.png" width="150px" />
Other examples of stand-alone valves are simple On/Off valves as shown in the next section, controlled by inexpensive thermal switches like these:
<img src="http://i.imgur.com/YImLboR.png" width="150px" /> <img src="http://i.imgur.com/nHEt5a5.png" width="150px" /> <img src="http://i.imgur.com/E13Z9Op.png" width="150px" />
### On/Off
This is a simple digital on/off "switch" output by Speeduino that triggers at a selected temperature. It is intended to control an on/off fast idle valve as found in many older OEM setups, or an open/closed solenoid-type valve that is chosen for the purpose. In addition to OEM idle valves, examples of valves popular for re-purposing as on/off idle valves are larger vacuum, breather, or purge valves, and even fuel valves. Idle speed adjustment is generally set only once, with an in-line adjustable or fixed restrictor, pinch clamp, or other simple flow-control method.
<img src="http://i.imgur.com/yu5YIbY.png" width="150px" />
<img src="http://i.imgur.com/rAYzaop.png?1" width="150px" />
<img src="http://i.imgur.com/wUvNNwm.png?1" width="150px" />
*Note: On/Off valves can be used in many ways to increase or decrease air flow for various idle purposes in-addition to warm-up. Examples are use as dashpot valves to reduce deceleration stalling, idle speed recovery for maintaining engine speed with accessory loads such as air conditioning, or air addition for specific purposes such as turbo anti-lag air control. See [Generic Outputs](Generic_Outputs "wikilink") for control information.*
### PWM
While similar in construction to many solenoid on/off valves; [PWM](https://www.arduino.cc/en/Tutorial/PWM) idle valves are designed to vary the opening, and therefore flow through the valve, by PWM valve positioning.
#### Open-loop Duty Cycle Control
Speeduino currently operates PWM valves in open-loop, effectively creating an on/off valve with adjustable flow. While the PWM duty cycle (DC) adjustment affects engine rpm, the adjustment is for valve opening, and therefore airflow and rpm are affected differently under various conditions. Note some idle valves default with no PWM signal to the open position, others closed, and some partially-open that close then re-open with increasing PWM DC. Be sure to research or test your valve type for proper operation.
#### PWM Settings
Settings in TunerStudio include selecting PWM idle control, temperature and DC settings for warmup, and PWM DC during cranking under the following selections:
<center>
<img src="http://i.imgur.com/Po5bOuD.png?1" width="350px" />
</center>
Under Idle control type, PWM is selected:
<center>
<img src="http://i.imgur.com/HCMdz9g.png" width="350px" />
</center>
The temperature-versus-DC is selected under the Idle - PWM Duty Cycle selection. Note the relationship between temperature and PWM DC can be altered by simply moving the blue dots in the curve, or by selecting the table for manual entry as shown here:
<center>
<img src="http://i.imgur.com/USptRVr.png" width="450px" />
</center>
Some engines prefer additional airflow during cranking for a reliable start. This air can be automatically added only during cranking by using the Idle - PWM Cranking Duty Cycle settings. Once the engine starts and rpm rise above the set maximum cranking rpm, the idle control switches to the previous warmup settings. Note the relationship between coolant temperature during cranking and PWM DC can be altered by simply moving the blue dots in the curve, or by selecting the table for manual entry as shown here:
<center>
<img src="http://i.imgur.com/jXursvf.png?1" width="450px" />
</center>
***NOTE:** Every engine, valve type and tune is different. Suitable settings must be determined by the tuner. Do not infer any tuning settings from the images in this wiki. They are only examples.*
Both 2 and 3 wire PWM idle controllers are supported. In general, the 3 wire models will provide a smoother response than the 2 wire ones, but the difference is not always significant. For 3 wire valves, 2 of the Aux outputs will be required.
<center>
<img src="http://i.imgur.com/QfDesZC.png" width="150px" />
</center>
### Stepper Motors
Stepper motor idle controls are very common on GM and other OEM setups. These motors typically have 4 wires (bi-polar). They must be driven through power transistors or a driver module, such as the [DRV8825 stepper motor driver](https://www.pololu.com/product/2133) optional to the v0.4 board. These driver modules can be purchased inexpensively from a variety of vendors on sites such as eBay, Amazon, etc.
Most stepper idle valves function by turning a threaded rod in and out of the valve body in a series of partial-turn steps, increasing or decreasing airflow around the plunger (on end of valve below), and into the engine. The idle airflow bypasses the primary throttle body:
<img src="http://i.imgur.com/ZAhTLrs.png" width="150px" />
Example of a generic DRV8825 driver module on a v0.4 board:
<img src="http://i.imgur.com/nHMXFNK.png" width="150px" />
Note the board is mounted at a standoff for air circulation and cooling:
<img src="http://i.imgur.com/L65i6z1.png" width="150px" />
The DRV8825 motor outputs are labeled as A2-A1-B1-B2, and the wiring connection examples are to this labeling. Check your schematics for the output connections that route to these DRV8825 outputs:
<img src="http://efistuff.orgfree.com/images/DRV8825_Motor_Wiring.png" width="150px" />
Examples of wiring to the DRV8825 driver:
<img src="http://efistuff.orgfree.com/images/IAC_DSM_95-99.png" width="150px" />
The GM "screw-in" style used 1982 to 2003 on many models:
<img src="http://efistuff.orgfree.com/images/IAC_GM_82-03.png" width="150px" />
#### Stepper Driver Current Adjustment
The DRV8825 stepper driver module includes a potentiometer (adjustable resistor) indicated by the yellow arrow in the image below. The potentiometer is used for setting the driver's maximum current output limit. Because Speeduino uses full-step operation, the current limit is not critical to protect the module, but should be adjusted to the module's maximum value for best operation of most automotive stepper IACs.
<img src="http://i.imgur.com/1U3IQgF.jpg" width="150px" />
You will need a multi-meter or volt-meter to make the adjustment as outlined here. In order to set the potentiometer to maximum current before first use, ensure power to the module is OFF, then gently turn the potentiometer dial clockwise to the internal limit. **Do not force the adjustment beyond the internal stop.** Power-up Speeduino with 12V, and use the meter to test the voltage between the center of the potentiometer and any 12V ground point. Note the voltage reading. Power-down and repeat the test, this time turning the potentiometer counter/anti-clockwise gently to the internal limit. The test direction that resulted in higher voltage is the correct setting for the module.
*Note: Original Pololu modules are typically adjusted clockwise for maximum voltage. However, clone modules may be either clockwise or counter-clockwise, which makes this testing necessary.*
The module's rated *continuous* current is up to 1.5A. While the module can supply a peak of 2.2A of current; in full-step mode and with the potentiometer adjusted to this position, the driver is limited to approximately 70% of full current, or approximately 1.5A.
#### Stepper Settings
Settings in TunerStudio include selecting stepper idle control, temperature and step settings for warmup, and open steps during cranking under the following selections:
<center>
<img src="http://i.imgur.com/hC15oxv.png" width="450px" />
</center>
Under Idle control type, stepper is selected. The basic stepper operational settings are also located in this window:
<center>
<img src="http://i.imgur.com/fHgI86M.png?1" width="450px" />
</center>
**Step time:** This is how long (in ms) that the motor requires to complete each step. If this is set too low, the ECU will be trying to make the next step before the previous one is completed, which leads to the motor 'twitching' and not functioning correctly. If this is set longer than needed, the system will take longer to make each adjustment, which may lead to idle fluctuating more than desired. Typical values are usually 2ms - 4ms. The common GM stepper motor requires 3ms.
**Home Steps:** Stepper motors must be 'homed' before they can be used so the that ECU knows their current position. You should set this to the maximum number of steps that the motor can move.
**Minimum steps:** In order to allow a smooth idle that isn't continually fluctuating, the ECU will only move the motor if at least this many steps are required. Typical values are in the 2-6 range, however if you have a noisy coolant signal line, this value may need to be increased.
The temperature-versus-steps is selected under the Idle - Stepper Motor selection. Note the relationship between temperature and motor steps can be altered by simply moving the blue dots in the curve, or by selecting the table for manual entry as shown here:
<center>
<img src="http://i.imgur.com/kwFa7bT.png" width="350px" />
</center>
Some engines prefer additional airflow during cranking for a reliable start. This air can be automatically added only during cranking by using the Idle - Stepper Motor Cranking settings. Once the engine starts and rpm rise above the set maximum idle rpm, the idle control switches to the previous warmup settings. Note the relationship between coolant temperature during cranking and motor steps can be altered by simply moving the blue dots in the curve, or by selecting the table for manual entry as shown here:
<center>
<img src="http://i.imgur.com/yyqIs7Q.png" width="350px" />
</center>
***NOTE:** Every engine, valve type and tune is different. Suitable settings must be determined by the tuner. Do not infer any tuning settings from the images in this wiki. They are only random examples.*
***NOTE:** Refer to the [Pololu video](https://www.pololu.com/product/2133/faqs) for instructions to set the DRV8825 driver current level to maximum for most automotive full-step stepper motors.*
#### Examples
| Motor | Step time | Home steps |
|------------|-----------|------------|
| GM 4-wire | 3 | 250 |
| DSM 4-wire | 4 | 270-320 |
***NOTE:** While normal DSM stepper function is seen at room temperatures at 3ms, step skipping occurs just under that speed. Very cold temperatures may cause skipping, thus the recommendation of 4ms. Test for the most suitable speeds for your setup.*

View File

@ -0,0 +1,17 @@
Overview
--------
Settings
--------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/constants/injectorChars.png" />
</center>
| Variable | Typical value | Comment |
|-----------------------------|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Injector Open Time | 1.0 - 1.5 | The time the injector takes to open completely once triggered, plus the time necessary to close. This is specific to each injector type and version. See [Fuel Calculation](Fuel_Calculation "wikilink") for how this value is used, and the [Tuning section](Tuning_section "wikilink") for adjustments to this value. |
| Injector Close Angles | 355 | This represents the angle, relative to each cylinders TDC, that the injector squirt will end. This can be varied per channel (Including for semi-sequential wiring), but the default value of 355 is suitable for most applications. |
| Injector Duty Limit | 85% | The injector opens and closes once per crank revolution so, taking into account the open time of the injector, the duty cycle is limited to avoid this exceeding the revolution time. A value of 85% is recommended, but a higher value can be used for faster opening injectors. Note that once this duty cycle limit is reached, it will not be exceeded as the fuel injector cannot close and reopen fast enough to supply more fuel. This may potentially cause lean conditions at high RPM. If hitting this limit, strongly consider whether larger injectors are required. |
| Injector Voltage Correction | 100% | The percentage the the injector pulse width is varied with changes in supply voltage. A value of 100% means no change to the pulse width. |

View File

@ -0,0 +1,5 @@
Launch Control
--------------
Flatshift
---------

41
configuration/O2.md Normal file
View File

@ -0,0 +1,41 @@
AFR/O2
------
AFR/O2 (for **A**ir:**F**uel **R**atio), dialog controls the closed loop fuel control, used for adjusting injector load based on input from an exhaust oxygen sensor (O2 sensor). In conjunction with the [AFR Table](AFR_Table "wikilink"), the closed loop AFR system will compare the actual O2 reading with the current target fuel ratio and make adjustments accordingly.
Use of a wideband sensor and controller is **strongly** recommended, however basic functionality is possible with a narrowband sensor if this is not available.
Note that closed loop fuel control is not a replacement for a poor tune. Many good configurations do not used closed loop control at all or only allow it very small adjustment authority.
Settings
--------
Speeduino supports 2 closed loop algorithms, each intended for different configurations:
1. Simple - A time based 'target chasing' algorithm where the amount of fuel adjustment is dependant on how long the reading has been lean or rich compared to the current target. This algorithm is best suited to narrowband sensors where only basic rich/lean information is available. In particular, this algorithm performs poorly if you have a fuel map that is not close to complete. If you have this enabled and are seeing oscillations in the pulse width and/or AFRs, even when cruising, then you should disabled closed loop control until the base fuel MAP is better tuned.
2. PID - This is the preferred closed loop algorithm and will provide better results when combined with a wideband sensor and tuned correctly.
### Common variables
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/o2_simple.png" />
</center>
- **Sensor type** - Narrowband or wideband, depending on hardware configuration. Narrowband sensor should be of the 0-1v type, wideband sensors should have a 0-5v signal. Wideband sensors need to be calibrated in the Tools-&gt;Calibrate AFR Table dialog
- **Algorithm** - See above for description of each algorithm available
- **Ignition events per step** - The AFR adjustment calculation will be performed every this many ignition cycles. Changes to closed loop adjustment typically have some lag before their impact is registered by the O2 sensor and increasing this value can take this lag into account. Typical values are 2-5.
- **Controller step size** -
- **Controller Auth** - The maximum % that the pulse width can be changed through this closed loop adjustment. Recommended value is no more than 20%.
- **Correct above/below AFR** - The AFR range that closed loop adjustments will be applied within. This range is typically limited by the sensor and controller in use.
- **Active above Coolant** - Closed loop should only operate once engine is up to operating temperature. This value should be set to match the engines standard operating temp.
- **Active above RPM** - Closed loop adjustments should genrally not be made at idle. Use this value to specify when adjustment should begin being made.
- **Active below TPS** - Above this TPS value, closed loops adjustments will be disabled
- **EGO delay after start** - All O2 sensors require a warmup period before their readings are valid. This varies based on the sensor in use, but 15s is a safe value in most cases.
### PID only variables
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/o2_pid.png" />
</center>
- **P/I/D** - PID Proportional Gain, Integral and Derivative percentages.

View File

@ -0,0 +1,99 @@
Background
----------
The Arduino Mega platform is great in that it provides a low cost, low barrier to entry platform for projects. Unfortunately, these conveniences come with some disadvantages.
Specifically, in an effort to make the programming process as painless as possible, most (possibly all) versions of the Arduino Mega 2560 board will reset themselves when a new serial connection is initiated. Needless to say, it's pretty inconvenient for the computer controlling your engine to reboot if you're driving the car and the serial connection to your logger becomes unstable and has to reconnect (hint: the engine stops).
This feature will enable you to prevent that from happening.
Requirements
------------
Reset Control can be used as simply as setting some options and [connecting a wire](#Wiring "wikilink"). However, some options also require [updating the usb-serial bootloader](#Updating_the_Bootloader "wikilink") on the ATmega16U2 chip (if the board has one).
(TODO more details)
Options
-------
![<File:2018-02-27> 21 11 05-Reset Control.png](2018-02-27_21_11_05-Reset_Control.png "File:2018-02-27 21 11 05-Reset Control.png")
The Speeduino firmware provides three options for preventing the Arduino from resetting *(**\*** indicates a [bootloader update](#Updating_the_Bootloader "wikilink") is required)*:
- Prevent When Running
- Disabled
- No reset control is enabled
- When the engine is running**\***
- As long as the engine is running, the Arduino will not automatically reset itself.
- The Control Pin will be held high as long as the engine is running.
- It will only be possible to update the Speeduino firmware when the car is not running or the Control Pin is otherwise held low.
- Prevent Always**\***
- The Control Pin is always held high.
- It will only be possible to update the Speeduino firmware if the Control Pin is held low by jumper, switch, or some other means.
- Serial Command
- Similar to "Prevent Always," except that no custom bootloader is required.
- The Control Pin will normally be held high.
- To update the Speeduino firmware, you will need to first send the character 'U' to it over the serial connection. This will let it know that an update is coming and it will reset itself upon receiving any more data.
Wiring
------
### Standard 16u2 Firmware or No 16u2
This is as simple as running a wire from the control pin to the reset pin on your Arduino.
### Custom 16u2 Firmware
The custom 16u2 firmware differs from the stock one in that it uses one of the 16u2's GPIO pins to recognize when the board should / should not be allowed to reset. The pin used is PB7, as illustrated.
![](Reset_control_16u2_pins.jpg "Reset_control_16u2_pins.jpg")
How you connect the control pin to PB7 is up to you, but if you are connecting from a pin on the Speeduino's proto area, you may wish to use right-angle pin headers on the Arduino to make separating the Speeduino shield from the Arduino MCU (also illustrated).
Updating the Bootloader
-----------------------
Using the "When the engine is running" and "Prevent Always" reset control modes requires updating the usb-serial firmware on your Arduino's ATmega16U2 chip (these modes are unavailable if your board uses something else to perform usb serial functionality, such as an FTDI or CH340 chip).
A hex file for the updated bootloader can be found in the following locations:
- In the [Speeduino Firmware download](Compiling_and_Installing_Firmware#Downloading_the_firmware "wikilink") under the "reference/bootloaders" directory
- In the Speeduino source on GitHub: [1](https://raw.githubusercontent.com/noisymime/speeduino/master/reference/bootloaders/Speeduino-usbserial-atmega16u2-Mega2560-Rev3.hex)
To perform the update, you will need a copy of [dfu-programmer](https://dfu-programmer.github.io/). Directions for installing dfu-programmer for Mac can be found [here](https://www.arduino.cc/en/Hacking/DFUProgramming8U2). It may also be possible to use Atmel's flip programmer but it has not been tested.
The procedure is as follows (directions are for Windows but are very similar for Linux and Mac):
1. Extract both dfu-programmer and the updated bootloader into the directory of your choice.
2. Plug your Arduino into a USB port and wait for the computer to recognize it.
3. Briefly short the 16U2's RESET and GND pins. This will cause the 16U2 to enter [DFU mode](https://www.arduino.cc/en/Hacking/DFUProgramming8U2).
4. If you are prompted by Windows to install a driver, do not let Windows install the driver automatically. Instead, browse to the .inf file that came with dfu-programmer.
5. Use the following commands to backup your existing usb-serial firmware and install the new one (prepend sudo on Mac and Linux):
1. `dfu-programmer` `atmega16u2` `read` `>` `arduino-usbserial-backup.hex`
2. `dfu-programmer` `atmega16u2` `erase`
3. `dfu-programmer` `atmega16u2` `flash` `Speeduino-usbserial-atmega16u2-Mega2560-Rev3.hex`
4. `dfu-programmer` `atmega16u2` `reset`
6. The bootloader update is complete. You should now disconnect and reconnect the Arduino to your computer.
In Windows, your Arduino will now appear as a generic USB Serial Device in the Device Manager so you will likely need to reconfigure TunerStudio to use the new port. If you like, you can check the "Bus reported device description" property in the device's Details tab to verify that "Speeduino Mega 2560" is shown.
Updating the Speeduino Firmware With "Serial Command" Selected
--------------------------------------------------------------
Performing a Speeduino firmware update using the Serial Command method is a multi-step process:
1. Using the serial terminal program of your choice (this was tested using [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/)), open a serial connection to your Speeduino. At this time, you may wish to enter a "?" to verify that the serial connection is working properly.
2. Enter "U" in the terminal. If all goes well, it should respond with the message "Comms halted. Next byte will reset the Arduino."
3. Without entering any more characters, close the serial terminal.
4. Finally, start the firmware upload. The Arduino should now reset and accept the firmware upload as normal.
(TODO: Screenshots)
Updating the Speeduino Firmware With the Updated 16U2 Bootloader Installed
--------------------------------------------------------------------------
If you have reset control set to "When engine is running," there is no special procedure required to update your Speeduino firmware. As long as the engine is not running, the Arduino will behave just as any other and you can update it the same way you would any other time.
If you have reset control set to "Always," you will either need to temporarily disable it from inside TunerStudio in order to update your Speeduino firmware.

View File

@ -0,0 +1,20 @@
Overview
--------
Speeduino includes a spark based rev limited with both hard and soft cuts.
The soft cut limiter will lock timing at an absolute value to slow further acceleration. If RPMs continue to climb and reach the hard cut limit, ignition events will cease until the RPM drop below this threshold.
**Note** As this is spark based limiting, fuel only installs cannot use the rev limiter functionality
Settings
--------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/revLimiter.png" />
</center>
- **Soft rev limit:** The RPM at which the soft cut ignition timing will be applied over.
- **Soft limit absolute timing:** Whilst the engine is over the soft limit RPM, the ignition advance will be held at this value. Lower values here will have a greater soft cut affect.
- **Soft limit max time:** The maximum number of seconds that the soft limiter will operate for. If the engine remains in the soft cut RPM region longer than this, the hard cut will be applied.
- **Hard rev limiter:** Above this RPM, all ignition events will cease.

View File

@ -0,0 +1,96 @@
Sensor Calibration
------------------
Before your Speeduino can correctly interpret the signals from the sensors, it must know which sensors you are using. Inputting this information into TunerStudio (TS) writes the correct calibration to your Speeduino. It is necessary to perform this step before you can effectively check your Speeduino build. Note that this is not tuning your system, but only telling it how to understand the signals from the sensors.
This should be completed after completing the Settings for your engine. Your computer must be connected to your Speeduino through TS to perform the calibrations.
------------------------------------------------------------------------
### MAP Sensor
Open the **Tools** menu: tools_menu
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/tools_menu.png" title="Fig. 1 Tools Menu" width="30%"/>
</center>
Select **Calibrate MAP**, the window below will open:
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/MAP_calibration.png" title="Fig. 2 MAP Calibration" width="40%"/>
</center>
Select your MAP Sensor from the drop down list. If you used the MAP sensor in the bill of materials, this will be the MPX4250A. If you are using another MAP or one from the engine manufacturer, select it from the list. Click **Burn** to send the information to your Speeduino.
------------------------------------------------------------------------
### Coolant and Intake Temperature Sensors
Open the **Tools** menu and select **Calibrate Thermistor Tables**:
The sensor selected will be the **Coolant Temperature Sensor**. Select your sensor from the **Common Sensor Values** drop-down list. This will place the correct values into the temperature and resistance charts and the Bias resistor value. If your sensor is not listed, see [Entering Custom Values](#Entering_Custom_Values "wikilink") below.
Note that the standard Speeduino build is to have a 2490 ohm bias resistor, which is standard for sensors used by most manufacturers. If your sensor requires another value, you may need to change resistor R3 to the correct value for your sensor. You can try overriding the Bias Resistor Value with 2490 ohms, but check to be sure your sensor reads correctly in TS.
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/CLT_calibration.png" title="Fig. 4 Coolant" width="40%"/>
</center>
The same calibration can then be performed for the Inlet Air Temperature (IAT) sensor by changing the **Sensor Table** to **Air Temperature Sensor**:
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/IAT_calibration.png" title="Fig. 5 Coolant" Intake Air Temperature width="40%"/>
</center>
Select your sensor from the **Common Sensor Values** drop-down list. This will place the correct values into the temperature and resistance charts and the Bias resistor value. Click **Write to Controller** to send this information to your Speeduino. If your sensor is not listed, see [Entering Custom Values](#Entering_Custom_Values "wikilink") below.
Note that the standard Speeduino build is to have a 2490 ohm bias resistor, which is standard for sensors used by most manufacturers. If your sensor requires another value, you may need to change resistor R3 to the correct value for your sensor. You can try overriding the Bias Resistor Value with 2490 ohms, but check to be sure your sensor reads correctly in TS.
------------------------------------------------------------------------
#### Entering Custom Values
Some sensors are not listed in the tables for the common sensors. If yours is not listed, you will need to enter the values into the fields your self. You will need two bits of information: 1. The value of your bias resistor (2490 if you used the standard values in the Bill of Materials, or you have a pre-made Speeduino), and 2. The resistance of your sensor at three different temperatures.
The sensor resistance can be generated by measuring the resistance of the sensor in ambient air, putting it in a freezer and then in boiling water. You will need a good multimeter and an accurate thermometer that measures -10C to 100C (14°F to 212°F). It is best to use jumper wires to allow the resistance of the sensor to be read without holding it in your hand (some sensors react quickly to temperature changes). Some sensors react slowly to temperature changes, so allow the sensor at least 10 minutes to reach a stable temperature, and then record the temperature and resistance observed.
In the **Calibrate Thermistor Tables** screen, first ensure the correct temperature unit is selected (**F** or **C**). Then record the bias resistor value and the temperature / resistance values in the fields. Click **Write to Controller** to send this information to your Speeduino.
Note that his procedure can also be used to enter the values of resistance on simulators for testing and troubleshooting. Two points should be remembered if you use simulator values first, never enter zero for resistance. Although your simulator may go to zero, enter some small value above zero, say 10 ohms. Entering zero leads to false values in the firmware. Second remember to enter the correct sensor values before installing your Speeduino!
------------------------------------------------------------------------
### Oxygen Sensor Calibration
Open the **Tools** menu again and select **Calibrate AFR Table**:
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/O2_calibration.png" title="Fig. 7 AFR Calibration" width="30%"/>
</center>
Select your **Oxygen Sensor sensor** from the **Common Sensor Values** drop-down list. If you are using a custom Oxygen Sensor controller, select **Custom Linear WB** and then you can enter the values for **Volts** and **AFR** at two points (should be published in the controller manual).
Click **Write to Controller** to send this information to your Speeduino.
This will set up your Speeduino so that you can also run simulations to check your build before installation.
------------------------------------------------------------------------
### Throttle Position Sensor
Before Speeduino can work correctly with your engine, you will also need to Calibrate the Throttle Position Sensor. This must be done using the throttle body and TPS used on the engine. It is best to do this while the throttle body is installed on the engine.
Open the **Tools** menu and select **Calibrate TPS**:
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/tuning/TPS_calibration.png" title="Fig. 8 TPS Calibration" width="30%"/>
</center>
With the throttle closed, click the **Get Current** button beside the Closed Throttle ADC count field. Then move the throttle to full open and hold it there. Then click the **Get Current** button beside the Full Throttle ADC count field.
Click **Accept** to save the information to Speeduino.
------------------------------------------------------------------------
------------------------------------------------------------------------

View File

@ -0,0 +1,60 @@
Overview
--------
The Spark settings dialog contains the options for how the ignition outputs will function, including which of the 4 IGN outputs are used and how. They are critical and incorrect values will result in an engine not starting and in some cases damage to hardware is possible. This dialog also contains a number of options for fixing the ignition timing for testing and diagnosis.
Please ensure you have reviewed these settings prior to attempting to start your engine.
Settings
--------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/ignition/spark_settings.png" width="550" />
</center>
- **Spark Output mode** - Determines how the ignition pulses will be outputted and is very specific to your ignition wiring. **Note that no matter which option is selected here, ignition signals ALWAYS fire in numerical order (ie 1-&gt;2-&gt;3-&gt;4) up to the maximum number of outputs**. The firing order of the engine is accounted for in the wiring order.
- **Wasted Spark** - Number of ignition outputs is equal to half the number of cylinders and each output will fire once every crank revolution. One spark will therefore take place during the compression stroke and the other on the exhaust stroke (aka the 'wasted' spark). This method is common on many 80s and 90s vehicles that came with specific wasted spark coils, but can also be used with individual coils that are wired in pairs. Wasted spark will function with only a crank angle reference (Eg a missing tooth crank wheel with no cam signal)
- **Single Channel** - This mode sends all ignition pulses to IGN1 output and is used when the engine contains a distributor (Typically with a single coil). The number of output pulses per (crank) revolution is equal to half the number of cylinders.
- **Wasted COP** - This is a convenience mode that uses the same timing as the 'Wasted Spark' option, however each pulse is sent to 2 ignition outputs rather than one. These are paired IGN1/IGN3 and IGN2/IGN4 (ie When IGN1 is high, IGN3 will also be high). As this is still a wasted spark timing mode, only crank position is required and there will be 1 pulse per pair, per crank revolution. This mode can be useful in cases where there are 4 individual coils, but running full sequential is either not desired or not possible (Eg when no cam reference is available).
- **Sequential** - This mode is only functional on engines with 4 or fewer cylinders.
- **Rotary** - See below for full detail
- **Cranking advance** - The number of absolute degrees (BTDC) that the timing will be set to when cranking. This overrides all other timing advance modifiers during cranking.
- **Spark output triggers** - <font color='red'>**THIS IS A CRITICAL SETTING!**</font>. Selecting the incorrect option here can cause damage to your igniters or coils. Specifies whether the coil will fire when the ignition output from Speeduino goes HIGH or goes LOW. The VAST majority of ignition setups will require this to be set **GOING LOW** (ie the coil charges/dwells when the signal is high and will **fire** when that signal goes low). Whilst GOING LOW is required for most ignition setups, there are some configurations that perform the dwell timing on the ignition module and fire the coil only when they receive a HIGH signal from the ECU.
- **Fixed Angle** - This is used to lock the ignition timing to a specific angle for testing. Setting this to any value other than 0 will result in that exact angle being used (ie overriding any other settings) at all RPMs/load points, except during cranking (Cranking always uses the above Cranking Advance setting). This setting should be set to 0 for normal operation.
### Rotary modes
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/ignition/rotary_settings.png" width="550" />
</center>
Speeduino currently only supports the ignition configuration used on FC RX7 engines. Support for FD and RX8 ignition setups is in development. The leading / trailing split angle can be set as a function of the current engine load.
- **FC** - Outputs are configured for the Leading/Trailing setup that was used on FC RX7s. Wiring is:
<!-- -->
- **IGN1** - Leading (wasted) sparks
- **IGN2** - Trailing spark
- **IGN3** - Trailing select
- **IGN4** - Not used
<li>
**FD** - Uses the same wasted spark signal for both leading sparks as FC, but individual signals for the trailing sparks. Wiring is:
</li>
- **IGN1** - Leading (wasted) sparks
- **IGN2** - Front rotor trailing
- **IGN3** - Rear rotor trailing
- **IGN4** - Not used
<li>
**RX8** - Individual outputs are used for each spark signal. Wiring is:
</li>
- **IGN1** - Front rotor leading
- **IGN2** - Rear rotor leading
- **IGN3** - Front rotor trailing
- **IGN4** - Rear rotor trailing
</ul>

View File

@ -0,0 +1,41 @@
Staged Injection
----------------
Speeduino has the ability to control a secondary fuel stage for engines that have 2 sets of injectors, typically of different capacities. There are few stock engines that come with secondary injectors, the notable exception being many Mazda rotaries. Secondary staged injection is also a common modification, used whenever large injectors are required, but where it is desirable to keep smaller injectors for smoother low RPM performance.
### Configuration
No matter which control strategy is chosen, you must enter the sizing of the primary and secondary injectors in order to allow Speeduino to know the split in the overall fuelling.
<font color="red">**CRITICAL**</font> - The req-Fuel value in the [Engine Constants](Engine_Constants "wikilink") MUST be updated when staged injection is turned on. **When staging is in use, the value entered in the req_fuel calculator MUST be equal to the sum of both the primary and secondary injector sizes**
Failure to set these values correctly will result in excessive rich or lean conditions.
**Eg:**
**Primary Injectors :** 300cc
**Secondary Injectors :** 700cc
**Value entered into the req_fuel calculator :** 1000cc
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/staging/staging_settings.PNG" width="400" /> <img src="https://raw.githubusercontent.com/speeduino/wiki/master/staging/staged_reqfuel.PNG" width="400" />
</center>
### Control methods
Speeduino provides 2 staging control modes, each with their own strengths and weaknesses. In most cases it is recommended to start with the Automatic mode, which only requires tuning of the standard VE table, and reviewing to see if you get the desired outcome. Only if this can't be tuned to give a satisfactory fuel split would changing to the manual table tuning be recommended.
#### Table control
Table control allows the use of a manual 8x8 map that indicates what percentage of the fuel load will be performed by the **secondary** injectors
0% = Secondary injectors disabled
100% = Primary injectors disabled
It is important to note that the values in this table do NOT correspond directly to the split of the duty cycle or pulse width. They represent the percentage of the total fuel load that the secondaries will be asked to perform. The affect this value has on the pulse width depends on the ratio of the primary and secondary injector capacities.
One disadvantage of the table tuning method is that it does not allow for the full fuel load of the primary and secondary injectors to be used simultaneously. As the table is a split of the total fuel load, as one set of injectors performs more, the other will perform less.
#### Automatic staging
Speeduino has an automatic staging method that takes into account the full capacity of the injectors (ie the sum of the 2 injector stages) and will perform a split of these itself. With this method, the user can simply tune the VE table in the same manner as if only a single set of injectors were used and the system takes care of the rest.
In this mode, Speeduino will attempt to use the primary injectors up to their 'Injector Duty Limit' (As configured in the [Injector Characteristics](Injector_Characteristics "wikilink") dialog. When staging is being used, it is recommend that this limit should be no higher than 85%. Once the primary injectors reach this duty limit, Speeduino will begin to perform any further fueling from the secondary injectors. In this way, the VE table is all that is required for tuning as the system will take care of allocating the current fuel load to the best injectors.
Note that the dead time of the 2 sets of injectors is currently assumed to be the same. This may be altered in future firmwares if required (Post a feature request if needed).

View File

@ -0,0 +1,34 @@
Overview
--------
One of the most critical components of an EFI setup is the Crank Angle Sensor (CAS) and how it is used by the ECU. The Trigger settings dialog is where the trigger configuration is defined and it is vitally important to have this correct before trying to start your engine.
With incorrect settings, you may have issues getting sync or see erratic RPM readings.
Note that many of the settings on this dialog are dependant on your configuration and it is therefore normal that some options maybe greyed out.
Trigger Settings
----------------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/constants/triggerSettings.png" width="40%" />
</center>
- **Trigger Pattern** - The pattern used by the crank/cam sensor setup on your engine. For a full list of the supported patterns, see: <https://speeduino.com/wiki/index.php/Decoders>
- **Primary Base teeth** - For patterns where the number of teeth are variable (missing tooth, dual wheel etc), this number represents the number of teeth on the primary wheel. For missing tooth type wheels, this number should be the count as if there were no teeth missing.
- **Primary trigger speed** - The speed at which the primary input spins. It is closely related to the Primary Base teeth setting and indicates whether that number of teeth passes the sensor once every crank revolution or every cam revolution.
- **Missing teeth** - If using the missing tooth pattern, this is the size of the gap, given in 'missing teeth'. Eg 36-1 has 1 missing tooth. 60-2 has 2 missing teeth etc. The missing teeth **MUST** be all located in a single block, there cannot be multiple missing tooth gaps around the wheel.
- **Secondary teeth** - As above, but for the secondary input. This input is always assumed to run at cam speed.
- **Trigger angle multiplier** -
- **Trigger angle** - The angle of the crank, **After Top Dead Centre (ATDC)**, when tooth \#1 passes the sensor on the primary (crank) input. This setting is critical for Speeduino to accurately know the current crank angle. See section below ('Finding tooth \#1 and trigger angle') for further information on how to determine this value
### Trigger options
- **Skip revolutions** -
- **Trigger edge** -
- **Secondary trigger edge** -
- **Trigger filter** -
- **Re-sync every cycle** -
Finding tooth \#1 and trigger angle
-----------------------------------

19
configuration/Warmup.md Normal file
View File

@ -0,0 +1,19 @@
Overview
--------
The Warm Up Enrichment (WUE) dialog contains settings related to the period after start (ie not cranking) but before the engine has reached normal operating temperature. It allows for modifications to fueling during this time to
Settings
--------
<center>
<img src="https://raw.githubusercontent.com/speeduino/wiki/master/warmup/warmup.png" height="500" />
</center>
### Warmup curve
This curve represents the additional fuel amount to be added whilst the engine is coming up to temperature (Based on the coolant sensor). The final value in this curve should represent the normal running temperature of the engine and have a value of 100% (Representing no modification of the fuel from that point onwards).
### Afterstart Enrichment
Afterstart Enrichment (ASE) is a seperate fuel modifier that operates over and above the WUE for a fixed period of time after the engine first starts. Typically this is a 3 - 10 second period where a small enrichment can help the engine transition smoothly from cranking to idling.