TimFr:
SeedState = digitalRead(LowSeedPin);
// read the state of seed level:
if (SeedState == HIGH) {
// if seed low switch on the SeedState is HIGH:
Serial.println("*******LOW SEED ");
SeedState = 0;
}
What's this code intended to achieve? Doesn't it produce an huge amount of serial output? That may be slowing your sketch down to the point that you get rpmcount > 20, which would screw your calculations up. Why don't you calculate based on the actual revolution count, not assume the count is 20?
By the way, rpmcount is a poor choice of name since it does not hold or count 'rpms'.