Spesso chi si costruisce un amplificatore o un preamplificatore HiFi, vorrebbe una volta finito poterlo ascoltare comodamente dalla poltrona preferita senza doversi scomodare ogni volta per alzare ed abbassare il volume, selezionare una sorgente diversa o silenziare l'impianto per risponder ad una telefonata.
Cerando in rete si trovano delle soluzioni, ma noi ne volevamo una con alcune particolari caratteristiche che si possono rivelare utili soprattutto quando si utilizzano in amplificatori o preamplificatori valvolari.
Ci siamo messi di buona lena per progettarne uno, ma subito ci siamo trovati di fronte ad uno scoglio: la scelta del protocollo.
Esistono svariati protocolli di traasmissione ad infrarossi ed ognuo ha i suoi pro e i suoi contro, noi abbiamo optato per il protocollo NEC in base ad alcuni fattori:
- Il fatto che il telecomando Apple remote usi quel protocollo
- il fatto che buona parte dei telecomandi TV usi un protocollo simile
- il fatto che ci sembrava semplice da implementare ( poi abbiamo visto che qualche piccolo scoglio c'è stato ).
il funzionamento teorico è semplice:
- il telecomando invia un treno di impulsi secondo la codifica NEC estesa ,
- il ricevitore verifica il protocollo e decide a) se il protocollo è quello NEC, b) se l'identificativo corrisponde al trasmettitore associato c) di quale istruzione si tratta
il protocollo nec è costituito da una portante a 38Khz che viene pulsata con una sequenza predeterminata. il ricevitore ad infrarossi, legge e filtra la portante e la trasforma in un impulso continuo senza gli impulsi della portante, cioè quando c'è la portante da in uscita uno stato alto, quando questa smette, da in uscita uno stato basso
Ad uno stato 0 corrisponde un impulso di 560us seguito da uno spazio di altri 560us per un totale di 1120uS , mentre ad uno stato 1 corrisponde un impulso di 560us seguito da uno spazio di 1690us per un totale di 2250uS.
per la trasmissione di un dato, ci son due alternative:
la codifica NEC standard, dove vengono tramessi un primo impulso è di 9mS, seguito da uno spazio di 4.5ms, l'ID di periferica , il medesimo ID negato ( NOT ID ) il comando ed il comando negato come da immagine.
oppure nella codifica NEC estesa ( quella che usa il telecomanda Apple )
dove vengono tramessi un primo impulso è di 9mS, seguito da uno spazio di 4.5ms, il byte più significativo ( MSB ) dell'ID di periferica, il byte meno significativo dell'ID di periferica (LSB ) , il comando ed il comando negato come da immagine.
Un secondo tipo di codice trasmesso è il "Repeat" che non contiene nè un ID, nè un comando, ma dice alla macchina di ripetere l'ultimo comando ricevuto. esso consta in un impulso di 9ms seguito da uno spazio di 2250us ed un altro impulso di 560us.
Una classica sequenza in uscita dal telecomando quindi consta di un treno di umpulsi che contiene il dato e poi una sequenza di comandi "repeat" tutti equidistanti a 110ms
Apple usa un protocollo NEC modificato, ma facilmente comprensibile:
vengono tramessi un primo impulso è di 9mS, seguito da uno spazio di 4.5ms, il byte più significativo ( EE ) dell'ID di periferica, il byte meno significativo dell'ID di periferica ( 87 ) , il comando ed infine un identificativo ( ID ) del telecomando per permettere alle periferiche di interpretare i comandi che non sono uguali per tutti i telecomandi compatibili ( vedi tabella )
Key | Telecomando venduto separatamente | Telecomando Alluminio | Telecomando Bianco |
---|---|---|---|
Su | EE 87 0B 59 | EE 87 0A 68 | EE 87 0A 15 |
Giù | EE 87 0D 59 | EE 87 0C 68 | EE 87 0C 15 |
Sinistra | EE 87 08 59 | EE 87 09 68 | EE 87 09 15 |
Destra | EE 87 07 59 | EE 87 06 68 | EE 87 06 15 |
Centro | EE 87 5D 59 seguito da EE 87 04 59 |
EE 87 5C 68 seguito da by EE 87 05 68 |
EE 87 05 15 |
Menu | EE 87 02 59 | EE 87 03 68 | EE 87 03 15 |
Play | EE 87 5E 59 seguito da EE 87 04 59 |
EE 87 5F 68 seguito da EE 87 05 68 |
N/A |
Abbiamo scelto di usare la sequenza del codice del Telecomando di Alluminio ( colonna centrale ) , che è quella usata anche nei compatibili che si acquistano a basso prezzo ed in base a quella abbiamo scritto la sequenza del codice realtiva.
un'altra cosa che volevamo fornire era la possibiltà di gestire la selezione degli ingressi con un encoder, per cui abbiamo creato una scheda ingressi con selettore a relè pilotato da un un circuito integrato driver del tipo ULN2003.
L'encoder che abbiamo scelto è un encoder in quadratura, che ad ogni scatto fa aprire e chidere i contatti secondo una sequenza precisa data da questa tabella della verità:
come vediamo ruotando in senso orario ( CW clocwise ) prima si troverà nello stato 1 il segnale A e poi il segnale B, mentre ruotando in senso anti orario ( CCW counter-clocwise ) prima si troverà nello stato 1 il segnale B e poi il segnale A.
Per determiare in che direzione si sta muovendo l'encoder la soluzione softwre più rapida è quella di usare una macchina a stati di tipo deterministico, nella quale lo stato successivo dipende non solo dall'input ma dallo stato precendente
Sebbene sembri complesso, il software relativo alla macchina a stati ha meno istruzioni delle parole in corsivo che abbiamo usato per descriverlo: l'output è dato da un or esclusivo ( XOR ) tra lo stato precedente e l'ingresso.
Il motore del potenziometro è un motore in corrente continua e viene pilotato da un ponte ad H realizzato con 4 transistor.
nota: la scelta dei transistor è ricaduta su quelli nello schema, perchè sopportano tranquillamente la corrente richiesta ed hanno un ottimo rapporto qualità prezzo, nonchè sono di facile reperibiltà.
il potenziometro fornito nel kit è un ALPS RK-16814 a quattro vie che è di ottima qualità e permette di gestire un segnale bilanciato, nel caso si può sostituire con un potenziometro alps RK-27.
Il circuito è dotato del suo circuito raddrizzatore e stabilizzatore e può sfruttare come alimentazione i 6.3V dei filamenti ( che sono la tensione minima a cui può essere alimentato )
Abbiamo scelto di fare un circuito stampato unico con dei tagli che permettessero di spezzarlo a fine saldatura, per semplificare il montaggio.
Importante è anche stare attenti, perchè alcuni componenti sono montati dalla parte opposta.
Ovviamente fa parte del kit anche il telecomando di cui forniamo il circuito senza chassis, per lasciare libero ognuno di sbizzarrirsi.
Tale circuito non ha alcuna difficoltà teorica: il tasto attiva il microcontrollore che "spara il pacchetto dati ad esso associato.
La cosa interessante nel software è invece quella di avere utilizzato il watchdog per disattivre il processore quando non viene usato e aumentare la durata della batteria.
Il software è completamente scritto in assembler, per poter rispattare i timing della portante a 38kHz.
Qui vi presentiamo una nostra realizzazione di uno chassis che abbiamo freato da un pezzo di mogano.
qui sotto potete vedere lo schema, la lista componenti e il layout del circuito.
questa è la lista dei componenti:
Reference(s) | Value | Footprint |
AC_IN1, J1, Motor1, Mute1 | Connettore 01x02 | Connettore Molex_KK-254_AE-6410-02A |
BAT1 | Battery | Battery Holder_Keystone_2468 |
C1 | 2200uF 16V | P7.50mm |
C2, C3 | 100nF | P5.00mm |
C4, C5 | 15pF | P2.50mm |
C6, C7, C8 | 220nF | P5.00mm |
C9 | 22uF 10V | P2.50mm |
D1, D2, D3, D4 | 1N4007 | 1N4007 |
D5, D6, D7, D8,Dt1, Dt2, Dt3, Dt4, Dt5, Dt6 | 1N4148 | 1N4148 |
DOWN1, LEFT1, MENU1, PLAY1, RIGHT1, UP1 | SW_SPST | pulsante tattile |
Dt7 | LED | LED infrarossi |
ENC1, ENC_C1, OUT1, TSOP1, TSOP2, Vol_IN1, Vol_IN2, Vol_OUT1, Vol_OUT2 | Conn_01x03_Male | Connettore Molex_KK-254_AE-6410-03A |
ENC_1 | Rotary_Encoder | PEC11R-4220F-N0024 |
Ji1, Ji2, Ji3, Ji4, Ji5 | Connettore RCA stereo PCB | PJRAS1X2Sxx |
K1, K2, K3, K4, K5 | G5V-2 | Relay_Omron_G5V-2 |
LD1, LD2, LD3, LD4, LD5, LDM1 | LED | LED |
LEDS1, LEDS2 | Conn_01x07_Male | Connettore Molex_KK-254_AE-6410-07A |
P1 | potenziometro Alps 100k 4 vie stereo | RK16814MGA0K |
Q1, Q3 | 2N3904 | 2N3904 |
Q2, Q4 | 2N3906 | 2N3906 |
R1, R2, R3, R4, R5, R7 | 10k Ohm | Marrone, nero, arancione |
R6 | 150 Ohm | Marrone, verde, marrone |
RELAY1, RELAY2 | Conn_01x06_Male | Connettore Molex_KK-254_AE-6410-06A |
RL1, RL2, RL3, RL4, RL5, RLM1, Rt1 | Resitenza LED | * valore che dipende dal LED usato |
SW1 | SW_DIP_x03 | w_switch:dip_3-300 |
U1 | LM7805_TO220 | LM7805_TO220 |
U2 | Microcontrollore | Microcontrollore programmato e zoccolo |
U3 | ULN2003 | ULN2003 |
U4 | TSOP384xx | TSOP53438 TSOP38438 |
UT1 | PIC12F508-IP | PIC12F508-IP |
Y1 | 20MHz | Cristallo 20 Mhz |
e questo il layout della scheda.
per una maggiore flessibiltà il connettore LEDS1 può essere un connettore a 6 poli se si desidera utilizzare solo i LED relativi al selettore di iningressi, oppure a 7 poli se si desidera avere anche il LED per il MUTE sulla scheda dei LED.
Nelle nostre realizzazioni abbiamo usato il connettore a 7 poli e poi con due fili dalla scheda LED abbiamo portato il LED relativo al comando MUTE dove più preferivamo, la scelta è comunque vostra.
Anche la scheda degli ingressi offre alcune possibilità:
si possono montare i connettori RCA direttamente sulla scheda e poi fissarla al pannello posteriore, oppure fissarla al pannello inferiore con le quattro viti e collegarvi con i fili i connettori RCA dal pannello.
Il connettore MUTE1 può pilotare un relè che userete per il comando MUTE ( normalmente va a cortocircuitare le uscite ).
ora veniamo al dip SWITCH.
Esso vi da tre possibilità:
con lo switch 1 si può scegliere se far tornare il potenziometro del volume alla posizione di zero.
con lo switch 2 si può scegliere un tempo iniziale durante il quale l'uscita MUTE1 resta attiva ( comoda per dare circa 30 second di tempo alle valvole di riscaldarsi )
con lo switch 3 si selezione la velocità di rotazione del potenziometro
la realizzazione non presenta difficoltà se non quella della saldatura dei cavi ai connettori che richiede molta pazienza e quella di porre attenzione ai componenti che vanno saldati dalla parte opposta della scheda.