Not sure if I should make a new topic, Kind of shifted gears because I was struggling with the VR sensor so much (I never did get the Mini Max A2 board to work (never seen an output) and really need make some headway on this project.
I ended up jumping sideways, away from trying to read the OEM VR sensor and mounting a Hall effect sensor on the front of the engine I machined out the head on one of the bolts mounding the fan pully to the crank. I then J/B welded a magnet into the head. My Hall sensor is mounted on a bracket and adjusted to read the magnet as it passes.
The governer simply racks the fuel rail on the diesel engine controlling fuel to the injectors. It appears to be an electric motor with a spring return to closed.
When testing with pwm signal, it startes to overcome the spring and open with a pwm signal around 230 give or take. So not much resolution between (pwm230-255) starting to open and WOT(which, if left fully open will over-rev and be catastrophic.
The project itself seams fairly straight forward. but I am not able to get the engine to run smooth, it oscillates from max rev to idle overshooting.
looking at my code you will see the PID settings these are just the last setting i was working with, I have tried others.
I have never used the PID code before and any guidance would be nice. I have read a lot about setting up the PID... just no success yet.
I Noticed yesterday when studying the serial data that it might be that I am getting random spikes on the hall sensor input causing the program to act erratically,I would see spikes in the RPM sensor value of 40,000 or more, for a few cycles of the script but again your input would be appreciated.
Ill post a bit of the serial data...
well I just started the tractor and grabbed a short bit of serial data for the post... this time I didn't see any out of line RPM readings. (shrug, shrug)
But the PID is deffinately not set right. (this should work right???).
I figure I just need the right PID settings. the pwm output is going from max to min... not touching anything in-between. Again, PID settings im sure.
I tried to grab at least a full cycle:
17:16:49.811 -> relay 6foot throttle: 489 requested RPM 696.0000000000 RPM: 0.0000000000 govener pwm sig 255.0000000000
17:16:49.843 -> relay 6foot throttle: 492 requested RPM 704.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.843 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.843 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.876 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.876 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.876 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.876 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.909 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.909 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.909 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.941 -> relay 6foot throttle: 490 requested RPM 699.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.941 -> relay 6foot throttle: 487 requested RPM 691.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.941 -> relay 6foot throttle: 485 requested RPM 686.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.941 -> relay 6foot throttle: 484 requested RPM 684.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.974 -> relay 6foot throttle: 482 requested RPM 679.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.974 -> relay 6foot throttle: 481 requested RPM 677.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:49.974 -> relay 6foot throttle: 480 requested RPM 674.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.007 -> relay 6foot throttle: 478 requested RPM 669.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.007 -> relay 6foot throttle: 476 requested RPM 664.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.039 -> relay 6foot throttle: 472 requested RPM 654.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.039 -> relay 6foot throttle: 475 requested RPM 662.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.039 -> relay 6foot throttle: 473 requested RPM 657.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.072 -> relay 6foot throttle: 470 requested RPM 650.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.072 -> relay 6foot throttle: 466 requested RPM 641.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.072 -> relay 6foot throttle: 467 requested RPM 643.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.105 -> relay 6foot throttle: 468 requested RPM 646.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.105 -> relay 6foot throttle: 470 requested RPM 650.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.105 -> relay 6foot throttle: 459 requested RPM 623.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.105 -> relay 6foot throttle: 463 requested RPM 633.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.137 -> relay 6foot throttle: 467 requested RPM 643.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.137 -> relay 6foot throttle: 463 requested RPM 633.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.137 -> relay 6foot throttle: 460 requested RPM 626.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.170 -> relay 6foot throttle: 460 requested RPM 626.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.170 -> relay 6foot throttle: 460 requested RPM 626.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.170 -> relay 6foot throttle: 455 requested RPM 614.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.203 -> relay 6foot throttle: 452 requested RPM 606.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.203 -> relay 6foot throttle: 460 requested RPM 626.0000000000 RPM: 125.7292251586 govener pwm sig 255.0000000000
17:16:50.203 -> relay 6foot throttle: 470 requested RPM 650.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.203 -> relay 6foot throttle: 470 requested RPM 650.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.203 -> relay 6foot throttle: 474 requested RPM 659.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.235 -> relay 6foot throttle: 475 requested RPM 662.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.235 -> relay 6foot throttle: 473 requested RPM 657.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.235 -> relay 6foot throttle: 486 requested RPM 689.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.268 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.268 -> relay 6foot throttle: 503 requested RPM 731.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.268 -> relay 6foot throttle: 507 requested RPM 740.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.268 -> relay 6foot throttle: 506 requested RPM 738.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.301 -> relay 6foot throttle: 492 requested RPM 704.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.301 -> relay 6foot throttle: 480 requested RPM 674.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.301 -> relay 6foot throttle: 476 requested RPM 664.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.333 -> relay 6foot throttle: 473 requested RPM 657.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.333 -> relay 6foot throttle: 470 requested RPM 650.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.333 -> relay 6foot throttle: 467 requested RPM 643.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.366 -> relay 6foot throttle: 456 requested RPM 616.0000000000 RPM: 159.0482635498 govener pwm sig 255.0000000000
17:16:50.366 -> relay 6foot throttle: 460 requested RPM 626.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.366 -> relay 6foot throttle: 467 requested RPM 643.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.366 -> relay 6foot throttle: 467 requested RPM 643.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.399 -> relay 6foot throttle: 466 requested RPM 641.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.399 -> relay 6foot throttle: 465 requested RPM 638.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.399 -> relay 6foot throttle: 467 requested RPM 643.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.432 -> relay 6foot throttle: 463 requested RPM 633.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.432 -> relay 6foot throttle: 464 requested RPM 636.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.432 -> relay 6foot throttle: 453 requested RPM 609.0000000000 RPM: 393.3394470214 govener pwm sig 255.0000000000
17:16:50.432 -> relay 6foot throttle: 453 requested RPM 609.0000000000 RPM: 709.4210815429 govener pwm sig 255.0000000000
17:16:50.464 -> relay 6foot throttle: 443 requested RPM 584.0000000000 RPM: 709.4210815429 govener pwm sig 255.0000000000
17:16:50.464 -> relay 6foot throttle: 429 requested RPM 550.0000000000 RPM: 709.4210815429 govener pwm sig 255.0000000000
17:16:50.464 -> relay 6foot throttle: 429 requested RPM 550.0000000000 RPM: 709.4210815429 govener pwm sig 230.0000000000
17:16:50.497 -> relay 6foot throttle: 431 requested RPM 555.0000000000 RPM: 709.4210815429 govener pwm sig 230.0000000000
17:16:50.497 -> relay 6foot throttle: 437 requested RPM 569.0000000000 RPM: 709.4210815429 govener pwm sig 230.0000000000
17:16:50.497 -> relay 6foot throttle: 438 requested RPM 572.0000000000 RPM: 709.4210815429 govener pwm sig 230.0000000000
17:16:50.530 -> relay 6foot throttle: 445 requested RPM 589.0000000000 RPM: 956.3886718750 govener pwm sig 230.0000000000
17:16:50.530 -> relay 6foot throttle: 452 requested RPM 606.0000000000 RPM: 956.3886718750 govener pwm sig 230.0000000000
17:16:50.530 -> relay 6foot throttle: 458 requested RPM 621.0000000000 RPM: 956.3886718750 govener pwm sig 230.0000000000
17:16:50.530 -> relay 6foot throttle: 465 requested RPM 638.0000000000 RPM: 956.3886718750 govener pwm sig 230.0000000000
17:16:50.563 -> relay 6foot throttle: 470 requested RPM 650.0000000000 RPM: 956.3886718750 govener pwm sig 230.0000000000
17:16:50.563 -> relay 6foot throttle: 477 requested RPM 667.0000000000 RPM: 1147.0521240234 govener pwm sig 230.0000000000
17:16:50.563 -> relay 6foot throttle: 485 requested RPM 686.0000000000 RPM: 1147.0521240234 govener pwm sig 230.0000000000
17:16:50.595 -> relay 6foot throttle: 490 requested RPM 699.0000000000 RPM: 1147.0521240234 govener pwm sig 230.0000000000
17:16:50.595 -> relay 6foot throttle: 492 requested RPM 704.0000000000 RPM: 1147.0521240234 govener pwm sig 230.0000000000
17:16:50.595 -> relay 6foot throttle: 492 requested RPM 704.0000000000 RPM: 1147.0521240234 govener pwm sig 230.0000000000
17:16:50.628 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1230.7187500000 govener pwm sig 230.0000000000
17:16:50.628 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1230.7187500000 govener pwm sig 230.0000000000
17:16:50.628 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 1230.7187500000 govener pwm sig 230.0000000000
17:16:50.628 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 1230.7187500000 govener pwm sig 230.0000000000
17:16:50.660 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 1230.7187500000 govener pwm sig 230.0000000000
17:16:50.660 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 1176.4705810546 govener pwm sig 230.0000000000
17:16:50.660 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 1176.4705810546 govener pwm sig 230.0000000000
17:16:50.693 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 1176.4705810546 govener pwm sig 230.0000000000
17:16:50.693 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 1176.4705810546 govener pwm sig 230.0000000000
17:16:50.693 -> relay 6foot throttle: 502 requested RPM 728.0000000000 RPM: 1176.4705810546 govener pwm sig 230.0000000000
17:16:50.693 -> relay 6foot throttle: 502 requested RPM 728.0000000000 RPM: 1176.4705810546 govener pwm sig 230.0000000000
17:16:50.726 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 1106.1131591796 govener pwm sig 230.0000000000
17:16:50.726 -> relay 6foot throttle: 502 requested RPM 728.0000000000 RPM: 1106.1131591796 govener pwm sig 230.0000000000
17:16:50.726 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 1106.1131591796 govener pwm sig 230.0000000000
17:16:50.758 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 1106.1131591796 govener pwm sig 230.0000000000
17:16:50.758 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 1106.1131591796 govener pwm sig 230.0000000000
17:16:50.758 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 1106.1131591796 govener pwm sig 230.0000000000
17:16:50.791 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 1031.4948730468 govener pwm sig 230.0000000000
17:16:50.791 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 1031.4948730468 govener pwm sig 230.0000000000
17:16:50.791 -> relay 6foot throttle: 502 requested RPM 728.0000000000 RPM: 1031.4948730468 govener pwm sig 230.0000000000
17:16:50.791 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 1031.4948730468 govener pwm sig 230.0000000000
17:16:50.824 -> relay 6foot throttle: 502 requested RPM 728.0000000000 RPM: 1031.4948730468 govener pwm sig 230.0000000000
17:16:50.824 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 1031.4948730468 govener pwm sig 230.0000000000
17:16:50.824 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 951.4144287109 govener pwm sig 230.0000000000
17:16:50.856 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 951.4144287109 govener pwm sig 230.0000000000
17:16:50.856 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 951.4144287109 govener pwm sig 230.0000000000
17:16:50.856 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 951.4144287109 govener pwm sig 230.0000000000
17:16:50.889 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 951.4144287109 govener pwm sig 230.0000000000
17:16:50.889 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 951.4144287109 govener pwm sig 230.0000000000
17:16:50.889 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 951.4144287109 govener pwm sig 230.0000000000
17:16:50.889 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 951.4144287109 govener pwm sig 230.0000000000
17:16:50.922 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 864.9522094726 govener pwm sig 230.0000000000
17:16:50.922 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 864.9522094726 govener pwm sig 230.0000000000
17:16:50.922 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 864.9522094726 govener pwm sig 230.0000000000
17:16:50.955 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 864.9522094726 govener pwm sig 230.0000000000
17:16:50.955 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 864.9522094726 govener pwm sig 230.0000000000
17:16:50.955 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 864.9522094726 govener pwm sig 230.0000000000
17:16:50.955 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 864.9522094726 govener pwm sig 230.0000000000
17:16:50.987 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 864.9522094726 govener pwm sig 230.0000000000
17:16:50.987 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:50.987 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:51.020 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:51.020 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:51.020 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:51.052 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:51.052 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:51.052 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:51.052 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 771.6445922851 govener pwm sig 230.0000000000
17:16:51.085 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.085 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.085 -> relay 6foot throttle: 502 requested RPM 728.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.118 -> relay 6foot throttle: 502 requested RPM 728.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.118 -> relay 6foot throttle: 502 requested RPM 728.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.118 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.118 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.151 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.151 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.151 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.183 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 670.0017700195 govener pwm sig 230.0000000000
17:16:51.183 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 557.4757690429 govener pwm sig 230.0000000000
17:16:51.183 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 557.4757690429 govener pwm sig 230.0000000000
17:16:51.216 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 557.4757690429 govener pwm sig 230.0000000000
17:16:51.216 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 557.4757690429 govener pwm sig 230.0000000000
17:16:51.216 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.216 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.249 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.249 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.249 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.281 -> relay 6foot throttle: 492 requested RPM 704.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.281 -> relay 6foot throttle: 489 requested RPM 696.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.281 -> relay 6foot throttle: 487 requested RPM 691.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.281 -> relay 6foot throttle: 484 requested RPM 684.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.314 -> relay 6foot throttle: 482 requested RPM 679.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.314 -> relay 6foot throttle: 479 requested RPM 672.0000000000 RPM: 557.4757690429 govener pwm sig 255.0000000000
17:16:51.314 -> relay 6foot throttle: 477 requested RPM 667.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.347 -> relay 6foot throttle: 476 requested RPM 664.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.347 -> relay 6foot throttle: 475 requested RPM 662.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.347 -> relay 6foot throttle: 474 requested RPM 659.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.379 -> relay 6foot throttle: 473 requested RPM 657.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.380 -> relay 6foot throttle: 474 requested RPM 659.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.380 -> relay 6foot throttle: 474 requested RPM 659.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.380 -> relay 6foot throttle: 473 requested RPM 657.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.412 -> relay 6foot throttle: 472 requested RPM 654.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.412 -> relay 6foot throttle: 472 requested RPM 654.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.412 -> relay 6foot throttle: 471 requested RPM 652.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.444 -> relay 6foot throttle: 470 requested RPM 650.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.444 -> relay 6foot throttle: 470 requested RPM 650.0000000000 RPM: 427.7037963867 govener pwm sig 255.0000000000
17:16:51.444 -> relay 6foot throttle: 469 requested RPM 648.0000000000 RPM: 484.2302551269 govener pwm sig 255.0000000000
17:16:51.444 -> relay 6foot throttle: 469 requested RPM 648.0000000000 RPM: 484.2302551269 govener pwm sig 255.0000000000
17:16:51.477 -> relay 6foot throttle: 466 requested RPM 641.0000000000 RPM: 484.2302551269 govener pwm sig 255.0000000000
17:16:51.477 -> relay 6foot throttle: 465 requested RPM 638.0000000000 RPM: 484.2302551269 govener pwm sig 255.0000000000
17:16:51.477 -> relay 6foot throttle: 465 requested RPM 638.0000000000 RPM: 484.2302551269 govener pwm sig 255.0000000000
17:16:51.510 -> relay 6foot throttle: 465 requested RPM 638.0000000000 RPM: 484.2302551269 govener pwm sig 255.0000000000
17:16:51.510 -> relay 6foot throttle: 464 requested RPM 636.0000000000 RPM: 484.2302551269 govener pwm sig 255.0000000000
17:16:51.510 -> relay 6foot throttle: 464 requested RPM 636.0000000000 RPM: 484.2302551269 govener pwm sig 255.0000000000
17:16:51.543 -> relay 6foot throttle: 464 requested RPM 636.0000000000 RPM: 785.6282348632 govener pwm sig 255.0000000000
17:16:51.543 -> relay 6foot throttle: 463 requested RPM 633.0000000000 RPM: 785.6282348632 govener pwm sig 230.0000000000
17:16:51.543 -> relay 6foot throttle: 464 requested RPM 636.0000000000 RPM: 785.6282348632 govener pwm sig 230.0000000000
17:16:51.543 -> relay 6foot throttle: 465 requested RPM 638.0000000000 RPM: 785.6282348632 govener pwm sig 230.0000000000
17:16:51.575 -> relay 6foot throttle: 466 requested RPM 641.0000000000 RPM: 785.6282348632 govener pwm sig 230.0000000000
17:16:51.575 -> relay 6foot throttle: 467 requested RPM 643.0000000000 RPM: 785.6282348632 govener pwm sig 230.0000000000
17:16:51.575 -> relay 6foot throttle: 469 requested RPM 648.0000000000 RPM: 1013.1029052734 govener pwm sig 230.0000000000
17:16:51.608 -> relay 6foot throttle: 471 requested RPM 652.0000000000 RPM: 1013.1029052734 govener pwm sig 230.0000000000
17:16:51.608 -> relay 6foot throttle: 473 requested RPM 657.0000000000 RPM: 1013.1029052734 govener pwm sig 230.0000000000
17:16:51.608 -> relay 6foot throttle: 475 requested RPM 662.0000000000 RPM: 1013.1029052734 govener pwm sig 230.0000000000
17:16:51.608 -> relay 6foot throttle: 477 requested RPM 667.0000000000 RPM: 1013.1029052734 govener pwm sig 230.0000000000
17:16:51.641 -> relay 6foot throttle: 480 requested RPM 674.0000000000 RPM: 1189.1549072265 govener pwm sig 230.0000000000
17:16:51.641 -> relay 6foot throttle: 481 requested RPM 677.0000000000 RPM: 1189.1549072265 govener pwm sig 230.0000000000
17:16:51.641 -> relay 6foot throttle: 483 requested RPM 681.0000000000 RPM: 1189.1549072265 govener pwm sig 230.0000000000
17:16:51.673 -> relay 6foot throttle: 485 requested RPM 686.0000000000 RPM: 1189.1549072265 govener pwm sig 230.0000000000
17:16:51.673 -> relay 6foot throttle: 485 requested RPM 686.0000000000 RPM: 1189.1549072265 govener pwm sig 230.0000000000
17:16:51.673 -> relay 6foot throttle: 486 requested RPM 689.0000000000 RPM: 1318.2177734375 govener pwm sig 230.0000000000
17:16:51.706 -> relay 6foot throttle: 486 requested RPM 689.0000000000 RPM: 1318.2177734375 govener pwm sig 230.0000000000
17:16:51.706 -> relay 6foot throttle: 487 requested RPM 691.0000000000 RPM: 1318.2177734375 govener pwm sig 230.0000000000
17:16:51.706 -> relay 6foot throttle: 489 requested RPM 696.0000000000 RPM: 1318.2177734375 govener pwm sig 230.0000000000
17:16:51.706 -> relay 6foot throttle: 490 requested RPM 699.0000000000 RPM: 1336.7791748046 govener pwm sig 230.0000000000
17:16:51.739 -> relay 6foot throttle: 490 requested RPM 699.0000000000 RPM: 1336.7791748046 govener pwm sig 230.0000000000
17:16:51.739 -> relay 6foot throttle: 491 requested RPM 701.0000000000 RPM: 1336.7791748046 govener pwm sig 230.0000000000
17:16:51.771 -> relay 6foot throttle: 491 requested RPM 701.0000000000 RPM: 1336.7791748046 govener pwm sig 230.0000000000
17:16:51.771 -> relay 6foot throttle: 492 requested RPM 704.0000000000 RPM: 1276.5957031250 govener pwm sig 230.0000000000
17:16:51.771 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1276.5957031250 govener pwm sig 230.0000000000
17:16:51.804 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1276.5957031250 govener pwm sig 230.0000000000
17:16:51.804 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 1276.5957031250 govener pwm sig 230.0000000000
17:16:51.804 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1276.5957031250 govener pwm sig 230.0000000000
17:16:51.804 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1203.5625000000 govener pwm sig 230.0000000000
17:16:51.837 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1203.5625000000 govener pwm sig 230.0000000000
17:16:51.837 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1203.5625000000 govener pwm sig 230.0000000000
17:16:51.837 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 1203.5625000000 govener pwm sig 230.0000000000
17:16:51.870 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 1203.5625000000 govener pwm sig 230.0000000000
17:16:51.870 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 1203.5625000000 govener pwm sig 230.0000000000
17:16:51.870 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 1127.6500244140 govener pwm sig 230.0000000000
17:16:51.870 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 1127.6500244140 govener pwm sig 230.0000000000
17:16:51.902 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 1127.6500244140 govener pwm sig 230.0000000000
17:16:51.902 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 1127.6500244140 govener pwm sig 230.0000000000
17:16:51.902 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 1127.6500244140 govener pwm sig 230.0000000000
17:16:51.935 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 1127.6500244140 govener pwm sig 230.0000000000
17:16:51.935 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 1047.5592041015 govener pwm sig 230.0000000000
17:16:51.935 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 1047.5592041015 govener pwm sig 230.0000000000
17:16:51.967 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 1047.5592041015 govener pwm sig 230.0000000000
17:16:51.967 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 1047.5592041015 govener pwm sig 230.0000000000
17:16:51.967 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 1047.5592041015 govener pwm sig 230.0000000000
17:16:51.967 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 1047.5592041015 govener pwm sig 230.0000000000
17:16:52.000 -> relay 6foot throttle: 494 requested RPM 708.0000000000 RPM: 963.1436767578 govener pwm sig 230.0000000000
17:16:52.000 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 963.1436767578 govener pwm sig 230.0000000000
17:16:52.000 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 963.1436767578 govener pwm sig 230.0000000000
17:16:52.033 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 963.1436767578 govener pwm sig 230.0000000000
17:16:52.033 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 963.1436767578 govener pwm sig 230.0000000000
17:16:52.033 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 963.1436767578 govener pwm sig 230.0000000000
17:16:52.066 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 963.1436767578 govener pwm sig 230.0000000000
17:16:52.066 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 872.7526855468 govener pwm sig 230.0000000000
17:16:52.066 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 872.7526855468 govener pwm sig 230.0000000000
17:16:52.066 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 872.7526855468 govener pwm sig 230.0000000000
17:16:52.097 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 872.7526855468 govener pwm sig 230.0000000000
17:16:52.097 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 872.7526855468 govener pwm sig 230.0000000000
17:16:52.097 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 872.7526855468 govener pwm sig 230.0000000000
17:16:52.131 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 872.7526855468 govener pwm sig 230.0000000000
17:16:52.131 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 872.7526855468 govener pwm sig 230.0000000000
17:16:52.131 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.131 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.164 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.164 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.164 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.197 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.197 -> relay 6foot throttle: 497 requested RPM 716.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.197 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.230 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.230 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 776.0360107421 govener pwm sig 230.0000000000
17:16:52.230 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.230 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.263 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.263 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.263 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.294 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.294 -> relay 6foot throttle: 501 requested RPM 726.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.294 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.294 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.327 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.327 -> relay 6foot throttle: 500 requested RPM 723.0000000000 RPM: 670.0915527343 govener pwm sig 230.0000000000
17:16:52.327 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 551.7749023437 govener pwm sig 230.0000000000
17:16:52.360 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 551.7749023437 govener pwm sig 230.0000000000
17:16:52.360 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 551.7749023437 govener pwm sig 230.0000000000
17:16:52.360 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 551.7749023437 govener pwm sig 230.0000000000
17:16:52.393 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 551.7749023437 govener pwm sig 230.0000000000
17:16:52.393 -> relay 6foot throttle: 499 requested RPM 721.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.393 -> relay 6foot throttle: 498 requested RPM 718.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.393 -> relay 6foot throttle: 496 requested RPM 713.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.425 -> relay 6foot throttle: 495 requested RPM 711.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.425 -> relay 6foot throttle: 493 requested RPM 706.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.425 -> relay 6foot throttle: 491 requested RPM 701.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.458 -> relay 6foot throttle: 489 requested RPM 696.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.458 -> relay 6foot throttle: 487 requested RPM 691.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.458 -> relay 6foot throttle: 484 requested RPM 684.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.458 -> relay 6foot throttle: 481 requested RPM 677.0000000000 RPM: 551.7749023437 govener pwm sig 255.0000000000
17:16:52.491 -> relay 6foot throttle: 479 requested RPM 672.0000000000 RPM: 413.2572937011 govener pwm sig 255.0000000000
17:16:52.491 -> relay 6foot throttle: 477 requested RPM 667.0000000000 RPM: 413.2572937011 govener pwm sig 255.0000000000
17:16:52.491 -> relay 6foot throttle: 475 requested RPM 662.0000000000 RPM: 413.2572937011 govener pwm sig 255.0000000000
17:16:52.523 -> relay 6foot throttle: 476 requested RPM 664.0000000000 RPM: 413.2572937011 govener pwm sig 255.0000000000
17:16:52.523 -> relay 6foot throttle: 474 requested RPM 659.0000000000 RPM: 413.2572937011 govener pwm sig 255.0000000000
Here is the Code I am working with, It's a mess but you get the picture. I have been trying different things and there are remnants of those ideas that have not been removed yet. sorry for any confusion.
#include <PID_v1.h> //PID library
//this section deals with reading throttle input and outputing pwm to govenor
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 10; // Analog output pin that the GOVENOR is attached to
const int relay = 6; //relay is on pin 6, closes circuit to govenor allowing pwm signal to get there
int target_pwm_value = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
int TBpwmsig = 0;
const int numReadings = 10; // value to determine the size of the readings array
int readings[numReadings]; // the readings from the analog input, array
int readIndex = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average
//--------------------------------------------------------------------
// this section deals with RPM---------------------------
const uint8_t pinTach = 2; //tach, digital input #2
volatile uint32_t isrElapsedTicks; //volatile tells the compiler to use memory, not registers to store this value
volatile bool TachTickFlag;
uint32_t ElapsedTicks;
float RPM;
uint32_t timePrint,timeNow,Lastisr; // used to for serial debug in rpm section
//---------------------------------------------------------
//this section deals with PID controller-------------------
//Define Variables we'll be connecting to
double Setpoint, Input, Output;
//Specify the links and initial tuning parameters
double Kp=3, Ki=1, Kd=0;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
void setup()
{
Serial.begin( 115200 );
//-------------------set up the tach input pin and a rising edge interrupt
pinMode( pinTach, INPUT_PULLUP );
attachInterrupt( digitalPinToInterrupt(pinTach), TachTick, FALLING );
/////////////////////////////////////////////////////////////////////////////
TachTickFlag = false; //flag by which ISR tells loop() that a new period is ready
RPM = 0.0;
timePrint = millis(); // 1000 millis = 1 sec, timelimit between serial update
//--------------------------------------------------------------
//nrxt section deals with driving govener---------
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
myPID.SetMode(AUTOMATIC);//turn the PID on
}
TCCR2B = TCCR2B & 0b11111000 | 0X01; //speeds up timer 2 to 31kHz, motor doesn't whine then
//-----------------------------------------------
}//end of setup
//-------------------------rising edge on pinTach ISR
void TachTick( void )
{
static bool FirstTickFlag = true; //we need one initial measurement for determining time between them
static uint32_t lastTick; //copy of micros() from the last measurement
uint32_t nowTick;
//----------------------are we waiting for the first interrupt?
if( FirstTickFlag == true )
{
//-----------------yes; save micros() as the "last" and clear the flag
lastTick = micros();
FirstTickFlag = false;
}
else
{
//-------------------------find the time elapsed since the last interrupt in microseconds
nowTick = micros();
isrElapsedTicks = nowTick - lastTick;
lastTick = nowTick; //save this new value as "last"
TachTickFlag = true; //and set a flag telling loop() we have a new period ready
}//end of if/else
}//TachTick
void loop()
{ //deals with finding RPM------------------------
if( TachTickFlag ){ //has a new period been measured by the ISR?
noInterrupts(); //halt interrupts briefly to read the period variable and clear the flag
TachTickFlag = false;
ElapsedTicks = isrElapsedTicks;
RPM = 60.0 * ( 1.0 / ((float)ElapsedTicks * 1.0e-06) );
Lastisr = millis();
//Serial.print( "interupt: " ); Serial.println( ElapsedTicks, 1 );
interrupts(); //resumes interrupts
}//end of if
//RPM = (6e-7 / (float)ElapsedTicks) / 1; //compute RPM, 60,000,000/time between pulse/tooth count on ring gear---------------old statment RPM = 60.0 * ( 1.0 / ((float)ElapsedTicks * 1.0e-06) ); but 60*1.0-06 = 60,000,000
//---------------------ElapsedTicksprint RPM to serial monitor every 100mS
timeNow = millis();
if( timeNow - timePrint >= 100ul ){
if(timeNow - Lastisr >= 1000) {
RPM = 0; //default RPM to zero in when engine dies or is shut off rpm doesn't remain with last interupt data
}
//Serial.print( "RPM: " ); Serial.print( RPM, 1 ); //Serial.print( " relay: " ); Serial.println(digitalRead(relay));
timePrint = timeNow;
}//end of if
//end of finding RPM----------------------------------
//start of reading pot and writing pwm--------------------
//Serial.print( "RPM: " ); Serial.print( RPM, 1 ); Serial.print( " relay: " ); Serial.println(digitalRead(relay));
if((RPM > 50) && (RPM < 2000)){// prevents program from driving govener to hard "burn out" when key is on but engine not cranking only sending pwm when trying to start or running, also overrev limiter
digitalWrite(relay, HIGH); //close circuit to govener allowing it to see pwm from ECU
//Serial.println( " relay high " );
}
if((RPM < 50) || (RPM > 2000)){// shuts of power to govener if RPM is lower than 50 or (over rev) RPM is over 2500
digitalWrite(relay, LOW); // shut off relay to govener if rpm below 50 rpm
//Serial.println( " relay low " );
}//end of if
Serial.print( "relay " ); Serial.print( relay, DEC );
//read foot throttle range;470-1020, low-high
total = total - readings[readIndex]; // subtract the last reading:
readings[readIndex] = analogRead(analogInPin); // read from the sensor store in aray (readIndex)
total = total + readings[readIndex]; // add the reading to the total:
readIndex = readIndex + 1; // advance to the next position in the array:
if (readIndex >= numReadings) { // if we're at the end of the array...
readIndex = 0; // ...wrap around to the beginning:
}
average = total / numReadings; // calculate the average:
Serial.print( "foot throttle: " ); Serial.print( average, DEC );
//----------------------------------------------------------------
average = map(average, 470 ,1020, 650, 2000); //re-map average from anolog pot values(470-1020, low-high, reading from foot throttle) into RPM values, idle @650, max rev is 2700 we will use 2500rpm
Setpoint = average; // move data into PID controller
Serial.print( " requested RPM " ); Serial.print( Setpoint, DEC );
Serial.print( " RPM: " ); Serial.print( RPM, DEC );
Input = RPM; // move data into PID controller
myPID.Compute();
Output = constrain(Output, 230, 255); // limits pwm output of PID controller govener starts movning at 230 or just above that,
analogWrite(analogOutPin, Output);
/*
TBpwmsig = (Setpoint - RPM); //gives direction of travel by positive or negitive #, if set point is lower than TB position, subtraction will be give neg # meaning TB needs to close, if set point is higher than TB position outcome would be a positive # and TB would need to open more, outcomes max value would be around 635, bigger the number the farther away from setpoint and faster TB should travel to correct difference.
//Serial.print( " TBpwmsig " ); Serial.print( TBpwmsig, DEC );
if (TBpwmsig > 0){ //throttle plate would be more closed and need to open
TBpwmsig = map(TBpwmsig,0,600,0,245); //need to drive TB harder to compensate for spring tension
//Serial.print(" PWM = ");
//Serial.print(TB1pwmsig,DEC);
TBpwmsig = constrain(TBpwmsig,225,238); // keep PWM signal within motor boards perameters(1-254), need to keep low end high enough to compensate for spring tension
//TBpwmsig = 0;
analogWrite(analogOutPin,TBpwmsig);
//Serial.print(" PWM = ");
//Serial.print(TB1pwmsig,DEC);
//Serial.print("\n");
}
*/
/*
else if (TBpwmsig < 0){ //throttle plate would be more open and need to close
TBpwmsig = (TBpwmsig * -1); //converts negitive number into postitve, next step maping speed of travel
TBpwmsig = map(TBpwmsig,0,100,232,0); //pwm signal doesn't need to be so agressive because throttle plate is traveling with spring tension
TBpwmsig = constrain(TBpwmsig,222,250); // keep PWM signal within motor boards perameters(1-254), need to keep low end high enough to compensate for spring tension
TBpwmsig = 220;
analogWrite(analogOutPin,TBpwmsig); //send pwm to motor board
}*/
//Serial.print( " govener pwm sig " ); Serial.println( TBpwmsig, DEC ); //send pwm to motor board
Serial.print( " govener pwm sig " ); Serial.println( Output, DEC );
//sensorValue = analogRead(analogInPin); // read the analog in value:
//outputValue = map(sensorValue, 0, 1023, 90, 165); // map it to the range of the (pwm) analog out:
//analogWrite(analogOutPin, outputValue); // change the analog out value:
// print the results to the Serial Monitor:
//Serial.print("sensor = ");
//Serial.print(average);
//Serial.print("\t output = ");
//Serial.println(Output);
//end of reading pot writing pwm--------------------
}//end of loop
as far as a circuit diagram, i will edit this post with some pics from my phone, to give you a better idea of what i have Physicly.