IC CD4017BE Texas Instruments numarator decade
zoom_out_map
chevron_left chevron_right

Imaginile produselor au caracter informativ si pot prezenta diferente minore, in functie de lot si de furnizor. Este posibil ca specificatiile si pretul produselor sa fie modificate fara preaviz. Facem tot posibilul sa adaugam in pagina produselor specificatii cat mai exacte si corecte dar este posibil ca acestea sa nu fie in totalitate corecte. in cazul in care identificati un astfel de caz, va rugam sa ne semnalati acest lucru.

Produsele noastre sunt destinate in principal dezvoltarii, prototiparii si proiectelor tehnice. Informatiile privind specificatiile, instructiunile si conformitatea sunt furnizate conform datelor disponibile de la producatori sau furnizori. Pentru integrarea in produse finale sau aplicatii comerciale, recomandam verificarea compatibilitatii si conformitatii in functie de utilizarea dorita.

Specificatiile tehnice mentionate (curent, putere etc.) reprezinta valori maxime admise in conditii ideale de functionare. Pentru o utilizare sigura si o durata de viata optima, recomandam exploatarea produsului in regim continuu la cel mult 50% din valorile maxime specificate.

IC CD4017BE, numarator decadic CMOS, 10 iesiri decodificate, 3-18V, DIP-16

IC decade counter cu 10 iesiri decodate, ideal pentru secventiere de LED-uri, divizare de frecventa si automatizari simple. Functioneaza la alimentare larga, are numarare stabila cu reset si enable, ofera iesiri CMOS cu consum redus si integrare usoara in montaje digitale.

5,48 RON Cu TVA

4,53 RON Fara TVA

(5/5) din 9 total recenzii
Citeste recenziile
1-2 zile
check In Stoc
Ai gasit mai ieftin? Spune-ne! (autentifica-te pentru a trimite o solicitare)

Cumparand acest produs primesti 0,27 RON in puncte de fidelitate.

Garantie: 24 luni pentru persoane fizice
LIVRARE GRATUITA
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
EXPEDIERE RAPIDA
Produsele sunt expediate din stoc propriu
PUNCTE FIDELITATE
Primesti puncte la fiecare comanda, in valoare de 5%

Circuitul integrat CD4017BE de la Texas Instruments este un numarator decadic CMOS cu 10 iesiri decodificate, care activeaza pe rand cate o iesire la fiecare impuls de tact. Este potrivit pentru lumini secventiale, sechentiatoare, temporizari in trepte, selectoare de canale, divizoare de frecventa cu raport 10 si lanturi de numarare in cascada.

Circuitul contine un numarator Johnson cu 5 etaje urmat de un decodor, astfel incat in fiecare moment este pe nivel inalt o singura iesire dintre Q0 si Q9. Numaratorul avanseaza pe frontul crescator al semnalului de la pinul CLOCK, cu conditia ca pinul CLOCK INHIBIT sa fie pe nivel scazut. Un nivel inalt pe pinul RESET readuce numaratorul la Q0. Iesirea CARRY OUT este pe nivel inalt in pozitiile Q0 - Q4 si pe nivel scazut in pozitiile Q5 - Q9, deci da frecventa tactului impartita la 10 si poate comanda intrarea CLOCK a unui al doilea circuit pentru numarare pana la 100.

Printre caracteristicile principale se numara intrarea CLOCK cu actiune Schmitt trigger, intrarile separate RESET si CLOCK INHIBIT, cele 10 iesiri decodificate Q0 - Q9, iesirea CARRY OUT, functionarea statica si capsula DIP-16 pentru montaj prin gauri. Alimentarea se face la 3 - 18 VDC, intre pinul VDD (16) si pinul VSS (8).

 

Specificatii:

Tensiune alimentare: 3 - 18 VDC

Producator: Texas Instruments

Familie logica: CD4000 (CMOS)

Tip circuit: Numarator Johnson cu 5 etaje si decodor, decadic

Iesiri: 10 decodificate (Q0 - Q9) si CARRY OUT

Intrari de comanda: CLOCK, RESET, CLOCK INHIBIT

Declansare numarare: Front crescator pe CLOCK, cu intrare Schmitt trigger

Mod de functionare: Static

Temperatura de lucru: -55 - 125 °C

Capsula: DIP-16 (PDIP-16), montaj prin gauri

 

Pinout:

Pinout CD4017BE, numarator decadic cu 10 iesiri decodificate, capsula DIP-16

Conector Pin Functie
DIP-16 1 (Q5) Iesirea decodificata 5
DIP-16 2 (Q1) Iesirea decodificata 1
DIP-16 3 (Q0) Iesirea decodificata 0, activa dupa RESET
DIP-16 4 (Q2) Iesirea decodificata 2
DIP-16 5 (Q6) Iesirea decodificata 6
DIP-16 6 (Q7) Iesirea decodificata 7
DIP-16 7 (Q3) Iesirea decodificata 3
DIP-16 8 (VSS) Masa (GND)
DIP-16 9 (Q8) Iesirea decodificata 8
DIP-16 10 (Q4) Iesirea decodificata 4
DIP-16 11 (Q9) Iesirea decodificata 9
DIP-16 12 (CARRY OUT) Iesire de transport, nivel inalt in pozitiile Q0 - Q4 si nivel scazut in pozitiile Q5 - Q9
DIP-16 13 (CLOCK INHIBIT) Nivel inalt blocheaza numararea, nivel scazut o permite
DIP-16 14 (CLOCK) Intrare de tact, numara pe front crescator
DIP-16 15 (RESET) Nivel inalt readuce numaratorul la Q0
DIP-16 16 (VDD) Alimentare 3 - 18 VDC

 

Utilizare:

Montati circuitul cu crestatura capsulei orientata spre stanga, astfel incat pinul 1 sa fie primul pin din stanga jos, iar pinii se numeroteaza in sens invers acelor de ceasornic.

Alimentati circuitul intre pinul VDD (16) si pinul VSS (8), cu o tensiune cuprinsa intre 3 si 18 VDC, respectand polaritatea.

Montati un condensator ceramic de 100 nF intre pinii 16 si 8, cat mai aproape de circuit, pentru ca impulsurile de comutatie sa nu produca numarari false.

Nu lasati niciodata pinii RESET si CLOCK INHIBIT nelegati. Conectati-i la masa pentru functionare normala sau la un semnal de comanda.

Aplicati semnalul de tact pe pinul CLOCK. La fiecare front crescator, nivelul inalt trece de la o iesire la urmatoarea, de la Q0 la Q9, apoi ciclul se reia.

Pentru a bloca numararea, aduceti pinul CLOCK INHIBIT pe nivel inalt. Impulsurile de tact sunt ignorate pana cand pinul revine pe nivel scazut.

Pentru a readuce numaratorul la Q0, aduceti scurt pinul RESET pe nivel inalt, apoi inapoi pe nivel scazut.

Pentru un ciclu mai scurt de 10 pasi, conectati iesirea Qn dorita la pinul RESET. Numaratorul va parcurge pozitiile de la Q0 la Qn-1, apoi se va reseta.

Pentru numarare pana la 100, conectati iesirea CARRY OUT a primului circuit la pinul CLOCK al celui de-al doilea.

Iesirile pot furniza un curent mic, deci nu conectati LED-uri direct la ele. Folositi un tranzistor sau un circuit de tip buffer si o rezistenta de limitare a curentului.

Circuitul este CMOS, deci manipulati-l cu atentie fata de descarcarile electrostatice si nu aplicati pe intrari tensiuni mai mari decat tensiunea de alimentare.

191
Tensiune de alimentare
3-18 V DC
Tip
Numarator Johnson cu 5 etaje si decodor, decadic
Temperatura de lucru
-55-125 °C
Tip iesire
10 decodificate (Q0 - Q9) si CARRY OUT
Montaj
prin gauri
Producator
Texas Instruments
Capsula
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:

Acest produs este destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie, cercetare si aplicatii tehnice similare. Produsul trebuie utilizat doar conform specificatiilor tehnice mentionate in pagina produsului si/sau in documentatia disponibila.

Utilizarea incorecta, depasirea valorilor maxime admise de tensiune, curent, temperatura sau conectarea gresita pot duce la defectarea produsului, deteriorarea altor echipamente sau la riscuri de siguranta.

Produsul nu este jucarie si nu este destinat copiilor. Montajul, testarea si utilizarea trebuie realizate de persoane cu cunostinte minime in domeniul electric/electronic. Se recomanda utilizarea produsului in montaje protejate, carcase adecvate sau sisteme care respecta normele de siguranta aplicabile.

 

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]

/*
  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
}

Acest tutorial foloseste placa Arduino Uno, care genereaza semnalul de tact pentru circuitul integrat CD4017BE si citeste starea iesirilor lui. Arduino Uno este alegerea potrivita pentru ca lucreaza la 5 V, tensiune la care CD4017BE functioneaza direct, iar cele 10 iesiri plus iesirea de transport pot fi citite cu pinii digitali ai placii.

CD4017BE este un numarator decadic CMOS cu 10 iesiri decodificate, in capsula DIP-16. La fiecare impuls de tact, nivelul inalt trece de la o iesire la urmatoarea, de la Q0 la Q9, apoi circuitul o ia de la capat. Se foloseste la lumini secventiale, sechentiatoare, temporizari in trepte, selectoare de canale si divizoare de frecventa cu raport 10.

IC CD4017, CD4017BE

Cum functioneaza:

CD4017BE contine un numarator Johnson cu 5 etaje, urmat de un decodor. Datorita decodorului, in fiecare moment este pe nivel inalt o singura iesire dintre Q0 si Q9, iar celelalte noua sunt pe nivel scazut. Fiecare iesire ramane pe nivel inalt exact o perioada completa a semnalului de tact.

Numaratorul avanseaza pe frontul crescator al semnalului de la pinul CLOCK, cu conditia ca pinul CLOCK INHIBIT sa fie pe nivel scazut. Daca CLOCK INHIBIT este pe nivel inalt, impulsurile de tact sunt ignorate si numaratorul ramane pe loc. Un nivel inalt pe pinul RESET aduce numaratorul in pozitia zero, adica Q0 devine inalt, iar celelalte iesiri scazute. Pinii RESET si CLOCK INHIBIT nu se lasa niciodata in aer, trebuie legati fie la VDD, fie la masa.

Iesirea CARRY OUT este pe nivel inalt cat timp numaratorul se afla in pozitiile Q0 - Q4 si pe nivel scazut in pozitiile Q5 - Q9. Ea face un ciclu complet la fiecare 10 impulsuri de tact, deci frecventa de la CARRY OUT este frecventa tactului impartita la 10. De exemplu, un tact de 1000 Hz da 100 Hz la CARRY OUT. Fiecare iesire Qn are tot frecventa tactului impartita la 10, dar ramane inalta doar o zecime din perioada. Iesirea CARRY OUT se leaga la intrarea CLOCK a unui al doilea CD4017BE pentru a numara pana la 100.

Circuitul se alimenteaza intre 3 V si 18 V. In acest tutorial il alimentam de la 5 V, de la placa Arduino, ca nivelurile iesirilor sa fie compatibile cu pinii Arduino Uno.

Conectare:

Asezati circuitul pe breadboard cu crestatura capsulei spre stanga, astfel incat pinul 1 sa fie primul pin din stanga jos. Alimentati circuitul de la 5 V si conectati un condensator ceramic de 100 nF intre pinii 16 si 8, cat mai aproape de circuit, pentru ca impulsurile de comutatie sa nu produca numarari false. Iesirile CD4017BE la 5 V pot da doar un curent foarte mic, de aceea nu legati LED-uri direct la ele in acest montaj. Le citim doar cu intrarile digitale ale placii Arduino. Nu folositi pinul D13 pentru o iesire, deoarece are LED-ul placii conectat si ar incarca iesirea. Nivelurile logice sunt de 5 V, deci nu este nevoie de convertor de nivel, iar RESET si CLOCK INHIBIT sunt comandate de placa, deci nu sunt necesare rezistente pull-up.

Pin produs Se conecteaza la Rol
VDD (pin 16) 5V Arduino Alimentarea circuitului
VSS (pin 8) GND Arduino Masa
Condensator 100 nF (104) Intre pinul 16 si GND Decuplarea alimentarii, cat mai aproape de circuit
CLOCK (pin 14) D2 Intrarea de tact, numara pe front crescator
RESET (pin 15) D3 Un nivel inalt aduce numaratorul la Q0
CLOCK INHIBIT (pin 13) D4 Nivel inalt blocheaza numararea, nivel scazut o permite
Q0 (pin 3) D5 Iesirea 0
Q1 (pin 2) D6 Iesirea 1
Q2 (pin 4) D7 Iesirea 2
Q3 (pin 7) D8 Iesirea 3
Q4 (pin 10) D9 Iesirea 4
Q5 (pin 1) D10 Iesirea 5
Q6 (pin 5) D11 Iesirea 6
Q7 (pin 6) D12 Iesirea 7
Q8 (pin 9) A0 Iesirea 8
Q9 (pin 11) A1 Iesirea 9
CARRY OUT (pin 12) A2 Iesirea de transport, inalta in pozitiile Q0 - Q4

Conectarea numaratorului zecimal CD4017BE la Arduino Uno R3, cu condensator de decuplare de 100 nF

Placa si biblioteci:

In Arduino IDE selectati placa Arduino Uno din Tools > Board, din pachetul Arduino AVR Boards, care vine instalat odata cu Arduino IDE. Programul foloseste doar functiile de baza ale Arduino, asa ca nu trebuie instalata nicio biblioteca.

Codul:

Programul reseteaza numaratorul, trimite 10 impulsuri de tact, citeste dupa fiecare impuls iesirea activa si CARRY OUT, apoi verifica pinii RESET si CLOCK INHIBIT.

/*
  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
}

Cum functioneaza codul:

La inceput sunt definiti pinii: PIN_CLOCK (D2), PIN_RESET (D3), PIN_INHIBIT (D4) si PIN_CARRY (A2). Vectorul OUT_PINS contine, in ordine, pinii Arduino conectati la iesirile Q0 - Q9. Vectorii seq si carry pastreaza iesirea activa si nivelul CARRY OUT dupa fiecare impuls de tact.

Functia pulseClock() aduce pinul de tact pe nivel inalt pentru 20 de microsecunde, apoi pe nivel scazut, deci produce un front crescator la care numaratorul avanseaza cu o pozitie. Functia resetCounter() trimite un impuls scurt pe pinul RESET si readuce numaratorul la Q0.

Functia readActiveOutput() citeste cele 10 iesiri si returneaza numarul singurei iesiri aflate pe nivel inalt. Daca nu exista exact o iesire inalta, returneaza -1, ceea ce indica o problema de conexiune. Functia printOutput() afiseaza numele iesirii, de exemplu Q3, sau Q? cand valoarea nu este valida.

In setup() se porneste portul serial la 9600 baud, pinii CLOCK, RESET si CLOCK INHIBIT sunt configurati ca iesiri, iar pinii de citire ca intrari. Cei trei pini de comanda sunt adusi pe nivel scazut, astfel ca numararea este permisa.

In loop() se executa cinci pasi. Mai intai se reseteaza numaratorul si se afiseaza pozitia de start. Apoi se trimit 10 impulsuri de tact si se memoreaza iesirea activa si nivelul CARRY OUT. Daca dupa al zecelea impuls iesirea activa este din nou Q0, numaratorul a facut un ciclu complet. In pasul 3 pinul CLOCK INHIBIT este adus pe nivel inalt si se trimit 3 impulsuri, care trebuie ignorate. In pasul 4 pinul revine pe nivel scazut si un singur impuls muta numaratorul pe Q1. In pasul 5 un nou reset readuce numaratorul la Q0, apoi programul asteapta 3 secunde si reia testul.

Rezultat:

Deschideti Serial Monitor din Arduino IDE la viteza de 9600 baud. La fiecare ciclu de test veti vedea pozitia dupa reset, secventa iesirilor dupa fiecare impuls de tact, nivelul CARRY OUT (1 in pozitiile Q0 - Q4 si 0 in pozitiile Q5 - Q9) si rezultatul verificarilor pentru CLOCK INHIBIT si RESET.

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

Probleme frecvente:

Pe monitorul serial apare Q? in loc de o iesire. Cauza este de obicei o conexiune gresita sau lipsa alimentarii circuitului, astfel incat nu exista exact o iesire pe nivel inalt. Verificati pinii 16 si 8 si corespondenta dintre iesirile Q0 - Q9 si pinii D5 - D12, A0 si A1.

Numaratorul sare peste pozitii sau numara de mai multe ori la un impuls. Cauza este de obicei lipsa condensatorului de 100 nF intre pinii 16 si 8 sau fire lungi pe pinul CLOCK. Montati condensatorul langa circuit si scurtati firele.

Numaratorul ramane mereu pe aceeasi iesire. Verificati daca pinul CLOCK INHIBIT (13) este pe nivel scazut si daca pinul CLOCK (14) este conectat la D2. Un pin RESET ramas pe nivel inalt mentine numaratorul la Q0.

Rezultatele sunt instabile sau diferite la fiecare rulare. Pinii RESET si CLOCK INHIBIT sunt probabil lasati nelegati. Conectati-i la D3 si D4 asa cum arata tabelul.

Iesirile par slabe sau nivelul inalt scade cand se adauga o sarcina. Iesirile pot da doar un curent mic, deci nu legati LED-uri sau alte sarcini direct la ele. Folositi un tranzistor sau un circuit buffer.

Limitari si sfaturi:

Circuitul se alimenteaza intre 3 V si 18 V, dar in acest montaj il alimentati doar de la 5 V. La o tensiune mai mare, iesirile ar depasi nivelul acceptat de pinii Arduino Uno. Frecventa maxima de tact creste odata cu tensiunea de alimentare, iar la 5 V este mult peste viteza folosita in acest test.

Iesirile au un curent redus, de aceea pentru LED-uri, relee sau alte sarcini folositi un etaj de amplificare cu tranzistoare sau un circuit driver.

Mai departe puteti construi un sechentiator cu 10 pasi, o secventa de lumini, un divizor de frecventa cu raport 10 sau un numarator pana la 100, legand iesirea CARRY OUT la intrarea CLOCK a unui al doilea CD4017BE. Pentru un ciclu mai scurt, conectati iesirea Qn dorita la pinul RESET.

Produse Asociate