Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Arduino standalone: condensatore 104 tra RTS e pin 1?

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto UtenteBrunoValente, Foto UtenteIsidoroKZ, Foto Utentecarloc, Foto Utenteg.schgor

1
voti

[11] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto Utentexyz » 27 mar 2017, 14:15

No, devi conoscere come funziona una rete RC, forse non hai letto il link a Wikipedia di prima, comunque basta un qualsiasi libro che tratti le basi su come funzionano i circuiti con i condensatori.
Avatar utente
Foto Utentexyz
6.819 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1758
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[12] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto Utentesavo98 » 28 mar 2017, 8:27

Ho letto il link ma non capisco il motivo dei 100nF
Avatar utente
Foto Utentesavo98
59 2 6
Frequentatore
Frequentatore
 
Messaggi: 135
Iscritto il: 23 ott 2015, 20:33

2
voti

[13] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda ucr » 28 mar 2017, 10:06

In quanto tempo si carica e scarica un condensatore? Cos'è tau? Prova a cercare le risposte su qualche libro, magari in biblioteca.
ucr
322 2 3 5
---
 

2
voti

[14] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto Utentejumpjack » 28 mar 2017, 12:25

savo98 ha scritto:Ho letto il link ma non capisco il motivo dei 100nF

I condensatori impiegano un certo tempo T a caricarsi/scaricarsi (cioè arrivare a un certo livello di tensione), secondo una curva esponenziale ; il valore di T dipende dal valore di R*C (resistenza per capacità) del circuito in cui è montato.

I progettisti elettronici sono sempre molto misteriosi e criptici quando parlano dei valori che scelgono per i componenti dei circuiti, quasi facessero parte di una setta massonica. Persino i professori che avevo all'università facevano i misteriosi: anzichè spiegare le ragioni delle loro scelte (ed erano PROFESSORI che stavano INSEGNANDO), a domanda specifica rispondevano "basta leggere sul datasheet". ?% "Ovviamente" nessun professore ha mai illustrato un datasheet a lezione e spiegato come si legge.

Su internet invece trovi gente che dice "ho messo un condensatore da 100uf perché è quello che avevo nel cassetto", oppure frasi come "per questo circuito il valore della capacità in quel pin non è critico può essere scelto in un ampio range di valori", che ti lasciano basito e più perplesso di PRIMA di fare la domanda. ?%

Poi c'è anche chi a una domanda risponde con due domande....
In quanto tempo si carica e scarica un condensatore? Cos'è tau?


Purtroppo Internet è una giungla! ?%


Ma cerchiamo di fare un po' di luce.


Dai messaggi criptici che ho letto nel thread mi sembra di capire che il pin 1 è quello di reset, e che per attivare il reset bisogna collegare il pin a massa (= 0 volt) e tenercelo per almeno 2.5 microsecondi (*).

Sembra anche di capire che l'IDE, cioè semplicemente il programma che usi per scrivere i programmi per Arduino, quando clicchi su UPLOAD invii un impulso sul pin RTS della porta seriale in modo da impostare Arduino su modalità programmazione, ma forse questo impulso è troppo breve (?), quindi viene "prolungato" inserendo il condensatore: in questo modo, infatti, anche quando la tensione sul pin seriale collegato al PC non è più presente, il condensatore collegato al pin1 dell'Atmega risulta ancora carico, quindi sul pin 1 la tensione permane. (**)

"Per quanto tempo permane" dipende dal prodotto di R*C, dove C è la capacità del condensatore e R è la resistenza di "pull-up" (letteralmente "tira su"), cioè collegata tra il pin 1 e l'alimentazione: la resistenza fa sì che, in condizioni normali di funzionamento dell'Arduino, il pin1 risulti a tensione Vcc, quindi NON a massa, quindi NON in reset.
Il prodotto di R (in ohm) per C (in microFarad, uF) dà la costante di tempo in microsecondi (uS): bisogna fare in modo che sia maggiore di 2.5 uS, come da datasheet, così l'atmega capisce che gli viene richiesto di resettarsi.

Quindi deve essere:
T > 2.5 uS
cioè
R*C > 2.5
(Con R in ohm e C in uF)

Per indicare nella formula che R è espresso in ohm e C in uF si possono usare le parentesi quadre:

R[ohm] * C[uF] > 2.5 [uS]

Quindi, capovolgendo la formula, deve essere:
C > 2.5 / R

Non so da quanto è la resistenza di pullup; se valesse 1000 ohm:
C > 2.5 /1000
C > 0.0025 uF

0.0025 uF = 2.5 nF

Quindi se la resistenza è da 1000 ohm, il condensatore deve essere da almeno 2.5 nF, e siccome 100 uF è più di 2.5 nF, va bene; ma se il primo tizio che ha fatto esperimenti col cavo FTDI e Arduino avesse avuto nel cassetto un condensatore da 10 uF invece che da 100, probabilmente ora staremmo discutendo sul perché serve un condensatore da 10 uF! :D

-----------

(*) abbreviato con "us", anche se invece della "u" servirebbe il carattere greco "µ", cioè "mu", simbolo appunto di "micro", però sulla tastiera la µ non c'è e quindi si sostituisce con la "u" minuscola che gli assomiglia.

(**) anche se non capisco come farebbe a caricarsi a sufficienza, visto che la costante di tempo di carica è la stessa di quella di scarica... Mah. Forse perché una tensione di 5V "distribuita" su 1 microsecondo "equivale" a una tensione, che so, di 3V distribuita su 10 microsecondi (valori ipotetici buttati lì a caso), e all'atmega basta vedere più di 3V per interpretare il pin come "alto". Immagino che qualcuno abbia fatto i calcoli.... o più probabilmente provato una serie di condensatori a caso finché uno ha funzionato.
Ultima modifica di Foto Utentejumpjack il 28 mar 2017, 12:39, modificato 1 volta in totale.
-- Jumpjack --
Avatar utente
Foto Utentejumpjack
354 1 2 6
Expert
Expert
 
Messaggi: 402
Iscritto il: 2 giu 2006, 21:34

3
voti

[15] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto Utentejumpjack » 28 mar 2017, 12:39

Ah ecco, qui è spiegato bene, e c'è anche un'immagine:

Immagine

Sembra che l'IDE lasci a 0V il pin RTS "per sempre", mentre invece deve starci per "poco tempo" (vorrei avere dei vlaori precisi...); la serie tra resistenza di pull-up e condensatore costringe invece la tensione a risalire gradualmente a Vcc "qualche tempo dopo" (cioè dopo un tempo RC) che RTS è stato messo a zero dall'IDE, così una volta che il caricamento dello sketch è finito, l'atmega non si trova in condizioni di reset ma di funzionamento normale.

Per inciso, 0.1 uF = 100 nF, che è comunque maggiore di 2.5 nF, quindi va comunque bene.
-- Jumpjack --
Avatar utente
Foto Utentejumpjack
354 1 2 6
Expert
Expert
 
Messaggi: 402
Iscritto il: 2 giu 2006, 21:34

2
voti

[16] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto Utentegammaci » 28 mar 2017, 12:46

Si, il 100 nF perché nel cassetto aveva quello. Dissi alcuni post prima che si poteva mettere di altri valori in genere minori e non critici. Non fa male tenerlo alto, tanto prima o dopo e per effetto della pullup, torna a Vcc avviando il micro.
Ottima esposizione Foto Utentejumpjack :ok:
Da soli conosciamo alcune cose.
In molti ne conosceremo molte di più.
Avatar utente
Foto Utentegammaci
3.838 2 4 7
Master
Master
 
Messaggi: 1040
Iscritto il: 27 feb 2014, 12:20

2
voti

[17] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto UtenteBrianz » 28 mar 2017, 14:00

Sarebbe utile chiarire che il tempo minimo di reset è il minimo perché la circuiteria interna identifichi la situazione, dato che il micro può stare in condizione di reset per un tempo indeterminato.

RST (o DTR - Arduino2009 utilizza DTR di FTDI 232L) viene abbassato all'inizio della trasmissione ed è mantenuto basso per tutta la sua durata.
Siccome è necessario che il micro riparta dal vettore di reset per caricare dalla connessione seriale, si è fatto in modo che al fronte di discesa dell'RTS si abbia un impulso basso sulla linea RESET.

La cosa si può fare in molti modi e quello usato non è certo il più raffinato. Funziona dato che l'ingresso al pin 1 ha un ST interno che triggera sulla rampa di salita determinata dal condensatore in un punto abbastanza preciso.
E' una arduinata, ma per il genere di applicazione non occorrono sistemi più raffinati.

Il valore 100nF è dovuto al fatto che si tratta del valore di capacità più comune nelle applicazioni logiche, quindi economico e di facile reperibilità, e che la rampa prodotta è sufficientemente lunga, anche se capacità minori andrebbero altrettanto bene.
Preciso che non è il metodo che utilizzerei in una macchina, ma funziona ed è il più economico possibile.

Quindi, niente calcoli di precisione, che sarebbero difficili per i numerosi parametri aleatori, ma una semplice derivazione dalla pratica.
Il che non vuol dire che è stato messo il primo valore sotto mano, che sarebbe solo una coglioneria, ma un minimo di valutazione sugli effetti della capacità è stato introdotto nella scelta. Anche se si tratta di arduini, il sistema del raggiungere il risultato solo attraverso errori e non valutazioni numeriche anche minimali, non è certo quello usato dai progettisti.
Avatar utente
Foto UtenteBrianz
5.828 5 10
CRU - Account cancellato su Richiesta utente
 
Messaggi: 859
Iscritto il: 24 mar 2016, 11:27

0
voti

[18] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto Utentesavo98 » 30 mar 2017, 9:33

Grazie mille a tutti per la disponibilità. :)
Ma l'RTS dell'FTDI a che serve? Per resettare il microprocessore da PC?
Avatar utente
Foto Utentesavo98
59 2 6
Frequentatore
Frequentatore
 
Messaggi: 135
Iscritto il: 23 ott 2015, 20:33

2
voti

[19] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto Utentexyz » 30 mar 2017, 11:36

Prima di tutto FTDI è il nome di una azienda che vende diversi tipi di circuiti integrati. Il chip in questione è FT232R, il più usato nei primi modelli delle board Arduino, un adattatore RS232-TTL <-> USB.

Per programmare Arduino con il suo bootloader devi resettare il micro-controllore, o lo fai tu a mano premendo il tasto di reset o lo fai in modo automatico dal programmatore pilotando un segnale. Visto che il bootloader di Arduino usa il protocollo RS232 si è utilizzato un segnale di controllo in modo improprio per pilotare il reset (come ti è stato più volte detto).
Avatar utente
Foto Utentexyz
6.819 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1758
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

1
voti

[20] Re: Arduino standalone: condensatore 104 tra RTS e pin 1?

Messaggioda Foto Utentejumpjack » 30 mar 2017, 11:40

savo98 ha scritto:Grazie mille a tutti per la disponibilità. :)
Ma l'RTS dell'FTDI a che serve? Per resettare il microprocessore da PC?

Non è stato progettato espressamente per quello, ma chi usa Arduino ha deciso di usarlo in quel modo.

Quello che non ho capito è perché non ci pensa direttamente l'IDE a far durare il tempo giusto lo "zero" sul pin, invece di costringere a mettere le mani all'hardware.
-- Jumpjack --
Avatar utente
Foto Utentejumpjack
354 1 2 6
Expert
Expert
 
Messaggi: 402
Iscritto il: 2 giu 2006, 21:34

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 73 ospiti