Show Posts
Pages: 1 ... 11 12 [13] 14 15 ... 19
181  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: November 03, 2012, 02:32:24 am
Merci de ces suggestions smiley

Par contre, je ne sais pas à partir de quel niveau vous considérez ça comme "courants forts"... en l'occurence là qui passe par les relais, il y a l'alimentation de l'électrovanne de carburant, grand maxi 500mA, et l'alimentation du solénoïde du démarreur, environ 5A à vue de nez, à vrai dire je ne l'ai pas mesuré. C'est sans doute moins que ça.
 Et dans certains cas il y aura un solénoïde de décompression (2A), et une bougie de préchauffage, là on sera plus proche des 15 ou 20A, mais 100% résistif, ce qui du coup ne devrait pas poser problème, non ?

Je pense que je vais aussi rajouter une diode de roue libre aux bornes du solénoïde du démarreur, ça ne pourra pas faire de mal.

Je m'étais même posé la question de commander tout ça directement via les IRF740 (ou IRF3205, bien plus costauds, j'en ai un stock aussi), sans utiliser de relais, mais alors je serai obligé de leur adjoindre des radiateurs, et comme je n'en avais pas, mais que j'avais un stock de relais...
D'après vous, la commande direct via les MOS, ça serait une mauvaise idée ?

182  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: November 02, 2012, 01:55:08 pm
Voila le schéma.

Il manque la borne "C" (pour relier l'alternateur de charge batterie) sur le schéma de la carte, car je l'ai oubliée... en fait du coup je me suis branché sur la borne d'alim du relais de commande du décompresseur, vu que ce relais n'est pas monté sur la carte.
183  International / Français / Re: Ajouter une temporisation avec la fonction millis sans delay on: November 02, 2012, 04:36:02 am
tu utilise encore le 023 ? peut-être qu'il serait temps de passer à plus récent, car la majorité des exemples et des librairies que tu trouvera ne compileront plus là dessus...
184  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: November 02, 2012, 04:34:01 am
Ben alims séparées, à part de ne pas mettre le relais de commande du démarreur sur la carte, je ne vois pas ce que je peux faire de plus ?
Pour le point de masse, c'est le moins batterie, repéré -batt sur la carte, qui donne sur un plan de masse. Est-ce que cette disposition n'est pas bonne ?
185  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: October 31, 2012, 09:10:43 am
Oui, exactement. Si le moteur tourne, l'alternateur débite.

À partir du moment ou je ne détecte plus la tension, c'est que soit le moteur a calé, soit il tourne à trop bas régime car l'alimentation en carburant est défectueuse, soit l'alternateur a cramé.

soit il tourne à trop bas régime parce qu'il est entrain de démarrer ? ou l'opto-coupleur n'a pas encore commuté

j'aurais tendance de mettre une petite tempo sur un problème de ce genre...

Non, car pour passer à l'état suivant et couper le démarreur, c'est que la détection de tension a déjà été faite.

Et oui il y a la tempo, de toutes manières. Je l'ai justement rajoutée quand j'ai constaté le soucis, sans succès.

186  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: October 31, 2012, 08:59:54 am
Oui, exactement. Si le moteur tourne, l'alternateur débite. L'accouplement est direct, il n'y a pas de courroie ou de flector.

À partir du moment ou je ne détecte plus la tension, c'est que soit le moteur a calé, soit il tourne à trop bas régime car la panne sèche arrive, soit l'alternateur a cramé.

Dans les trois cas il convient de couper l'alimentation du moteur et de passer en erreur.

Sinon ma conception, c'était fait en une semaine je ne considère pas vraiment ça comme abouti smiley-razz
187  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: October 31, 2012, 04:34:21 am
Ben je ne vois pas en quoi cela poserait problème ? A partir d'un certain régime, la tension produite est suffisante pour activer l'optocoupleur, à partir de ce régime il n'y a plus de risque d'arret du moteur si le démarreur ne tourne plus, donc je coupe le démarreur.
En fait l'alternateur produit quasiment immédiatement du 230V mais c'est la fréquence qui augmente avec le régime moteur.
Le fait est que ça fonctionne parfaitement en mode "manuel" (démarrage depuis l'entré e_local) alors que ça ne foire que dans le cas du démarrage depuis l'entrée e_ext.

La seule différence entre ces deux entrées dans le code, c'est que l'entrée locale active un flag puis n'est plus lue, alors que l'entrée ext est lue tout le temps et que si elle tombe cela coupe le moteur. Mais dans ce cas ça ne devrait pas faire remonter un défaut de "calage moteur", ça devrait juste le couper puis redémarrer.

Du coup je me suis dit il y a peut-être une perturbation de l'entrée e_run qui me fait détecter un calage, alors j'ai rajouté une tempo sur cette détection de calage, ce qui n'a rien changé.

Je crois que tu n'avais pas la dernière version du code, je la joins à ce post. Attention, elle est passablement en vrac, c'est fruit de modifications dans tous les sens en désespoir de cause à des heures inavouables...

Sur la suggestion de barbudor, suis en train de re-dessiner une nouvelle carte en utilisant directement un atmega328 en boitier DIL, comme ça déjà je vais éliminer les soucis d'alimentation liés aux deux régulateurs en cascade, et le soucis de liaison série qui se perds, vu que j'utilisera alors un convertisseur USB/TTL externe.
Je crois que tant que ça n'est pas fait, il sera difficile de comprendre ce qui se passe, vu que je n'ai de toutes façons plus le matériel sous la main pour faire des essais.

En tout cas, merci de t'interresser à mon problème smiley
188  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: October 31, 2012, 03:26:44 am
non. le fonctionnement du moteur et donc le calage est détecté par e_run. Quand le moteur tourne, l'alternateur produit du 220V, et active l'optocoupleur.

e_alim, ça sert à détecter si l'interrupteur général est sur on ou pas, pour couper l'auto-maintien de l'alim.
189  International / Français / Re: réaliser une temporisation on: October 31, 2012, 02:52:18 am
pardon, employé comme ça, ça ne va pas marcher !! il faut pour que ça marche avoir une variable globale temps_courant de type unsigned long, à mettre à jour au début de ta fonction loop, avec la ligne suivante :

Code:
unsigned long temps_courant; //variable globale, à déclarer en haut de ton fichier

loop() {
temps_courant = millis(); //mise à jour de la valeur à chaque passage dans loop()

etc;
etc;
etc;
etc;
}

il aurait été possible d'utiliser millis() directement dans la fonction tempoMS, mais j'ai procédé de la sorte car dans mon programme j'utilise plusieurs fois la fonction, à des endroits différents, et il me fallait avoir à chaque passage dans la boucle la même origine des tempos.

Cela dit, cette fonction est extrêmement basique, sans doute ferait-tu meilleur usage de la librairie de Barbudor.
190  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: October 30, 2012, 04:59:35 pm
Et voila le schéma avec cette fois les modifs faites en live en pleine nuit. Je me rends compte en le dessinant à tête reposée que les capas de découplage ne sont pas forcément aux endroits les plus critiques, il en manque sur les entrées par exemple. Mais bon, en pleine nuit après 2 nuits blanches...

191  International / Réalisations et Projets Finis / Re: Commande automatique de groupe électrogène - machine à états et autres questions on: October 30, 2012, 04:57:15 pm
Je reposte ici le résumé de la situation que je viens d faire dans l'autre topic :

Bon alors il faut expliquer un peu à quoi sert tout ça : le but est d'avoir un fonctionnement automatique de groupe électrogène diesel. L'arduino doit donc sur demande externe (contact sec) faire démarrer le moteur, puis surveiller qu'il n'y a pas de défaut (calage, non démarrage, perte de pression d'huile) et réagir en conséquence.

Au départ, j'avais un reboot de l'arduino dès l'activation de démarreur Il s'est avéré que c'était dû à une grosse chute de tension de la batterie, ça s'est donc résolu par l'ajout d'une grosse capa (10 000µ) et d'une diode sur l'alim de la carte.
Ensuite, j'ai eu des détections farfelues au niveau des entrées, j'ai donc rajouté des capas de découplage un peu partout pour essayer de virer les pulses qui, je suppose, se baladent inopportunément, venant soit du démarreur, soit de l'alternateur de charge. Cela a semblé résoudre le problème, mais pas dans tous les cas.

Et c'est précisément le cas qui foire qui devrait être le mode le plus utilisé du système : la commande de démarrage externe.
Avec la commande locale, ça fonctionne (presque) à chaque fois.
Avec la commande externe, ça merde à chaque fois : le moteur démarre, puis l'arduino le coupe et signale "défaut calage" comme si le moteur avait calé de lui même. Comme le programme fonctionne quand je teste la carte sur le bureau avec des poussoirs pour simuler les capteurs, je suppose que le soucis vient du matériel et non du soft, mais je ne peux en être sur, pour une raison très claire :  quand la prise USB est raccordée sur la carte, d'une part, ça fonctionne (ce qui tendrait à suspecter un soucis sur l'alim, mais pourtant sa surveillance à l'oscillo ne laisse rien paraitre de suspect), et d'autre part : au moment ou sans l'USB, ça déconne, la liaison USB se réinitialise, et donc le temps de relancer la console sur le nouveau port, j'ai perdu le log qui me serait utile.

C'est ce décrochage de l'USB qui me fait dire "perturbations EM", mais sans doute suis-je à coté de la plaque.

J'ai du coup essayé d'utiliser le FTDI d'une autre nano grillée dont j'ai supprimé l'atmega comme convertisseur USB/TTL, que j'ai raccordé sur les pins TX, RX, et GND de la nano en place. Et bien rien, ça ne communique pas. http://arduino.cc/forum/index.php/topic,129661.0.html

192  International / Français / Re: réaliser une temporisation on: October 30, 2012, 03:52:07 pm
Par exemple dans ton cas, en utilisant ma fonction, tu aurais un truc dans le genre :

Code:
static boolean flag=0,flag2=0;
static unsigned long T1=valeur_init,T2=valeur_init2;


//ici dans ton code tu modifie T1 ou T2 si besoin.


if (condition)
  flag = true;

if (flag)
{
  if (tempoMS(T1,O) { flag2=true;
      digitalWrite(ta_sortie, true); }
 
  if (flag2)
    if (tempoMS(T2,0) { flag = flag2 = false;
digitalWrite(ta_sortie, false); }
}

ce code est à mettre dans une fonction qui sera appelée depuis la fonction loop(), ou directement dans loop(), selon ton programme.
Comme il n'est pas bloquant, tu peux continuer à faire autrechose (par exemple lire T1 et T2 depuis ton interface graphique) à chaque passage dans loop(), à condition que cet autrechose ne soit pas bloquant non plus, sinon les temps T1 et T2 ne seront pas respectés.
193  International / Français / Re: réaliser une temporisation on: October 30, 2012, 03:42:27 pm
Bon, bah finalement, je la donne, elle est très simple, ça peut peut-être servir quand même :

Code:
byte tempoMS(unsigned long duree) {
  //comme son nom l'indique... fournit une temporisation en ms
 
  //le premier appel avec "duree" lance la tempo, retourne false
  //ensuite retourne false si "duree" (en ms) n'est pas écoulée, puis true lors de son
  //premier appel après écoulement de la durée "duree"
  //l'appel suivant relance la tempo.
 
  //un appel avec "duree" à 0 termine la tempo et retourne true.


  //TODO idée pour simplifier : virer le reset auto quand le temps est écoulé,
  //uniquement reset manuel -> permet des appels avec temps différents depuis le même état de la machine
 
  static unsigned long temps_debut = 0;
  static boolean tempo = false;
   
  if (!duree) { tempo = false;
return true; }
     
  if (!tempo) { tempo = true;
temps_debut = temps_courant;
return false; }
  else
    if (temps_courant > (temps_debut + duree)) {
      tempo = false; //remet à 0 le flag tempo si durée écoulée pour permettre le lancement suivant
      return true;
    }
    else return false;
}
194  International / Français / Re: réaliser une temporisation on: October 30, 2012, 03:24:32 pm
haaaa ben voila une lib qui m'aurait simplifié la vie si je l'avais vue avant le début de mon projet de groupe automatique smiley-razz
J'étais venu voir ce sujet en me disant que j'allais proposer ma fonction de tempo non bloquante, mais finalement...
195  International / Français / Re: Capas de découplage ? on: October 30, 2012, 03:14:30 pm
Bon alors il faut expliquer un peu à quoi sert tout ça : le but est d'avoir un fonctionnement automatique de groupe électrogène diesel. L'arduino doit donc sur demande externe (contact sec) faire démarrer le moteur, puis surveiller qu'il n'y a pas de défaut (calage, non démarrage, perte de pression d'huile) et réagir en conséquence.

Au départ, j'avais un reboot de l'arduino dès l'activation de démarreur Il s'est avéré que c'était dû à une grosse chute de tension de la batterie, ça s'est donc résolu par l'ajout d'une grosse capa (10 000µ) et d'une diode sur l'alim de la carte.
Ensuite, j'ai eu des détections farfelues au niveau des entrées, j'ai donc rajouté des capas de découplage un peu partout pour essayer de virer les pulses qui, je suppose, se baladent inopportunément, venant soit du démarreur, soit de l'alternateur de charge. Cela a semblé résoudre le problème, mais pas dans tous les cas.

Et c'est précisément le cas qui foire qui devrait être le mode le plus utilisé du système : la commande de démarrage externe.
Avec la commande locale, ça fonctionne (presque) à chaque fois.
Avec la commande externe, ça merde à chaque fois : le moteur démarre, puis l'arduino le coupe et signale "défaut calage" comme si le moteur avait calé de lui même. Comme le programme fonctionne quand je teste la carte sur le bureau avec des poussoirs pour simuler les capteurs, je suppose que le soucis vient du matériel et non du soft, mais je ne peux en être sur, pour une raison très claire :  quand la prise USB est raccordée sur la carte, d'une part, ça fonctionne (ce qui tendrait à suspecter un soucis sur l'alim, mais pourtant sa surveillance à l'oscillo ne laisse rien paraitre de suspect), et d'autre part : au moment ou sans l'USB, ça déconne, la liaison USB se réinitialise, et donc le temps de relancer la console sur le nouveau port, j'ai perdu le log qui me serait utile.

C'est ce décrochage de l'USB qui me fait dire "perturbations EM", mais sans doute suis-je à coté de la plaque.

J'ai du coup essayé d'utiliser le FTDI d'une autre nano grillée dont j'ai supprimé l'atmega comme convertisseur USB/TTL, que j'ai raccordé sur les pins TX, RX, et GND de la nano en place. Et bien rien, ça ne communique pas. http://arduino.cc/forum/index.php/topic,129661.0.html

En fait je crois que ce sujet fait doublon, vu que je me retrouve à expliquer deux fois la même chose.
Je n'aurais pas du le créer, il serait sans doute plus clair pour tout le monde de continuer la discussion sur le post d'origine : http://arduino.cc/forum/index.php/topic,125887.0.html
Pages: 1 ... 11 12 [13] 14 15 ... 19