Acune domande a seguito workshop Trento.

Perdonate se chiedo tutto sulla sezione generale, semmai chiedo sia spostato il tutto nella sezione apposita, grazie.

Le domande sono un pò alla rinfusa ma spero non siano casiniste.

  1. Si è fatto vedere Arduino alimentato da USB, ma non trovo una guida che riferisca come far permanere su arduino il programma una volta compilato, specie in quei progetti dove la corrente viene spesso tolta (si parla di bootloader?)?

  2. Se uso Arduino spesso per esperimenti, qual'è mediamente il ciclo di vita di costui provato fino ad oggi con continui caricamenti/reset dei programmi compilati?

  3. Si è parlato di mosfet, però quelli da 12V, mentre per carichi superiori, tipo comandi di lampadine da 220V ovviamente servono più grossi? in tal caso mi sovviene che in una serata open hardware cui ho partecipato ci è stato fatto vedere una specie di mosfet fatto con un controller tipo arduino mini per controllare carichi molto grandi tramite sempre PWM ( spero di non dire cavolate), ( il proponente (ingegnere ed insegnante per la cronaca) parlava di motori di grossa portata, ma comunque carichi grossi con poca dissipazione da parte del controller), a questo punto vale ancora la pena parlare di mosfet?

4)Il diodo in parallelo per il controllo tramite mosfet ha funzione di barriera o "apertura diga" per correnti di spunto di ritorno, che mi pare "battono" contro il contatto del mosfet ed eludono il pin di Arduino? è una parte del discorso che non ho ben inteso durante il workshop.

Per il momento mi vengono in mente queste, grazie a chi mi risponderà.

  1. la memoria di arduino, quella per il programma o sketch è una flash. Ovvero memorizza e tiene in memoria anche se spegni.
    Quando ricolleghi alimentazione riesegue il tuo sketch dall'inizio. Eseguirà una volta il codice della setup() e poi all'infinito il codice della loop()

nid69ita:

  1. la memoria di arduino, quella per il programma o sketch è una flash. Ovvero memorizza e tiene in memoria anche se spegni.
    Quando ricolleghi alimentazione riesegue il tuo sketch dall'inizio. Eseguirà una volta il codice della setup() e poi all'infinito il codice della loop()

Strano, quando scollegavo e ricollegavo dopo un pò, tramite USB non succedeva, dovevo ricaricare il codice nella scheda.

  1. I cicli di scrittura/lettura in FLASH sono 10000 percui se in una giornata fai 10000 modifiche al programma e lo testi poi potresti avere qualche problema(credo che un micro come il 328 ti duri almeno qualche anno e comunque uno di riserva non costa tanto).

  2. Per i 220V meglio usare i triac o relè, i mosfet non sono fatti per l'alternata. I mosfet li puoi utilizzare per i motori e per regolare la velocità usi il PWM cioè spegni/accendi il componente molte volte al secondo per modulare la potenza.

  3. Il diodo serve sui carichi induttivi perchè quando la corrente comincia a calare perchè stacchi repentinamente l'alimentazione cioè quando il mosfet "apre il contatto" hai tensioni inverse molto alte percui il diodo ti mantiene il pin del mosfet tensioni accettabili per non friggere nulla.

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.

simone_G:
Strano, quando scollegavo e ricollegavo dopo un pò, tramite USB non succedeva, dovevo ricaricare il codice nella scheda.

Che Arduino hai, scusa?
In passato era già capitato ma succedeva quando si mescolava un chip con un bootloader su una scheda che non era quella per cui era destinato.

Non è compito del work shop spiegare tutto nel dettaglio, l'obbiettivo del work shop e quello di mostrare le potenzialità, i limiti e alcune soluzioni software/hardware, le versioni di Arduino, l'ambiente di sviluppo integrato ecc. Arduino ha permesso al salumiere, idraulico, spazzino ecc di realizzare piccoli progetti, magari copiando a destra e a manca, e questo può dare l'impressione che tutto ciò che gravita attorno ad arduino sia semplice, del tipo: basta poco che c'è vò. Ovviamente non è così, non è affatto semplice, neanche per chi ha esperienza, questo perchè sia l'elettronica che il software sono rami molto estesi oltre che complessi.

Il modo in cui viene affrontato e portato avanti il workshop può portare a pensare al paese dei balocchi, dove prendi un mosfet lo attacchi ad arduino e ualà il motore gira. Se si crede al paese dei balocchi si finisce per pensare che, qualunque mosfet va bene, che qualunque resistenza va bene per accendere un led, e che tutti i led sono uguali. Del resto l'oratore non può entrare nel dettaglio, deve semplificare, perché il tempo a disposizione è limitato e di cose da dire c'è ne sono tante.

Ciao.

leo72:
Che Arduino hai, scusa?
In passato era già capitato ma succedeva quando si mescolava un chip con un bootloader su una scheda che non era quella per cui era destinato.

Arduino uno, uso sketch 1.5.2 (beta), caricavo il programma, andava, poi magari toglievo dopo un pò il cavo usb, modificavo il programma (sketch) senza caricarlo, e riattaccando l'usb, non si avviava con l'ultimo programma caricato, ma semplicemente restava in attesa.

Ciao,
per l'uso di Arduino UNO puoi usare anche l'IDE 1.0.5, che su Windows è dotato anche di installer. (http://arduino.cc/en/Main/Software)
La versione 1.5.2 è più completa, serve per programmare anche la DUE ma è ancora in fase beta e quindi potrebbe essere soggetta a qualche bug.

Dopo aver alimentato l'Arduino, il microcontrollore provvede ad avviare un programma speciale chiamato bootloader, il bootloader verifica se sono presenti segnali sull'interfaccia seriale e nel caso passa in modalità programmazione (serve per caricare un nuovo sketch). Se non vi sono segnali presenti o se non corrispondono il bootloader avvia lo sketch caricato dall'utente.
Le azioni seguenti quindi dipendono da cosa hai scritto nello schetck. Se hai deciso che il micro deve aspettare la pressione di un pulsante lui non farà niente finché non lo premi.

Per analizzare bene il problema riporta qui lo sketch che stai usando. Per la pubblicazione del codice usa i tad CODE (punto 7 --> [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum).

simone_G:
Arduino uno

Originale? Mai cambiato il chip?

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

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