| Home | | What i'm doing | | About Me | __

Touch User Interface: FSR e Zerynth

Colombia, Digital Nomad, Elettronica, Göra, MakerSpace, User Interface Design, Zerynth /
By Andres Reyes / Giugno 15, 2018 / No Comments

Contenuti

  • Sensori di pressione di forza
    • Come funziona?
  • FSR Testing Code con Zerynth
  • Sensore di presenza
  • Sitografia

I love the Power Glove. It's so bad!
- Lucas Barton, "The wizard"

I sensori di pressione FSR (force sensitive resistor) ci consentono di realizzare facilmente una touch user interface (TUI), ad esempio il Power-Glove del Nintendo a 8 bit, che abbiamo conosciuto attraverso il film "Il piccolo grande Mago dei Videogames" del 1989 (in inglese "The wizard"), utilizzava il sensore per il rilevamento della flessione delle dita.

I resistori sensibili alla forza variano la resistenza in base alla forza che viene esercitata nell'area sensibile (sensing area), rendendoli una scelta interessante per la realizzazione di protototipi di Touch User Interface (TUI). Quale dovrei usare?

Sensori di pressione di forza

Nei progetti in cui non è necessario misurare forze esatte, i sensori FSR Interlink probabilmente sono la soluzione migliore essendo disponibili in diverse forme (circular, square, rectangular) e costando relativamente poco. Invece per una maggiore precisione, i sensori FlexiForce sono l'ideale, anche se più costosi e fragili.

Il sensore che ho scelto per fare delle prove è un Interlink FSR-406 che ho comprato al centro commerciale "La Cascada" e come potete vedere da questo articolo "Quanto costa comprare componenti di elettronica, sensori, boards in Colombia?" con il cambio euro-pesos è stato molto conveniente. Dal datasheet del sensore possiamo vedere che tanto maggiore sarà la forza che esercitiamo tanto minore sarà la resistenza come dimostra il grafico sottostante nella tipica curva forza-resistenza:


Un’ulteriore valore da notare è quello del drift (Deriva) che ci dice che con un carico fisso sul sensore avremmo una lettura meno affidabile nel nel tempo.

Come funziona?

Il sensore è composto da un robusto film polimerico (PTF), con i due elettrodi conduttivi isolati, ma che toccano il materiale sensibile alla pressione. Se non viene applicata nessuna pressione la resistenza misurata ai capi dei due elettrodi è superiore a 1 mega ohm, mentre applicando pressione sulla sensing area la resistenza decresce.

Il principio alla base del funzionamento delle FSR risale addirittura al brevetto dei microfoni di carbonio che l'inventore americano Alexander Graham Bell (1847-1922) aveva comprato nel 1877 a Emile Berliner (1851-1929). Questi microfoni vennero impiegati da Bell per migliorare la qualità del suono del suo prototipo di telefono con il quale aveva realizzato la prima chiamata della storia nel marzo del 1876.

Mr Watson, vieni qui , voglio vederti

Queste sono state le prime parole pronunciate al telefono da Bell per convocare il suo assistente dalla stanza accanto nel suo laboratorio di Boston. Quando una persona parlava nel microfono, un diaframma comprimeva i granuli al suo interno aumentando così la superficie di contatto tra di essi. Avendo una maggiore area di contatto di conseguenza la resistenza diminuiva.

FSR Testing Code con Zerynth

Dal datasheet del sensore FSR 406 possiamo realizzare il nostro circuto sulla breadboard creando un partitore di tensione con una resistenza e il sensore che è equiparabile a una resistenza variabile

Dallo schema circuitale possiamo ricavare che la è data dalla seguente formula:

quindi colleghiamo la al pin analogico A0 che misureremo con il metodo adc.read().

Analog Read con Python (Zerynth)
Python
1
2
# Use ADC reading to calculate voltage
fsrADC = adc.read(A0)

Sapendo che la di alimentazione è di 3,3 V possiamo calcolare il voltaggio:

Calcolare il voltaggio di FSR
Python
1
2
3
4
# Use ADC reading to calculate voltage
#convert the analog reading (which goes from 0 - 4095.0) to a voltage (0 - 3.3V):
fsrVoltage = fsrADC * (3300 / 1023)
print("Voltage reading in mV = ",fsrVoltage)

Ora dobbiamo calcolare partendo dalla formula iniziale per :

1
2
3
4
fsrResistance = ((3300 - fsrVoltage) * 10000) / fsrVoltage
# fsrVoltage is in millivolts so 3.3V = 3300mV
#10000 = 10K resistor
print("FSR resistance in ohms = ",fsrResistance)

Utilizzando il grafico come riferimento, perché non stiamo utilizzando un operazionale come nello schema circuitale, possiamo ricavare la forza a cui è stato soggetto il sensore

Python
1
2
3
4
5
6
7
8
9
10
11
12
fsrConductance = 1000000           # we measure in micromhos so
fsrConductance /= fsrResistance
print("Conductance in microMhos: ", fsrConductance)
        
# Use the two FSR guide graphs to approximate the force
if (fsrConductance <= 1000):
     fsrForce = fsrConductance / 80
     print("Force in Newtons: ",fsrForce)
else:
    fsrForce = fsrConductance - 1000
    fsrForce /= 30
    print("Force in Newtons: ",fsrForce)

Sensore di presenza

Il sensore FSR-406 anche se molto sottile e flessibile non cambia la resistenza se viene piegato rendendolo adatto all'impiego come sensore di presenza all'interno dell'imbottitura di un cuscino.
L'idea è di rilevare quando una persona è seduta (in rosso) o appoggiata allo schienale (in arancione) in una delle panchine realizzate a Gora Makerspace (Medellìn, Colombia).

Rilevata la presenza di una persona il retro della panchina (cerchio in giallo) dovrebbe illuminarsi dando risalto alle piante.
Il sensore sembra essere una soluzione adeguata per fare delle prime prove come sedile avendo un sensing range da 100 grammi a 10 kili, sapendo però che non è un sensore adatto per misure di precisione.

Sitografia

Microfoni di carbone
[1] Eliot Van Buskirk , The Microphone sound much better, Wired, 2010
[2] Randy Alfred, Mr Watson, come here, Wired, 2011

FSR
[1] Interlink GSR Guide

Power Glove
[1] Nathan Chandler, How the Nintendo Power Glove Worked, How stuff works
[2] Chris Baker, Nintendo Flashback: The Disastrous Power Glove, Rolling Stone, 2017
[3] Jake Rossen, An Oral History of Nintendo's Power Glove, Mental Floss, 2017

Tweet

IXD INTERACTION

  • UX- User Experience
  • UI - User Interface
  • CI - Convesational interface
  • BCI - Brain computer interface
  • PD - Product Design
  • NLP - Natural Language Processing

DEV DEVELOPER

  • Simulink
  • Matlab
  • Fpga
  • Zerynth
  • Python
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish

Inserisci/Modifica link

Inserisci l'URL di destinazione

Oppure inserisci un link a un contenuto esistente

    Nessun termine di ricerca inserito. Vengono mostrati i contenuti più recenti. Cerca o usa i tasti freccia su e freccia giù per selezionare un elemento.