125Khz Rechteck Signal messen

Ich habe hier ein Signalgenerator der einen TTL Inkrementalgeber Simuliert.

Jetzt möchte ich die positiven Flanken 0->4V im ESP einlesen und im Seriellen Monitor ausgeben.

Dabei kann die Frequenz zwischen 0 und 125khz betragen.

Ich hätte den Takt Pin (4V) mit einem 10KOhm vorwiderstand an die Basis eines Transistors sowie die 3,3V out über [100Ohm] am Ermittor angeschlossen. Dann noch Collector an GPIOx und somit die Hardware strecke fertig (?).

Bei der Software konnte ich mir leider noch keinen Ansatz ergoogeln.

-> Mit welchen Boardmittel(Code?) würde man so eine Messung realisieren?

Danke.

Kannst das bitte mal als Schaltbild aufzeichnen und beischreiben, welchen Transistor du verwendest. Anhand deiner undeutlichen Beschreibung vermute ich, hast du es falsch angeschlossen.

Warum nimmst du nicht einfach einen Spannungsteiler
Du wirst die 125khz nicht messen können und gleichzeitig etwa auf dem Seriellen Monitor ausgeben können. Das wird zeitlich ehr nicht klappen

TTL inkrementalgeber ? Hat der letztlich 2 phasenversetzte Signale die du messen willst ?

Zumindest in den 8 Bit Arduinos gibt es ICPn Input Capture Pins, mit denen eine Flanke bis auf die Controller Taktfrequenz genau gemessen werden kann.

Hallo ROB_87

Nimm eine Suchmaschine deiner Wahl und befrage das WWW mit "frequenzmessung +arduino" um ein paar Ideen einzusammeln.

Zur Spannungsanpassung genügt, wie schon erwähnt, ein Spannungsteiler.

Ein Interrupt wäre eine Möglichkeit, siehe attachInterrupt().

Programm zum Start
const int intPin = 32;
bool merker = false;
uint32_t zaehler = 0;

void IRAM_ATTR isr() {
  zaehler++;
  if (zaehler > 50000UL) {
    merker = true;
    zaehler = 0;
  }
}

void setup()
{
  Serial.begin(115200);
  delay(500);
  Serial.println("\nStart");
  pinMode(intPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(intPin), isr, RISING);
}



void loop()
{
  static uint32_t vorhin = millis();

  if (merker) {
    merker = false;
    Serial.print("millis(): ");
    Serial.print(millis());
    Serial.print("\tdiff: ");
    Serial.print(millis() - vorhin);
    Serial.println(" ms");
    vorhin = millis();
  }
}

Scheint mir falsch.
Hast Du einen NPN oder einen PNP Transistor?
Auf alle Fälle gehört der Emitter auf GND bzw + Versorgungsspannung (3,3V). Der Collektor kommt an den Eingang. Dann braucht es noch einen Pullup bzw Pulldown (externeno oder internen)

Grüße Uwe

Allerdings arbeitet das (NPN) dann als Inverter. Ob der TO das will ?
Daher muss er mal ein Schaltbild liefern.

Hmm... Nur die Informationen "es gab eine Flanke" ist vielleicht nicht so nützlich. Kannst du einmal den Signalverlauf aufzeichnen und beschreiben was dich daran genau interessiert?