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.
Quellcode? Und schau dir mal die Transistorgrundschaltungen an und überprüfe ob ein npn in diesem Fall die richtige Wahl ist.
'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
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.
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
>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 | } |
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?
'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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.