Bonjour à tous, j'ai 6 panneaux posés sur une terrasse au-dessus de mon garage et j'aimerais les faire pivoter pour gagner en rendements pour cela je veux utiliser un moto-reducteur DCPour commander tout ça j'ai faits quelques recherches et j'ai trouvé un code sur arduino qu'il me semble devrais marché , seulement les sortir son pour des servos et j'ai besoin de beaucoup plus de puissance.
Ma question est: pui-je à partir d'une plaque ou shield remplacer les servos par de moteurs sans grands changement au code?
Je sais qu'il y a des codes avec sortie moteurs mais je les trouve trop compliquées et je suis loin d'être un expert dans la programmation arduino.
je ne vois pas comment apliquer un servo dans le sisteme mecaniquement parlant, il me faut au tour de 60 cm de course lineere pour pouvoir faire pivoter les paneaux de 160 a 180 degrés.
je besoins d'un code comparateur à partir de LDRs comme celui que j'ai trouvé pour les servos mais qui puisse faire tourne un moteur avec invertion du genre lave vitres d'une voiture.
mes paneaux seront sur une structure à 45 degrés et pivoteront sur un axe de 180 degrés environt donc il faut que le moteur puisse tourner dans un sanse et dans l'autre.
une électronique de commande et d'asservissement => tu indiques un angle à l'électronique et elle fait ce qu'il faut pour respecter ce que tu lui a demandé.
Si tu mets un moteur classique il faudra que tu ajoutes cette électronique et la mécanique associée d'une façon ou d'une autre.
A partir de ce qui suit c'est uniquement un point de vue personnel :
Asservir en position c'est théoriquement fantastique.
En réalité il y a deux écueils financiers :
le coût de l'investissement a rentabiliser si possible avant 10 ans.
le gain relatif : une partie de l'énergie récupérée va être perdue dans le fonctionnement.
mes panneaux seront sur une structure à 45 degrés.
Vérifie, mais il me semble que ce n'est pas l'angle habituellement choisi. Tu dois perdre en été là où le maximum d'énergie est récupérée.
Le maximum d'énergie est récupérée autour de midi au soleil, c'est à dire quand le soleil est en plein sud.
Autre information : il n'y a pas que le rayonnement direct, il y a aussi le rayonnement diffus. La part de rayonnement diffus n'est absolument pas négligeable et ce rayonnement est insensible à la position du panneau.
Je me suis (un petit peu) intéressé à la question et ma conclusion (qui vaut ce quelle vaut) c'est que si j'avais une installation à faire je ne m'occuperais que de la hauteur du soleil et pas de l'azimut.
Les panneaux seraient fixes vers le Sud, réglage en inclinaison avec une crémaillère à 3 positions manuelles : hiver, printemps/automne et été => les deux solstices et les deux équinoxes.
Mon autre conclusion est que si je devais faire un asservissement sur la position du soleil je ferai plus confiance à un calcul à partir des équations du soleil qu'à un capteur optique : que se passe-t-il avec un ciel nuageux uniformément gris ? L'asservissement va se mettre à tourner en boucle pendant 24 h ?
Les équations de la position du soleil se trouvent facilement et sont à la portée d'un microcontroleur basique.
Salut , un moteur qui fait tourner une vis tres lentement pourrait aussi faire l ' affaire si vous ne faites tournez que le bas et que vous mettez un axe coulissant reliiant tous les panneaux entre eux .
Mais sans photos du systeme , difficile de vous aidez .
meme un schema a main levee pourrait suffire . et il faut donner plus de renseignements sur ce que vous avez a disposition , moteur , relais servo etc ...
il me faut une certaine puissance pour faire tourner une tige assez longue et forte fileté pour faire tourner tous les paneaux au memme temps et les assurer à cause du vent. ( dans la mêmme pensée que le comentaire de "Iznobe").
le code que j'ai choisi c'est juste parce qu'il marche et je trouve les LDR assez bien en termes de comparaison de luminusité. (j'ai essayée sur protoboard et ça marche niquel), j'ai vu d'autres qui me semblait pas assez precis.
En principe j'irai utiliser q'une paire de LDR l'autre axe je le reglerai en manuel ( pour répondre à "Tesla Member" je peut bien monter 3 ou 4 fois par anné pour augmenter au diminuer l'angle par raport au saison).
il me faudrait donc deux sorties de l'arduino en 5V au lieu de deux sorties servos pour la rotation droite/gauche du moteur-reducteur, l'inversion je me debroillerai avec un pon H en relés.
il me faudrait aussi pouvoir les posicionner à 90 degrés q'und il n'y a pas de soleil ( nuageux) mais je pense que ças será bien plus dificil en programation je suis loin d'être à l'aise avec le C++.
-pour le coût si je le fais moi-même je pense qu'il y a un gain assez conséquent .
-voilá le code en Tinkercad
voilà a peut-prés comme je vois la conception des supports, il y aura bien sur des modif.. et autres adaptations.
Servo myservo;
int pos = 90; // Posição inicial
int sens1 = A0; // LRD1 pino
int sens2 = A1; // LDR2 pino
int tolerancia = 3; // Valor da variável da tolerância, pode ser aumentada ou diminuída
void setup()
{
myservo.attach(9); // Liga o servo ao pino 9 do arduino
pinMode(sens1, INPUT);
pinMode(sens2, INPUT);
myservo.write(pos);
delay(3000); // 3 segundos de espera evita o ajuste permanente do painel
}
void loop()
{
int val1 = analogRead(sens1); // faz a leitura do sensor 1
int va12 = analogRead(sens2); // faz a leitura do sensor 2
if((abs(val1 - va12) <= tolerancia) || (abs(va12 - val1) <= tolerancia)) {
//nao faz nada se os valores da leitura estão dentro do limite de tolerancia
} else {
if(val1 > va12) { pos = --pos; }
if(val1 < va12) { pos = ++pos;}
}
if(pos > 180) { pos = 180; } // reset para 180 se for acima
if(pos < 0) { pos = 0; } // reset para 0 se descer abaixo
myservo.write(pos); // escreve a posição do servo motor
delay(500);
}
Je suis aussi ce code bien plus facile mais encore une fois avec sortie servo. Je trouve que plus part des codes et chêmas sont destinés au loisirs pour des protobord et pas pour le reél.
Servo myservo;
int pos = 90; // Posição inicial
int sens1 = A0; // LRD1 pino
int sens2 = A1; // LDR2 pino
int tolerancia = 3; // Valor da variável da tolerância, pode ser aumentada ou diminuída
void setup()
{
myservo.attach(9); // Liga o servo ao pino 9 do arduino
pinMode(sens1, INPUT);
pinMode(sens2, INPUT);
myservo.write(pos);
delay(3000); // 3 segundos de espera evita o ajuste permanente do painel
}
void loop()
{
int val1 = analogRead(sens1); // faz a leitura do sensor 1
int va12 = analogRead(sens2); // faz a leitura do sensor 2
if((abs(val1 - va12) <= tolerancia) || (abs(va12 - val1) <= tolerancia)) {
//nao faz nada se os valores da leitura estão dentro do limite de tolerancia
} else {
if(val1 > va12) { pos = --pos; }
if(val1 < va12) { pos = ++pos;}
}
if(pos > 180) { pos = 180; } // reset para 180 se for acima
if(pos < 0) { pos = 0; } // reset para 0 se descer abaixo
myservo.write(pos); // escreve a posição do servo motor
delay(500);
}