Dicevamo di usare il PC16F877, dalla foto seguente si può vedere come, più o meno, sarà costituito il pulpito del quadro di controllo: ci sarà un display 4 righe x 20 caratteri, due potenziometri e un tastierino numerico con 16 tasti; ci saranno anche le levette di qualche interruttore o deviatore e qualche spia (on-off, reset del micro e simili), ma poca altra roba.
Nella foto si possono vedere i due potenziometri (uno è un po' nascosto, in alto a destra), il tastierino e il display; i due led poco sopra al tasto "1" simulano i motori, mentre le coppie di led rosso-verde rappresentano gli azionamenti "a matrice" che vedremo; al centro fa bella mostra di se il PIC 16F877.
Il tipo di PIC che ho scelto è il 16F877, magari alcuni di voi che conoscono soltanto il 16F84 penseranno si tratti di chissà che cosa, niente di tutto ciò: quello che conoscete già circa il 16F84 è, come minimo, tutto quello che serve per programmare il 16F877; la differenza è costituita da tutta una serie di periferiche che l'877 ha in più rispetto all'84: un temporizzatore in più, l'interfaccia seriale per potersi collegare alla COM del PC, gli ingressi analogici, e altre facezie del genere quindi non vi preoccupate: se volete sapere come funzionano queste cosette, seguitemi: non vi nasconderò nulla di quello che ho imparato.
Veniamo per un attimo ai dispositivi che dovremo comandare:
I treni: in pratica DUE motori indipendenti da 12 Vcc max 0.8 A
Gli scambi: per ciascuno di essi si tratta di due elettrocalamite a pistone: gli avvolgimenti, su dei tubetti, attraggono alternativamente il cilindretto ferroso che è libero di scorrere all'interno del tubetto: la posizione ad uno dei due estremi forza gli aghi a deviare il treno in una direzione, la posizione opposta lo forza in quell'altra.
I relè di alimentazione delle tratte: sono normalissimi relè monostabili: finché alimentati commutano in un modo, disalimentati commutano in un altro.
Cominciamo con il sistema di alimentazione dei motori dei treni: di solito si tratta di motori 12Vcc, 0.5-0.8A al massimo; vuol dire che se la corrente sale decisamente oltre i 3A è per un cortocircuito, non altro, vedrò comunque come controllare la corrente massima e bloccarne l'erogazione in casi critici; tornando al nostro azionamento, ecco come ho previsto sia il circuito fra il PIC ed i binari (motori):
NOTA BENE: non è una mia idea: l'ho copiata dalla rete ma non ricordo il sito, chiedo scusa
Vediamo come funziona? SI ?? C'è qualcuno che ha bisogno di informazioni? BENE, ecco qui:
prima cosa, alle due estremità della scatoletta "MOTOR" corrispondono le due rotaie, ovvero i due poli del motore di ogni locomotiva.
Alimentiamo il tutto: +Vmotor con la tensione raddrizzata ai capi del condensatore da 10000 microFarad dello schema dell'alimentatore, e la massa collegata alla Vss dello stesso disegno, ovviamente colleghiamo un motore, pardon, mettiamo una locomotiva sui binari collegati come "MOTOR": così come siamo messi non succede nulla, il treno non si muove, vediamo il perchè:
osserviamo i due transistor TIP122 più in alto: tra collettore e base hanno, entrambi, una resistenza da 1 kOhm;
entrambi i due transistor più in basso, invece, hanno si, una resistenza da 1 kOhm collegata alla base, ma quella resistenza, attraverso il PIC che non si vede, è inizialmente collegata a VSS, cioè massa.
In questa situazione entrambi i transistor "in basso" non conducono, quindi la corrente che passa da +Vmotor alle due resistenze da 1 kOhm verso le basi dei due transistor "di sopra", è libera di alimentare in pieno i due transistor stessi che vanno (andrebbero) in saturazione; si, vabbeh, però non succede nulla perchè essendo tutti e due in saturazione, entrambi i poli del motore sono collegati soltanto a +Vmotor, quindi non circola alcuna corrente e, di conseguenza, li motore non tira, non gira.
Orbene, se portiamo una 5V al punto "FWD", tramite il PIC che vi sarà collegato, ovviamente, il trasistor "inferiore" di sinistra andrà in saturazione, quindi il suo collettore si porterà (praticamente) a massa.
In questa condizione tutta la corrente che fluisce attraverso la resistenza tra +Vmotor e la base del transistor "superiore" sinistro viene deviata a massa attraverso il transistor "inferiore", quindi il "superiore" si interdice, si blocca: attraverso di lui non passa più nulla (o quasi); ma allora ?
Allora il ramo destro del circuito è rimasto come lo avevamo visto prima, cioè con il transistor "inferiore" ancora interdetto, quindi come se non ci fosse, ma quello "superiore", con la base regolarmente alimentata dalla resistenza, conduce per tutto quello che può condurre, come se fosse un corto-circuito, quindi il circuito completo attraverso cui può circolare la corrente è formato da:
transistor superiore di destra
motore
diodo (tra motore e trans. inf. di sinistra)
transistor inferiore di sinistra
e tutti conducono, quindi il motore può girare e TIRARE in quanto, se supponiamo trascurabili le resistenze costituite dai transistor e dal diodo, possiamo pensare il motore come se fosse collegato direttamente all'alimentatore; in queste condizioni, se il motore é fermo, sviluppa la sua massima coppia.
Togliendo la 5V dal transistor di sinistra e fornendola a quello di destra si invertono pari-pari percorso della corrente e senso di rotazione del motore; infine se, per errore, forniamo la 5V ad entrami i transistor insieme, non provochiamo alcun danno: il transistor "inferiore" di sinistra interdice il suo "soprastante", così come fa quello di destra: nessun cortocircuito.
Ok, abbiamo il circuito di alimentazione del motore, ma come facciamo per regolarne la velocità?
Facciamo commutare i transistor molto velocemente, uno alla volta, secondo il senso di marcia che vogliamo, pilotandoli con un'onda quadra a larghezza variabile:
Va da sé che in ciascun intervallo tra le due tacche rosse, più a lungo resta "ON" la tensione, maggiore è il valor medio nel periodo, di conseguenza anche il valor medio della corrente nel motore e quindi la sua velocità.
Ma come faccio per variare la larghezza "ON" ? Avremmo diverse possibilità, come ad esempio usare un NE-555, ma se abbiamo a disposizione un mostro come il PIC, non vedo perchè dovremmo usare qualcosa "in più": dovremo dar fondo a tutte le nostre risorse mentali per costruire un software che realizzi tutto quanto, ma ci riusciremo.
Intanto, per vedere quali altri azionamenti dobbiamo gestire, clicchiamo qui, su Parte Elettronica 2, altrimenti vedete i link qui sotto.