Problema con Encoder digitale

Salve,
Vi scrivo perché è da un po' di tempo che sto iniziando a pensare di progettare una macchina enigma e sto cercando di capire come utilizzare un Arduino per farlo. Premetto che sono uno studente che ha avuto a che fare con esami di elettrotecnica ed elettronica quindi so bene come si progetta un circuito ma passare alla pratica non è molto semplice. In particolare ho acquistato degli integrati (Texas Instruments CD40147BE Encoder) per realizzare il meccanismo della tastiera. Tuttavia ho difficoltà a leggere i datasheet e non capisco come ci si debba comportare per evitare di bruciare l'integrato. Inoltre ho difficoltà a capire quali tensioni debbo fornire all'integrato per fargli capire che voglio uno 0 logico o un 1 logico. Ci sono dei valori predefiniti? Dal momento che i l codice binario in uscita dall'Encoder deve poi essere elaborato dall'arduino, come gestisco la comunicazione tra Arduino e integrato? Grazie mille.

Buona sera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

L'integrato che citi è alimentabile da 5V a 15V (20V Max), visto che lo devi usare con Arduino alimentalo a 5V, come citato dal DS All four output lines are logic 1 (VSS) when allinput lines are logic 0 tutte gli ingressi posti a GND ti porteranno le uscite a 5V (VSS), per le altre combinazioni segui la tabella del DS.
Nella logica CMOS si considera zero logico qualsiasi tensione compresa tra zero e 1/3 di VSS e un uno logico qualsiasi tensione compresa tra 2/3 di VSS e VSS, ma lavorando con interruttori non credo tu debba preoccupartene, avrai solo due stati o 0 (GND) o 1 (VSS).
La comunicazione con Arduino colleghi le uscite ai pin d'ingresso, se vuoi dare una certa "sicurezza" al pin frapponi una resistenza tra l'uscita dell'encoder e il pin di Arduino ad esempio da 220 ohm

Una domanda, azi due, che Arduino usi? Perchè vuoi usare quell'integrato per gestire i tasti della tastiera?

Userò un Arduino mega. Userò quell'integrato per stabilire quale dei tasti viene premuto tramite la generazione di un codice binario. In realtà non disponendo di un integrato con abbastanza bit di output userò tre integrati per permettere la codifica di 26 tasti. Un'altra cosa: come controllo le correnti di input? Tra vcc e gnd è semplice perché si deve mettere potenzialmente un resistore tra il pin vss e gnd e si riesce a controllare la corrente in ingresso al pin vcc perché è come se fossero legati da una pista. Ma nel caso degli input? In quel caso la corrente è tra vcc e gnd. Nel caso degli input come si ragiona?

ll_Ubermensch_ll:
come controllo le correnti di input? Tra vcc e gnd è semplice perché si deve mettere potenzialmente un resistore tra il pin vss e gnd e si riesce a controllare la corrente in ingresso al pin vcc perché è come se fossero legati da una pista. Ma nel caso degli input? In quel caso la corrente è tra vcc e gnd. Nel caso degli input come si ragiona?

:fearful:
Come proteggeri il pin l'ho indicato nel post prima ma una resistenza tra VCC e GND???
Comuque visto che usi una mega hai 16 pin analogici, con ognuno dei quali potresti leggere lo stato di cinque pulsanti senza la necessità di utilizzare gli encoder e, a meno che non mi stia sfuggendo qualcosa, 16*5 ti dovrebbe bastare a mappare tutta la tastiera, in questo modo hai solo la necessità di usare resistenze e logica nel programma per decodicficare il pulsante premuto, se cerchi arduino multiple push buttons trovi una valanga d'esempi per utilizzare la tecnica che ti sto indicando.

Per la questione della resistenza forse non riesco a spiegarmi bene. In effetti ho scritto una cosa per un'altra. In ogni caso non userò dei bottoni classici per fare questo perché dovrò stampare in 3D dei bottoni meccanici a parte per fare tutto il resto. Comunque ho davvero bisogno di un confronto migliore di quattro righe scritte su un forum.

Che i bottoni siano standard, stampanti in 3D, capacitivi, resistivi o psionici poco importa se quando conducono portano un ingresso ad un determinato livello logico (HIGH o LOW) non è il tipo d’interruttore che sposta il concetto, ripeto, è solo un’idea che ti ho voluto fornire visto che hai un sacco di dubbi riguardo la parte elettronica ho pensato che attaccare 5 pulsanti a 5 resistenze ed il tutto ad un pin analogico e, che per questa struttura si trova un infinità di documentazione, poteva renderti la vita più semplice considerando che lato software si tratterebbe di cambiare la logica da rimappare tutta la tavole delle verità degli encoder in 5 if >= && <= per ciascun input analogico, tutto li, se poi per sfuda, necessità di progetto (esame???) DEVI usare gli encoder allora è un’altra storia

I bottoni stampati in 3D sono solo estetici. Non hanno una parte elettronica. Quella devo progettarla io. Il fatto è che purtroppo non posso fare a meno di usare un encoder in questo caso perché i bottoni che ho a disposizione potranno solo aprire e chiudere un resistore sugli input per far variare il potenziale su ciascun pin di input. Devo dire: studiare elettronica è MOLTO più semplice di fare un cazzo di progetto della minchia.

Scusa se insisto ma non è ne più ne meno di quello che si fa con questo schema

Che con un solo pin analogic ti gestisce cinque pulsanti e che, come nell'immagine, se usi resistenze con valori differenti gestisci anche le pressioni multiple contemporanee (non che a te serva) e se usi tutte le resistenze con medesimo valore (meno complesso lato software) gestisci comunque cinque pulsanti ma non puoi rilevare la pressione di due pulsanti contemporaneamente ti fa rilevare quale pulsante hai premuto. (Edit: la dicitura barrata a cui facevo riferimento appartiene ad uno schema differente con resistenze in serie differente rispetto a quelllo postato)
Lo trovo più semplice sia lato hardware che lato software da implementare, si usano componenti indistruttibili e molto meno problematici degli encoder, che vanno alimentati, necessitano di condensatori sull'alimentazione come ogni IC e che comunque ti costringono a mettere per ogni ingresso delle resistenze di pull-up o pull-down (pull-up nel tuo caso) quindi hai in mezzo alcuni componenti in più a dar fastidio, e qui la chiudo perché sennò sembra che io voglia farti scartare la tua soluzione o che questa non porti al risultato :slight_smile:

La parte dei condensatori mi è nuova. Il problema è che ormai ho ordinato gli integrati e non posso buttarli.

A dirla tutta non è indispensabile per ogni IC ma normalmente è buona norma stabilizzare/filtrare l'alimentazione di un IC in modo da garantirne al meglio il funzionamento, poi chiaramente una porta logica da meno problemi o è meno soggetta a problematiche inerenti l'alimentazione rispetto ad esempio ad una MCU

Credo che userò una resistenza di pull up a questo punto. Ora che ci penso la mia idea iniziale potrebbe non funzionare se chiudo il resistore sull'input.

ma cosa stai facendo?
ho alcune domande “propedeutiche”:

  1. perchè hai scelto di passare per un codificatore bcd? ti tocca comunque leggere 4 ingressi, al posto di 10
    ovvero 12 al posto di 26, ma poi ti tocca di “sacramentare” a decodificare il tutto

se usavi una mega ti bastava fare una cosa del genere

// nel setup
// dichiarare i pin dei tasti
byte tasti[26]={numero del pin della A, numero del pin della B .......}
// con una riga te la cavi

// nel loop
// leggere i tasti
char tastoletto='A'-1;
for (int i=0; i<26;i++)
{
   if (digitalRead(tasti[i]))
   {
      tastoletto=tastoletto+i;
      break;
   }
}

che con 4 righe in croce hai decodificato 26 tasti

  1. ma la parte difficile della macchina enigma NON è la lettura della tastiera, io fossi in te mi concentrerei sulla parte di (de)-cifratura “on-line” (sì, si dice proprio così, rimembro da quando ero nelle trasmissioni: ponti radio, non telescriventi, ma seduti vicini eravamo…)
    dicevo, concentrati sulla parte di (de)-cifratura, che è il vero osso duro, la parte di tastiera e display dopo, quella la sanno fare tutti, basta seguire gli esempi, che c’è n’è a migliaia…

  2. display, sì, display, la macchina enigma aveva anche 26 luci per indicare le 26 possibili “uscite” per la lettera in ingresso (che poi erano solo 25, uno dei buchi della Enigma era proprio che NON cifrava mai una lettera uguale a se stessa), cosa hai pensato per le 26 uscite?

Io devo essere assolutamente sincero. Sono affascinato dalla macchina Enigma e sicuramente non sono uno che sa il fatto suo con la pratica in elettronica. Il fatto è che sono un grande amante della crittografia e vorrei una mia macchina enigma ma ho problemi a realizzarla. Magari alcuni di voi mi guarderanno come un povero illuso ma quando si ha una passione bisogna proteggerla. Io ho studiato elettronica all'università ma a quanto vedo "mettere le mani" è più difficile di quanto sembri. Ho pensato di incollare sotto i tasti delle levette che mi danno la possibilità di switchare l'input. L'idea mi è venuta perché siccome i tasti che uso non sono tasti elettronici, non sapevo come implementare tutto il meccanismo senza usare un encoder. Per il resto, so che tutto il da farsi non è semplice. Lo so e me lo ripeto ogni secondo. Non sono un esperto ma sono molto appassionato.

Parlo per me ma credo di esprimere più o meno la strada seguita dal forum, l'intento dei commenti anche "critici" o consigli che ti indicano altre strade percorribili non sono praticamente mai volti a farti desistere, anzi solitamente si propone strade più semplici o più sicure magari perché già sperimentate molte volte.
Il progetto che ti sei posto di realizare è sicuramente realizzabile (in rete ne trovi a tonnellate) e se ti ci metti d'impengo riuscirai a realizzarlo, quello che che ti abbiamo suggerito sono approcci differenti che ti eviteranno container di bestemmie per la gestione di encoder che di fatto non ti servono, o meglio non servirebbero. Come vedi io e StandardOil ti abbiamo fornito due differenti strade (la sua ancora più semplice sia come cablaggio che come software) ma nessuno ti ha detto "DEVI" abbandonare la tua strada, solo che come dici tu non hai esperienza pratica e un certo quantitativo di "confusione" per quanto riguarda la parte elettronica (sicuramente a livello teorizo ne sai molto ma a livello pratico dici di aver difficoltà) quindi ti abbiamo proposto strade che ti faciliteranno la realizzazione del progetto.
Io i tre encoder li terrei nel cassetto per il prossimo progetto ma nulla toglie che se deciderai di usarli qui troverai sicuramente qualcuno disposto ad aiutarti in caso di problemi :slight_smile:

Il mio metodo è associabile solo ad una mega, causa eccessivo uso di piedini, il tuo ad una UNO, a seconda dei casi può essere meglio uno o l'altro...

A parziale correzione di quanto detto devo ammettere un errore: la macchina Enigma effettua la cifratura "off-line", non "on-line"
Grazie ad un'idea del pestifero nipote forse si potrebbe ridurre significativamente i pin necessari, fin quasi a starci su una UNO
Rimane da risolvere alcune cose:
Le luci di uscita, che lo OP non ha mica risposto
La configurazione dei dischi e del riflettore
Come fare il pannello scambiatore frontale

Standardoil:
Grazie ad un'idea del pestifero nipote forse si potrebbe ridurre significativamente i pin

Multiplexing?
Mi inteteressa, posso associatmi?

Ci ho pensato un po’, oggi, credo che si possa fare bene con una UNO
Ci sono alcune cose da vedere bene, ma si potrebbe farcela