How TO, DIY injector flow testing.
#3
Per a conversation I had with Dale Follet though, I'll probably power the relay separately with it's own 5v source.
#4
No need to power it separate. Arduino will handle the on/off. The injectors will need more than 5v to operate properly. Give them a dedicated 12v source and pass the grounds through the relay/MOSFET, not the power.
#5
That's how it's setup, relay trigger's ground for the pre-programmed time, injectors are wired constant hot.
#6
In the next couple of months, I'll probably be posting the plans/code for my injector tester.
LCD screen, dials to adjust RPM/duty cycle, full static and dynamic testing with 1000cc tubes.
Total cost is about $100 for tubes, wood, arduino components, etc.
LCD screen, dials to adjust RPM/duty cycle, full static and dynamic testing with 1000cc tubes.
Total cost is about $100 for tubes, wood, arduino components, etc.
#7
At the moment it's all over my head, I struggled mightily just to get this working lol.
Now that I have my feet wet though, the possibilities for everything are endless!
Trending Topics
#8
Most of Dale's stuff is pretty entry level. Use the code to learn the basics. He does a decent job of having arduino do simple tasks that are useful, but hasn't quite gotten there on some of the more complicated stuff. He's tried to hit me up a few times for my code to make arduino and megasquirt communicate together. I use it for closed loop idle control on microsquirt, and for feeding data from extra sensors back into micro so it will datalog them alongside its own parameters (oil pressure, 2nd wideband, water pressure, pre-intercooler pressure, EGT, etc).
#10
Final product, for static testing, here,
final code here, still working on dynamic,
int ledPin = A5; int switchPin = A0; boolean lastButton = LOW; boolean currentButton = LOW; int switch2Pin = A1; boolean last2Button = LOW; boolean current2Button = LOW; void setup () { pinMode(ledPin, OUTPUT); pinMode(switchPin, INPUT); pinMode(switch2Pin, INPUT); digitalWrite(ledPin, HIGH); } boolean debounce(boolean last) { boolean current = digitalRead(switchPin); if (last != current) { (delay(5)); } return current; } boolean debounce2(boolean last2) { boolean current2 = digitalRead(switch2Pin); if (last2 != current2) { (delay(5)); } return current2; } void loop () { current2Button = debounce2(last2Button); if (last2Button == LOW && current2Button == HIGH) { /* * Here is where the static flow is. currently set to * 10 seconds of on time. This will need changed for * different flow rate injectors so you dont overfill * your graduated cylinders. */ delay(500); digitalWrite(ledPin, LOW); delay(10000); digitalWrite(ledPin, HIGH); } }
final code here, still working on dynamic,
int ledPin = A5; int switchPin = A0; boolean lastButton = LOW; boolean currentButton = LOW; int switch2Pin = A1; boolean last2Button = LOW; boolean current2Button = LOW; void setup () { pinMode(ledPin, OUTPUT); pinMode(switchPin, INPUT); pinMode(switch2Pin, INPUT); digitalWrite(ledPin, HIGH); } boolean debounce(boolean last) { boolean current = digitalRead(switchPin); if (last != current) { (delay(5)); } return current; } boolean debounce2(boolean last2) { boolean current2 = digitalRead(switch2Pin); if (last2 != current2) { (delay(5)); } return current2; } void loop () { current2Button = debounce2(last2Button); if (last2Button == LOW && current2Button == HIGH) { /* * Here is where the static flow is. currently set to * 10 seconds of on time. This will need changed for * different flow rate injectors so you dont overfill * your graduated cylinders. */ delay(500); digitalWrite(ledPin, LOW); delay(10000); digitalWrite(ledPin, HIGH); } }