hallo ich bin gerade dabei mit mikrocontrollern(ATmega8)und der Programiersprache Assembler herumzuexperimentieren. aber ich bin auf diesem gebiet noch ein neuling. also meine Fragen 1. warum sollte man so programmieren , das 0V=1 und 5V=0 ist? 2. wie kann man mit diesen Pegeln einen Transistor ansteuern am Transi muss man ja die Basis gegen +5V legen und der contoller würde ja bei einer internen 1 0V am pin Anlegen. oder sollte man die Ausgänge die einen Transi steuern wieder umgekehrt ansteuern? Übrigends welchen vorwiderstand muss man bei einen Standart Transi(BC548B) verwenden wenn man ihn mit 5V ansteuern muss. ich nehm immer 1Kohm 3. wie aktiviert man die internen Pull up? 4. kann man wenn man die internen Pull ups aktiviert hat den Pin direkt ohne Vorwiederstand auf GND legen? danke schon im voraus es werden sicher noch mehr Fragen von mir desbezüglich kommen mfg Benedikt Lippert
1.) ?? Wenn du nen pin= 1 setzt, ist er auch 5V (solange pullups dransind, oder die internen aktiviert sind) 2.) einfach nen vorwiderstand dran (ich nehm immer 5,6k) und dann an die basis 3.)Sind aktiviert, solange du sie nicht deaktivierst (zumindest beim port als ausgang) 4.)Könnte gehen würds aber nich machen ... sicher is sicher
> Wenn du nen pin= 1 setzt, ist er auch 5V (solange pullups > dransind, oder die internen aktiviert sind) Das hat mit den Pullups nix zu tun! > Sind aktiviert, solange du sie nicht deaktivierst (zumindest beim > port als ausgang) auch falsch. Und gerade als Ausgang sind die Pullups nicht aktiv (da push/pull-Endstufe). > Könnte gehen würds aber nich machen ... sicher is sicher geht und ist sicher! ad 1.) Man "sollte nicht so programmieren", das ergibt sich daraus, daß die ersten AVRs mehr strom "aufnehmen" als "abgeben" konnten, deswegen wurden anzusteuernden LEDs (ich nehme an darauf beziehst du dich) gegen Vcc geschaltet... daraus ergibt sich die von dir genannte "Methode". ad 2.) 1k ist ok. Damit steuert er auch wirklich ganz durch. ad 3.) DataDirectionRegister auf Input und PORTRegister auf 1 schalten. ad 4.) ja. ----, (QuadDash).
Hallo, zu 4.) Sowie QuadDash es sagt. Es funktioniert finde es sein gutes Feature vom AVR (alte PIC's haben es nicht / mehr Bauteile somit). Man sollte dann nur beim programmieren aufpassen das man den PIN nicht als Output schaltet und dann auf GND legt. Zur Sicherheit koennte man nen 1k in Reihe legen. Mfg Dirk
Ich habe mir zwar auch erst vor 3 Wochen einen ATMEGA zum Experimentieren zugelegt aber denke Deine Fragen gut beantworten zu können: zu 1.: warum sollte man so programmieren , das 0V=1 und 5V=0 ist? Die Frage macht eigentlich nur Sinn wenn man sie auf das DDR bezieht. Steht da eine 0 ist der zugehörige Pin ein Eingang. Steht da eine 1 ist der zugehörtge Pin ein Ausgang. zu 3.: wie aktiviert man die internen Pull up? Den pin mit einer 0 im DDR als Eingang definieren und in den PORT eine 1 schreiben. Schickst Du eine 0 an den PORT wird der Pull up abgeschaltet. zu 4.: kann man wenn man die internen Pull ups aktiviert hat den Pin direkt ohne Vorwiederstand auf GND legen? Pull ups machen nur Sinn an Eingängen oder open drain Ausgängen. Solange der Pin ein Eingang ist kann er bedenkenlos auf GND (z.B. durch einen Taster) gelegt werden. Bei einem Ausgang ist Vorsicht geboten! Dazu undedingt im Datenblatt nachlesen ob der Pin ein open drain Ausgang ist, anderenfalls wird er sehr wahrscheinlich zurstört. zu 2.: wie kann man mit diesen Pegeln einen Transistor ansteuern Da gibts verschiedene Möglichkeiten. Als Inverter z.B. Emitter an GND, Kollektor über den Lastwiderstand an VCC und die Basis über einen Widerstand an den pin des AVR. 1KOhm ist ein guter Standardwert. Wer es komplziert machen will berechnet den Kollektorstrom, teilt diesen durch die Stromverstärkung und erhält so den benötigten Basisstrom. Dann zieht man von dem 1-Pegel 0,6 Volt Basis-Emitterspannung ab und teilt diese Differenz durch den zuvor errechneten Basisstrom. Größer als der errechnete Wert soll der Widerstand nicht sein. Aber meißt möchte man ja ein Schaltverhalten des Transitors und kennt auch nicht seine genaue Stromverstärkung. Also 470 bis 1KOhm sollten für Relais und LEDs ausreichen. Ansonsten sind Transistorschaltungen eine Thematik für sich. Viele Grüße TobiFlex
hallo danke für eure Antworten Bez. Frage 1 im Tutorial wird so programmiert und ich finde das etwas umständlich da man durch diese Programierart schlecht Transistoren o ä ansteuern kann. hab mich jetzt so geeinigt: Eingäng: interner Pull up aktivieren und zum Betätigen mit einem Taster o.ä. gegen GND ziehen. (Logik vertauscht 5V= 0, 0V= 1) spare ich mir äusere Pull down Wiederstände und spare geld) Ausgänge : 5V=1 0V=0 was haltet ihr davon?? mfg Benedikt
Das ist Dein gutes Recht als Programmierer. :) Ob 5V = "AN" oder "AUS" bedeutet, hängt eigentlich nur von der externen Beschaltung ab. Wenn Du an einen Ausgang eine LED über einen Vorwiderstand nach +5V legst, musst Du am Controller eine 0 Ausgeben um die LED einzuschalten. Wenn Du die LED nach Masse legst, dann musst Du den Ausgang auf 5V schalten um die LED anzusteuern. Um einen Transistor anzusteuern würde ich das aber genauso machen wie Du. Den COntroller über 5,6k an die Basis (die ja nach GND schaltet) Dann bedeutet 5V = "AN", dass der Transistor durchschaltet.
Hallo, 5,6k kommt mir etwas groß vor, da hast du nichtmal 1mA Basisstrom. Na ja, mit deinem BC548B kannst du dann ja wenigstens´ ne LED treiben, die du aber auch direkt anschließen könntest. :) Grüße
ja, das ist natürlich bullshit. je nach dem welcher transistor darfs auch 1k oder größer sein. da war ich wohl in gedanken noch bei dem obigen thread
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.