µC Pin hängt bei einer bestimmten Spannung

Gast #1451688
Lesenswert?

Hallo,

für meinen Mikrocontroller habe ich einen 7-Segment Zähler gebaut.
Darin sind 2x BCD-Zähler (4510) und 2x 7-Segment-Treiber (4543)

Wenn ich die Schaltung am Netzteil mit Spannung versorge und bei dem 
4510 am Clock ein High gebe, zählt er um 1 aufwärts.

Nun habe ich alles an einen µC-Pin angeschlossen, der mir immer ein 
Signal ausgeben soll, wenn ein Schalter betätigt wird.

Die erste Zählung funktioniert, in Ruhe sind 0V am µC-Pin, bei High fast 
5V, aber wenn er von High auf Low zurückgeht, bleibt die Spannung bei 
ca. 3V hängen.

Hab es schon mit PullDown(10k, 47k, 200k) versucht, aber dann geht er 
nicht richtig auf über 4V und auch nicht nahe 0V.

Dann wollte ich es mit einem Tranistor schalten, aber wieder das gleiche 
Problem. Hier noch die Schaltung


                              VCC
                               +
                               |
                               |
                      680    |/ BC547B
                µC  -|___|- -|
                             |>|
                               '----------- 4510
                               |
                              .-.
                              | |
                              | |220
                              '-'
                               |

Ich weiß jetzt wirklich nicht mehr weiter, als es mit einem Relais zu 
schalten.
#1451709
Lesenswert?

'M.of.D' schrieb:
> für meinen Mikrocontroller habe ich einen 7-Segment Zähler gebaut.
> Darin sind 2x BCD-Zähler (4510) und 2x 7-Segment-Treiber (4543)

Ooch, da ist der arme MC aber traurig.
Er hätte doch liebend gerne selber gezählt und 7-Segment codiert.

Ist ungefähr so, als wenn Du bei Deinem Auto den Motor ausmachst und ein 
Pferd davor spannst.


Peter
Gast #1451764
Lesenswert?

Also Das Sschaltsignal am Emitter abgreifen ist nicht unbedingt 
vorteilhaft, da Du am Abgriff dann höchstens (Uuc - Ube) hast. Deshalb 
macht diese Beschaltung bei Schaltanwendungen meistens keinen Sinn. Die 
Widerstandswerte sind IMO unnötigerweise viel zu klein dimensioniert. 
Ich würde es folgendermaßen bauen (siehe unten).
Wozu eigentlich den Transistor? Haben die Schaltungsteile 
unterschiedliche Betriebsspannungen? Nach der von mir angegebenen 
Beschaltung hast Du halt einen Inverter mit drin. Aber das dürfte 
normalerweise kein Problem sein.
Bei Bedarf eben einen PNP verwenden. Dann musst Du aber wieder die 
Spannungsverhältnisse beachten. Bei Bedarf einfach nochmal hier melden 
;-)


                              VCC
                               +
                               |
                              .-.
                              | |
                              | |100k
                              '-'
                               |
                               |----- 4510
                               |
                      100k   |/ BC547B
                µC  -|___|- -|
                             |>|
                               |
                               |
                              Masse
Gast #1451892
Lesenswert?

>das sehe ich anders, schliesslich weisst du nicht wieviel I/O´s für das
>zählen und die ausgabe vorhanden sind.

>Evtl. ist man froh wenn man statt 4 oder 7 pins mit nur einem einzigen
>zum gleichen resultat kommt.


Das ist richtig, ich muss Pins sparen, weil nur noch 4 frei sind.
Außerdem war es mal wieder eine schöne Lötarbeit.

Die ganze Hardware läuft mit 5V Betriebsspanung, aber das mit dem 
Tranistor hab ich probiert, weil zuerst hatte ich den 4510 direkt 
angeschlossen und da hat nur der Übergang zu High funktioniert, aber 
nicht er ist nicht mehr auf Low zurückgegangen, auch nicht mit Pulldown

Ich werde das mal mit dem Invertierer probieren.
Hier noch der Code:
1
 
2
void Zaehlung(void)
3
{
4
  Fenster_auf = (PIND & (1<<PIND5)); 
5
if (Fenster_auf) {PORTC |= (1 << PC0);} else {PORTC &= ~(1 << PC0);}     
6
}
Gast #1451937
Lesenswert?

Kopier mal das Fenster_auf auf ein anderes (unbeschaltetes) Ausgangsbit 
oder prüfe das Ausgangssignale ohne Beschaltung. Vielleicht geht ja am 
Eingang etwas schief. Der Rest scheint, wenn ich nichts übersehen habe, 
zu funktionieren. Du kopierst einfach das Eingangsbit auf das 
Ausgangsbit. Ich hoffe, das ist Deine Intention.

Wo und wie word Zaehlung() aufgerufen?
#1451938
Lesenswert?

'M.of.D' schrieb:
> Das ist richtig, ich muss Pins sparen, weil nur noch 4 frei sind.

Mehr als genug.
Die Standardlösung (1*74HC595 je Digit) braucht nur 3.
Fertige LED-Treiber (MM5450) sogar nur 2.

> Ich werde das mal mit dem Invertierer probieren.

Das bringt nichts.
Wenn Du für CMOS nen Treiber brauchst, ist entweder der IC kaputt oder 
ein Kurzschluß zu nem anderen Pin.


Peter
Gast #1451960
Lesenswert?

Der Eingangsport funktioniert.

Konfiguriert habe ich PORTC folgendermaßen:
1
  // Port C initialisieren
2
  DDRC=0xFF;       // Alle Pins sind Ausgang
3
  PORTC=0x00;

void Zählung wird im Main in einer Endlosschleife aufgerufen

Ohne Last funktioniert der Portpin einwandfrei, auch mit einem Relais 
mit Transistorstufe.

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