Ho bruciato un arduino uno

Avevo finito il mio progetto di gestione di pannelli solari per produzione di acqua calda ( che oggi funzionano con una centralina che non mi soddisfa affatto) è stavo per passare il tutto in esercizio quando mi sono accorto che alimentando a 12 vcc l'arduino senza cavo usb lo sketch non partiva. Ho letto sul forum ed ho ricavato che arduino Uno gestisce automaticamente l'alimentazione ma lo sketch con la sola alimentazione non parte, ho letto qualcosa sul pin Vin ed fatto un grave errore ho ponticellato il vin con il 5 volts bruciando irrimediabilemente l'arduino .... Il risultato che ora non è più visibile la seriale sul Pc insomma è bruciato !!!! :0 Domani ne ordino un'altro mi dite cosa bisogna fare per far partire lo sketch attaccando un semplice alimentatore all'arduino Uno !!

Saluti e grazie Mecarone :blush:

collegando un semplice alimentatore il programma parte..... poi dipende dal programma stesso cosa fare o non fare ;)

In estrema sintesi il programma gestisce tre sensori NTC TERMISTORE 5 K e comanda due motori ed una valvola a tre vie con tre relais (ho utilizzato la scheda di Futura elettronica SHIELD ARDUINO - IN/OUT 7100-FT919K). Ti allego il codice

Ciao

define ana0 0 // Sonda Pannelli

define ana1 1 // Sonda Accumulo Pannelli

define ana2 2 // Sonda Primo serbatoio

define ana3 3 // Sonda Secondo serbatoio

//#define ana4 4 //#define ana5 5

define pwm9 9 // uscita PMW Pompa Solare

define pwm10 10 // Uscita PMW Pompa Scambiatore

define pwm11 11 // Uscita comando Valvola a tre vie

// sempre a On (220) per funzionamento a solare // nel range di temperatura stabilito da 40 a 70 // va a Off oltre i 70 gradi per scaricare il calore // nel radiatore esterno.

define pwm3 3 // led sistema attivo (verde)

define pwm5 5 // led solare acceso (blu)

define pwm6 6 // led allarme scarico radiatore (rosso)

int releon=255; //valore corrente relè on 255 int ledon =30; //valore corrente led on 30 int ledoff =0; //valore corrente led off //int sol_conta=0; //valore !!!!! int sol_diff=20; //Solare Soglia differenza sonda pannelli sonda acc. e per partenza pompa solare int sol_water_max=750; //Solare Soglia temperatura massima serbatoi acqua int Sol_isteresi=3; //Solare Soglia Isteresi per cambiamento temperatura // variabili di lavoro int conta_ist=0; //Contatore Isteresi int conta_sol=0; //calcolo differenza sonda pannelli con sonda accumulo int conta_sc1=0; //calcolo partenza scambiatore pannelli con accumulo int conta_sc2=0; //calcolo partenza scambiatore pannelli con accumulo int snd_pann=0; //lettura sonda pannelli int snd_acc=0; //lettura sonda accumulo int snd_ser1=0; //lettura sonda serbatoio uno int snd_ser2=0; //lettura sonda serbatoio due boolean sol_pompa=false; //Stato pompa solare boolean sc_pompa=false; //Stato pompa scambiatore boolean trevie=false; //Sato valvola a tre vie /*double Thermister(int RawADC) { double Temp; // See http://en.wikipedia.org/wiki/Thermistor for explanation of formula Temp = log(((10240000/RawADC) - 10000)); Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp)); Temp = Temp - 273.15; // Convert Kelvin to Celcius return Temp;

}*/

void setup(){ Serial.begin(9600); }

void loop(){

conta_ist=conta_ist+1; //Contatore Isteresi

/double temp = Thermister(analogRead(0)); // Read sensor Serial.print("Thermister --> "); Serial.println(temp);/

snd_pann=analogRead(ana0); //lettura sonda pannelli snd_acc=analogRead(ana1); //lettura sonda accumulo snd_ser1=analogRead(ana2); //lettura sonda serbatoio uno snd_ser2=analogRead(ana3); //lettura sonda serbatoio due Serial.print("Isteresi --> "); Serial.println(conta_ist); Serial.print("sonda pannelli --> "); Serial.println(snd_pann); Serial.print("sonda accumulo --> "); Serial.println(snd_acc); Serial.print("sonda serb.uno --> "); Serial.println(snd_ser1); Serial.print("sonda serb.due --> "); Serial.println(snd_ser2); if (sol_pompa){ Serial.println("Sol pompa --> vero "); } else { Serial.println("Sol pompa --> falso "); } if (sc_pompa){ Serial.println("Sol scambio --> vero "); } else { Serial.println("Sol scambio --> falso "); } if (trevie){ Serial.println("Sol trevie --> vero "); } else { Serial.println("Sol trevie --> falso "); } Serial.print("Diff. P-a --> "); Serial.println(conta_sol); Serial.print("Diff. A-P --> "); Serial.println(conta_sc1); Serial.println(conta_sc2); Serial.println("------------------------------"); if ( ! sol_pompa && ! sc_pompa && ! trevie ){ analogWrite(pwm3,ledon); //accendiamo le verde analogWrite(pwm5,ledoff); analogWrite(pwm6,ledoff); }

if (conta_ist > Sol_isteresi){ conta_ist=0; //azzeriamo il conta isteresi conta_sol=snd_pann-snd_acc; //Differenza sonda pannelli con sonda accumulo

/* Ciclo accenzione pompa solare / if (conta_sol > 0 && conta_sol > sol_diff) { if ( ! sol_pompa){ analogWrite(pwm9,releon); // accendiamo pompa solare analogWrite(pwm3,ledoff); analogWrite(pwm5,ledon); // accendiamo Led solare (blu) analogWrite(pwm6,ledoff); sol_pompa=true; } } else { if (sol_pompa){ analogWrite(pwm9,0); // spegnamo pompa solare / /analogWrite(pwm3,ledon); //accendiamo le verde analogWrite(pwm5,ledoff); analogWrite(pwm6,ledoff);/ sol_pompa=false; } } / Ciclo accensione scambio con serbatoi */ conta_sc1=snd_acc-snd_ser1; //Differenza sonda pannelli con sonda accumulo conta_sc2=snd_acc-snd_ser2; //Differenza sonda pannelli con sonda accumulo

if (conta_sc1 > 0 && conta_sc1 > sol_diff || conta_sc2 > 0 && conta_sc2 > sol_diff ){ if ( ! sc_pompa){ analogWrite(pwm10,releon); sc_pompa=true; // accendiamo pompa scambiatore analogWrite(pwm6,ledon); // accendiamo Led giallo } } else { if (sc_pompa && ! trevie ){ analogWrite(pwm10,0); sc_pompa=false; // spegnamo pompa scambiatore } } /* Ciclo accenzione limiti di temperatura ed apertura valvola a tre vie scambio con serbatoi */ if (snd_ser1 > sol_water_max || snd_ser2 > sol_water_max){ if ( ! trevie){ trevie=true; sc_pompa=true; analogWrite(pwm11,releon); // accendiamo valvola a tre vie analogWrite(pwm10,releon); // accendiamo pompa scambiatore analogWrite(pwm3,ledoff); analogWrite(pwm5,ledoff); analogWrite(pwm6,ledon); // accendiamo Led allarme rosso } } else { if (trevie){ trevie=false; sc_pompa=false; analogWrite(pwm11,0); // spegnamo valvola a tre vie analogWrite(pwm10,0); // spegnamo pompa scambiatore //analogWrite(pwm6,ledoff); // spegnamo allarme rosso } } }

delay(3000); }

quando alleghi il codice premi il pulsante # diventa molto più leggibile :P comunque non mi pare fatto male di prima occhiata bisogna vedere che collegamenti hai fatto per bruciarlo tutto la ;) ciao ;)

Il codice funzionava perfettamente con l'arduino collegato alla usb quando ho fatto andare arduino con i soli 12 vcc non sono riuscito a far partire lo sketch. Il codice sw è il mio mestiere sono 20 anni che programmo computer "Gradi" da anni volevo cimentarmi con processori di controllo di processo ed arduino è veramente forte (in tre giorni il mio programma è perfetto e la simulazione andava a gonfie vele ) ma ...

Riallego il codice

#define ana0 0 // Sonda Pannelli
#define ana1 1 // Sonda Accumulo Pannelli
#define ana2 2 // Sonda Primo serbatoio
#define ana3 3 // Sonda Secondo serbatoio
//#define ana4 4
//#define ana5 5
#define pwm9 9   // uscita PMW Pompa Solare
#define pwm10 10 // Uscita PMW Pompa Scambiatore
#define pwm11 11 // Uscita comando Valvola a tre vie 
                          // sempre a On (220) per funzionamento a solare 
                          // nel range di temperatura stabilito da 40 a 70
                          // va a Off oltre i 70 gradi per scaricare il calore 
                          // nel radiatore esterno.   
#define pwm3 3            // led sistema attivo (verde)
#define pwm5 5            // led solare acceso  (blu)
#define pwm6 6            // led allarme scarico radiatore (rosso)

int releon=255;              //valore corrente relè on  255
int ledon =30;              //valore corrente led on  30
int ledoff =0;              //valore corrente led  off
//int sol_conta=0;         //valore !!!!!
int sol_diff=20;          //Solare Soglia differenza sonda pannelli sonda acc. e per partenza pompa solare
int sol_water_max=750;    //Solare Soglia temperatura massima serbatoi acqua
int Sol_isteresi=3;      //Solare Soglia Isteresi per cambiamento temperatura
// variabili di lavoro
int conta_ist=0;          //Contatore Isteresi
int conta_sol=0;          //calcolo differenza sonda pannelli con sonda accumulo
int conta_sc1=0;          //calcolo partenza scambiatore pannelli con accumulo
int conta_sc2=0;          //calcolo partenza scambiatore pannelli con accumulo
int snd_pann=0;           //lettura sonda pannelli
int snd_acc=0;            //lettura sonda accumulo
int snd_ser1=0;           //lettura sonda serbatoio uno
int snd_ser2=0;           //lettura sonda serbatoio due
boolean sol_pompa=false;      //Stato pompa solare 
boolean sc_pompa=false;       //Stato pompa scambiatore
boolean trevie=false;         //Sato valvola a tre vie
/*double Thermister(int RawADC) {
  double Temp;
  // See http://en.wikipedia.org/wiki/Thermistor for explanation of formula
  Temp = log(((10240000/RawADC) - 10000));
  Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
  Temp = Temp - 273.15;           // Convert Kelvin to Celcius
  return Temp;
  
}*/


void setup(){
  Serial.begin(9600);
  }
  
void loop(){

  conta_ist=conta_ist+1;             //Contatore Isteresi
  
  /*double temp = Thermister(analogRead(0));  // Read sensor
  Serial.print("Thermister      --> ");
  Serial.println(temp);*/
  
  snd_pann=analogRead(ana0);              //lettura sonda pannelli
  snd_acc=analogRead(ana1);               //lettura sonda accumulo
  snd_ser1=analogRead(ana2);              //lettura sonda serbatoio uno
  snd_ser2=analogRead(ana3);              //lettura sonda serbatoio due
  Serial.print("Isteresi       --> ");
  Serial.println(conta_ist);
  Serial.print("sonda pannelli --> ");
  Serial.println(snd_pann);
  Serial.print("sonda accumulo --> ");
  Serial.println(snd_acc);
  Serial.print("sonda serb.uno --> ");
  Serial.println(snd_ser1);
  Serial.print("sonda serb.due --> ");
  Serial.println(snd_ser2);
  if (sol_pompa){
      Serial.println("Sol pompa    --> vero "); 
     } else {
      Serial.println("Sol pompa    --> falso ");  
     } 
   if (sc_pompa){
      Serial.println("Sol scambio  --> vero "); 
     } else {
      Serial.println("Sol scambio  --> falso ");  
     } 
     if (trevie){
      Serial.println("Sol trevie   --> vero "); 
     } else {
      Serial.println("Sol trevie   --> falso ");  
     } 
    Serial.print("Diff. P-a    --> ");
    Serial.println(conta_sol);
    Serial.print("Diff. A-P    --> ");
    Serial.println(conta_sc1);
    Serial.println(conta_sc2);
  Serial.println("------------------------------");
  if ( ! sol_pompa && ! sc_pompa && ! trevie ){
         analogWrite(pwm3,ledon);           //accendiamo le verde
         analogWrite(pwm5,ledoff);
         analogWrite(pwm6,ledoff); }

  if (conta_ist >  Sol_isteresi){
    conta_ist=0;                    //azzeriamo il conta isteresi 
    conta_sol=snd_pann-snd_acc;      //Differenza sonda pannelli con sonda accumulo
   
    /* Ciclo accenzione pompa solare  */
    if (conta_sol > 0 && conta_sol > sol_diff)
    {
       if ( ! sol_pompa){
          analogWrite(pwm9,releon);     // accendiamo pompa solare
          analogWrite(pwm3,ledoff);      
          analogWrite(pwm5,ledon);     // accendiamo Led solare (blu)
          analogWrite(pwm6,ledoff);
          sol_pompa=true; }
    }     
    else
    {
        if (sol_pompa){
           analogWrite(pwm9,0);          // spegnamo pompa solare
           /* /analogWrite(pwm3,ledon);           //accendiamo le verde
           analogWrite(pwm5,ledoff);       
           analogWrite(pwm6,ledoff);*/
           sol_pompa=false; }
    }   
  /* Ciclo accensione scambio con serbatoi */
  conta_sc1=snd_acc-snd_ser1;  //Differenza sonda pannelli con sonda accumulo
  conta_sc2=snd_acc-snd_ser2;  //Differenza sonda pannelli con sonda accumulo

  if (conta_sc1 > 0 && conta_sc1 > sol_diff || conta_sc2 > 0 && conta_sc2 > sol_diff ){
       if ( ! sc_pompa){
          analogWrite(pwm10,releon);  
          sc_pompa=true;          // accendiamo pompa scambiatore
          analogWrite(pwm6,ledon);     // accendiamo Led giallo 
         }
       } else {
         if (sc_pompa && ! trevie ){
           analogWrite(pwm10,0);
           sc_pompa=false;             // spegnamo pompa scambiatore
           } 
       } 
  /* Ciclo accenzione limiti di temperatura ed apertura valvola a tre vie
     scambio con serbatoi */
    if (snd_ser1 > sol_water_max || snd_ser2 > sol_water_max){
       if ( ! trevie){
          trevie=true;
          sc_pompa=true;   
          analogWrite(pwm11,releon);     // accendiamo valvola a tre vie
          analogWrite(pwm10,releon);     // accendiamo  pompa scambiatore
          analogWrite(pwm3,ledoff);      
          analogWrite(pwm5,ledoff);     
          analogWrite(pwm6,ledon);      // accendiamo Led allarme rosso
         }  
   }   
    else {
        if (trevie){
           trevie=false;
           sc_pompa=false;  
           analogWrite(pwm11,0);            // spegnamo  valvola a tre vie
           analogWrite(pwm10,0);            // spegnamo  pompa scambiatore
           //analogWrite(pwm6,ledoff);         // spegnamo allarme rosso
          } 
      }  
   } 


delay(3000);
}

Ti assicuro che normalmente lo sketch parte noon appena dai corrente. Se hai ponticellato Vin con +5 non so se potevi bruciare arduino, ma forse qualche altro componente? Dovrei andare a vedere lo schema elettrico.. F

Se ponticelli Vin con 5V dai praticamente 12V ai controller che reggono al massimo 5,5V e percui li hai bruciati. L' operazionale dovrebbe essere sopravvisuto. Col prossimo Arduino UNO se colleghi i 12V e non funziona controlla che sul connettore il positivo sia all'interno e che sul pin 5V ci siano 5V. Ciao Uwe