CD4017BE Texas Instruments decimális számláló IC
zoom_out_map
chevron_left chevron_right

A termékfotók tájékoztató jellegűek, és a gyártási tételtől és a beszállítótól függően kisebb eltéréseket mutathatnak. A termék specifikációi és árai előzetes értesítés nélkül változhatnak. Mindent megteszünk, hogy a lehető legpontosabb és leghitelesebb specifikációkat adjuk meg a termékoldalon, de lehetséges, hogy ezek nem teljesen helyesek. Ha ilyen esetet észlel, kérjük, jelentse nekünk.

A termék szakemberek számára készült, és használatához képzett, valamint felhatalmazott személyzet szükséges. A termék nem tartalmaz összeszerelési/használati útmutatót . A termék nem megfelelő képesítéssel rendelkező személyek általi üzembe helyezése a weboldalon található Általános Szerződési Feltételek értelmében a jótállás elvesztését eredményezi.

A megadott műszaki adatok (áram, teljesítmény stb.) ideális működési körülmények között érvényes maximális értékeket jelentenek. A biztonságos használat és az optimális élettartam érdekében javasolt a terméket folyamatos üzemben legfeljebb a megadott maximális értékek 50%-án használni.

CD4017BE IC, CMOS decimális számláló, 10 dekódolt kimenet, 3-18V, DIP-16

Decimális számláló IC 10 dekódolt kimenettel, ideális LED-sorozatok vezérlésére, frekvenciaosztásra és egyszerű automatizálásokra. Széles tartományú tápfeszültséggel működik, stabil számlálást biztosít reset és enable bemenettel, alacsony fogyasztású CMOS kimeneteket kínál, és könnyen integrálható digitális áramkörökbe.

5,48 lei Adóval együtt

4,53 lei Áfa nélkül

(5/5) kívül 9 összes értékelés
Olvasd el a véleményeket
1-2 zile
check In Stoc

Shipping by szerda 11 november

A termék megvásárlásával jár 0,27 lei hűségpont.

Jótállás: 24 hónap magánszemélyeknek
NEMZETKÖZI SZÁLLÍTÁS
Nemzetközi gyors szállítás az EU-n belül. Ingyenes szállítás 100 EUR feletti megrendelések esetén a legtöbb EU-országban.
GYORS KISZÁLLÍTÁS 24 ÓRÁN BELÜL
24 órán belül szállítunk raktárunkból
HŰSÉGPONTOK
Minden rendelés után pontokat kap, a rendelés értékének 5%-ában.

A Texas Instruments CD4017BE integrált áramkör CMOS decimális számláló, 10 dekódolt kimenettel. Minden órajel-impulzusnál a kimenetek közül egy aktiválódik, sorban egymás után. Szekvenciális fényjelzésekhez, sorrendvezérlőkhöz, lépcsős időzítésekhez, csatornaválasztókhoz, 10-es osztási arányú frekvenciaosztókhoz és kaszkádba kapcsolt számlálóláncokhoz alkalmas.

Az áramkör 5 fokozatú Johnson-számlálót és egy dekódolót tartalmaz, így bármely pillanatban a Q0 és Q9 közül csak egy kimenet van magas szinten. A számláló az órajel (CLOCK) láb felfutó élére lép, feltéve, hogy a CLOCK INHIBIT láb alacsony szinten van. A RESET láb magas szintje a számlálót a Q0 állapotba állítja vissza. A CARRY OUT kimenet a Q0 - Q4 állapotokban magas, a Q5 - Q9 állapotokban alacsony szintű, ezért a bemeneti órajel frekvenciáját 10-zel osztja, és vezérelheti egy második áramkör CLOCK bemenetét a 100-ig történő számláláshoz.

Főbb jellemzői közé tartozik a Schmitt-trigger működésű CLOCK bemenet, a külön RESET és CLOCK INHIBIT bemenet, a 10 dekódolt kimenet (Q0 - Q9), a CARRY OUT kimenet, a statikus működés és a furatszerelt DIP-16 tok. A tápfeszültség 3 - 18 VDC, a VDD (16) és a VSS (8) láb között.

 

Specifikációk:

Tápfeszültség: 3 - 18 VDC

Gyártó: Texas Instruments

Logikai család: CD4000 (CMOS)

Áramkör típusa: 5 fokozatú Johnson-számláló dekódolóval, decimális

Kimenetek: 10 dekódolt (Q0 - Q9) és CARRY OUT

Vezérlő bemenetek: CLOCK, RESET, CLOCK INHIBIT

Számlálás indítása: Felfutó él a CLOCK lábon, Schmitt-trigger bemenettel

Működési mód: Statikus

Üzemi hőmérséklet: -55 - 125 °C

Tok: DIP-16 (PDIP-16), furatszerelt

 

Kivezetések:

CD4017BE kivezetései, decimális számláló 10 dekódolt kimenettel, DIP-16 tok

Csatlakozó Láb Funkció
DIP-16 1 (Q5) 5. dekódolt kimenet
DIP-16 2 (Q1) 1. dekódolt kimenet
DIP-16 3 (Q0) 0. dekódolt kimenet, RESET után aktív
DIP-16 4 (Q2) 2. dekódolt kimenet
DIP-16 5 (Q6) 6. dekódolt kimenet
DIP-16 6 (Q7) 7. dekódolt kimenet
DIP-16 7 (Q3) 3. dekódolt kimenet
DIP-16 8 (VSS) Föld (GND)
DIP-16 9 (Q8) 8. dekódolt kimenet
DIP-16 10 (Q4) 4. dekódolt kimenet
DIP-16 11 (Q9) 9. dekódolt kimenet
DIP-16 12 (CARRY OUT) Átviteli kimenet, magas szint a Q0 - Q4 állapotokban és alacsony szint a Q5 - Q9 állapotokban
DIP-16 13 (CLOCK INHIBIT) Magas szint blokkolja a számlálást, alacsony szint engedélyezi
DIP-16 14 (CLOCK) Órajel bemenet, felfutó élre számol
DIP-16 15 (RESET) Magas szint a számlálót a Q0 állapotba állítja vissza
DIP-16 16 (VDD) Tápfeszültség 3 - 18 VDC

 

Használat:

Az áramkört úgy helyezze be, hogy a tok bemetszése balra nézzen, így az 1-es láb a bal alsó sarokban legyen, a lábak számozása pedig az óramutató járásával ellentétes irányban történik.

Az áramkört a VDD (16) és a VSS (8) láb között táplálja, 3 és 18 VDC közötti feszültséggel, a polaritás betartásával.

Helyezzen el egy 100 nF-os kerámia kondenzátort a 16-os és 8-as láb közé, lehetőleg minél közelebb az áramkörhöz, hogy a kapcsolási impulzusok ne okozzanak hamis számlálást.

Soha ne hagyja csatlakoztatatlanul a RESET és a CLOCK INHIBIT lábat. Normál működéshez kösse őket földre, vagy egy vezérlőjelhez.

Az órajel jelet a CLOCK lábra adja. Minden felfutó élnél a magas szint az egyik kimenetről a következőre lép, Q0-tól Q9-ig, majd a ciklus újraindul.

A számlálás blokkolásához hozza a CLOCK INHIBIT lábat magas szintre. Az órajel impulzusokat a rendszer figyelmen kívül hagyja, amíg a láb vissza nem tér alacsony szintre.

A számláló Q0 állapotba állításához rövid ideig tartsa magas szinten a RESET lábat, majd térjen vissza alacsony szintre.

10 lépésnél rövidebb ciklushoz kösse a kívánt Qn kimenetet a RESET lábra. A számláló a Q0-tól a Qn-1 állapotig halad, majd visszaáll.

100-ig történő számláláshoz kösse az első áramkör CARRY OUT kimenetét a második áramkör CLOCK lábára.

A kimenetek csak kis áramot szolgáltatnak, ezért ne kössön LED-eket közvetlenül rájuk. Használjon tranzisztort vagy puffer áramkört, valamint áramkorlátozó ellenállást.

Az áramkör CMOS technológiájú, ezért elektrosztatikus kisülésre érzékeny, kezelje óvatosan, és ne kapcsoljon a bemenetekre a tápfeszültségnél nagyobb feszültséget.

191
Tápfeszültség
3-18 V DC
Típus
5 fokozatú Johnson-számláló dekóderrel, dekádikus
Üzemi hőmérséklet
-55-125 °C
Kimenet típusa
10 dekódolt (Q0 - Q9) és CARRY OUT
Szerelés
furatszerelt (THT)
Gyártó
Texas Instruments
Tokozás
DIP-16 (PDIP-16)

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].

/*
  CD4017BE decade counter test

  Board: Arduino Uno (Arduino AVR Boards, installed with Arduino IDE)
  Libraries: none, only the core Arduino functions are used

  Wiring (CD4017BE pin -> Arduino Uno pin):
    VDD (16)           -> 5V
    VSS (8)            -> GND
    CLOCK (14)         -> D2
    RESET (15)         -> D3
    CLOCK INHIBIT (13) -> D4
    Q0 (3)  -> D5
    Q1 (2)  -> D6
    Q2 (4)  -> D7
    Q3 (7)  -> D8
    Q4 (10) -> D9
    Q5 (1)  -> D10
    Q6 (5)  -> D11
    Q7 (6)  -> D12
    Q8 (9)  -> A0
    Q9 (11) -> A1
    CARRY OUT (12) -> A2
  A 100 nF ceramic capacitor goes between pins 16 and 8.
*/

const uint8_t PIN_CLOCK   = 2;   // Clock input of the counter
const uint8_t PIN_RESET   = 3;   // Reset input, HIGH sets the counter to Q0
const uint8_t PIN_INHIBIT = 4;   // Clock inhibit, HIGH blocks counting
const uint8_t PIN_CARRY   = A2;  // Carry out output

// Arduino pins connected to outputs Q0 - Q9, in order
const uint8_t OUT_PINS[10] = {5, 6, 7, 8, 9, 10, 11, 12, A0, A1};

int seq[10];    // Active output after each clock pulse
int carry[10];  // Carry out level after each clock pulse

// Send one clock pulse, the counter advances on the rising edge
void pulseClock() {
  digitalWrite(PIN_CLOCK, HIGH);
  delayMicroseconds(20);
  digitalWrite(PIN_CLOCK, LOW);
  delayMicroseconds(20);
}

// Send a short reset pulse, the counter returns to Q0
void resetCounter() {
  digitalWrite(PIN_RESET, HIGH);
  delayMicroseconds(20);
  digitalWrite(PIN_RESET, LOW);
  delayMicroseconds(20);
}

// Return the number of the single HIGH output, or -1 if not exactly one is HIGH
int readActiveOutput() {
  int active = -1;
  int count = 0;
  for (int i = 0; i < 10; i++) {
    if (digitalRead(OUT_PINS[i]) == HIGH) {
      active = i;
      count++;
    }
  }
  if (count != 1) {
    return -1;
  }
  return active;
}

// Print the output name, for example Q3
void printOutput(int index) {
  if (index < 0) {
    Serial.print("Q?");
  } else {
    Serial.print("Q");
    Serial.print(index);
  }
}

void setup() {
  Serial.begin(9600);

  pinMode(PIN_CLOCK, OUTPUT);
  pinMode(PIN_RESET, OUTPUT);
  pinMode(PIN_INHIBIT, OUTPUT);
  pinMode(PIN_CARRY, INPUT);
  for (int i = 0; i < 10; i++) {
    pinMode(OUT_PINS[i], INPUT);
  }

  digitalWrite(PIN_CLOCK, LOW);
  digitalWrite(PIN_RESET, LOW);
  digitalWrite(PIN_INHIBIT, LOW);   // LOW allows counting

  Serial.println("CD4017 test started");
}

void loop() {
  // Step 1: reset the counter and show the start position
  resetCounter();
  Serial.print("Reset: active output ");
  printOutput(readActiveOutput());
  Serial.println();

  // Step 2: ten clock pulses, record the outputs after each one
  for (int i = 0; i < 10; i++) {
    pulseClock();
    seq[i] = readActiveOutput();
    carry[i] = digitalRead(PIN_CARRY);
  }

  Serial.print("Sequence after each clock pulse: ");
  for (int i = 0; i < 10; i++) {
    printOutput(seq[i]);
    Serial.print(" ");
  }
  Serial.println();

  Serial.print("Carry out after each pulse:      ");
  for (int i = 0; i < 10; i++) {
    Serial.print(" ");
    Serial.print(carry[i]);
    Serial.print(" ");
  }
  Serial.println();

  if (seq[9] == 0) {
    Serial.println("Result: counter wrapped back to Q0 after 10 pulses");
  } else {
    Serial.println("Error: counter did not return to Q0, check wiring");
  }

  // Step 3: clock inhibit HIGH, pulses must be ignored
  digitalWrite(PIN_INHIBIT, HIGH);
  for (int i = 0; i < 3; i++) {
    pulseClock();
  }
  Serial.print("Clock inhibit HIGH, 3 pulses: output stays ");
  printOutput(readActiveOutput());
  Serial.println();

  // Step 4: clock inhibit LOW, one pulse moves the counter
  digitalWrite(PIN_INHIBIT, LOW);
  pulseClock();
  Serial.print("Clock inhibit LOW, 1 pulse: output moves to ");
  printOutput(readActiveOutput());
  Serial.println();

  // Step 5: reset returns the counter to Q0
  resetCounter();
  Serial.print("Reset HIGH: output returns to ");
  printOutput(readActiveOutput());
  Serial.println();

  delay(3000);   // Wait before repeating the test
}

Ez az útmutató egy Arduino Uno lapot használ, amely órajelet ad a CD4017BE integrált áramkörnek, és beolvassa a kimenetei állapotát. Az Arduino Uno azért megfelelő választás, mert 5 V-on dolgozik, ezen a feszültségen a CD4017BE közvetlenül működik, a 10 kimenet és a keresztátviteli kimenet pedig a lap digitális tűivel olvasható.

A CD4017BE egy CMOS decimális számláló 10 dekódolt kimenettel, DIP-16 tokban. Minden órajel-impulzusnál a magas szint átlép az egyik kimenetről a következőre, Q0-tól Q9-ig, majd az áramkör elölről kezdi. Sorozatos fényjelzésekhez, szekvenszerekhez, lépcsős időzítésekhez, csatornaválasztókhoz és 10-es osztású frekvenciaosztókhoz használják.

IC CD4017, CD4017BE

Hogyan működik:

A CD4017BE egy 5 fokozatú Johnson-számlálót tartalmaz, amelyet dekódoló követ. A dekódolónak köszönhetően bármely pillanatban a Q0 és Q9 közül csak egy kimenet van magas szinten, a másik kilenc alacsony. Minden kimenet pontosan az órajel egy teljes periódusáig marad magas szinten.

A számláló a CLOCK láb felfutó élére lép előre, feltéve, hogy a CLOCK INHIBIT láb alacsony szinten van. Ha a CLOCK INHIBIT magas szinten van, az órajel-impulzusokat figyelmen kívül hagyja, és a számláló helyben marad. A RESET lábon lévő magas szint a számlálót nulla pozícióba állítja, vagyis a Q0 magas lesz, a többi kimenet alacsony. A RESET és a CLOCK INHIBIT lábakat soha nem szabad lebegve hagyni, mindkettőt vagy VDD-re, vagy földre kell kötni.

A CARRY OUT kimenet magas szinten van, amíg a számláló a Q0 - Q4 pozíciókban tartózkodik, és alacsony szinten a Q5 - Q9 pozíciókban. 10 órajel-impulzusonként tesz meg egy teljes ciklust, ezért a CARRY OUT frekvenciája az órajel frekvenciájának tizede. Például 1000 Hz-es órajelből 100 Hz lesz a CARRY OUT jelen. Minden Qn kimenet szintén az órajel frekvenciájának tizedét kapja, de csak a periódusának egytizedéig marad magas szinten. A CARRY OUT kimenetet egy második CD4017BE CLOCK bemenetére kell kötni, ha 100-ig szeretne számolni.

Az áramkör 3 V és 18 V közötti tápfeszültséggel működik. Ebben az útmutatóban az Arduino lapról, 5 V-ról tápláljuk, hogy a kimenetek szintjei kompatibilisek legyenek az Arduino Uno tűivel.

Csatlakoztatás:

Helyezze az áramkört a próbapanelre úgy, hogy a tok bevágása balra nézzen, így az 1-es láb legyen a bal alsó sarokban. Kösse az áramkört 5 V-ra, és egy 100 nF-os kerámia kondenzátort kössön a 16-os és a 8-as láb közé, minél közelebb az áramkörhöz, hogy a kapcsolási impulzusok ne okozzanak hamis számlálást. A CD4017BE kimenetei 5 V-on csak nagyon kis áramot tudnak adni, ezért ebben a kapcsolásban ne kössön rájuk közvetlenül LED-eket. Csak az Arduino digitális bemeneteivel olvassuk őket. Ne használja a D13 lábat kimenetnek, mert a lapon lévő LED van rá kötve, és terhelné a kimenetet. A logikai szintek 5 V-osak, ezért nincs szükség szintillesztőre, a RESET és a CLOCK INHIBIT jeleket pedig a lap vezérli, így pull-up ellenállásokra sincs szükség.

Áramköri láb Csatlakozik ide Szerep
VDD (16. láb) 5V Arduino Az áramkör tápellátása
VSS (8. láb) GND Arduino Föld
Kondenzátor 100 nF (104) A 16. láb és a GND között Tápfeszültség-leválasztás, minél közelebb az áramkörhöz
CLOCK (14. láb) D2 Órajel bemenet, felfutó élre számlál
RESET (15. láb) D3 Magas szint a számlálót Q0-ra állítja
CLOCK INHIBIT (13. láb) D4 Magas szint tiltja a számlálást, alacsony szint engedi
Q0 (3. láb) D5 0-s kimenet
Q1 (2. láb) D6 1-es kimenet
Q2 (4. láb) D7 2-es kimenet
Q3 (7. láb) D8 3-as kimenet
Q4 (10. láb) D9 4-es kimenet
Q5 (1. láb) D10 5-ös kimenet
Q6 (5. láb) D11 6-os kimenet
Q7 (6. láb) D12 7-es kimenet
Q8 (9. láb) A0 8-as kimenet
Q9 (11. láb) A1 9-es kimenet
CARRY OUT (12. láb) A2 Keresztátviteli kimenet, magas a Q0 - Q4 pozíciókban

A CD4017BE decimális számláló csatlakoztatása Arduino Uno R3-hoz, 100 nF leválasztó kondenzátorral

Kártya és könyvtárak:

Az Arduino IDE-ben válassza ki az Arduino Uno lapot a Tools > Board menüből, az Arduino AVR Boards csomagból, amely az Arduino IDE-vel együtt van telepítve. A program csak az Arduino alapfunkcióit használja, ezért nem kell könyvtárat telepíteni.

A kód:

A program nullázza a számlálót, 10 órajel-impulzust küld, minden impulzus után beolvassa az aktív kimenetet és a CARRY OUT jelet, majd ellenőrzi a RESET és a CLOCK INHIBIT lábakat.

/*
  CD4017BE decade counter test
  Board: Arduino Uno (Arduino AVR Boards, installed with Arduino IDE)
  Libraries: none, only the core Arduino functions are used
  Wiring (CD4017BE pin -> Arduino Uno pin):
    VDD (16)           -> 5V
    VSS (8)            -> GND
    CLOCK (14)         -> D2
    RESET (15)         -> D3
    CLOCK INHIBIT (13) -> D4
    Q0 (3)  -> D5
    Q1 (2)  -> D6
    Q2 (4)  -> D7
    Q3 (7)  -> D8
    Q4 (10) -> D9
    Q5 (1)  -> D10
    Q6 (5)  -> D11
    Q7 (6)  -> D12
    Q8 (9)  -> A0
    Q9 (11) -> A1
    CARRY OUT (12) -> A2
  A 100 nF ceramic capacitor goes between pins 16 and 8.
*/
const uint8_t PIN_CLOCK   = 2;   // Clock input of the counter
const uint8_t PIN_RESET   = 3;   // Reset input, HIGH sets the counter to Q0
const uint8_t PIN_INHIBIT = 4;   // Clock inhibit, HIGH blocks counting
const uint8_t PIN_CARRY   = A2;  // Carry out output
// Arduino pins connected to outputs Q0 - Q9, in order
const uint8_t OUT_PINS[10] = {5, 6, 7, 8, 9, 10, 11, 12, A0, A1};
int seq[10];    // Active output after each clock pulse
int carry[10];  // Carry out level after each clock pulse
// Send one clock pulse, the counter advances on the rising edge
void pulseClock() {
  digitalWrite(PIN_CLOCK, HIGH);
  delayMicroseconds(20);
  digitalWrite(PIN_CLOCK, LOW);
  delayMicroseconds(20);
}
// Send a short reset pulse, the counter returns to Q0
void resetCounter() {
  digitalWrite(PIN_RESET, HIGH);
  delayMicroseconds(20);
  digitalWrite(PIN_RESET, LOW);
  delayMicroseconds(20);
}
// Return the number of the single HIGH output, or -1 if not exactly one is HIGH
int readActiveOutput() {
  int active = -1;
  int count = 0;
  for (int i = 0; i < 10; i++) {
    if (digitalRead(OUT_PINS[i]) == HIGH) {
      active = i;
      count++;
    }
  }
  if (count != 1) {
    return -1;
  }
  return active;
}
// Print the output name, for example Q3
void printOutput(int index) {
  if (index < 0) {
    Serial.print("Q?");
  } else {
    Serial.print("Q");
    Serial.print(index);
  }
}
void setup() {
  Serial.begin(9600);
  pinMode(PIN_CLOCK, OUTPUT);
  pinMode(PIN_RESET, OUTPUT);
  pinMode(PIN_INHIBIT, OUTPUT);
  pinMode(PIN_CARRY, INPUT);
  for (int i = 0; i < 10; i++) {
    pinMode(OUT_PINS[i], INPUT);
  }
  digitalWrite(PIN_CLOCK, LOW);
  digitalWrite(PIN_RESET, LOW);
  digitalWrite(PIN_INHIBIT, LOW);   // LOW allows counting
  Serial.println("CD4017 test started");
}
void loop() {
  // Step 1: reset the counter and show the start position
  resetCounter();
  Serial.print("Reset: active output ");
  printOutput(readActiveOutput());
  Serial.println();
  // Step 2: ten clock pulses, record the outputs after each one
  for (int i = 0; i < 10; i++) {
    pulseClock();
    seq[i] = readActiveOutput();
    carry[i] = digitalRead(PIN_CARRY);
  }
  Serial.print("Sequence after each clock pulse: ");
  for (int i = 0; i < 10; i++) {
    printOutput(seq[i]);
    Serial.print(" ");
  }
  Serial.println();
  Serial.print("Carry out after each pulse:      ");
  for (int i = 0; i < 10; i++) {
    Serial.print(" ");
    Serial.print(carry[i]);
    Serial.print(" ");
  }
  Serial.println();
  if (seq[9] == 0) {
    Serial.println("Result: counter wrapped back to Q0 after 10 pulses");
  } else {
    Serial.println("Error: counter did not return to Q0, check wiring");
  }
  // Step 3: clock inhibit HIGH, pulses must be ignored
  digitalWrite(PIN_INHIBIT, HIGH);
  for (int i = 0; i < 3; i++) {
    pulseClock();
  }
  Serial.print("Clock inhibit HIGH, 3 pulses: output stays ");
  printOutput(readActiveOutput());
  Serial.println();
  // Step 4: clock inhibit LOW, one pulse moves the counter
  digitalWrite(PIN_INHIBIT, LOW);
  pulseClock();
  Serial.print("Clock inhibit LOW, 1 pulse: output moves to ");
  printOutput(readActiveOutput());
  Serial.println();
  // Step 5: reset returns the counter to Q0
  resetCounter();
  Serial.print("Reset HIGH: output returns to ");
  printOutput(readActiveOutput());
  Serial.println();
  delay(3000);   // Wait before repeating the test
}

A kód működése:

Elöl definiáljuk a lábakat: PIN_CLOCK (D2), PIN_RESET (D3), PIN_INHIBIT (D4) és PIN_CARRY (A2). Az OUT_PINS tömb sorrendben tartalmazza a Q0 - Q9 kimenetekhez kötött Arduino lábakat. A seq és a carry tömb az aktív kimenetet, illetve a CARRY OUT szintjét tárolja minden órajel-impulzus után.

A pulseClock() függvény 20 mikroszekundumig magas szintre húzza az órajel lábat, majd alacsonyra, így felfutó élt hoz létre, amely a számlálót egy pozícióval előrelépteti. A resetCounter() függvény rövid impulzust küld a RESET lábra, és visszaállítja a számlálót Q0-ra.

A readActiveOutput() függvény beolvassa a 10 kimenetet, és visszaadja az egyetlen magas szintű kimenet számát. Ha nincs pontosan egy magas kimenet, -1-et ad vissza, ami kapcsolási problémára utal. A printOutput() függvény kiírja a kimenet nevét, például Q3, vagy Q?-t, ha az érték nem érvényes.

A setup() függvényben 9600 baudon elindítjuk a soros portot, a CLOCK, a RESET és a CLOCK INHIBIT lábakat kimenetként, az olvasólábakat pedig bemenetként állítjuk be. A három vezérlőlábat alacsony szintre húzzuk, így a számlálás engedélyezett.

A loop() függvényben öt lépés fut le. Először nullázzuk a számlálót, és kiírjuk a kiindulási pozíciót. Ezután 10 órajel-impulzust küldünk, és megjegyezzük az aktív kimenetet és a CARRY OUT szintjét. Ha a tizedik impulzus után az aktív kimenet ismét Q0, a számláló teljes ciklust tett meg. A 3. lépésben a CLOCK INHIBIT lábat magas szintre húzzuk, és 3 impulzust küldünk, amelyeket figyelmen kívül kell hagyni. A 4. lépésben a láb visszakerül alacsony szintre, és egyetlen impulzus a számlálót Q1-re lépteti. Az 5. lépésben egy újabb reset visszaállítja a számlálót Q0-ra, majd a program 3 másodpercet vár, és újraindítja a tesztet.

Eredmény:

Nyissa meg az Arduino IDE Soros monitorát 9600 baud sebességgel. Minden tesztciklusban látni fogja a reset utáni pozíciót, a kimenetek sorrendjét minden órajel-impulzus után, a CARRY OUT szintjét (1 a Q0 - Q4 pozíciókban és 0 a Q5 - Q9 pozíciókban), valamint a CLOCK INHIBIT és a RESET ellenőrzések eredményét.

CD4017 test started
Reset: active output Q0
Sequence after each clock pulse: Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q0 
Carry out after each pulse:       1  1  1  1  0  0  0  0  0  1 
Result: counter wrapped back to Q0 after 10 pulses
Clock inhibit HIGH, 3 pulses: output stays Q0
Clock inhibit LOW, 1 pulse: output moves to Q1
Reset HIGH: output returns to Q0

Gyakori problémák:

A soros monitoron Q? jelenik meg egy kimenet helyett. Az ok általában hibás csatlakoztatás vagy az áramkör tápellátásának hiánya, így nincs pontosan egy magas szintű kimenet. Ellenőrizze a 16-os és a 8-as lábat, valamint a Q0 - Q9 kimenetek és a D5 - D12, A0 és A1 lábak megfeleltetését.

A számláló átugrik pozíciókat, vagy egy impulzusra többet számol. Az ok általában a 100 nF-os kondenzátor hiánya a 16-os és a 8-as láb között, vagy a hosszú vezetékek a CLOCK lábon. Helyezze a kondenzátort az áramkör közelébe, és rövidítse meg a vezetékeket.

A számláló mindig ugyanazon a kimeneten marad. Ellenőrizze, hogy a CLOCK INHIBIT (13) láb alacsony szinten van-e, és hogy a CLOCK (14) láb a D2-re van-e kötve. A magas szinten maradt RESET láb a számlálót Q0-n tartja.

Az eredmények instabilak, vagy minden futtatásnál eltérnek. A RESET és a CLOCK INHIBIT lábak valószínűleg lebegnek. Kösse őket a D3-ra és a D4-re, a táblázatnak megfelelően.

A kimenetek gyengének tűnnek, vagy a magas szint leesik, amikor terhelést kapcsolunk rájuk. A kimenetek csak kis áramot tudnak adni, ezért ne kössön rájuk közvetlenül LED-eket vagy más terhelést. Használjon tranzisztort vagy puffer áramkört.

Korlátok és tanácsok:

Az áramkör 3 V és 18 V közötti tápfeszültséggel működik, de ebben a kapcsolásban csak 5 V-ról tápláljuk. Magasabb feszültségnél a kimenetek meghaladnák az Arduino Uno lábai által elfogadott szintet. A maximális órajel-frekvencia a tápfeszültséggel együtt nő, és 5 V-on jóval meghaladja az ebben a tesztben használt sebességet.

A kimenetek árama csekély, ezért LED-ekhez, relékhez vagy más terhelésekhez használjon tranzisztoros erősítő fokozatot vagy meghajtó áramkört.

Később építhet 10 lépéses szekvenszert, fényszekvenciát, 10-es osztású frekvenciaosztót vagy 100-ig számláló áramkört, ha a CARRY OUT kimenetet egy második CD4017BE CLOCK bemenetére köti. Rövidebb ciklushoz kösse a kívánt Qn kimenetet a RESET lábra.

Ez még talán érdekelhet