Code aanpassen

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 1
Geregistreerd: 29 Mrt 2022, 22:47

Code aanpassen

Berichtdoor ErikL » 29 Mrt 2022, 22:53

Hallo allemaal !
Ik ben nieuw hier en wilde een vraag stellen over een probleempje waar ik tegenaan loop en even geen andere oplossing zie dan het even na te vragen.
Ik ben bezig om Temp. vocht, volt en amp op 1 lcd te krijgen en dat lukt aardig alleen de ampere meter klopt niet.
Nu klopt deze wel als ik hem afzonderlijk aansluit .
Het is een projectje waar ik het nodige knip en plak werk heb gedaan maargoed het werkt tot zover alleen dat de ampere meter niet werkt.
Deze geeft 25.0A aan en dat kan natuurlijk nooit goed zijn. Er zit een belasting achter van max 3.0 A .

Kan iemand hier even kijken wat ik fout heb zitten in mijn code ?


#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include "DHT.h"
#define DHTPIN 5// you can use
#define DHTTYPE DHT11//#define DHTTYPE DHT21
//#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);//you can also use pins 3, 4, 5, 12, 13 or 14
// Pin 15 can work but DHT must be disconnected during program upload


// Variables for Measured Voltage and Calculated Current
double Vout = 0;
double Current = 0;

// Constants for Scale Factor
// Use one that matches your version of ACS712

//const double scale_factor = 0.185; // 5A
const double scale_factor = 0.1; // 20A
//const double scale_factor = 0.066; // 30A

// Constants for A/D converter resolution
// Arduino has 10-bit ADC, so 1024 possible values
// Reference voltage is 5V if not using AREF external reference
// Zero point is half of Reference Voltage

const double vRef = 5.00;
const double resConvert = 1024;
double resADC = vRef/resConvert;
double zeroPoint = vRef/2;

float input_voltage = 0.0;
float temp=0.0;
float r1=90900.0;
float r2=10000.0;

void setup() {
Serial.begin(9600);
pinMode(DHTPIN,INPUT);
dht.begin();// initialize the sensor
lcd.begin();//initialiseer display
}
void loop()

{

// Vout is read 1000 Times for precision
for(int i = 0; i < 1000; i++) {
Vout = (Vout + (resADC * analogRead(A2)));
delay(1);

// Get Vout in mv
Vout = Vout /1000;
// Convert Vout into Current using Scale Factor
Current = (Vout - zeroPoint)/ scale_factor;
// Print Vout and Current to two Current = ");
//Conversion formula

int analog_value = analogRead(A0);
temp = (analog_value * 5.0) / 1024.0;
input_voltage = temp / (r2/(r1+r2));

if (input_voltage < 0.1)
{
input_voltage=0.0;
}

lcd.setCursor(8,0);//set the cursor on the second row and first column
lcd.print("/ ");
lcd.print((float)dht.readHumidity());//print the humidity
lcd.print("%");
lcd.print("");
lcd.setCursor(0,0);
lcd.print((float)dht.readTemperature());//print the temperature
lcd.print("");
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print(Current,2);
lcd.print("A");
lcd.setCursor(0,0);// set the cursor on the first row and column
lcd.setCursor(8,1);
lcd.print("/ ");
lcd.print(input_voltage);
lcd.print("V");
delay(1000);


// Serial.print("Vout = ");
// Serial.print(Vout,2);
// Serial.print(" Volts");
// Serial.print("\t Current = ");
// Serial.print(Current,2);
// Serial.println(" Amps");

//delay(1000);


}
}

Advertisement

Berichten: 340
Geregistreerd: 23 Okt 2016, 20:29

Re: Code aanpassen

Berichtdoor benvo » 31 Mrt 2022, 16:23

Accolades?

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Code aanpassen

Berichtdoor shooter » 02 Apr 2022, 10:57

Ik zie inderdaad een haakje teveel lijkt het, en als je gaat rekenen is het beter om alles in float te zetten, bij twijfel ook de vaste getallen zoals dus ook double en float mixen is niet slim.
kijk ook eens naar het getal 1000 want dat is maar gewoon een INT
en ik mis een haakje in de for instructie wel open maar geen sluit haakje
paul deelen
shooter@home.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten