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)
Foarte interesant,aproximativ ceea ce îmi trebuie mie.
RăspundețiȘtergereMă 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
sigur ca se pot adauga si cele 2 butoane
Ștergerela pornire incepe cu zero, ajunge la numarul ales cand atrage releul si se reseteaza numaratorul la zero automat, reluandu-se ciclul
ȘtergereIn 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Ștergeresa 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*usir => usor .... mai puneti un buton, definiti-l sw3 ca INPUT, stare HIGH, exact ca si cele existente, apoi in program adaugati
Ștergereif (digitalRead(sw3) == LOW)
{
totalimp = 0;
digitalWrite(releu, repaos);
}
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ȘtergereSchema funcționează relativ OK cu următoarele mențiuni
RăspundețiȘtergereO 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
eliminati partea asta cu
Ștergereif (millis() - tpactionare > tpcomanda)
{
digitalWrite(releu, repaos);
lcd.setCursor(15,0);
lcd.print(" ");
}
si ar trebui sa faca ce trebuie...
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).
RăspundețiȘtergereVa multumesc!