Épouvantail électronique: problème d'alimentation Atmega328P breadboard

Bonjour,
J’ai réalisé un épouvantail électronique: il s’agit d’un servomoteur qui fait tourner (sauf la nuit grâce à une photorésistance) des CD suspendus par des fils. L’efficacité n’a pas été testée car je cherche encore à améliorer la consommation du système qui fonctionne sur pile. C’est surtout un exercice pour programmer, souder et mettre en boîte. Je n’ai pas d’espoir particulier que cela effraie les oiseaux qui dévorent les graines de mes poules… :slight_smile:
J’ai monté ce projet avec une carte Arduino Uno, cela fonctionne correctement ensuite j’ai essayé avec une Atmega328P sur breadboard (en attendant de recevoir une carte Pro Mini), cela fonctionne quand j’alimente le microprocesseur avec une carte FDTI branché en USB sur l’ordinateur. Par contre, plus rien ne marche lorsque j’ai recours à une alimentation de laboratoire en 5v régulée.
Ci-joint mon code bien que je ne pense pas que cela vienne de la programmation:

# include <Servo.h> // Appel de la librairie Servo
# include <LowPower.h> // Appel librairie pour économiser batterie
# include <avr/sleep.h> // Appel pour pouvoir réduire le clock speed



/* Déclaration des variables position barrière, servo*/

int pos;
int photoresistance=A0;


Servo barriere;




void setup() 
  {
    /*Déclaration des broches entrée ou sortie*/
    //CLKPR=0x80; // va de paire avec la ligne dessous 
    //CLKPR=0x04; // pour passer de 16Mhz à 8Mhz. si on change de fréquence on garde quand même la ligne au dessus
    barriere.attach(9); // Déclaration de la broche du servomoteur
    barriere.write (0); //configuration de la barrière fermée avec 0°
    Serial.begin(9600);
    

     
   
  }

void loop(){
  
  int valeur_photoresistance = analogRead (photoresistance);
 Serial.println(valeur_photoresistance);
 delay (50);
  if (valeur_photoresistance<500
  ) {
    
    
  { 
         for (pos=0; pos<=165; pos++) // ouverture barrière avec un pas de 1°
        {
          barriere.write (pos);
          delay (15);
        }


 LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF);
     
      for (pos=165; pos>=0; pos--) //fermeture barrière avec pas de 1°
        {
         barriere.write (pos);
         delay (15);
         
        }


LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); 
  }
    
    }

}

Une idée de cette bizarrerie?
Merci par avance.

Bonsoir,

Quand vous dites que plus rien ne marche, cela se traduit comment ? Avez-vous un schéma à nous joindre pour mieux comprendre ?

Bonjour,

Tu as bien une résistance de pullup sur le reset?

kamill: Bonjour,

Tu as bien une résistance de pullup sur le reset?

Oui j'ai bien une résistance de 10k ohms sur la pin1 Reset vers le +5v Comme le demande Zlika, je vais vous poster un schéma.

Par contre, plus rien ne marche lorsque j'ai recours à une alimentation de laboratoire en 5v régulée.

Une alim c'est deux fils. Le positif se câble sur le point d'alim Le négatif se câble sur le point de masse --> n'aurait-il pas été oublié ?

Votre alimentation de laboratoire ne limite pas le courant de sortie ? Les servomoteurs peuvent produire des pics de courant qui feront chuter la tension de façon ponctuelle.

Zlika:
Bonsoir,

Quand vous dites que plus rien ne marche, cela se traduit comment ? Avez-vous un schéma à nous joindre pour mieux comprendre ?

Le servomoteur tourne par à-coups, par moment il s’arrête et la led verte que l’on voit sur le plan clignote également de manière sporadique (elle n’est là que pour vérifier le bon téléversement des sketch). Quand elle clignote, le servomoteur tourne légèrement. Normalement, s’il fait sombre, il ne doit rien se passer et s’il fait jour, le servomoteur doit tourner alternativement dans un sens et dans l’autre avec un intervalle sleep de 8 secondes (et la led ne s’allume jamais).
J’ai rééssayé: en reprenant le même câblage (en enlevant l’alimentation régulée) mais en alimentant via une carte FTDI (masse sur masse, TX sur RX, RX sur Tx et +5V sur +5V) tout marche convenablement.

Ci-joint le montage en espérant que ce soit suffisamment clair.

Zlika: Votre alimentation de laboratoire ne limite pas le courant de sortie ? Les servomoteurs peuvent produire des pics de courant qui feront chuter la tension de façon ponctuelle.

Le courant est limitée à 190mA et mon montage en consomme 35mA maxi lors des mesures que j'ai faites en alimentant via le FDTI.

68tjs: Une alim c'est deux fils. Le positif se câble sur le point d'alim Le négatif se câble sur le point de masse --> n'aurait-il pas été oublié ?

Oui le câblage est bon.

Je ne vois aucune capacité de filtrage près de l'atmel (alimentation 100nF) ou sur les lignes d'alimentation de votre montage (100 ou 220microF).

Zlika:
Je ne vois aucune capacité de filtrage près de l’atmel (alimentation 100nF) ou sur les lignes d’alimentation de votre montage (100 ou 220microF).

J’ai récupéré ce montage sur internet. Il n’est donc pas viable?

Les circuits intégrés nécessitent une alimentation la plus 'propre' possible. Un condensateur, de 100 nF film plastique généralement, doit être ajouté le plus proche possible de sa broche d'alimentation (Vcc). Si votre alimentation générale est éloignée, il est préférable d'ajouter un condensateur chimique de 100 microF pour lisser la tension au plus proche du montage.

Tu alimentes au même endroit avec le ftdi et avec l’alimentation ? (Il y peut-être un faux contact dans la breadboard).
Tu as mesuré la tension de l’alimentation ?
Est ce que la valeur lue sur A0 affichée sur le moniteur série diffère dans les 2 cas?

kamill: Tu alimentes au même endroit avec le ftdi et avec l'alimentation ? (Il y peut-être un faux contact dans la breadboard). Tu as mesuré la tension de l'alimentation ? Est ce que la valeur lue sur A0 affichée sur le moniteur série diffère dans les 2 cas?

Oui le FDTI et l'alimentation labo alimentent la breadboard au même endroit. J'ai aussi essayé de changer de position. J'ai mesuré 4,96volts au voltmètre, j'ai donc augmenté l'alimentation labo à 5,06V mais pas de changement. A chaque fois que je me branche en usb avec le FDTI le servo fonctionne correctement 8s dans un sens et 8s dans l'autre. Avec l'alimentation labo, la led clignote et à chaque fois qu'elle s'allume le servo pivote légèrement. Puis après la led peut soit s'éteindre, soit rester allumée mais le servo est inactif. Rien de cohérent. J'ai fais deux vidéos pour l'illustrer mais je ne crois pas que l'on puisse les attacher à ce post.

Le courant est limitée à 190mA et mon montage en consomme 35mA maxi lors des mesures que j’ai faites en alimentant via le FDTI.

35mA pendant la rotation du servo-moteur ?
Est-ce bien sûr ?
L’USB fournit normalement 500mA. Si l’alimentation est limitée à 190, cela peut expliquer le problème.

@+

hbachetti: 35mA pendant la rotation du servo-moteur ? Est-ce bien sûr ? L'USB fournit normalement 500mA. Si l'alimentation est limitée à 190, cela peut expliquer le problème.

@+

J'ai augmenté à 500mA l'alimentation de labo. Rien n'y change... Je vois sur mon alimentation que la consommation varie de 18mA (mode sleep) à des pics de plus de 100mA.

La différence entre l'alimentation par le FDTI et l'alimentation de labo (toutes les deux fournissent 5v) c'est la liaison RX et TX. En quoi cela peut-il jouer?

gaelcom: Oui le FDTI et l'alimentation labo alimentent la breadboard au même endroit.

Bonjour Simple reflexion Photo(s) In situ de ta "manip" ?

attention avec certaines breadboards , les rails d'alim horizontaux peuvent avoir une rupture mediane le probleme ne vient peut etre pas de là , mais c'est assez souvent une "source d'embrouille" si ce n'est pas ou mal pris en compte :grin:

Artouste: Bonjour Simple reflexion Photo(s) In situ de ta "manip" ?

attention avec certaines breadboards , les rails d'alim horizontaux peuvent avoir une rupture mediane le probleme ne vient peut etre pas de là , mais c'est assez souvent une "source d'embrouille" si ce n'est pas ou mal pris en compte :grin:

Bonjour, Merci pour ton commentaire mais je me suis déjà fait avoir. J'ai mis des straps pour palier à cette rupture médiane. Pour les photos regarde mes messages précédents, j'en ai mis en lien.

Je n'ai pas abandonné :grin: et j'ai compris deux choses: 1) lorsque je connecte la breadboard sur l'alimentation de laboratoire, je suis obligé de faire un reset du microprocesseur (par fois, il faut le faire deux fois de manière consécutive) en mettant la Pin RESET à la masse puis en ôtant cette connexion à la masse dans la foulée. 2) le servomoteur ne se mettait pas en marche, la LED clignotait de manière anarchique car je mettais en série à la sortie de l’alimentation de laboratoire mon multimètre pour mesurer la consommation du projet. En enlevant le multimètre et en connectant en direct la breadboard, plus de souci.

Plus de problème, par contre, je ne sais pas comment mesurer la consommation totale du projet. Je ne vois pas où je peux mettre mon multimètre si ce n'est en sortie de l'alimentation générale.

Un multimètre "normalement constitué" amène une chute de tension d'environ 0,2V, attention cela peut dépendre du calibre choisi pour les mA. A ta place la première chose que je ferais c'est de contrôler ton ampèremètre. Il te suffit de faire débiter dans une résistance avec l'ampèremètre en série et de mesurer la tension présente aux bornes de l'ampèremètre avec un voltmètre.

Pour l'obligation du reset je reste dubitatif. Une alimentation de laboratoire a souvent une limitation en courant réglable, c'est très utile pour éviter les con***ries en phase de mise au point. Si une telle limitation existe n'est-elle pas réglée trop bas car dans une mise en route, surtout avec un servomoteur, il y a généralement un appel de courant qui disparait très rapidement. Quand l'alim en tension voit la limitation de courant s'enclencher en général la tension de sortie s'effondre et le micro peut ne pas démarrer correctement, d'où le reset.

Sinon pour mesurer la consommation d'un montage la méthode que j’employais quand j'étais en activité c'est une résistance de faible valeur en série sur l'alim et un voltmètre à ses bornes.

Tu disposes d'une alim réglable donc par de soucis: . Pour faire des mesures précises il faut éliminer la variable échauffement de la résistance. Tu prend 10 résistances de 100 ohms 1/4 de W, si possible à 1% ou 2%, et tu les soudes en parallèle comme cela tu as une résistance de 10 ohms 2,5W qui sera stable thermiquement et précise. Tu ajuste la tension de l'alim pour avoir 5V en entrée du montage, et tu mesure la tension aux bornes de la 10 ohms.

68tjs: Pour l'obligation du reset je reste dubitatif. Une alimentation de laboratoire a souvent une limitation en courant réglable, c'est très utile pour éviter les con***ries en phase de mise au point. Si une telle limitation existe n'est-elle pas réglée trop bas car dans une mise en route, surtout avec un servomoteur, il y a généralement un appel de courant qui disparait très rapidement.

Bonjour, J'ai bien mis le courant limité à 500mA (pour simuler un port USB) donc ça ne vient pas de là.

68tjs: A ta place la première chose que je ferais c'est de contrôler ton ampèremètre. Il te suffit de faire débiter dans une résistance avec l'ampèremètre en série et de mesurer la tension présente aux bornes de l'ampèremètre avec un voltmètre.

J'ai mis mon multimètre en mode voltmètre directement aux bornes de mon alimentation de labo. Résultat 5,01Volts. Il fonctionne parfaitement.

Autre problème >:( : j'ai laissé tourné mon servomoteur alimenté via l'alimentation de labo (sans le multimètre de branché), tout fonctionne correctement et au bout de quelques minutes, tout s'arrête. J'ai fait un reset, le servomoteur est reparti puis de nouveau arrêt au bout de quelques minutes. J'ai ensuite branché mon montage sur l'USB de l'ordinateur: depuis 15mn, tout fonctionne correctement, pas d'arrêt du servo. Je n'y comprends pas grand chose. Je vais faire le test avec 4 piles 1,5Volts pour voir si cela fonctionne ou pas.