Aumentano gli allievi del prof. Marco Gottardo che contribuiscono alla diffusione della conoscenza sui microcontrollori con nuovi e interessanti articoli sull'utilizzo pratico dei PIC, con una descrizione completa ed accurata.
http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/programmazione_Micro-GT_miniPICKIT.JPG

Sensibilità sul fronte di un pulsante

 

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/francesco%20tagliapietra.jpg

Identificazione progetto

progetto 14

autore

email

note

Sensibilita' pulsante sul fronte e selettore canali audio

Francesco Tagliapietra

infotagliapietra@gmail.com

presento due progetti:

1) Acquisizione di un pulsante con sensibilita' sul fronte, con applicazione su macchina panificatrice.

2) Selettore digitale di 6 canali analogici stereo HiFi, tramite unico pulsante e display

 


Due progetti basati sulla piattaforma Micro-GT versatile I.D.E.

Macchina panificatrice industriale e selettore di 6 canali audio con PIC

 

Mi chiamo Francesco Tagliapietra e vivo nel comune di Dueville in provincia di Vicenza. Lavoro per una azienda che produce macchine per la panificazione e per questioni di formazione professionale mi sono iscritto ad un corso serale di programmazione dei microcontrollori PIC tenuto dall'ing. Marco Gottardo, noto alla community di grix.

Prima di conoscere l'Ing. Gottardo e il suo metodo di formazione avevo cercato sul Web testi o comunque corsi che potessero dare la possibilità ad un principiante di entrare in questo settore embeeded ma non ho trovato niente di convincente per le mie esigenze.

Fondamentale per me era trovare una figura preparata che potesse guidarmi passo passo sulla parte sia hardware che firmware dei microcontrollori e frequentando questo corso tenuto dal Prof. Gottardo ho raggiunto e superato i risultati desiderati in quanto, per chi ha avuto la fortuna di conoscere il Prof., sa la sua grande preparazione e devozione all'insegnamento.

 

Descrizione della macchina da progettare

La macchina necessita di eseguire dei movimenti azionati singolarmente per effettuare delle operazioni di manutenzione o di pulizia da parte del manutentore o dell'operatore.

Per identificare ogni singolo movimento, cosicché chi deve effettuare l'operazione sappia esattamente cosa sta azionando, é stato introdotto un semplice display a 7 segmenti che tramite la visualizzazione numerica e una tabella descrittiva ne identifica un'azione: esempio visualizzo 1 aziono un nastro trasportatore, visualizzo 2 aziono un rullo di laminazione e così via.

In un secondo step si fornisce il sistema di una barra LED, pilotata da un segnale analogico che mostra la durezza dell'impasto, come risposta da un processo di "pressata della pallina di pasta del pane" e acquisita da un apposito sensore che fornisce 0-5V al convertitore AD del PIC. 

La scelta di tali componenti é stata dettata dalla necessità di economizzare il più possibile il macchinario senza compromettere l'affidabilità e le funzionalità.
 

Il problema dell'avanzamento multiplo del ciclo su pressione tasto.


Inizialmente il problema sembrava banale, dato che sembrava sufficiente acquisire lo stato del pulsante e accendere di conseguenza un numero sul display, nella pratica abbiamo visto fare in classe i ragionamenti e i tentavi più disparati, in effetti mantenendo il dito sul pulsante i cicli avanzavano indefinitamente, fino a che l'insegnate non ci ha spiegato alcune regole aure:

  1. I pulsanti di un sistema a microcontrollore è bene acquisirli sempre nello stato "normal 1->pressed 0" allo scopo di rendere il tutto meno sensibili ad eventuali disturbi elettromagnetici. Si otterrà una funzionalità molto più stabile. A tal fine sono state fatte delle prove comprative in classe, in cui si è visto che l'azione più intuitiva "lancio 1 logico" comporta spesso acquisizioni di comandi inesistenti.

  2. I pulsanti vanno muniti di sistema anti rimbalzo "anti bounced" o "debounced", almeno dal punto di vista software, ma meglio se sia software e anche hardware, dato che l'elevata velocità di refrasch dell'acquisizione è in grado di distinguere chiaramente gli stati falsanti del transitorio. Nel nostro caso si potrebbe notare un avanzamento multiplo del valore a display e quindi del ciclo selezionato.

3.   Per visualizzare sul display l'avanzamento di un solo step si deve rendere il sistema sensibile ai fronti di commutazione "edge triggered" e non sugli stati stabili "latch". Nel nostro caso sul fronte di discesa dato che i pulsanti saranno acquisiti normali 1->pressed 0, ovvero con resistenza in pull-up (10k) e con i contatti in chiusura. Esistono varie tecniche per realizzare o anche solo simulare questa cosa. L'insegnate ci parla di flag, ci parla di impostazioni a registro, di interrupt, ma poi ci dice che un semplice conteggio degli accessi, all'interno del doppio controllo temporizzato/ritardato antirimbalzo, svolgerà egregiamente il suo lavoro risolvendo il problema dell'avanzamento multiplo. 

 

Il minishield single CC-display.

Anche se può sembrare banale è bene documentare l'articolo di ogni cosa necessaria alla riproduzione della prova e quindi riporto lo schema elettrico e di interfacciamento del Display alla Micro-GT. Questo perché si vuole usare un elemento uguale a quello finale evitando poi sorprese in fase di assemblaggio della macchina vera. In mancanza di questo ragionamento, e non disponendo del prototipo della macchina che sto costruendo dato che non ha senso per un utente qualunque, potremmo usare semplicemente uno dei 4 digit a catodo comune presenti a bordo del sistema di sviluppo Micro-GT IDE.  Il controllo di questo mini shield troverà moltissime applicazioni nelle vostre prove sperimentali e sarà un importante corredo per i possessori della versione mini della Micro-GT. 

Lo schema elettrico del minishield è il seguente.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/minishild%20single%20CC-display.PNG

Il connettore JP1 è di tipo strip line femmina, a 8 posizioni, ovvero contiene anche il punto decimale benché in questa applicazione non verrà mai usato. Le resistenza potranno avere un valore compreso tra 220 e 470 ohm, come si legge alla pagina 44 del libro "Let's GO PIC!!! The book" che è il testo ufficialmente adottato in questi corsi.

Il data book del display usato è disponibile qui -> download databook display

La realizzazione partica ha prodotto, inizialmente, questo esemplare, ma anche alcune versioni su basetta fotosensibile sviluppate a titolo di prova del prodotto finale.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Minishield%201digit.JPG

Come vediamo sono state inserite in serie ai segmenti delle resistenze di valore 330 ohm perché di comune accordo la luminosità del display è stata valutata sufficiente.

Vediamo come interfacciare il mini shield one digit alla Micro-GT mini e alla Micro-GT IDE, con cui abbiamo sviluppato il firmware e fatto i test, prima di procedere alla realizzazione della scheda vera da inserire in  macchina.

Vediamolo prima collegato alla Micro-GT mini, il che significa che vogliamo collegarlo al PIC a 28 pin 16F876. Per questioni di maggior predisposizione abbiamo infatti sviluppato il progetto con le tre versioni 16F628, 16F876A, 16F877A. Le ultime due con test fatti con le Micro-GT e l'ultimo direttamente in scheda per la macchina.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/minishild_1digit_Micro-GT.JPG

Osserviamo il filo grigio che esce dal mini shield, questo è il comune dei catodi e va quindi portato alla massa del circuito di controllo. La Micro-GT mini dispone di uscite predisposte per i servo motori direttamente connessi tramite le spinette tripolari, queste sono, il segnale di controllo,  (il pin più vicino al PIC), l'alimentazione del servo (il pin centrale) e la massa ( il pin più lontano dal PIC). Questa disposizione impedisce alle eventuali inversioni di inserimento delle spinette dei servo di danneggiare gli stessi. 

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/morsettiera%20micro-gt%20mini.png

Se non si montano gli strip line maschi è quindi possibile applicare le resistenze di pull-up o pulldown, direttamente sullo stampato e con i corretti riferimenti a Vcc e a gnd.  Nel nostro caso, portiamo il filo del catodo comune del display direttamente alla fila più esterna di pin ovvero a gnd, come visibile nella foto.

Se sviluppiamo il progetto per il processore 877A, visibile nella foto, potremmo interfacciarsi come segue.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Micro-GT_877A.jpg

 

  Tenendo gli schemi alla mano, disponibili sul sito della scheda di sviluppo, identifichiamo lo strip line dei PORTB, e della connessione comune a massa.

Ne risulta un cablaggio del tipo mostrato in figura, si faccia attenzione che il mio esemplare di Micro-GT è assemblato in modo customizzato per le esigenze del mio lavoro, quindi mancano delle parti che potrebbero essere invece presenti sulla vostra.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/catoco_comune%20alla%20Micro-GT.JPG 

Come potete vedere non ho assemblato il connettore seriale e manca il chip DC4049, perché io solitamente mi interfaccio tramite porta USB (quando usiamo i PIC 18F2550) oppure tramite ICSP del PICKIT3, perfettamente compatibile sia con MPLAB che con questo sistema di sviluppo.

 In questa foto ravvicinata, vediamo chiaramente la serigrafia GND sul pin di ritorno a cui è collegato il filo grigio.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/massa_minishield(1).jpg 

Per la realizzazione di questo progetto abbiamo bisogno di un'interfaccia di input adeguata, è stato quindi progettato un ulteriore mini shield che avesse lo stesso aspetto e funzionalità del pulsante istallato sul pannello frontale della macchina che sto progettando in azienda. Questo pulsante selezionerà 6 distinti cicli di lavoro che saranno indicati nel mini shield display.  Quando la macchina viene accesa viene selezionato il ciclo numero 1.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/minishield_pulsantiera_selettore.JPG 

Su tutti i sistemi a microcontrollore è bene che i pulsanti abbiano un'azione di tipo normal 1 -> pressed 0, questo per rendere il sistema più stabile ed insensibili ai disturbi. Nel corso online Let's GO PIC, viene anche spiegato come acquisire i pulsanti con un sistema software di anti rimbalzo. La tecnica consiste nell'acquisire due volte lo stesso stato del pulsante in maniera distanziata di qualche decina di millisecondi, questo per avere una sorta di conferma dello stato.

Algoritmicamente parlando è bene fare così:

if (pulsante==0) {

   DelayMs(50);

   if (pulsante==0){

          // azioni da eseguire

   }

}

ll minishield presentato sopra potrà essere interfacciato sia alla Micro-GT mini che alla Micro-GT IDE, anche se ovviamente quest'ultima non ne ha bisogno dato che è munita di ben 16 ingressi configurabili in pull up o in pull down usando gli appositi strip line.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/pulsantiera_Micro-GT-IDE.JPG

 

Il programma è stato svolto con Hitech C16, integrato con la piattaforma MPLAB 8.80, ma una rapida dimostrazione di compilazione è stata effettuata anche con la piattaforma MPLAB-X.

Vediamo la struttura della prima versione del progetto che si può lanciare semplicemente cliccando nel file .mcp contento nelle cartelle del programma scaricabili a fine articolo. 

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/progetto_tagliapietra.PNG

Il main program, ovvero la void main si trova nel file D7seg_con_Oneshot.c nella sezione sorgenti. Di fondamentale importanza è il modulo (file) di intestazione o header, decoder7seg.h, che fa parte di una nuova libreria, che stiamo sviluppando nelle varie lezioni del corso, e che pur essendo dedicata alla Micro-GT potrà essere impegnata per qualsiasi sistema di sviluppo. Nella sostanza questo accorgimento software permette di bypassare  il circuito integrato CD4511, decoder hardware BCD to 7 segementi, implementandolo software.

All'interno di questo modulo troviamo solo quanto segue:

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Decoder7seg-Micro-GT.PNG

Notiamo che si tratta di una funzione, di tipo void, quindi che non restituisce alcun tipo, ma che accetta in input un valore intero, che data la limitata estensione del valore contenuto potrebbe anche essere un char o un unsigned char.  Le condizioni con cui viene chiamata la funzione selezionano una specifica riga in essa contenuta, lanciando verso il PORTB la configurazione corrispondente, brutalmente copiata dalla tabella di attivazione delle uscite del chip hardware CD4511 presente nel suo data book.

E' quindi sufficiente richiamare questa funzione, passandogli il numero, per visualizzarlo correttamente nel display. La chiamata è alla riga 45 del sorgente "D7seg_con_OneShot.c".

il sorgente è questo:

/******************************************************
* Programma per conteggio display 7 sementi   *
* Gestione firmware con sensibilità al fronte       *
*   Centro culturale ZIP di Padova                     *
*   Firmware version:1.0                                   *
*   autore: Francesco Tagliapietra                     *
*   Data:02/03/2013                                         *
*   Interfaccia controllo diretto dei segmenti       *
*   MCU: 16F877A                                           *
*   Piattaforma hardware: Micro-GT IDE             *
*   Piattaforma software: MPLAB v8.89              *
***********************************************/

 

#define _LEGACY_HEADERS // permette il riconoscimento dei fuses nei nuovi compilatori
#include <pic.h>
#include "delay.h"
#include "settaggi.h"
#include "decoder7seg.h"

 __CONFIG (HS & WDTEN & PWRTDIS & BORDIS & LVPEN & DUNPROT & WRTEN & DEBUGDIS & UNPROTECT); // Fuses impostazioni al sistema

#define P1 RA0
void main(){
 settaggi();
 PORTB=0b00111111;
 unsigned char conta;
 conta=0;
 char cont=0;

  while(1){
   if (P1==0){
   DelayMs(50);
    if (P1==0){
    cont++;
    if (cont<2) {
     if (conta<=6) {conta=conta+1;}//finché sono sotto a 9 incremento di 1
     if (conta>6) {conta=0;}
     decoder7seg(conta);
    }

void settaggi();       
    }
    else {
    cont=0;
    }
   }  
  
 CLRWDT(); //resetta il watch dog timer
 }
}

Sviluppo hardware.

La macchina per panificazione, a cui è destinato il lavoro esposto, richiede lo sviluppo di due schede elettroniche, una montata nei pressi del pannello frontale e di comando, che contiene la logica programmabile e i punti di connessione dell'input/output verso il bordo macchina, e una di potenza, che contiene il driver del motore stepper e altre cose similari.  Inizialmente svilupperemo una versione domestica a livello prototipale su cui effettueremo i vari test usando una meccanica reale. Una volto ottenuto un sistema stabile e ben programmato, allora si procederà allo sviluppo del PCB definitivo, su due strati FR4. Per il momento abbiamo pensato di sviluppare una versione single layer che impone la presenza di qualche ponticello. Il lato vantaggioso è che potremmo sviluppare il PCB con le attrezzature della scuola ZIP di Padova, che sono limitate a un bromografo UV, una vaschetta per il cloruro ferrico, e a un trapanino dremel montato sulla sua brava colonnina.

Vediamo lo schema elettrico della scheda logica, sviluppato con diptrace e anche con eagle.   

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/tagliapietra_scheda%20logica.png

Dallo schema vediamo che si è scelto di abilitare l'oscillatore interno, data la palese mancanza del quarzo, quindi è bene non sostituire il PIC16F628 con un vecchio 16F84, benché possa sembrare, a prima vista compatibili pin to pin.

Caricamento del firmware.

Caricare il firmware nel PIC potrà sembrare un'operazione ovvia e banale, al punto che molti corsi neanche ne parlano perché è dato per scontato che tutti lo sappiano fare. Vi assicuro, per esperienza personale che non è così.  Molti neofiti trovano come maggiore scoglio, forse perché il primo, proprio questa operazione, come del resto è accaduto a me.

Dopo ore di tentavi, e prove "ad intuito" sono stato accompagnato per manina dall'insegnate che in pochi minuti mi ha risolto la questione. Sconsiglio quindi di fare lo stesso errore e di dedicare qualche minuto al documentarsi sul come caricare il firmware.

Sul testo "Let's GO PIC!!! the book" sono esposti 3 metodi basilari per compiere questa operazione.

1.   Metodo a bassa tensione, detto LVP, che comporta la presenza di un bootloader precaricato.

2.   Metodo ICSP, in circuit serial programming.

3.   Metodo tramite interfacciamento con altri strumenti. 

Personalmente gli ho provati tutti e tre. Il più rapido è di certo il primo, ma anche l'interfacciamento con il PICKIT3 non è da trascurare.

Entrambe la Micro-GT mini e la Micro-GT IDE sono collegabili al PC, via USB, quando sia impiegato il PICKIT3, che tra l'altro mette a disposizione il vantaggio di non richiedere altri software di supporto oltre al normale MLab di Microchip. Nel video caricato nel nuovo canale dedicato alla Micro-GT è postato, tramite l'insegnate, un mini tutorial dove vi faccio vedere come fare.

Ecco le foto dell'interfacciamento della Micro-GT mini e della Micro-GT IDE con il PICKIT3.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/programmazione_Micro-GT_miniPICKIT.JPG

Nella Micro-GT mini, il PICKIT 3 è collegabile direttamente al connettore laterale, con la scheda alimentata. (vedi il video)

Per la Micro-GT versatile IDE, bisogna collegarsi agli opportuni pin, disponibili nel layout, per ciascuna famiglia di microcontrollori, come nella foto sotto:

 http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/PincKit3-Micro-GT%20(2).jpg

 

Per potersi interfacciare correttamente serve un cavetto, a 5 fili, che rispetti i colori standard dell'ICSP. Come visibile nella foto successiva:

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/ICSP-cable-pickit.JPGhttp://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/ICSP%20cable%20PICKIT%20female.JPG

Il maschio va dalla parte del PICKIT3 e le femmine nei punti indicati nella prossima immagine, in modo da rispettare le posizioni dei pin dedicati all'icsp negli specifici microcontrollori.

 

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/ICSP%20PIC%20family.jpg

Si vede che per i controllori a 40 o a 28 pin la posizione dei cavetti uscenti dal PICKIT 3 non cambia nella scheda Micro-GT, mentre è diversa per i PIC a 18 pin (es. 16F628) o a 8pin (es. 12F256).

La scheda logica, completa e versione a 28 pin, è nello schema sottostante:

UserFiles/FrancescoTagliapietra/Scheda_test_analogica(1).pdf

Vi fornisco i vari firmware usati per testare la scheda logica del sistema. Scaricando il file zip avrete a disposizione il test del buzzer, il test del bargraph comandato dal segnale analogico, il test del conteggio, il test dell'acquisizione dell'ingresso opto isolato.

scarica firmware

Nelle prossime foto, un prototipo della parte logica della macchina, montata al banco a scopo di debug del firmware. 

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Pulsante%20seleziona%20ciclo.JPG

Sezione del pulsante opto isolato. La pressione comporta un bip del buzzer e l'avanzamento  della cifra a display. Come collegare l'opto isolatore lo ho preso dal libro "Let's GO PIC!!!", che è il testo di riferimento del corso che ho seguito a Padova.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Libro%20PIC%20ingresi%20opto.JPG 

Si tratta di un volume di ben 500 pagine con dentro praticamente tutto quello che vi serve non solo per iniziare, ma anche per applicare al lavoro le nozioni del controllo di macchine.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Lets%20go%20pic%20500%20pages.JPG

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Simulatore%20cella%20carico%20pressata.JPG

Questo potenziometro simula la cella di carico che sul piano "rollore" che forma la pagnotta segnala se la pasta è troppo dura, in questo caso il bargraph arriva al LED rosso.

Nella prossima immagina una visione d'insieme del sistema di collaudo firmware, e prototipo di impianto.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Test%20macchina%20panificatrice.JPG

Al centro del sistema vediamo la Micro-GT mini.

Da questo link puoi scaricare alcune foto -> Download sistema di test

Vediamo con dei filmati chiarificatori l'obbiettivo del progetto, ovvero l'avanzamento singolo della selezione del ciclo che denominiamo modalità one shot. Nel primo video vediamo l'interfacciamento della scheda Micro-GT mini al PICKIT 3, quindi il riversamento del firmware nell'area programma nonché la dimostrazione del funzionamento della parte di selezione dei sei cicli della macchina per panificazione. 

http://youtu.be/M6ds-uGKO9U

http://www.youtube.com/watch?v=M6ds-uGKO9U

 

in questo secondo filmato youtube potete vedere la differenza di funzionamento tra l'acquisizione dello stato del pulsante in maniera "naturale" ovvero solo testando lo stato che esso assume, e la modalità one shot che è il vero argomento dell'articolo.  Consiglio a tutti di guardare con attenzione il video specialmente a chi può considerare questa pubblicazione sempliciotta o addirittura inutile.

http://youtu.be/mqlYfGLLyfk

http://www.youtube.com/watch?v=mqlYfGLLyfk

 

 

Scheda di potenza

La macchina dispone di un nastro trasportatore che sposta le palline di pasta, (le future pagnotte), da una sezione all'altra della stessa in cui subiranno le varie lavorazioni. Per evitare l'utilizzo dell'encoder, e altri motivi di comodo, è montato un motore passo passo di tipo a due avvolgimenti bipolari. Il motore è abbastanza robusto, quindi non abbiamo potuto usare l'integrato L298 integrato nella Micro-GT IDE, questo è infatti dimensionato per 2A a canale. La scelta è ricaduta nel moderno L6208, progettato nella moderna tecnologia DMOS.

Scarica il databook del L6208 ->Download

Il nostro prototipo è stato ricavato da questo schema valutativo, messo a disposizione della casa costruttrice del chip.

 http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/eval6207n_schematic.jpg

I gerber, ovvero i files attesi dalla macchine cnc per la costruzione effettiva dello stampato, sono divisi in numerosi files. I principali ed essenziali sono:

.drd  -> file di foratura

.GKO -> file di fresatura del profilo del PCB

.GBL -> file delle piste lato saldature.

.GTL -> file delle piste lato componenti

.GTO -> file delle serigrafie, mostra i componenti 

.GTS -> file che maschera le piazzole, lato componenti, per non metterci sopra la vernice solder

.GBS _> file che mschera le piazzole, lato saldature, per non metterci sopra la vernice solder.

Una volta realizzati i gerber è bene visualizzarli con un "visualizzatore"  io uso gerberViewer, perché consigliato dall'insegnate e usato nei suoi corsi.

Ecco l'aspetto dei gerber forniti come demo dalla ST.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/tagliapiatra_gerber_vista.png

Alla fine però non abbiamo realizzato, per questioni economiche, questo PCB, e il prototipo è estato fatto prima su mille fori e poi su basetta foto sensibile.

Il firmware piloterà lo stepper motor a passo intero .

Supponiamo di collegare le linee di controllo dell'interfaccia, a titolo di test, ai primi quattro bit del PORTB. sarà poi facile per ogni programmatore spostare questi segnali sui pin di suo interesse.

La teoria e un programma di esempio, svolto nelle lezioni serali lo potete trovare nell'articolo di Daniele Scaranaro, nella nuova community dedicata al sistema di sviluppo Micro-GT, all'indirizzo

http://www.gtronic.it/community/stepper(10)/stepper(10)_daniele.html

Qui vi fornisco una funzione, che permetterà al motore stepper di ruotare in marcia avanti, fornendo la matrice di passo intero in maniera ripetuta, ovvero a ciclo continuo fintanto che sia presente un segnale di consenso.

void Full_CW(){
while(ruotaCW==1) //doppio uguale per confrontare 

    { //implementa la matrice di passo intero 10,6,5,9
    PORTB=10;
    DelayMs(200);
    PORTB=6;
    DelayMs(200);
    PORTB=5;
    DelayMs(200);
    PORTB=9;
    DelayMs(200);
    }
}

La sequenza 10 ->  1010,  6 -> 0110, 5 -> 0101, 9 -> 1001, comporta l'inversione della corrente in una delle due bobine del motore bipolare alla volta. E' importante mantenere questa sequenza logica altrimenti il motore perde il passo e si blocca. Le delay di 200 milli secondi determinano la velocità di rotazione del motore stepper. Possono essere facilmente parametrizzate, ma in questo momento non ci interessa il controllo della velocità.

Per un motore a due poli, vale la descrizione in questa immagine, presa in prestito dall'articolo di Daniele, compagno di corso a cui ho chiesto il permesso. 

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/stepper_move.gif

Il richiamo della funzione è abbastanza intuitivo. Ammessa l'esistenza di un flag che chiamiamo "CW"  il suo stato lancia l'esecuzione ciclica della matrice di passo.

if (CW==1){
                        Full_CW(); 
                    } 

Questa chiamata si troverà all'interno del main program.

Il motore è del tipo a 4 fili, con due bobine, che assorbono 2,8A ciascuna alla coppia nominale. Il motore impiegherà 200 passi per eseguire una rivoluzione, quindi ha una risoluzione di 1,8 gradi a step, quando controllato a passo intero.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/stepper%20motor.png

Scarica documentazione del motore

  .

Sviluppo dei vari prototipi. 

La progettazione della macchina è passata attraverso tre prototipi, uno con il processore a 18 pin uno con il 28 e uno ancora in fase di sviluppo con 877A per la gestione aggiuntiva del display LCD (solo in alcune versioni) .L'impianto possiede due schede. Una scheda logica e una di potenza in cui è istallato il circuito integrato che pilota il motore passo passo che trascina il nastro. Vediamo prima il PCB della parte logica. 

Da questo link si può prendere visione dello schema completo della parte logica, realizzata con il CAD diptrace.

schema elettrico scheda logica macchina panificatrice

Analizzando lo schema notiamo la presenza di un opto isolatore per l'acquisizione dell'unico ingresso digitale, per attenersi alle normative vigenti. Un segnalatore acustico,(buzzer) ci segnala con un breve trillo l'avvenuta pressione del pulsante ma anche alcune particolari condizioni di allarme, il display è munito di un transistor che intercetta i catodi comuni in modo da poterlo interdire da programma.

L'anteprima 3D, sviluppada con il CAD Diptrace è mostrata nella foto qui sotto.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Immagine.jpg

 Nella prima versione l'alimentazione, a partire dai 24 volt disponibili a bordo macchina viene portata a 5V tramite due salti con regolatori LM7812 e LM7805, mentre nella versione definitiva (quella dello schema posto sopra) si ottiene con un unico salto e un regolatore più idoneo in ambiente industriale che è L200.

 La procedura di foto incisione e realizzo dello stampato è stato svolto a lezione, presso il centro ZIP in ci abbiamo a disposizione un bromografo auto costruito, contenete una lampada UV da 18W, ricavata da un vecchio cancellatore di eeprom, una vaschetta di corrosione riscaldata e munita di agitatore ad aria soffiata, e un trapanino a colonna di marca dremel, con punte da 1mm e da 1,5mm.  I fori per le viti di ancoraggio sono stati fatti da 3mm.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Circuiti%20stampato_1.JPG

Il circuito stampato è munito di quattro fori predisposti per l'ancoraggio al pannello frontale. il prototipo single layer impone la presenza di alcuni collegamenti in filo sul lato saldature, problema che non ci sarà quando verrà realizzato in dual layer con stampato professionale. 

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/prototipo_panificatrice.JPG

 

Sul lato sinistro abbiamo disponibile il PORTA del PIC mentre il connettore visibile sulla destra è l'ICSP per la riprogrammazione in fase di debug. Sul connettore di sinistra predisporremo la barra LED pilotata dal segnale analogico che indica la pressata della pasta sotto i rulli laminatoi. In realtà, lo sforzo di pressata della palla da cui di ricava la pagnotta ci segnala quanto è duro l'impasto e quindi se vanno ritoccate le percentuali degli ingredienti. Più si allunga la barra LED e più è compatto l'impasto.

Vediamo un particolare della morsettiera e del connettore ICSP, il triangolino indica il pin 1 e va fatto coincidere con lo stesso triangolino serigrafato nel contenitore del PICKIT3.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/ICSP.JPG

  Sotto vediamo il PORT A in cui collegare il Bargraph.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/PortA.JPG

 

 

Conclusioni.

Per concludere metto a disposizione entrambi i progetti MPLABin modo che possiate comparare la differenza di funzionamento.

Scarica il programma senza sensibilità ai fronti  -> download senza one shot

Scarica il programma con sensibilità ai fronti  -> download con one shot  

Vediamo il filmato caricato su youtube in cui spiego gli obbiettivi e mostro i risultati del firmware sviluppati.

http://www.youtube.com/watch?v=SWGWU168b3o

 

Un saluto alla comunity e un ringraziamento all'insegnante ing. Marco Gottardo che mi ha concesso di pubblicare la sua lezione.   

 

Appendice all'articolo: Costruzione di un selettore audio digitale.

Il circuito che presento ora funziona con lo stesso firmware presentato sopra, basterà infatti fare piccoli assestamenti, abbastanza intuitivi del tipo aggiungere l'uscita ON/OFF sulle linee da RB1 a RB6, per abilitare i rispettivi canali audio e corrispondentemente accendere un LED, da porre sotto la serigrafia CH1,CH2...CH6, nel pannello frontale.  In certi casi, come ad esempio nella strumentazione da concerto, i connettori RCA potranno essere posti  sul pannello frontale anziché posteriore, quindi , ponendo il LED sopra di essi si avrà l'informazione immediata di quale canale è attivo.  IL Display, esattamente come nel filmato youtube di cui a questo punto dell'articolo avete già preso visione, indica il numero del canale selezionato . Lo schema elettrico completo è mostrato qui sotto. Si nota la presenza di uno stadio di alimentazione che ci permetterà di fornire sia tensione continua che alternata, grazie alla presenza del ponte di diodi da assemblare nell'angolo in alto a sinistra, con ovvio significato delle serigrafie delle piazzole. I jumper JP1 e JP2 permettono di isolare l'ingresso dal resto del circuito rendendo operante secondo i sui intenti l'opto 4N26. Qualora non volessimo usare i vantaggi dell'opto isolamento, chiudiamo i jumper, ance in maniera definitiva saldando di ponti di stagno, o archetti ottenuti con reofori.

Il connettore SV1 serve per la programmazione ICSP ( se riteniamo necessario rendere riprogrammabile il circuito). Il jumper JP3 serve all'alimentazione del dispositivo tramite il programmer ICSP. Se flaschamo il PIC con la scheda alimentata questo jumper può rimanere aperto. Se il circuito non sarà riprogrammabile possiamo non assemblare anche il diodo D1, la resistenza R30 il connettore SV1 il jumper JP3  e il pulsante di reset, ma dobbiamo ricordarci di saldare un capo della resistenza R29 al posto del diodo D1. Questo perché il PIC necessita di un segnale alto al pin MCLR per consentire al programma di essere eseguito.  

Guardando gli schemi completi della logica si nota la presenza del buzzer, che qui potremmo collegare all'uscita RB0. Da programma gli faremo segnalare l'avvenuta pressione del tasto e quindi a selezione del canale.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Micro-GT%20analog%20switch%206%20channels.png

scarica lo schema elettrico

Il cuore dell'apparato selettore è ovviamente il microcontrollore PIC16F876, mentre i canali audio transitano in maniera trasparente oppure sono interdetti dai circuiti integrati CD4066, appositamente studiati per questo scopo.

Osservando lo schema, notiamo facilmente che si tratta di una variante della Micro-GT mini a cui sono stati tolti i connettori dei servomotori per lasciare spazio al display della macchina panificatrice spiegata sopra e un pulsante di selezione dei canali. I circuiti integrati CD4066 lavorano, su un segnale di abilitazione, come degli interruttori. è proprio come interruttori vengono rappresentati negli schemi a blocchi interni.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/interno-CD4066.png  

Si nota che ogni CD4066, dispone di 4 "interruttori", quindi è in grado di gestire 2 canali stereo.  Risulta evidente che ce ne servono 3 per gestire i 6 canali del nostro progetto.  Lo schema di principio è questo:

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/CD4066_principio.jpg

Il condensatore elettrolitico si cura di disaccoppiare lo stadio precedente fermando le eventuali componenti continue sovrapposte al segnale mentre il partitore resistivo si cura della polarizzazione dello stadio CMOS interno, da pensarsi inserito al posto dell'interruttore. Il punto di lavoro è posto al centro della retta di carico permettendo l'alimentazione del dispositivo in tensione singola.

L'impedenza d'ingresso è mantenuta sufficientemente alta dai valori ohmici di questi due resistori.

Il CD4066 è un integrato DIL 14, disponibile anche in SMD, ma per il nostro prototipo è stato impiegata la versione PTH, ovvero elettronica tradizionale con pin attraverso i fori.  L'aspetto è questo:

 http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/CD4066_dil.jpg                        http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/imagesCAX023XF.jpg

per vedere la configurazione interna dei mosfet scarica il data book -> download CD4066B

Il layout del circuito è il seguente, lo stampato ha una dimensione ragguardevole, si sarebbe potuto ottimizzare un po' gli ingombri, in altezza più che in larghezza, difatti si è deciso di svolgere il circuito con connettori saldati sullo stampato. Usando connettori da pannello e predisponendo solo i fori in cui saldarli sarebbe venuto più piccolo ma avremmo dovuto impiegare dei cavetti schermati  e porre una discreta attenzione ai cablaggi.

Ne è risultato un PCB largo 304 mm e alto circa 74 mm ma la cosa non ci deve disturbare più di tanto visto che realizzerà il progetto probabilmente lo destinerà a commutare strumenti musicali di una band o cose simili, oltre che ovviamente a selezionare il canale di input in impianti home theatre. Un contenitore della misure standard di un componete HiFi non stonerà.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/Micro-GT_6channel_layout.png 

Scarica i files Eagle e i files costruttivi gerber

download file Eagle

come si può notare, ogni elemento da portare sul pannello frontale è munito di un possibile connettore strip line. Sarà cura di chi monta il circuito di connettere il display, i LED, il pulsante sullo stampato oppure portarlo fuori tramite un cavetto flat.

La costruzione dei file gerber, produce questo output.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/gerberviewer_selettore.png

 Usando il PovRay si ottiene questa anteprima 3D del circuito assemblato.

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/selettore6_PIC_corretto.png

Il PCB sovrastante, non è stato realizzato per questioni economiche, ma il firmware è stato caricato nella Micro-GT mini interfacciato ai minishield sovra descritti mentre i CD4066 erano montati su breadboard. Gli schemi Eagle e i  gerber sono sati ampiamente controllati, sono quindi pronti per essere inviati alle fabbriche per ottenere i PCB. 

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

Bibliografia.

Per scrivere questo articolo ho usato le nozioni contenute nel libro "Let's GO PIC!!!" e il libretto in formato e-book "Micro pic partenza immediata".

http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/PIClibro.jpg                    http://www.grix.it/UserFiles/FrancescoTagliapietra/Image/one-shot%20button/PIC_immediati_libretto.jpg

Questi testi si trovano ad un prezzo più conveniente sul sito www.lulu.com ma sono un po' lenti ad arrivare, chi ha fretta li può prendere su amazon.

l link alla community Micro-GT, per chi volesse partecipare con un proprio progetto, è questo:

http://www.gtronic.it/community/community.html

Il link al sito del centro culturale ZIP di Padova dove ho fatto il corso e conosciuto il prof Gottardo è questo, date un'occhiata alla pagina delle attivazioni dei corsi:

http://www.csczip.it/

i corsi culturali:

 http://www.csczip.it/corsi%20culturali.htm