Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Routeur solaire Arduino Uno + SSR25DA
#11
Sur une UNO il y a des ports compatibles PWM et d'autres non. De toutes les façons il faudra modifier le code.
Pour avancer de manière efficace il ne suffit pas de changer de port mais déjà de savoir si ton ballon est compatible avec ce type d'alimentation. Ensuite il te faut une mesure de puissance bidirectionnelle afin de gérer le routage.
Electronicien et spécialiste en impression 3D FDM
https://www.premium-forum.fr/index.php
Répondre
#12
si j ai juste pour faire du pwm tu peux tenter de commander ta GPIO comme ceci
dans les declarations
int ledPWM = 9;

dans le setup  
pinMode(ledPWM, OUTPUT); // Déclare la broche comme sortie

dans la loop 
analogWrite(ledPWM, 128); // ~50% de puissance 

la valeur c est un 8 bit donc pour 0-100% c est une mise à l echelle entre 0 et 255


sur un UNO les GPIO  3, 5, 6, 9, 10, 11 ont la capacité à faire du PWM

Si c'est toi qui decide d'un pourcentage d'ouverture ca peut marcher, fais nous tes retours

Avec un SSR classique la variation de puissance sera très imprecise et chaotique. Si tu prends un ssr « aléatoire » ca fonctionnera mieux mais ca va faire swinger tes résistances et génèrer plein de parasite sur tout le réseau électrique.
Il faudrait passer en « burst mode » mais pour cela t as besoin de detecter le passage à zero du secteur (zc) donc de l electronique en +
Donc en conclusion si tu veux un résultat avant 10 ans tu as vraiment un enorme interet d acheter un esp32 à 3.2euros et partir sur la base du programme du routeur d André
Répondre
#13
Ça va être compliqué sur ce forum de faire un routeur avec un UNO !
Mais demande à Google..."routeur pour les nuls"
Tu auras déjà des infos.
Répondre
#14
(14-08-2025, 07:44 PM)Lolo69 a écrit : si j ai juste pour faire du pwm tu peux tenter de commander ta GPIO comme ceci
dans les declarations
int ledPWM = 9;

dans le setup  
pinMode(ledPWM, OUTPUT); // Déclare la broche comme sortie

dans la loop 
analogWrite(ledPWM, 128); // ~50% de puissance 

la valeur c est un 8 bit donc pour 0-100% c est une mise à l echelle entre 0 et 255


sur un UNO les GPIO  3, 5, 6, 9, 10, 11 ont la capacité à faire du PWM

Si c'est toi qui decide d'un pourcentage d'ouverture ca peut marcher, fais nous tes retours

Avec un SSR classique la variation de puissance sera très imprecise et chaotique. Si tu prends un ssr « aléatoire » ca fonctionnera mieux mais ca va faire swinger tes résistances et génèrer plein de parasite sur tout le réseau électrique.
Il faudrait passer en « burst mode » mais pour cela t as besoin de detecter le passage à zero du secteur (zc) donc de l electronique en +
Donc en conclusion si tu veux un résultat avant 10 ans tu as vraiment un enorme interet d acheter un esp32 à 3.2euros et partir sur la base du programme du routeur d André

Bonjour et merci de votre retour constructif 
J’ai pas mal fait de recherche « routeur pour les nuls mais débrouillard et passionné » sur Google et ce site et je vais tester la methode train de sinus sur 990ms car mon ssr gère déjà le zéro cross, j’ai juste « normalement » à ajouter la détection de passage à zéro
Bien sûr que je peux acheter un esp à 3 € et mettre le programme d’André je suppose qu’il est excellent et c’est top d’avoir des personnes comme ça mais bon pas très cérébralement motivant de copier coller  Smile
Répondre
#15
Bonjour,

 "mon ssr gère déjà le zéro cross, j’ai juste « normalement » à ajouter la détection de passage à zéro"

Si le SSR gère le ZC, c'est pas la peine de chercher à le récupérer aussi  ...

On a pas encore le matériel dispo,

on va partir d'hypothèse : un UNO sans wifi = pas d'interface html, une source de mesure type UxI (quelques gpio analogique + un peu de composants) ou UxIx2/UxIx3 (un port série RxTx) ou Linky (un port série Rx + un opto 814)

une petite moulinette pour obtenir un nombre entre 0 et 100 représentatif du % de puissance a laisser passer vers le résistance du ballon (dés qu'on commence a injecté on va donner l'ordre de consommer pour ne pas injecté)

Pour la regul en sortie avec train de sinus fixe sur 990ms (du PWM a 1Hz), on ajuste % de temp ON et son complément OFF a chaque cycle 

Le SSR avec sa gestion passage a zéro fera le reste (quand le gpio est a l'état 1, le SSR attend le prochain ZC pour commencer a conduire et quand le gpio repasse a l'état bas, le triac dans le SSR continu de conduire jusqu'au prochain changement d'alternance)

extraire ces parties de programme pour réduire drastiquement la taille du programme du RMS et que ça compile sur du UNO, c'est faisable (mais est ce que ça en vaut la peine ?)
Merci André Smile ,
Routeur V15.01 (since V2.01) / 1xESP32 (IP fixe) / Source UxI / 5 actions
Panneaux 1680Wc
1 Triac : ECS 2000W
1 SSR (multi) : ECS 1800W
1 SSR (On-Off) : Circulateur plancher chauffant eau 50W
1 SSR (multi) : circuit d'eau 1500W
1 SSR (multi) : Ultime 2000W
Répondre
#16
Bonjour,

j'espère que mon message passera et que je n'aurais pas de retour négatif ...

(Hier, 09:54 AM)michy a écrit : "mon ssr gère déjà le zéro cross, j’ai juste « normalement » à ajouter la détection de passage à zéro"

Si le SSR gère le ZC, c'est pas la peine de chercher à le récupérer aussi  ...

est ce qu'on ne risque pas de louper des périodes si on ne détecte pas, pour se synchroniser en quelques sortes ?

voila un bout de mon code arduino :
Code :
if (now - windowStart >= WINDOW_MS) {
    windowStart += WINDOW_MS;
  }

  unsigned long onTime = (WINDOW_MS * (unsigned long)powerPercent) / 100;

  if ((now - windowStart) < onTime) {
    digitalWrite(SSR_PIN, HIGH);  // cycles ON
  } else {
    digitalWrite(SSR_PIN, LOW);   // cycles OFF
  }

powerPercent est récupéré de mon application web qui sous API envoi le pourcentage à lancer.
Exemple : 

Code :
{"surplus_chauffeeau":100,"production":2.5,"consumption":0.4,"surplus":2.1}

code serveur qui permet de générer le pourcentage de la puissance à envoyer :

Code :
/**
     * Méthode qui renvoie le pourcentage du surplus par rapport à la puissance du chauffe eau
     *
     * @param float $production
     * @param float $consumption
     * @return int
    */
    public static function estOKDeclenchementChauffeEau(float $production, float $consumption): int
    {
        // *** gestion données à 0
        if($production <= 0 || $consumption <= 0){
            return 0;
        }

        $surplus = round($production - $consumption,1);

        // *** on produit plus qu'on consomme
        if($surplus > 0){

            // *** assez pour lancer le chauffe eau
            if($surplus >= Site::$ChauffeEauSeuilDeclenchement) {

                // *** on est entre la consommation et 100%
                if($surplus <= Site::$ChauffeEauPuissance){
                    return round(($surplus / Site::$ChauffeEauPuissance) * 100);       
                } else {
                    // *** on est à au moins 100%
                    return 100;                                 
                }
            } else {
                // *** mais pas assez pour lancer le chauffe eau
                return -99;
            }
        } else {

            if($surplus <= Site::$ChauffeEauSeuilDeclenchementHaut*-1){
                // *** on coupe car on dépasse la production + limite
                return 0;
            } else {
                // *** on est dans la limite autorisé
                return -99;
            }
        }
    }

enfin :
(Hier, 09:54 AM)michy a écrit : extraire ces parties de programme pour réduire drastiquement la taille du programme du RMS et que ça compile sur du UNO, c'est faisable (mais est ce que ça en vaut la peine ?)

je n'ai pas extrait de code du programme F1ATB, il me manquait quelques connaissances en "chauffe eau", j'ai juste récupéré la logique multi sinus expliqué sur ce site et avec l'aide de vos explications j'ai un peu réfléchi pour aboutir à un résultat satisfaisant. J'avais déjà conçu une application web pour suivre la production de mes panneaux + météo + stats.
Je trouve cela un peu plus gratifiant que d'acheter, copier coller un programme et faire 2-3 clics pour le configurer.
quand on est passionné d'électronique et ingénieur en développement de métier on essaie de créer les choses soit même et puis ça occupe pendant les vacances Smile.
Répondre
#17
Faire soi-même est toujours plus gratifiant mais à un moment il faut être pragmatique, ca existe, pourquoi le réinventer ?
Pour ma part, je préfère copier et améliorer éventuellement, ou alors, si ca n'existe pas, le créer.
En ce qui concerne le routeur F1ATB, ce qui est intéressant c'est la multiplicité des options disponibles, ce qui demande un gros travail de développement et de tests. Ce forum permet de multiplier les tests et de proposer des améliorations souvent pertinentes.
C'est un peu comme avec les imprimantes 3D, sans la communauté, le travail aurait été pénible et surtout très long avant d'avoir des imprimantes 3D véritablement fiables.
Electronicien et spécialiste en impression 3D FDM
https://www.premium-forum.fr/index.php
Répondre
#18
Tout seul on avance plus vite
Ensemble on avance plus loin
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 utilisateur(s) invisible(s), 1 visiteur(s)