Pages: [1]   Go Down
Author Topic: Soluzione per LED integrato sempre acceso su UNO R3  (Read 645 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il buon Alberto (pighixxx) al raduno di Bassano mi ha omaggiato di una UNO R3 (grazie ancora a te ed agli sponsor che hanno messo a disposizione il materiale).

Tornato a casa l'ho collegata al PC ed ho visto il led integrato blinkare (sketch Blink precaricato). Tutto OK.
Quel led che lampeggiava mi ha fatto tornare a mente il problema che alcuni utenti avevano manifestato sulla UNO R3, e cioè che il led integrato era acceso anche se non era impostato da codice. Ho caricato un semplice sketch che non faceva uso del led e magicamente ho visto come esso si accendesse da solo e si spengesse facendo ponte con un dito sul retro della scheda tra il pin 13 ed il pin di massa che c'è accanto. Tutto ciò, come spiegò bene Uwe, è causato dall'op-amp che è utilizzato per pilotare il led 13.

Mi è venuto da pensare ad una soluzione per rimediare a questo problema, perché proprio non mi piace avere un led acceso quando vuole lui. Ecco quindi in allegato il bootloader Optiboot 4.4.1, evoluzione del bootloader dell'IDE 1.0.5 che disattiva il led mettendo il pin su output con segnale low al termine dell'esecuzione del bootloader, prima che venga avviato lo sketch utente.

Ricordatevi quindi che all'avvio dello sketch quel pin non è più in condizione di alta impedenza, situazione di default di tutti i pin dopo un reset del microcontrollore.

Istruzioni per l'installazione del nuovo bootloader:
1) aprite la cartella che contiene l'eseguibile di Arduino
2) entrate in /hardware/arduino/bootloaders/optiboot
3) rinominate il file optiboot_atmega328.hex in optiboot_atmega328.orig in modo da avere una copia del file originale (se saltate questo passaggio, potete sempre riscaricare l'IDE e recuperare il file originale da lì)
4) decomprimente l'archivio allegato e copiate il file .hex allegato nella suddetta cartella. Questo è il nuovo bootloader
5) adesso aprite l'IDE e procuratevi o un altro Arduino oppure un programmatore esterno (esempio: USBtinyISP) per poter scrivere il bootloader sul chip dell'Arduino UNO R3
6) caricate il bootloader e poi montate il chip così preparato sulla vostra UNO R3.

Dando alimentazione, il led integrato dovrebbe dare adesso 4 flash:
- i 3 iniziali sono quelli classici dell'Optiboot, che segnalano l'avvio del bootloader
- il 4° flash che vedete non è un flash vero e proprio ma è il passaggio veloce dalla condizione di acceso causata dall'op-amp integrato a quella di spento data dal pin messo su output/low dal nuovo bootloader.

PS:
nel file allegato trovate anche il sorgente del bootloader, nel caso vogliate compilarvelo per proprio conto. Tenete presente che dovete rispettare il limite dei 512 byte: con la modifica da me proposta siamo a 506.

* optiboot-4.4.1.zip (7.48 KB - downloaded 9 times.)
« Last Edit: July 02, 2013, 07:44:12 am by leo72 » Logged


ivrea (to)
Offline Offline
Faraday Member
**
Karma: 77
Posts: 4647
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie  smiley
Logged

my name is IGOR, not AIGOR

Italy
Offline Offline
Edison Member
*
Karma: 122
Posts: 1144
O ti distingui o ti estingui
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Anche da parte mia grazie. Finalmente la soluzione.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie dei... ringraziamenti  smiley-wink
Vorrei avere un feedback, per sapere se funziona correttamente anche su altre schede con lo stesso problema. La mia senz'altro ha gradito, dato che quel LED non sta più acceso da solo.   smiley-lol
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 517
Posts: 12321
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La soluzione è certamente idonea, non mi convince la "spiegazione". Quel LED è alimentato dallo stato del pin 13 amplificato dall'op amp U5B LM358, usato in configurazione NON invertente, per cui il LED si accende solo ce il pin 13 va su HIGH o comunque se il + del 358 rileva una certa soglia di tensione positiva, quindi se colleghi il pin a massa mediante un dito il LED non può accendersi, semmai dovrebbe spegnersi smiley-sweat; ciò detto temo che non sia semplice trovare una soluzione hardware al problema senza smanettare oltre la decenza, penso che basterebbe diminuire il fattore di amplificazione dell'U5B per risolvere il problema a monte.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Difatti se faccio ponte fra il pin D13 e massa si spenge:
Quote
si spengesse facendo ponte con un dito sul retro della scheda tra il pin 13 ed il pin di massa che c'è accanto
Comunque questa è una soluzione temporanea, nel senso che serve tappare la falla hardware in attesa che provvedano, come disse astrobeed nel thread in cui Uwe dava la soluzione del problema, a mettere anche una R di pull-down da 100K per dare un segnale basso all'op-amp.
Se l'utente non usa quel pin, il led rimarrà spento (come dovrebbe essere e com'era sulle vecchie versioni della scheda). Se lo usa, invece, esso seguirà lo stato del pin ma a questo punto poco ce ne importa perché la cosa sarà appunto voluta dall'utente stesso.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 517
Posts: 12321
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

aaah ho letto a pipa sorry! smiley-grin
io stavo per suggerire una pull-down da 10k a poi ho pensato che si sarebbe persa l'alta impedenza, con 100k il problema sarebbe relativo ma non so se sufficiente, inoltre si verrebbe a trovare in parallelo ad una eventuale pull-down; credo che più elegantemente andrebbe cambiata la configurazione; la configurazione attuale (voltage follower) in realtà non amplifica, come ho scritto prima, ma semplicemente separa i due stadi; la loro idea era quella di non sovraccaricare il pin 13, ma non hanno fatto i conti con questo problema
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

la loro idea era quella di non sovraccaricare il pin 13, ma non hanno fatto i conti con questo problema
Esattamente. Probabilmente i primi prototipi non hanno manifestato il problema ed hanno mandato la scheda in produzione.
Comunque la mia è una soluzione software per cui non devi metter mano alla scheda in nessun modo ed è inoltre reversibile nel senso che puoi comunque riportare la scheda all'originale semplicemente ricaricandoci sopra il bootloader di serie.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21255
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il problema é che col LED attaccato direttamente al PIN 13 (come nei Arduino piú vecchi) se usi il pin 13 come entrata hai un tipo di resistenza pullup. Percui il Pin 13 non si comporta in modo uguale come gli altri pin digitali. Mettendo un operazionale il LED é disaccoppiato e il pin 13 come entrata si comporta uguale come gli altri pin digitali. Il LED 13 acceso in certe circostanze é un problema minore di quello di avere un pin che si comporta diversamente dagli altri.
Ciao Uwe
 
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma non era uscito l'optiboot 5.0? (http://forum.arduino.cc/index.php/topic,159722.0.html)
Il tuo dovrebbe essere il 5.0.1

Nella mia R3 non si accende. Credo faccia parte di uno dei primi lotti visto che la ho da quando mi sono iscritto qui. (25-11-2011)
« Last Edit: July 02, 2013, 11:16:57 am by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 517
Posts: 12321
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma non era uscito l'optiboot 5.0? (http://forum.arduino.cc/index.php/topic,159722.0.html)
Il tuo dovrebbe essere il 5.0.1

Nella mia R3 non si accende. Credo faccia parte di uno dei primi lotti visto che la ho da quando mi sono iscritto qui. (25-11-2011)
Secondo me ha la sua influenza anche il funzionamento dell'impianto di terra, sarebbe interessante se qualcuno che ha il problema potesse provare ad alimentare Arduino con una batteria e vedere come si comporta, secondo me resta spento....
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma non era uscito l'optiboot 5.0? (http://forum.arduino.cc/index.php/topic,159722.0.html)
Il tuo dovrebbe essere il 5.0.1
Il 5.0 serve per supportare la seconda seriale sui 1284. Sui 328 non cambia nulla. Ho quindi usato quello allegato all'IDE.
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Secondo me ha la sua influenza anche il funzionamento dell'impianto di terra, sarebbe interessante se qualcuno che ha il problema potesse provare ad alimentare Arduino con una batteria e vedere come si comporta, secondo me resta spento....
Non sono a casa. Domani faccio dei test rimettendo il bootloader originale.
Logged


Pages: [1]   Go Up
Jump to: