Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:vstoica:radu.silvestru [2025/05/26 20:18]
radu.silvestru
pm:prj2025:vstoica:radu.silvestru [2025/05/26 20:29] (current)
radu.silvestru [Software]
Line 42: Line 42:
  
 ===== Software ===== ===== Software =====
-== Librarii folosite == + 
-```+ 
 +^ Librarie ​     ^ Scop         ^ 
 +| Wire.h ​       | Comunicare I2C (pentru LCD)| 
 +| LiquidCrystal_I2C.h| Afișare pe LCD 1602 cu interfață I2C| 
 +|OneWire.h ​     |Protocol OneWire pentru senzorul de temperatură DS18B20|  
 +|DallasTemperature.h| Citirea temperaturii de la senzorul DS18B20| 
 + 
 +<code cpp>
 #include <​Wire.h>​ #include <​Wire.h>​
 #include <​LiquidCrystal_I2C.h>​ #include <​LiquidCrystal_I2C.h>​
 #include <​OneWire.h>​ #include <​OneWire.h>​
 #include <​DallasTemperature.h>​ #include <​DallasTemperature.h>​
-``` 
  
-== I2C LCD Setup == 
-``` 
 LiquidCrystal_I2C lcd(0x27, 16, 2); LiquidCrystal_I2C lcd(0x27, 16, 2);
-``` 
  
-== EC Sensor Pins and Constants == 
-` 
 #define EC_IN1 7 #define EC_IN1 7
 #define EC_IN2 6 #define EC_IN2 6
 #define EC_ANALOG A0 #define EC_ANALOG A0
 #define EC_REF_RESISTOR 1000.0 #define EC_REF_RESISTOR 1000.0
-` 
  
-== Turbidity Sensor == 
-``` 
 #define TURBIDITY_PIN A1 #define TURBIDITY_PIN A1
-``` 
  
-== DS18B20 Setup == +#define TEMP_DATA_PIN 2
-```+
 OneWire oneWire(TEMP_DATA_PIN);​ OneWire oneWire(TEMP_DATA_PIN);​
 DallasTemperature tempSensor(&​oneWire);​ DallasTemperature tempSensor(&​oneWire);​
-``` 
  
-== EC Calibration Constants == +const float EC_VOLT_LOW = 0.20; 
-``` +const float EC_VOLT_HIGH = 1.12;
-const float EC_VOLT_LOW = 0.20;    // Voltage in distilled water +
-const float EC_VOLT_HIGH = 1.12;   // Voltage in 1413 uS/cm solution+
 const float EC_LOW_UScm = 0.0; const float EC_LOW_UScm = 0.0;
 const float EC_HIGH_UScm = 1413.0; const float EC_HIGH_UScm = 1413.0;
Line 83: Line 76:
 const float EC_SLOPE = (EC_HIGH_UScm - EC_LOW_UScm) / (EC_VOLT_HIGH - EC_VOLT_LOW);​ const float EC_SLOPE = (EC_HIGH_UScm - EC_LOW_UScm) / (EC_VOLT_HIGH - EC_VOLT_LOW);​
 const float EC_OFFSET = EC_VOLT_LOW;​ const float EC_OFFSET = EC_VOLT_LOW;​
-``` + 
-``` +void setup() ​{
-void setup() ​ +
-``` +
-  == Pin Setup == +
-  ```+
   pinMode(EC_IN1,​ OUTPUT);   pinMode(EC_IN1,​ OUTPUT);
   pinMode(EC_IN2,​ OUTPUT);   pinMode(EC_IN2,​ OUTPUT);
-  ``` 
- 
-  == Serial & Sensors == 
-  ``` 
   Serial.begin(9600);​   Serial.begin(9600);​
   tempSensor.begin();​   tempSensor.begin();​
-  ``` 
- 
-  == LCD Init (manual style) == 
   Wire.begin();​   Wire.begin();​
   lcd.begin(16,​ 2);   lcd.begin(16,​ 2);
Line 107: Line 89:
   delay(2000);​   delay(2000);​
   lcd.clear();​   lcd.clear();​
-  ``` +}
  
 void loop() { void loop() {
-  // === EC Sensor Measurement (manually alternating) === 
   digitalWrite(EC_IN1,​ HIGH);   digitalWrite(EC_IN1,​ HIGH);
   digitalWrite(EC_IN2,​ LOW);   digitalWrite(EC_IN2,​ LOW);
-  delayMicroseconds(5000); ​ // ~5 ms+  delayMicroseconds(5000);​
   int adc1 = analogRead(EC_ANALOG);​   int adc1 = analogRead(EC_ANALOG);​
  
   digitalWrite(EC_IN1,​ LOW);   digitalWrite(EC_IN1,​ LOW);
   digitalWrite(EC_IN2,​ HIGH);   digitalWrite(EC_IN2,​ HIGH);
-  delayMicroseconds(5000); ​ // ~5 ms+  delayMicroseconds(5000);​
   int adc2 = analogRead(EC_ANALOG);​   int adc2 = analogRead(EC_ANALOG);​
  
   float voltage_avg = ((adc1 + adc2) / 2.0) * (5.0 / 1023.0);   float voltage_avg = ((adc1 + adc2) / 2.0) * (5.0 / 1023.0);
   float current_mA = voltage_avg / EC_REF_RESISTOR * 1000.0;   float current_mA = voltage_avg / EC_REF_RESISTOR * 1000.0;
- 
-  // Apply calibration to get conductivity 
   float ec_uScm = EC_SLOPE * (voltage_avg - EC_OFFSET);   float ec_uScm = EC_SLOPE * (voltage_avg - EC_OFFSET);
   if (ec_uScm < 0) ec_uScm = 0;   if (ec_uScm < 0) ec_uScm = 0;
  
-  // === Turbidity Sensor === 
   int turb_raw = analogRead(TURBIDITY_PIN);​   int turb_raw = analogRead(TURBIDITY_PIN);​
   float turb_voltage = turb_raw * (5.0 / 1023.0);   float turb_voltage = turb_raw * (5.0 / 1023.0);
  
-  // === Temperature Sensor === 
   tempSensor.requestTemperatures();​   tempSensor.requestTemperatures();​
   float tempC = tempSensor.getTempCByIndex(0);​   float tempC = tempSensor.getTempCByIndex(0);​
  
-  // === Serial Monitor Output === 
   Serial.println("​==== WATER QUALITY ===="​);​   Serial.println("​==== WATER QUALITY ===="​);​
   Serial.print("​Temperature:​ "); Serial.print(tempC);​ Serial.println("​ C");   Serial.print("​Temperature:​ "); Serial.print(tempC);​ Serial.println("​ C");
   Serial.print("​EC:​ "); Serial.print(ec_uScm);​ Serial.println("​ uS/​cm"​);​   Serial.print("​EC:​ "); Serial.print(ec_uScm);​ Serial.println("​ uS/​cm"​);​
   Serial.print("​Turbidity Voltage: "); Serial.print(turb_voltage,​ 2); Serial.println("​ V");   Serial.print("​Turbidity Voltage: "); Serial.print(turb_voltage,​ 2); Serial.println("​ V");
-  Serial.println("​========================\n");+  Serial.println("​========================"​);​
  
-  // === LCD Display Output === 
   lcd.setCursor(0,​ 0);   lcd.setCursor(0,​ 0);
   lcd.print("​T:"​);​ lcd.print(tempC,​ 1); lcd.print("​C ");   lcd.print("​T:"​);​ lcd.print(tempC,​ 1); lcd.print("​C ");
Line 154: Line 128:
   delay(1500);​   delay(1500);​
 } }
-```+</​code>​
pm/prj2025/vstoica/radu.silvestru.1748279934.txt.gz · Last modified: 2025/05/26 20:18 by radu.silvestru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0