Kann ich diesen Schalter mit Pull-up-Eingängen verwenden?

Ich verwende derzeit das mbed Application Shield auf einem Arduino-Board. Ich möchte die mittlere Taste als Eingang für Interrupts verwenden, aber die internen Pull-up-Widerstände bereiten mir Probleme.

Beim Debuggen konnte ich jedoch nicht verstehen, warum ich 2,7 V am Eingang lesen würde, wenn der Schalter nicht gedrückt war, obwohl ich erwartet hatte, 3,3 V zu lesen, unabhängig davon, ob der Schalter gedrückt war oder nicht.

Schema der Schalterkonfiguration

Ist es möglich, diese Konfiguration zum Laufen zu bringen, oder muss ich eine separate Schaltung für einen Taster herstellen?

Ist E(Center) nicht heruntergezogen? Sie können konfigurieren, dass Sie bei steigender oder fallender Flanke einen Interrupt erhalten.
Der interne Pull-up-Widerstand befindet sich im Mikrocontroller. Ich bekomme 3,3 V an SW_CENTER.

Antworten (2)

Die internen Pullup-Widerstände einer MCU liegen typischerweise im Bereich von 30K bis 50K Ohm. Wenn Sie den 2,7-V-Pegel auf den GPIO-Leitungen zur MCU sehen, scheint es wahrscheinlich, dass hier eines von mehreren Dingen eine Rolle spielt:

  1. Sind die Pulldown-Widerstände wirklich 4,7K? Wenn sie beispielsweise bei 47K falsch ausgefüllt sind, könnte dies das Problem sein. Wenn dies der Fall ist, entfernen Sie sie und ersetzen Sie sie durch kleinere Widerstände.
  2. Dies könnte auch ein Problem sein, wenn die gemeinsamen Anschlüsse dieser 4,7-K-Pulldown-Widerstände nicht richtig mit dem GND der MCU verbunden sind. Überprüfen Sie es mit einem Ohmmeter, wenn die gesamte Stromversorgung ausgeschaltet ist.
  3. Möglicherweise haben Sie die GPIO-Pins, mit denen diese verbunden sind, als Ausgangspins im High-Zustand ('1') eingerichtet. Der nominelle 4,7-K-Pulldown an diesen Pins kann dazu führen, dass der Ausgangsantrieb 2,7 V beträgt, und dann zieht der Schalter den Ausgang einfach ganz nach oben auf 3,3 V. Wenn dies der Fall ist, machen Sie diese GPIO-Pins zu Eingängen anstelle von Ausgängen.
Für 1 und 2 habe ich den Widerstand überprüft und er beträgt 4,7 K. Für 3 wurde der Pin im Code als Eingabepin deklariert.

Externe Interrupts können so konfiguriert werden, dass sie auch bei steigender oder fallender Flanke "aufgerufen" werden. Der Schaltplan sagt Arduino R3, also sollte es ein Atmel sein. Also ja, Sie können diese Konfiguration so einstellen, dass sie bei steigendem oder fallendem Interrupt funktioniert.

Ich habe derzeit den Interrupt auf CHANGE, sodass er sowohl bei steigender als auch bei fallender Flanke funktioniert. Diese Konfiguration funktioniert, wenn die Verbindung Eingangspin->separater Schalter->Masse ist, funktioniert aber nicht mit der eingebauten Schalterkonfiguration oben. Die Spannungen, die ich mit der obigen Konfiguration lese, betragen 2,7 V, wenn sie nicht gedrückt werden, und 3,3 V, wenn sie gedrückt werden, was nicht funktioniert.
Um eine schnelle Lösung zu erhalten: Stellen Sie es auf internes Pulldown. Sie erhalten also eine 3,3, wenn der Schalter gedrückt wird. Der Grund für die 2,7 V (glaube ich) liegt in Bezug auf die interne 3,3-Schiene, den Innenwiderstand und den Widerstand von 4,7 K (extern). Ich erinnere mich, es irgendwo gelesen zu haben. Ich melde mich bei dir.
Leider hat dieser Mikrocontroller keine internen Pulldown-Widerstände.