Bienvenue, Visiteur |
Vous devez vous enregistrer avant de pouvoir poster.
|
|
|
V1 avec relais et temporisation |
Posté par : AngelB - 02-07-2024, 12:43 AM - Forum : Routeur Photovoltaïque
- Réponses (4)
|
|
Bonjour André,
Dans cette partie du code de la V1, comment peut-on ajouter une temporisation en plus du seuil pour garder le relais fermé 15 secondes tant que PW <-700 ?
Mille mercis d'avance pour votre expertise
void Overproduction(){
if (PW <-700){ //switch On water heater
digitalWrite(RelayWaterHeater,HIGH);
}
if (PW>1000){ //Switch Off with hyteresis
digitalWrite(RelayWaterHeater,LOW) ;
}
}
}
|
|
|
Watchdog avec la carte ESP32 v3.0.x - Démo / Exemple |
Posté par : F1ATB - 01-07-2024, 02:01 PM - Forum : Domotique
- Pas de réponse
|
|
Le Watchdog ESP32, depuis la version de gestion de carte 3.0x, est largement modifié par rapport à la mise en œuvre précédente. Voici un exemple simple de comment l'implémenter (Arduino IDE).
Un point clé est de définir un délai d'au moins 1 ms après :
esp_task_wdt_reset();
delay(1); // <------------------------------ Obligatoire
Cordialement, André.
Code : #include <esp_task_wdt.h>
#define WDT_TIMEOUT 25 // Timeout in seconds
esp_err_t ESP32_ERROR;
int i = 0;
int last = millis();
void setup() {
Serial.begin(115200);
delay(100);
Serial.println("Configuring WDT...");
Serial.print("Watchdog Timeout (in seconds) set to : ");
Serial.println(WDT_TIMEOUT);
esp_task_wdt_deinit();
// Task Watchdog configuration
esp_task_wdt_config_t wdt_config = {
.timeout_ms = WDT_TIMEOUT * 1000, // Convertin ms
.idle_core_mask = (1 << portNUM_PROCESSORS) - 1, // Bitmask of all cores, https://github.com/espressif/esp-idf/blob/v5.2.2/examples/system/task_watchdog/main/task_watchdog_example_main.c
.trigger_panic = true // Enable panic to restart ESP32
};
// WDT Init
ESP32_ERROR = esp_task_wdt_init(&wdt_config);
Serial.println("Last Reset : " + String(esp_err_to_name(ESP32_ERROR)));
esp_task_wdt_add(NULL); //add current thread to WDT watch
}
void loop() {
if (millis() - last >= 1000) { // Task every second
last = millis();
Serial.print(i);
Serial.print("s : ");
i++;
if (i % 20 <= 10 && i<60) { //Reset only during 10s the first minute
Serial.println(" Resetting WDT...");
esp_task_wdt_reset();
delay(1); //VERY VERY IMPORTANT for Watchdog Reset to apply. At least 1 ms
if (i % 20 == 10) { // No reset after 10s for test
Serial.println("Stopping WDT reset.");
}
}
}
}
|
|
|
Watchdog timer in ESP32 board manager v3.0.x - Demo / Example |
Posté par : F1ATB - 01-07-2024, 01:45 PM - Forum : Home Automation
- Pas de réponse
|
|
Watchdog timer in ESP32 board manage 3.0x changes a lot from previous implementation. Here is a simple example how to implement it (Arduino IDE).
One key point is to set a delay of minimum 1 ms after the :
esp_task_wdt_reset();
delay(1); // <------------------------------ Mandatory
Here after the example to be tested:
- watchog is set to 25s
- In a cycle of 20 s. The reset is done the first 10s, then no reset during 10s.
- After 60s no reset at all the system will crashes and restart at 75s.
Regards F1ATB
Code : #include <esp_task_wdt.h>
#define WDT_TIMEOUT 25 // Timeout in seconds
esp_err_t ESP32_ERROR;
int i = 0;
int last = millis();
void setup() {
Serial.begin(115200);
delay(100);
Serial.println("Configuring WDT...");
Serial.print("Watchdog Timeout (in seconds) set to : ");
Serial.println(WDT_TIMEOUT);
esp_task_wdt_deinit();
// Task Watchdog configuration
esp_task_wdt_config_t wdt_config = {
.timeout_ms = WDT_TIMEOUT * 1000, // Convertin ms
.idle_core_mask = (1 << portNUM_PROCESSORS) - 1, // Bitmask of all cores, https://github.com/espressif/esp-idf/blob/v5.2.2/examples/system/task_watchdog/main/task_watchdog_example_main.c
.trigger_panic = true // Enable panic to restart ESP32
};
// WDT Init
ESP32_ERROR = esp_task_wdt_init(&wdt_config);
Serial.println("Last Reset : " + String(esp_err_to_name(ESP32_ERROR)));
esp_task_wdt_add(NULL); //add current thread to WDT watch
}
void loop() {
if (millis() - last >= 1000) { // Task every second
last = millis();
Serial.print(i);
Serial.print("s : ");
i++;
if (i % 20 <= 10 && i<60) { //Reset only during 10s the first minute
Serial.println(" Resetting WDT...");
esp_task_wdt_reset();
delay(1); //VERY VERY IMPORTANT for Watchdog Reset to apply. At least 1 ms
if (i % 20 == 10) { // No reset after 10s for test
Serial.println("Stopping WDT reset.");
}
}
}
}
|
|
|
Commande pour trakeur solaire |
Posté par : papy3264 - 01-07-2024, 09:35 AM - Forum : Installation panneaux photovoltaïques
- Réponses (5)
|
|
J’ai trois panneaux solaires au sol en plug and play, et afin d'optimiser leur production je suis entrain de fabriquer mécaniquement mon trakeur solaire. Il existe sur Ali un boitier de commande pour automatiser le fonctionnement, mais je me disais qu'il serait possible d'utiliser une carte ESP8266 pour faire la même chose. En entrée un capteur de vitesse de vent, tête détection d'azimut du soleil (NSXH PLC Module), quatre fins de course inductifs (SN04-N). En sortie les quatre relais de la carte ESP8266. Le tout commandé via le wifi sur téléphone portable ou PC. Le coût devrait être autour de 90 €.
Personnellement je ne suis pas capable de faire la programmation mais quelqu'un pourrait relever se défit.
|
|
|
Arduino ESP32 Core 3.02 -->v10 |
Posté par : Alain_C38 - 01-07-2024, 05:58 AM - Forum : Routeur Photovoltaïque
- Réponses (7)
|
|
Bonjour à tous,
J'étais en version 10 (core 3.01) et je subissais quelques reset intempestifs (la dernière session avait duré 60 h tout de même).
Ce matin, j'ai regardé sur Gitub, et une nouvelle version du core (3.02) est disponible depuis quelques jours (https://github.com/espressif/arduino-esp.../tag/3.0.2).
Des corrections de bug sur la partie wifi sont indiqués, et comme je suis fou, j'ai recompilé la v10 avec ce nouveau core et téléversé sur mon ESP32 (avec IDE Arduino).
Aucun message d'erreur lors de la compilation et j'ai téléchargé... pour l'instant tout fonctionne.
Le coeur 0 semble moins chargé qu'avant (Max autour de 850 ms au lieu de 1400 avec la 3.01)
Le coeur 1 semble également moins chargé, mais pas de beaucoup, environ 3 ms (pour le max) en moins.
à suivre
|
|
|
Connection installation PV sur tableau divisionnaire |
Posté par : FluzDeBruz - 30-06-2024, 04:03 PM - Forum : Installation panneaux photovoltaïques
- Réponses (6)
|
|
Bonjour,
Je souhaite installer des panneaux PV sur le toit de mon abri de jardin (ossature bois). Ce-dernier est distant de 14 mètres de la maison et il est raccordé au tableau de répartition général par 33 mètres de câble de 16mm2. J'ai protégé cette ligne au départ par un interrupteur-différentiel de type AC de 30 mA et de calibre 63A.
J'ai installé un tableau divisionnaire dans l'abri avec un interrupteur-différentiel (ID) de type AC de 30 mA et calibre 40 A. J'ai ensuite mis un disjoncteur C10 pour l'éclairage intérieur et extérieur, un C16 pour pour les 5 prises de courant intérieures et un C16 pour la prise extérieure.
Je possède déjà un kit plug & play de 2 panneaux PV de 420 Wc raccordés à un micro-onduleur HMS 800 2T que j'aie branché sur la prise extérieure de l'abri. Je souhaiterais rajouter 4 panneaux de même puissance sur le toit avec un HMS 1600 ou 2 HMS 800 2T (pour garder une certaine cohérence d'installation).
Mes questions sont les suivantes :
- Dois-je revenir à une installation "classique" et raccorder les 2 (ou 3) micro-onduleurs sur un boitier de protection ?
- Si oui chaque micro-onduleurs dois-il être connecté à un disjoncteur particulier ?
- Puis-je connecter directement l'installation au tableau divisionnaire ou dois-je tirer une autre ligne dédiée ?
Cordiales salutations,
Claude
|
|
|
|