Acune domande a seguito workshop Trento.

leo72:

simone_G:
Arduino uno

Originale? Mai cambiato il chip?

Come ha chiesto Paolo, posta anche lo sketch che stai usando.

Non So se Ho quello originale, di sicuro è stato acquistato nello store arduino.

Da quel che vedo è Arduino UNO revisione 3, per lo sketch intendi il codice?

in tal caso è quello tra i più semplici:

void setup(){

pinMode(13, OUTPUT);

}

void loop(){

digitalWrite(13, HIGH);
delay(500)
digitalWrite(13, LOW);
delay(1000)
}

Lo carico, funziona, poi se stacco il cavo USB per 10 secondi e lo riattacco, si accende ma non esegue più il programma.

superlol:
I 10000 cicli di scrittura sono pessimistici (così riporta il datasheet) ovvero un numero garantito.

I mosfet sono transistor di Potenza in corrente continua mentre i triac sono transistor di Potenza in alternata.
I mosfet sono "veloci" quindi i più sono controllabili ai 400khz del pwm di Arduino mentre i relè sono moooolto più lenti, si parla di 1hz se non erro.

Ciao, u sei quello che spiegava la programmazione dell'LCD a cristalli liquidi?

Se sì, io ero quello dietro di te, barba, occhiali, pelato ed in piedi.

simone_G:

superlol:
I 10000 cicli di scrittura sono pessimistici (così riporta il datasheet) ovvero un numero garantito.

I mosfet sono transistor di Potenza in corrente continua mentre i triac sono transistor di Potenza in alternata.
I mosfet sono "veloci" quindi i più sono controllabili ai 400khz del pwm di Arduino mentre i relè sono moooolto più lenti, si parla di 1hz se non erro.

Ciao, u sei quello che spiegava la programmazione dell'LCD a cristalli liquidi?

Se sì, io ero quello dietro di te, barba, occhiali, pelato ed in piedi.

si mi ricordo di te!

comunque se ne parlava ogni tanto del fatto che il chip non mantenesse la programmazione me non se ne è mai scoperto il motivo razionale.

prova a caricare uno sketch diverso!

Probabilmente è una strunz@ta, ma prova ad aggiungere nel setup() una delay all'inizio. Male non fa.

void setup(){
  delay(1000);
  pinMode(13,  OUTPUT);
}

nid69ita:
Probabilmente è una strunz@ta, ma prova ad aggiungere nel setup() una delay all'inizio. Male non fa.

void setup(){

delay(1000);
  pinMode(13,  OUTPUT);
}

Ok, appena gli dedico 5 minuti lo provo, grazie.

superlol:
si mi ricordo di te!

comunque se ne parlava ogni tanto del fatto che il chip non mantenesse la programmazione me non se ne è mai scoperto il motivo razionale.

prova a caricare uno sketch diverso!

Avevo provato in tempo di workshop il primo giorno, durante le prove dei vari sketch per i led, ma continuava a darmi questo problema.

Probabilmente ho il chip sfigato.

superlol:
comunque se ne parlava ogni tanto del fatto che il chip non mantenesse la programmazione me non se ne è mai scoperto il motivo razionale.

Se ne è parlato tempo fa e si capì la questione, e cioè che era quello che dicevo, un problema di accoppiamento di bootloader per schede non corrispondenti.
Nel caso specifico, se si usava l'Optiboot su una 2009: l'Optiboot restava in attesa di un carattere in arrivo dalla seriale, che non arrivava e resettava la scheda. Ma era un problema dei vecchi Optiboot. Sulle UNO R3 non dovrebbe esserci.
Ma tu vedi comportamenti strani del led integrato, per caso? Lampeggia di continuo una volta data l'alimentazione?

Hai provato anche con l'IDE 1.0.5 ? Tanto non hai la Due.

ciao Simone_G
Visto che Mirco non é intervenuto nella discussione gli ho spedito un email con la richiesa di vedere cosa é da fare.
Visto che l' Arduino che hai ricevuto all'interno del starter kit é uno originale deve funzionare e il fatto che non tiene lo sktech in memoria é un guasto.

Comunque ultimo test.
Quando hai caricato lo sketch avevi collegato per caso un LED al pin 13 SENZA resistenza? Togli tutto da Arduino e riprova.

Altre risposte alle Tue domande.
La 1) Ti ho giá risposto.
2) La memoria FLASH (come anche la memoria EEPROM del Controller ATmega328P montato sul Arduino UNO) hanno un numero di cancellazioni / riscritture garantite dove viene anche garantito per quanto tempo i dati rimangono nella memoria senza alimentazione e senza modificarsi. Queste specifiche le trovi nel datasheet ( http://www.atmel.com/Images/doc8161.pdf ) sulla prima pagina. Non devi leggerlo ma per la completezza dell informazione cito e metto il link del documento. Lí é scritto:

  • Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
  • Data retention: 20 years at 85°C/100 years at 25°C
    Per un uso normale ( qualche decina di Upload durante una sessione di lavoro) arrivi a ca 3 anni se ci lavori ogni giorno.
  1. L' elettronica di potenza é un campo piú complicato di quello digitale.
    Per alimentare e poter modificare la velocitá di rotazione di grandi motori si usa oggigiorno dei inverter. L' alimentazione 230V viene raddrizzata e con dei transistori/MOSFET o IGBT (un transistore di potenza che viene pilotato da un MOSFET integrato) viene prodotta un sistema di alimentazione trifase che alimenta il motore. Sono circuiti che non ti costruisci ma che compri giá fatti. La modulazione PWM puoi usarla solo con tensione continua. Con tensione alternata usi altri modalitá come phase fired control ( Phase-fired controller - Wikipedia ) (si accende il l'alimentazione non quando incomincia la semionda ma piu tardi. é un metodo che produce molti disturbi e percui viene usato con utenza di piccola potenza, centinaia di W) oppure il pilotaggio a treni di pacchetti ( fai passare sempre pacchetti di una o piú semionde complete). Entrambe questi pilotaggi puoi realizzare con Tiristori o Triac. Un tiristore é un diodo che puoi accendere. Si spegne da solo quando la corrente diventa zero. La corrente in un alimentazione 230 alternata diventa zero ogni 10 mS (50Hz). Il Triac sono 2 Tiristori messi insiem in modo da poter funzionare con tensione alternata.

  2. com dice yoshi93 il diodo che devi mettere con se piloti induttanze ( motori, relé, valvole elettromeccaniche, elettrocalamite ecc) serve per cortocicuitare la tensione inversa indotta quando spegni l'induttanza. In questo modo questa tensione indotta non puó danneggiare l' elettronica di pilotaggio.

Ciao Uwe

Ciao

Visto che Mirco non é intervenuto nella discussione gli ho spedito un email con la richiesa di vedere cosa é da fare.

il forum è stato più veloce di me a rispondere a tutte le domande a cui avrei potuto contribuire :grin:
Relativamente invece alla board, ci son degli step da seguire per avere la sostituzione, e ti aggiornerò ovviamente via pm :slight_smile:

EDIT
aggiornato

leo72:

superlol:
comunque se ne parlava ogni tanto del fatto che il chip non mantenesse la programmazione me non se ne è mai scoperto il motivo razionale.

Se ne è parlato tempo fa e si capì la questione, e cioè che era quello che dicevo, un problema di accoppiamento di bootloader per schede non corrispondenti.
Nel caso specifico, se si usava l'Optiboot su una 2009: l'Optiboot restava in attesa di un carattere in arrivo dalla seriale, che non arrivava e resettava la scheda. Ma era un problema dei vecchi Optiboot. Sulle UNO R3 non dovrebbe esserci.
Ma tu vedi comportamenti strani del led integrato, per caso? Lampeggia di continuo una volta data l'alimentazione?

un'altra è che sei finito nel "loop del watchdog", anceh questo un problema con vecchie versioni del boot-loader

uwefed:
ciao Simone_G
Visto che Mirco non é intervenuto nella discussione gli ho spedito un email con la richiesa di vedere cosa é da fare.
Visto che l' Arduino che hai ricevuto all'interno del starter kit é uno originale deve funzionare e il fatto che non tiene lo sktech in memoria é un guasto.

Comunque ultimo test.
Quando hai caricato lo sketch avevi collegato per caso un LED al pin 13 SENZA resistenza? Togli tutto da Arduino e riprova.

Altre risposte alle Tue domande.
La 1) Ti ho giá risposto.
2) La memoria FLASH (come anche la memoria EEPROM del Controller ATmega328P montato sul Arduino UNO) hanno un numero di cancellazioni / riscritture garantite dove viene anche garantito per quanto tempo i dati rimangono nella memoria senza alimentazione e senza modificarsi. Queste specifiche le trovi nel datasheet ( http://www.atmel.com/Images/doc8161.pdf ) sulla prima pagina. Non devi leggerlo ma per la completezza dell informazione cito e metto il link del documento. Lí é scritto:

  • Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
  • Data retention: 20 years at 85°C/100 years at 25°C
    Per un uso normale ( qualche decina di Upload durante una sessione di lavoro) arrivi a ca 3 anni se ci lavori ogni giorno.
  1. L' elettronica di potenza é un campo piú complicato di quello digitale.
    Per alimentare e poter modificare la velocitá di rotazione di grandi motori si usa oggigiorno dei inverter. L' alimentazione 230V viene raddrizzata e con dei transistori/MOSFET o IGBT (un transistore di potenza che viene pilotato da un MOSFET integrato) viene prodotta un sistema di alimentazione trifase che alimenta il motore. Sono circuiti che non ti costruisci ma che compri giá fatti. La modulazione PWM puoi usarla solo con tensione continua. Con tensione alternata usi altri modalitá come phase fired control ( Phase-fired controller - Wikipedia ) (si accende il l'alimentazione non quando incomincia la semionda ma piu tardi. é un metodo che produce molti disturbi e percui viene usato con utenza di piccola potenza, centinaia di W) oppure il pilotaggio a treni di pacchetti ( fai passare sempre pacchetti di una o piú semionde complete). Entrambe questi pilotaggi puoi realizzare con Tiristori o Triac. Un tiristore é un diodo che puoi accendere. Si spegne da solo quando la corrente diventa zero. La corrente in un alimentazione 230 alternata diventa zero ogni 10 mS (50Hz). Il Triac sono 2 Tiristori messi insiem in modo da poter funzionare con tensione alternata.

  2. com dice yoshi93 il diodo che devi mettere con se piloti induttanze ( motori, relé, valvole elettromeccaniche, elettrocalamite ecc) serve per cortocicuitare la tensione inversa indotta quando spegni l'induttanza. In questo modo questa tensione indotta non puó danneggiare l' elettronica di pilotaggio.

Ciao Uwe

Per ora ti rispondo a riguardo il led senza resistenza, no quella l'ho sempre messa, forse è l'unica cosa a cui sono stato attentissimo.

Grazie per l'esauriente risposta e per provare il lampeggiamento eventuale all'accensione, provo stasera, grazie a tutti ancora per le risposte.

lesto:
un'altra è che sei finito nel "loop del watchdog", anceh questo un problema con vecchie versioni del boot-loader

Anche usando l'Optiboot, che disattiva il watchdog all'avvio, se hai impostato un tempo troppo breve nel ciclo del watchdog ci finisci lo stesso, l'ho sperimentato poco tempo fa :wink:

ah, pensavo che avessero risolto disattivanto il watchdog all'avvio del boot-loader.

Ciao a tutti, allora sembra che si sia risolto.

Ho creato questo codice per prova:

void setup() {
  // put your setup code here, to run once:
  pinMode(13, OUTPUT);

}

void loop() {
  
  for(int i = 1; i <= 3; i++){
  // put your main code here, to run repeatedly: 
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(3000);
  if(i == 3){
    for(int b = 1; b <= 10; b++){
    digitalWrite(13, HIGH);
    delay(500);
    digitalWrite(13, LOW);
    delay(500);
    }
  }
  }
}

L'ho caricato e sembra funzionare..............però ho omesso di dire un particolare.

Ci ho ragionato su, e mi son detto, se il chip si può cambiare, magari è messo male o ha qualche contatto con polvere o umidità, può succedere.
Così ho alzato il chip (core), e l'ho riabbassato un paio di volte, premendo bene che non sia alzato in maniera impercettibile, bè, sembra aver funzionato, infatti dopo aver attaccato l'usb, mi è partito col programma che avevo caricato ieri.
Ho caricato questo secondo programma, quello soprascritto, l'ho caricato, e funzionava, ho tolto l'usb, aspettato 10 secondi canonici, e riattaccato, ed è partito col programma caricato, l'ho riprovato altre due volte lo stacco dell'usb, e direi che ora è a posto.

Se avete suggerimenti per provare che non sia un falso positivo, ditemi pure.

Ho ricorretto il codice......... :*

simone_G:

void setup() {

// put your setup code here, to run once:
  pinMode(13, OUTPUT);

}

void loop() {
 
  for(int i = 1; i <= 3; i++){
  // put your main code here, to run repeatedly:
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(3000);
  if(i == 3){
    for(int b = 1; b <= 10; b++){
    digitalWrite(13, HIGH);
    delay(500);
    digitalWrite(13, LOW);
    delay(500);
    }
  }
  }
}

non è che era appoggiataa qualcosa che gli faceva fare corto circuit, come un tavolo di ferro, una graffetta etc?? sempre meglio avere sotto un ripiano di legno, qualche foglio di carta, o quelle spugne antistatiche che ci sono neelle scatole di componenti elettonici per PC

lesto:
non è che era appoggiataa qualcosa che gli faceva fare corto circuit, come un tavolo di ferro, una graffetta etc?? sempre meglio avere sotto un ripiano di legno, qualche foglio di carta, o quelle spugne antistatiche che ci sono neelle scatole di componenti elettonici per PC

No è tutto sulla basetta di legno che c'era nello starter kit, quanto al contatto incidentale, può esserci stato, sinceramente non ti so dire, non me ne sono accorto al tempo del workshop, qui a casa no, sono stato attento.

Che il chip sembri inserito bene ma che in realtà non lo sia è successo anche a me. Conviene sempre pigiare con un pò di forza, soprattutto se sotto ci sono gli zoccoli a molletta come nel caso dell'Arduino, con cui capitano questi falsi contatti.