Problema di alimentazione su Arduino Micro

Salve a tutti, mi sono costruito un sensore che misura la quantità di pellet presenti nel serbatoio della stufa eme lo indica con un LED RGB. ho utilizzato un Arduino Micro, due led infrarossi uno come emettitore e l'altro come ricevitore posizionati sul coperchio del serbatoio e un semplice LED SMD RGB che a seconda della quantità di pellet va dal verde al giallo al rosso al rosso lampeggiante; fino a qui nessun problema. Tutti i test e le prove le ho fatte con l'Arduino micro collegato via USB al pc e andava tutto perfettamente. Quando poi ho finito e gli ho collegato un alimentatore Micro-USB non ne vuol sapere di funzionare, mi da sempre il segnale rosso lampeggiante. ho provato diversi alimentatori di vario amperaggio (anche 3A) ma niente, l'unica maniera in cui funziona è o tramite pc o tramite un caricabatterie energizer (che ha all'interno 4 AA da 2700 Mah) che fa da accumulatore di emergenza per smartphone. Come posso risolvere?

grazie mille

posta lo schema e lo sketch. Ciao Uwe

Ecco qui il codice:

//Sensore carico pellet stufa
//2013
//by Andrea Ornella

int irEmitter = 12;            // polo positivo emettitore
int irReceiverN = 11;          // polo negativo ricevitore
int irReceiverP = 10;          // polo positivo ricevitore
long distance = 0;             
int interval = 0;              
int grn = A1;                  // colore verde LED
int blu = A2;                  // colore blu LED
int red = A3;                  // colore rosso LED
 
void setup() 
{
  pinMode(irEmitter, OUTPUT);      // il led emettitore è un output
  pinMode(irReceiverP, OUTPUT);    // il polo positivo del led ricevitore è un output
  pinMode(grn, OUTPUT);            // il polo positivo del verde è un output
  pinMode(blu, OUTPUT);            // il polo positivo del blu è un output
  pinMode(red, OUTPUT);            // il polo positivo del rosso è un output
  digitalWrite(irReceiverP, LOW);  // deve essere LOW
  Serial.begin(9600);              // inizializzo la seriale
}
 
 // calcolo la distanza
void focus(int focusPoint){
 interval = focusPoint; 
 distance = readLight(true) - readLight(false);
 if(distance < 0) distance = 0;
 Serial.println(distance);          // scrivo la distanza sulla seriale
} 

 
double readLight(boolean lightOn){
 digitalWrite(irEmitter, lightOn ? HIGH : LOW);
 pinMode(irReceiverN, OUTPUT);
 digitalWrite(irReceiverN, HIGH); // carico ricevitore di induttanza
 long reading = 0;
 pinMode(irReceiverN, INPUT);
 digitalWrite(irReceiverN, LOW);
 long lightTime = millis();
 while((millis() - lightTime) < interval)
  if(digitalRead(irReceiverN) == 0)
   reading++;
  
 return reading;
}
// accendo i LED a seconda della distanza
void loop(){
focus(500);
if(distance > 45000)
  {
  analogWrite(grn, 200);           // accendo il verde
  analogWrite(blu, 0);
  analogWrite(red, 0);
  }
 else if(distance > 45000, distance > 41000)
  {
  analogWrite(grn, 130);           // accendo il verde e il rosso->giallo
  analogWrite(blu, 0);
  analogWrite(red, 190);
  }
 else if(distance < 41000, distance > 31000)
  {
  analogWrite(grn, 0);             // accendo il rosso
  analogWrite(blu, 0);
  analogWrite(red, 190);
  }
 if(distance <31000)
  {
  analogWrite(grn, 0);             // lampeggio il rosso
  analogWrite(blu, 0);
  analogWrite(red, 255);
  delay(500);
  analogWrite(red, 0);
  delay(500);
  }
}

ed ecco lo schema:

Ho fatto ancora delle prove con altri alimentatori ma il risultato è stato sempre lo stesso, mentre collegando una batteria usb con uscita 1A funziona benissimo.

Ah, nel progetto mi sono dimenticato di mettere le resistenze, da 130 Ohm per il rosso e da 70 Ohm per verde e blu.

grazie in anticipo!!!!

Sembra che il problema riguardi l'alimentazione del sensore di distanza, che modello di sensore hai usato?

ma stai usando delle resistenze per limitare le correnti dei LED? Ciao Uwe

...ho collegato un alimentatore Micro-USB...

Collegando un alimentatore (suppongo a 5V) con la presa micro USB "illudi" Arduino che stai usando la connessione USB con il PC.

Forse è questo il problema: prova ad usare l'ingresso Vin per fornire corrente.

cyberhs: Collegando un alimentatore (suppongo a 5V) con la presa micro USB "illudi" Arduino che stai usando la connessione USB con il PC.

Arduino non ha nessuna "percezione" del fatto che è collegato alla USB, non cambia nulla se lo alimenti dal connettore usb o dal +5V, su Vin devi entrare con una tensione maggiore, almeno 6.5V, per via del drop out sul regolatore.

icio: Sembra che il problema riguardi l'alimentazione del sensore di distanza, che modello di sensore hai usato?

Il sensore è fatto semplicemente da due led infrarossi, uno come emettitore, l'altro come ricevitore.

uwefed: ma stai usando delle resistenze per limitare le correnti dei LED? Ciao Uwe

Come ho scritto nel post di ieri sera "da 130 Ohm per il rosso e da 70 Ohm per verde e blu", si le sto usando, semplicemente le avevo dimenticate nel disegno :-)

cyberhs:

...ho collegato un alimentatore Micro-USB...

Collegando un alimentatore (suppongo a 5V) con la presa micro USB "illudi" Arduino che stai usando la connessione USB con il PC.

Forse è questo il problema: prova ad usare l'ingresso Vin per fornire corrente.

Ho provato anche tramite pin V5, ma il problema rimane.... e comunque dovrebbe presentarmelo anche con gli accumulatori collegati via micro USB.

Se continua a darti problemi, suppongo sia un disturbo proveniente dall'alimentatore.

Prova ad inserire un condensatore elettrolitico da 470uF in parallelo ad un condensatore poliestere da 100nF sull'ingresso dell'alimentazione.

Allora, ho provato a inserire i condensatori in ingresso all’alimentazione, ma nulla è cambiato continua a non funzionare correttamente tramite alimentatore.

Oggi penso di aver fatto un passo in avanti per risolvere il problema, volevo verificare i dati creati del sensore di distanza, se effettivamente erano corretti e nei range impostati, così ho collegato il mio progetto via seriale con un Arduino uno per leggere i valori creati; una volta collegato tutto torna a funzionare, cioè se Arduino micro è collegato via seriale all'arduino uno il sensore funziona e i led si accendono correttamente in base alla distanza, se scollego i 2 pin della seriale torna a non funzionare. Allora ho pensato di togliere la scrittura su seriale dello sketch, ma comunque non va, se collego i 2 pin All'Arduino uno e lo accendo torna ad andare. Qualcuno sa illuminarmi dove sbaglio?? grazie