Bonjour,
Je rencontre un problème récurrent avec un de mes montages utilisant une Arduino mini (enfin une CCC). Le montage sert à gérer l'arrosage de notre serre. L'arduino est connecté à une RTC (I2c), un LCD I2C, un shield 2 relais et 2 capteurs de niveau.
L'arduino est alimenté en 9V (dc/dc 12V ->9V) et le 5V est produit par un dc/dc 12V->5V.
La sortie 5V de l'arduino n'est pas connectée..
Enfin, la conversion AC/DC est réalisée par une alim à découpage classique 12V/100W ; et cette dernière est à environ 1m du montage.
Le problème : cela fait 3 fois que l'arduino 'arrête de fonctionner': le programme ne fonctionne plus. Un reset (stop alim et start alim) ne permet pas au programme de redémarrer. En fait le programme est corrompu et je dois le reflasher..
C'est assez reproductible (le défaut se produit toutes les 2-3 semaines..) .
J'ai pensé à un problème dont la cause serait l'overflow du compteur de millisecondes mais:
L'overflow a lieu tous les 49 jours approximativement.. Mon problème se répète plus tôt...
J'utilise peu la fonction Delay() et assez systématiquement les "non blocking pauses" car c'est ce dont j'ai besoin pour le programme... Mais j'utilise la bibliothèque Wire (I2C)....
J'ai mis en place un reset auto (software) tous les jours.. Ça n'a rien changé..
Enfin, je ne comprends pas pourquoi l'overflow du compteur des millisecondes corromprait le programme en mémoire flash...
J'ai ensuite pensé à des problèmes de stabilité des différentes tensions ; j'ai mis des 'grosses' capacités et d'autres de découplage par ci par la mais pas d'effet non plus.
Le montage ayant subit l'été, je me suis dit que l'arduino supportait mal les grosses chaleurs... J'ai mis en ventilo mais le problème continue à se produire..
Et enfin, ces derniers temps le problème se produit de plus en plus souvent.. (1 semaine) mais il y a eu un gros orage...
Je suis assez démuni car
j'ai testé le montage pendant des mois avant de l'installer et je n'ai jamais eu ce souci
j'ai une autre montage extérieur qui ne posé aucun pb.. Il est alimenté via une batterie
Est ce que certains d'entre vous auraient déjà rencontré cette situation ?
Si Oui, avez vous quels conseils/astuces pour investiguer et peut-être résoudre mon souci?
J-M-L:
changez le set-up pour faire clignoter une LED 5 fois au boot. Si elle ne clignote pas sur reset c'est qu'il y a un souci matériel quelque part.
si elle clignote et que votre code ne fonctionne pas, c'est que le code qui suit a un pb.
sans voir le code, difficile à dire
Bonsoir
J'ai cela dans la fonction setup juste après l'init des IOs et le code n'arrive pas jusque là. Qd je branche le montage sur le PC, rien n'arrive dans la console (les premières lignes de la fonction setup sont l'init de serial et un print pour indiquer le début de l'exec de la fonction setup...
Le code est malheureusement trop lourd pour être posté intégralement...
V
Est-ce que blink fonctionne si vous le chargez ?
Comment sont branchés les relais ou tout ce qui tire du courant ?
Est-ce que le code va plus Loin si vous débranchez les relais ?
Pouvez vous tester avec une autre carte ?
As-tu vérifié les alimentations?
Une alimentation de 100W faiblement chargée (ce qui est le cas lorsque les relais ne sont pas excités) peut être instable et l'ajout des capas supplémentaires peut même aggraver l'instabilité. Elle peut aussi mal réagir lorsque les relais se coupent (baisse brutale de charge) et générer une surtension.
Ne pas oublier que certaines alimentations exigent une consommation minimale permanente pour fonctionner correctement (voir la spécification de l'alim en question). Un Arduino ne consomme que quelques dizaines de milliampères ce qui peut être trop faible pour garantir la stabilité de la régulation de tension.
fdufnews:
As-tu vérifié les alimentations?
Une alimentation de 100W faiblement chargée (ce qui est le cas lorsque les relais ne sont pas excités) peut être instable et l'ajout des capas supplémentaires peut même aggraver l'instabilité. Elle peut aussi mal réagir lorsque les relais se coupent (baisse brutale de charge) et générer une surtension.
Ne pas oublier que certaines alimentations exigent une consommation minimale permanente pour fonctionner correctement (voir la spécification de l'alim en question). Un Arduino ne consomme que quelques dizaines de milliampères ce qui peut être trop faible pour garantir la stabilité de la régulation de tension.
l'alim est une MeanWell LRS 100-12. D'apres la datasheet, la regulation en charge est validée pour une charge de 0% a 100%.
Donc cette alim n'a pas besoin d'être chargée pour fonctionner correctement...
Ceci dit, comme elle est largement surdimensionnée, je peux la charger a 500mA... J'essaierai ca dans les jours qui viennent...
J-M-L:
Vous les avez grillés ?
Des réponses pour #5 ?
J'avoue ne pas avoir eu le temps de les autopsier correctement.
J'ai prévu de les brancher et de regarder la conso en courant et si le LDO regule toujours... mais je n'ai pas encore eu de faire ces mesures basiques...
J-M-L:
Est-ce que blink fonctionne si vous le chargez ?
Il faut que je demonte le montage de son support et que j'essaie
J-M-L:
Comment sont branchés les relais ou tout ce qui tire du courant ?
Sur un DC/DC 12V -> 5V externe. je n'utilise pas le 5V généré par l'arduino pour alimenter les "périphériques"
J-M-L:
Est-ce que le code va plus Loin si vous débranchez les relais ?
Il faut que je demonte le montage de son support et que je reflashe le programme et que j'essaie mais je doute que le pb vienne de la (cf reponse ci-dessus)
J-M-L:
Pouvez vous tester avec une autre carte ?
je dois en recommander car je n'ai plus de mini
J-M-L:
Mettez le code en PJ
je vois pour créer une archive.. Attention ca risque de piquer les yeux de certains...
C'est içi en bas de l'écran d'édition de message :
Pour ajouter une ou plusiers pièces jointes à un message déjà posté , passer par 'More' , 'pas Quick Edit' pour voir le lien permettant d'atracher quelque chose
Je vois que tu peux utiliser le watchdog.
Est-ce que la configuration qui plante avait le watchdog activé?
Il me semble qu'un problème avait été identifié, il y a quelques années, avec le watchdog lors du boot.
Lorsque l'Arduino se plantait, le watchdog était toujours actif et le temps de démarrage était plus long que la période du watchdog. Du coup l'Arduino enchaînait les reset. Je ne sais pas si c'est toujours vrai avec les bootloader récents.