Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Come realizzare un trigger di schmitt software?

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Come realizzare un trigger di schmitt software?

Messaggioda Foto Utenteelfo » 22 giu 2020, 23:20

SandroCalligaro ha scritto:Rimane da impostare il valore iniziale di Relay, nel caso si sia tra le due soglie...

elfo ha scritto:all'accensione (start up) quanto vale Vout?

Con la domanda e il circuito in [4] volevo mettere in evidenza (a livello HW) quello che Foto UtenteSandroCalligaro ha precisato in SW

Mi sembra che ci siano (almeno) due approcci SW alla soluzione del problema: seguo con interesse la discussione tra softwaristi
Avatar utente
Foto Utenteelfo
3.589 2 5 7
Master
Master
 
Messaggi: 1521
Iscritto il: 15 lug 2016, 13:27

0
voti

[12] Re: Come realizzare un trigger di schmitt software?

Messaggioda Foto Utenteedgar » 22 giu 2020, 23:30

SandroCalligaro ha scritto:Relay è l'uscita, ma è anche una variabile di stato (memoria), per cui deve "persistere" tra un'esecuzione e l'altra.

Nel caso specifico non è necessario.
Stavo pensando di commutare il secondario di un trasformatore a presa centrale in funzione della tensione richiesta in uscita, sviluppando questa idea di base:

Se all'accensione mi trovo nella zona intermedia, posso decidere di stare nella condizione a tensione minore giusto per scelta, non per una vera e propria necessità.
Lo stato precedente è poco significativo: se viene ruotato il potenziometro della tensione ad alimentatore spento, la condizione precedente è persa.
Anche se la logica funziona, non so ancora se la userò, è vero che risparmio qualche resistenza, ma devo avere almeno un + 5V per il micro e un + 12 o 24 V per il relè. Se uso un comparatore analogico posso risparmiami almeno uno stabilizzatore se non addirittura due.

E invece mi preoccupo io: come mai in Basic?!

perché quello conosco :D
Il C, per quanto mi riguarda, è troppo complesso per il poco che devo fare.
Del compilatore Bascom che uso, impiego probabilmente il 20% delle funzioni.
O_/
Avatar utente
Foto Utenteedgar
6.467 3 5 8
Master
Master
 
Messaggi: 3273
Iscritto il: 15 set 2012, 22:59

0
voti

[13] Re: Come realizzare un trigger di schmitt software?

Messaggioda Foto Utenteedgar » 22 giu 2020, 23:33

elfo ha scritto:seguo con interesse la discussione tra softwaristi

Non guardare me eh??? :mrgreen: :mrgreen:
Avatar utente
Foto Utenteedgar
6.467 3 5 8
Master
Master
 
Messaggi: 3273
Iscritto il: 15 set 2012, 22:59

0
voti

[14] Re: Come realizzare un trigger di schmitt software?

Messaggioda Foto UtenteSandroCalligaro » 23 giu 2020, 0:25

elfo ha scritto:Con la domanda e il circuito in [4] volevo mettere in evidenza (a livello HW) quello che Foto UtenteSandroCalligaro ha precisato in SW
Era un buono spunto, che avevo colto e infatti ho cercato all'inizio di non dare "aiutini". Credo, però, che l'approccio elettronico sia un po' più difficile, perché lo stato iniziale dipende da fattori difficili da determinare...

elfo ha scritto:Mi sembra che ci siano (almeno) due approcci SW alla soluzione del problema: seguo con interesse la discussione tra softwaristi
Dici? L'approccio mi pare abbastanza uniforme.
edgar ha scritto:on guardare me eh??? :mrgreen:
Ah, se è per questo neanche me! Il SW è uno strumento, ma i miei loschi scopi sono altri. :D

edgar ha scritto:Nel caso specifico non è necessario.
Scusa, mi sono espresso male. Tra un'esecuzione e l'altra intendevo ad ogni iterazione del codice per l'isteresi (che presumibilmente avviene ogni N microsecondi). La memoria è un elemento intrinseco dell'isteresi, c'è per definizione. :-)
Avatar utente
Foto UtenteSandroCalligaro
2.326 4 5
Master EY
Master EY
 
Messaggi: 978
Iscritto il: 6 ago 2015, 19:25

0
voti

[15] Re: Come realizzare un trigger di schmitt software?

Messaggioda Foto UtenteMarcoD » 23 giu 2020, 8:13

Propongo un dibattito da eruditi :-)
Entrambe le alternativa funzionano, quale è la migliore?
Decenni fa, quando i computer erano molto limitati, i programmatorri ne dibattevano a lungo
In comune alle due alternaternative:
definizione delle variabili:
boolean OUT
intera o float INPUT

Alternativa 1:
if( OUT == low)
{ if ( INPUT > soglialta){ OUT= high;} }
else
{ if ( INPUT < sogliabassa){ OUT= low;}}


Alternativa 2:
if ( INPUT > soglialta){ OUT= high;}

if ( INPUT < sogliabassa){ OUT= low;}


Poi migliore per cosa:
occupazione di memoria?
tempo macchina di esecuzione?
facilità di comprensione ?
O_/
Avatar utente
Foto UtenteMarcoD
7.417 4 8 13
Master EY
Master EY
 
Messaggi: 3273
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[16] Re: Come realizzare un trigger di schmitt software?

Messaggioda Foto Utenteedgar » 23 giu 2020, 10:35

SandroCalligaro ha scritto:La memoria è un elemento intrinseco dell'isteresi, c'è per definizione. :-)

Porta pazienza ma stai parlando con uno che ha giusto un'infarinatura da autodidatta che risale alla notte dei tempi.
Stabilito le due soglie, una volta discriminato in quale fascia ricade la lettura dall'ADC, se lo stato attuale dell'uscita (è questo che intendi con memoria?) soddisfa già il risultato della comparazione non serve fare altro, diversamente c'è da compiere un'azione diversa.
Ho capito ?
Avatar utente
Foto Utenteedgar
6.467 3 5 8
Master
Master
 
Messaggi: 3273
Iscritto il: 15 set 2012, 22:59

0
voti

[17] Re: Come realizzare un trigger di schmitt software?

Messaggioda Foto Utenteelfo » 23 giu 2020, 18:47

Guardiamo il grafico e i due circuiti qui sotto.

In Fig. 1a abbiamo il classico ciclo di isteresi di uno Schmitt Trigger.

Questo comportamento puo' essere realizzato in vari modi sia HW sia SW.

Il circuito di Fig. 1b (forse meno "classico") puo' essere "tradotto" in SW (e viceversa) con gli esempi di programmazione presentati nei post precedenti.

Il circuito di Fig. 1c (versione classica con operazionale/comparatore) mi sembra che potrebbe essere traslato in SW con l'esempio che segue:

Codice: Seleziona tutto
OUT = H; Threshold = VL // imposto condizioni iniziali
Vi = Read ADC // leggo la tensione in ingresso
if Vi > Threshold
  {OUT = H; Threshold = VL
      else
   OUT = L; Threshold = VH}

Quali sono le differenze tra le versioni SW?
Avatar utente
Foto Utenteelfo
3.589 2 5 7
Master
Master
 
Messaggi: 1521
Iscritto il: 15 lug 2016, 13:27

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite