luni, 8 martie 2021

Numarator impulsuri cu prag reglabil

     Am primit o solicitare pentru realizarea unui numarator de impulsuri (inductiv, in cazul de fata, dar functioneaza cu orice fel de senzor: Hall, optic cu fototranzistor.fotodioda in domeniu vizibil sau infrarosu, etc), care la atingerea unui prag sa actioneze un releu.

   Schema, la care m-am gandit, e una simpla, unde numararea impulsurilor se face pe pinul D2 (intreruperea 0):

    Pentru teste, ca senzor am folosit un debitmetru ce are un senzor Hall. Ca la majoritatea senzorilor, trebuie conectata o rezistenta intre iesire si alimentare (rezistenta de pull-up). Datele sunt indicate pe un afisaj alfanumeric cu 16 coloane si 2 randuri (LCD1602) conectat prin interfata i2c, pentru a reduce numarul de fie de conectare. In afara placii Arduino Nano (se poate folosi orice alta placa Arduino, gen Uno, Leonardo, Mega, Due, ProMini, etc) mai sunt 2 butoane fara retinere, unul pentru crestere si celalalt pentru reducere prag actionare releu.
   Prpogramul scris de mine este counter_threshold_1.ino. Pe ecran apare numarul de impulsuri in stanga si cel reglat ca prag in dreapta, la depasire apare o steluta, numaratoarea resetandu-se.
   Modul de functionare se vede in cele 2 filmulete realizate de mine:
   Madalin. cel care avea nevoie de acest sistem, mi-a trimis cateva poze si un filmulet.
   Filmuletul este incarcat pe canalul meu de youtube, avand numele Numarator impulsuri cu prag reglabil (2)

10 comentarii:

  1. Foarte interesant,aproximativ ceea ce îmi trebuie mie.
    Mă interesează dacă:
    Cand dau start sa comand un releu ?
    Când ajunge la pragul setat sa comute releul ?
    Se poate adăuga un buton de start,și unul de reset când numărătoarea ajunge la capăt ?
    Multumesc

    RăspundețiȘtergere
    Răspunsuri
    1. sigur ca se pot adauga si cele 2 butoane

      Ștergere
    2. la pornire incepe cu zero, ajunge la numarul ales cand atrage releul si se reseteaza numaratorul la zero automat, reluandu-se ciclul

      Ștergere
  2. In cazul acesta mă puteți ajuta cu o schema și cu buton de start numărătoare.Mentionez că folosesc Mega2560 și display tft

    RăspundețiȘtergere
    Răspunsuri
    1. sa adaug un buton pentru aducere la zero e usir, dar nu am timp sa implementez pe afisaj grafic.. trebuie sa fac montaj, sa am acelasi afisaj...si nu am timp si nici dispozitie

      Ștergere
    2. *usir => usor .... mai puneti un buton, definiti-l sw3 ca INPUT, stare HIGH, exact ca si cele existente, apoi in program adaugati
      if (digitalRead(sw3) == LOW)
      {
      totalimp = 0;
      digitalWrite(releu, repaos);
      }

      Ștergere
  3. Mulțumesc mult pt ajutor,aveam nevoie sa definesc butonul de start,restul le-am făcut deja cu ajutorul schemei și a sketch-ului dvs,inclusiv partea de display

    RăspundețiȘtergere
  4. Schema funcționează relativ OK cu următoarele mențiuni
    O folosesc pt un motor care se învârte continuu,aceasta schemă
    contorizează continuu..vreau sa pun un buton de START...să înceapă contorizarea la un anumit moment,moment în care sa și acționeze releul.Cand ajunge la numărul de impulsuri setat sa se oprească numărătoare și să elibereze releul.
    Multumesc

    RăspundețiȘtergere
    Răspunsuri
    1. eliminati partea asta cu
      if (millis() - tpactionare > tpcomanda)
      {
      digitalWrite(releu, repaos);
      lcd.setCursor(15,0);
      lcd.print(" ");
      }

      si ar trebui sa faca ce trebuie...

      Ștergere
  5. Doresc sa stiu daca aceasta schema poate fi adapta sa controleze un steppler motor care sa aiba o turatie variabila in functie de necesitate si sa il opreasca la momentul oportun(dupa atingerea numarului de rotaii). Ca si senzor sa se foloseasca un senzor magnetic gen ZX-5DK. Momentan folosesc un numarator cu impulsui si un senzor magnet impreuna cu o filetanta pe post de motor pentru realizarea unor bobine (coil winder).
    Va multumesc!

    RăspundețiȘtergere