Tipi di Pin


I Pin del sistema Theremino

Sono chiamati “Pin” i connettori di Input-Output presenti sui moduli Master e Slaves.


Pin di In Out del modulo Master dalla versione 4.0 in poi

MasterDIL-V4_3D_Top

In questa versione i Pin di IN-OUT sono 12 e sono indicati con cerchi e numeri.


I vecchi Master avevano 6 o 10 Pin, disposti come segue:

I primi Master avevano solo 6 Pin di Input-Output marcati IN OUT PINS – 1 2 3 4 5 6

Theremino System - Master IN OUT Pins

I Master con firmware versione 3.0 e successive, avevano 4 ulteriori Pin: 
Il Pin 7  sul connettore CN2 (AUX), marcato SDA
Il Pin 8 sul connettore CN2 (AUX), marcato SCL
Il Pin 9 sul connettore CN2 (AUX), marcato IntO
Il Pin 10 sul connettore CN3 (Serial), marcato Dir


Pin di In Out dei moduli slave

I moduli “Slave” hanno 10 Pin. I pin da 1 a 8 sono universali, il 9 e 10 sono solo digitali.

ATTENZIONE: anche la linea seriale usa connettori a tre vie simili ai Pin, ma non deve essere confusa con essi. La linea seriale serve solo per collegare i moduli uno con l’altro. Non si devono collegare sensori o attuatori alla linea seriale. 


I segnali dei Pin

Il filo “GND” porta il riferimento di tensione zero e va collegato con il corrispondente GND del sensore o attuatore.

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

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

Il filo “3.3” porta la tensione stabilizzata di 3.3 Volt, da cui è possibile prelevare fino a un centinaio di milliampere.

Correnti e tensioni massime sui fili SIGNAL dei Pin

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 ai 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. Si dovrebbero usare diodi Schottky. che però hanno una capacità parassita troppo alta. Quindi 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.

Solo i Pin speciali 7, 8 e 9 accettano in ingresso segnali da 5 Volt. Per la precisione da -0.3 Volt a 5.3Volt.

I connettori dei sensori presenti sugli slave speciali, come ad esempio il CapSensor, non sono dei veri “Pin” e 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. I componenti del sistema Theremino non si rompono mai, ma anche se non si vede la scintilla, si tratta sempre di tensioni di molte migliaia di Volt. Queste scariche possono mandare in tilt sia la comunicazione seriale che la comunicazione 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’ 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. 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

Dig_Out
Il valore letto dallo slot viene rapportato secondo “Min value” e “Max Value” e trasformato in un valore tra zero e uno. Questo valore viene filtrato con un filtro IIR (lineare o esponenziale), regolabile con “Response Speed”. Il valore di uscita del filtro viene chiamato “Normalizzato” (valore tra zero e uno e filtrato).

Se il valore normalizzato supera 0.5, viene inviato un uno al PIN hardware, che vuol dire ACCESO (3.3 Volt).

Se il valore normalizzato è inferiore a 0.5, viene inviato uno zero al PIN hardware, che vuol dire SPENTO (zero Volt).

Scambiando i valori “Min value” e “Max value” (ad esempio Min value = 1000 / Max value = 0) si ottiene una inversione del funzionamento. Quindi in questo esempio, se il valore dello Slot supera il 500, allora l’uscita va a zero volt.

Pwm_8 e Pwm_16, Servo_8 e Servo_16
Il valore letto dallo slot viene rapportato secondo “Min value” e “Max Value” e trasformato in un valore tra zero e uno. Questo valore viene filtrato con un filtro IIR (lineare o esponenziale) regolabile con “Response Speed”. Il valore di uscita del filtro viene chiamato “Normalizzato” (valore tra zero e uno e filtrato).

Il valore normalizzato viene poi rapportato secondo “Min time (uS)” e “Max time (uS)” e trasformato in un numero tra “0” e “64000”. L’hardware considera questo numero come sedicesimi di microsecondo, quindi 64000 vuol dire 4 milli secondi.

I PIN di tipo “Pwm” emettono impulsi con tempo variabile tra 0 mS e 4 mS e con tempo di ripetizione fisso di 4 mS.

I PIN di tipo “Servo” emettono impulsi con tempo variabile tra 0.5 mS e 2.5 mS (se non regolati diversamente) e con tempo di ripetizione fisso di 16 mS.

Stepper
Il valore letto dallo slot, viene rapportato (con “1000 means mm” e “0  means  mm”) e trasformato in un valore tra zero e uno. Se si impostano “1000 means mm” = 1000 e “0  means  mm” = 0, allora non vengono eseguite conversioni di scala e il valore proveniente dallo slot viene considerato “millimetri”.

Da qui in poi il valore è sempre in millimetri. “Zero” indica zero millimetri e “uno” indica 1000 millimetri. Questo valore non è limitato tra zero e uno, ma tra due miliardi di step positivi, e due miliardi di step negativi. Se si usa “Steps per mm = 200” i limiti sono: +10 Km e -10 Km.

Il valore viene quindi filtrato con un filtro IIR (lineare o esponenziale), regolabile con “Response Speed”. Il valore di uscita del filtro viene chiamato “Filtrato”

Il valore finale che viene inviato all’hardware è un numero di STEP (pre-moltiplicato per il valore “Steps per mm”) e rappresenta la “destinazione”.

Il valore speciale NAN_Reset, ha il significato speciale di azzeramento dell’asse. Quando si scrive un Reset, nello Slot di un Pin di tipo Stepper, il motore si ferma immediatamente. Successivamente, il primo valore che verrà scritto nello Slot, rappresenterà il valore “zero di riferimento”. Il NAN_Reset è disponibile in Theremino Automation come “Reset”, oppure nella nuova classe “ThereminoSlots”, scaricabile con i sorgenti di Theremino Automation.

Pwm_Fast
Se si abilita il pulsante “Frequency from slot” il valore filtrato imposta la frequenza. I valori in arrivo dagli slot valgono solitamente tra 0 e 1000, ma vengono trasformati in un valore di frequenza, tra “Min value” e “Max value”.

Se si abilita il pulsante “Dury cycle from slot”, il valore filtrato imposta il rapporto di tempo, tra segnale basso e alto. I valori in arrivo dagli slot, valgono solitamente tra 0 e 1000, ma vengono moltiplicati o divisi, modificando “Min value” e “Max value”. Normalmente si impostano Min=0 / Max=1000 e il Duty Cycle si regola, fornendo valori da 0 a 1000.

La frequenza minima generabile è 245 Hz e la massima 5.3 MHz circa. Il Duty Cycle va da zero (segnale di uscita sempre basso) fino al 100% (segnale di uscita sempre alto).

La granularità delle regolazioni dipende dalla frequenza impostata:

  • A 1000 Hz la precisione del Duty Cycle è 16 bits (errori: 0.0015%) e quella della frequenza è di 14 bit (errori: 0.006%)
  • A 16 KHz la precisione del Duty Cycle è 12 bits (errori: 0.024%) e quella della frequenza è di 10 bit (errori: 0.1%)
  • A 1 MHz la precisione del Duty Cycle scende a soli 6 bits (errori: 1.5%) e quella della frequenza a soli 4 bit (errori: 6%)

A causa della granularità le frequenze più alte sono: 5.333 MHz / 4 MHz / 3.2 MHz / 2.666 MHz / 2.286 MHz / 2 MHz / 1.777 MHz / 1.6 MHz / 1.454 MHz / 1.333 MHz / 1.231 MHz / 1.066 MHz / 1 MHz


Come vengono trattati i valori numerici di Input

Digital_ln, Digital_In_Pu
Gli ingressi digitali sono di tipo Schmitt Trigger, per cui la tensione deve superare i 2 Volt, per scattare su “ON” e deve scendere sotto a 1 Volt, per scattare su “OFF”. Il valore ON viene trasmesso come “1” e il valore “OFF” come “0”. Questi due valori vengono filtrati con un filtro FIR (lineare o esponenziale) regolabile con “Response Speed”. Il filtro può essere usato per fare la media di molti impulsi o come antirimbalzo per i contatti meccanici. Infine viene fatto un confronto. Se il valore filtrato supera 0.5 allora viene inviato allo slot il valore “Max Value”, altrimenti viene inviato il valore “Min value”.

Adc_8, Adc_16, Cap_8, Cap_16, Res_8, Res_16
Questi ingressi misurano grandezze diverse (tensione, capacità e resistenza) e le trasformano in un numero tra 0 e 65535 (16 bit di dinamica). Questi valori vengono standardizzati tra zero e uno e filtrati con un filtro FIR (lineare o esponenziale), regolabile con “Response Speed”. Il filtro può essere usato per fare la media temporale e migliorare la stabilità delle misure. Infine il valore normalizzato viene espanso tra “Min value” e “Max Value” e inviato allo Slot.

CapSensor
I CapSensor misurano capacità piccolissime e le trasformano in un numero a 32 bit, che rappresenta un tempo di oscillazione, in sedicesimi di microsecondo. La applicazione HAL calcola la frequenza di oscillazione, e da questa risale alle capacità fisse e variabili, e infine con una certa approssimazione, alla distanza in millimetri. Questa distanza viene normalizzata tra zero e uno, usando i parametri DistMin e DistMax e filtrata con un filtro FIR (lineare o esponenziale), regolabile con “Response Speed”. Il filtro può essere usato per fare la media temporale e migliorare la stabilità. Infine il valore normalizzato viene espanso tra “Min value” e “Max Value” e inviato allo Slot.

Counter, Counter_Pu, FastCounter, FastCounter_Pu
Tutti i contatori generano un conteggio che va da 0 a 65535 (16 bit). Quando il conteggio supera 65535 il numero riparte da zero. Questo sistema permette a molte applicazioni di leggere il numero progressivo senza pericolo di perdere conteggi.

Period, Period_Pu, SlowPeriod
Questo ingresso legge il tempo di un ingresso digitale tra due successivi fronti di salita. Il tempo viene misurato in sedicesimi di microsecondo. Il funzionamento di questi Pin non è stato controllato, e potrebbe contenere errori.

Usound_Sensor
Questo ingresso è specializzato per leggere i sensori a ultrasuoni. Il trattamento dei valori è simile a quello proveniente dagli ADC.

I pin di tipo Counter, FastCounter e Period dispongono anche di un convertitore, che calcola la frequenza. Il funzionamento di questo convertitore non è stato controllato, e potrebbe contenere errori.

Stepper_Dir
Questo ingresso è sempre associato a un Pin di tipo Stepper. Il valore grezzo che viene letto dall’hardware, è il numero di STEP (positivi o negativi), che mancano per arrivare alla “destinazione” specificata. La applicazione HAL calcola i millimetri (e frazioni), dividendo il valore grezzo, per il valore “Steps per mm” dello specifico motore. Infine questo valore in millimetri, viene scritto nello Slot, e può essere letto dalla applicazione CNC. La applicazione CNC, conoscendo la distanza rimanente e la destinazione (da lei stessa specificata), può calcolare, con una semplice sottrazione, la posizione effettiva del motore. Conoscendo la posizione di ogni motore, in ogni istante, gli algoritmi di controllo sono semplificati e il loro funzionamento è più preciso.

Encoder_A, Encoder_B, Encoder_A_Pu, Encoder_B_Pu
Questa coppia di ingressi legge le due fasi degli encoder “in quadratura”. Il conteggio dell’encoder viene scritto nello Slot associato al Pin “Encoder_A”.
Gli encoder generano un conteggio che va da 0 a 65535 (16 bit). Quando il conteggio supera 65535 il numero riparte da zero. Questo sistema permette a molte applicazioni di leggere il numero progressivo senza perdere conteggi.


Tipi di pin in uscita

Dig_Out
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 è previsto di impaccare fino a otto pin DigOut in un Byte

Pwm_8 e Pwm_16
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. I moduli del sistema Theremino generano segnali Pwm da 0 a 4 mS. Il tempo di ripetizione è 4 mS.

Molti dispositivi collegabili alle uscite PWM, come i led e le lampade a incandescenza sono usati per essere visti dagli esseri viventi. Dato che gli occhi hanno una risposta agli stimoli di tipo logaritmico, la metà superiore del campo di regolazione apparirà compressa. Per correggere questo difetto i Pin di tipo PWM hanno 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.

I Servocomandi normali producono la massima escursione con tempi da 0.5 mS a 2.5 mS (da 500 uS a 2500 uS). Quindi i moduli del sistema Theremino generano segnali “Servo” da 0.5 a 2.5 mS. Il tempo di ripetizione è fisso a 16 mS.

La possibilità di regolare il tempo minimo e massimo, anche al di fuori del normale range dei Servomotori (fino a 0 mS e fino a 4 mS) permette di usare Servo di ogni tipo, analogici e digitali, e di ogni costruttore. Anche se diversi dai normali standard dei radiocomandi.

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.

Stepper
Si usa questo tipo di Pin per comandare i motori passo passo. Ogni impulso emesso dal Pin, fa avanzare il motore di un passo. Ad ogni Pin di tipo Stepper, segue necessariamente un Pin, di tipo StepperDir (che viene spiegato in più parti di questa stessa pagina). Il segnale di uscita dello StepperDir specifica la direzione di movimento del motore. I motori passo passo non si collegano direttamente, ma necessitano di un driver e di un alimentatore. Per maggiori informazioni vedere questa pagina.

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, SlowPeriod
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 un sedicesimo di microsecondo.

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.

Encoder_A, Encoder_B, Encoder_A_Pu, Encoder_B_Pu
Ogni Pin di tipo “Encoder” o “Encoder_Pu” usa 16 bit per la trasmissione dei dati.

Tutti i pin possono essere programmati come Encoder o EncoderPu. La velocità di conteggio massima è limitata, intorno a 10 KHz, dipendente dal carico sul microcontrollore.

Caratteristiche per i Pin in ingresso

Tensione bassa: da 0 a 1 Volt
Tensione alta: da 2.3 a 3.3 Volt
Tensione bassa minima: -0.3 Volt con 100uA massimi (Nota 1)
Tensione alta massima: +3.6 Volt con 100uA massimi (Nota 1) (Nota 2)
Corrente di pull-up: da 50 a 400 uA (typical = 250)
(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 da 100k, 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.
(Nota 2) I Pin speciali 7, 8 e 9 accettano segnali con un limite superiore di 5.3 Volt. Tutte le altre caratteristiche sono uguali agli altri Pin.

Pin di ingresso speciali

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

Questo tipo di Pin è speciale, quindi le caratteristiche di tensione indicate in precedenza non sono valide.

StepperDir
I Pin di tipo “Stepper_Dir” usano 32 bit (4 byte) per la trasmissione dei dati.

Questo Pin viene usato per i motori passo passo ed è un Pin speciale, per varie ragioni:
1) Non può esistere da solo, deve sempre essere preceduto da un Pin di tipo Stepper.
2) Pur essendo un Pin di input per il software, il corrispondente segnale hardware è un uscita digitale (che specifica la direzione per il motore).
3) Il valore che viene letto dal software, non proviene dal Pin fisico, ma dal firmware di controllo del motore passo passo. Si tratta della distanza dalla destinazione in millimetri. I particolari sono spiegati, all’inizio di questa pagina.


Note per tutti i pin di ingresso digitale

DigIn, DigInPu, Counter, CounterPu, FastCounter, FastCounterPu, Period, PeriodPu, UsoundSensor, Encoder_A, Encoder_B, Encoder_A_Pu e Encoder_B_Pu

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 i contatori e gli encoder

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 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

Master

1, 2, 3, 4, 5, 6

7, 8, 9, 10, 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”, “Pwm” e “PwmFast”

Pin di tipo Servo

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 16 bit

14 bit

0.06 uS

16384

16 mS

60 Hz

I segnali dei servo variano da circa 0.5 mS (minimo) a circa 2.5 mS (massimo) e il tempo di ripetizione è circa 16 mS. La precisione dei segnali dei servo decresce se nello stesso modulo si usano anche pin di tipo “Pwm” o “Stepper”.

Tempo di ripetizione
Il tempo di ripetizione aumentava fino a 24 mS nei vecchi radiocomandi analogici prodotti da Futaba, perché il segnale completo era un treno di impulsi contenente i segnali di tutti i servo, uno dopo l’altro. Quindi con 12 servo si allungava a 24 mS  “mediamente” 24 mS = 10 mS di base + 1 mS * 12 Servo.  Per questi motivi tutti i servo accettano una ripetizione che può andare da 5…8 mS fino a 25…30 mS. Abbiamo quindi scelto 16 mS di ripetizione.
Tempi Minimo Massimo
Il segnale venne originalmente stabilito da 1 mS a 2 mS (anni 80 del 1900) ma con il passare degli anni si è ampliato di 0.5 mS per parte. I servo attuali per fare tutta la corsa (che normalmente è 180 gradi circa) hanno bisogno di un segnale da circa 0.5 mS a circa 2.5 mS. E anche i servo multigiri ne hanno bisogno per dare tutta la coppia. Abbiamo quindi reso regolabili i tempi minimo e massimo da 0 a 4 mS, per adattarci a qualunque servo.

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_ 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 (o stepper) nello stesso modulo, la precisione massima dei segnali “PWM” scende gradualmente fino a 8 bit.

Pin di tipo PwmFast

La frequenza e il Duty Cycle, generate dai Pin di tipo PwmFast, hanno una stabilità molto alta e indipendente da come si configurano gli altri Pin.

La frequenza minima generabile è 245 Hz e la massima 5.3 MHz circa. Il Duty Cycle va da zero (segnale di uscita sempre basso) fino al 100% (segnale di uscita sempre alto).

La granularità delle regolazioni dipende dalla frequenza impostata:

  • A 1000 Hz la precisione del Duty Cycle è 16 bits (errori: 0.0015%) e quella della frequenza è di 14 bit (errori: 0.006%)
  • A 16 KHz la precisione del Duty Cycle è 12 bits (errori: 0.024%) e quella della frequenza è di 10 bit (errori: 0.1%)
  • A 1 MHz la precisione del Duty Cycle scende a soli 6 bits (errori: 1.5%) e quella della frequenza a soli 4 bit (errori: 6%)

A causa della granularità le frequenze più alte sono: 5.333 MHz / 4 MHz / 3.2 MHz / 2.666 MHz / 2.286 MHz / 2 MHz / 1.777 MHz / 1.6 MHz / 1.454 MHz / 1.333 MHz / 1.231 MHz / 1.066 MHz / 1 MHz


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. 

Tutti i sensori I2C hanno un corrispondente analogico che, collegato ai nostri ADC, fornisce migliori caratteristiche. I sensori analogici sono anche più economici e possono essere collegati con cavi schermati lunghissimi (centinaia di metri), senza perdere precisione.

Inizialmente pensavamo di implementare questo protocollo, ma in seguito abbiamo scoperto che i dispositivi I2C non seguono uno standard comune. Per cui gli utenti dovrebbero programmare un firmware diverso per ogni sensore. Inoltre la comunicazione I2C è lenta e gli ADC integrati nei sensori sono di basse caratteristiche, spesso solo a 8 bit e senza possibilità di oversampling. E infine i sensori I2C non si possono collegare a grande distanza, perché la capacità del cavo degrada i fronti digitali e produce errori di trasmissione.

I2C è un sistema di comunicazione seriale bifilare progettato per la comunicazione tra circuiti integrati, a breve distanza, generalmente sulla stessa piastra o nello stesso apparecchio elettronico (comunicazioni lente nei Televisori). I2C può comunicare con una catena di dispositivi (fino a 128). Il numero di fili effettivamente necessari per il collegamento è quattro perché è necessario portare anche la massa e la alimentazione. La velocità di comunicazione è modesta e scende notevolmente aumentando il numero di dispositivi collegati.


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.

Comments are closed.