Restspannung wenn Pin auf 0 gezogen wird

Gast #1196622
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
#1196627
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?
Gast #1196664
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
Gast #1196723
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren