Hallo,
ich befasse mit grade mit einem projekt zur messung von einer Spannung ~13V, einem Strom ~20A und einer Temperatur.
Zur Strommessung benutze ich einen ACS709 Hallsensor, zur Temperaturmessung einen Dallas DS18S20.
1.)
Ich habe das problem das bei der Spannungsmessung (die ich testweise mit einer 9V blockbatterie mache) die auf echte 9V komme. Ich stelle immer den multiplikator um um auf 9V zu kommen, aber dann halte ich testweise die leitung vom Analogchannel an den 5V ausgang des arduinoboards und messe dann dort auch 9 V
Ich habe einen Spannungsteiler von 470 Ohm / 100 Ohm und nochmal den Spannungsteiler auf 4k7 / 470 Ohm getestet.
2.)
Mein Temperatursensor misst immer 1°C.... er wird wohl kaputt sein da ich einmal die polarität verwechselt habe.
Lieg ich da richtig? Mittlerweile hängt dieser auf Digital 8, da ich vorher einen Fehler gemacht hatte!
Im Anhang findet ihr meine Verdrahtung mit Fritzing als PNG
Hier mein Quelltext:
#include "floatToString.h"
#include "DS18S20.h"
#include <OneWire.h>
#include <LiquidCrystal.h>
#include "DallasTemperature.h"
float temperatur;
float spannung;
int reading;
int sensorPinStrom = A0;
int sensorPinSpannung = A1;
int sensorPinTemperatur = 8;
int temp = 0;
int sensorValue = 0;
float messw=0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); //LCD initialisieren
pinMode(sensorPinTemperatur, INPUT);
}
void loop() {
sensorValue = analogRead(sensorPinStrom); //Wert von Sensor einlesen
sensorValue = sensorValue -510; //510=0A 0=-75A 1023=75A
if(sensorValue==1)sensorValue=0;
if(sensorValue==-1)sensorValue=0;
messw=(float)75/512*sensorValue; //Umwandeln um einen Wert zuwischen -75 und +75 zu erhalten
lcd.setCursor(0, 12); //LCD Spalte 2, Zeichen 1
lcd.print("I:");
lcd.print(floatToString(buffer,messw,2)); //Ausgabe Strom an LCD
lcd.print("A"); //Buchstabe A
sensorValue = analogRead(sensorPinSpannung); //Wert von Sensor einlesen
messw=(float)43/5012*sensorValue; //Wert umwandeln für Anzeige 0..24.0 Volt
lcd.setCursor(8, 1); //LCD Spalte 2, Zeichen 8
lcd.print("U:");
lcd.print(floatToString(buffer,messw,2)); //Ausgabe Spannung an LCD
lcd.print("V"); //Buchstabe V
temp = digitalRead(sensorPinTemperatur); //Wert von Sensor einlesen
lcd.setCursor(0, 0); //LCD Spalte 1, Zeichen 1
lcd.print("Temp:");
lcd.print(temp); //Ausgabe Temperatur an LCD
lcd.print((char)223); //Symbol für Grad "°"
lcd.print("C"); //Buchstabe C
delay(2000);
}