Delivering Automotive Tach Signal

I'm trying to drive a tachometer off of my project car which relies on measuring dwell time of square waves.

This is my code, and it resembles that of a friend of mine who works on custom automotive ECUs, except mine won't move the needle past 850RPM for the life of me.

void switch_tach(int delayAmount) {
  if (digitalRead(TONE_PIN)) {
    digitalWrite(TONE_PIN, LOW); 
    
  }
  else {
    digitalWrite(TONE_PIN, HIGH);
    delay(delayAmount); 
    
  }
}
void loop() {

//    delay(3);
//    switch_tach(2);
    
    for (uint32_t timebase = 50000; timebase > 0; timebase-- ) {
      delayMicroseconds(timebase);
      switch_tach(2);
    }
}

But I've noticed that the voltage going out from my collector pin on my NPN (2N2222A) is only about 2V while the tach requires 12V. Maybe I'm mistaken on how this transistor should be wired? I have attached the circuit to this post.

Just a little in over my head.

basecircuit.jpg

basecircuit.jpg