Problème d'alimentation

Bonjour à tous !

Je rencontres un problème sur mon branchement.

J'utilises une MKR FOX 1200 avec un module bluetooth et un capteur infrarouge.

// ====================================/ LIBRARY UTILITIES \===================================
#include <SigFox.h> // library Sigfox
#include <TH02_dev.h> // library Grove Temperature & humidity
#include "Arduino.h"
#include "Wire.h"
#include <math.h> //library Grove Temperature Sensor
#include <ZSharpIR.h> //library Grove Infrared Proximity Sensor

// ==========================/ GROVE INFRARED PROXIMITY SENSOR - PIN A2 \===================

#define ir A2 // ir: the pin where your sensor is attached
#define model 1080 // model: an int that determines your sensor: 1080 for GP2Y0A21Y
ZSharpIR SharpIR(ir, model);


// ===========================/ GROVE SPDT Relay(30A) - PIN D0 \========================

int relay = 0; // define pin capteur Relay D0

// ========================/ GROVE SERIAL BLUETOOTH - PIN SERIAL \=====================

char state; // return '0' = OFF and '1' = ON by APK bluetooth
boolean onOff = false;


// ====================================/ UTILITIES \=================================

void reboot() {
  NVIC_SystemReset();
  while (1);
}

// ==================================================================================

void setup() {
  Serial.begin(9600); // Start Serial with 9600
  Serial1.begin(9600); // Serial Port TX + RX
  pinMode(relay, OUTPUT); // Initialize relay

}

void loop() {

  bluetooth();
}

// ===================/ INFRARED PROXIMITY - PIN A2 WITH RELAY - PIN D0 AND BLUETOOTH - PIN SERIAL \===================

void bluetooth() {

  int dis = SharpIR.distance();  // this returns the distance to the object you're measuring
  Serial.print("Distance : ");
  Serial.println(dis);

  if (Serial1.available() > 0) // if Serial1 is available, return Serial1.read in state
  {
    state = Serial1.read();
  }

  if(onOff && dis < 400)
  {
    digitalWrite(relay, HIGH);
    
  }else if(dis > 400)
  {
    digitalWrite(relay, LOW);
    
  }else
  {
    digitalWrite(relay, LOW);

  }
  
  switch(state)
  {
    case '1':onOff = true;break;
    case '0':onOff = false;break;
  }

}

J'ai simplifié mon code pour la partie qui bloque.

Alors quand je branche mon arduino au PC tout marche parfaitement, je commandes en bluetooth le relay et le capteur infrarouge fais son travail comme demander.

Hors quand je branches ma carte sur mon Boîtier coupleur de 4 piles AA (LR6) - 5V le capteur infrarouge ne fonctionne plus et mon capteur bluetooth fais un bruit aiguë !

Je regardes au bornes du coupleur la tension fournir, je suis a ~+5V, est ce que c'est cela qui pose un problème ? Meme en USB je dois être à ~3.3V ?

Dans ce cas là, devrais-je me tourner vers le bornier à vis, 3 Vcc pour alimenter ma carte ? Et mettre deux piles AA ?

Il faut savoir aussi que j'ai 3 capteurs de plus de branché sur ma carte.

et sur une autre alim comme les accus de secours pur les téléphones qui sorte du 5v en USB avec une cellule 18650 ? je pense que les masses c'est ok ?
si ça marche sur l'alim du pc le code n'est pas coupable.

Dans ce cas là, devrais-je me tourner vers le bornier à vis, 3 Vcc pour alimenter ma carte ? Et mettre deux piles AA ?

Attention . il faudrait se reporter au schéma ou aux caractéristiques détailéles de la carte MKFox 1200
De mémoire la plage de tension autorisée pour le bornier est assez étroite

Les piles alcalines ont le défaut de présenter un décroissance forte de la tension au cours de leur décharge
On peut avoir 1,6v à l'état neuf , puis décroitre progressivement jusqu'à 1V
ça ressemble en général à ça :

source : http://www.f-legrand.fr/scidoc/docimg/sciphys/arduinoyun/pile/pile.html

Autre facteur de variation : leur résistance interne qui impacte la tension relle selon le courant débité.

Sans exclure totalement l'utilisation de piles alcalines avec nos montages il faut s'assurer que leurs courbes de décharge conviennent au montage alimenté. C'e n'est pas souvent le cas.

pomme-poire:
et sur une autre alim comme les accus de secours pur les téléphones qui sorte du 5v en USB avec une cellule 18650 ? je pense que les masses c'est ok ?
si ça marche sur l'alim du pc le code n'est pas coupable.

J'en ai pas sous la main :confused:

al1fch:
Sans exclure totalement l'utilisation de piles alcalines avec nos montages il faut s'assurer que leurs courbes de décharge conviennent au montage alimenté. C'e n'est pas souvent le cas.

Il est conseillé d'utiliser des piles/batteries en lithium ?

Mon problème que l'infrarouge ne fonctionne plus lorsque je branches ma carte au coupleur est donc du aux piles et de la tension qui varie trop par rapport à ce que la carte demande ?

Je vous mets quand même mon infrarouge et bluetooth : Grove - Serial Bluetooth v3.0 | Seeed Studio Wiki Grove - 80cm Infrared Proximity Sensor | Seeed Studio Wiki

EDIT: Surtout quelques choses que je ne comprends pas. Pourquoi en USB sur le PC ça fonctionne et si je mets sur mon coupleur avec piles neuves l'infrarouge ne marche plus mais le reste oui ...

Mon code entier :

https://codeshare.io/aVq3Zz

Commence par faire des mesures :

  • tension d'alimentation sur le module IR
  • tension de sortie du module

Ce montage est-il alimenté en permanence 24H / 24 ?
Car alimenter un capteur IR qui consomme 33mA sous 5V avec 4 piles AA est une piètre solution, à moins de vouloir absolument changer les piles tous les 3 jours.

hbachetti:
Ce montage est-il alimenté en permanence 24H / 24 ?

Le montage sera alimenté en permanence.

hbachetti:
Car alimenter un capteur IR qui consomme 33mA sous 5V avec 4 piles AA est une piètre solution, à moins de vouloir absolument changer les piles tous les 3 jours.

Quand j'utilises le code de chez Grove : J'obtiens des valeurs entre ~7 et ~10.( branché en USB )

Effectivement, mais je peux améliorer mon code pour dire au capteur de s'allumer quand j'ai l'information que la machine est sur On et l'éteindre quand celle-ci est sur OFF.

Il faut savoir que ce montage est un simple POC pour faire des démonstration :slight_smile:

Quand j'utilises le code de chez Grove : J'obtiens des valeurs entre ~7 et ~10.( branché en USB )

Ce n'est pas ce que je demande.
Je parle de la tension relevée à l'aide d'un multimètre sur la sortie analogique du module.

Quand celui-ci est branché en USB ou sur le coupleur de piles ?

MaxenceO:
Quand celui-ci est branché en USB ou sur le coupleur de piles ?

les deux , et tu aura peut être trouvé !

Mon problème venais de mon coupleur à piles, j'ai essayé avec un autre (même modèle) tout fonctionne :slight_smile:

en même temps, tout le monde en était persuadé. d’où l'idée de te faire mesurer ou te faire essayer une autre alim pour le cas ou tu serais démuni de multimètre. Pour l'avenir, je pense que tu t'en souviendra. tu vas gagner bcp de temps.