Forum: Mikrocontroller und Digitale Elektronik Dezimal-Eingabe zu 4 Bit (0.15)


von Bertold L. (0_ahnung)


Lesenswert?

Wer hilft mir? Bin ganz neu beim Thema Mikrocontroller.

Innerhalb einer bestehenden Schaltung möchte ich einen mC einsetzen, der 
durch jeweils einen von 16 Eingängen veranlasst (Ziffern 0…15) die 
entsprechende 4-Bit-Binärzahl ausgibt.

Bislang lasse ich einen MUX/DMUX CD4067 ständig laufen, 0...15...0... 
(4-Bit-CMOS-Zähler an den Pins ABCD, normalerweise immer in Aktion, 
getriggert durch 100-Hz-Impulse aus der Netzspannung).

Durch das Drücken einer der Tasten an den MUX/DMUX-Ausgängen 1...15 
stoppe ich den externen CMOS-Zähler, dessen momentaner Wert dann auch an 
den Eingängen ABCD eines 4-Bit-zu-seriell-Encoders HT12E ansteht. Dieser 
Encoder wird zugleich auf 'Senden' geschaltet und schickt die Zahl über 
nur eine Datenleitung an den entsprechenden Decoder HT12D, welcher sie 
in 4-Bit-Form zum Beschreiben bzw. zum Auslesen eines EEPROMs nutzt. – 
HT12D mit gelatchten Ausgängen ABCD.

Insgesamt verwende ich 4 unterschiedlich adressierte HT12D, zwei für 2 x 
4 Bit EEPROM-Adressen und zwei für die 8 Datenports (also ebenfalls 2 x 
4 Bit).

Im Prinzip handelt es sich um einen Scan-Vorgang. Die Ziffernausgänge 
des CD4067 werden ständig nacheinander aktiv (H), und sobald einer davon 
mit dem Zähler-Stopp-Eingang verbunden wird, bleibt der Zähler bei der 
entsprechenden Ziffer stehen.

Mit einem Mikrocontroller könnte man sich wenigstens den Zähler und 
Lötarbeit sparen. Mein Endziel wäre, auch den externen EEPROM mit 8 
parallen Datenports überflüssig zu machen und an seiner Stelle einen 
entsprechenden EEPROM im mC selbst zu verwenden.

Wie muss ich bei diesem Vorhaben als Anfänger vorgehen?

Vielen Dank für Hinweise

Bertold

von Stefan F. (Gast)


Lesenswert?

> Wie muss ich bei diesem Vorhaben vorgehen?

Eigentlich genau so. Dein Programm scannt fortlaufend die 16 Eingänge 
und erzeugt entsprechen der gedrückten Taste das Ausgangssignal.

Im nächsten Schritt kommt dann eventuell noch eine Entprellung per 
Software dazu.

Wie weit reichen denn deine Kenntnisse, was die Anwendung von 
Mikrocontrollern angeht? Welche kennst du bereits? Kann du bereits in C 
oder Assembler programmieren?

von MaWin (Gast)


Lesenswert?

Bertold L. schrieb:
> Wie muss ich bei diesem Vorhaben als Anfänger vorgehen?

Besorge dir einen Arduino.

Schliesse ihn an deinen PC an und lade ein Blinkprogramm und lass eine 
LED blinken.

Dann überlege dir 16 Eingänge (A/D Wandler Eingänge können auch als 
digitale Eingänge benutzt werden) sagen wir D0 bis D13 und A4 und A5, 
und die unteren 4 bits eines Ports als Ausgang für A, B, C, D, z.B. 
PortC.

Schreibe ein Programm, welches deinen CD4067+Zähler nachbildet:
1
byte pin[16]={D0,D1,...D13,A4,A5};
2
byte zaehler;
3
void setup()
4
{
5
  DDRC=0x0F;
6
}
7
void loop()
8
{
9
  if(zaehler>15) zaehler=0;
10
  PORTC=zaehler;
11
  if(digitalRead(pin[zaehler])) zaehler++;
12
}
Danach kannst du den ganzen HT12E abbilden (du brauchst dann nur noch 1 
Ausgang statt 4). Und man stellt die Tastatur auf eine 4x4 Matrix um, 
braucht nur noch 8 statt 16 Anschlüsse.

Auch die Empfänger kann man in jeweils 1 Arduino komplett abbilden.

von Bertold Langer (Gast)


Lesenswert?

Vielen Dank an alle für die Hinweise.

Ich denke, ich komme nicht um eine Einführung von ganz von vorn herum. 
Arduino und Blinkerprogramm? Das war mir bis jetzt zu blöd, weil ich mit 
meinen diskreten Schaltungen ja schon viel, viel weiter bin. Aber falsch 
gedacht. Also werde ich beginnen, wie jeder andere Anfänger. Auf diese 
Weise bin ich ja auch mit der Digital-Elektronik per IC einigermaßen 
vertraut geworden.

Bertold

P.S.: Meine Anwendung: Gleisplanstellpult für einen Modellbahnhof. 
Fahrwegsteuerung, Weichen nacheinander geschaltet. Zwei Tasten für jeden 
einzelnen Fahrweg (von Taste En am Anfang eines Bahnhofsgleises zu Taste 
Mn in dessen Mitte und von Mn zu An am Ende). So werden die Fahrwege 
eingestellt, was selbstverständlich auch in Gegenrichtung funktioniert 
(Betriebsmodus, 'BTR'). Im Programmiermodus dieselbe Prozedur, nur dass 
dann der Wahlschalter BTR/PGM auf PGM (Programmieren) gelegt ist.

Die Weichenantriebe werden wieder per Encoder HT12E und Decoder HT12D 
über nur eine Datenleitung angesprochen. Ein HT12D plus Verstärker 
jeweils für 10 Weichen - ich mag das Dezimalsystem, weil wir es im Kopf 
und in Händen haben. Was bei 4 Bit übrig bleibt, wird z.B. für den 
Stellungsbefehl 'gerade aus' oder 'Abzweig' genutzt (11 und 12); dieser 
kommt jeweils vor dem Befehl für die Weichennummer). Darin unterscheidet 
sich mein eigenes Digitalsystem von den meisten anderen (etwa Märklin 
oder DCC).

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.