BitBasics – MOS4017 / 74HC4017 – Dekadenzähler

BitBasics - MOS4017 / 74HC4017 - Dekadenzähler

(184 MB) 00:12:23

2015-12-13 11:00 🛈

Mit den Fingern kann man bis 10 Zählen – mit einem MOS4017 ebenfalls. Dieser kleine Helfer kann 10 Ausgänge sequenziell einschalten, so lässt sich z.B. mit wenig Aufwand ein Lauflicht realisieren.

Heute schauen wir uns mal wieder einen IC an – dieser ist aus der 4000er Serie. 4000er gehören zu einer Logikfamilie – wir hatten in der Verangenheit ja schon eine Andere: Die 74er. Der Unterschied: Damals als die hier rauskam war die 4000er die Einzige, welche auf CMOS basierte, also auf Feldeffekttransistoren, und hatte daher einen deutlich geringeren Stromverbrauch. Heutzutage nicht mehr so relevant – auch die 74er-Serie ist inzwischen als CMOS-Variante erhältlich (74HC…). Die meisten der 4000er Serie sind zudem inzwischen in die 74er Serie mit den bisherigen Nummern übernommen. Der Chip den wir uns heute anschauen ist der 4017 – ein so genannter Dekadenzähler. Auch bekannt ist er als Dezimal- oder Ringzähler. Hauptanwendungsgebiet sind Situationen in denen man mit wenigen Pins viele sequenziell Ansteuern muss oder in taktbasierten Schaltungen als so genannter Frequenzteiler. Der Chip ist in diversen Bauformen erhältlich – sowohl als DIP-Paket mit 16 Beinchen wir hier zu sehen, als auch in diversen SMD-Bauformen. Würde ich sagen wir schauen uns erst mal die Pins an. Los geht es mit Vcc und GND, diese sind CMOS-Typisch ausgeführt. Bei der 4000er Serie heißt das üblicherweise bis zu 15V. Bei Nachbauten aus der 74er Serie gilt die Versorgungsspannung aus der 74er, also meist knapp über 5V Maximum. Der nächste Pin ist „Master Reset“ – wie der Name schon sagt ist der zum Zurücksetzen. Wenn wir hier einen hohen Pegel anlegen wird alles wieder auf den Ursprungszustand zurückgesetzt. Die Nächsten Pins haben mit der Taktung zu tun – als erstes haben wir CP0, der normale Takteingang. Nicht CP1 kommt auf die Variante an: In der Original 4000er-Serie wird der Pin als Clock Enable verwendet – nur wenn dieser Pin auf GND liegt nimmt CP0 Takte entgegen. Hat man einen Nachbau aus der 74er Serie, die Heute eigentlich weiter verbreitet sind, dann wird CP1 ebenfalls als Taktquelle genutzt. Der Unterschied: CP0 generiert den Taktimpuls bei einer steigenden Flanke, CP1 hingegen bei einer fallenden Flanke. Nutzen kann man Chips trotzdem soweit identisch: Legt man bei dem 74er CP1 auf GND ist der Takteingang CP0 wie erwartet zu nutzen. Der nächste Pin „Nicht Q5-Q9“ – recht seltsamer Pin – kommt aus der internen Logik, kann in der Praxis sehr gut genutzt werden um diese ICs zu kaskadieren und so weitere Zehnerstellen hinzuzufügen. Übrig bleiben Q0 bis Q9, das sind unsere 10 Ausgänge. Wie man sehen kann sind die Ausgänge nicht geordnet sondern entsprechend der internen Logik für Außenstehende chaotisch um den IC herum verteilt. Schauen wir uns die Funktionsweise nochmal genauer an. Stellen wir uns vor im Chip wäre ein Förderband mit einer fest angeklebten Glühbirne. Darüber haben wir solche Boxen welche mit den Ausgängen verbunden sind. Die Erste ist also mit Q0 verbunden, die zweite Box mit Q1 und so weiter bis zur letzten Box, welche mit Q9 verbunden ist. Die Funktion ist so: Wenn die Glühbirne in die Box hineinleuchtet ist der zugehörige Ausgang eingeschaltet. Momentan steht die Glühbirne unter der ersten Kiste, dass heißt Q0 ist in diesem Fall eingeschaltet, alle anderen Ausgänge sind ausgeschaltet. Wenn wir jetzt einen Takt auf CP0 erzeugen setzt sich unser Förderband in Bewegung. Das Ganze hat eine Steuerung, diese Fährt immer nur eine Position weiter. Er fährt also jetzt von der Position unter der ersten Kiste weiter auf die Position unter der zweiten Kiste. Heißt natürlich auch: Q0 ist jetzt ausgeschaltet, stattdessen ist nun Q1 eingeschaltet. Das bleibt so stehen, um weiter zu kommen müssen wir CP0 wieder ausschalten und neu einschalten um wieder eine Position weiter zu fahren. Das können wir immer weiter wiederholen oder wir können mittendrin einfach den Reset einschalten. In diesem Fall fährt die Lampe direkt wieder in die erste Position, Q0 ist also wieder eingeschaltet. So lange Reset aktiv ist wird kein neues Taktsignal entgegengenommen. Lassen wir Reset los können wir wie gewohnt nach vorne fahren. Das machen wir über die komplette Länge bis zu letzten Kiste. Was passiert jetzt? Nun wenn wir jetzt noch einmal takten merkt das die Steuerung und fährt ganz zurück an den Anfang. Wir fangen also ohne Unterbrechung von vorne an zu zählen. Q5-9 war auch zu sehen: Der ist entsprechend seinem Namen passend an und aus gegangen. Schauen wir uns mal ein paar gängige Anwendungen an. Das Erste ist der Klassiker: Ein Takt soll mehrere Ausgänge steuern. Z.B. ein Mikrocontroller, welcher 10 LEDs ansteuern möchte. Was bekommen wir? Ein Lauflicht. Einige werden sagen „OK, aber warum Dekadenzähler und nicht z.B. ein Schieberegister“?. Es sind unterschiedliche Anwendungsgebiete. Der hier ist nicht ganz so flexibel, benötigt aber nur ein Taktsignal und damit wesentlich weniger Logik. Reihenfolgen oder ähnliches müssen nicht beachtet werden, daher muss es auch kein Mikrocontroller sein sondern man kann auch z.B. mit wenig Intelligenz ein Mikrofon anschließen und so die LEDs im Takt weiterlaufen lassen. Da außer dem IC nicht viel benötigt wird ist diese Schaltung z.B. auch bei vielen Einsteigern beliebt . Das Zweite genannte ist der Frequenzteiler. Nehmen wir ein Rechtecksignal mit 100kHz und schauen uns nur den ersten Ausgang an: Die Frequenz am Ausgang ist nur noch 10kHz, also ein Zehntel. Über andere Kombinationen ließen sich auch andere Teilstufen erreichen. Und wie immer werfen wir auch einen Blick auf die Praxis. Hier haben wir unseren Versuchsaufbau. Wir haben unten drin den IC – wer hat gute Augen? Es ist ein Nachbau aus der 74HC-Serie, kein original MOS. Dazu haben wir zwei Taster: Einer für das Taktsignal, der Andere ist der Master Reset. Dazu gibt es viele Kabel – die gehen natürlich an LEDs. In grün haben wir die 10 Ausgänge, in rot ist der „Nicht Q5-9“. Geben wir mal Strom drauf und schalten das Licht aus. Stom an:Die LEDs leutchten auf. Wir haben die LEDs 0 und „nicht 5-9“ eingeschaltet. Wenn wir jetzt weiter drücken sollte 0 aus und 1 eingeschaltet werden – korrekt. Nächste, nächste, …Kleines Kabelproblem, nächste,… Nochmal alle kabel festgesteckt, jetzt müssten auch alle LEDs leuchten: 0,1,2,3,4,5,6,7,8 und 9. Wir haben unser Lauflicht. Wir sehen auch, dass ab der fünften LED die „Nicht 5-9“ ausgeschaltet wird. Jetzt können wir immer weiter drücken – macht aber keinen Spaß, suchen wir etwas zum automatisieren. Bemühen wir erst mal einen Frequenzgenerator – wenn ich den an den Eingang halte sollten die LEDs sich weiter bewegen. Eingestellt ist er auf 2Hz, also müssten die LEDs alle 500ms wechseln. Wenn wir dran halten sehen wir in dem gewünschten Takt eine Reaktion, aber das Signal ist zu stark gestört um sauber umzuschalten, daher flackert es nur. Ich kann jetzt die Frequenz erhöhen – 3Hz – und jetzt funktioniert das umschalten auch korrekt. Und wir können immer schneller werden – 4Hz, 5Hz, und so weiter bis es quasi fließend aussieht. OK, aber Frequenzgenerator ist immer noch langweilig, schauen wir nach anderen Alternativen. Ich nutze jetzt einen Klinkenstecker und einen Transistor – nicht optimal, aber eine einfache Reaktion sollte möglich sein. Wenn wir jetzt mit Musik auf die LEDs schauen ist ein Flackern im Takt erkennbar. Und wie gesagt können wir ihn auch als Frequenzteiler nutzen – recht übersichtlich, wir haben nur den Chip hier in Grundbeschaltung. Ich habe Not Clock festgesetzt und für den Takt freie Enden. Ich gebe per Signalgenerator ein Takt vor und auf dem Oszilloskop sehen wir entsprechend 500Hz. wenn wir jetzt den Ausgang an einem der Ausgangspins anschauen bekommen wir ein Singal mit 50Hz, also einem Zehntel. Wir können auch nachzählen und die Takte per Hand zählen. Nach 10 Takten haben wir oben wieder die nächste Flanke. Also auch in dieser Konfiguration genau das Erwartete – oder anders gesagt: Tut was es soll.

0:00:14.190,0:00:19.230
Today we have a look at another IC. This one belongs to the 4000-series

0:00:19.230,0:00:23.630
The 4000-series is a family of logic ICs – we had another one in the past: The 74xx

0:00:23.630,0:00:29.840
The Difference: Back when these where released ony the 4000-series used

0:00:29.840,0:00:34.850
CMOS-technology (field effect transistors) and used considerably less power

0:00:34.850,0:00:40.860
Today this is no longer relevant: The 74-series is now also avilable with CMOS-technology (74HC)

0:00:40.860,0:00:45.950
Also most 4000-parts have been ported to the 74-series

0:00:45.950,0:00:50.019
and can be found with similar numbers. Todays chip is the 4017

0:00:50.019,0:00:57.469
a so called decade counter, also known as decimal or ring counter

0:00:57.469,0:01:03.210
It is used to drive multiple outputs sequencially or

0:01:03.210,0:01:08.140
as a frequency divider in clock based circuits. The chip is available in

0:01:08.140,0:01:13.840
several types like the 16 pin DIP packace shown here

0:01:13.840,0:01:19.330
But there are also several SMD variants. Let’s take a look at the pins.

0:01:19.330,0:01:25.120
Vcc and GND can take up to 15V like most CMOS parts

0:01:25.120,0:01:35.830
Keep in mind 74-clones utilize the inputs typical to this series

0:01:35.830,0:01:41.430
so usually just above 5V max. The next pin is „master reset“ – as the name suggests

0:01:41.430,0:01:46.020
it can be used to reset the IC. If we apply a high level all settings

0:01:46.020,0:01:51.420
are set back to the initial values. The following pins are related to the clock input

0:01:51.420,0:01:59.820
CP0 is the main clock input. CP1 depends on the vaiant:

0:01:59.820,0:02:08.420
The original 4017 uses CP1 as „clock enable“. Only if the pin

0:02:08.420,0:02:19.100
is pulled down to GND the main input CP0 will react to pulses. If you use a 74-series repica, which are

0:02:19.100,0:02:25.380
more common these days, CP1 is an additional clock input.

0:02:25.380,0:02:32.980
The difference: CP0 generates the clock pulse when encountering a rising edge

0:02:32.980,0:02:43.220
CP1 reacts to a falling edge. Both chips can nevertheless be used mostly the same:

0:02:43.220,0:02:49.620
If you pull CP1 to GND on a 74-replica CP0 will still work as expected

0:02:49.620,0:03:02.020
The next pin „not Q5-Q9“ looks a bit odd. It’s deviated from the internal logic.

0:03:02.020,0:03:10.820
In practive it can be used to cascade multiple ICs. Each IC will add another decade

0:03:10.820,0:03:20.900
We are left with Q0 to Q9 – these are our 10 outputs

0:03:20.900,0:03:30.420
As we can see these are not ordered but placed based on the internal logic

0:03:30.420,0:03:41.200
let’s have a look at the internals

0:03:41.200,0:03:49.200
assume there is a conveyor belt inside the chip and a bulb glued to a fixed position

0:03:49.200,0:03:56.800
located above are several boxes representing the outputs. So the first box corresponds to Q0

0:03:56.800,0:04:04.720
the second box to Q1 and so on up to the last box connected to Q9

0:04:04.720,0:04:11.560
If the bulb lights up the insides of a box the corresponding output turns on

0:04:11.560,0:04:17.000
currently the bulb is located below the first box so

0:04:17.000,0:04:24.199
Q0 is turned on – all other outputs are off.

0:04:24.199,0:04:29.979
If we now generate a clock on CP0 the belt starts to move

0:04:29.979,0:04:36.889
The systems has a logic to move only one position ahead

0:04:36.889,0:04:41.440
so now it moves from the first box to the second one

0:04:41.440,0:04:47.580
now the second box is lit so Q0 turns off, Q1 on.

0:04:47.580,0:04:53.990
To be able to move again we have to turn off CP0. Wenn we turn it on again

0:04:53.990,0:04:58.620
the belt will again move one position ahead. This can be repeated as we want

0:04:58.880,0:05:05.100
or we turn on the reset. In this case the lamp moves back to

0:05:05.100,0:05:15.160
the first position an Q0 is turned on again. As long as reset is on

0:05:15.160,0:05:20.070
no new clock pulses are accepted. If we turn off reset

0:05:20.070,0:05:25.949
we can move the bulb again. We now repeat this procedure until we reach the last box

0:05:25.949,0:05:32.350
and now? If we pulse CP0 again the control logic takes us back to the first position

0:05:32.350,0:05:40.910
There is no interruption and other outputs don’t turn on while we move back.

0:05:40.920,0:05:50.120
You also saw ^Q5-9 turn of and on like it’s name suggested

0:05:50.120,0:05:59.520
Let‘ have a look at possible applications. The classic first: One pulse should control multiple outputs

0:05:59.520,0:06:06.000
e.g. a microcontroller which controls 10 LEDs. What do we get?

0:06:06.000,0:06:15.960
A nice light chaser. Some people might say „OK, but why a decade counter – a shift register will also do the job“

0:06:15.960,0:06:21.240
Right, but they got different applications. This IC is not as flexible

0:06:21.240,0:06:29.180
but it just needs a pulse. No sequences, no additional logic

0:06:29.220,0:06:34.620
so we don’t have to use a microcontroller

0:06:34.620,0:06:43.560
a simple circuit can for example connect a microphone and

0:06:43.560,0:06:53.000
the lights now move to the beat of nearby music. Since this only uses this IC

0:06:53.000,0:06:58.680
it is a project beginners build often. The second use mentioned is a frequency divider

0:06:58.680,0:07:07.480
let’s apply a square wave with 100kHz and look at one of the outputs

0:07:07.480,0:07:21.320
there are now 10kHz present – one-tenth the original frequency. Using other combinations

0:07:21.320,0:07:33.240
several dividers can be built. As usual we also take a look at the real IC

0:07:33.240,0:07:39.920
This is the test circuit. Down below we see our IC – and who has got good eyesight?

0:07:39.920,0:07:48.920
Yes, it’s a 74-series clone, not the original MOS-part. Alongside we’ve got two push buttons

0:07:48.920,0:08:00.160
the first one in connected to CP0, the other one to reset. The cables lead to LEDs connected to the outputs

0:08:00.160,0:08:14.040
the green ones are Q0 to Q9, the red one is connected to ^Q5-Q9

0:08:14.050,0:08:27.770
Lets turn the lights down and apply power: The LEDs 0 and ^5-9 turned on

0:08:27.770,0:08:34.410
If we now press the clock-button the next LED should turn on – and it does.

0:08:34.410,0:08:48.970
next, next, bad connection, next… OK, I reseated all connections

0:08:48.980,0:09:00.410
now all LEDs should work: 0,1,2,3,4,5,6,7,8 and 9. We’ve got our light chaser

0:09:00.410,0:09:06.839
We also see ^Q5-9 turn off after the fifth LED

0:09:06.839,0:09:14.649
Now we can press again and again – but this isn’t a lot of fun. Let’s look for other ways

0:09:14.649,0:09:24.740
The simplest automation can be archived using a signal generator. If I connect this to the clock input

0:09:24.740,0:09:30.240
the LEDs should advance. The device is set to 2Hz so the LEDs should change

0:09:30.240,0:09:38.110
every 500ms. While we see a reaction it is not quite what I intended

0:09:38.110,0:09:55.470
obviously the signal is to distorted to switch properly

0:09:55.480,0:10:07.670
I can however increase the frequency – 3Hz – and now the switching seems to work

0:10:07.680,0:10:20.149
Now we can get faster and faster until we get a smooth movement

0:10:20.149,0:10:30.060
Still, a static frequency is boring – alternatives?

0:10:30.060,0:10:39.390
I now use a audio cable hooked up to a transistor.

0:10:39.400,0:10:53.520
Not a proper circuit but it should show a basic reaction

0:10:53.520,0:11:13.200
Is we look at the LEDs while I play music we can make out the beat.

0:11:13.209,0:11:19.070
As said it can also be used as frequency divider – not much to connect

0:11:19.070,0:11:27.470
I fixed CP1 and attached some leads to CP0. Now I apply a signal using my waveform generator

0:11:27.470,0:11:35.910
using an oscilloscope we see a 500Hz input. If we now take a look at the output

0:11:35.920,0:11:49.880
it shows 50Hz – one tenth

0:11:49.890,0:12:13.029
We also can count the pusses – after 10 rising edged we finished one cycle of the output waveform

0:12:13.029,0:12:18.279
So also this configuration – or with other words:

0:12:18.279,0:12:20.479
it does what it should do

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert