Ascensore a 3 piani

Identificazione progetto

progetto n.8

autore

email

note

Ascensore a tre piani con PIC16F876 o 18F2550

Marco Gottardo

ad.noctis@gmail.com

Linguaggi usati:

1)Ladder PIC

2)Hitech C16

3)Hitech C18

Premessa

Utilizziamo la Micro-GT mini per automatizzare il modellino in scala di un montacarichi, impropriamente chiamato dagli studenti "ascensore" dato che si trascureranno molte delle sicurezze d'obbligo negli impianti reali.

Descrizione e scopo del progetto

Ecco a voi la seconda tesina scolastica. Segue a ruota la realizzazione del cancello automatico a scorrimento  e come questo rappresenta una pietra miliare di ogni corso di automazione.

Dal punto di vista dell'implementazione firmware risulta addirittura più semplice dato che il posizionamento della cabina avverrà sviluppando solo una rete logica combinatoria, rispetto alla tesina del cancello automatico che richiede la conoscenza della programmazione degli interrupt e la coesistenza di molte temporizzazioni.

Rispetto ad un impianto reale faremo molte semplificazioni, alcune anche sugli essenziali dispositivi di sicurezza, al punto da dovere declassare l'impianto da "ascensore" a "montacarichi".

L'esposizione teorica sarà comunque molto particolareggiata e curata.

La prima versione l'ho svolta personalmente, sviluppandola sia in LadderPic che in Hitech C, mentre la seconda realizzazione è stata delegata all'allievo Daniele Scaranaro che ha risolto in maniera molto elegante, introducendo alcune personalizzazioni, lo sviluppo del programma in Hitech C16 e i cablaggi delle varie componti del sistema di controllo e di potenza.

Un'ultima raccomandazione rivolta ai nuovi tecnici e diplomandi, data la vicinanza con l'esame di stato, è quella di non fare un mero copia incolla del contenuto di questo articolo per presentarlo alle commissioni, ma di farlo proprio, con aggiunte, modifiche, migliorie. Si provi ad esempio a munire la cabina di porte automatiche e delle dovute protezioni. Con un pò di ingegno tutto è possibile.  

Marco G. as ad.noctis

Circuito stampato descrizione

I circuiti stampati impiegati in questo articolo sono disponibili a chi ne avesse bisogno, fino ad esaurimento scorte: Gli interessati possono richiederli all'indirizzo mail ad.noctis@gmail.com

I pcb hanno l'aspetto che vediamo nelle figure sottostanti:

PCB ponti H, disponibili in pannelli di 10 esemplari. prezzo di realizzo 20€ .

 PCB mini shield PWM power inverter. Prezzo di realizzo 5€

 PCB Micro-GT mini. Prezzo di realizzo 5€

 

Descrizione meccanica dell'impianto, fase di intervista.

In uno stabile a tre piani è richiesta l'istallazione di un impianto di montacarichi la cui cabina mobile si posiziona  in corrispondenza di tre sensori di prossimità induttivi lambiti da una camma a cui deleghiamo la responsabilità dell'allineamento della cabina con il livello del piano. I comandi di chiamata si trovano in corrispondenza del vano di carico o della porta di accesso nel caso si realizzasse un vero ascensore. Tali comandi sono realizzati con dei pulsanti, a cui è abbinata la medesima numerazione dei piani, cablati in modo che la loro azione sia normal 1->pressed 0. I comandi di chimata sono duplicati all'interno della cabina stessa.

Esternamente, ovvero in corrispondenza del piano e subito in prossimità del pulsante di chiamata, viene istallato un display a 7 segmenti che in ogniuno dei tre livelli indica lo stesso numero ovvero l'ultima posizione di allineamento con un piano che aveva la cabina anche se attualmente in movimento, ad esempio, se è stata chiamata al piano centrale ed è partita dal piano terra, questa mostrerà il numero 0 per tutto il viaggio fino a che si allinea al proxmity del piano centrale che avrà l'effetto di cancellare il numero 0 e scrivere il numero 1 a cui si è fermata. Nella versione dell'allievo Daniele Scaranaro vedremo invece un effetto di rotazione dei segmenti del display led.

Il display, anche durante il movimento della cabina, mostra un numero fisso pari al valore del piano da cui ha iniziato il movimento e verrà aggiornato solo al momento di un nuovo allineamento anche se transitorio.

Durante il movimento della cabina alcune segnalazioni luminose a forma di freccia in sù e freccia in giù mostrano il verso del moto della cabina.

 

I segnali di input.
Questo progetto ha pochi ed essenziali segnali di comando corrispondenti ai tre input dei pulsanti di chiamata e alle tre fotocellule di allineamento della cabina con il piano.
E' essenziale, per ragioni di stabilità del segnale, che questi si presentino al pin del PIC con la logica:
Normal 1 -> pressed 0
Ovviamente questo comporta la presenza di un pari numero di resistenze, dette di pullup, aventi lo scopo di ancorare il segnale stabilmente a Vdd quando non vi è alcuna azione sul pulsante o sulla fotocellula.
Per i programmatori di PLC non sarà complicato ragionare con i segnali delle fotocellulule in caduta di tensione, dato che questa è la maniera canonica di operare con esse, ma lo stato dei pulsanti potrebbe risultare invertito rispetto ai ragionamenti canonici.
In realtà basterà solo farci un po la mano e tenere sempre presenti che i bassi livelli di tensione (tipicamente TTL) che stiamo inviando a bordo macchina non sono così robusti e immuni al rumore come lo 0 ->24 tipico del PLC.
 
La separazione galvanica.
Con il termine "separazione galvanica" intenderemo la tecnica con cui trasferiremeno segnale da un punto di un circuito ad un altro punto del circuito  facendo in modo che gli elettroni che trasportano questo segnale, che tipicamente è un comando, non siano fisicamente gli stessi.
Vi sono molte tecniche che consentono di manipolare segnali a bordo macchina alti e robusti, che comunque giungonoTTL ai pin del PIC. Ne vedremo alcune basate sull'isolamento galvanico che sono sostanzialmente di tre tipi

La separazione galvanica magnetica è possibile quando i segnali sono alternati tramite il circuito magnetico di un trasformatoredi accoppiamento. Se ad esempio volessimo acquisire un segnale alla tensione domestica potremmo usare un primario a 220Vac e il secondario a 12 Vac, oppure a qualunque tensione ci sia utile. Il circuito magnetico limita la potenza trasmessa proteggendo il circuito, separa le eventuali componenti continue da quelle alternate ed ha altre importante proprietà.

La separazione galvanica elettromeccanica può permettere ad esempio l'accoppiamento di circuiti in continua con circuiti in alternata e viceversa, si pensi ad esempio a relè con bobina in alternata che chiudono un contatto meccanico che trasformerà il segnale di presenza in una tensione continua, con questa tecnica posso ad esempio leggere una presenza di tensione a 220 Vac con un PLC o una scheda a Microprocessore o Microcontrollore.

La separazione galvanica optoelettronica è invece costituita da una conversione del segnale Elettrico ->luce ->elettrico e serve per isolare totalmente un circuito di logica e a microprocessoredal bordo macchina. Dall'entrata in vigoare delle normative CE a gennaio 1996 questo tipo di separazione è praticamente obbligato. Eventuali impulsi, sbalzi, disturbi  sulle linee di segnale digitale sono ignorate dato che la separazione del diodop led che pilota il fototransitor all'interno dell'optocuoler  sono livellati al normale livello TTL proteggendo cosi i PORT di accesso del controller.

L'argomento sarebbe molto vasto ma non si può andare oltre in questo contesto perchè l'articolo si preannincia già piuttosto lungo.
 

 

Struttura meccanica del modello.
Lo sviluppo di ogni automazione, sia con microcontrollore che con PLC, impone che si realizzi almeno sulla carta un disegno  meccanico della struttura.
Su tale strutturra si dispongono gli oggetti che costituiscono il bordo macchina, ovvero i sensori, che costituiscono l'input del sistema di controllo, e gli attuattori, che costituiscono l'uscita del sistema di controllo.
In questo caso l'automazione è piuttosto semplice quindi dal disegno sarà anche possibile ottenere facilemente il modello in scala reale a cui collegare la Micro-GT mini ed eseguire il controllo realistico.
Lo schema meccanico può essere realizzato con qualsiasi strumento di disegno o CAD, in questo caso basterà il semplice PAINT che farte del sistema operativo e quindi a disposizione di tutti.
 

modello in scala dll'impianto

 
Nella struttura sopra disegnata sono riportate solo le tre fotocellule, i tre pulsanti di chiamata e il sistema di inversione di marcia.
Il ponte H a contatti è solo indicativo in linea di principio e non rappresenta la soluzione finale che è invece realizzata con il mini shield power inverter rappresentato nel capitolo 15 di "Let's GO PIC!!!".
Una prima analisi del funzionamento è semplice ed immediata:

E' evidente che un errore di comando della simultanea chiusura dei contatti A e B comporti la chiusura dell'alimentazione Vcc verso massa ovvero un corto circuito.

Vediamo subito una soluzione che impedisce il corto circuito anche in presenza di un errore di comando. 

modello in scala dll'impianto

Questa prima variante trova soluzione al problema dei possibili corti circuiti verso messa. La realizzazione è possibile usando due soli relè ciascuno con un solo contatto di scambio ovvero una conessione NA e una NC rispetto al medesimo comune. Si realizzano le seguenti condizioni:

In certi casi potrà essere necessario un piccolo aggiustamento della velocità di salita e discesa della cabina tramite una regolazione da potenziometro. L'hardware va modificato secondo il sucessivo schema in cui si inserisce uno switch di potenza nella posizione indicata in figura, ovvero tra il ponte H e la sua richiusura verso il negativo del generatore di potenza.

modello in scala dll'impianto

Dato che in questo caso il ponte H attraverso l'elemento attivo,sarà controllato tramite un segnale PWM potrebbe essere necessario proteggere le giunzioni tramite i diodi di ricircolo. Nel nostro specifico modellino in scala il carico induttivo presentato dal piccolo attuattore DC è talmente irrisorio che se ne potrà fare a meno tuttavia è indispensabile in fase di stesura di una Tesina scolastica un certo rigore espositivo.

 La parte che riguarda il ricircolo delle extra correnti induttive è già stato ampiamente esposto in un precedente capitolo di "Let's GO PIC!!!", quindi qui verebbe riportato uguale.

Per evitare una ripetizione semplicemnte raccolgo il paragrafo in un file.doc e lo rendo scaricabile dal prossimo link.

 I diodi di ricircolo.

Scarica da questo link il file che contiene il paragrafo già esposto nel precedente capitolo del tutorial Let's GO PIC!!!

UserFiles/ad.noctis/Sezione di ricircolo.doc.

Altri diodi equivalenti con il P600K potranno ad esempio essere: FR303 spesso più facilmente reperibili..

La lista delle attibuzioni.

Un passo fondamentale è quello di assegnare ai segnali in gioco i pin del microcontrollore e procedere d'ora innanzi in maniera vincolata a mantenere queste attribuzioni.

Questa automazione è piuttosto semplice ma è un passo fondamentale per i nuovi tecnici.

Ordiniamo l'attribuzione su tre colonne, simbolo (detto anche label), operando (punto di I/O del microcontrollore), commento che esprime in primo luogo che tipo di contatto NA o NC esegue il lancio del segnale verso i pin di I/O. Ovviamente è fondamentale che il commento ricordi quale è l'azione di ogni segnale .

 SIMBOLO  OPERANDO       COMMENTO                                                                 
FTC0  RA0  contatto NC della fotocellula del piano 0 (terra)
FTC1 RA1  contatto NC della fotocellula del piano 0 (terra)
FTC2 RA2  contatto NC della fotocellula del piano 0 (terra)
puls0 RA3  contatto NA del pulsante piano terra  (0)
puls1 RA4  contatto NA del pulsante piano centrale (1)
puls2 RA5  contatto NA del pulsante piano piu alto (2)
ade RB0  segmenti ADE del display
g RB1  segmento G del display
c RB2  segmento C del display
f RB3  segmento F del display
su  RB4   comando cabina in salita 
giu   RB5  Comando cabina in discese
su1  unsigned char  prima memoria comando salito
su2  unsigned char  seconda memoria comando salita
giu1  unsigned char  prima memoria comando discese
giu2  unsigned char  seconda memoria comando discesa
 riallinea  unsigned char  memoria del comando di riallineamento
 

 Il programma si articola in due blocchi ben distinti, il primo per il controllo del motore e il secondo per il controllo del display. Lo sviluppo, come anche l'inserimento all'interno della memoria del PIC può avvenire in momenti diversi dato che operano in maniera del tutto disgiunta.

Ovviamente se inseriamo nel PIC solo uno dei due blocchi vedremo funzionare solamente la parte relativa a questa, in effetti durante le mie lezioni di automazione industriale, o di programmazione dei Microcontrollori PIC che tengo presso il centro culturale zip di Padova, vengono riempite ben due lezioni di tre ore ciascuna, La prima per la realizzazione il cablaggio e il test della parte relativa al controllo del motore, e la seconda relativa alla corretta accensione del display.

Quale delle due parti venga sviluppata per prima non è importante dato che in caso si implementasse prima il display lo potremmo testare correttamente tirando con le mani il filo della cabina dell'ascensore per allinearla ai piani verificando che venga visualizzato il corretto numero di piano con la corretta azione di autoritenuta tra i piani. .

Funzionale del comando del motore.

Come possiamo vedere qui sotto, il corretto controllo del motore avviene con soli 6 segmenti di programma.

Analizziamoli suddivisi in tre blocchi logici:

I  primi quattro segmenti rendono possibile la memorizzazione delle chiamate tramite i pulsanti posti su ogni piano e da quelli collegati in parallelo e installati all'interno della cabina .


Vediamo una dettagliata descrizione segmento per segmento, numerandoli da sinistra verso destra e considerando che il calcolatore non va logicamente "a capo" come abbiamo invece fatto noi, quindi il segmento del prossimo gruppo sarà il quinto e i successivi due il sesto e il settimo, come anche si proseguirà la numerazione nel gruppo di controllo del display.

Il successivo, quinto segmento serve a gestire le eventuali anomalie di posizionamento dovute al fortuito de allinemanto della cabina con una delle tre fotocellule di piano, difatti questa condizione, rilevato dallo stato logico 1,1,1 delle tre fotocellule non consentirebbe alcun movimento con i soli quattro segmenti sovrastanti.

Per semplicità si è deciso di portare la cabina sempre ed in ogni caso al piano terra, come sarà visibile nel segmento 6.

E' però importante che l'azione non venga intrapresa se la cabina si trova già in movimento dato che la meccanica presenta in maniera naturale questa condizione di fotocellule durante le transizioni di piano.

Per impedire questo errore logico sono inseriti i contatti normalmente chiusi dei comandi marcia prima della della chiusura dell'anello di autoritenuta.

Si ottiene il seguente quinto segmento.
 

I segmenti 6 e 7 sono semplici ed intuitivi ma comunque una passaggio fondamentale in ogni automazione specialmente se svolta con controllori logici programmabili (PLC) di cui ci satimo rifacendo allo stile.

Seguiremo sempre la fondamentale regola di non pilotare mai durante lo svolgimento dei segmenti le uscite, che potranno essere motori, teleruttori, elettrovalvole ecc, ma memorizzeremo le condizioni in elementi booleani di memoria per poi raccorergli nelle opportune combinazioni logiche, che tipicamente saranno un OR, ed agire una ed una sola volta in tutto il programma nella singola uscita del PLC o come ne nostro caso del microcontrollore. 

 


Il segmento 6 raccoglie i bit di memoria (per i programmatori Siemens noti come merker) in OR per il pilotaggio dell'uscita abbinata al relè di marcia in salita del motore, mentre il segmento 7 raccoglie le memorie che fanno commutare il relè di marcia in discesa della cabina, compreso quella che si cura del riallineamento in caso di una predente anomalia del ciclo di posizionamento come potrebbe avvenire in caso di mancanza dell'energia durante una corsa. Non è necessario un contatto di interblocco in serie alle configurazioni OR dato che il corto circuito viene impedito a livello hardware nella particolare configurazione a ponte del Micro-GT mini shild power inverter.

Scarica da questo link i file FidoCad del funzionale controllo motore -> download funzionale motore.

Funzionale del pilotaggio dei display.

Vediamo come costruire i segmenti di gestione segmenti del display

Nel secondo blocco di programma gestiamo i segmenti del dei tre display a sette segmenti. Ci accorgeremo con e' necessario imegnare sette linee del PORT di sucita del PIC ma ne basteranno 3 oppure 4 nel caso non volessimo aggiungere un BJT che nega uno degli output prodotti.

L'analisi inizia dalla tabella di verita' che raccoglie lo stato delle fotocellule.

FTC2 FTC1 FTC0   a  b c d e f g
1 1 0    1 1  1  1  1  1  0
1 0 1   0 1  1  0  0  0  0
0 1 1   1 1  0  1  1  0  1

Analizzando la colonna relativa al segmento b ci accorgiamo che risulta sempre acceso, quindi allo stato logico 1, ne consegue che possimo collegare direttamente il segmento e la sua resistenza di limitazione della corrente, alla tensione fdi alimentazione + 5v liberando un pin del pic. I segmenti ade risultano pilotati tutti dalla stessa combinazione logica, quindi li collegheremo in parallelo ad un'unica resistenza di limitazione che limiti la corrente a 3 volte il valore concesso al segmento b per poi collegarsi ad un unico pin d'uscita del pic. I segmenti c e g risultano essere uno il negato dell'altro per cui escogitiamo se non avessimo disponibili punti liberi una tecnica che ci permetta di liberare un ulteriore pin del pic utilizzando un transistor bjt esterno del tipo BC337NPN. In base colleghiamo una resistenza compresa tra 1500 e 2200 ohm che ne garantiscono la saturazione pilotati a livello TTL. Mentre in collettore posizioniamo un pull up di 10 k. Il segnale fornito a monte della resistenza di base rappresenta il segnale c mentre  quello relevato al collettore del bc337 (a valle del pullup) rappresenta c negato ovvero il comando del segmento g. Per quanto riguarda il segmento f  risulterà acceso solo durante la visualizzazione dello 0 ovvero quando risulta interrotta la fotocellula di piano FTC0.

La tenica di implementazione consiste nel generare i 4 segmenti ( o tre se si esegue la negazione hardware del segmento c) mappando la matrice di imput degli stati delle fotocellule in ognuno dei 4 segmenti indipendenti). Il procedimento quindi va iterato 4 volte.

Nella sovrastante tabella vediamo che solo la prima e l'ultima riga della matrice di imput sono di interesse per il pilotaggio del segmento ade, ovvero le 2 righe indicate in verde poste in or logico mappano le colonne indicate in rosa come se fossero una sola portando alto il pin RB0 della micro GT mini.

 Per quanto riguarda il segmento f, come vediamo qui sopra, esiste uan sola combinanazione che pilota l'uscita RB3 collegata appunto al seg f -> pin 9 del display LED.

Il segmento g, connesso al pin 10 del display e al pin RB1 del PIC è  anche esso pilotato da un'unica riga combinatoria delle  fotocellule, quindi risulta più conveniente implementare questa e poi usare il suo negato per ottenere il segmento c piuttosto che il contrario che richiederebbe invece due righe combinatorie in input.

Vediamo adesso la piedinatura standard di un display a sette segmenti a catodo comune con sigla TFK119. Il modello è del tipo a 10 pin disposti su due gruppi di 5 sui lati corti del rettangolo del suo housing. Il passoa di questi pin è standard e può trovare appoggio negli zoccoli a 20 +20 pin normalmente impiegati per i PIC16F877 a 40 pin dual in line, si veda a tal proposito l'articolo Micro-Gt universal display.  

Come notiamo facilemente ci sono due pin internamente collegati assieme e al catodo comune, ovvero il pin 4 e il pin 8 che potranno essere usati indifferentemente.

 

L'immagine sopra mostra la piedinatura come viene normalmente indicata sui manuali, ma personalmente prefrisco riportare anzichè i numeri dei piedini direttamente la lettera corrisponedente al segmento, come nella prossima immagine dove si può fare a meno della tabellina di corrispondenza.

          

Per esercizio possiamo provare a scrivere la seguenza di pin e di "lettere" che sono a 1 logico, e qundi il segmento è acceso, per le tre configurazione e cercare di ricostruire le tabelline date sopra. Le conessioni interne al display sono queste:
 

Il calcolo della resistenza di limitazione si effettua considerando la semplice maglia:

 "tensione uscita-> tensione Rd x I -> Vak"

Dove con Vak si intende la tensione che il segmento mantiene costante ai suoi capi (essendo un diodo) quando è acceso. Tale informazione è reperibile sul databook del dipositivo che impiegherete ma tipicamente va da 1,5V a 2 volt.

La corrente tipica è anch'essa espressa nel databook, ma generalmente si limiterà a 10mA.

Valori spannometrici, che solitamete non fanno danni possono essere 2k2 per segmenti collegati alle uscite dei PLC e quindi a 24 Vdc, mentre 330 ohm  andranno bene per le uscite a 5V del PIC, sottointendendo l'impiego di display a catodo comune..

download file FidoCad cablaggi elettrici Display
 

 Il cablaggio elettrico dei tre display avviene mettendo in parallelo tre sezioni identiche alla sovrastante.

Come avrete notatao nei morsetti sono indicate le lettere corrispondenti ai segmenti luminosi ma non i pin del PORT del PIC, e questo e' stato premeditato. Chiediamoci il perche'.

Si presti particolare attenzione al fatto che ogni punto di conessione di uscita del PIC e' progettato per sopportare una corrente massima di 20 milli ampere. Non e' difficile intuire, guardando il punto di collegamento "ade" che in quella linea si richiede una corrente di circa 30 mA che porterebbe alla distruzione quel punto di I/O.

IL problema si risolve facilmente collegandosi al display tramite una interfaccia costituita da minimo di 4 BJT npn del tipo BC337, compreso quello gia' visibile in figura, quando si decida di utilizzare la strategia di pilotaggio che sto andando ad esporre, ad un massimo di 7 transistor BJT qualora si decida di pilotare i segmenti singolarmente.

I ragionamenti fatti portano a questa prima bozza fatta a mano libera..

 

In questa soluzione si e' deciso di sviluppare separatemante il segmento "g" e il segento "c" ove ques'ultimo e' ottenuto come negato del precedente.

Con l'aiuto del FidoCad rendiamo un po piu' professionale il lavoro.

Chi ancora non lo avesse lo puo' scaricare da questo link -> download FidCad.

 

Si ribadisce che l'insieme di tutti gli 11 segmenti, ovvero i sette precedenti piu i quattro sovrastanti costituiscono il programma intero, a meno delle varie protezioni che si vorranno aggiungere in sviluppi futuri.

download immagine sovrastante e file FidoCad 

Si ricorda inoltre che il medesimo funzionale potra' essere utilizzato anche per la programmazione di un PLC in linguaggio ladder. .

 

programmazione in LadderPIC.

I segmentidi funzionale esposti vengono convertiti in ladder PIC in maniera quasi immediata. Un sistema di programmazione analogo sara' integrato nella nascente piattaforma software MG-Lab concepita appositamente per le varie versioni dei programmer IDE e domeboard Micro-GT. Le prime beta dovrebbero essere distribuire entro l'anno 2012.
 

Per il momento il LadderPIC e' scaricabile dal link -> download LadderPIC

La prima parte del programma, ovvero quella che memorizza su bit di memoria interna gli eventi di chiamata e' visibile nell'immagine sottostante..

 

memorizzazione degli eventi di chimata nei "Merker" interni

Durante la fase di programazione, al fine di ottenere quanto mostrato sopra operare seguendo questi passi:

I comandi disponibili in LadderPic sono visibili qui sotto e rendono diponibile molto di quello che puo' servire per una programmazione completa delle periferiche del PIC..

Per non dilungarsi troppo, a rischio di andare fuori tema, evitiamo di descrivere i comandi disponibili uno alla alla volta, cosa che invece faremo quando avremmo questo editor o uno similare integrato nell'IDE software MG-Lab.

Proseguiamo con l'implementazione dei segmenti al fine di ottenere il programma completo del nostro modellino in scala.

Il segmento numero 5  si cura come gia' detto di riallineare la cabina in caso di mancanza di tensione durante il funzionamento. In questo caso qualunque pulsnte venga premuto la cabina va a riallinearsi al piano terra.

Finora non si e' ancora pilotata alcuna uscita del PIC ma si sono solamente memorizzate le situazioni di chiamata in bit interni, ad esempiu' "allinea" e' un cosi' detto rele' interno, motivo percui il ladderpic aggiunge davanti al nome la lettera "R". Come possiamo intuire con la lettera "X" si indica la variabile libera e con la lettera "Y" la variabile dipendente, ovvero le uscite. Del resto questo e' quanto di consueto si interpreta per le funzioni matematice del tipi  Y=f(X) da legersi, nel nostro caso, "le uscite sono funzioni oppure dipendono dagli ingressi".

Raccogliamo ora tutti questi rele' interni con le corrispondenti combinazioni logiche elementari ed muoviamo effettivamente il motore.

Ora implementiamo i segmenti che controllano i tre display connessi in parallelo e che mostrano la posizione della cabina, o meglio la ritenuta dell'ultimo piano con cui la cabina era allineata durante il movimento.

Il nostro programma LadderPIC si conclude cosi' come si vede dalla scritta [end] .

Non ci rimane che procedere alla fase di simulazione e alla generazione del file hex che sara' riversato nella memoria del PIC.

Queste due fasi avvengono nella sequenza indicata. Cominciamo cliccando sul tasto simulazione, al primo click non si avvia la simulazione ma si predispone l'ambiente. vedrete apparire questo menu a tendina:

 Come si nota facilmente tutte le linee non sono in conduzione. I motivi sono due.

Agendo su "avviare la simulazione in tempo reale" inizia il controllo dello stato dei contatti, ma la corretta esecuzione del programma avvera' solo se ci si trova allo stato iniziale che definiremo "zero macchina".

Lo zero macchina.

Si definisce "zero macchina" una particolare combinazione dell'I/O compatibile con le possibile configurazioni hardware e meccaniche, a cui si associa il concetto di "inizio ciclo".

Se la  simulazione non inizia da questa posizione probabilmente il programma non risponde fin dal primo segmento o, ancor peggio, si muovera' in maniera poco intuitiva

Per chiarire, lo zero macchina di questo ascensore, una volta deciso che avviene con la cabina al piano terra, sara' dato da FTC2=1, FTC1=1,FTC0=0, situazione che indica la presenza della cabina al piano terra essendo le fotocellule cablate normalmente chiuse. Inoltre puls2=0. puls1=0, puls0=0, che indica nessuna chiamata in corso. Tutte le memorie interne =0 che indica che lo storico dell'automazione non comporta movimenti precedenti a questo istante in corso. E per finire SU=0 e GIU=0, che indica motore fermo.

 il cinematismo di impianto.

 Durante la fase di simulazione, il tecnico dovra' seguire l'evoluzione delle parti meccaniche riadattando di conseguenza il bordo macchina, ovvero lo stato delle fotocellule.

ad esempio, per simualre il primo segmento

Analogamente, durante la corsa della cabina, si dovra' verificare lo stato delle uscite relative alla visualizzazione dei numeri 0,1,2 sul display, e alla loro autoritenuta. Le corrette condizioni sono da leggersi nelle tabelle di verita' date in precedenza.

download programma LadderPIC -> Tesina ascensore tre piani con Micro-GT mini Pic16F876A .

La compilazione.

Ottenere il file .hex e' semplice ed efficace.

Cliccare sul menu' "Compilazione" e selezionare la seconda voce "compila come" si aprira' un browser che vi chiedera' dove e con che nome salvare il file a cui verra' aggiunta automaticamente l'estensione .hex

scarica il file .hex ->tesina ascensore file hex
 

 

versione Hitech C16 per Micro-GT mini del prof. Gottardo Marco.

Vediamo come convertire i segmenti LadderPic esposti sopra in Hitech C16, in modo poter sviluppare il pogramma con la piattaforma MpLab che è il default di casa Microchip. Una volta compilato ed ottenuto il file hex potremmo riversarlo nella Micro-Gt mini in varie maniera, utilizzando la tecnica del bootloader, abbinandola alla Micro-GT IDE via ICSP, abbinandola a un PICKIT3, o a qualunque sistema ICSP. In attesa che sia pronta la piattaforma software dedicata per lo svilippo e la programmazione, la MG-Lab, potremmo usare picprog2009 per flashare il PIC.

file componenti del progetto tesina ascensore

Il programma, pur essendo in hitech C è fatto in uno stile nuovo che ho pensato per rispecchiare fortemente lo stile di programmazione dei PLC siemens. Secondo tale stile abbiamo un file principale "tesina_ascensore.c" che funge da OB1 in cui è anche inserita un'area dati che funge da DB, in cui sono definite le variabili. All'interno dui questo programma organizzativo vengono semplicemente richiamati in sequenza gli eventi costituiti dai singoli segmenti:

 while(1){   //inizio ciclo infinito
  segmento_1();
  segmento_2();
  segmento_3();
  segmento_4();
  segmento_5();
  segmento_6();
  segmento_7();
  segmento_8();
  segmento_9();
  segmento_10();
  segmento_11();
  }

 

Con questo stile il programma risulta estremamente leggibile

Ogni segmento è sviluppato da una funzione che grazie alluso di un costrutto "if" sbroglia il segmento nella corrispondente logica combinatori. Vediamo per esempio il primo segmento:.

void segmento_1(void){
//memoria evento chiamata secondo piano  
if (((((puls2) &&((FTC2 && FTC1 && (!FTC0))||(FTC2 && (!FTC1) && FTC0)))) || (su1)) && (FTC2)) su1=1;
else su1=0;
}

La "tabella dei simboli" che nella programmazione di un PLC va compilata per prima, è rappresentata dalle definizioni all'inizio del file principale, anche se avrei potuto dedicare una file apposito. Questa è:

#define FTC0 RA0 //fotocellula del piano terra cablata normalmente chiusa
#define FTC1 RA1 //fotocellula del piano centrale cablata normalmente chiusa
#define FTC2 RA2 //fotocellula dell'ultimo piano cablata normalmente chiusa
#define puls0 RA3 //pulsante di chiamata al piano terra cablato normalmente aperto
#define puls1 RA4 //pulsante di chiamata al piano centrale cablato normalmente aperto
#define puls2 RA5 //pulsante di chiamata all'ultimo piano cablato normalmente aperto


#define ade RB0 //uscita controllo cadoti segmenti ade in paralello
#define g RB1 //uscita controllo catodo del segmento g
#define c RB2 //uscita controllo catodo segmento c
#define f RB3 //uscita controllo catodo segmento f
#define su RA4 //uscita pilotaggio bobina relè del ponte H cabina salita
#define giu RA5 //uscita pilotaggio bobina relè del ponte H cabina in discesa


char su1,su2,giu1,giu2,riallinea; //definizione dei relè interni noti in programmazione dei PLC come Merker

 

I file hex e i sorgenti sottostanti sono sviluppati per PIC16F876A ma potranno essere inseriti anche nella memoria del PIC16F877A.

scarica i sorgenti C16 -> tesina ascensore 3 piani per Micro-Gt mini  

scarica il file hex di questa versione -> hex versione C16 di Marco Gottardo .

Alcuni momenti dell'edizione di Maggio 2012 del corso PIC.

Descrizione del firmware 

Un esemplare dell'ascensore a tre piani è stato realizzato e cablato al corso di Maggio 2012 da me tenuto presso il centro culturale ZIP (zona industriale di Padova). Il corso serale è rivolto a operatori e tecnici in formazione continua, spesso già in possesso di una discreta esperienza lavorativa ma che ritengono opportuno cimentarsi nel "nuovo" ambito della programmazione dei Microcontrollori.

Nella foto vediamo un gruppo di allievi soddisfatti dopo la fase di test del nostro modello in scala.

Allievi centro Zip Maggio 2012

Vediamo un particolare costruttivo della simulazione di fotocellula assemblato in questo esemplare. Si tratta di un LED ad alta emissionepuntato direttamemte contro ad una fotoresistenza che costituisce un partitore di tensione  essendo collegata ad una resistenza di valore fisso. La tensione ripartita è nviata all'ingresso di un comparatore non invertente contenuto nel comunissimo LM324. .

La fotocellula è fissata alla struttura in legno tramite un chiodino, l'oggetto verde che vediamo a sinistra del montante, sfruttando i naturali fori della basetta utilizzata.

Nel contesto della struttura, l'oggetto è posizionato come vediamo nella prossima foto.

Nella foto vediamo chiaramente che il display segnala la presenza della cabina al piano "2" mentre la foto è scattata al piano terra. In alcune occasioni sono stati realizzati esemplari muniti di porte scorrevoli apribili. Per motorizzarle erano stati usati dei motorini impiagati in campo automobilistico per il blocco portiere..

In questo esemplare è stato costruita al volo una scheda di interfaccia su millefori, di cui vedremo schema e realizzazione più professionale più avanti nel medesimo articolo. Con le ore che avevamo disposizione, durente le lezioni notturne, non si poteva soffermarsi troppo anche perchè il corso a cui hanno aderio dli allievi che avete visto in foto,  dovrebbe essere più orientatao alla programmazione del PIC che al cablaggio dell'automazione e lo sviluppo di interfacce.

Vediamo anche il punte H utilizzato, dato che era stao predisposto per tensioni di pilotaggio a +24V disponibili durante le lezioni di programmazione dei PLC siemens, si è preferito bypassarlo affiancandone un altro piuttosto che intervenire con il saldatore per cambiare le resistenze di base. .

 

 Nel video vediamo la fase di chiamata della cabina e di intercettazione della fotocellula del piano che fa cadere l'autoritenuta del comando di marcia. .

 

 

http://www.youtube.com/watch?v=QP4xZp1bISc&feature=youtu.be

La dimostrazione della funzionalità del ponte H presentato (non ottimizzata, ovvero se vogliamo realizzare un ponte H è meglio non fare semplicemente così, ma almeno usare elementi PNP sopra e NPN sotto, con altre soluzioni di protezione) è visibile nella foto e nel video scaricabile ed eseguibile con quickTime. . .

Vediamo un video che dimostra il funzionamento del ponte H.

 

Download -> test del ponte H

Ecco la realizzazione su circuito stampato con Eagle in materiale FR4 dual layer..

Lo schema elettrico di questa semplice configurazione a ponte, didattica e non protetta, è il seguente..

Vediamo nell'immagine successiva come collegare i diodi di ricircolo esterni a questo circuito, mostriamo prima il layout componenti e lo sbroglio fatto in Eagle e poi la connessione dei diodi di ricircolo.

 

Layout del ponte H didattico G-Tronic, può essere facilmente ottimizzato sostituendo i due TIP122 in alto con i complementari TIP127 ottimizzando le dissipazioni termiche. Sono anche facilmente separabili i segnali di comando TTL (fornendone 4 anzichè 2 con le uscite del microcontrollore al fine di evitare ogni possibilità di comando vietato che può comportare un corto circuito).

 

Ecco come collegare i diodi di ricircolo esterni senza dovere intervenire sul PCB

Nel filmino vediamo il ponte H in azione durante una lezione di programmazione dei Micro-controllori PIC da me svolta presso il centro culturale ZIP di Padova..

 

Nel film sovrastante non sono al massimo della forma perchè era l'una di notte e la giornata era stata molto lunga. Un applauso agli eroici allievi che hanno resistito fina a quell'ora così tarda.

Nel prossimo video possiamo vedere degli allievi giocattolare con il ponte H integrato nella Micro-GT.


 

 

Avrete sicuramente notato il simpatico accento veneto dei miei studenti serali, ma la cosa più importante da notare è che vengono forzati dei segnali distruttivi che dovrebbero portare il ponte in corto circuito, ma questo non avviene perchè sono presenti gli interblocchi software abbinati ad alcuni accorgimenti hardware. In pratica si complica un po il software ma si semplifica l'hardware.

Questo ponte H potra' essere usato anche come minishield di potenza per pilotare bobine di teleruttori per la lagino che sara' chiara verso fine articolo.

E' possibile alloggiare nello zoccolo della Micro-GT mini il PIC18F2550, ed usare la porta USB che esso integra, a patto che si aggiunda un condensatore utile alle tensioni di riferimento della periferica USB al pin 14 verso massa, di valore 470nF, e che in serie alle due linee D+ e D-venga posta una reistenza di almeno 27ohm fino a 100 ohm.

Ne non vi è poi un motivo validopert mantenere entrambei canali di comunicazione potremmo eliminare la porta DB9, il MAX232 con i suoi condensatori elettrolitici e tutto quanto concerne questa funzionalità della Micro-GT mini.

Quest'ultima assume l'aspetto in figura.

 

Questo esemplare prende alimentazione direttamente dalla porta USB del computer che lo potrà supervisionare e riporgrammare qualora sia stato inserito un bootloader. Nel caso non ci interessase programmare con bootloader rimane disponibile lo treep line a 5 linee più una, visibile nel lato destro, ovvero il connettore ICSP, da connettere all'omonimo connettore della Micro-GT IDE oppure al PICKIT 3. 

Ovviamente bisognerà istallare il compilatore C18 sull'MpLab e modificare leggermente il sorgente C aggiungento le seguenti direttive pragma subito dopo gli include..

 

#pragma config PLLDIV = 5
#pragma config CPUDIV = OSC4_PLL6
#pragma config USBDIV = 2
#pragma config FOSC=HSPLL_HS
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config BORV = 1
#pragma config VREGEN = OFF
#pragma config WDT = OFF
#pragma config WDTPS = 32768
#pragma config MCLRE = ON
#pragma config LPT1OSC = OFF
#pragma config PBADEN=OFF
#pragma config CCP2MX = OFF
#pragma config STVREN = ON
#pragma config LVP=OFF
#pragma config XINST = OFF
#pragma config DEBUG = OFF
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRT2 = OFF
#pragma config WRT3 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
#pragma config EBTRB = OFF

 

Eseguite queste modifiche il programma comincerà a girare sul PIC18 e potrete dire di avere fatto un piccolo salto di qualità come programmatori.

 

Questo progetto è ridistribuibile secondo i termini di licenzaCreative Commons Attribuzione-Condividi allo stesso modo 3.0 Italia

 

Note aggiuntive

Sono possibili molte varianti dello stesso progetto.  Una variante molto funzionale e' stata sviluppata da Daniele Scaranaro e sara' argomento di uno dei prossimo progetti.

Tutte le schede elettroniche che vede in questo articolo sono disponibili sia montate e collaudate, con firmware precaricato,  che in versione solo PCB.

Per piccole forniture, fino ad esaurimento scorte potete richiedere a:  ad.noctis@gmail.com  .

Ing. Marco Gottardo as ad.noctis

 

  Pagina precedente