mikrocontroller.net

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


Autor: 'M.of.D' (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quellcode?

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis U. (atmegadennis)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 'M.of.D' (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
 
void Zaehlung(void)
{
  Fenster_auf = (PIND & (1<<PIND5)); 
if (Fenster_auf) {PORTC |= (1 << PC0);} else {PORTC &= ~(1 << PC0);}     
}

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: PortC richtig konfiguriert?

Autor: 'M.of.D' (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Eingangsport funktioniert.

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

void Zählung wird im Main in einer Endlosschleife aufgerufen

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

Autor: 'M.of.D' (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.