Untold Postat Octombrie 27, 2022 Partajează Postat Octombrie 27, 2022 (editat) Va salut. Am o automatizare facuta pentru o statie de epurare cu 2 integrate CMOS care merge aiurea rau. Ce face aceasta automatizare: fiind ministatie de epurare, descompunerea deseurilor este facuta cu oxigen activ, avand o pompa de aer. Aceasta automatizare are 4 moduri de lucru: primul mod, pompa merge 15 min, apoi se opreste 15 min si tot asa. Pe modul 2 de lucru, pompa merge 15 minute si se opreste apoi 30 min. Modul 3, pompa merge 15 min, sta 60 min. Pe mod 4, pompa merge incontinuu. De obicei, o tin pe modul 2 de lucru, adica 15 min cu 30 min pauza, apoi ciclul se reia. Problema este ca dupa primul sau al doilea ciclu, pompa nu mai porneste pe modul 2 si 3. Adica, porneste, merge, ii trece timpul de 15 min, apoi se opreste si nu mai porneste. Daca ii scot si bag tensiunea la loc, porneste si apoi isi reia problema. Singurul mod pe care merge fara sa se opreasca, este modul 1, dar este prea mica pauza de 15 min. Automatizarea este facuta cu 2 cmos-uri banale, un cd4066 si un cd 4543. Are un comutator rotatativ cu 4 pozitii si cu led pentru fiecare pozitie, si cam asta e tot. Sursa de alimentare e un traf subdimensionat de 1 cmp, cred, care se cam incalzeste, filtraj avand doar 220uF/16V. As vrea sa renunt la mizeria aia si sa fac lucrul asta cu un Arduino, un Nodemcu, pe care il am deja. Partea proasta este ca la partea hardware ma pricep cat de cat, am ceva notiuni de electronica, o fac fara probleme, inclusiv scrierea sketch-ului cu Arduino IDE, insa pe partea de programare sunt varza, egal cu 0. Ma poate ajuta cineva cu un sketch? Deci, primul mod 15 min cu 15 min pauza, 2 - 15 min cu 30 min pauza, 3 - 15 min cu 60 min pauza si 4 - incontinuu. Selectarea modului 1, 2, 3 sau 4 sa se poata face cu un push button si leduri de semnalizare sau cu encoder, nu ma deraanjeaza. Multumiri pentru orice ajutor! Editat Octombrie 27, 2022 de Untold Link spre comentariu
sesebe Postat Octombrie 27, 2022 Partajează Postat Octombrie 27, 2022 Nu vrei te rog sa pui schema? Chiar nu inteleg cum poate un 4066 multiplexor (Quad Bilateral Switch) si un CD4543 decodor BCD-to-7segmente sa realizeze functia ceruta de tine. Esti sigur ca nu-i vorba de un CD4060? Cu 4060 am facut chestii similare ce functioneaza (unele dintre ele) corect de peste 15 ani. Link spre comentariu
modoran Postat Octombrie 27, 2022 Partajează Postat Octombrie 27, 2022 Mai bine repari montajul original, daca inainte functiona corect. Link spre comentariu
mihaicozac Postat Octombrie 27, 2022 Partajează Postat Octombrie 27, 2022 Vrei să foloseşti comutatorul vechi şi carcasa originală sau o cutie nouă? Cu un Arduino poţi folosi un push button ca să treci prin programe nu e obligatoriu un selector. Link spre comentariu
mihaicozac Postat Octombrie 27, 2022 Partajează Postat Octombrie 27, 2022 (editat) Ţi-am scris la repezeală un program, aşa mai băbeşte să se poată înţelege de către începători. Pinii corespund la modulele Arduino Uno, pt. NodeMCU prebuie verificat dacă ai destui pini la îndemână şi văzut care sunt pinii ce suportă întreruperi, la care se conectează cele 2 butoane. Rularea e clară, la conectarea alimentării sare automat pe programul 2, 15/30 minute. Schimbarea programului se poate face doar dacă este în repaus, adică oprit, şi se semnalizează cu 4 leduri, pratic la fiecare apăsare de buton sare un pas apoi revine la capăt. Celălalt buton porneşte sau opreşte programul. Ledul pompei luminează fix când pompa merge şi clipeşte când e în pauză, ca să ai o viziune mai clară a activităţii. Pt. teste poţi micşora valoarea variabilei interval la 45, astfel fiecare periadă de 15 minute se scurtează la 5 secunde. Butoanele se conectează la pinii corespunzători spre masă, de preferat cu ceva condensatoare de 100nF paralel, că programul nu conţine rutine de debouncing. const unsigned long interval = 90000; // INTERVALUL DE BAZA IN ZECIMI DE SECUNDA unsigned long contor_pauza, selector_pauza, contor_activ; byte led_pompa = 8, intrare_selector = 2, intrare_activare = 3, iesire_pompa = 9, registru_leduri; bool pornit, activ; // *********** CONEXIUNILE CU EXTERIORUL*************************** // LEDURILE SELECTIE MOD SE CONECTEAZA LA PINII 4-7 // LEDUL INDICARE PORNIRE LA 8 // RELEUL POMPEI LA 9 // BUTONUL SELECTIE MOD LA 2 // BUTONUL PORNIRE/OPRIRE PROGAM LA 3 void setup() { pinMode(2, INPUT_PULLUP); // INTRARE BUTON SELECTARE PROGRAM pinMode(3, INPUT_PULLUP); // INTRARE BUTON PORNIRE/OPRIRE SECVENTA PROGRAM for (int i = 4; i < 10; i++) pinMode(i, OUTPUT); // PINII DE IESIRE attachInterrupt(digitalPinToInterrupt(2), selectareMod, FALLING); attachInterrupt(digitalPinToInterrupt(3), comandaPornire, FALLING); pornit = false; activ = false; selector_pauza = 2; // MOD NORMAL DE FOLOSIRE registru_leduri = 0b00000100; } /////////////////////////////////////////////////////////////// void loop() { static bool clipire = millis() % 1000 > 500; unsigned long start_secventa = millis(); if (pornit) { contor_activ++; if (contor_activ >= interval) { if (selector_pauza) { activ = false; contor_pauza++; if (contor_pauza >= selector_pauza * interval) { activ = true; contor_pauza = 0; contor_activ = 0; } } else contor_activ = 0; } } for (int i = 4; i < 8; i++) digitalWrite(i, bitRead(registru_leduri, i - 3)); digitalWrite(iesire_pompa, activ); if (pornit) digitalWrite(led_pompa, activ | clipire); else digitalWrite(led_pompa, LOW); unsigned int elapsed = millis(); delay(100 - elapsed); } ///////////////////////////////////////////////////////////////// void selectareMod() { if (!pornit) { // PROGRAMUL SE POATE SCHIMBA DOAR DACA NU RULEAZA switch (selector_pauza) { case 0: { selector_pauza = 1; registru_leduri = 0b00000010; } break; case 1: { selector_pauza = 2; registru_leduri = 0b00000100; } break; case 2: { selector_pauza = 4; registru_leduri = 0b00010000; } break; case 4: { selector_pauza = 0; registru_leduri = 0b00001000; } break; } } } void comandaPornire() { pornit = !pornit; if (pornit) activ = true; else contor_activ = 0; } Editat Octombrie 27, 2022 de mihaicozac erori Link spre comentariu
mihaicozac Postat Octombrie 27, 2022 Partajează Postat Octombrie 27, 2022 Deşi am verificat codul înainte de postare tot au mai rămas erori, penultima linie din loop() ar trebui să fie: unsigned int elapsed = millis() - start_secventa; Link spre comentariu
Untold Postat Octombrie 31, 2022 Autor Partajează Postat Octombrie 31, 2022 La 27.10.2022 la 11:01, sesebe a spus: Nu vrei te rog sa pui schema? Chiar nu inteleg cum poate un 4066 multiplexor (Quad Bilateral Switch) si un CD4543 decodor BCD-to-7segmente sa realizeze functia ceruta de tine. Esti sigur ca nu-i vorba de un CD4060? Cu 4060 am facut chestii similare ce functioneaza (unele dintre ele) corect de peste 15 ani. Scuze, era CD4060, aveti dreptate. Nu am schema, nu mi-au dat-o cand am cumparat ministatia. Link spre comentariu
Untold Postat Octombrie 31, 2022 Autor Partajează Postat Octombrie 31, 2022 (editat) La 27.10.2022 la 17:46, mihaicozac a spus: Deşi am verificat codul înainte de postare tot au mai rămas erori, penultima linie din loop() ar trebui să fie: unsigned int elapsed = millis() - start_secventa; Multumesc mult pentru ajutor, m-a ajutat cineva de pe FB si mi-a facut sketchul in Visuino. Primul led aprins e mod 1, 15 min on, 15 min off, al doilea led e mod 2, 15 min on, 30 min off, al treilea led mod 3, 15 min on, 60 min off si al patrulea led, functionare continua. Am pus in loc de releu, un SSR pentru comanda pompei de aer, ssr-ul suporta si sarcini inductive si in comutatie. Multumesc inca o data tuturor pentru ajutor! Editat Octombrie 31, 2022 de Untold Link spre comentariu
mihaicozac Postat Octombrie 31, 2022 Partajează Postat Octombrie 31, 2022 Dacă vrei să încerci şi codul meu, îl găseşti pe WokWi: https://wokwi.com/projects/346844920029381202 Link spre comentariu
Untold Postat Octombrie 31, 2022 Autor Partajează Postat Octombrie 31, 2022 (editat) Sigur, mai am un nodemcu disponibil, multumesc frumos! L.E. Acum am vazut, e pentru Uno? Nu am nicio placa Uno si nu stiu cum sa-l portez pe nodmcu.... Editat Octombrie 31, 2022 de Untold Link spre comentariu
Untold Postat Octombrie 31, 2022 Autor Partajează Postat Octombrie 31, 2022 Atasez si eu sketch-ul functional in videoclip, poate ii mai trebuie cuiva. Nodemcu Temporizator pompa fosa.rar Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum