1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Tachometer not working

Discussion in 'Subaru Sambar' started by Reese Allen, Oct 31, 2019.

  1. Reese Allen

    Reese Allen Member

  2. Jigs-n-fixtures

    Jigs-n-fixtures Active Member

    Do you have the correct diagnostic port to hook it to?
  3. Reese Allen

    Reese Allen Member

    I think I'd need to make do with whatever signals are currently available from the connectors behind the dash. If I wanted to replace the entire cluster, that would necessitate putting an encoder on the speedometer cable and transitioning to a fully-digital tachometer, speedometer, and odometer. I design machine tools, robotic systems, and industrial automation for a living* and have access to multiple 3D printers, including an SLS system, so I'm sure I could make this happen if I was sufficiently motivated (and could find the time). I probably won't go that crazy in 2020, but who knows, I'm sure I'll need a good personal project to sink my teeth into at some point in the next few years.

    I got an Arduino Nano on order. I'm planning to attach it to the tach signal wire and see if I can write some basic code to turn that signal into an RPM reading. I already found some example code that seems like it can be hacked into working for me. If that approach seems viable after playing with the prototype then it's pretty likely that I'll be soldering up my own new tach board at minimum in the near future.

    *My favorite ME joke:
    Q: How do you know if there is a mechanical engineer in the room?
    A: They will tell you.
  4. banzairx7

    banzairx7 Member

    Limestone likes this.
  5. rkrenicki

    rkrenicki Active Member

    The problem I have with the JRP system is.. it is a complete ripoff of the Defi Advance ZD. They are not even trying to be subtle about it either.

    If you dont really care about that, then you might as well get it straight from China for half the price that JRP is selling it for.. Here is a whole kit with the sensors and everything for $120 shipped. https://www.aliexpress.com/item/4000243859240.html
    Last edited: Mar 28, 2020
  6. Reese Allen

    Reese Allen Member

    Alright, so I've rigged an Arduino to the dash with a super basic setup and code, and hot damn, it looks like it's actually measuring the RPM! I'm so f'ing psyched, you guys, this might actually work after all.

    My prototype code is working on a 1-second interval. Starting very basic. I'm counting pulses from the coil and every second I divide the number of counted revolutions by the time since the last calculation, then I multiply by 60x1000 ms, divide it by 4 (4 cylinder engine) and then again divide by 2/3 (1500 pulses / 1000 revolutions, per Jigs-n-fixtures' comment). I still don't fully understand why the appropriate ratio is 2/3, but the numbers seem to make sense.

    At idle I'm getting 2100 RPM, and revving it pretty high in neutral it's 7000~7500. That seems right to me.

    20200328_153350.jpg 20200328_154740.jpg 20200328_161009.jpg 20200328_160947.jpg
  7. Jigs-n-fixtures

    Jigs-n-fixtures Active Member

    The ratio of coil pulses per rpm is based on the four cycle engine firing once every two rpm. If you have a 1-cylinder the engine the engine takeS 2-rpm to go through the cycles, Power>exhaust>intake>compression, then repeat.
    On a 2-cylinder the cycle are 180-degrees out of phase so it fires one cylinder every revolution.
    On a 3-cylinder the three cylinders need to fire very two rpm. 3-pulses per two rpm.
    On your 4-cylinder, you have 4-pulse per 2-rpm.
  8. rkrenicki

    rkrenicki Active Member

    7100 RPM would be very close to redline. While it is possible you are revving that high, you would be pushing it pretty hard to hit that. 3500 seems more reasonable if you are just revving it a bit.

    Idle should be somewhere around 1000-1200 when cold, and about 850-900 when warmed up.
  9. Ohkei Dohkei

    Ohkei Dohkei Active Member

    Yeah, that seems like a very high idle.
  10. Reese Allen

    Reese Allen Member

    Okay, so the 1500/1000 comment was made under the assumption that this is a 3-cylinder. I took that multiplier out. Duh.

    The math that gives me somewhat sensible output this morning is: RPM = (60*1000*(pulses counted)/(time interval))/8

    Idle at cold start: 3500
    Idle after 5 min warm-up and revving a couple of times: 1850
    Revving it pretty high: 5500-6000

    I have it programmed to look for a rising signal. It seems like it's counting 8 pulses per rev, not 2. Perhaps even more than that, if I'm supposed to have a sub-1000 warm idle.

    I need to get my hands on an external tach. I'm definitely measuring something that seems like RPM, but perhaps the signal is noisy and what I'm seeing is not directly proportional to the actual RPM. If it's at least repeatable, I could do a multi-point calibration and end up with something reasonably accurate. 90% of my company is not showing up for work right now, so it may be a while before I can find one to borrow. Or I could just buy one on Amazon since I've been wanting to add an aftermarket tach to my big truck for a while...

    I'm going to work out a way to mount this stably enough that I can drive around and rig up some way of displaying RPM that I can read while driving. Hopefully today. Then I can report what RPM I'm seeing for various speeds in different gears. Then maybe someone can check that against what they see in their 5MT 660cc Sambar.

    Attached Files:

  11. Reese Allen

    Reese Allen Member

    Here's my code, if anyone happens to be a programmer/Arduino guy:

    edit: My RPM calculation should have a 1000 instead of the variable delayTime.
    float value = 0;
    float pulseCount = 0;
    int rpm;
    int oldtime = 0;
    int time;
    int delayTime = 1000 ; // in ms
    const int signalPin = 19 ;
    void isr() //interrupt service routine
      //Serial.print(rev) ;
    void setup()
      Serial.begin(9600) ;
      pinMode(signalPin, INPUT_PULLUP);
      attachInterrupt(digitalPinToInterrupt(signalPin), isr, RISING) ;  //attaching the interrupt
    void loop()
      detachInterrupt(digitalPinToInterrupt(signalPin));           //detaches the interrupt
      time = millis() - oldtime;    //finds the time
      rpm = ((pulseCount / time) * 60 * delayTime) / 8; //calculates rpm
      oldtime = millis();           //saves the current time
      Serial.print("RPM: ") ;
      Serial.println(rpm) ;
      Serial.print("Pulse count: ") ;
      Serial.println(pulseCount) ;
      Serial.print("Time interval: ") ;
      Serial.println(time) ;
      pulseCount = 0;
      attachInterrupt(digitalPinToInterrupt(signalPin), isr, RISING);
    Last edited: Mar 29, 2020
  12. Reese Allen

    Reese Allen Member

  13. Jigs-n-fixtures

    Jigs-n-fixtures Active Member

    With regard to getting too many signals: Some of the ignition control boxes send multiple pulses throughout the dwell cycle. So, you don’t have a steady single pulse, but a variable number based on the rpm.

    You might be better off with a crank sensor, pick up sensor, so you know exactly how many pulses.
  14. rkrenicki

    rkrenicki Active Member

    So, I re read this thread a bit. You have a factory tach, so just to double check.. you have a supercharged van, correct?

    If so, the tach signal at the cluster has nothing to do with the ECU, “points”, or ground coupling. It is a dedicated wire straight off the coil just for the tachometer signal (as I said original way back at the start of the thread)

    I have the Japanese service manuals and wiring diagrams.. I also retrofitted a tach cluster into my supercharged truck, and I had to run said wire to make it function.

    I can take photos of the connection at the coil and the diagrams tomorrow and post them here. I can also measure what I am seeing with my oscilloscope to give you a better idea of what it is doing for me.
  15. rkrenicki

    rkrenicki Active Member

    I found the requisite pages of the wiring diagram, added some text and highlighted the wire in question. As you can see, it does not go anywhere else but to A16 on the cluster and pin 2 of the coil.
    Screen Shot 2020-03-31 at 12.18.33 PM.png Screen Shot 2020-03-31 at 12.19.20 PM.png

    I went and snapped a photo of the wire on my trucks coil. I added this wire, so it looks a little different, but it should still be yellow on yours. I also added a photo of the reading at warm idle both at the cluster and on my oscilloscope. I get a reading of around 280-290hz at the scope, but the waveform is very dirty, so I am not entirely sure how accurate the readout is. I took this measurement right at the coil itself since I did not want to pull my dash apart.
    20200331_155623620_iOS.jpg 20200331_154931948_iOS.jpg 20200331_155543960_iOS.jpg
  16. Reese Allen

    Reese Allen Member

    Thanks for the info. Yes, it's supercharged.

    My aftermarket tach showed up early. I set it to 4-cylinder mode and then attached it to the VCC, GND, and tach signal conductors in the dash. It reads the same as my homebrew tach. Idling in the 1500~2000 range, even when warm, and goes up to around 6000 when I rev it.

    If this signal is reliable, and I'm starting to think it is, my engine is idling at about 600~1000 RPM higher than what everyone else considers normal. I get garbage fuel economy (23 MPG if I'm lucky) despite having done all of the maintenance and tune-up items I could think of since buying it last year, and mostly driving it on the highway, so it wouldn't surprise me at all if something is f'ed up unrelated to the tach causing it to idle high.
  17. rkrenicki

    rkrenicki Active Member

    23mpg is not really terribly low.. I average a little over 11km/l which works out to just under 26mpg with a good amount of highway driving in my truck. The problem is that these sambars are as aerodynamic as a brick and are not geared for our highways. So, while a Vivio RX-R can get high 30s, low 40s MPG.. our poor Sambars will get more like 25.

    That said, a high idle could be a sign of a vacuum leak. I also found that both of the rubber intake couplers for the supercharger on mine were dried up and cracked. I ended up replacing them with some silicone hose couplers way back when I did my rebuild. The are 48mm (1 7/8") inner diameter.
  18. Reese Allen

    Reese Allen Member

    I got my hands on a timing light. I went and hooked it up, clamped the inductive thing over a plug wire.

    I started the van in my driveway and let it warm up for a good 15 minutes. Much longer than I had been letting it run before. Revved it a few times, let it warm up another 5-10 min. The idle RPM takes quite a while to get down to the true idle speed, which turns out to be about 800-900. Awesome. (during this time I also checked for vacuum leaks and was unable to find any.)

    With my new aftermarket tach hooked to the wire in the dash, it's displaying the same RPM as the timing light within 100 RPM. So that signal wire is definitely trustworthy, and I guess it just gets ~8 pulses per rev instead of the 2 I was expecting. But I don't want to mount that tach in my van, I want to mount it in my Chevy.

    Next step is to finish building my new Arduino-based tach module and get it mounted up. Then I will calibrate it using the timing light. That part of the project is going really well so far, and if I don't get it finished tonight or tomorrow it'll definitely happen over the weekend.
  19. Ohkei Dohkei

    Ohkei Dohkei Active Member

    Good news. Yes, high idle is pretty high, but it should go down when it warms up. It sounds like yours is operating properly!
  20. banzairx7

    banzairx7 Member

    My idle doesn't drop til it's at basically full temperature. Yours taking awhile to come down sounds right.

    My fuel mileage is also abysmal. I'm guessing 20mpg. I'm attributing that to the fact the air fuel ratio is in the mid to low tens if you're on boost at all. It should be high 12's to low 13's. Yours is probably in the same ball park. The brick like shape doesn't help either.

Share This Page