PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fototransistormatrix



keha
04.02.2007, 20:52
Hallo Leut,
ich bin grad am Fototransistormatrix dran. also es ist so, wenn ein fototransistor kein licht bekommt muss ein pin 1 bekommen, sobald licht aber
da ist, soll der pin 0 bekommen. ich benutze atmega 168 und das ganze will ich mit port.c, kann mir jemand helfen wie so ein programm im bascom ungefähr ausschauen könnte?
danke im voraus

SIGINT
05.02.2007, 16:08
Hääää, was willst du?!?!?!?!?!?
Du musst schon selbst wissen, was dein Programm machen soll....
Was für Signale am PortC anliegen hängt von der externen Beschaltung ab und nicht von deinem Programm (solange du die PortPins nicht als Ausgang schaltest)
Am besten schaust du dir noch ein paar Tutorials an um später Fragen zu stellen, die etwas mehr Sinn ergeben.

Gruß,
SIGINT

P.S.: OK... wenn du die internen Pullups aktivierst, dann kann sich auch das Signal am Eingang ändern.... nur zur vollständigkeit.

veit
05.02.2007, 17:44
>>Fototransistormatrix

würd mich ja auch interessieren was das werden soll ...

SIGINT
05.02.2007, 18:54
@veit:
Vielleicht will er eine Webcam aus einer Camera Obscura basteln ;-)

keha
05.02.2007, 23:11
jo weiß schon dass ich in der sache voll laie bin. aber trotzdem ich versuch
noch ein mal mein problem zu erklären. unten ist die schaltung dargestellt.
ich will dass jenachdem ob fototransistor grad leitet oder nicht, entsprechend PIN-PC3 High oder Low beommt. dafür benutze ich folgendes quellcode in bascom
Config Portc.3 = Input
Portc.3 = 1
Do
If Pinc.3 = 1 Then
Print "hi"
Else
Print "ciao"
End If
Loop
End
aber ich bekomme nur "Hi" als meldung. kann mir vielleicht jemand meinen fehler zeigen??

Gento
06.02.2007, 06:10
Schon mal mit Licht ausschalten probiert ob der Lo wird ?:-$
Oder was sagt ein Multimeter ?

Gento

robo_wolf
06.02.2007, 15:21
Ja,
erst eiinmal die Pegel messen, um zu überprüfen ob die Schaltung arbeitet. Dann kannst den Fototransistor von V+ nehmen, um das Programm zu testen. Da sollten ja am Eingang GND anliegen... "ciao"
Poste beim nächste mal den Code so:


Config Pinc.3 = Input 'nicht Config Portc.3 sondern Pinc.3
Portc.3 = 1 'eventuell den PullUp noch ausschalten
Do
If Pinc.3 = 1 Then
Print "hi"
Else
Print "ciao"
End If
Loop
End


Eventuell muß du deine Schaltung noch ändern.
Der PullUp hat ca.10k. Dein Widerstand hat 20k. Bedeutet, du hast bei eingeschalteten PullUp und Low-Pegel(Dunkel) ca. 3,3V am Eingang anliegen. Das kann schon Hi bedeuten...
Besser wäre es, wenn du den Widerstand und FotoTransistor tauscht.
Dann mußt du zwar deine abfrage umdrehen, aber du hast saubere Pegel.

SIGINT
06.02.2007, 17:16
Laut Datenblatt erkennt der ATmega8 ab 0,6*Vcc den Eingangspegel als HIGH. Bei 5V sind das 3V... also ist bei aktiviertem Pullup der Pin immer HIGH. Das Programm funktioniert also so wie es soll.
Ich würde den internen Pullup ausschalten und den externen Widerstand mit dem Fototransistor trauschen, wie robo_wolf auch gesagt hat. Aber ich bin der Meinung, daß du das Programm dann nicht ändern musst:
Wenn kein Licht auf den Transistor scheint dann leitet dieser auch nicht ->
Am Pullup (nicht der interne) fällt deshalb keine Spannung ab und der Pin liegt auf HIGH. Wenn der Transistor beleuchtet wird fängt dieser an zu leiten und zieht den Portpin auf GND.

Gruß,
SIGINT

robo_wolf
07.02.2007, 03:18
wenn das Programm bleibt, wird die Printausgabe bei Licht an "ciao" sein.
Der durchgesteuerte Fototransistor zieht das Potential auf GND, in dem Fall ist Pinc.3 = 0.
Wenn ich keha richtig verstanden habe, sollte die Printausgabe bei beleuchteten Transistor "hi" sein.

Mit dem PullUp hat SIGINT natürlich Recht.
Den kannst du auch ausschalten, oder die Zeile ganz weg lassen, da nach dem Tausch der Teile durch den externen 20k schon eine PullUpbeschaltung besteht.
Wäre doppelt gemoppelt.

keha
07.02.2007, 14:38
danke, ich werde es demnächst mal ausprobieren. ich hab dann noch ne frage woran unterscheiden sich beide befehle Config Portc.3 von Config Pinc.3??
danke

robo_wolf
07.02.2007, 18:02
Pin verwendet man bei der Konfiguration von einzelnen Eingängen und Ausgängen(Config Pinc.3 = Input / Output).
Port bei setzen von Ausgängen(Portc.3 = High / Low) oder beim PullUp ein bzw. ausschalten(Portc.3 = 1)
Port verwendet man auch, wenn man den kompletten Port auf Input/Output (Config Portc = Input / Output) setzt.
Möchtest du einen Eingang abfragen, nimm (Pinc.3)

keha
07.02.2007, 18:44
Danke leut, es hat geklappt. endlich komme ich ein bisschen vorwärts =D>