Hi Leute,
Ich habe bei folgendem Projekt ein Problem:
Zeil:
Ich möchte eine Lichtschranke mit Hilfe eines Mikroprozessorts (speziell
dem ATtiny13) bauen, um damit später nach Erweiterung einzelne
Kreuzungen meiner Eisenbahn zu steuern.
Aufbau:
Die Schaltung liegt im Anhang mit einem Foto meines Bau-Versuchs bei.
Problem:
Anfangs funktionierte mein ATtiny13 noch, als ich ihn nach einigen
Versuchen in meiner Schaltung wieder heraus nahm (Erstes Hochladen des
Programms hat also geklappt) und neu programmieren wollte, funktionierte
das nicht mehr. Erst habe ich einfach einen neuen genommen, aber bei dem
trat das Problem auch auf. Beim Hochladen des Bootloader zeigt das
Programm noch "ok", beim Hochladen der HEX-Datei zeigt er jedoch direkt
einen Fehler und anschließend läuft der ATtiny13 nicht mehr.
Meine erste Vermutung war, dass ich irgendwas falsch gepolt habe,
allerdings finde ich nichts derartiges und das würde mich bei der
Spannung auch wundern, wenn der dadurch kaputt geht. (Der Eingang ist
mit Sicherheit richtig gepolt, denn ich habe die Platine synkron zur
Programmierplatine angeschlossen.)
Weitere Auffälligkeiten:
Der ATtiny hat mit meinem Programm erst dann die LED ausgeschaltet, als
ich den Eingang mit GND kurzgeschlossen habe.
Sowohl bei ca 0,45V als auch bei ca. 0,05V über dem Vorwiderstand des
IR-Transistors leuchtete die LED.
Randinformationen:
Programm zum Hochladen des Codes: "LPmikros" aus dem Lernpaket
"Mikrokontroller" von Franzis
IR-Diode (Lila):
http://www.conrad.de/ce/de/product/153692/IR-EMITTER-SIDE-IRL81A
IR-Transistor (Weiß):
http://www.conrad.de/ce/de/product/153470/IR-RECEIVER-LPT80AQ68000-A7852
Eingangsspannung: 5,02V Gleichstrom
Code:
Hmm der Schaltplan sieht anders aus als die aufgebaute Schaltung.
Auffallend ist im Schaltplan als erstes der fehlende Widerstand für die
rote LED. Und die komische Einbaulage der roten LED: Anode an PB1 und
Kathode mit Vcc verbunden, wie soll die jemals leuchten?
Andersrum und mit Vorwiderstand würde es Sinn machen als active lowLED (leuchtet, wenn PB1 LOW ist). PB1 ---###---|<---- Vcc
Oder wenn die LED mit Vorwiderstand gegen GND active high geschaltet
ist: PB1 ---###--->|---- GND Das passt zu den Kommentaren in deinem
Programm.
Wie groß ist der Kollektorwiderstand am Fototransitor? Von den Ipce
Werten im Datenblatt her (>0,25 mA, 3.2mA) wäre ein Widerstand zwischen
20K und 2K zu überlegen.
1/ Was macht deine Schaltung, wenn der FT komplett abgedunkelt ist?
Welche Spannung misst du zwischen PB4 und GND? Das sollte fast die volle
Vcc Pracht sein, weil der FT sperrt und nur ein geringer Dunkelstrom
fließt.
2/ Was macht deine Schaltung, wenn der FT nicht abgedunkelt ist und
Umgebungslicht auf den FT fällt? Welche Spannung misst du zwischen PB4
und GND? Das wird etwas sein, aber nicht so viel wie im nächsten Fall
3/ Was macht deine Schaltung, wenn die IR-Diode (Lila) auf den FT
leuchtet? Welche Spannung misst du zwischen PB4 und GND? Das sollte fast
nix sein, der FT sollte bei Beleuchtung optimal leitend sein.
4/ Was macht deine Schaltung, wenn die IR-Diode (Lila) leuchtet, aber
der Lichtweg auf den FT unterbrochen ist? Welche Spannung misst du
zwischen PB4 und GND? Das sollte in Richtung von Fall 2/ gehen.
Deine Schwelle B im Programm muss einen Wert zwischen Fall 2/ bzw. 4/
und 3/ darstellen. Wenn der Messwert A sehr hohe Werte annimmt, ist Fall
1/ eingetreten.
Im Programm selbst würde ich noch einen ADCH Wert einlesen:
;Liest die Spannung ein
RdADC:
out ADMUX, A
sbi ADMUX, ADLAR
sbi ADCSRA, ADSC
ADrdy: ;Schleife1
sbic ADCSRA, ADSC
rjmp ADrdy
in A, ADCH ; <<<<<<< Readout der 1. Wandlung
sbi ADCSRA, ADSC
ADrdyb: ;Schleife2
sbic ADCSRA, ADSC
rjmp ADrdyb
in A, ADCH ; <<<<<<< Readout der 2. Wandlung
ret
Erstmal vielen Danke für die Antwort. :D
Das mit dem Vorwiderstand für die LED hab' ich leider vergessen
einzuzeichnen. Den habe ich eingebaut, nachdem mir eine LED
durchgebrannt ist.
Ob ich active Low oder active High habe ist mir vorerst egal, denn das
kann ich ja in 2 Zeilen in meinem Code ändern.
Mit Kollektorwiderstand war Kollektorstrom gemeint, oder? Ausprobieren
möchte ich das nicht so gerne, denn mir geht schließlich bisher bei
jedem Versuch ein Mikroprozessor kaputt.
Die Widerstände haben allerdings alle einen Wert von 1 Kilo-Ohm.
1/ Ausprobieren wie gesagt nicht gerne und komplett abgedunkelt habe ich
leider nicht. Aber grundsätzlich ... Wenn die IR-Diode auf den
IR-Transistor scheint, dann hat der Vorwiderstand des IR-Transistors wie
oben genannt ca. 0,5V und wenn nicht beschienen weniger als 0,1V. Da der
ATtiny mit Vcc -> PB4 dazu parallel liegt müsste demnach dort die
gleiche Spannung und über PB4 -> GND 5,02V minus die jeweilige Spannung
anliegen, oder irre ich mich da?
2/ s. 1/
3/ s. 1/
4/ Ja, die Fälle 4 und 2 sind gleich. Da bin ich mir sicher, da es mir
ein Mal passiert ist, dass die IR-Diode leicht krumm stand und ich das
Andere ausprobiert habe.
Da ich ja 0,2V eingestellt habe, liegt dieser somit zwischen 0,1V und
0,5V.
Den Code zum Einlesen (RdADC) sowie AdcInit habe ich aus einem Beispiel
aus dem Buch entnommen, deshalb ist der auch nicht weiter kommentiert.
Sollte also eig. so funktionieren.
Wenn ich weiß, wieso meine ATtinis immer nicht mehr beschrieben werden
können, kann ich auch weiter probieren. Das Problem ist halt eben, dass
ich nicht weiß, wieso das immer passiert. Ich habe nicht iwo eine zu
hohe Spannung oder einen zu hohen Strom anliegen oder so, oder???
Ja, habe ich.
Bei dem Ersten Prozessor will auch das nicht mehr, beim 2. geht es noch
(laut Meldung -> "ok").
Der Erste kann aber auch einige andere Fehler aufweisen, da ich ihn
nicht immer ganz richtig angeschlossen habe.