Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

9
voti

Funzioni speciali per SCU

Proseguendo nell'illustrazione di programmi in JAVA per l'uso "didattico" dello SCU, propongo alcune funzioni particolarmente utili in automatismi sequenziali.
Come le precedenti (vedi [1][2]), si riferiscono a funzioni tradizionali dei circuiti integrati "tradotte" in moduli di software che ne permettono l'emulazione nella scheda valutazione SCU.


Indice

D-FlipFlop

Dopo aver visto i programmi per il SR-FF ed il T-FF, è importante vedere anche il tipo di flipflop che permette la "memorizzazione al volo" di uno stato logico (D, dato) nell'istante in cui arriva il fronte d'onda positivo del clock (CK). Per facilitare la comprensione della funzione si sono infatti mantenute le sigle convezionali, aggiungendo solo la variabile Cp necessaria alla rilevazione del fronte d'onda del clock. .
Ecco il programma:

Come si vede il dato d'ingresso è fornito dall'interruttore RC4, il clock dal pulsante RC0 e l'uscita (il tradizionale Q dei flipflop) dal LED RB4.
Attivando il pulsante si ha l'accensione del LED solo se l'interruttore è chiuso, ed il LED rimane acceso finché non viene spento da una nuova attivazione del pulsante con interruttore aperto.

Shift-Register (unidirezionale)

Il classico Shift-Register è formato da una catena di D-FF con il clock in comune e collegati tra loro in modo che il dato in uscita da ciascun elemento determini lo stato d'uscita del successivo, all'arrivo del fronte d'onda positivo del clock.
E' quindi naturale che dopo aver visto un possibile programma per il D-FF, si possa estenderlo in modo da emulare appunto il circuito che è alla base di molti automatismi a scorrimento.
Ecco l'inizializzazione delle variabili, con LED1...LED4 le 4 uscite del modulo (RC4...RC7, con CK l'ingresso del clock (pulsante RC0), con D l'ingresso del dato al primo elemento della catena (stato dell'interrure RC4) e con la variabile Cp che permette il rilievo del fronte d'onda del clock (come già à visto in precedenza):

ed ecco il programma esecutivo:

E' chiaro che ad ogni impulso del clock si avrà l'accensione in sequenza dei vari LED se l'interruttore RC4 è chiuso o, viceversa il loro spegnimento se l'interruttore è aperto.
Il programma è facilmente modificabile per ottenere la bidirezionalità, aggiungendo 2 interruttori (uno per la direzione, l'altro per il dato entrante dalla parte opposta), e raddoppiando opportunamente la parte centrale (Shift register), abilitando una o l'altra secondo la direzione stabilita.

Gestione LED RGB

Uno degli argomenti di grande attualità è il controllo di LED RGB per ottenere sequenze di colori. Il problema è stato trattato in questo articolo, dove però si accennava all'uso di microcontrollori come soluzione più opportuna.
Lo SCU rappresenta un'interessante alternativa (anche se con diverse limitazioni).
Un primo, semplicissimo programma può essere questo:

Il programma non fa uso di timers interni, ma della funzione DELAY (in millisecondi) e non richiede alcuna inizializzazione. Vengono attivati in sequenza (ogni secondo) i 3 colori fondamentali (Rosso, Verde, Blu) di un RGB a catodo comune, con terminali messi al posto dei LED della scheda di valutazione RB4,RB5,RB6.
Per RGB ad anodo comune, può essere usato lo schema con transistor descritto nell'articolo citato, utilizzando come comandi i corrispondenti segnali in uscita dalla scheda.

Per ottenere gli 8 colori fondamentali. il programma può essere modificato in questo modo:

E' ovvio come questo programma possa essere modificato per ottenere qualsiasi sequenza (e temporizzazioni diverse) degli 8 colori.
I limiti nella velocità di esecuzione non permettono però di dosare i differenti colori per ottenere variazioni di tonalità. Non permettono cioè di controllare in PWM i 3 colori di base, se non con artifici di inserzione di differenti combinazioni di resistori. E' però già annunciata un'edizione speciale dello SCU per questi scopi.

Sequenze d'allarme

Un’ulteriore possibile applicazione pratica è la sequenza di acquisizione allarmi (come codificato dalle norme ISA).
In questo programma (ispirato alla ISA1) la condizione d’allarme, rappresentata dalla chiusura di un contatto (in particolare qui RC4), fa lampeggiare una lampada di segnalazione (qui il LED RB4)fino al suo “riconoscimento” (chiusura momentanea del pulsante RC0).
Dopo il riconoscimento, il LED rimane acceso se l’allarme persiste, altrimenti si spegne.
E’ da notare che anche un allarme cosiddetto fuggitivo, cioè che compare solo per un breve istante, viene memorizzato fino al riconoscimento. Altra particolarità è che se l’allarme permane dopo il riconoscimanto (quindi con lampada accesa), vi è una segnalazione a lampeggio anche quando l’allarme scompare, informando l’operatore del cambiamento di stato.

Ed ecco il programma:

Anche questo programma può essere facilmente esteso ad altri allarmi, in particolare per la scheda di valutazione ai 4 interruttori ed ai 4 LED, mantenendo il pulsante comune di acquisizione.



Conclusioni

La rassegna di programmi qui presentata non ha la pretesa di esaurire tutte le possibili applicazioni, ma certamente dovrebbe aiutare in gran parte di queste.
Sarò grato a tutti coloro che segnaleranno possibili miglioramenti o argomenti di interesse generale che potrebbero integrare questa raccolta.

Mi auguro infine che lo SCU diventi un’occasione per incominciare ad affrontare le soluzioni di elettronica programmata, che sempre più si stanno affermando. Troppi infatti nel Forum dichiarano di non potere prendere in considerazione soluzioni di questo tipo per insufficiente conoscenza della programmazione: lo SCU dovrebbe decisamente semplificare tale approccio .

2

Commenti e note

Inserisci un commento

di ,

Concordo in pieno con Tardo Freak. Giovanni e' unico!

Rispondi

di ,

Bell' articolo. Chiarezza di esposizione, sintesi e competenza. Giovanni ha il suo stile inconfondibile che si riconosce sempre. :)

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.