Giter VIP home page Giter VIP logo

speeduino's People

Contributors

0x15e avatar 155ac avatar adamg-86 avatar adbancroft avatar autohome2 avatar brunob45 avatar celturbo avatar connermclaughlin avatar daedalusz avatar dantob avatar deionsi avatar dependabot[bot] avatar diy-efi avatar ileeezi avatar jonbills avatar karniv00l avatar larmicfre avatar mike501 avatar moysiewrx avatar mumme74 avatar muuris avatar noisymime avatar pazi88 avatar rafolg avatar ric355 avatar scudderfish avatar shiznit304 avatar tbamax avatar tjeerdie avatar vitorboss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

speeduino's Issues

Addition of VVT

I believe it would be a great addition to the speeduino if closed loop VVT could be added.
I personally have a Ford ST170 engine and am wiring it up with another ECU which has integrated VVT control.
I can create a small harness adapter and swap that out for a Speeduino and do testing at my end.

I have been reading about it over the weekend and found these resources which might be helpful.

I believe a basic initial implementation with just variable P, I and D values would be good.
Then maybe once some are tested out presets added with known good values.

http://www.ni.com/tutorial/13609/en/

http://www.turbosport.co.uk/showthread.php?t=478299

https://www.egr.msu.edu/zhug/Journal%20Articles/Modeling%20and%20control%20of%20an%20electrical%20variable%20valve%20timing%20actuator.pdf

https://www.miataturbo.net/megasquirt-18/itt-ms3x-vvt-settings-tuning-64590/


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Renix Decoder(44-2-2/66-2-2-2)

Decoder for Early Jeeps some volvos and renaluts with Renix MPFI.
This trigger mode came in a four cylinder variation which used 44 base teeth with two gaps 180
degrees apart, and a six cylinder version with 66 base teeth and three gaps 120 degrees apart.
image


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Analog ISR mess MAP readings

Unfortunately I don't have an engine running Speeduino yet, but I made some changes in the interrupt code on sensors.h.

ISR(ADC_vect)
{
  byte nChannel = ADMUX & 0x07;
  int result = ADCL | (ADCH << 8);

  BIT_CLEAR(ADCSRA, ADEN); //Disable ADC for Changing Channel (see chapter 26.5 of datasheet)

  #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
    if (nChannel==7) { ADMUX = 0x40; }
  #elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
    if(ADCSRB & 0x08) { nChannel += 8; }  //8 to 15
    if(nChannel == 15)
    {
      ADMUX = 0x40; //channel 0
      ADCSRB = 0x00; //clear MUX5 bit
    }
    else if (nChannel == 7) //channel 7
    {
      ADMUX = 0x40;
      ADCSRB = 0x08; //Set MUX5 bit
    }
  #endif
    else { ADMUX++; }
  AnChannel[nChannel] = result;

  BIT_SET(ADCSRA, ADEN); //Enable ADC
}

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Easy: RPM-dependent TPSdot AE

Looking to scale down AE as RPM increases, similar to feature in MS. At low RPMs, higher AE is needed than at high RPM. Currently I can only either start from a stop correctly (with no lean spot on throttle open) but go pig-rich/sputter when accelerating while in-gear or vice versa.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

PROBLEM WITH CONNECT THE FIRMWARE

HEY BROTHER , PLEASE HELP ME...
I HAVE A PROBLEM WITH CONNECT THE FIRMWARE TO ENTER IN THE (MEGASQUIRT SOFTWARE) THE (IDE) DETECT A PROBLEM , BUT NOT IS OF THAT YOU HAVE IN YOUR PAGE.

I HAVE A DCCDUINO MEGA 2560 AND THE CONFIGURATION IN IDE ITS OK , I CAN UPLOUD OTHER SKETCH FROM THE LIBRARY, EXAMPLE WITH BLINK ITS OK.. PLEASE SOLVE THE PROBLEM CODE OR GIVE ME A GOOD PRICE FOR ALL ARDUINO ECU FULL MADE!
THANK YOU, SORRY BY MY ENGLISH I AM OF PUERTO RICO (SPANISH)

GOOD WEEK,
BEST REGARDS!!!

Won't detect trigger

I've been having trouble getting Speedy to recognize the basic distributor trigger.

If I turn the key and immediately crank the engine, it always detects the trigger.

If I turn the key on and wait a few seconds, it never detects the trigger.

Never fails, I tried it probably 40 times back and forth. Then cranked it immediately upon key turn 10 more times and everytime it synced. Video below shows this clearly. For this video, recall that I am only trying to get the trigger to work reliably, the distributor and carb are running the engine.

First I turn the key and crank it. You can see the injector lights flashing, showing trigger sync. Second, I turn the key, wait a few seconds and crank it. You can hear the FP relay cycle for the priming pulse and then when I start the engine you can hear the FP relay clicking. No injector lights, and TS reports no teeth in the logger and no RPM.

I do this a couple more times in the video to show the pattern.

https://youtu.be/owCFiOiRrDU

Pretty sure this isn't expected behavior, hence the report.

Original thread here: http://speeduino.com/forum/viewtopic.php?f=19&t=1140&p=18277#p18277

Edit to add: Replicated the same on two 0.3.3 shields and one 0.4.2.

Ignition/fuel only setup at compile time

Setup a preprocessor macro(s) to have the timers do either all injectors or all ignitors with a total of 9 timer compares. There could also have a setup to have a split at different number of compares. For example 8 injectors for a full sequential v8 and 1 compare for the distributed ignition coil.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Analog readings

Using my last comment on issue #51

By default, the successive approximation circuitry requires an input clock frequency between 50kHz and 200kHz. If a lower resolution than 10 bits is needed, the input clock frequency to the ADC can be as high as 1000kHz to get a higher sample rate.
ATmega640/V-1280/V-1281/V-2560/V-2561/V [DATASHEET] page 271
version 2549Q–AVR–02/2014
Using the datasheet as base the ADC prescaler should be clk/128 to output a 125KHz clock os ADC successive approximation circuitry

I think is better to use analog interrupt handle. Make a struct named AnChannel with all 16 channels.

ADMUX = 0x01000000; //Starting at channel 0
ADCSRA = 0x11101111; // ADC Interrupt Flag enabled and prescaler selected to clk/128
ADCSRB = 0x00000000; //ADC Auto Trigger Source is in Free Running mode
//ADCSRB = 0x00000100; //ADC Auto Trigger Source is Timer/Counter0 Overflow
//ADCSRB = 0x00000110; //ADC Auto Trigger Source is Timer/Counter1 Overflow
//
ISR (ADC_vect)
{
if((ADMUX & 0x00100000) //8 to 15
{ AnChannel(8+(ADMUX & 0x0000111)) = ADCL | (ADCH << 8); }
else
{ AnChannel(ADMUX & 0x0000111) = ADCL | (ADCH << 8); }
if((ADMUX & 0x01100111) //channel 15
{ ADMUX = 0x01000000; }//channel 0
else if ((ADMUX & 0x01000111) //channel 7
{ ADMUX = 0x01100000; }//channel 8
else
{ ADMUX++; }
ADCSRA = 0x11101111; // ADC Interrupt Flag enabled and prescaler selected to clk/128
}
//Informations on pages 281 to 287 at 2549Q–AVR–02/2014 datasheet.

This will speedup the analog conversions, at prescaler selected to clk/128 will run at 125KHz(limit due to page 271), is 8ms continuous conversion interrupt.

Triggering for VW AEX engine.

I want to convert my car from the original Bosch MP 9 ecu to speeduino. The only problem that I seem to have is that the OEM trigger design has an Optical sensor on the distributor with four teeth. One tooth is 6 degrees longer and that marks the #1 cylinder and to be exact the 72 degrees BTDC.

Yours Kostas


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Typos in speeduino.ini

There's a typo in speeduino.ini.
When you go to Tuning -> Acceleration Wizard you can see "Accel Time(ms)", but when you hold your mouse over the "?", the text shown is "Duration for accel enrichment(s)." So seconds or milliseconds?

Also, the window is called "Acceleration Enrichment", but in the menu it shows as "Acceleration Wizzard".

Increase squirts-per-cycle

Speeduino users could benefit from more than 1 or 2 squirts-per-cycle for a number a useful reasons.

Beyond the obvious potential for improved fuel distribution in certain engines and setups; ultimately, semi-automated setting of injector latency (dead time), voltage compensations, and other important functions could stem from this.

General pinouts incorrect on the HC-01 and HC-02 and BoostOut pins

Hi all,

I recently connected the fuel pump and thermofan to the speeduino board V0.4.2.
I tried to load the Dec16.zip firmware from the www.speeduino.com web page (outdated/different) and found that the firmware on the Wiki was different, especially the pin assignments in the Utils.ino file.

I uploaded the firmware from the wiki, and started to trouble shoot why the Fuelpump and Thermofan wouldn't work when connected to the pins 14 and 15 on tue IDC40 connector. These ar slow current Relay switching pins, however these did absolutely nothing on the scope. I was then advised to use the HC (high current outputs 1 and 2) and did this by changing the Utils.ino file pins to read pinD4 and PinD5 (arduino pins) and then the same changes inside Tuner Studio - the thermofan i managed to get working correctly by setting it up on Pin5 inside Tuner Studio -

The fuel pump however - wouldn't work. Josh then replied to my PM and told me to use PinD4 on the arduino to connect to IDC40 Pin38 - this is incorrect, D4 connects to IDC40 Pin36.

I am now running the following successfully:-

  1. PinD4 connected to IDC40 Pin35 for the Fuel Pump output - Tuner studio pin set to pin7 ---
  2. PinD5 connected to IDC40 pin37 for the thermofan output - Tuner studio pin set to Pin5 ---

No matter what pin combination i use to get the boost control or VVT or Idle PWM or Idle Stepper to work, nothing will....... I have tried the IDC40 pins 34, 36 and 38 with no luck. I have checked the schematic off the WIKI and it says completely different pin connections versus Arduino pin connections.

I would like to use the following features on my ECU but cannot seems to get these to work at all -

  1. Injectors (sequential 4cyl)
  2. ignition sequential ( 4cyl)
  3. Thermo Fan
  4. Fuel Pump
  5. VVT
  6. Idle control PWM
  7. Idle control Stepper (second car)
  8. Boost control
  9. Launch control
  10. O2 sensor 5wire wide band LSU4.9
  11. Flex fuel

Can someone possibly shed some light on this??


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

odd signature

The latest version seems to have back dated the signature to sept 2016? In globals

AFR/O2/EGO correction step and limit

AFR/O2 appears to have two important issues. First is that total control authority ("Controller Auth +/-") does not limit the correction to the maximum percent entered, assuming an entry % should limit total O2/EGO fuel corrections to that % of the current VE value in any case. Second, the control is unrestrained by increment, so corrections are to the full extent it wants to go, with no incrementing toward that value — e.g., settings of 5% authority and increment of 1% (no existing setting) should have it step in 1% increments with each step interval, with a limit of 5% maximum allowed correction.

Reasons for these improvements are many and clear, with controlled correction response and limited to avoid over-control, such as adding unlimited fuel during over-rich but lean (indicated) misfire conditions. Improvements should apply to simple correction and could apply with benefits to PID correction.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Some ideas to improve the speed

Hello,

I'm new at Speeduino and i have to admit that i don't understand really much, but i will try to help to make it better.

Now i will tell u, which ideas i have.

  1. Increase the speed from the loop. The speed of the loop is slow because there is an overhead, if u write something like:

while (true)
{
// do stuff...
}

The Loop will be in while and it will be much faster.

  1. Change from digitalWrite() to digitalWriteFast() thats an library which increase the speed by change the pin by manipulation.
    digitalWrite() = 6280ns
    digitalWriteFast() = 125ns
    I have read this article about the accuracy of the ignition timing.. maybe its makes better or did u have an correction factor for the slow pinchange.
    http://speeduino.com/forum/viewtopic.php?t=223

Question: Have u an idea why the ignition accuracy is jumping on high rpm?
-Stock micros resolution is to low?
-Stopping interrupts on some times are the reason?
Maybe its possible to fix the ignition accuracy to <1 degrees@8000RPM
I don't understand how u trigger the Ignition time, maybe u can help me by learning the code

  1. sensors.ino
    There are some code what i not understand:
    For all sensors(TPS,CLT,IAT,O2,Bat) u read it first time without doing something with the value:
    Example;
analogRead(pinTPS);
byte tempTPS = fastMap1023toX(analogRead(pinTPS), 0, 1023, 0, 255); //Get the current raw TPS ADC value and map it into a byte

Why is the code "analogRead(pinTPS);" in row 92?? I don't understand why u do that, because in the next row u read it again.

  1. Maybe its make faster if the ADC Ports run in free so the code will not be stopped just be interrupted.

I hope u understand me.

Best regards

tausday


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

fuel trim variable

Could a current status variable be added for the current fuel trim value in use for each channel?
I wish to add the value as a reading in the OBD2 output.
Perhaps it should be added to the TS stream with gauges too?


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Serial3 ordering

we need a way so that when a change of order that the data is sent to TS occurs that is doesnt break anyone using Serial3 output?
Perhaps we could have a seperate second list for the serial3 stream?


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

errors while compiling

Hi im getting the error messages bellow while trying to upload/compile not sure what to do, a bit of help would be appreciated

corrections:146: error: 'PID' does not name a type
corrections.ino: In function 'byte correctionsAFRClosedLoop()':
corrections:189: error: 'egoPID' was not declared in this scope
display.ino: At global scope:
display:6: error: 'Adafruit_SSD1306' does not name a type
display.ino: In function 'void initialiseDisplay()':
display:13: error: 'display' was not declared in this scope
display:26: error: 'display' was not declared in this scope
display:26: error: 'SSD1306_SWITCHCAPVCC' was not declared in this scope
display:29: error: 'WHITE' was not declared in this scope
display.ino: In function 'void updateDisplay()':
display:38: error: 'display' was not declared in this scope

pinStepper is not declared with pinMode

this two pins are not with PinMode declared to Output
pinStepperDir = 16; //Direction pin for DRV8825 driver
pinStepperStep = 17; //Step pin for DRV8825 driver

speeduino.ini typo

Acceleration Enrichment -> Decel Fuel Amount(ms) -> explanation says "0%" is complete cut and "100%" is no cut, but allowed values are from 0 to 25.5. Aside from that, 25.5 does not seem like percentage, but it can be, who knows, it is meant to be a "ms" value.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.