peak and hold fuel injector driver


Closed Thread
Results 1 to 17 of 17
  1. #1
    Join Date
    Oct 2008
    Posts
    8

    Default peak and hold fuel injector driver

    Hi i am new to pic programming and i am wanting to make a PIC16f84A peak and hold injector driver circuit.
    The injectors are .7ohm @ 12volts .7/12=17.14amps this current it too great. it only needs to saturate the injector for 500us and then osilate 5k-10k 50% duty for current limiting.
    The Peak and Hold current look like this 17amp for 500us then 8amps
    we need to current limit as the injector over heat with 17amp full saturation.

    I am using PortA as 4 inputs and PortB as 4 Outputs.
    But i need the pic16f84 to trigger the mosfet like this, Peak switch on for 500us then pwm 5k-10k hertz 50% duty for current limiting.
    and when the signal is removed from input Port A input the output PortB must switch off and then wait for another input signal. all 4 Inputs and Outputs must be separate from each other.

    any help will be much apreciated
    thank you
    Mark

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Welcome to the forum.

    Hi i am new to pic programming
    OK, the first thing you need to do is get some LEDs. Hook them up as outputs and make them bkink. Got to start somewhere.

    Then we will take a look at PWM.

    all 4 Inputs and Outputs must be separate from each other.
    That is the trick. You will want a PIC with hardware PWM. Not sure if there is one with four channels.
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    You could share a single PWM and use an external AND gate for each channel, but even with the best will in the world, monitoring 4 channels, you could easilly get upto a 20uS Delay using a PIC - this could affect your engine timing significantly. Dump the PIC. You could do this with a splattering of discrete logic far better with nanosecond accuracy.

  4. #4
    Join Date
    Oct 2008
    Posts
    8


    Did you find this post helpful? Yes | No

    Smile i have leds flashing with inputs

    Hi Dave i have all ready got a program setup that when you press a input button on portA it lights up an led on the output portB.

    just need to do some peak and hold in the middle there thats what i am not to shure on.

    Hi Melanie in a engine things happen pretty slow compared to electronics the pulse coming out of the Engine managment computer into the Injector driver box. When the engine is idling the ECU output is 1ms earth pulse and when the engines at 8000rpm it has a 8ms earth pulse, The milli second time is how long the injector is open for.


    Melanie i am very keen about you idea or using discrete logic components for nanosecond timing. Could you maybe point me in the right direction with a diagram o somthing? that would be much apreaciated

    Thank you

    Mark

  5. #5
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,615


    Did you find this post helpful? Yes | No

    Wink

    Hi,

    I Really believe our Friend Skimask is the best here for injectors driving ...

    his realizations have already reached top levels ...

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  6. #6
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Mark,
    At least you have a start. By your first post I figured you have not done anything yet and was wanting to start big. My apologies.

    Alan is correct, skimask is the best solution to this problem.
    Dave
    Always wear safety glasses while programming.

  7. #7
    Join Date
    Oct 2008
    Posts
    8


    Did you find this post helpful? Yes | No

    Default what or who is skimask?

    whats is skimask or is this a persons name on this forum? or somthing?

  8. #8
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Acetronics View Post
    I Really believe our Friend Skimask is the best here for injectors driving ...
    Thanks for the vote, but I'm all with Melanie on this one.
    Use some ready made injector driver chips. They've already been road proven, road tested, and so on and so on. Did I mention they're already made?
    Can't think of any off the top of my head, but they are all over out there.

  9. #9
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mrhrholden View Post
    whats is skimask or is this a persons name on this forum? or somthing?
    That is a good question
    Dave
    Always wear safety glasses while programming.

  10. #10
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mackrackit View Post
    That is a good question
    mmmmmwwwwhaaahaaahaaaa!

    LM1949 is one good one I just thought of.
    Last edited by skimask; - 1st October 2008 at 13:47.

  11. #11
    Join Date
    Oct 2008
    Posts
    8


    Did you find this post helpful? Yes | No

    Default lm1949

    Hi Skimask

    well i have already looked at the lm1949 and it will only peak and holds 8amps 1.5amps thats why i haven't gone down that track.

    my injectors are .7ohm impedance and @ 12volts they pull 17amps saturated this is the reason we are making the injector drive as the Haltech E11V2 dosn't have the grunt to operate the injectors correctly its only 5amps /1.2amps even run them on a 8amp saturated and engine miss fires



    Thank you mark

  12. #12
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mrhrholden View Post
    Hi Skimask
    well i have already looked at the lm1949 and it will only peak and holds 8amps 1.5amps thats why i haven't gone down that track.
    my injectors are .7ohm impedance and @ 12volts they pull 17amps saturated this is the reason we are making the injector drive as the Haltech E11V2 dosn't have the grunt to operate the injectors correctly its only 5amps /1.2amps even run them on a 8amp saturated and engine miss fires
    Thank you mark
    That's .7 ohm IMPEDANCE, not resistance. While it's basically the same thing, it's not really the 'same thing'.
    As far as your original post about using the 16F84A to do this...there are much better ways. The ol' 16F84A, while it was the shiznit back in it's day and is still very useful, is wayyy outdated these days and has been superceded more than a few times.
    Get a faster PIC, an 18Fxxx that'll run 40Mhz vs. 10Mhz. At least then you have the possibility of sub-microsecond accuracy (not saying you'll get it, but the possibility is there).
    Get a PIC with multiple PWM outputs. There's a few out there. Use the parametric search function at www.microchip.com
    And as I said before, use a REAL injector driver. National, Motorola, not sure about Microchip itself, Linear. They're out there. I'm not at the house, don't have access to my good notes for this info.

  13. #13
    Join Date
    Oct 2008
    Posts
    8


    Did you find this post helpful? Yes | No

    Smile will have a look for some discrete

    thank you for you information will have a look for some discrete components and also look at the bigger pic18f with PWM

    please let me know if you find some part numbers on some discrete's

    Thank you
    Mark

  14. #14
    Join Date
    Nov 2007
    Location
    West Covina, CA
    Posts
    219


    Did you find this post helpful? Yes | No

    Default Same project

    Hey Mark,
    There's a great satisfaction in making your own device. One that suits your needs when what's available just won't cut it. And even when there is one out there, the cost can sometimes prohibit just playing around with for the sake of curiosity. Besides, how else will we learn to improve our craft if we are just consumers? Anyways...
    I ran into the same problems on two different projects that I hope might help a little.
    1. I needed to monitor and control a four cylinder which would have overlapping inputs at 14K RPM. Since this meant having to treat each input individually, I just used four PIC's and all programmed at the same time. I know there's a better way of doing it but I'm just learning and using Darrel's Instant Interrupt technique is just way over my head for now.
    2. A simple PWM driver. Here's a small program I use to drive a 24V/24A relay bank. Just replace PAUSE with PAUSES for micro second increments instead. And PIC type of course.
    Code:
    '****************************************************************
    '*  Name    : HEXFET PWM driver Rev2.BAS                        *
    
    '*  Date    : 8/18/2008                                         *
    '*  Version : 2.0                                               *
    '*  Notes   : This routine uses the PIC16F688 to monitor all of *
    '"          : PORTA inputs and will mirror PWM PORTC outputs by *
    '"          : a 5ms Power Pulse followed with a 500Hz, 50%dt    *
    '"          : pulse train. This circuit was required to drive a *
    '"          : solenoid with 24V at 24A without over heating the *
    '"          : HEXFET device.                                    *
    '****************************************************************
    @ DEVICE PIC16F688, INTRC_OSC_NOCLKOUT
    @ DEVICE PIC16F688, WDT_ON
    @ DEVICE PIC16F688, PROTECT_OFF
    @ DEVICE PIC16F688, MCLR_OFF
    define OSC 8
    OSCCON = %01110000      ' Oscillator set to 8MHz, bits 6-4
    CMCON0 = 7		        ' Analog comparators off 
    TRISA = %00111111       ' Sets all PORTA pins as inputs
    TRISC = %00000000       ' Sets first 4 PORTC as inputs and 2 as outputs
    ADCON0 = 0              ' A/D turned OFF
    ANSEL = %00000000       ' All inputs made digital I/O
    
    PORTC = $0              ' Turn off all outputs
    Pause 100               ' Let's wait 100ms before starting
    
    ' This part of the routine will output the beginning of the pulse train 
    ' with a 5ms power pulse to be followed with the rest of the hold pulses.
    loop:
    IF PORTA = $0 then goto loop  ' Stay here when all inputs OFF 
        PORTC = PORTA             ' Mirror outputs (active HIGH inputs)
        PAUSE 5                   ' Pulse starts with 5ms Power Pulse
        PORTC = $0                ' Turn OFF outputs
        PAUSE 1                   ' Wait 1ms then continue with pulse train
    
    ' The rest of the pulse train here is 500Hz at 50%dt as long as the input
    ' remains active. It also monitors for a change at the inputs so that it
    ' will start over to include the new input with a Power Pulse too.
    While PORTA <> $0             ' Do routine as long as input active
        PORTC = PORTA             ' Mirror outputs (active HIGH inputs)
        Pause 1                   ' Keep outputs ON for 1ms 
        PORTC = $0                ' Turn OFF outputs
        PAUSE 1                   ' Keep outputs OFF for 1ms   
    WEND                          ' Input inactive, leave routine
    GOTO loop                     ' Start from beginning
    
    END
    If you haven't already, look into International Rectifier's list of N-CH HEXFETs, found at DigiKey, such as the IRFP4321 as an example. Just don't let the big capability numbers fool you. Look at the Maximum Safe Operating Area of its data sheet. This looks like 10A at DC but nearly 40A at 1ms pulses.
    Good luck...
    Louie

  15. #15
    Join Date
    Aug 2005
    Posts
    57


    Did you find this post helpful? Yes | No

    Default MegaSquirt Electronic Fuel Injector Project

    Here's a link that might be of interest,its not a pic but has schematics and components.
    http://www.bgsoflex.com/megasquirt.html

  16. #16


    Did you find this post helpful? Yes | No

    Default

    There are other mcu's that you can use to do the precision timing. An SX chip (50 MIPS) bit banging with an interrupt can be used in conjunction with a PIC UART to update and control the SX . I am sure you have timing position sensors, feed those into the SX to trigger the next set of pulses. I have a brushless 3-Phase motor made up of the above mentioned, my motor spins at 30,000 rpm (variable speed) using zero crossing comparators for feedback.


    Nick

  17. #17
    Join Date
    Oct 2008
    Posts
    8


    Did you find this post helpful? Yes | No

    Default same project

    Hi linkmtech
    Thanks for your info yeah that's just what i need. in my saturated driver i am using 60V 60AMP 60n06 n channel mosfet stp60nf06 man i have melted the winding in injectors with these mosfets when i had a problem with my driver it hung the injectors open and the mosfets didn't burn out they are real grunters!!!!!!!!

    Thank you will let you know how it will all goes

    Mark


    Quote Originally Posted by LinkMTech View Post
    Hey Mark,

    There's a great satisfaction in making your own device. One that suits your needs when what's available just won't cut it. And even when there is one out there, the cost can sometimes prohibit just playing around with for the sake of curiosity. Besides, how else will we learn to improve our craft if we are just consumers? Anyways...
    I ran into the same problems on two different projects that I hope might help a little.
    1. I needed to monitor and control a four cylinder which would have overlapping inputs at 14K RPM. Since this meant having to treat each input individually, I just used four PIC's and all programmed at the same time. I know there's a better way of doing it but I'm just learning and using Darrel's Instant Interrupt technique is just way over my head for now.
    2. A simple PWM driver. Here's a small program I use to drive a 24V/24A relay bank. Just replace PAUSE with PAUSES for micro second increments instead. And PIC type of course.
    Code:
    '****************************************************************
    '*  Name    : HEXFET PWM driver Rev2.BAS                        *
    
    '*  Date    : 8/18/2008                                         *
    '*  Version : 2.0                                               *
    '*  Notes   : This routine uses the PIC16F688 to monitor all of *
    '"          : PORTA inputs and will mirror PWM PORTC outputs by *
    '"          : a 5ms Power Pulse followed with a 500Hz, 50%dt    *
    '"          : pulse train. This circuit was required to drive a *
    '"          : solenoid with 24V at 24A without over heating the *
    '"          : HEXFET device.                                    *
    '****************************************************************
    @ DEVICE PIC16F688, INTRC_OSC_NOCLKOUT
    @ DEVICE PIC16F688, WDT_ON
    @ DEVICE PIC16F688, PROTECT_OFF
    @ DEVICE PIC16F688, MCLR_OFF
    define OSC 8
    OSCCON = %01110000      ' Oscillator set to 8MHz, bits 6-4
    CMCON0 = 7		        ' Analog comparators off 
    TRISA = %00111111       ' Sets all PORTA pins as inputs
    TRISC = %00000000       ' Sets first 4 PORTC as inputs and 2 as outputs
    ADCON0 = 0              ' A/D turned OFF
    ANSEL = %00000000       ' All inputs made digital I/O
    
    PORTC = $0              ' Turn off all outputs
    Pause 100               ' Let's wait 100ms before starting
    
    ' This part of the routine will output the beginning of the pulse train 
    ' with a 5ms power pulse to be followed with the rest of the hold pulses.
    loop:
    IF PORTA = $0 then goto loop  ' Stay here when all inputs OFF 
        PORTC = PORTA             ' Mirror outputs (active HIGH inputs)
        PAUSE 5                   ' Pulse starts with 5ms Power Pulse
        PORTC = $0                ' Turn OFF outputs
        PAUSE 1                   ' Wait 1ms then continue with pulse train
    
    ' The rest of the pulse train here is 500Hz at 50%dt as long as the input
    ' remains active. It also monitors for a change at the inputs so that it
    ' will start over to include the new input with a Power Pulse too.
    While PORTA <> $0             ' Do routine as long as input active
        PORTC = PORTA             ' Mirror outputs (active HIGH inputs)
        Pause 1                   ' Keep outputs ON for 1ms 
        PORTC = $0                ' Turn OFF outputs
        PAUSE 1                   ' Keep outputs OFF for 1ms   
    WEND                          ' Input inactive, leave routine
    GOTO loop                     ' Start from beginning
    
    END
    If you haven't already, look into International Rectifier's list of N-CH HEXFETs, found at DigiKey, such as the IRFP4321 as an example. Just don't let the big capability numbers fool you. Look at the Maximum Safe Operating Area of its data sheet. This looks like 10A at DC but nearly 40A at 1ms pulses.
    Good luck...

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts