Grundkenntnisse von C und C++ habe ich, von Computern auch und meine PV-Solaranlage mit Datenlogger sowie Elektromobil sind auch vorhanden.
Um den Datenlogger und das E-Mobil geht es in meinem Projekt, das ich mit dem Arduino Uno V3 umsetzen möchte. Der ist ebenso bestellt wie ein passendes RS 485-Modul.
Die Aufgabenstelleung ist recht einfach. Der Datenlogger gibt ein 0-10V-Signal aus.
Der EVCC (Ladekontroller der Wallbox) soll anhand des Spannungswertes (0-10V) die Ladeleistung am EVCC einstellen, so daß das Elektroauto mit der Überschußleistung der PV-Anlage geladen wird. Fertig gibt es so ein Interface nicht zu kaufen. Einen Ladestation mit 0-10-Regelung scheidet aus, da die Wallbox schon an der Wand hängt.
Der EVCC hat einen offenen Befehlsvorrat. Der EVCC kommuniziert auf RS485-Basis und welche Werte er erwartet um die Ladeleistung zu regeln ist auch bekannt.
Von der Idee her müßte ich über einen Analogeingang des Arduino nur das Spannungssignal auswerten, mit einem Umrechnungsfaktor multiplizieren und den Befehl zur Einstellung des Ladewertes absenden. So weit die Theorie.
Mike60:
die Analog- Eingänge "verkraften" 0 bis 5 Volt (1024er- Auflösung)
Nein das ist nicht vollständig korrekt
Die Eingänge verkraften 0V bis Versorgungsspannung des Arduinos.
Es gibt Arduinos mit 3,3V Versorgungsspannung und auch Fälle wo die 5V nicht 5V sind sondern bedeutend weniger.
Serenifly:
Genaugenomen vertragen die Analog-Pins maximal VREF
Und die Digital-Pins Vcc + 0,5V. Und noch genauer vertragen das wahrscheinlich auch die Analog-Pins wenn man sie als digitale I/Os verwendet.
Nein, die analogen Pins vertragen auch mehr als AREF, wenn AREF kleiner als die Versorgungsspannung ist. Bei Spannungen größer als AREF wird 1023 ausgegeben.
Alle Pins (außer Reset) können maximal die Versorgungsspannung vertragen ( genaugesagt 0,5V mehr und 0,5V weniger als Masse). Die Versorgungsspannung kann zwischen 1,8V und 5,5V sein wobei bei kleinen Spannungen der Systemtakt niedriger sein muß.
Außerhalb dieser Werte fließt ein Strom über die Schutzdioden gegen die Versorgungsspannung bzw Masse und kann durch Überlast die Schutzdioden und Pins zerstören.
/*
Ausgehend von Analog Input wird das Programm entwickelt.
Augelesen werden die Werte Analoginput und Digitalinput, ausgegeben werden ein RS485-Befehl, Status ob geregelt oder ungeregelt
geladen wird und beim geregelten Laden der Prozent-Wert.
Zwischendrin wird der vom Analoginput ermittelte Wert in einen Prozent Wert umgerechnet.
*/
/Variablendeklaration/
int Ana1_sensorPin = A0; // Auswahl input pin Spannungsabfrage Datenlogger
int Ana1_sensorValue = 0; // variable to store the value coming from the sensor
int DI1_sensorPin; // Auswahl input pin digital für Schnellladung
int DT1_sensorvalue=0; //variable to store the value coming from the sensor
char ev_RS_485=0; //RS-485 Übergabewert setzen
void loop() {
// read the value from the sensor:
int DT1_sensorvalue = digitalRead(2); //Auslesen ob Digital Input (DI1) offen oder geschlossen ist
Ana1_sensorValue = analogRead(Ana1_sensorPin); //Spannungswert auslesen
if (DT1_sensorvalue == HIGH) { //DI1 geschlossen Analogregelung anstossen und RS 485-Befehle absetzen
if (Ana1_sensorValue< 317){ // damit die Ladesteuerung des EV nicht toggelt werden mindestens 4kW Ladeleistung benötigt
Ana1_sensorValue=318;}
else
ev_RS_485=Ana1_sensorValue*1000/1055; //Umrechnung Dezimal in Prozent für RS-485 Befehl
// digitalwrite ev_RS_485; // RS-485-Befehl absetzen
Serial.print(ev_RS_485);
}