Regolare la velocità

Torna alla pagina CONTROLLO

 

Introduzione

Si propone un esempio che permette il controllo dei movimenti delle nostre locomotive analogiche facendo ricorso a comandi digitali. Un uso avanzato di questo procedimento agevola il funzionamento automatico dell'impianto con partenze e fermate dolci e graduali.


La regolazione analogica della velocità

Le manopole dei trasformatori-raddrizzatori tradizionali regolano la velocità in modo continuo. Nel corso del tempo c'è stata una certa evoluzione:

  1. regolazione tramite reostato tradizionale;

  2. regolazione tramite circuito elettronico, ma dal funzionamento uguale al precedente;

  3. introduzione di accelerazioni e decelerazioni simulate elettronicamente;

  4. uso meccanico di volani di inerzia montati in serie ai motori delle locomotive;

  5. regolazione tramite circuito elettronico con  introduzione della corrente ad impulsi.

Per regolare in modo digitale le velocità di una locomotiva analogica, cioè senza decoder a bordo, occorre comprendere la differenza tra il continuo e il discreto. La regolazione analogica può essere molto fine, modificando i valori in uscita in modo continuo. Nel caso digitale avremo sempre una regolazione a gradini, con valori discreti. Anche i decoder per locomotive digitali più sofisticati permettono una scala di velocità graduali: con essi la velocità può assumere fino a 64 o 128 valori diversi, ma si tratta sempre di un numero finito.

L'esempio che viene proposto può essere potenziato a piacere. Si basa su un principio molto semplice. Prendendo come ingresso l'uscita in continua dal trasformatore-raddrizzatore regolata sulla velocità massima, restituiamo ai binari dei valori minori interponendo delle opportune resistenze in serie. Le resistenze devono essere di potenza adeguata alla corrente circolante, quindi dell'ordine dei 2 watt. Quali sono i valori ideali? Intorno ai 400 ohm. Possiamo impiegare un dispositivo molto utile prodotto da Fleischmann, l'articolo 6954:

Il suo vantaggio sta nel poter regolare manualmente il valore della resistenza, e quindi il grado di rallentamento. Se prendiamo tre articoli di questo tipo, abbiamo già una gamma interessante di possibilità impiegando due semplici commutatori:

Le quattro possibili combinazioni producono tre livelli di uscita. Nel primo e nel secondo caso dell'esempio, non essendoci resistenze associate, avremo la velocità massima. Ora, se sostituiamo i deviatori dello schema con quelli dei decoder digitali, passiamo alla gestione digitale della regolazione analogica. Lo schema che segue prevede l'uso di altri due indirizzi di decoder con uscita non permanente connessi a due relè bistabili per permettere l'inversione di marcia e l'arresto del treno, quindi il suo controllo totale per via digitale:


Il programma

A questo punto dovrebbe risultare facile sapere cosa scrivere come codice per programmare lo schema appena definito. Prendiamo dall'esempio gli indirizzi 1, 2 3 e 4 dei decoder impiegati. Definiamo un modo comodo per descrivere l'attivazione della linea, il verso di percorrenza della linea e il grado di rallentamento che si vuole ottenere; per fare questo si ricorre all'uso degli enumerativi dichiarandone tre che fanno al caso nostro:

Enum Attivazione
    Si = 0
    No = 1
End Enum

Enum VersoPercorrenza
    East = 0
    West = 1
End Enum

Enum TipoVelocita
    Lenta = 0
    Moderata = 1
    Elevata = 2
End Enum

 

Sub AttivaLinea(byVal pModo as Attivazione)

    Const Fine = 32
    Const L = 33
    Const R = 34

    With Me.MSComm1
        Select case pModo
            Case Si
                .Output = Chr$(R)
                .Output = Chr$(1)
                .Output = Chr$(Fine)

            Case No
                .Output = Chr$(L)
                .Output = Chr$(1)
                .Output = Chr$(Fine)
        End Select
    End with
End Sub 

Sub Direzione(byVal pDirezione as VersoPercorrenza)

    Const Fine = 32
    Const L = 33
    Const R = 34

    With Me.MSComm1
        Select case pDirezione
            Case East
                .Output = Chr$(R)
                .Output = Chr$(2)
                .Output = Chr$(Fine)

            Case West
                .Output = Chr$(L)
                .Output = Chr$(2)
                .Output = Chr$(Fine)
        End Select
    End with
End Sub 

Sub VaiAvelocita(byVal pLivello as TipoVelocita)

    Const Fine = 32
    Const L = 33
    Const R = 34

    With Me.MSComm1
        Select case pLivello
            Case Lenta
                .Output = Chr$(R)
                .Output = Chr$(3)
                .Output = Chr$(Fine)

                .Output = Chr$(R)
                .Output = Chr$(4)
                .Output = Chr$(Fine)

            Case Moderata
                .Output = Chr$(R)
                .Output = Chr$(3)
                .Output = Chr$(Fine)

                .Output = Chr$(L)
                .Output = Chr$(4)
                .Output = Chr$(Fine)

            Case Elevata
                .Output = Chr$(L)
                .Output = Chr$(3)
                .Output = Chr$(Fine)
        End Select
    End with
End Sub 

Definite le procedure fondamentali occorre ora pensare come impiegarle. E' molto semplice, inseriamo nella nostra scheda tanti bottoni quanti comandi vogliamo dare. Un bottone può imporre lo stop, un altro cambia il senso di marcia, altri combinano i comandi possibili. Possiamo imporre il cambio di direzione solo a motore fermo. Una sequenza potrebbe essere per esempio quella di muoversi verso est a velocità moderata:

Sub EstModerato

    Call AttivaLinea(No)
    Call Direzione(East)
    Call AttivaLinea(Si)
    Call VaiAvelocita(Moderata)

End Sub
 

Torna all'inizio pagina

Torna alla pagina CONTROLLO