démarrage et états des sorties

Bonjour,

J'ai un petit problème avec un arduino uno (marque funduino) : j'ai juste un petit circuit qui contrôle un relais. Mon problème se situe au démarrage de l'arduino pendant qu'il boote : pendant les 2-3 s de boot, la sortie qui contrôle mon relais (via un ULN2803 et un 74HCT138, une seule sortie est utilisée, c'est un proto) change d'état faisant commuter mon relais plusieurs fois. La LED orange L clignote en même temps.
J'ai débranché mon circuit pour vérifier que ça ne venait pas de lui mais ça n'a pas l'air : la led L clignote de la même manière. Je n'ai pas d'oscillo pour confirmer mais je ne vois rien d'autre.
Après le boot tout fonctionne correctement, est-ce un comportement normal parce-que je ne trouve rien sur le net qui décrive un tel problème ?

merci

Pendant la phase d'initialisation, les broches sont configurées en entrées. Donc les lignes se trouvent en l'air.
Comment ton relais est-il commandé? il y a peut être moyen de fixer l'état pendant le démarrage avec un pull up ou un pull down.

La sortie de l’arduino va sur une entrée du 74hct138, la sortie décodée du 74hct138 va sur un darlington (à travers un uln2803) qui est relié à une patte de la bobine du relais, l’autre patte étant reliée au 5V.
Du coup j’ai lu 2-3 trucs sur les résistances de pull down, pull up, c’est vraiment dans l’idée de ce que je veux faire, j’ai essayé de mettre une 10k en pull down au niveau de la sortie de l’arduino mais sans succès.

Attention les circuits 74HCTxxxx sont compatibles niveaux TTL
niveau bas entre 0 et 0,8V
Niveau haut > 2V.

Avec un micro à sorties Cmos il est plus simple d'utiliser des circuits 74HCxxxx

Je note pour le HCT !
Visiblement il ne devrait pas y avoir de problème à utiliser ce genre de circuits :
http://www.sonelec-musique.com/electronique_bases_compatibilite_ttl_cmos.html
J'ai fait un petit pont diviseur de tension avec 2 résistances entre l'arduino et le 74HCT138 par acquis de conscience pour avoir environ 2.5 V en entrée du 74HCT138 mais ça ne change rien à mon problème.

J’ai trouvé le problème : j’utilisais le pin 13 et selon la doc http://arduino.cc/en/Tutorial/DigitalPins le pin 13 est plus dur à utiliser en tant qu’entrée, j’ai donc basculé sur le pin 12 même si moi je l’utilise en tant que sortie. Et bien ça règle le problème. Je ne suis pas sur de comprendre pourquoi le pin13 réagit comme ça : étant donné que la led L semble liée et qu’il faut la faire clignoter au boot, du courant passe . Pourtant par défaut les pins sont censées être en entrée donc pas de courant qui sort…

Si quelqu’un possède une explication, merci de la poster.

La pin 13 n'est pas plus dure à utiliser, il y a seulement une chose branchée dessus en permanence.
La chose pouvant être, selon la version de la carte, soit une entrée d'ampli opérationel qui n'aura aucune influence, cet ampli op alimentera la led . Soit dirrectement la led avec sa résistance ce qui pourra provoquer une petite baisse de niveau.
Si c'est sensible à ce point c'est le signe que quelquechose n'est fait comme il le faudrait.

-> les schémas des cartes sont disponibles sur le site arduino.

Le bootloader met la pin 13 en sortie pour faire clignoter la led trois fois (succession de HIGH et LOW sur la pin) avant de passer la main à ton programme (en l'ayant remise en entrée juste avant). Ca ne sert absolument à rien, mais c'est ainsi... tu peux réécrire le bootloader si tu en as le courage pour enveler ce clignotement. de même, la led va clignoter à chaque upload, ce qui fout un peu la zone sur ce qui est connecté derrière...

sur les premières versions de l'arduino, la led était directement sur la broche du µP, ce qui rendait la pin 13 impossible à utiliser en entrée + pull-up, à vide, elle renvoyait toujours 0 au lieu du 1 attendu, d'où l'apparition d'un ampliop pour résoudre ce foirage de conception. Sur mes vieilles UNO, j'ai dessoudé la led pour pouvoir aumoins l'utiliser en entrée...

Oh tiens il me rappelle quelque chose ce topic :slight_smile:

http://forum.arduino.cc/index.php?topic=113147.0

Pour reprogrammer le bootloader il te faut un bête programmateur, regarde sur ebay USBTinyISP ou USBasp (~6 et 3€ respectivement)

arduinoISP marche très bien aussi, faut juste avoir une carte dispo...

Pour le prix je trouve qu'avoir un programmateur c'est quand même pas de l'argent foutu par la fenêtre xD

A chaque fois sortir une autre arduino, la reprogrammer, la rebrancher fil à fil ... Mais bon ça permet de dépanner et de tester si on a pas d'autres options

B@tto:
Pour le prix je trouve qu'avoir un programmateur c'est quand même pas de l'argent foutu par la fenêtre xD

Entièrement d'accord et il n'y a pas de fils à tirer, la nappe est toute prête.

Petite remarque rapide : les 3 clignotements au démarrage ne servent pas "à rien" :wink:
C'est un retour visuel du bon (ou mauvais) fonctionnement du bootloader, ce qui n'est pas négligeable.