PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgang GND oder VCC?



Da_Vinci13
12.02.2009, 11:29
Hi,
Ich hab wiedereinmal eine Frage:
Wenn ich eine LED habe und diese an einem PIN anschliese, welchen ich auf Ausgang geschaltet habe muss ich diese dann mit VCC vom mC verbinden oder von der Batterie?
Und wenn ich z.B. ein Taster an einen PIN anschliesse welchen ich auf Eingang programmiert habe, muss ich dann den Taster mit GND oder mit VCC verbinden?
Ich hab mir mal die Grundschaltung des ATmega32 angesehen und dort wird der Taster mit GND der Batterie verbunden.

Grüsse!

Jaecko
12.02.2009, 11:50
Wie du das anschliesst, kommt eben drauf an...

Wenn die Batterie den Controller (direkt) versorgt, isses egal, welches VCC verwendet wird, da beide gleich sind. Da die LED ja sowieso mit Vorwiderstand läuft (bzw. laufen sollte) ist es auch egal, wenn zwischen Batterie und Controller noch ein Spannungsregler ist... Solange du an den beiden LED-Anschlüssen ne Spannungsdifferenz mit richtiger Polung aufbauen kannst => Stromfluss => LED leuchtet.

Beim Taster ist auch die Frage, wie du abfragen willst.
Du kannst so schalten, dass der Taster beim Drücken von VCC nach GND wechselt (Abfrage auf 0 im Programm) oder andersrum (auf 1 abfragen).

Ich mach das mit einzelnen Tastern immer so, dass ich den Pin mit dem internen Pull-Up auf High ziehe. Durch Drücken des Tasters wird der Pin dann auf Masse gezogen.
Vorteil: Ausser dem Taster brauche ich keine weitere Hardware wie Pull-Ups/-Downs etc.
Nachteil: Man muss umdenken, da im Programm 1 = Aus und 0 = An ist.
Aber in C dank der #defines kein Problem.

Da_Vinci13
12.02.2009, 12:16
Hi, Danke für die Antwort!
Also wenn ich einen Pin auf High schalte, dann ist der PIN auf Masse und wenn ich ihn auf Low schalte ist er auf VCC? Ist das so richtig?

Und wenn einen Taster drücken, dann wird beim PIN ja True angezeigt und darauf auf Masse gezogen?

Also ich hab das RN-Control, sollte ich dort vielleicht die 3 Vcc an der seite nutzen? Oder soll ich dort gleich direkt an der Batterie anschliessen?

Grüsse!

Jaecko
12.02.2009, 12:23
Nene. Low = GND = Masse, High = VCC = 5V bzw. 3.3V.
Wenn du den Taster drückst, schaltest du in den jeweils anderen Zustand.
Also wenn du den Pin intern auf High ziehst, muss der Schalter den beim Drücken nach Masse (Low) ziehen, sonst passiert nichts.

Ob "True" angezeigt wird, kommt drauf an wie du abfragst.
Wenn du dir das PIN-Register anschaust, steht beim jeweiligen Pin ne 1 drin, wenn 5V/High anliegen, bzw. 0 wenn Low/Masse anliegt.

if (PINA & (1 << PINA4)) liefert dir True, wenn an PinA4 high-Pegel anliegt.
if (!(PINA & (1 << PINA4))) liefert dir True, wenn an PinA4 low-Pegel anliegt.

Wenns um Taster geht, würd ich maximal die VCC verwenden. Wenn der Taster direkt die Batteriespannung durchschaltet (12V?), wär das ungesund für den AVR.

Bei LEDs ist es wie gesagt egal, da hier nur der Stromfluss wichtig ist (wird begrenzt durch den Widerstand).

Da_Vinci13
12.02.2009, 12:30
Aha!
OK!
Also muss ich den Taster immer an VCC anschliessen? Oder kann ich den theoretisch auch an GND anschliessen, dann verändert ich einfach der Wahr und Falsch Wert?

Grüsse!
Dan

Jaecko
12.02.2009, 12:35
Genau das war ja das was ich ganz oben beschrieben hab.
Der AVR zieht den Pin mit seinem eigenen Pull-Up auf 5V (High), beim Drücken zieht der Taster/Schalter den Pin auf Masse runter.

Wie rum ist einfach Geschmackssache bzw. wie's halt von der Anwendung grad besser passt.

Da_Vinci13
12.02.2009, 12:42
OK!
Danke für deine Hilfe!

Grüsse!

Da_Vinci13
13.02.2009, 10:32
Hi,
Ich hab jetzt gleich noch eine Frage:
Wenn ich jetzt z.B. Ein LDR habe.
Ich schliesse es an einen Eingang an und an Vcc.
Also wenn jetzt Licht aufs LDR kommt dann kommt ja sozusagen keine Spannung in den Eingang, wenn es jetzt aber dunkel ist kommt Spannung in den Eingang, dann hat das ja eigenleintlich gar nichts mit GND zu tun? Dann heissts einfach VCC oder kein VCC und nicht VCC oder GND.

Wenn ich jetzt das oben beschriebene Beispiel kurz mal so schreiben würde:
if (PINA & (1 << PINA4))
{x}
Dann wird Block x asugeführt sobald kein Licht auf das LDR scheint? Denn wenn Spannung kommt wird ja der Wert WAHR geliegert.

Würde das alles jetzt so stimmen?

Grüsse!

vklaffehn
13.02.2009, 11:12
Moin!
Ein LDR ist ein lichtabhängiger Widerstand, den mußt Du als Spannungsteiler mit einem zweiten Widerstand beschalten, also z.B. Vcc-LDR-Widerstand-GND und zwischen demLDR und dem Widerstand zum Microcontroller. Siehe auch Ohm'sches Gesetz :-)
MfG
Volker

Da_Vinci13
13.02.2009, 11:51
OK!
Das selbe kann ich warscheinlich auch mit Fototransistoren machen...
Reicht da ein 100k Ohm wiederstand? Ich verwende die Fototransistoren von Conrad:
Art.Nr.: 153805
Also ich schätze mal das hängt auch noch mit der Beleuchtung ab, wenn ich die Fototransistoren als Spurensensoren benutze...
Der Asuro hat 20k Ohm Widerstände... aber der hat eine super starke LED, dann werde ichs mal mit 100k Ohm Widerstände ausprobieren....
Grüsse!

rob_88_20p
13.02.2009, 15:49
Ich habe mein Reflexkoppler CNY70 (als Helligkeitssensor verwendet) mit einer kleinen Pull up/down Schaltung an meinen ATmega88 angeschlossen denn ich wusste leider nicht wie an dem internen Pull up/down anschliessen.

Das ganze sieht bei mir so aus.

Du kannst die Heligkeitsempfindlichkeit mit dem 82kΩ einstellen (weniger Wiederstand = empfindlicher)

http://netzdateien.ne.funpic.de/CNY70_single.bmp