Bonjour, je veux faire une pompe solaire pour un bassin. J'ai donc un panneau solaire 12v 95W, une batterie 12V de voiture en bon état, un arduino. Je vais m'achter un régulateur solaire pour gérer le chargement de la batterie, ainsi qu'un step down 12v vers 5V pour alimenter l'arduino.
L'idée est de commander l'alimentation de la pompe via un mosfet (j'ai des IRL530N en stock), pour la faire fonctionner lorsque la batterie est au dessus d'une certaine tension (je pense à une tension d'environ 12.6 V pour ne pas trop décharger la batterie), puis la couper lorsque cette batterie passe en dessous de cette tension, et laisser un certain temps avant de la rallumer pour laisser la batterie se charger.
Pour capter la tension de la batterie je vais utiliser un pont diviseur avec des résistances : R1 = 680Ohm et R2 = 330 Ohm, avec une tension d'entrée de 15V, et de sortie (à 15V) de 5V. J'ai calculé en prenant 15V pour prendre une petit marge et ne jamais avoir plus de 5V a rentrer dans l'arduino. Pour le code c'est ok je pense savoir comment faire.
La ou je ne sais pas comment faire, ou j'ai essayé maintes fois de comprendre comment l'utiliser, c'est les transistors MOSFET (N ici). J'avais déjà essayé d'en utiliser un pour controler un moteur DC en PWM, et c'éatit un échec (parfois ça marchait parfois non).
Donc j'aimerais trouver des explications sur comment utiliser un mosfet en mettant 5V sur la Gate pour piloter du 12V (seulement quelques ampères au maximum).
/* programme pour mesurer une tension max de 15VDC pour batterie 12V, et gérer un mosfet pour commander une pompe à eau 12V
*schema de montage pont diviseur de tension VIN 15vdc R1 = 680Ohm R2 = 330Ohm Vout = 5V quand Vin 15v
*
* broche mosfet gate = d3
* broche sortie pont diviseur = A0
*/
void setup() {
}
void loop() {
tension = analogRead(A0);
while(tension > 860) { //produit en croix : 5V*12.6V/15V = 4.2V 5V = 1023 donc 1023*12.6/15= 860
digitalWrite(3, HIGH);
delay(60000);
}
if(tension < 870) {
digitalWrite(3, LOW);
while(tension < 914) { //produit en croix : 5V*13.4V/15V = 4.47V 5V = 1023 donc 1023*13.4/15= 914 en gros, tant que la tensions batterie est inferieure à 13.4v, la pompe est éteinte
delay(600000) attends 10 minutes
}
}
}
Commande du mosfet;
Remarque: les résistances de ton pont de 680/330Ω sont faibles et vont tirer inutilement sur la batterie. Tu peux multiplier leur valeur par 10 ou par 50.
La résistance de 330Ω est pour limiter l'appel de courant lors de la commutation. Au grand max l'appel de courant sera 5V/330Ω=15mA ce qui est largement acceptable pour les sorties. Tu pourait aussi mettre 220Ω.
La résistance de 100k est pour éviter que la gate ne soit flottante lorsqu'elle n'est pas commandée (pendant l'initialisation du micro par exemple). Sa valeur n'est vraiment pas critique. C'est inutile qu'elle soit trop faible et au delà de 1MΩ ça commence à être trop élevé pour être efficace.
Personnellement je choisirai 68k/33k. L'impédence d'entrée du micro est négligeable devant 33k.
J'ai remarqué que j'avais des transistors PNP TIP121 qui conviendraient peut-être un peu mieux pour mon projet (ils peuvent laisser passer 5A en normal et 8A en pic, sachant que ma pompe fera sans doute une 20 aine de W, donc largement en dessous des 60W accepté).
En utiliser un à la place du mosfet initial serait mieux pour moi car je n'ai pas beaucoup de mosfets.
Dans ce cas, le circuit de branchement serait le même ? (avec les deux résistances ?)
C'est à dire que l'impédance de l'entrée analogique est très grande devant la résistance de 33k et que tu peux la négliger dans le calcul du pont.
Le TIP121 est un transistor NPN et non un transistor PNP. L'utilisation est plus facile qu'un transistor PNP.
Il faut une seule résistance dans la base. Pour la calculer il faut diviser le courant collecteur par le gain. Comme le gain est très élevé, en général une résistance de 1k convient.
Personnellement j'utiliserai plutôt un mosfet qui va provoquer moins de chute de tension, mais si tu disposes de TIP121 ils conviendront aussi.
Oui, c'est aussi mon avis.
Un TIP121 est un darlington. Il provoquera une chute de tension de 2V pour quelques ampères de courant collecteur.
Un IRL530 a une résistance RDSon faible : 0.1Ω. Il provoquera une chute de tension de 0.2V pour 2A, donc 10 fois moins qu'un TIP121.
Mais rien ne t'empêche d'essayer les deux.
Pour info le gain du TIP121 est de 1000, donc si la pompe consomme 2A, le courant de base sera de 2mA.
La résistance de base Rb = (5V - Vbe) / Ib = (5V - 2V) / 0.002 = 1500Ω
Divise cette valeur par 2 ou 4 pour que la saturation soit correcte.
Le MOSFET serait meilleur, et plus facile à calculer. En fait il n'y a aucun calcul, contrairement à un transistor bipolaire.
De toute manière, je n'ai pas besoin d'une précision importante. Mon pont diviseur va juste servir à savoir quand la batterie est déchargée, et donc commander à l’Arduino de couper la pompe via le MOSFET (je vais finalement utiliser le MOSFET d'après vos conseils). Je compte mesurer environ au dixième de volt. J'ai déjà testé cette partie, et j'arrive à mesurer la même tensions qu'avec un multimètre, au demi-dixième près !
Etant donné la valeur dans le code (5V pile) il était légitime de se poser la question.
La fonction loop() s'exécute déjà dans une boucle while(), pas la peine d'en ajouter.
Si la variable tension n'est pas mise à jour dans la boucle, il sera difficile d'en sortir. Idem pour la deuxième.
Je verrais plutôt des instructions if().
Et j'ai l'impression que les valeurs de seuil sont inversées.
Bonjour,
Ceci fait les calculs en entier et le résultat va être soit 0 soit 3.
Pour faire les calculs en flottant: tension = ((valeur*5.0)/1023)*3; //on calcule Vbatt
J'ai reçu tous mes composants (pompe 12V 19W, régulateur pour panneau solaire), j'ai fini mon code et ai fait mon schéma. Je pense que ça devrait marcher mais je n'ai pas envie de cramer de composants : je ne suis pas sûr pour les valeurs des condensateurs pour le 7805.
Pouvez-vous me confirmez ces valeurs, ou sinon m'en proposer d'autres ?
Le code :
/* programme pour mesurer une tension max de 15VDC pour batterie 12V, et gérer un mosfet pour commander une pompe à eau 12V
*schema de montage pont diviseur de tension VIN 15vdc R1 = 680Ohm R2 = 330Ohm Vout = 5V quand Vin 15v
*
* broche mosfet gate = d3
* broche sortie pont diviseur = A0
*/
float valeur = 0;
float tension = 0;
int pompe = 3; //définit la sortie D3 pour la pompe
void setup() {
}
void loop() {
valeur = analogRead(A0);
tension = ((valeur*5.0)/1023)*3; //on calcule Vbatt
if(tension < 12.40) { //petite marge de sécurité, normalement on peut utiliser une batterie plomb en dessous des 12v
digitalWrite(pompe, LOW);
while(tension < 13.40) { //tant que la tensions batterie est inferieure à 13.4v, la pompe est éteinte
delay(600000); // attends 10 minutes
valeur = analogRead(A0);
tension = ((valeur*5)/1023)*3;
}
digitalWrite(pompe, HIGH); //on allume la pompe
}
}
Effectivement j'avais vu le 0.33µF sur la datasheet, mais le problème est que je n'ai pas de condensateurs à ces valeurs (que ce soit en neuf ou de récupération). Je peux mettre des valeurs les plus proches possibles ou je dois me conformer à la datasheet ?