Pin Types


I Pin del sistema Theremino


-
-
Sono chiamati “Pin” i connettori di In-Out che si conformano allo standard GND / +5V / Signal.

ATTENZIONE: anche la linea seriale usa connettori a tre vie simili ai Pin, ma non deve essere confusa con essi.
-
-
-

I Pin si trovano sui moduli “Master” che hanno 6 pin universali o sugli “Slave” che ne hanno 10 (di cui otto universali e due solo digitali)

Il “+5V” porta la alimentazione da cui normalmente è possibile prelevare fino a qualche centinaio di milliampere

Il “Signal” porta un segnale analogico da 0 a 3.3 volt in arrivo dai sensori o in uscita verso gli attuatori.

Per i pin configurati come OUTPUT ( DigOut, Pwm8, Pwm16, Servo8 e Servo16 ) la corrente massima è +/-15mA (sia verso massa che verso il positivo)

Per i pin configurati come INPUT ( DigIn, DigInPu, Adc, Cap, Res, Counter, FastCounter ) valgono le seguenti considerazioni:

  • La tensione applicabile a qualsiasi pin di ingresso deve essere limitata nel range da VSS-0.3 a VDD+0.3
  • Non è possibile limitare la tensione con diodi P-N ma si dovrebbero usare diodi Schottky. Purtroppo gli Schottky hanno una capacità parassita troppo alta, per cui solitamente la limitazione deve essere affidata ai soli diodi interni.
  • La corrente massima applicabile a diodi di protezione interni è di + /-100uA (*)
(*) Questa è la corrente massima per evitare errori di funzionamento. Durante gli eventi ESD la massima corrente può essere molto maggiore senza alcun rischio.

I connettori dei sensori presenti sugli slave speciali, come ad esempio il CapSensor, non sono dei veri “Pin” perché non hanno le tre connessioni GND / +5V / Signal e quindi non vi si possono collegare i sensori e gli attuatori standard.

Errori temporanei causati da sovratensioni sui PIN di Input

A volte, toccando i PIN con le dita, il programma HAL smette di comunicare con l’hardware, scrive una riga rossa con il messaggio “disconnesso” e si deve premere “Riconosci”.

Questo si verifica se il corpo è carico di elettricità statica e emette una piccola scarica elettrica. Tutti i componenti sono scelti con cura e non si rompono mai, ma anche se non si vede la scintilla, si tratta sempre di tensioni di molte migliaia di Volt che mendano in tilt temporaneamente la comunicazione seriale e la porta USB.

Durante le prove si faccia attenzione a maneggiare i moduli solo da spenti oppure a toccare prima la massa (ad esempio il connettore USB) Il progetto finale dovrebbe sempre prevedere un contenitore isolante che impedisca agli utenti di toccare parti metalliche sotto tensione.

Protezione contro gli errori di connessione e le sovratensioni

I Pin sono protetti contro gli errori di connessione, è possibile collegare ad esempio un cavo della linea seriale ad un Pin di qualunque tipo oppure un Pin ad un altro, e magari invertire i collegamenti in modo che il segnale finisca a massa o viceversa e l’unico risultato che si ottiene è un non funzionamento temporaneo.

ATTENZIONE: Theremino System -I Pin sono protetti contro le sovratensioni ed è possibile toccarli con le mani senza particolari precauzioni ma non è garantito che possano resistere a tutto. Se si connette il 220 volt ad un qualunque Pin di In-Out, oppure alla linea di trasmissione seriale si ottiene un sicuro disastro e probabilmente si distrugge anche mezzo PC

E’ sempre bene fare attenzione nei collegamenti perché alcune particolari inversioni possono portare a mettere in corto il 5 volt della linea USB e quindi fare intervenire la protezione dentro al PC. In altri casi è possibile connettere il 5 volt a sensori che non lo sopportano, solitamente anche in questo caso non si rompe nulla ma è meglio evitarlo.

Sui moduli del sistema Theremino non sono presenti fusibili o componenti per la protezione che avrebbero degradato le prestazioni. Il principio che si è seguito è stato invece di usare i componenti stessi come fusibili e di fare in modo che costino poco e siano facilmente sostituibili.


I valori numerici dei Pin

I sensori e gli attuatori producono e usano valori numerici “grezzi” molto differenti tra loro, in alcuni casi si tratta di valori da 0 a 255 (8 bit), in altri da 0 a 65535 (16 bit) oppure molto piccoli (da 0 a 1) nel caso degli ingressi digitali o molto grandi (da 0 a 16777215) per i “CapSensorHQ” e fino a oltre 4 miliardi in alcuni casi come il “Period”

Per facilitare le connessioni e la modularità il sistema Theremino trasforma tutti i valori grezzi in un “range” standard da 0 a 1000

Usare valori da 0 a 1000 non limita la risoluzione a soli 1000 valori perché si tratta di numeri di tipo “Float” (con la virgola) che hanno una risoluzione molto maggiore di quella dei migliori sensori esistenti.

Come vengono trattati i valori numerici di Output

DigOut, Pwm_8 e Pwm_16

Servo_8 e Servo_16

DA COMPLETARE

Come vengono trattati i valori numerici di Input

I valori dei sensori di input nei casi Digital_ln, Digital_In_Pu, Adc_8, Adc_16, Cap_8, Cap_16, Res_8, Res_16

Counter, Counter_Pu, FastCounter, FastCounter_Pu

Period, Period_Pu e Usound_Sensor

DA COMPLETARE


Tipi di pin in uscita

DigOut
Uscita digitale che può essere usata direttamente per accendere un led o con adattatori più o meno complessi anche per carichi di grande potenza, eventualmente opto-isolati.

Attualmente ogni Pin di tipo “DigOut” usa 8 bit per la trasmissione dei dati ma nelle versioni future dei dispositivi del sistema Theremino è previsto di impaccare fino a otto pin DigOut in un Byte

Pwm8 e Pwm16
Uscita di segnale PWM (Pulse Width Modulation) è un tipo di modulazione digitale che permette di ottenere una tensione media variabile dipendente dal rapporto tra la durata dell’ impulso positivo e di quello negativo. Con l’aggiunta di un resistore e di un condensatore si può ottenere una tensione continua regolabile tra 0 e 3.3 volt. Un led può essere collegato direttamente e la sua luce potrà essere regolata da zero al massimo.

Molti dispositivi collegabili alle uscite PWM, come i led e le lampade a incandescenza sono usati per essere visti dagli esseri viventi che hanno una risposta agli stimoli di tipo logaritmico, se non si effettua una correzione la metà superiore del campo di regolazione apparirà compressa e gran parte della variazione percepita si troverà nella zona iniziale. Per correggere questo difetto i Pin di tipo PWM possono essere corretti con l’opzione “Responso logaritmico”

Il Pwm8 ha una risoluzione minore (solo 256 livelli differenti), se la gradualità è sufficiente, è bene usare questo tipo di Pin al posto del Pwm16 per occupare solo otto bit (un byte) durante la comunicazione.

Servo8 e Servo16
Uscita di segnale specifico per i servo comandi. I servo comandi hanno solitamente una escursione di circa 180 gradi, praticamente tutti sono oltre i 150 gradi e qualcuno arriva fino a 210 gradi.

La massima escursione si ottiene solitamente con tempi da 500 uS fino a 2500 uS. I moduli del sistema Theremino possono generare un segnale “servo” da 0 uS a 3900 uS in modo da poter guidare i servo comandi di ogni costruttore, analogici o digitali che siano.

Se si collegano servocomandi che hanno una forte corrente di spunto, particolarmente quelli grandi e quelli digitali, allora è bene interrompere la linea di comunicazione con un adattatore per la alimentazione esterna e un alimentatore da 5 volt da 1A a 5A a seconda di quanti e quali servo si collegano.

Il Servo8 ha una risoluzione minore (solo 256 livelli differenti), se la gradualità è sufficiente, è bene usare questo tipo di Pin al posto del Servo16 per occupare solo 8 bit (un byte) durante la comunicazione.

Caratteristiche per tutti i tipi di pin in uscita

Tensione bassa: 0 Volt
Tensione alta: 3.3 Volt
Corrente massima sink: 18 mA
Corrente massima source: 18 mA


Tipi di pin in ingresso

DigIn e DigInPu
Ingresso digitale con o senza PullUp.

Attualmente ogni Pin di tipo “DigIn” o “DigInPu” usa 8 bit per la trasmissione dei dati ma nelle versioni future dei dispositivi del sistema Theremino è previsto di impaccare fino a otto pin DigIn in un Byte

Adc8 e Adc16
Si usa questo tipo di pin per trasformare una tensione analogica in ingresso da 0V a 3.3V in un valore numerico da 0 a 65535.

Il tipo Adc8 ha una risoluzione minore (solo 256 livelli differenti) se la gradualità è sufficiente è bene usare questo tipo di Pin al posto dell’Adc16 per occupare solo otto bit (un byte) durante la comunicazione.

Il tipo Adc16 ha una risoluzione effettiva di circa 12..14 bit (vedi note alla fine di questo documento)

Cap8 e Cap16
Si usa questo tipo di pin per misurare piccole capacita, nell’ordine dei PicoFarad. L’uso principale è di leggere tastiere capacitive e controlli capacitivi di tipo “slider” ma è anche possibile creare semplici sensori di prossimità senza dover usare i costosi sensori di prossimità commerciali.

Per i sensori di prossimità e per le tastiere più “difficili” (con controlli “slider” o con isolante molto spesso) è bene usare i pin con bassa capacità parassita (vedere le note alla fine di questo documento)

Il Cap8 ha una risoluzione minore (solo 256 livelli differenti) se la gradualità è sufficiente è bene usare questo tipo di Pin al posto del Cap16 per occupare solo otto bit (un byte) durante la comunicazione.

Il tipo Cap16 ha una risoluzione effettiva di circa 12..14 bit ( vedi note alla fine di questo documento )

Res8 e Res16
Si usa questo tipo di pin per misurare il valore di resistenza di un sensore. L’uso principale è di leggere la posizione di resistori variabili e slider.

Si ottiene lo stesso risultato di un potenziometro collegato ad un pin ADC ma bastano due fili e non è necessario disporre di una tensione stabilizzata da 3.3 volt per il terzo filo del potenziometro.

Il campo di resistenza misurabile va da 0 a 50 Kohm. La misura viene effettuata con una corrente da 66 uA (+/- 20 %) che moltiplicata per 50 Kohm genera la tensione di fondo scala di 3.3 volt.

Res8 ha una risoluzione minore (solo 256 livelli differenti) se la gradualità è sufficiente è bene usare questo tipo di Pin al posto del Res16 per occupare solo otto bit (un byte) durante la comunicazione.

Il tipo Res16 ha una risoluzione effettiva di circa 12..14 bit (vedi note alla fine di questo documento)

Counter e CounterPu
Ogni Pin di tipo “Counter” o “Counter_Pu” usa 16 bit per la trasmissione dei dati.

Tutti i pin possono essere programmati come Counter o CounterPu. ma la velocità di conteggio massima è abbastanza limitata, intorno a qualche KHz, dipendente dal carico sul microcontrollore e dal duty-cycle del segnale. Se si necessita di una velocità superiore si deve usare il FastCounter.

FastCounter e FastCounterPu
Ogni Pin di tipo “FastCounter” o “FastCounter_Pu” usa 16 bit per la trasmissione dei dati.

Il conteggio veloce (FastCounter) permette di contare frequenze molto alte (fino a 50MHz) ma può essere abilitato solo sul pin 8.

Per ottenere la massima frequenza di conteggio è necessario che il duty-cycle sia del 50% con un minimo di 10nS con tensione bassa e 10nS con tensione alta.

Period e PeriodPu
Ogni Pin di tipo “Period” usa 32 bit (4 byte) per la trasmissione dei dati.

Questo tipo di Pin misura il periodo di una forma d’onda ripetitiva, da salita a salita, fino ad un periodo massimo di circa 260 secondi.

La risoluzione è di mezzo microsecondo e la precisione è del +/- 1% in un range di temperatura ambiente da 0C a 50C

Il tempo di ciclo può essere poi convertito dal programma “HAL” in una frequenza. Questa tecnica permette di misurare frequenze molto basse (fino a circa un decimo di Hertz) con altissima risoluzione.

Usound_sensor
Ogni Pin di tipo “Usound_sensor” usa 16 bit ( 2 byte ) per la trasmissione dei dati.

Molti sensori di distanza ad ultrasuoni ad esempio il modello SRF05, possono essere letti con questo tipo di Pin.

Questo tipo di pin genera un impulso di “Start” positivo ogni 33 mS ( circa ) e misura il tempo dell’impulso di ritorno da 0 a 32000 microsecondi.

Il tempo viene poi convertito dal programma “HAL” in una distanza tenendo conto della velocità del suono nell’aria.

CapSensor_HQ
Ogni Pin di tipo “CapSensor_HQ” usa 24 bit (3 byte) per la trasmissione dei dati.

Si usa questo tipo di Pin per misurare la distanza di un oggetto conduttivo (tipicamente una mano)

La rilevazione è stabile e precisa con un tempo di risposta rapidissimo, nell’ordine dei millisecondi.

Caratteristiche per tutti i tipi di pin in ingresso

Tensione bassa: da 0 a 1 Volt
Tensione alta: da 2.3 a 3.3 Volt
Tensione bassa minima: -0.2 Volt con 100uA massimi (Nota 1)
Tensione alta massima: +3.6 Volt con 100uA massimi (Nota 1)
Corrente di pull-up: da 100 a 400 uA
(Nota 1) Se il segnale scende sotto a -0.3 Volt o sopra 3.6 Volt si deve limitare la corrente a +/-100uA. Solitamente si limita la corrente con un resistore in serie al filo del segnale. Il resistore deve essere posizionato vicino al pin di ingresso per minimizzare i disturbi raccolti dal filo di segnale. Il valore del resistore dipende dalla prevista extra-tensione del segnale. Come regola generale si calcolano 10 kohm per ogni volt di extra-tensione.


I2C_SDA e I2C_SCL

Il ThereminoMaster potrebbe comunicare in I2C (attraverso la porta AUX), ma non contiene il firmware necessario. Chi volesse usare l’I2C dovrebbe scrivere lui stesso il firmware e anche modificare la applicazione HAL, per ricevere questi dati via USB. Si consiglia quindi di non usare dispositivi che comunicano con questo protocollo. 

I2C è un sistema di comunicazione seriale bifilare utilizzato per la comunicazione tra circuiti integrati, generalmente sulla stessa piastra o nello stesso apparecchio elettronico.

Quando non si necessita di grande larghezza di banda con questi due pin è possibile comunicare con una catena di dispositivi (fino a 128 sugli stessi due fili)

Il numero di fili effettivamente necessari per il collegamento è quattro perché normalmente sarà necessario portare anche la massa e la alimentazione.

Esistono sul mercato molti dispositivi digitali che usano la comunicazione di tipo I2C, molti sensori ma anche memorie di tipo EEPROM, display LCD, led drivers e anche molti dispositivi audio-video.

Esempi di dispositivi con comunicazione di tipo I2C

                
Sensore di temperatura                                          Sensore di colore ADJD-S311-CR999
TMP102


Mca_8, Mca_16 e Mca_32

La documentazione su questi tipi di pin è superata – rimane come riferimento e per eventuali sviluppi futuri.

Inizialmente pensavamo di implementare la Spettrometria con i velocissimi ADC dei PIC. Ma ulteriori ricerche hanno dimostrato che più della velocità dell’ADC è importante il rapporto segnale rumore e in questo le schede audio sono imbattibili. Per cui probabilmente questi tipo di Pin non verranno mai usati.

Per maggiori informazioni sulla spettrometria leggere qui:
- Schemi elettrici e piani di montaggio: www.theremino.com/technical/schematics
- Software: www.theremino.com/technical/schematics
- Spettrometria Gamma: www.theremino.com/blog/geigers-and-ionchambers
- Hardware, autocostruzione e kits: www.theremino.com/contacts/producers
- Immagini e Video: www.theremino.com/video-and-images

—————–

Questi tipi di pin implementano le funzioni hardware di un Multichannel Analyzer con cui è possibile costruire un apparecchiatura per la Spettrometria Gamma delle radiazioni nucleari.

La spettrometria permette di distinguere tra le varie sostanze che emettono radiazioni, tra cui le più comuni sono Uranio, Torio, Potassio, Americio, Radio, Cesio e Cobalto.

Il suffisso 8, 16 e 32 di questi tipi non indica i Bit ma i Byte per cui i tipi Mca usano molta banda nella linea seriale.

Il tipo Mca_32 usa ben trentadue byte ad ogni rinfresco, come 32 pin di tipo Adc_8, e dimezza il numero di dispositivi di altro tipo sulla stessa linea (ADC, DigIn, DigOut, Pwm etc…)

Il tipo Mca_32 permette il più veloce aggiornamento del display MCA, cioè 1024 canali fino a 15 volte al secondo.


Note per tutti i pin di ingresso digitale

DigIn, DigInPu, Counter, CounterPu, FastCounter, FastCounterPu, Period, PeriodPu e UsoundSensor

Gli input digitali sono di tipo SchmittTrigger con:
- Tensione di scatto bassa = 1 volt
- Tensione di scatto alta = 2 volt.


Note per la risoluzione di Adc16, Cap16 e Res16

La risoluzione di 16 bit non è raggiungibile con gli ADC dei microcontrollori ma con tecniche di sovracampionamento scritte nel firmware si arriva intorno ai 14 bit. Il sistema Theremino implementa anche la correzione degli errori e il filtraggio digitale per la riduzione del rumore. Queste tecniche combinate permettono di raggiungere una risoluzione effettiva di 16 bit con una accettabile riduzione della velocità di risposta.

Per ottenere la massima risoluzione si deve anche minimizzare il rumore curando la disposizione dei collegamenti di massa, non usando sensori con impedenza troppo alta (max 10..50 Kohm), facendo collegamenti non troppo lunghi ed evitando gli accoppiamenti capacitivi con segnali adiacenti.


Note per tutti i contatori

Per permettere a più programmi di usare contemporaneamente gli stessi dati i contatori non vengono azzerati a ogni lettura, ma continuano a crescere fino a 65535 e poi ricominciano da zero.

I programmi che li usano ottengono il nuovo conteggio facendo la differenza tra il nuovo valore e il precedente. E’ anche necessario controllare che il nuovo valore letto sia uguale o superiore al precedente e, in caso contrario, occorre correggere sommando 65536.

Tra una lettura e la seguente i programmi non devono far trascorrere troppo tempo, in modo da leggere il contatore in tempo prima che si azzeri per due volte.

Il tempo approssimativo di ripetizione, a seconda della frequenza del segnale contato, è indicato nella seguente tabella seguente.

Segnale        Tempo max di ripetizione
----------------------------------------
 50 MHz          1 mS
  5 MHz         10 mS
500 KHz        100 mS
 50 KHz          1 Sec
  5 KHz         10 Sec


Note per i PullUp

Nei tipi di pin con PullUp viene aggiunta una debole corrente positiva utile per collegare pulsanti o dispositivi open-collector senza necessità di aggiungere un resistore tra il pulsante e la tensione positiva.

La corrente di Pull-up tipica è 250 uA  (minima 50 uA, massima 500 uA).


Note per gli ADC, i Cap e Res

Gli ingressi ADC non sono disponibili su tutti i pin, vedere la tabella seguente.

Modulo

Pins validi

Pins non validi

Generic

1, 2, 3, 4, 5, 6, 9, 10

7, 8, 11, 12

Servo

1, 2, 3, 4, 5, 6, 7, 8

9, 10


Correnti di perdita e capacità dei pin

Per i sensori che forniscono una corrente molto bassa (i sensori di luce ad esempio) e per i tasti capacitivi è meglio usare i pin con minore corrente di perdita e minore capacità.

Modulo    Pins         Corrente di perdita   Capacità parassita
                       (max)                 (approssimativa)
-----------------------------------------------------------------
Master    1, 2         +/- 500 nA            30 pF
Servo     1, 2         +/- 500 nA            30 pF
Generic   1, 2         +/- 500 nA            30 pF

Servo     7, 8         +/- 200 nA            20 pF

Master    3,4,5,6      +/- 100 nA            10 pF
Servo     3,4,5,6      +/- 100 nA            10 pF
Generic   3,4,5,9,10   +/- 100 nA            10 pF


Precisione dei segnali “Servo” e “PWM”

Risoluzione effettiva

Precisione

Numero passi in 1 mS

Tempo di ripetizione

Freq. di ripetizione

Servo 8 bit

8 bit

3.90 uS

256

16 mS

60 Hz

Servo 12 bit

12 bit

0.24 uS

4096

16 mS

60 Hz

Servo 16 bit

14 bit

0.06 uS

16384

16 mS

60 Hz

I segnali dei servo variano da 1 mS (minimo) a 2 mS (massimo). Se si imposta il modulo per più di 8 servo, il tempo di ripetizione aumenta (fino a 24 mS con 12 servo).

La precisione dei segnali dei servo è costante con qualunque numero di pin configurati come “Servo” ma decresce se nello stesso modulo si usano anche pin di tipo “Pwm”.

 

Risoluzione effettiva

Precisione

Num. passi in 4mS

Tempo di ripetizione

Freq. di ripetizione

Pwm
8 bit

8 bit

16 uS

256

4 mS

250 Hz

Pwm 12 bit

12 bit

1 uS

4096

4 mS

250 Hz

Pwm_ 16 bit

16 bit

0.06 uS

65536

4 mS

250 Hz

Quale che sia il numero dei pin usati come “Pwm”, il tempo di ripetizione è sempre 250 Hz.

La precisione massima di 16 bit si ottiene configurando un solo pin “PWM” e nessun “Servo”. Aumentando il numero di segnali PWM e servo nello stesso modulo, la precisione massima dei segnali “PWM” scende gradualmente fino a 8 bit.


Ottenere i moduli del sistema

Il team del sistema Theremino si occupa solo di ricerca e non vende hardware. Il sistema è completamente “Freeware”, “Open Source”, “No Profit” e “DIY”, ma esistono produttori che possono fornire i moduli assemblati e collaudati a un ottimo prezzo. Difficilmente si potrebbe auto-costruirli spendendo meno. Per un elenco dei produttori leggere questa pagina: www.theremino.com/contacts/producers


Donazioni
 

Il codice sorgente dei nostri programmi non contiene note sul copyright, nomi degli autori e link al nostro sito, per cui potete farne ogni uso, senza limitazioni di alcun genere. Non chiediamo di specificare la fonte originale o il nostro sito ma se sarete contenti del nostro software ricordatevi di noi e fate conoscere questo sito ai vostri amici. Eventuali donazioni, anche piccole, sono molto gradite e possono aiutarci a mantenere il software “free” ed a produrne sempre di nuovo.

Comments are closed.