Subject: ARM EFI prototype
From: rotaryeng
Date: 8/17/2012, 8:13 AM
To: AAAA Put this in the To box


    I have ordered this ARM board to build a EFI system around, written in
 ARM
    compiled
    BASIC.

    It should be here in a few days DHL.

    We shall see how it goes.

    I should have something running in about a week.

    Paul Lamar

  Paul,

  Could you give us the info on this board so we could consider buying one
  also.

  I am thinking of some developments to our robotics products.

  Zoltan


  Here is the ARM board. It has infinite expansion potential.

  http://www.mikroe.com/eng/categories/view/16/arm-development-tools/

  I am working on two systems. I am working on a parallel approach as well
 with
  a real simple and old CPU (8051 not a C8051) controlling mostly hardware.

  If you are interested in the simple system let me know. It will very
 limited but it
  is quicker to build and program I hope. I will be testing some of the
 hardware in a
  few days. I'll know then if it is going to work.

  Paul Lamar


 Hey Paul,

 I was thinking about leaning on the way home tonight.  How about this.

 Put a rheostat/pot in the cockpit that adjusts a simple voltage divider
 so that the output can be varied across some arbitrary range.

 Connect said output to the A side of an A/D.

 Read the knob position from the D side of the A/D and use that as the
 multiplier for the pulse width generator.

 You wouldn't even have to use a high fidelity A/D.  Eight bits would be
 overkill for our purposes.  Set the knob in the center and use that as
 the base.  Higher is richer, lower is leaner.

   Mark LaPierre

 That is what I planned.

 Paul Lamar


There is a web page where a guy took the Arduino and made an EFI for his
lawnmower. He specified pulse width based on resistance, and connected a pot
to the gov of the mower. He also had another pot where he could fine tune
it the PW as he needed to.
Here is his Code:

/*
 LiquidCrystal display with:
 LCD 1 (0V) to arduino ground pin 14
 LCD 2 (5V) to arduino +5 V
 LCD 3 (V0) to output from potentiometer 10kOhm connected between +5 V and
GND
 LCD 4 (RS) to arduino pin 12
 LCD 5 (R/W) to arduino ground
 LCD 6 (E) to arduino pin 11
 LCD 11 (DB4), 12 (DB5), 13 (DB6), 14 (DB7) on arduino pins 7, 8, 9, 10
 LCD15 (LED+) through resistor 12 Ohm to arduino +5 V
 LCD16 (LED-) to arduino ground
 */



#include <LiquidCrystal.h
#include <Servo.h
LiquidCrystal lcd(12, 14, 11, 7, 8, 9, 10);

int InjectorPin =  13;    // Control chip to Injector connected to digital
pin 13
int potpin = 0;           // analog pin used to connect the potentiometer
for injector pulse
int Govpin = 5;           // analog pin used to connect the potentiometer
for Gov Value
int val;
int Govval;
int UpdatePause;
void setup()
  {
  BootMSG();
  pinMode(InjectorPin, OUTPUT);  // initialize the digital pin as an output:
}

void loop()
  {

  Govval = analogRead(Govpin);    // reads the value of the potentiometer
(value between 0 and 1023)
  Govval = map(Govval, 0, 1023, 1,1000); // scale it 1 to 1000  )

  val = analogRead(potpin);            // reads the value of the
potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 20);     // scale it to use (0ms to 20ms pulse
)

  digitalWrite(InjectorPin, HIGH);   // set the injector on
  delay( 1000 - Govval + val);       // on pulse width
  digitalWrite(InjectorPin, LOW);    // set the injector off
  delay(25-val);                     // off pulse width
  UpdatePause++;
  if( UpdatePause  8 )
  {
    UpdateLCD();
    UpdatePause = 0;
  }
}

void UpdateLCD()
{
  lcd.begin(20, 4); //lcd.begin(columns, rows)
  lcd.setCursor(0,0); // Position cursor on line 0 char 0
  lcd.print("Pulse Width "); // Print a message to the LCD
  lcd.print(1000 - Govval + val);

  lcd.setCursor(0,1);
  lcd.print("GOV Value ");
  lcd.print(Govval);
  lcd.setCursor(0,2);
  lcd.print("RPM ");  //unused
  lcd.print("0000");  //unused

  lcd.setCursor(1,3);
  lcd.print("Battery ");   //unused
  lcd.print("00");         //unused
}

void BootMSG()
{
  lcd.begin(20, 4); //lcd.begin(columns, rows)
  lcd.setCursor(0,0); // Position cursor on line 0 char 0
  lcd.print("Redneck EFI"); // Print a message to the LCD
  lcd.setCursor(0,1);
  lcd.print("Version 1.0");
  lcd.setCursor(0,2);
  lcd.print("Powered By Arduino");
  lcd.setCursor(0,3);
  lcd.print("Copyright 2010-2011");
  delay(2000);  //display boot screen for two seconds
}


I also have a version for a turbo Miata that I am going through to see how
 it works.


Kevin Alderman


-- The Rotary Engine News Letter. Powered by Linux. ACRE NL web site. http://www.rotaryeng.net You Tube key word PaulLamar2 Copyright 1998-2012 All world wide rights reserved.