Lesen Sie den 12-V-Logik-Pin von Arduino mit einem NPN-Transistor

Ich habe einen Induktivitätssensor an einer CNC-Maschine, der beim Auslösen auf 12 V hoch geht (offener Kollektor, wenn nicht). Ich möchte diesen Eingang auf meinem Arduino lesen, der eine 5-V-Logik verwendet.

Ich dachte, ich könnte einfach einen einfachen NPN-Transistor verwenden, um die Logikpegelverschiebung durchzuführen. Würde das funktionieren? Ich möchte es nicht testen, falls es den Arduino braten könnte.

Antworten (2)

Es wird klappen. Diese Schaltung sollte auf logisch 1 sein, wenn kein Signal vorhanden ist, und auf logisch 0, wenn ein 12-V-Signal vorhanden ist.

                +5V
                 |
                 -
                |1|
                |0|
                |K|
                 -
                 |----Arduino
                 |
                /
12V --|10K|----|
            |   \
            -    >
           | |    |
           | |   ---
            -     -
            |
           ---
            -

PS 10K-Widerstände sind nur als generischer Wert vorhanden. Zu diesem Zweck können Sie fast alles verwenden. Basis-Masse-Widerstand beträgt 100 K, wie von @Russell empfohlen.

Fügen Sie 'aus Sicherheitsgründen' 100 k von der Basis zur Erde hinzu - insbesondere dann, wenn der Eingang ein offener Stromkreis sein kann. Ohne dies kann ein Transistorleck den Transistor einschalten, wenn der Eingang offen ist. Bei einem Leckstrom von Basis zu Erde von 100 k müsste Vbe > sagen wir 0,4 V sein, um eine Wirkung zu erzielen. Also i=V/R = 0,4/100k = 4 UA. Nicht viel, aber solange es weniger als das ist, sollte alles gut sein.

Wenn Sie nur vom Sensor lesen müssen, würde ich stattdessen einen einfachen Spannungsteiler vorschlagen.

Schließen Sie den Sensor mit 3 10k-Widerständen in Reihe dazwischen an Masse an. Schließen Sie Ihr Arduino zwischen dem 2. und 3. Widerstand an und Sie sind fertig.