Frage zu Spannungsteiler

Hallo zusammen,

um einen Eingang nicht zu Überlasten habe ich einen Spannungsteiler aus einem 4.7k und 1k Widerstand (siehe Bild). Das Signal das ich bekomme sind max. 5.5V (5.5V PPM Signal für einen Servo das per pulseIN() gemessen wird), aktuell teste ich allerdings mit 5V, da ich die Fernsteuerung die das Signal liefert nicht zur Verfügung habe.

Nun habe ich folgendes Problem. Das 5V PPM Signal kann ich am Eingang der Schaltung mit dem Oszilloskop messen, das Signal sieht auch sauber aus und hat den erwarteten 5V HIGH Wert.
Am Arduino Eingang hinter dem Spannungsteiler sehe ich das gleiche Signal, dort allerdings wie erwartet mit ca. 4.4V statt den 5V, was dem reduzierten Pegel durch den Spannungsteiler entspricht.
Allerdings erkennt der Eingang des Arduino den Eingang nicht als HIGH und pulseIn() liefert keinen Wert.
Dabei sollten sogar 3V als HIGH Signal ausreichen.
Lege ich das 5V Signal direkt auf den Eingang, dann erkennt pulseIn() das Signal ohne Probleme.

Was übersehe ich?

Viele Grüße,
Mario.

Gesamtwiderstand weiter verringern könnte Abhilfe schaffen. Spannungsteiler sind nur sehr einfach strukturierte Pegelwandler und in einigen Anwendungsgebieten zu langsam auf der Kapazität der Ports.
Wie hoch ist die PWM?

Ansonsten Sketch zeigen.

Danke für die schnelle Antwort. Das Signal ist ein Servo-Signal mit 50Hz. Der HIGH Pulse ist minimal 500µs und maximal 2.5ms lang.
Ich habe jetzt erstmal einen Jumper vor den Eingang gesetzt, dann kann ich das 5V Signal direkt auf den Port leiten und mit dem Jumper später auf die 5.5V umschalten. Wenn das dann nicht klappt, muss ich die Widerstände reduzieren. Vermutlich erstmal mit 2.2k und 470Ohm.

Mario.

Hallo Mario,

wenn das so "langsame" Pulse sind, warum ließt du die mit micros nicht aus? Sicherlich besser als dieses pulsein, was soweit ich weiß, nur blockiert. Hab es selber nie genutzt.

mkl0815:
Hallo zusammen,

um einen Eingang nicht zu Überlasten habe ich einen Spannungsteiler aus einem 4.7k und 1k Widerstand (siehe Bild). Das Signal das ich bekomme sind max. 5.5V (5.5V PPM Signal für einen Servo das per pulseIN() gemessen wird), aktuell teste ich allerdings mit 5V, da ich die Fernsteuerung die das Signal liefert nicht zur Verfügung habe.

Nun habe ich folgendes Problem. Das 5V PPM Signal kann ich am Eingang der Schaltung mit dem Oszilloskop messen, das Signal sieht auch sauber aus und hat den erwarteten 5V HIGH Wert.
Am Arduino Eingang hinter dem Spannungsteiler sehe ich das gleiche Signal, dort allerdings wie erwartet mit ca. 4.4V statt den 5V, was dem reduzierten Pegel durch den Spannungsteiler entspricht.
Allerdings erkennt der Eingang des Arduino den Eingang nicht als HIGH und pulseIn() liefert keinen Wert.
Dabei sollten sogar 3V als HIGH Signal ausreichen.
Lege ich das 5V Signal direkt auf den Eingang, dann erkennt pulseIn() das Signal ohne Probleme.

Was übersehe ich?

Viele Grüße,
Mario.

Deine Werte passen nicht mit der Schaltung zusammen.
Du hast eine Eingangsspannung von 5,5V, die an "Input" anliegt?
Dann hast du an D11: 5,5V / (1k+4,7k)*1K = 0,96V Das kann der Arduino nicht als High erkennen.
Oder sind in deiner Skizze die Widerstände vertauscht?
Dann hättest du an D11: 5,5V / (1k+4,7k)*4,7K = 4,5V.

Übrigens: es gilt nicht die Vorschrift "keine Spannungen > 5V am Eingang" sondern die Vorschrift: "keine Spannungen > VCC am Eingang". VCC kann aber, wenn du über USB versorgst, durchaus nur 4V haben.

du kannst aber einfach die internen Schutzdioden verwenden: mach anstatt des Spannungsteilers einen 10K-Längswiderstand rein, das reicht.

Und einlesen würde ich das ganze mit Interrupt, damit dein Code nicht blockiert wird.

Hallo Gunther,

wenn die Widerstände vertauscht wären, warum messe ich dann 4,4V am Eingang des Arduino gegen die gemeinsame Masse?
Oder Du hast Recht und ich habe in der Schaltung die Widerstände vertauscht.

Das Blockieren für 100ms ist für die geplante Anwendung kein Problem.

Mario.

mkl0815:
Oder Du hast Recht und ich habe in der Schaltung die Widerstände vertauscht.

mkl0815:
Das Blockieren für 100ms ist für die geplante Anwendung kein Problem.

Dann vergiss aber nicht die timeout Option. Sonst legt dir pulseIn für 3min alles lahm, wenn mal keine Pulse kommen.

Hallo Gunther,

was auch immer ich mit dem Oszilloskop morgens um 04:30 Uhr gemessen habe, aber 4,4V waren es vermutlich nicht :-). Ich habe jetzt in der Schaltung die beiden Widerstände vertauscht und wie zu erwarten kann ich nun super die Pulslängen messen.

Zum Testen was nun genau am Arduino ankommt, hatte ich das Signal vom Spannungsteiler kurzerhand auf einen analogen Eingang gelegt und statt des gepulsten Signals einfach mal die 5V auf den Spannungsteiler gelegt. Am Analogeingang hab ich dann Werte um die 196 bekommen, was ziemlich genau den von Dir berechneten 0,96V entspricht (196/1023*5V = 0.957...).

Also danke nochmal für den Hinweis mit den vertauschten Widerständen.

Mario.