BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Interpretare segnali da partitore (https://www.baronerosso.it/forum/circuiti-elettronici/280550-interpretare-segnali-da-partitore.html)

muvideo 31 marzo 13 01:14

Ciao, dico la mia sperando di essere utile...
bloodsun prima di tutto non ho capito bene l'applicazione e il problema che
stai cercando di risolvere.

Per leggere un numero arbitrario di ingressi digitali, oltre ai multiplexer
che ti ha suggerito Romoloman, si possono usare anche i
registri, ad esempio i 74HC165 o 74HC597, non costano niente, ciascuno
carica 8 ingressi in parallelo, che poi vengono letti dal micro su una unica
linea seriale sincrona. Si possono concatenare per caricare quanti ingressi
si vogliono, e leggerli sempre su una unica linea seriale (3 pin) l'unico limite
è la frequenza del segnale di clock, che determina quanto tempo ci metti
per leggere tutti gli ingressi. Il PIC che stai usando dovrebbe avere gia
hardware dedicato allo scopo (USART).

La soluzione analogica che suggerivi (l'ho capito leggendo ElNonino, che ha
un ottimo intuito :lol: ) e' un DAC, che trasforma un segnale digitale in
uno analogico, il problema di questo sistema è che soffre molto di disturbi,
rumore, e altre cose come derive termiche delle resistenze. Il risultato è
che è che ad ogni canale che aggiungi la "precisione" del sistema deve
raddoppiare, capisci che oltre i 6 o 7 ingressi comincia a diventare un
lavoro inutilmente complesso. Guardati ad es. i dac R-2R su google.

Ciao!

bloodsun 31 marzo 13 04:52

Citazione:

Originalmente inviato da muvideo (Messaggio 3716773)
Per leggere un numero arbitrario di ingressi digitali, oltre ai multiplexer
che ti ha suggerito Romoloman, si possono usare anche i
registri, ad esempio i 74HC165 o 74HC597, non costano niente, ciascuno
carica 8 ingressi in parallelo, che poi vengono letti dal micro...
Ciao!

ok.. potrebbe essere una soluzione alternativa ed interessante. Ci voglio ragionare sopra.
Citazione:

Originalmente inviato da muvideo (Messaggio 3716773)
...che poi vengono letti dal micro su una unica
linea seriale sincrona. Si possono concatenare per caricare quanti ingressi
si vogliono, e leggerli sempre su una unica linea seriale (3 pin) l'unico limite
è la frequenza del segnale di clock, che determina quanto tempo ci metti
per leggere tutti gli ingressi. Il PIC che stai usando dovrebbe avere gia
hardware dedicato allo scopo (USART).
Ciao!

non ho capito però come sincronizzare più registri per usare una stessa linea e far capire al PIC quale registro sta mandando il segnale in un determinato momento.
Se non ho capito male, il 74HC prende un numero di 8 bit e lo trasforma in un dato binario (interpretabile come un numero di 1 byte che viene trasmesso su una seriale, ed il PIC andrà a concatenare i valori per ricavare l'intera sequenza di segnali e ricavare il numero di byte che la rappresenta.
Ripongo la precedente domanda... come faccio a distinguere da quale registro sta arrivando il dato per fare la concatenazione in modo corretto???
Ho sbirciato il datasheet del 74HC165, ma lo devo studiare con calma per capire effettivamente come utilizzarlo. Se per lo meno mi spieghi il concetto di funzionamento innerente a questa discussione te ne sarei molto grato.

Detto questo non voglio chiudere la porta in faccia alla soluzione multiplexer, ma non saprei da dove prenderlo in mano...
La questione analogico l'avevo intrapresa per ovviare a carenze della mia conoscenza di elettronica. Mastico... ma mooolto lentamente. :fiu:
Grazie ancora, e buona Pasqua a tutti :D

muvideo 31 marzo 13 18:09

Ciao, i registri a scorrimento (google -> shift register) sono semplici da capire.
E' una memoria (in questo caso da 1byte, 8bit, detto anche registro) il cui
contenuto può "scivolare" ad ogni impulso di clock. Ha una porta di ingresso
e una di uscita e un metodo per caricare e/o scaricare il contenuto del registro
in maniera parallela.
Dalle porte di ingresso/uscita i bit entrano/escono in maniera seriale, cioè uno
dopo l'altro, uno per ogni impulso del clock.

Il 74HC165: quando il pin 1 viene portato a livello logico 0, copia lo stato dei
pin D0,D1,D2,ecc nel registro interno: se D0 è a 5V allora il primo bit sarà 1 ecc.
Ad ogni impulso di clock sul pin 2 il contenuto del registro scivola di un bit:
il bit 0 va al bit 1 , l'1 va al 2 ecc. Il bit 7 (che era stato caricato dal pin D7)
esce dal pin 9 che è l'uscita seriale. Inoltre il bit 0 assume lo stato del pin 10
che è l'ingresso seriale del registro. E così per ogni impulso di clock.
Quindi per leggere 8 ingressi la sequenza è:
impulso basso sul pin 1, carica lo stato degli ingressi.
8 impulsi di clock sul pin 2, ad ogni impulso lettura del pin 9.

Concatenare due registri: semplice, connetti il pin 9 del primo registro
al pin 10 del secondo registro, il pin 9 del secondo registro al micro.
I pin 1 (load) dei due registri vanno connessi assieme e pilotati dal micro,
idem per i pin 2 (clock).
Sequenza:
impulso basso sui pin 1 di entrambi i registri: carica i 16 ingressi.
16 impulsi di clock sui pin2 dei registri, il pin 9 del secondo registro
caccia i bit uno per uno ad ogni impulso di clock.
Dopo i primi 8 clock, il micro avrà letto lo stato del secondo registro,
mentre lo stato del primo sarà stato spostato dal primo registro
(uscendo dal pin 9) nel secondo (entrando dal pin 10), quindi
gli altri 8 clock leggeranno lo stato del primo registro.

Insomma un casino da spiegare, ma molto semplice da mettere
su. Compra un paio di 74HC165 e giocaci un po'.

Ciao!

bloodsun 31 marzo 13 20:21

Citazione:

Originalmente inviato da muvideo (Messaggio 3717400)
Insomma un casino da spiegare, ma molto semplice da mettere
su. Compra un paio di 74HC165 e giocaci un po'.
Ciao!

Sai una cosa... credo che a spiegarlo avrei di sicuro fatto peggio.
Leggendo il datasheet avevo intuito che il piedino 10 aveva la funzione di bypass e che l'unione dei byte l'evrebbero fatta loro, ma non avevo ancora capito il principio di funzionamento interno. hai chiarito il tutto. Grazie. :D

Prima di comprarli però meglio che capisco come piazzarli fisicamente sulla scheda e la disponibilità di spazio... forse riesco a ridurre di parecchio il circuito se la mezza idea che m'è venuta in mente va in porto.

Ora come ora l'unico dubbio è se per 4 sensori (x 9 bit) mi convenga usare 5 registri e fare una stringa da 5 byte e poi interpretare il tutto via softwere oppure se devo/posso fare in altro modo, visto che a memoria il pic ha si e no una sola porta USART.
Tu suggerisci qualcosa di alternativo??
Ciao

romoloman 31 marzo 13 20:45

Citazione:

Originalmente inviato da bloodsun (Messaggio 3717533)
Sai una cosa... credo che a spiegarlo avrei di sicuro fatto peggio.
Leggendo il datasheet avevo intuito che il piedino 10 aveva la funzione di bypass e che l'unione dei byte l'evrebbero fatta loro, ma non avevo ancora capito il principio di funzionamento interno. hai chiarito il tutto. Grazie. :D

Prima di comprarli però meglio che capisco come piazzarli fisicamente sulla scheda e la disponibilità di spazio... forse riesco a ridurre di parecchio il circuito se la mezza idea che m'è venuta in mente va in porto.

Ora come ora l'unico dubbio è se per 4 sensori (x 9 bit) mi convenga usare 5 registri e fare una stringa da 5 byte e poi interpretare il tutto via softwere oppure se devo/posso fare in altro modo, visto che a memoria il pic ha si e no una sola porta USART.
Tu suggerisci qualcosa di alternativo??
Ciao

Scusa ma mettere 4 pic sui sensori e sparare il tutto in i2c al pic principale non è fattibile ?

ElNonino 31 marzo 13 21:12

Io ci capisco sempre meno del tuo problema, allora devi leggere 4 sensori con risoluzione di 9bit ?

Senza svelare il tuo 'brevetto' ci dici che sensori sono ?

Se vuoi una mano mi pare che persone disposte a dartele qui ce ne sono più di una; ma senza avere dati precisi per me è impossibile.

P.S. per il multiplexer guardati il datasheet del CD4051, poi ne riparliamo.


:yeah:

bloodsun 31 marzo 13 21:16

Citazione:

Originalmente inviato da romoloman (Messaggio 3717565)
Scusa ma mettere 4 pic sui sensori e sparare il tutto in i2c al pic principale non è fattibile ?

Magari!! Il problema è lo spazio dei sensori che è lungo a dischezione ma piuttosto stretto.
Far passare le piste in mezzo ai sensori diventa difficoltoso e sono arrivato già al limite, ed aggiungere componenti lo ritengo impossibile per lo sviluppo della basetta.
Comunque volevo farti notare che i registri fanno già quel che suggerisci tu. In pratica faresti fare al softwere del pic quello che fa l'hardwere dei registri, aggiungendoci componenti necessari al funzionamento del PIC come il quarzo e condensatori e necessità di programmarli.
Ciao

bloodsun 31 marzo 13 21:31

Citazione:

Originalmente inviato da ElNonino (Messaggio 3717596)
Io ci capisco sempre meno del tuo problema, allora devi leggere 4 sensori con risoluzione di 9bit ?

Senza svelare il tuo 'brevetto' ci dici che sensori sono ?

Se vuoi una mano mi pare che persone disposte a dartele qui ce ne sono più di una; ma senza avere dati precisi per me è impossibile.

P.S. per il multiplexer guardati il datasheet del CD4051, poi ne riparliamo.

si alla fine sono 4 sensori da 9 bit... sono una serie di sensori per correggere la posizione di un macchinario da parte di un operatore. niente da brevettare o altro. devo solo adattare l'hardwere al contenitore. Un progetto solo in digitale lo avevo già fatto con delle porte OR ed un solo PIC, ma risultava troppo grande. ho bisogno di suggerimenti per cambiare il circuito.
Non ci sono tante altre informazioni da dare... alimentazione 0-5 volendo anche una linea da 12, 9 bit dai sensori x 4 e la necessità di portare al pic questi segnali limitando fortemente il numero di cavi necessari all'operazione. Se vogliamo aggiungere, i sensori possono avere anche cavo separato, oppure messo in serie l'uno all'altro... a mia discrezione (Avevo cercato di semplificare la vita a voi che mi date utili consigli)

grazie della disponibilità ^_^
p.s. darò un'occhio al CD4051, anche se l'idea dell'analogico comincio a metterla in panchina per il momento :rolleyes:

romoloman 31 marzo 13 21:48

Citazione:

Originalmente inviato da bloodsun (Messaggio 3717603)
Magari!! Il problema è lo spazio dei sensori che è lungo a dischezione ma piuttosto stretto.
Far passare le piste in mezzo ai sensori diventa difficoltoso e sono arrivato già al limite, ed aggiungere componenti lo ritengo impossibile per lo sviluppo della basetta.
Comunque volevo farti notare che i registri fanno già quel che suggerisci tu. In pratica faresti fare al softwere del pic quello che fa l'hardwere dei registri, aggiungendoci componenti necessari al funzionamento del PIC come il quarzo e condensatori e necessità di programmarli.
Ciao

Assolutamente no...
Evidentemente non conosci il bus I2C...
Il sistema con i sensori equipaggiati di pic diventerebbe molto più scalabile...
se ci riesci a mettere un cd4051 ci metti anche un pic o un AVR, inoltre in questi casi non hai bisogno del quarzo, l'oscillatore interno basta ed avanza...

ElNonino 31 marzo 13 21:59

Allora vediamo di restringere le variabili, i 9bit che escono dal singolo sensore sono seriali, paralleli o codificati in qualche modo; per intenderci ci sono sensori di posizione a fotocellula, magnetici, ottici a laser etc etc etc con uscite codificate, oppure sensori 'barbari' tipo gli indicatori di direzione vento realizzati con 8 reed se hai 9 interruttori con contatto 'pulito' la soluzione R-2R potrebbe essere percorribile ti servirebbero solo 4 ingressi A/D sul PIC (uno per sensore) un solo filo di segnale dal sensore oltre al GND comune ed ai 12V.

Anche se l'ambiente industriale è intrinsecamente rumoroso si possono trasmettere segnali analogici a discrete distanze senza troppi problemi; un punto importante è anche conoscere la velocità di risposta necessaria, filtrare e pulire un segnale analogico comporta una latenza in taluni casi non accettabile (es. sistemi di sicurezza od emergenza).

Se lato sensore non rappresentasse un problema implementare un semplice circuito si potrebbe pensare di trasmettere il segnale o in corrente 4..20mA o con un pwm, anche la trasmissione seriale proposta da romoloman (leggermente più complessa) è percorribile usando una sola linea 485 per tutti i sensori (sconsiglio la I2C su distanze superiori ad 1m ed in ambiente industriale); che PIC usi per controllare il tutto ?.

:yeah:


Tutti gli orari sono GMT +2. Adesso sono le 07:58.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002