|
Ascensore a 3 piani |
|
Identificazione progetto
progetto |
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
Micro-GT mini -> un esemplare
Micro-GT minishield power inverter -> un esemplare
Ponte H -> un esemplare
scheda 4 comparatori per le fotocellule -> un esemplare
I pcb hanno l'aspetto che vediamo nelle figure sottostanti:
PCB Micro-GT mini. Prezzo di realizzo 5€
Descrizione meccanica dell'impianto, fase di intervista.
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.
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.
modello in scala dll'impianto
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:
Dal menu' "editazione" agire sul comando "inserire ramo dietro" ogni volta che dovete aggiungere un nuovo segmento.
Implementare tutto il programma, composto da 11 segmenti, e le vostre eventuali modifiche/personalizzazioni, nel medesimo programma ladder, anche se l'immagine sopra mostra solo i primi 4 segmenti.
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