Forum: Mikrocontroller und Digitale Elektronik Restspannung wenn Pin auf 0 gezogen wird


von Patrick (Gast)


Lesenswert?

Hallo,

ich habe bei Ausgangsports des AVRs gemessen, dass, wenn sie 0 sein 
sollten, Spannungen zwischen 0,5V und 1V haben. Das Problem ist, dass 
die nachgeschalteten Transistorn dann schon leitend werden. Mein 
Basiswiderstand ist 1,5kOhm, wenn er kurzgeschlossen wird wird das 
Problem nur minimal besser.

Ist das immer so oder habe ich irgendwo einen Fehler gemacht? Kann ich, 
um das Problem zu lösen, an den Ausgang noch eine Diode hängen (in Serie 
zum Basiswiderstand), damit die dem Transistor Basisspannung klaut?

Viele Grüße
Patrick

von Benedikt K. (benedikt)


Lesenswert?

Patrick wrote:

> Ist das immer so

Nein

>oder habe ich irgendwo einen Fehler gemacht?

Ja

> Kann ich,
> um das Problem zu lösen, an den Ausgang noch eine Diode hängen (in Serie
> zum Basiswiderstand), damit die dem Transistor Basisspannung klaut?

Theoretisch ja, praktisch ist es aber sinnvoller den Fehler zu beheben 
anstelle einen Workaround um dessen Auswirkungen zu machen.

Port auf Ausgang geschaltet?
Lässt du Strom in den Port hinein fließen?

von Karl H. (kbuchegg)


Lesenswert?

> Ist das immer so oder habe ich irgendwo einen Fehler gemacht?

Könnte sein.
Wenn du den Port in Wirklichkeit nicht auf Ausgang geschaltet hast, 
sondern nur den Pullup ein/ausschaltest, könnte das einen ähnlichen 
Effekt haben.

von Patrick (Gast)


Lesenswert?

Ich poste mal meinen Code, so wie ich mich kenne übersehe ich eine 
Banalität. Die betroffenen Pins sind PB1 bis PB3. Die Hardware werde ich 
morgen untersuchen, dafür habe ich keinen Nerv mehr.

1
.include "tn2313def.inc"
2
3
.def temp1 = r16
4
5
.org 0x0000          ; Startadresse
6
  rjmp main
7
.org 0x000D          ; Timer0: 36kHz-Signal
8
  rjmp tmr0_ovf    
9
10
11
main:
12
13
  ldi temp1, 0      ; Port D Eingang
14
  out DDRD, temp1
15
16
  ldi temp1, 0xFF      ; Eingänge mit Pullup
17
  out PORTD, temp1
18
19
  ldi temp1, 0xFF      ; Port B Ausgang, zunächst alles 0
20
  out DDRB, temp1      
21
22
  ldi temp1, ramend    ; Stackpointer initialisieren
23
  out SPL, temp1
24
25
  ldi temp1, 0b00000010  ; WGM02:0 = 2(dezimal) -> CTC-Modus (Auto-Reload)
26
  out TCCR0A, temp1  
27
28
  ldi temp1, 54      ; Reload-Wert ist 54
29
  out OCR0A, temp1
30
31
  ldi temp1, 0b00000001  ; Overflow-Interrupt für T0 aktivieren
32
  out TIMSK, temp1
33
34
  ldi temp1,0b00000001  ; loslaufen lassen, Prescaler=1
35
  out TCCR0B, temp1
36
37
  sei            ; Interruptflag setzen
38
39
40
loop:
41
42
  sbis PIND,0        ; wenn PD0 gesetzt gehe NICHT nach rot
43
    rjmp rot
44
  sbic PIND,1        ; wenn PD1 gelöscht gehe NICHT nach grün
45
    rjmp gruen
46
  rjmp gelb
47
48
rot:            ; Setze Ausgang rot
49
  
50
  sbi PORTB,1
51
  cbi PORTB,2
52
  cbi PORTB,3
53
  rjmp loop
54
55
gelb:            ; Setze Ausgang gelb
56
  
57
  cbi PORTB,1
58
  sbi PORTB,2
59
  cbi PORTB,3
60
  rjmp loop
61
62
gruen:            ; Setze Ausgang grün
63
  
64
  cbi PORTB,1
65
  cbi PORTB,2
66
  sbi PORTB,3
67
  rjmp loop
68
69
70
71
72
tmr0_ovf:
73
  
74
  sbi PINB,0        ; PB0 invertieren
75
  reti

von Benedikt K. (benedikt)


Lesenswert?

Die Software sieht ok aus. Bleibt jetzt also noch die Hardware. Entweder 
bekommt der Pin von irgendwo Strom, oder der Vss Pin liegt nicht auf 0V.

von Matthias L. (Gast)


Lesenswert?

Poste doch mal die Schaltung.

von Patrick (Gast)


Lesenswert?

Habe nochmal geschaut und einen anderen Tiny2313 ausprobiert. Dasselbe, 
auch mit offenem Ausgang...

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Fehler in der Schaltung, vielleicht liegt die Masse so ungünstig, d.h. 
es fließt irgendwo Strom der diesen Spannungsabfall verursacht oder 
ähnliches, schlechte Verbindung in der Masse oder was auch immer.

von Patrick (Gast)


Lesenswert?

Schaltung ist nur auf Papier, im Prinzip hängt am Port wie gesagt der 
npn über einen Basiswiderstand, am Kollektor LEDs mit Vorwiderstand an 
12V, Emitter an (gemeinsamer) Masse.

Was ich noch sagen wollte: Auf dem STK500-Board messe ich nur 0,34V, da 
gibt es das Problem nicht (aber alles ist invertiert).

Was ist mit Vss gemeint? Vcc habe ich natürlich an 5V

von Alexander S. (esko) Benutzerseite


Lesenswert?

> Schaltung ist nur auf Papier,
Und wie kannst du dann eine Spannung messen?

von Patrick (Gast)


Lesenswert?

AAAARGH... Ich habe den Fehler entdeckt. Darf ich nicht sagen was es 
war.

Vielen Dank für eure Mithilfe!
Schönen Abend,
Patrick

von Gast (Gast)


Lesenswert?

>Darf ich nicht sagen was es war.

Damit musst Du jetzt aber schon rausrücken. Wär ja sonst megaundankbar 
;-)

von (prx) A. K. (prx)


Lesenswert?

Er wird wohl vergessen haben GND anzuschliessen und der Strom hat sich 
dann einen Weg über die Schutzdioden und die Transistoren gesucht.

von Peter D. (peda)


Lesenswert?

Er hat gegen die Masse des Netzteils gemessen und dabei vergessen, daß 
das STK500 ne Graetzbrücke als Verpolschutz hat.

Dann mißt man immer eine Diodenflußspannung zuviel.


Peter

von Patrick (Gast)


Lesenswert?

Jepp, das wars ;-)

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.