Pour vous faire un rapide résumé : J'ai remédié à la défaillance de la carte électronique qui gère les butées "fin de rotation" du moteur de gâche rotative (porte latérale droite) de mon Transporter VW.
Mais j'aimerai fiabiliser et optimiser le montage de l'Arduino Pro Mini en place.
Actuellement, l'alim. est faite grâce à une batterie LiPo 4S et un module régulateur de tension de 16V vers 5V.
Pour éviter de charger la LiPo 4S toutes les semaines (!), j'aimerai alimenter le module 5V par l'alim. du moteur de gâche.
Problème, le sens du courant est inversé à chaque changement de sens de rotation de la gâche.
Je pense donc souder en amont du module 5V, un pont de diodes du genre : B80C1000
ou bien GBU1006
Je présume que la gâche n'est alimentée que lorsqu'elle est commandée, dans un sens ou dans l'autre, avec du +12V ou du -12V.
Pour ce qui est de transformer cette tension + ou - en tension positive de l'ordre de 10V (et des poussiéres, chute de tension dans les diodes), avec un des 2 ponts de diodes, c'est OK.
Est-ce que le temps de démarrage de l'Arduino avant de démarrer la loop sera assez rapide pour tes besoins, là est la question je crois?
La gâche est alimentée par du +- 12V (presque 14V si l'alternateur tourne)
J'ai en effet tenu compte du temps de démarrage de la loop. J'ai choisi de passer le relais alimentant la gâche, en mode NC. Avantage : si le montage crame, la gâche reste fonctionnelle bien que les butées deviennent mécanique au lieu d’électriques.
J'irai au magasin d'électronique cet a-m et je ferai un nouveau post avec le schéma quasi-définitif.
Dans le code ci-dessous, j'ai rajouter un buzzer pour entendre le fonctionnement du relais :
// Définition des broches pour le bouton et le relais
const int brocheBouton = 3; // Broche du bouton
const int brocheRelais = 2; // Broche du relais
const int brocheBuzzer = 11; // Broche du buzzer
// Variable pour stocker le nouvel état du bouton
int etatBoutonNew;
// Variable pour stocker l'état du bouton
int etatBouton = HIGH;
// Variable pour stocker l'état actuel du relais
int etatRelais = LOW;
void setup() {
// Définition des broches en entrée ou en sortie
pinMode(brocheBouton, INPUT_PULLUP);
pinMode(brocheRelais, OUTPUT);
pinMode(brocheBuzzer, OUTPUT);
}
void loop() {
// Lecture de l'état du bouton
etatBoutonNew = digitalRead(brocheBouton);
// Si l'état actuel du bouton est différent de l'état précédent
if (etatBoutonNew != etatBouton) {
// Attente d'un court délai pour éviter les rebonds
delay(40);
// Lecture de l'état du bouton à nouveau
etatBoutonNew = digitalRead(brocheBouton);
// Si l'état du bouton a changé
if (etatBoutonNew != etatBouton) {
// Mettre à jour l'état précédent du bouton
etatBouton = etatBoutonNew;
// Si le bouton est relâché
if (etatBoutonNew == HIGH) {
// Inverser l'état du relais
etatRelais = !etatRelais;
// Mettre à jour la sortie du relais
digitalWrite(brocheRelais, etatRelais);
// Buzzer en marche
tone(brocheBuzzer, 500);
delay(4000);
noTone(brocheBuzzer);
// Inverser l'état du relais
etatRelais = !etatRelais;
// Mettre à jour la sortie du relais
digitalWrite(brocheRelais, etatRelais);
}
}
}
}
Sur le principe, il n'y a certainement pas de problème.
j'ai fait l'essai avec ton programme, quelques conditions sont différentes des tiennes mais ne devraient pas influencer le test:
Un pont de Graetz.
Une alimentation 9V,
L'Arduino alimenté par la broche Vin.
Le pont alimenté +- ou -+ 9V., ton programme fonctionne sans problème.
Question, il n'y a pas de fin de course, c'est uniquement basé sur la durée de l'ouverture ou fermeture de 4 secondes?
C'est le bouton poussoir qui symbolise le micro-contact de fin de course :
En butée, le contact est relâché : le circuit des fins de course est ouvert => etatBouton == HIGH
En rotation, une came appui sur le contact : le circuit des fins de course est fermé => etatBoutonNew == LOW
En fin de rotation, la came relâche le contact : le circuit des fins de course est ouvert =>
// Si le bouton est relâché
if (etatBoutonNew == HIGH) {
// Inverser l'état du relais
etatRelais = !etatRelais;
// Mettre à jour la sortie du relais
digitalWrite(brocheRelais, etatRelais);
Les 4 secondes correspondent à une temporisation afin que la carte du système détecte bien une résistance infinie et coupe l'alimentation du moteur. D'ailleurs, cette durée ne devrait jamais être atteinte puisque l'Arduino ne sera plus alimenté par une batterie externe.
Bonjour lionux-fr
Merci pour ces précisions, je comprends mieux
Je pense que tu peux, sans autre, essayer avec un pont de Graetz.
Par contre, pour ce qui est de la résistance de PULLUP (pinMode(brocheBouton, INPUT_PULLUP);) de la broche brocheBouton, je la dédoublerai par une résistance externe de 4,7k environ (ce n'est pas critique), en effet, cette résistance interne de l'Arduino est assez haute , quelques dizaines de kilos, et l'environnement, dans une voiture est assez perturbé, spécialement avec les moteurs électriques et autres selénoïdes.
Voila celui que tu aqs sous la mains c'est un classique en boleun, et la sortie de l'ampli tu commande un mofset, mieux si t'es un bourgeois tu mes un IGBT !
(je te laisse completer les passifs qui servent de filtre et sécu !
Par contre, pour ce qui est de la résistance de PULLUP (pinMode(brocheBouton, INPUT_PULLUP);) de la broche brocheBouton, je la dédoublerai par une résistance externe
J'ai oublié de te dire, concernant ton programme, dans setup(), tu devrai faire tomber le relais, je ne sais pas s'il faut HIGH ou LOW, j'ai pour habitude d'attribuer une variable pour ça:
const int brocheRelaisOn = HIGH; // Etat pour relais tiré
et dans setup()
digitalWrite(brocheRelais, !brocheRelaisOn); // Faire tomber le relais
Attention!!
Cet ensemble, pont de Graetz, Arduino et relais, est un bloc "à part", d'où la remarque pertinente de @jef59:
En fait, le GND1 du bus VW n'en est pas un : c'est un peu comme un courant alternatif.
A part le pont de Graetz et le moteur de gâche via le relais, je ne peux rien brancher dessus car le courant change de sens selon qu'on veuille ouvrir ou fermer la porte latérale.
J'ai refait le schéma mais le relais est différent du mien (hw-482) qui sera alimenté par le +5V de l'abaisseur de tension :
Merci @philippe-007 pour l'info.
Mais si le pont B80C1000 que je vais acheter à 0.60 € chez le revendeur du coin fonctionne, je ne pense pas chercher plus.