Può funzionare come impostazione dell'ingresso ADC ed è comune?


8

Funzionerebbe? Sono abbastanza sicuro in teoria che dovrebbe, ma non lo vedo spesso o per niente. In teoria, il divisore di tensione da 2: 1 a 1: 2 dovrebbe fornire 3,3 v a un'estremità e 1,6 v all'altra estremità del piatto, offrendo all'ADC un'ampia gamma con cui lavorare. E se si preme il pulsante, R1 + RV agirà come un pullup massimo di 20k, quindi la linea sarebbe fino a 0v, che l'ADC può essere codificato per riconoscere come un evento unico, consentendo l'esistenza di un pulsante e un piatto sullo stesso pin di input, consentendo all'ADC di servire entrambi gli scopi.

Un pin di input viene salvato, senza modifiche significative al codice, poiché l'adc viene già sottoposto a polling per il piatto.

schematico

simula questo circuito - Schema creato usando CircuitLab

Funzionerebbe e, in caso affermativo, come curiosità, perché non è così popolare?


3
Funzionerebbe benissimo. Forse aggiungi un piccolo condensatore attraverso l'interruttore, per bypassare i picchi del piatto e fornire un certo debounc quando si usa l'interruttore.
Anindo Ghosh

Non è esattamente lo stesso, ma guarda questo schema elettrico e cerca di trovare qualcosa che ti sembri familiare: sainsmart.com/zen/documents/20-011-901/schematic.pdf
jippie

@jippie no, conosco le scale resistive come pulsanti multipli, è abbastanza comune (radiocomandi al volante dell'auto, controlli in linea ipod / iphone). È in particolare l'uso di una pentola e dei pulsanti sullo stesso annuncio di cui mi chiedevo, non l'ho mai visto.
Passante

2
In questo modo sacrifichi una certa risoluzione nella lettura della posizione del piatto. Ciò potrebbe essere perfettamente accettabile, a seconda dell'applicazione e della natura del controllo che l'utente pensa stia girando.
RBerteig,

1
È possibile identificare un secondo interruttore che tira l'ingresso su VCC, purché non vi sia alcuna possibilità che entrambi gli interruttori vengano premuti contemporaneamente. Quindi decodificare una regolazione analogica e due chiusure di interruttori reciprocamente esclusive con un singolo ingresso ADC non è male e può essere un trucco utile in un micro a basso numero di pin. Pensa al senso di posizione con finecorsa rigidi ad ogni estremità. Quindi sono meccanicamente esclusivi e si adattano persino al segnale analogico.
RBerteig,

Risposte:


6

Sì, dovrebbe funzionare anche se ci sono alcuni problemi a cui prestare attenzione.

Il problema difficile è che devi fare attenzione a rilevare e ignorare le transizioni tra il livello di commutazione 0 V e il livello del piatto. Alcuni di essi assomigliano a livelli di pentola validi, quindi devi prendere in considerazione più campioni per decidere se ciò che sembra essere un livello di pentola è reale o solo una tensione intermedia durante la rotazione tra l'interruttore e la pentola. Tieni presente che gli interruttori reali rimbalzano, quindi è più complicato di quanto tu possa immaginare. Una cosa che sai di una tensione di alimentazione valida è che non può cambiare così velocemente. Ciò dovrebbe aiutare a eliminare le letture intermedie.

Un altro problema è che non è possibile leggere il piatto quando si preme l'interruttore. Non c'è nulla che tu possa fare al riguardo con questa configurazione. La questione dipende dal sistema e dal significato della posizione del piatto e di un interruttore premuto.

Non posso dire se questo sia fatto "spesso" o no. I pot input da soli sono insoliti, ma ovviamente esistono. Affinché questo schema abbia senso, è necessario disporre di un sistema che necessita sia di un pulsante che di un'impostazione continua da parte dell'utente, e in cui davvero non si vuole spendere il pin extra. Se questa è la differenza tra l'inserimento in un micro a 28 pin o l'uso di un micro a 44 pin, probabilmente lo farei. Se avessi altri pin rimasti, non lo farei perché è meglio mantenere bassa la complessità. Pin separati per il piatto e il pulsante saranno più facili, e quindi meno probabilità di avere bug, nel firmware.


2

Ho usato gli ADC come input senza problemi, in una topologia molto simile alla tua.

Non avevo il piatto, ma avevo un divisore a due resistori per ridurre la tensione di ingresso (era su un ATxmega, che ha un ingresso ADC massimo di 2/3 Vcc) e un interruttore per tirare l'ingresso terra.

Penso che funzionerà bene.

Una cosa che probabilmente dovresti avere in mente è che il pulsante potrebbe non portarti completamente a terra. A seconda della resistenza dell'interruttore, potresti avere ancora qualche millivolt sull'ingresso, quindi non dovresti presumere che il pulsante premuto dia come risultato un valore ADC di 0, ma piuttosto un valore ADC di <~ 10 conteggi, o circa ( prova questo!).


Ho visto ADC utilizzato per interruttori in gomma conduttiva, con la logica che il software potrebbe quindi compensare una maggiore resistenza dovuta all'invecchiamento.
Starblue

2

Tutte queste risposte e i loro commenti sono buoni e aggiungono molte intuizioni. Sto cercando di vedere quale merita la grazia, ma ho voluto aggiungere anche questo.

Ho trovato una nota app dettagliata proprio su questa cosa. Non solo switch, ma switch più un piatto sullo stesso input adc. Versione PDF con grafica

inserisci qui la descrizione dell'immagine

L'articolo include formule (e un foglio di calcolo Excel 2007 per automatizzare le cose) su come selezionare i resistori di polarizzazione e il piatto, sebbene il codice di esempio per un microcontrollore non sia più disponibile.

Il limite di questa tecnica è che non è possibile premere più di un pulsante in qualsiasi momento. Inoltre, il microcontrollore può leggere la posizione del potenziometro solo quando non si preme nessun altro pulsante. Questo esempio mostra come utilizzare due pulsanti, ma il numero di pulsanti può variare. Gli intervalli di input sono disponibili per un massimo di 10 pulsanti e un potenziometro, che condividono tutti lo stesso pin di input (Figura 2). Sebbene gli intervalli calcolati non si sovrappongano e siano unici, è dubbio che l'hardware ADC sia in grado di distinguere in modo affidabile queste bande in ogni circostanza. La scelta di valori di resistenza più piccoli mantiene queste bande più distanti, creando un intervallo di protezione più ampio.

L'uso di questa tecnica con quattro pulsanti e un potenziometro è ragionevole. La sperimentazione con il foglio di calcolo aiuta a lavorare rapidamente per determinare i giusti valori di resistenza in serie per ciascun interruttore e il suo intervallo di uscita.

Commento di Hackaday Discussione su questa nota dell'app .

Più di un pulsante nello stesso pin è anche una buona domanda di risorse.


Un sistema incorporato che abbiamo progettato utilizza tensioni codificate per identificare la maggior parte dei suoi pulsanti, seguendo un esempio impostato in un progetto di riferimento per il SOC al suo interno. Molte chiavi, un pin GPIO. Funziona abbastanza bene poiché tutti i pulsanti sono fisicamente separati l'uno dall'altro e non c'è motivo per cui un utente tenti di premere più di uno alla volta.
RBerteig,

1

Questo funzionerà per rilevare la posizione di una pentola che non è collegata a terra, o con altre fonti analogiche che sai che non andranno vicino alla terra, a condizione che non ti dispiaccia perdere una risoluzione ADC.

Nel caso più generale, molti ingressi di sensori analogici saranno referenziati a terra e potrebbero andare a terra in alcune circostanze, quindi questo schema non potrebbe essere usato. Inoltre, molte fonti analogiche possono obiettare alla messa a terra, spesso emettendo il fumo magico.

Questo circuito potrebbe essere utilizzato se sei davvero alla disperata ricerca di un altro ingresso digitale e sei consapevole delle limitazioni, ma non lo consiglierei per un uso generale.


1
E questa è probabilmente la ragione per cui non è così comune. Ma se hai una manopola e un interruttore (fai clic sull'asta per entrare?) Ciò consentirebbe la lettura di entrambi da un singolo pin.
RBerteig,

@RBerteig Mi sono completamente dimenticato di quei tipi di pot / combo combinati quando ho chiesto questo. Questa è un'applicazione molto appropriata.
Passante dal

@PeterBennett quando dici che gli ingressi del sensore analogico possono andare a terra o fonti analogiche che si oppongono alla messa a terra, puoi spiegarlo / spiegarlo? Nel mio caso specifico, si tratta di un input adc MCU generale, che non dovrebbe avere alcun problema con l'ottenimento di un input di riferimento diretto VCC o Gnd.
Passante dal

@Passerby: se l'uscita del sensore che condivide l'ingresso ADC con il pulsante va a terra (o vicino ad esso), il tuo programma non sarà in grado di distinguere tra una lettura del sensore bassa e una pressione del pulsante, e non lo farà rilevare la pressione di un pulsante quando l'uscita del sensore analogico è bassa. Se il sensore analogico ha un'uscita "totem" o un altro stadio di uscita a bassa impedenza, può far uscire il fumo magico quando il pulsante abbassa la linea.
Peter Bennett,

@PeterBennett, questo è solo un problema se condivido quell'ingresso ADC tra il pot / button e un altro sensore? Se sto solo eseguendo la combinazione porta / pulsante sopra, non dovrebbe essere un problema giusto?
Passante dal

1

Questo dovrebbe funzionare. Ma potresti renderlo migliore, motivo per cui dubito che sia comune.

  1. Supponendo di avere un ADC full range (da 0 a 5 V), la riduzione di R1 e R2 aumenterà il range dinamico e quindi la risoluzione della posizione del potenziometro. Naturalmente, non è possibile ridurre R2 a zero o si perde la particolarità di un'attivazione dello switch.

  2. Non è a bassa potenza come potrebbe essere. Se puoi permetterti un condensatore ceramico, diciamo 10nF, da collegare attraverso l'interruttore, puoi facilmente aumentare i tuoi resistori di un fattore di 10 o addirittura 100, riducendo di conseguenza il consumo di energia. Il condensatore aiuterà anche l'accuratezza e la ripetibilità, filtrando passa-basso la tensione vista dall'ADC e fornendo una sorgente di tensione a bassa impedenza. E, infine, rimuoverà l'interruttore (probabilmente saprai che quasi tutti gli interruttori meccanici mostrano un rimbalzo del contatto, effettuando e interrompendo rapidamente il contatto più volte quando vengono azionati una volta, richiedendo il de-rimbalzo nel software o nell'hardware). Come sottolineato in precedenza, un tale condensatore è anche importante per ottenere un comportamento ben definito quando si gira il potenziometro, poiché ciò può produrre transitori, almeno sotto forma di impedenza intermittente ad alta impedenza.

    Ovviamente, con un tale condensatore, C * R sarà la tua costante di tempo (quindi quando vuoi una precisione (1-e) ^ 3 entro 0,1 s dal rilascio di un interruttore, faresti meglio a rimanere sotto la combinazione di 10 nF e 3 Mega- ohm...)

  3. Il tuo software richiede alcune cure. Vedrai transitori, sia dall'interruttore che dal movimento meccanico all'interno del potenziometro. Non è difficile codificarlo, ma coinvolge di più semplicemente interrogando un singolo risultato di conversione ADC. Dovrai almeno verificare se il valore che leggi è sufficientemente stabile su più conversioni per assumere che non sei in un transitorio.

  4. Potresti includere componenti non necessari: a cosa serve R1 (supponendo che il tuo intervallo di input ADC vada fino al binario positivo)? Se si suppone che R1 limiti la massima tensione di uscita per adattarsi alla gamma ADC, allora perché il potenziometro non è alimentato da una tensione di riferimento in corrispondenza o strettamente al di sotto della guida ADC positiva? Ciò richiederebbe invece una resistenza di limitazione della corrente all'uscita del potenziometro, ma sarebbe meglio. Poiché una tale tensione di alimentazione analogica potrebbe essere facilmente resa molto più stabile della tensione di alimentazione IC (che suppongo che la batteria da 5 V simboleggi), puoi quindi ottenere meno rumore tecnico nelle conversioni ADC.

    E infine, anche se R1 non è necessario per ridurre la massima tensione di uscita, lo stesso cambiamento nel circuito, se combinato con un passaggio a un'alimentazione analogica che potrebbe essere semplice come il collegamento a + 5V altrove, porta il vantaggio combinato del sopra e di utilizzare meglio la gamma di input ADC senza alcun componente aggiuntivo.


1
Il punto 4 è sbagliato. R1 ha uno scopo necessario, che è quello di limitare la corrente di alimentazione quando si preme l'interruttore e la pentola è nella sua posizione più alta. Senza R1, l'interruttore potrebbe cortocircuitare l'alimentazione quando il piatto è in cima.
Olin Lathrop,

Hai ragione! Sono corretto. Non sono ancora sicuro di come recuperare il resto del punto 4, ma sì, non tutto è corretto come è adesso.
piramidi,

Penso di essere riuscito a correggere l'errore offrendo lo stesso potenziale miglioramento.
piramidi,

Ho annullato il downvote perché hai corretto l'errore palese. Tuttavia, non sono ancora d'accordo. È meglio lasciare la parte superiore di R1 collegata alla stessa alimentazione che alimenta l'A / D perché ciò rende la misurazione raziometrica con l'alimentazione. Quando l'A / D e la catena del divisore della resistenza utilizzano le stesse tensioni di riferimento, le variazioni di tale tensione si annullano.
Olin Lathrop,

Grazie. Con una configurazione raziometrica, +5 V è la tensione di riferimento appropriata e la rimozione di R1 non cambia tale. Ma aiuta sfruttando una gamma più ampia della configurazione ancora raziometrica. L'unico svantaggio immaginabile è se R2 e Rv hanno coefficienti di temperatura molto diversi. Quindi il circuito originale annulla l'effetto se, e solo se, il potenziometro è impostato esattamente al 50%. Ma l'effetto è molto piccolo e, come detto, questo, beh, la compensazione funziona comunque solo per un potenziometro.
piramidi,

1

Io non vorrei raccomandare divisore di tensione per un motivo:

Quando si collega un dispositivo ad alta impedenza per la misurazione, si avrà una resistenza acquivalente tra il dispositivo e qualsiasi resistenza del circuito (equivalenza parallela), modificando la relazione dei resistori.

Ad esempio, se si configurano resistori e pot al 50-50%, quando si collega il dispositivo avrà un 49-51%. Non cambierà troppo a causa dell'alta impedenza dell'ADC, ma perderai la precisione. Voglio dire, puoi vedere l'ADC come un altro resistore che cambierà la resistenza equivalente.

schematico

simula questo circuito - Schema creato usando CircuitLab


Ciò non significherebbe che qualsiasi uso di un piatto con un adc avrà quell'inesattezza intrinseca?
Passante dal

Non solo perché la pentola, poiché l'ADC stesso ha un'impedenza e se la si collega al condensatore voltaje, la relazione cambierà perché sarebbe come avere una resistenza parallela a R2.
Chirry,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.