Forum: Mikrocontroller und Digitale Elektronik µC Pin hängt bei einer bestimmten Spannung


von 'M.of.D' (Gast)


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.

von Gast (Gast)


Lesenswert?

Quellcode?

Und schau dir mal die Transistorgrundschaltungen an und überprüfe ob ein 
npn in diesem Fall die richtige Wahl ist.

von Peter D. (peda)


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

von Dennis U. (atmegadennis)


Lesenswert?

Hallo Peter,

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.

von Gast (Gast)


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

von 'M.of.D' (Gast)


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
}

von Gast (Gast)


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?

von Peter D. (peda)


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

von Gast (Gast)


Lesenswert?

Nachtrag: PortC richtig konfiguriert?

von 'M.of.D' (Gast)


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.

von 'M.of.D' (Gast)


Lesenswert?

Hat sich erledigt

jetzt hab eine Kollektorschaltung mit 47k als Basisvorwiderstand und 47k 
am Emitter und es funktioniert wunderbar.

Danke für eure Hilfe

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.