Forum: Mikrocontroller und Digitale Elektronik Einige anfängliche Fragen


von Anfänger (Gast)


Lesenswert?

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

von Hauke Radtki (Gast)


Lesenswert?

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

von ---- (Gast)


Lesenswert?

> 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).

von Dirk (Gast)


Lesenswert?

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

von TobiFlex (Gast)


Lesenswert?

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

von Anfänger (Gast)


Lesenswert?

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

von FireFox (Gast)


Lesenswert?

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.

von Quacks (Gast)


Lesenswert?

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

von FireFox (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.