Ich hatte mal ein ganz ähnliches schaltungstechnisches Problem. Mit
NPN-Transistoren wäre das nicht passiert.
Der Controller wird mit 5 Volt versorgt, nehme ich an. Wenn der
Portpin, der die Basis eines jeweiligen PNP-Darlingtons ansteuert, auf
Low geschaltet ist, leitet der PNP. Sollte jedenfalls, der Logik nach.
So weit, so gut.
Wenn aber nun der Portpin auf High ist, und der nachgeschaltete
Transistor sperren sollte, so funktioniert das nur dann problemlos,
wenn die Spannung am Emitter die Spannung an der Basis nicht wesentlich
übersteigt.
Bei einer Spannung am Emitter, die wesentlich höher ist als 5V, fließt
in den Transistor bereits ein nennenswerter Basisstrom, auch wenn er
(mit High-Pegel angesteuert) gar nicht leiten sollte. Für den
Transistor ist dann nämlich die Spannung an der Basis (+5V) bereits
deutlich negativer als die am Emitter (+12V), folglich fängt er an zu
leiten.
Leider habe ich die Schaltung damals verworfen, anstatt sie zu
überarbeiten, daher kann ich hier keine praxiserprobte Lösung
präsentieren. Allerdings gibt es mehrere theoretische Ansätze:
Wenn es NPN-Transistoren sein dürfen, alle Ausgänge invertieren und die
Sache funktioniert.
Wenn so wenig wie möglich geändert werden soll, könnte man versuchen,
zwischen die Basisanschlüsse der Transistoren und die Portpins, die sie
ansteuern, Z-Dioden von ein paar Volt (z.B. 3V3) einzufügen. Dies würde
die an der Basis erforderliche Mindest-Spannung erhöhen und die
Transistoren in gewisser Weise unempfindlicher machen. Das Problem
dabei ist, daß der Spannungsabfall an einer Z-Diode bei geringen
Strömen oft nicht dem Nennwert entspricht, und sich, in diesem eher
ungünstigen Teil der Kennlinie mit dem Basisstrom ändern kann. Einen
Versuch wäre es aber wert, wenn eine Notlösung gefragt ist.
Für ein Serienprodukt würde ich das aber nicht empfehlen. Dann lieber
andere Transistoren, oder Optokoppler verwenden, was die Sache aber
komplizierter macht.
Eine andere Schummel-Lösung wäre es, den Mikrocontroller über einen
Negativ-Spannungsregler zu versorgen, d.h. +5V an +12V anschließen,
aber (!) die Masse/Ground-Leitung nicht an 0V, sondern an eine
geregelte Spannung von 7V anzuschließen. Der Mikro merkt davon nichts,
und die Transistoren sollten nun korrekt ansprechen. Man sollte aber
wissen, was man tut. Schaltungen, in denen die Masse nicht auf 0V
liegt, können sich, insbesondere beim Anschluß an externes
Meßequipment, als tückisch erweisen.