
Dann immer die Werte der beiden Sensoren adieren. Dann müßte ich aber das ganze Teil nochmal neu bauen



Also ich hoffe ich komme mit der Folie und einem Sensor hin.
Franz
Forum zur gegenseitigen Hilfe für Hobby´s, Spass und Technik, im Raum Penzberg, Garmisch, Bad Tölz, Seeshaupt
das ganze Lichtspektrum konnte ich schon abdecken. Um ein ständiges Ausrichten zu vermeiden,Hast du damit das ganze Helligkeitssprektrum abbilden können?
Danke dir. Das gibt mir zuversicht, dass ich nicht die Lösung mit zwei Sensoren in jeder der 4 Richtungen brauche.Max hat geschrieben: ↑Fr 4. Nov 2022, 10:21das ganze Lichtspektrum konnte ich schon abdecken. Um ein ständiges Ausrichten zu vermeiden,Hast du damit das ganze Helligkeitssprektrum abbilden können?
hatte ich damals Wartezeiten von jeweils einer Stunde eingegeben. Erst dann wurde erneut der hellste Punkt
angefahren. Einigemale ist das Panel bei Verdunklung durch ein heftiges Gewitter tagsüber heimgefahren (Morgenstellung).
Seit der Umstellung auf Zeitsteuerung gibt es diese Probleme nicht mehr.
Eine Vertikalausrichtung ist für den praktischen Einsatz meiner Meinung nach nicht notwendig.
Die Panele habe ich auf Übergangszeit-Sonnenstand ausgerichtet. In der Sommerzeit habe ich genügend Strom
in den Batterien.
das mit der Vertikalausrichtung finde ich gut, ich habs damals softwaremäsig halt nicht hinbekommen.Die Vertikalausrichtung nehme ich halt mit, weil ich so maximal wie möglich ausrichten will.
Code: Alles auswählen
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#include <Adafruit_ADS1X15.h> // bindet Wire.h für I2C mit ein
Adafruit_ADS1115 ads;
#define ADS_I2C_ADDR 0x48
const float multiplier = 0.125F; // ADS1115-Multiplikator bei einf. Verstärkung
const byte panel = A0;
int panelwert = 0;
float panelspannung = 0;
float ads_mv0 = 0; // Sensor rechts
float ads_mv1 = 0; // Sensor links
float ads_mv2 = 0; // Sensor hinten
float ads_mv3 = 0; // Sensor vorne
int adc0 = 0;
int adc1 = 0;
int adc2 = 0;
int adc3 = 0;
const byte Servo1 = 5;
const byte Servo2 = 6;
unsigned long sekundenablauf = 0; // Messabstand 1 Sekunde
const unsigned long pausezeit = 1000;
unsigned long aktuellzeit = 0;
void setup() {
//----------------------------------------------------
lcd.begin();
lcd.backlight();
lcd.clear();
//----------------------------------------------------
Serial.begin(9600);
//----------------------------------------------------
ads.begin(ADS_I2C_ADDR, &Wire);
// Werte 1-fach verstärken (ESP32 liefert max. 3,3V)
ads.setGain(GAIN_ONE);
//----------------------------------------------------
lcd.setCursor (0, 0); // Zeile 1
lcd.print (F("Panelspannung "));
//----------------------------------------------------
pinMode(panel, INPUT); // Spannung vom Panel
pinMode(Servo1, OUTPUT); // Pin 5
pinMode(Servo2, OUTPUT); // Pin 6
//----------------------------------------------------
sekundenablauf = millis();
}
void loop() {
aktuellzeit = millis();
//Jede Sekunde Spannung am Panel messen
if (aktuellzeit - sekundenablauf >= pausezeit) { // Eine Sekunde abgelaufen?
panelwert = analogRead(panel);
panelspannung = panelwert * 20.3 / 1024.0;
lcd.setCursor (14, 0); // Zeile 1
lcd.print (panelspannung);
sekundenablauf = millis();
}
// -----Kanal 0 Messung------------------------------
adc0 = ads.readADC_SingleEnded(0);
ads_mv0 = ads.computeVolts(adc0) * 1000;
lcd.setCursor (12, 2); // Zeile 3
lcd.print (ads_mv0);
// -----Kanal 1 Messung------------------------------
adc1 = ads.readADC_SingleEnded(1);
ads_mv1 = ads.computeVolts(adc1) * 1000;
lcd.setCursor (0, 2); // Zeile 3
lcd.print (ads_mv1);
// -----Kanal 2 Messung------------------------------
adc2 = ads.readADC_SingleEnded(2);
ads_mv2 = ads.computeVolts(adc2) * 1000;
lcd.setCursor (6, 1); // Zeile 2
lcd.print (ads_mv2);
// -----Kanal 3 Messung------------------------------
adc3 = ads.readADC_SingleEnded(3);
ads_mv3 = ads.computeVolts(adc3) * 1000;
lcd.setCursor (6, 3); // Zeile 4
lcd.print (ads_mv3);
}
Hi Max.
Mitglieder in diesem Forum: Ahrefs [Bot] und 3 Gäste