Discussioni di carattere generale sull'elettronica analogica e digitale. Didattica e applicazioni pratiche.
#12245
Ciao a tutti, domanda semplice, voi conoscete un chip che permette di selezionare (idealmente 16) l'uscita o ingresso tramite un segnale PWM generatore da un Arduino?

Grazie
Alberto
#12248
Di norma l'ingresso/uscita di un mux viene selezionata da un ingresso binario, ad esempio per 16 canali servono 4 bit.
Un segnale PWM e' un singolo <filo> a frequenza fissa e con un duty- cycle variabile che puo' essere trasformato in un segnale analogico con una rete integratrice, ad esempi una rete RC.
In linea di principio (più accademico che pratico) si potrebbe trasformare tale segnale (pwm o analogico) in 4 bit con un ADC o un discriminatore di periodo, ma si fa davvero molto prima ad uscire dall'Arduino con 3-4 bit per pilotare il mux in binario.
Tieni presente che i 6 pin analogici di arduino possono essere usati tranquillamente come pin digitali. Si chiamano 14, 15, 16, 17, 18 e 19 e si configurano come ingressi o uscite con la classica pinMode(pin, OUTPUT) o pinMode(pin, INPUT).

C'è qualche altro vincolo non detto? E' assolutamente indispensabile usare il segnale PWM?
#12251
Se hai proprio gia' usato tutti i 19 pin di arduino uno ti conviente passare ad un arduino mega 2560 R3 che ha 16 pin analogici e 54 pin digitali per un totale di ben 70 pin configurabili.
Il codice che hai gia' scritto per arduino uno lo trasporti pari pari su arduino mega e quindi non perdi nulla di quanto hai gia' fatto. Un arduino mega costa (in italia da futurashop) 49 euro contro i 27 di un arduino uno. Con i 22 euro ti risparmi tanto tempo e pure la circuiteria necessaria a realizzare la trasformazione da pwm a 3-4 uscite binarie (per cui molto probabilmente serve un micro per non diventare matti)

Se per caso stai usando un display lcd con i suoi 6 pin di comando, puoi risparmiarne 4 usando un convertitore I2C/LCD
https://win.adrirobot.it/display_lcd/display-lcd-i2c-16x2-con-retroilumminazione-blu.htm
il modulino ha la sua libreria che emula tutti i comandi del lcd classico

Per ultimo puoi cercare in rete se si trova un mux/demux comandato in I2C (pin A4 e A5) oppure SPI (pin 10,11,12,13) che possono essere condivissi con altri oggetti I2C o SPI. Se esiste una libreia gia' pronta meglio, altrimenti devi scriverti tu a amno i comandi con la libreria di base della IDE.
#12252
Veramente riprendendo la prima risposta di @double un modo per comandare il multiplexer con un solo pin, non in PWM e qindi meno accademico de passaggio per un segnale analogico, c'è. in principio è molto semplice si trasmette il dato a quattro bit che ti serve invece che in paralleo in seriale, puoi utilizzare un pin qualsiasi oppure lo specifico pin TXD presente sulla seriale del micro. Il ricevitore poi dovrà avere un convertitore seriale parallelo per comandare il multiplexer come un 74hc595 da 8 bit, oppure un multiplexer con ingresso seriale.
alboyeah ringraziano
#12253
schottky ha scritto: [CUT]si trasmette il dato a quattro bit che ti serve invece che in paralleo in seriale, puoi utilizzare un pin qualsiasi oppure lo specifico pin TXD presente sulla seriale del micro. Il ricevitore poi dovrà avere un convertitore seriale parallelo[CUT]

Restando sul concettuale anche nel caso della trasmissione seriale servono almeno DUE pin, uno per i dati seriali Asincroni (quindi con un sincronismo start/stop) ed uno per abilitare l'uscita del convertitore seriale/parallelo, altrimenti il mux "saltella" finche' la trasmissione/ricezione e' in corso. Si puo' provare a sincronizzare con un ENABLE USCITA PARALLELA sullo stato di stop della UART in ricezione, in tal caso si usa un solo pin ma ci incasina parecchio.

E' giustissima la proposta di cercare un mux/demux con comando seriale della selezione su un solo segnale: il protocollo deve essere asincrono start/stop e il componente deve aggiornare l'uscita (o segnalare che il dato è pronto) solo quando riconosce il fine trasmissione altrimenti servono due fili (o anche tre come per il 74HC595) Se non e' un micro, magari un attiny25 o un PIC12xx, poco ci manca.

Però posso sbagliare io e non vedere il classico uovo di colombo!
#12256
Tanto per dire e per curiosità anche mia che odio il digitale ..ma mettendo un oscillatorino integrato da un qualche GHz e quindi un prescaler tipo questi
https://docs.rs-online.com/3a26/0900766b81478db8.pdf
scelto per dividere non molto sotto le 100 volte, per ottenere, in base alla durata massima dell' impulso PWM
un massimo di 15 impulsini ..e quindi in uscita impulsi che variano in treni da 0 a 15 nel tempo di un set reset ad ogni impulso dell' uscita PWM..
(semmai poi da ricontare in binario per una uscita parallela a 4 bit)
Per un segnale modulato PWM sotto i 10MHz dovrebbe andare
#12258
..per chiarirmi meglio dicevo di trasmettere un numero modulando ad esempio la durata di un impulso nel tempo, tempo misurato con un metronomo, per ricevere ma senza sbagliare il numero, con un secondo metronomo non sincrono al primo..

(il trucco stava nei metronomi, gli oscillatori velocissimi. e le oscillazioni divise come avevo messo)
Dimmer su aspirazione

Ciao a tutti ho una ventola di aspirazione in came[…]

Visita il nostro canale telegram