Hallo,
ich möchte mit einem Transistor einen Input Capture Eingang eines
Atmega88 triggern. Dazu soll der interne Pullup aktiviert sein und der
Transistor GND durchschalten bei Ankunft des Triggersignals und so ein
Interrupt auf fallende Flanke generieren.
Als Transistor habe ich einen BC547A zur Hand.
Nur ist die Frage, wieviel Strom fließt denn nun am Collector? Ist das
U_min am µC (~4,5V) geteilt durch den Pullup Widerstand des AVRs
(30-60kOhm)?
Gruß
Martin
In Deinem Fall wäre die Kombination aus U_max und R_min
die Interessanteste ( = höchster zu schaltender Strom).
Sind das z.B. 5V mit +-2% und einem PullUp-Widerstand von
30kOhm, kommt da
I_max = (5V * 1,02) / 30000 Ohm = 0,17mA
heraus.
Diesen Strom musst Du also mit dem NPN-Transistor im
Schalterbetrieb sauber durchsteuern können.
Leider schwankt der hfe des Transistors stark durch Produktions-
streuungen, dann gibt es noch die Stromverstärkungsklassen
und die Temperatur geht da auch noch stark mit ein.
Fazit ist also, dass Du - wenn Du einen fehlerfreien
Betrieb auch in rauheren Umgebungen sicherstellen möchtest -,
wie Düsendieb schon sagte, zur Sicherheit mit einem höheren
Basisstrom den Transistor definitiv immer im Schalterbetrieb
betreibst.
Der BC547A ist ja schon der Typ mit der kleinsten garantierten
Stromverstärkung. Laut Datenblatt liegt hfe_min bei 110 bei TA=25°C
(usw.).
Ob das bei allen Herstellern der Fall ist, keine Ahnung.
Würde bedeuten, dass Du mindestens 0,17mA / 110 = 1,5µA Basisstrom
benötigen würdest, um im Schalterbetrieb zu sein.
Das macht aber so niemand. Die Stromverstärkung ist bei tieferen
Temperaturen kleiner als 110.
Beispiel: Nimm einen 10k-Basiswiderstand, wenn Du ihn mit einer
5V-PushPull-Stufe ansteuerst. Dann fließt ungefähr ein Basisstrom
von (5V-0,6V) / 10000 Ohm = 0,44mA, der dann sogar höher als
Dein Kollektorstrom ist (und dann gar keine Stromverstärkung
mehr benötigt :-)).
Ich würde auch drüber nachdenken, nicht die internen PullUp-Widerstände
zu aktivieren, sondern externe zu nutzen (mit kleinerem
Widerstandswert).
Transistoren arbeiten bei Strömen weit unter ihrem Nennstrom
gelegentlich langsam. Auch leidet sehr der Verstärkungsfaktor, siehe
Gumble-Poon-Modell.
Es könnte also wirklich auch hilfreich sein, einen externen Pullup mit
bspw. 1k oder 4,7k zu installieren, wenn die Sache sehr zeitkritisch
ist.
Ich würde die Schaltung also wenigstens schon so auslegen, daß der
Kollektorstrom bei Einschaltung wenigstens 1mA oder mehr hat.
Sonst: Kleintransistor suchen, der noch kleiner als der BC547 ist.
SPICE berücksichtigt auch das Gumble-Poon-Modell. Da sollte es
simulierbar sein.
Wir nutzen hier pauschal 10k bei 5V-Logik und 4k7 bei 3,3V-Logik als
PullUp- oder PullDown-Widerstand (ggf. auch Serienwiderstand).
Da wir immer versuchen, den Strom in einen GPIO oder aus einem GPIO
auf maximal 1mA zu begrenzen, passt das dann recht gut und man hat
eine gewisse Resistenz gegenüber Schmutznebenwiderständen.
Hallo,
ja, die Anwendung ist schon relativ zeitkritisch, da ich eine Frequenz
damit messen möchte.
Könnte ich nicht einfach den Basisstrom auf 1mA ziehen, z.B. mit einen
4,3k an der Basis:
(5-0,6)/0,001A = 4400Ohm --> 4,3k ?
Martin schrieb:> Hallo,>> ja, die Anwendung ist schon relativ zeitkritisch, da ich eine Frequenz> damit messen möchte.
langsam.
Über welche Frequenzen reden wir?
Schnarchlangsam bewegt sich immer noch im Mykro-Sekunden Bereich.
> Könnte ich nicht einfach den Basisstrom auf 1mA ziehen,
Den Basisstrom 'ziehst' du überhaupt nicht. Den liefert die Schaltung,
die vor dem Transistor hängt.
Irgendwie fehlt dir da was:
In die Basis des Transistors rinnt ein Strom hinein. Dieser Strom
verändert die C-E Strecke des Transistors, so dass dort ein maximaler
Strom fliessen kann. Kann - nicht muss.
Das ganze ist also wie ein Wasserhahn. Drehst du den Hahn in eine
bestimmte Stellung auf, dann kann da eine bestimmte Wassermenge durch.
Ob das Wasserwerk diese Wassermenge auch liefern kann, ist eine andere
Frage. Aber wenn sie es kann ... der Wasserhahn kann sie bewältigen. Das
ist deine C-E Strecke.
Und jetzt ist es so, dass du diesen Wasserhahn nicht mit der Hand
betätigst, sondern mit einem Wasserstrahl. Je stärker der auf den Hahn
auftrifft, desto weiter macht der Hahn auf. D.h. der Gartenschlauch, mit
dem du den Hahn anspritzt, muss selbst eine gewisse Wassermenge liefern
können, damit der Wasserhahn weit genug aufgeht, damit da 3000
Kubikmeter Wasser in der Sekunde durchkönnen - wenn das Wasserwerk
liefern kann.
Das Wasser aus dem Gartenschlauch, das ist der Basisstrom. Das kommt aus
dem Schlauch und es gibt nichts was der Hahn an dieser Menge ändern
könnte. Man kann nur im Hahn die Federn ein wenig schwächer einstellen,
so dass auch bei einem schwächeren Wassserstrahl der Hahn schon weit
genug aufmacht. Aber wenn der Strahl von Haus aus schon zu schwach ist,
dann hilft auch das nichts mehr.
Also: Du stellst mit dem Widerstand zwar den Basisstrom ein, aber
liefern muss ihn die Schaltung davor.
Martin schrieb:> Könnte ich nicht einfach den Basisstrom auf 1mA ziehen, z.B. mit einen> 4,3k an der Basis:> (5-0,6)/0,001A = 4400Ohm --> 4,3k ?
Manchmal hilft auch noch die Basisschaltung, wenn die Eingangsschaltung
es zu läßt.
Reichlich Übersättigung des Transistors ist nicht immer gut.
Hast du mal ein Datenblatt über den BC547 mit Kurvenscharen von vielen
Strömen über viele Dekaden? Ich leider nicht. Die haben manchmal nur ein
paar unzureichende Eckwerte, die für die meisten Anwendungen genügen.
LTspice macht es sicherlich. Gratis ohne Registrierung downloadbar.
Allerdings muß man sich damit beschäftigen. In einer halben Stunde hat
man aber was, das kann schon gehen.
Also ich habe jetzt einen 4,7k als Pullup am ICP Eingang hängen.
Das Signal kommt von einem Induktivgeber. Die Spannung des Gebers habe
ich mit einer Z-Diode 4,7V halbwegs stabilisiert.
Diese 4,7V gehen nun an die Basis des Transistors, dessen Emitter mit
GND verbunden ist.
Als Basiswiderstand habe ich 4,7k und testweise auch mal 10k und 1k
ausprobiert. Allerdings schaltet er mir nur niedrige Frequenzen im
Bereich von ca. 20Hz durch. Darüber kommt nichts mehr am ICP an.
Kann mir jemand helfen?
Ich habe testweise mal einen Optokoppler (CNY17-3) mit gleicher
Beschaltung (Z-Diode zur Spannungstabilisierung), allerdings
entsprechend nur 150 Ohm Vorwiderstand vor die LED des Kopplers gehangen
und da kommen die Signale sauber an.
Aber den Koppler würde ich gerne sparen, da die Massen sowieso verbunden
sind...
Martin schrieb:> Aber den Koppler würde ich gerne sparen, da die Massen sowieso verbunden> sind...
Das wäre jetzt die Sternstunde eines Oszilloskops. Guck dir doch mal die
Signale an ;-)
Martin schrieb:> Aber den Koppler würde ich gerne sparen, da die Massen sowieso verbunden> sind...
Bitte mal den gesamten Plan hoch laden. Das bringt sonst hier nichts.
So anbei der Schaltplan, wie es funktioniert (mit Optokoppler).
Den OK hätte ich aber gerne durch einen einfachen Transistor ersetzt, da
die Massen sowieso nicht getrennt sind.
Der Signalverlauf des Induktivgebers sieht qualitativ so aus, wie im
Anhang. Mit steigender Drehzahl steigt auch der Spannungsausschlag. Die
Z-Diode (1/4W) mit 220 Ohm Vorwiderstand verkraftet dies aber problemlos
ohne warm zu werden.
Tja, so ein CNY17 ist in dieser Schaltung langsam.
Um ihn zu beschleunigen, hatte ich hier selbst mal einen Thread, vor
einem Jahr. Das endete in einer Zusatzbeschaltung mit Transistoren in
Emitterkopplung und schneller Basisschaltung. Man bekommt wenigstens
eine Schaltflanke optimiert und beschleunigt, bei beiden wird es
komplizierter. Weil man den Arbeitspunkt nahe an den Anfangsbereich
einer Flanke setzen muß.
Die Forensuche mit "CNY17" sollte auch zu meinem alten Thread führen. Es
sollte aber hier dann keine weitere Rolle mehr spielen. Das ist nett,
wenn man sonst nichts mehr zu tun hat.
Mit Transistoren ohne den Optokoppler wird die Sache jedenfalls
schneller.
Den Transistor sollte man anfangs mal mit einem Kollektorwiderstand ab
1k und Basisvorwiderstand 10k versuchen, bzw. IC/IB von 10. Und sich
dann an bessere Werte heran tasten. Am besten wäre es, Datenblätter mit
Kurven zu finden.
Aber heute alles nicht mehr. Es ist Zeit für den MAD,
Matratzen-Abhör-Dienst. Das Sandmännchen ist auch schon um. ;-)
Also ich habe jetzt 1k als Pullup versucht und einmal 10k als
Basiswiderstand und einmal 4,7k als Basiswiderstand. Leider kommt die
Frequenz nicht richtig an bzw. wird nicht sauber getriggert :(
Mal nochmal die Transistorschaltung auf.
Ich glaube, du hast einen Denkfehler! Du hast eine L-Auswertung und
bietest H-Impulse an.
Nimm noch einen Transi und baue einen Schmitt-Trigger.
Ich versuche es trotz später Stunde es hinzukriegen.
Optokoppler
H-Pegel, LED leuchtet, Transi schaltet durch, LOW am Prozessor
Transistor
H-Pegel, Basis des Transis ist auch wegen der Restströme schon auf H,
---> keine Änderung,
Wenn L, dann wird der Transi wegen des Basisvorwiderstandes nicht auf L
gezogen, es reicht nicht den auf L zu ziehen
am Prozessor liegt mehr oder weniger L an, also kann nur eine Flanke von
L auf H kommen
Fazit:
Der Optokoppler negiert nicht
Der Transi negiert
Mindestens muß der Transi einen R als Pullup oder Pulldown erhalten.
Beides ist Murks. Du brauchst einen Schmitt-Trigger.
Michael_ schrieb:> Du brauchst einen Schmitt-Trigger.
Irgendwas in dieser Richtung. Schmitt-Trigger oder Komparator.
Ich hab mir noch mal das Signal des Induktivgebers angeschaut. Der
liefert doch an einer Stelle auch noch ein sehr schwaches Signal,
wahrscheinlich bei langsamer Bewegung. Dann wird das weder mit
Optokoppler noch mit Transistorinverter was.
Was stellen die 2 Graphen überhaupt genau dar? Die Sinuswelle ist ja
noch einleuchtend. Aber der Rest nicht. Da ist keine Beschriftung dran.
Und, wie sind die technischen Daten des Induktivgebers?
Ausgangsimpedanz? Ausgangssignalstärke? Vielleicht bricht das Signal ja
am Eingang schon zusammen.
Wilhelm Ferkes schrieb:> Was stellen die 2 Graphen überhaupt genau dar? Die Sinuswelle ist ja> noch einleuchtend. Aber der Rest nicht. Da ist keine Beschriftung dran.
Also wie gesagt, mit dem OK funktioniert das Ganze. Ob das Signal jetzt
genau so aussieht mit diesen "Zwischensprüngen" kann ich nicht sagen.
Leider habe ich kein Oszi um mir das genau anzusehen. Ich vermute aber
eher nein, sonst würde der OK noch ein weiteres Signal durchschalten und
das würde ich feststellen.
Ich hätte eine kleine Bitte:
Könnte mir jemand, der sich mit LTSpice auskennt, die Schaltung mit dem
OK "simulieren" und zwar, wie lange es dauert, bis der Low Pegel am
Prozessor bzw. ICP ankommt und dort erkannt wird?
Also Optokoppler wäre interessant ein CNY17-3 oder eine einfache
SMD-Variante wie LTV357T.
Wenn ich die genaue Zeit wüsste, könnte man das nämlich in der Software
als Offset kompensieren.
Martin schrieb:> Könnte mir jemand, der sich mit LTSpice auskennt, die Schaltung mit dem> OK "simulieren" und zwar, wie lange es dauert, bis der Low Pegel am> Prozessor bzw. ICP ankommt und dort erkannt wird?
Du hast kein Zeitproblem! Du hast ein Pegelproblem!
Den Transi mußt du an der Basis beschalten. Mit deinen R1 u. R2 kriegst
du den nie gesperrt.
Setze einen HC(T)14 davor und dein Problem ist erledigt. Das ist ein
Schmitt-Trigger IC.
Hallo Michael und andere,
ich habe leider noch nie mit Schmitt-Triggern gearbeitet. Ich habe mir
jetzt mal den Artikel hier im Wiki durchgelesen.
Dennoch weiß ich noch nicht genau, wie ich den Schmitt-Trigger
anschließe bzw. wo genau ich diesen hinsetze. Vor oder nach der Z-Diode?
Falls jemand in meine obige Schaltung einen Schmitt Trigger integrieren
könnte bzw. einen geänderten Schaltplan zeichnen könnte (gerne auch per
Hand und als Foto) wäre ich ihm sehr verbunden.
Mir genügt es, nur auf eine Signalwelle (positive Welle) zu triggern.
Die andere schneide ich mit einer Diode sowieso weg.
Danke.
sol das denn für ein "Induktivgeber" sein ? Evt. ein induktiver
Näherungsschalter? Die machen die Frequenz meist nicht und würden keinen
OK benötigen. Spannungsteiler würde genügen falls der Geber z.B. mit 24
V betreben wird.
Martin schrieb:> Mir genügt es, nur auf eine Signalwelle (positive Welle) zu triggern.> Die andere schneide ich mit einer Diode sowieso weg.
Das macht ein Schmitt-Trigger oder Komparator auch.
In Wikipedia findet man auch die Unterschiede zwischen Schmitt-Trigger
und Komparator, wenn man dort die beiden Namen mal eingibt.
Was hier zur Beurteilung und Einschätzung mal benötigt würde, wären
konkrete Daten des Induktivgebers. Und, wie dieser eingesetzt wird, ich
meine, welche Signale davon verarbeitet werden.
Wilhelm Ferkes schrieb:> Was hier zur Beurteilung und Einschätzung mal benötigt würde, wären> konkrete Daten des Induktivgebers.
Und dazu gleich noch ein Oszillogramm (mit Angabe zur Skalierung) von
den Signalen
Werner schrieb:> Wilhelm Ferkes schrieb:>> Was hier zur Beurteilung und Einschätzung mal benötigt würde, wären>> konkrete Daten des Induktivgebers.>> Und dazu gleich noch ein Oszillogramm (mit Angabe zur Skalierung) von> den Signalen
Auf jeden Fall gibt es Lösungen. Das Stichwort heißt
"Signalkonditionierung". Dafür muß man aber alles wissen, was eine
Schaltung bzw. ein Eingangssignal macht.