Abbonati ora!

Esperimenti con PSoC FirstTOUCH

La semplicità di utilizzo e la praticità sono le armi vincenti del kit di sviluppo, PSoC FirstTouch, proposto tempo fa dalla Cypress Semiconductor. Analizziamo più da vicino questo prodotto attraverso degli esempi che evidenziano tutte le sue periferiche e le sue potenzialità.

Come già accennato nell’introduzione, il PSoC First touch starter kit non è la solita scheda di valutazione con relativo alimentatore a corredo, ma una vera e propria “chiavetta USB”. Su tale dispositivo è possibile montare un modulo di espansione su cui sono presenti sensori tattili, di temperatura, di prossimità e di luminosità; essi permetteranno di muovere i primi passi con l’IDE PSoC Express e si potrà apprezzare quanto semplice sia la programmazione con un ambiente visuale. La porta USB di cui è dotato il FirstTouch serve, oltre che per prelevare l’alimentazione del modulo, anche per effettuare la programmare del chip. Il modulo FirstTouch viene consegnato con un firmware già precaricato. Si tratta dell’implementazione di un sensore tattile, simile agli slider presenti sui PC portatili. Dopo aver seguito la procedura di installazione dei driver, è sufficiente inserire il modulo all’interno di una qualsiasi porta USB.

Figura 1: la particolarità del kit di sviluppo FirstTouch risiede nelle sue dimensioni ridotte; nonostante ciò esso integra sensori di vario genere: tattili, di prossimità, di luce e di temperatura.

Figura 1: la particolarità del kit di sviluppo FirstTouch risiede nelle sue dimensioni ridotte; nonostante ciò esso integra sensori di vario genere: tattili, di prossimità, di luce e di temperatura.

Esempio 1: sensore tattile

In questo primo esempio verrà mostrato come creare un progetto tramite l’ambiente di sviluppo visuale. Si esamineranno le funzionalità di due delle periferiche presenti sul modulo add-on che deve essere inserito nel modulo: il sensore  tattile ed i led. L’obiettivo è quello di far accendere un diverso led (rosso, verde o blu) in base alla posizione del dito sulla parte di PCB destinata al sensore tattile.

Creare il progetto

Per creare un nuovo progetto selezionare FileNew Project. Inserire  i dati richiesti nella finestra mostrata in figura 2.

Figura 2: creazione di un nuovo progetto.

Figura 2: creazione di un nuovo progetto.

Selezione delle  periferiche di input/output

PSoC Express dispone di un catalogo di dispositivi che possono essere utilizzati per acquisire dati del mondo esterno come temperatura, tensione e stato di interruttori (input) e controllare dispositivi esterni come ventole, relay e LED (output). La figura 3 mostra un dettaglio del catalogo di dispositivi selezionabili; è possibile selezionare tra il tab input ed il tab output.

Figura 3: creazione di un nuovo progetto.

Figura 3: creazione di un nuovo progetto.

A questo punto è necessario  inserire il primo oggetto, ossia il sensore  di capacità che servirà per rilevare la posizione del dito sul sensore e quindi per accendere  il led corrispondente.  Selezionare il tab input e quindi scegliere CapSense -> CapSense – CSD -> Slider CSD. Da notare che nella stessa cartella sono presenti anche dei sensori tattili indicati con la sigla CSA. La differenza tra i due consiste nel metodo di conversione analogico/digitale utilizzato. CSD indica una modulazione di tipo sigma-delta, mentre CSA si riferisce al metodo di conversione ad approssimazioni successive. Effettuare il drag and drop del componente per inserirlo nella finestra Design. L’ambiente di sviluppo richiede l’inserimento del nome di tale componente e dei relativi parametri di acquisizione, come mostra la figura 4.

Figura.4: aggiunta del sensore tattile come componente di input

Figura.4: aggiunta del sensore tattile come componente di input

E’ interessante notare che l’inserimento dell’oggetto Sensore Tattile ha provocato l’aggiunta automatica di un ulteriore oggetto all’interno dell’area di progettazione (vedere figura 5).

Figura 5: ogni oggetto di input dispone di un ulteriore oggetto che permette la configurazione dei principali parametri.

Figura 5: ogni oggetto di input dispone di un ulteriore oggetto che permette la configurazione dei principali parametri.

Facendo click su di esso compariranno nella parte destra dell’ambiente di sviluppo una serie di proprietà che fanno riferimento all’oggetto sensore tattile.

Ecco le principali:

» Numero di pin sensori. Rappresenta il numero di pin del PSoC che sono connessi allo slider, secondo lo schema di figura 6;

Figura 6: connessione hardware tra i pin del PSoC e lo slider.

Figura 6: connessione hardware tra i pin del PSoC e lo slider.

» Risoluzione   dello slider. Maggiore è questo valore e maggiore sarà la risoluzione dello slider, ma in questa maniera aumenterà anche il rumore introdotto nella misura;

»  Diplexing. Quando questa opzione è abilitata, ciascun pin del PSoC è connesso a due sensori dello slider. In questo modo si ottiene un sensibile aumento della risoluzione, a parità di numero di pin sensori utilizzati.

» Velocità della scansione.  Rappresenta la velocità con cui i sensori  vengono letti dal PSoC. Bassi valori di questo parametro determinano una risposta più lenta del sensore, mentre un valore troppo elevato provoca problemi di rapporto segnale/rumore degradando eccessivamente, sensibilità alle variazioni di temperatura;

» Risoluzione   della scansione. Questo parametro è espresso in bit e può variare da 9 a 16 bit. Aumentandolo si migliora la sensibilità ed il rapporto S/N. Dopo aver selezionato l’oggetto di input (ossia,  il sensore tattile) è il momento di decidere il dispositivo di output che sarà controllato in base ai valori assunti dal primo. L’oggetto che sceglieremo per questo primo esempio è il led tricolore presente sulla scheda di espansione del kit. Selezionare  il tab di output e quindi Display -> LED -> Tri-Color  Red/Green/Blue.

Definizione delle  interconnessioni tra  oggetti

Il passo successivo dopo aver deciso ed inserito gli oggetti, è quello di definire le relazioni che devono esistere tra essi, cioè come devono comportarsi gli output al variare degli input. Con PSoC Express si può definire una delle 3 seguenti funzioni:

■  1-PriorityEncoder. In questo caso le uscite sono impostate sulla base di regole di priorità decise sugli ingressi. La regola a più alta priorità determinerà l’uscita. Una tale funzione corrisponde in C ad una struttura del tipo if(...){...}elseif(...){...}...;

2-StatusEncoder.  Si tratta di una funzione di trasferimento che imposta le uscite sulla base di regole sequenziali applicate agli ingressi. La struttura C che più si avvicina è un semplice if senza alcun else.

■  3-TableLookup. E’ una funzione che assegna per ogni valore di ingresso un valore di uscita.

Per l’esempio in oggetto la funzione più appropriata è sicuramente la prima. Infatti il valore fornito dall’oggetto sensore tattile può variare tra 0 e 99 (se la risoluzione impostata è 100). In C la funzione di uscita sarebbe definita come riportato nel listato 1.

if      Sensore_tattile_Position ==0 then RGBLED = Output1_state __OFF
else if Sensore_tattile_Position <=33 then RGBLED = Output1_state __BLUE
else if Sensore_tattile_Position <=66 then RGBLED = Output1_state __GREEN
else if Sensore_tattile_Position <=99 then RGBLED = Output1_state __RED
Listato 1

Per creare questa funzione fare click con il tasto destro del mouse sul LED tricolore e selezionare Transfer function. Quindi selezionare PriorityEncoder  e fare click su OK. Inserire le righe così come riportate in figura 7.

Figura 7: definizione della funzione PriorityEncoder.

Figura 7: definizione della funzione PriorityEncoder.

Premere OK per confermare la funzione di trasferimento. A questo punto si può notare nella finestra di design che è comparsa una linea di collegamento tra input ed output: essa rappresenta proprio la funzione appena definita.

Simulazione e verifica

L’ultimo passo prima della programmazione vera e propria del modulo è quella di simulare il funzionamento  di quanto fino a questo punto definito. Ovviamente, questo passo potrebbe non essere necessario e l’utente può passare direttamente alla fase di programmazione. Selezionare  il tab Simulation. Sarà mostrata la schermata riportata in figura 8.

Figura 8: schermata di simulazione.

Figura 8: schermata di simulazione.

Come si nota sono comparsi in corrispondenza di ogni oggetto dei widget, ossia interfacce che permettono di inserire dei valori di input e visualizzare valori di output. Quello relativo al sensore tattile permette l’inserimento di un valore compreso tra 0 e 99; in questo modo si simula la posizione del dito in un certo punto del sensore. Conseguentemente all’inserimento di questo valore, si noterà un variazione nel widget associato al LED tricolore. Per esempio, se si inserisce  il valore 33 per l’ingresso, l’uscita avrà valore BLUE.

Programmazione del target

Se nella fase di simulazione e verifica non sono stati riscontrati errori è possibile procedere con la programmazione del chip. Selezionare Build -> Generate Project. A questo punto sarà richiesto di selezionare  il modello di PSoC che si vuole programmare. Per i  dettagli fare riferimento a quanto riportato nella figura 9.

Figura 9: selezione del modello dal programmare.

Figura 9: selezione del modello dal programmare.

In questo modo è stato generato il file HEX che deve essere inserito nella memoria flash del chip. Inserire il PSoC FirstTouch nella porta USB e selezionare Program -> PSoC Programmer. Si aprirà la schermata mostrata in figura 10.

Figura 10: PSoC programmer.

Figura 10: PSoC programmer.

Fare click sul tasto Program per avviare la programmazione del chip ed attendere il messaggio di avvenuta programmazione. Verificare quindi che il passaggio del dito sulla zona riservata al sensore tattile provochi l’accensione dei LED cosi come previsto.

Esempio  2: sensore  di prossimità

Un’evoluzione dell’esempio precedente potrebbe essere quello di realizzare un sensore di prossimità. Esso potrebbe essere utile in differenti applicazioni, come per esempio per la realizzazione di sensori di parcheggio per l’automobile. All’interno del kit di sviluppo è presente uno spezzone di cavo blue lungo circa 5cm. Esso deve essere posizionato all’interno del connettore PRX1 presente sulla scheda di espansione e servirà da antenna omnidirezionale per rilevare eventuali oggetti presenti nel suo intorno. Quando l’oggetto è in prossimità dell’antenna si accenderà il led verde, in caso contrario si accenderà il led rosso. Come primo passo bisogna selezionare gli oggetti di input e di output. Selezionare tramite il tab Input l’oggetto Proximity – CSD e posizionarlo nell’area di progettazione. Quindi selezionare, tramite il tab Output, Display -> LED  Single Color -> On/Off e chiamare l’oggetto REDLED; ripetere la stessa operazione per inserire l’oggetto GREENLED. Perché gli oggetti interagiscano tra loro è necessario definire le relazioni tra ingressi ed uscite. In questo caso sono stati inseriti due output, quindi sarà necessario inserire due differenti funzioni di trasferimento. Utilizziamo ancora una volta una funzione di tipo PriorityEncoder, come riportato in figura 11.

Figura 11: funzione PriorityEncoder per il sensore di prossimità.

Figura 11: funzione PriorityEncoder per il sensore di prossimità.

A questo punto è possibile effettuare eventualmente la simulazione e quindi la programmazione del chip, che permetterà di testare praticamente le funzionalità di questo sensore.

Conclusioni

Gli esempi esposti in questo articolo sono solo alcuni degli esperimenti che è possibile eseguire con questo compatto kit di sviluppo. L’elevata disponibilità di componenti di input ed output presenti in PSoC Express, rendono la programmazione davvero semplice ed intuitiva: si noti che gli esempi qui esposti sono stati realizzati senza scrivere alcuna riga di codice, quindi anche chi è alle prime armi con la programmazione di microcontrollori vi si può cimentare.

 

 

Una risposta

  1. spips77 spips77 28 giugno 2018

Scrivi un commento

EOS-Academy