Alex vw Postat Iunie 30, 2021 Partajează Postat Iunie 30, 2021 (editat) Va salut.Am nevoie de 3 indicatoare de nivel pentru 3 bazine diferite.Am gasit pe youtube un video dar codul si montajul este realizat doar pentru 1 singur bazin. As vrea daca ma puteti ajuta sa monitorizez toate cele 3 bazine pe 1 singur monitor ? Link : nivel apa.rar Editat Iunie 30, 2021 de Alex vw Link spre comentariu
Alex vw Postat Iulie 2, 2021 Autor Partajează Postat Iulie 2, 2021 Toata lumea`i in vacanta ? Link spre comentariu
validae Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 Nu şi-au luat ultimul salariu de la forum şi sunt în grevă.Aici nu e nimeni obligat să dea soluţii, dacă cineva are o soluţie şi vrea să ajute, va posta.Dacă nu, vă puteţi documenta şi singur, fiindcă sigur există soluţii pe undeva... Dacă se doreşte o soluţie contracost, postaţi la Servicii Electro-Job. Link spre comentariu
catalin004 Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 (editat) Salutare...de unde ati luat senzorul? Vreau sa imi fac si eu unul pentru un bazin...doar ca nu vreau sa il fac pe LCD. Doar sa porneasca/opreasca o pompa Editat Iulie 2, 2021 de catalin004 Link spre comentariu
Bandi Szasz Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 (editat) Acum 11 minute, catalin004 a spus: Salutare...de unde ati luat senzorul? Vreau sa imi fac si eu unul pentru un bazin...doar ca nu vreau sa il fac pe LCD. Doar sa porneasca/opreasca o pompa Este un simplu senzor de distanta pe ultrasunete (HC-SR04) insa nu stiu cat de bine se comporta cu lichide. Exista n'spe librarii gata facute pentru arduino pentru a obtine distanta, mai trebuie 3-4 conditii pentru pornit oprit pompa. https://www.optimusdigital.ro/en/ultrasonic-sensors/2328-senzor-ultrasonic-de-distana-hc-sr04-compatibil-33-v-i-5-v.html?search_query=ultrasonic&results=84 https://cleste.ro/senzor-ultrasonic-hc-sr04.html https://ardushop.ro/ro/home/47-modul-senzor-ultrasonic-detector-distanta.html?search_query=ultrasonic+&results=3 Daca mai adaugati niste maruntisuri pt proiect pe cleste.ro aveti transport moca pt comenzi de 90 lei. Editat Iulie 2, 2021 de Bandi Szasz Link spre comentariu
catalin004 Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 Acum 4 minute, Bandi Szasz a spus: Este un simplu senzor de distanta pe ultrasunete (HC-SR04) insa nu stiu cat de bine se comporta cu lichide. Exista n'spe librarii gata facute pentru arduino pentru a obtine distanta, mai trebuie 3-4 conditii pentru pornit oprit pompa. https://www.optimusdigital.ro/en/ultrasonic-sensors/2328-senzor-ultrasonic-de-distana-hc-sr04-compatibil-33-v-i-5-v.html?search_query=ultrasonic&results=84 https://cleste.ro/senzor-ultrasonic-hc-sr04.html https://ardushop.ro/ro/home/47-modul-senzor-ultrasonic-detector-distanta.html?search_query=ultrasonic+&results=3 Daca mai adaugati niste maruntisuri pt proiect pe cleste.ro aveti transport moca pt comenzi de 90 lei. Multumesc colegu..voiam sa il bag pe un PIC, nu pe arduino... Link spre comentariu
Усилитель Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 Am vazut cateva solutii de fabrica mai vechi , aveauun plutitor inel pe o bara nemagnetica ( textolit,plastic ,aluminiu ,depinde de ce lichid era inauntru ) cu un magnet si cand ajungea la inaltimea dorita acolo era un releu in vid Reed ,care aclansa si dadea comanda mai departe .Simplu si eficient .Mai nou si un prajitor de paine are procesor ,pic ,etc . Link spre comentariu
Alex vw Postat Iulie 2, 2021 Autor Partajează Postat Iulie 2, 2021 1 oră în urmă, validae a spus: Nu şi-au luat ultimul salariu de la forum şi sunt în grevă.Aici nu e nimeni obligat să dea soluţii, dacă cineva are o soluţie şi vrea să ajute, va posta.Dacă nu, vă puteţi documenta şi singur, fiindcă sigur există soluţii pe undeva... Dacă se doreşte o soluţie contracost, postaţi la Servicii Electro-Job. Nu mai stim de gluma sau ? Am zis ca evit senzorii cu plutitor.Am observat ca senzorii ultrasonici se comporta destul de bine la masurarea apei.Eu nu ma pricep la programare si nu stiu cum sa *triplez* comanda pentru senzori si nu stiu cum sa scriu intrarile si iesirile pentru fiecare senzor. O sa mai studiez si daca gasesc ceva am sa postez si aici . Link spre comentariu
Mircea Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 (editat) 37 minutes ago, catalin004 said: Multumesc colegu..voiam sa il bag pe un PIC, nu pe arduino... Iti pun eu proiect facut cu PIC si HC-SR04 un pic mai tarziu. LE: uite-l aici. https://forum.mikroe.com/viewtopic.php?t=53891 Nu e musai sa pui LCD, iar cu valoarea citita faci ce vrei. Pornesti sau opresti pompa, o controlezi invers proportional, etc. Daca ai intrebari, mai bine deschizi un alt topic. Din ce-mi aduc aminte il comentasem, deci sigur intelegi ce am facut. E chestie de temporizari doar. 10 minutes ago, Alex vw said: Eu nu ma pricep la programare si nu stiu cum sa *triplez* comanda pentru senzori si nu stiu cum sa scriu intrarile si iesirile pentru fiecare senzor. Foaia de catalog iti zice tot. Nu e mare lucru daca stii Arduino. Eu as incepe prin a posta aici proiectul cu 1 bucata si incercat sa adaugi al 2 lea senzor. In cazul asta, colegii vor comenta, tu inveti ceva si toata lumea e multumita. Editat Iulie 2, 2021 de Mircea Link spre comentariu
catalin004 Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 Acum 36 minute, Mircea a spus: Iti pun eu proiect facut cu PIC si HC-SR04 un pic mai tarziu. LE: uite-l aici. https://forum.mikroe.com/viewtopic.php?t=53891 Nu e musai sa pui LCD, iar cu valoarea citita faci ce vrei. Pornesti sau opresti pompa, o controlezi invers proportional, etc. Daca ai intrebari, mai bine deschizi un alt topic. Din ce-mi aduc aminte il comentasem, deci sigur intelegi ce am facut. E chestie de temporizari doar. Foaia de catalog iti zice tot. Nu e mare lucru daca stii Arduino. Eu as incepe prin a posta aici proiectul cu 1 bucata si incercat sa adaugi al 2 lea senzor. In cazul asta, colegii vor comenta, tu inveti ceva si toata lumea e multumita. Multumesc colegu, cand o sa ma apuc de treaba o sa vedem unde postez. In legatura cu senzorul clasic...e depasit, am lucrat cu ei, se blocau, plus ca nu nu am de unde cumpara la 1m lungime....chiar sa il si confectionez cred ca ma costa mult Pic-ul il am deja montat, lucreaza dupa timp, insa as vrea dupa nivel...exista si un lcd 4x20 pe acolo...revin dupa ce iau senzorul Link spre comentariu
cimitavita Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 pe termen scurt, e buna orice solutie de masurat distata pana la suprafata apei intr-un rezervor. De la infrarosii la ultrasunete. Dar pe termen lung exista umezeala care rezolva orice montaj electronic. Link spre comentariu
Mircea Postat Iulie 2, 2021 Partajează Postat Iulie 2, 2021 Exista senzori ultrasonici incastrati, evident alt pret decat cei 1-2$ cat costa un HC-SR04. Link spre comentariu
mihaicozac Postat Iulie 3, 2021 Partajează Postat Iulie 3, 2021 (editat) @Alex vw Dacă toate rezervoarele sunt identice e simplu de modificat schiţa, defineşti încă 2 seturi de intrare-ieşire pt. senzori şi îi denumeşti trigPin1 şi echoPin1, respectiv trigPin2 şi echoPin2, apoi încorporezi toată bucla loop iniţială într-o funcţie cu 2 parametri de intrare respectiv triggerPin şi echoPin căreia îi dai un nume de ex. getLevel(int trig_pin, int echo_pin). Mai ai nevoie de un numărător în buclă cu 3 stări, care poate fi de ex. o variabilă int counter = 0; şi un buton de incrementare a stării numărătorului până la 2 şi apoi din nou la zero,, apelat printr-o întrerupere de flanc pe un pin care suportă întreruperi, 2 sau 3. În final mai ai nevoie de 3 leduri de afişare a rezervorului în care tocmai se face măsurătoarea. Per total ai nevoie astfel de 4 + 3 + 1 = 8 pini suplimentari faţă de cei 9 existenţi. Cu Arduino Uno ar merge direct, la ESP8266 însă ar fi nevoie de multiplexor extern. Dacă rezervoarele nu sunt identice atunci mai nevoie de încă 2 seturi de parametri ai rezervorului iar funcţia getLevel() primeşte în plus la argumente setul de lucru al parametrilor respectivi: // REZERVOARE IDENTICE switch (counter) { case 0: getLevel(trigPin, echoPin); break; case 1: getLevel(trigPin1, echoPin1); break; case 2: getLevel(trigPin2, echoPin2); break; } // REZERVOARE DIFERITE switch (counter) { case 0: getLevel(trigPin, echoPin, maximumRange, r); break; case 1: getLevel(trigPin1, echoPin1, maximumRange1, r1); break; case 2: getLevel(trigPin2, echoPin2, maximumRange2, r2); break; } În schiţă la rază scrie int r = 53.2 e clar că fiind integer se va lua în considerare doar 53 însă asta nu influenţează foarte mult calculul. Editat Iulie 3, 2021 de mihaicozac typo Link spre comentariu
Alex vw Postat Iulie 3, 2021 Autor Partajează Postat Iulie 3, 2021 @mihaicozac : sunt 3 bazine, 2 identice, 1 nu.Ca si senzori cred ca voi folosi https://cleste.ro/senzor-ultrasonic-rezistent-la-apa.html doar ca,cred ca trebuie modificat si in cod.Am uitat sa mentionez, treaba cu buzeru si ledurile nu ma intereseaza ! LE : cu un modul NodeMCU Lua WIFI ESP8266 CP2102 si programul Blynk , nu ar fi mai usor de realizat ? Atasez codurile din video`ului postat la inceput: /* HC-SR04 ultrasonic sensor VCC to arduino 5v GND to arduino GND Echo to Arduino pin 9 Trig to Arduino pin 8 */ #define echopin 9 // echo pin #define trigpin 8 // Trigger pin int maximumRange = 105; // maximum height of tank in cm long duration; float v; // volume in cubic cm float distance; // height of water level in cm int r = 53.2; // radius of tank in cm int cap; // capacity in liters int actual_height; // actual height in cm void setup() { Serial.begin (9600); pinMode (trigpin, OUTPUT); pinMode (echopin, INPUT ); pinMode (4, OUTPUT); //Buzzer pinMode (6, OUTPUT); //PUMP control pinMode (A0, OUTPUT); //0% indicator pinMode (A1, OUTPUT); //25% indicator pinMode (A2, OUTPUT); //50% indicator pinMode (A3, OUTPUT); //75% indicator pinMode (A4, OUTPUT); //100% indicator } void loop () { digitalWrite(trigpin,LOW); delayMicroseconds(2); digitalWrite(trigpin,HIGH); delayMicroseconds(10); duration=pulseIn (echopin,HIGH); distance= duration/58.2; delay(200); Serial.print(distance); Serial.println("cm"); /*Serial.print(v); Serial.println("cm3,"); Serial.print(cap); Serial.println("liters, ");*/ actual_height = maximumRange - distance; v = ((3.14*(r*r))*(actual_height)); // formula to calculate volume in cubic cm cap = v/1000; // final capacity in liters if (distance <= 100) { digitalWrite(A0,HIGH); // 0% INDICATION if (distance > 81) //buzzer action { digitalWrite(4,HIGH); delay(200); //BUZZER BEEPING digitalWrite(4,LOW); delay(200); } else { digitalWrite(4,LOW); //BUZZER OFF } } else { digitalWrite(A0,LOW); } if (distance <= 80) // 25% INDICATION { digitalWrite(A1,HIGH); } else { digitalWrite(A1,LOW); } if (distance <= 60) // 50% INDICATION { digitalWrite(A2,HIGH); } else { digitalWrite(A2,LOW); } if (distance <= 40) // 75% INDICATION { digitalWrite(A3,HIGH); } else { digitalWrite(A3,LOW); } if (distance <= 20) // 100% INDICATION { digitalWrite(A4,HIGH); //digitalWrite(6,LOW); //PUMP OFF } else { digitalWrite(A4,LOW); } } Placuta esp: /* ******************************************************** ULTRASONIC Water level Indicator using ESP8266-01 ******************************************************** */ //#define TRIGGER 4 //#define ECHO 5 #define TRIGGER 0 // for esp8266-01 #define ECHO 2 // for esp8266-01 // Pin D1 --> ECHO | NodeMCU Pin D2 --> TRIGGER //#define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #include <Blynk.h> int maximumRange = 105; // maximum height of tank in cm long duration; float v; // volume in cubic cm float distance; // height of water level in cm int r = 53.2; // radius of tank in cm int cap; // capacity in liters int actual_height; // actual height in cm // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "Your Auth Token"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "Your SSID"; char pass[] = "Your WiFi Password"; // Keep this flag not to re-sync on every reconnection bool isFirstConnect = true; // This function will run every time Blynk connection is established BLYNK_CONNECTED() { if (isFirstConnect) { // Request Blynk server to re-send latest values for all pins Blynk.syncAll(); isFirstConnect = false; } } BLYNK_WRITE(V5) { int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable } void setup() { // Serial.begin (9600); Blynk.begin(auth, ssid, pass); pinMode(TRIGGER, OUTPUT); pinMode(ECHO, INPUT); } void loop() { { //long duration, distance; digitalWrite(TRIGGER, LOW); delayMicroseconds(2); digitalWrite(TRIGGER, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER, LOW); duration = pulseIn(ECHO, HIGH); distance= duration/58.2; delay (50); actual_height = maximumRange - distance; v = ((3.14*(r*r))*(actual_height)); // formula to calculate volume in cubic cm cap = v/1000; // final capacity in liters Blynk.virtualWrite(V5, cap); delay(200); } if (distance <= 105) { Blynk.virtualWrite(V0, 255); //digitalWrite(D4,HIGH); } else { Blynk.virtualWrite(V0, 0); //digitalWrite(D4,LOW); } if (distance <= 85) { Blynk.virtualWrite(V1, 255); //digitalWrite(D5,HIGH); } else { Blynk.virtualWrite(V1, 0); //digitalWrite(D5,LOW); } if (distance <= 65) { Blynk.virtualWrite(V2, 255); //digitalWrite(D6,HIGH); } else { Blynk.virtualWrite(V2, 0); //digitalWrite(D6,LOW); } if (distance <= 45) { Blynk.virtualWrite(V3, 255); //digitalWrite(D7,HIGH); } else { Blynk.virtualWrite(V3, 0); //digitalWrite(D7,LOW); } if (distance <= 20) { Blynk.virtualWrite(V4, 255); //digitalWrite(D8,HIGH); } else { Blynk.virtualWrite(V4, 0); //digitalWrite(D8,LOW); } Blynk.run(); } Link spre comentariu
Vizitator Postat Iulie 3, 2021 Partajează Postat Iulie 3, 2021 (editat) 2 hours ago, Alex vw said: if (distance <= 80) // 25% INDICATION { digitalWrite(A1,HIGH); } else { digitalWrite(A1,LOW); } eu zic ca aceste comparatii repetate care ocupa multe linii se pot scrie mai simplu asa: digitalWrite(A1,distance <= 80); digitalWrite(A2,distance <= 60); ... Tare urât arată acele if-uri independente unul de altul. Editat Iulie 3, 2021 de Vizitator 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