Allora, mi sono divertito a simulare con ltspice il circuito da me proposto:
(per c1 4.7uf è un valore piu' consigliato per evitare errori alle basse frequenze)
E questa è la forma d'onda risultante:
La traccia verde è la tensione di ingresso (20vpp), in blu è la traccia dopo resistenza e condensatore (i 20vpp di ingresso non erano sufficienti a far clippare il segnale ai diodi, ma anche se clippavano non cambiava nulla), quella azzurrina è il segnale del pin invertente (riferimento fisso a 2,5v), mentre il rosso e' il segnale di uscita.
Direi che sembra tutto corretto...
Per la logica di funzionamento, un convertitore f/v e relativo filtro passabasso e successiva acquisizione adc non dovrebbe causare particolari errori, forse rallenta un po la risposta, ma alla fine è lo scopo di prendere piu' campioni via sw... Cert che se vuoi precisione assoluta non è la soluzione migliore.
Se no se preferisci comunque farlo via sw tutto in digitale (per avere la max preciisone), un'altra alternativa è usare una pic piccolissima ed economica per ogni segnale, ognuna lavora il suo sensore, poi via una comunicazione seriale di tipo master/slave comunicano con un altro microcontrollore che prende i segnali e li elabora. Ammettendo che ogni chip deve trasmettere 1byte (velocita' da 0 fino a 255km/h con tolleranza di 1kmh), con una velocita' seriale di 115kbps dovresti farcela a fare tutto in pochisimo tempo. Persino con 2 byte non dovresti avere problemi.
La cpu principale oltre la linea seriale utilizza anche un pin connesso ad ogni chip, che una volta alzato abilita la trasmissione della lettura di velocita', così non avvengono collisioni sulla unica linea di comunicazione, e la mcu principale gira a rotazione tutte le mcu secondarie.
Poi volendo fare una cosa strafiga puoi fare che la mcu principale trasmetta all'accensione alle mcu periferiche i parametri come numero di campioni da prendere prima di aggiornare il registro (il discorso del compare che facevo prima), oppure ad esempio la circonferenza della ruota per il calcolo della velocita', etc. Così se cambi ruote non devi riprogrammare tutti i chip.
Questo mi sembra il modo migliore per avere precisione di lettura assoluto, e direi che rimarrebbe un gran bel progettino.
Un altro uso interessante potrebbe essere di rilevare una ruota che sis sta sgonfiando, se in un arco di tempo da decidere una ruota non gira alla medesima velocita' delle altre, sai che è sgonfia
Che ne dici?
A me piacciono da morire ste cose perchè ci son 1000 modi per realizzarle, ed il solo limite è la fantasia...
Carino il sistema di acquisizione, che cosa è? Come ci entri dentro per loggare la velocità?
Prelevare segnale dalle ruote foniche ABS
- masterx81
- Messaggi: 14417
- Iscritto il: 15/11/2010, 16:43
- Auto: Corsa Gsi, Subby WWW
- ECU: MS3 EXP
- Località: Asti
Re: Prelevare segnale dalle ruote foniche ABS
... Enrico
Ho perso il rispetto di me stesso al Megaraduno 2012 :-)
Ho perso il rispetto di me stesso al Megaraduno 2012 :-)
- Vicus
- Messaggi: 2753
- Iscritto il: 15/11/2010, 19:59
- Località: Rossano Veneto
Re: Prelevare segnale dalle ruote foniche ABS
Scusa pier ma ho visto un tuo video su youtube, più precisamente quello dell 8C, ma sei di Cittadella?
-
- Messaggi: 878
- Iscritto il: 09/12/2010, 17:58
- Auto: Honda Integra DC2
- Località: PD nord
- Contatta:
Re: Prelevare segnale dalle ruote foniche ABS
masterx81 ha scritto:Allora, mi sono divertito a simulare con ltspice il circuito da me proposto:
(per c1 4.7uf è un valore piu' consigliato per evitare errori alle basse frequenze)
E questa è la forma d'onda risultante:
La traccia verde è la tensione di ingresso (20vpp), in blu è la traccia dopo resistenza e condensatore (i 20vpp di ingresso non erano sufficienti a far clippare il segnale ai diodi, ma anche se clippavano non cambiava nulla), quella azzurrina è il segnale del pin invertente (riferimento fisso a 2,5v), mentre il rosso e' il segnale di uscita.
Direi che sembra tutto corretto...
Credo proprio di avere capito ed hai ragione, l'incomprensione è dovuta ad un problema di condensatore...non so perche' ma mi ero fissato su un C di tutt'altro valore, molto piu' piccolo; per mia curiosita', potresti provare a cambiare solo quello nella simulazione (mettendo, chesso', 220pF) per vedere se cambia stato in prossimità delle creste come (forse erroneamente) avevo supposto ?
Per la logica di funzionamento, un convertitore f/v e relativo filtro passabasso e successiva acquisizione adc non dovrebbe causare particolari errori, forse rallenta un po la risposta, ma alla fine è lo scopo di prendere piu' campioni via sw... Cert che se vuoi precisione assoluta non è la soluzione migliore.
Si, è un discorso di precisione...vorrei evitare condensatori e resistenze "pregiati" come tolleranza ed avere una risposta immediata.
Se no se preferisci comunque farlo via sw tutto in digitale (per avere la max preciisone), un'altra alternativa è usare una pic piccolissima ed economica per ogni segnale, ognuna lavora il suo sensore, poi via una comunicazione seriale di tipo master/slave comunicano con un altro microcontrollore che prende i segnali e li elabora. Ammettendo che ogni chip deve trasmettere 1byte (velocita' da 0 fino a 255km/h con tolleranza di 1kmh), con una velocita' seriale di 115kbps dovresti farcela a fare tutto in pochisimo tempo. Persino con 2 byte non dovresti avere problemi.
La cpu principale oltre la linea seriale utilizza anche un pin connesso ad ogni chip, che una volta alzato abilita la trasmissione della lettura di velocita', così non avvengono collisioni sulla unica linea di comunicazione, e la mcu principale gira a rotazione tutte le mcu secondarie.
Si', è una buona idea...nella mia scheda di acquisizione c'e' una cosa del genere : visto che dovevo misurare il duty cycle degli iniettori ed i timer nel processore principale (16F877) erano finiti, ho messo un piccolo 12F675 che, oltre a misurare il dutycycle, legge ulteriori ingressi analogici (cosi' ho evitato multiplexer analogici). I dati sono trasmessi periodicamente via seriale a quello principale...
Poi volendo fare una cosa strafiga puoi fare che la mcu principale trasmetta all'accensione alle mcu periferiche i parametri come numero di campioni da prendere prima di aggiornare il registro (il discorso del compare che facevo prima), oppure ad esempio la circonferenza della ruota per il calcolo della velocita', etc. Così se cambi ruote non devi riprogrammare tutti i chip.
Questo mi sembra il modo migliore per avere precisione di lettura assoluto, e direi che rimarrebbe un gran bel progettino.
Un altro uso interessante potrebbe essere di rilevare una ruota che sis sta sgonfiando, se in un arco di tempo da decidere una ruota non gira alla medesima velocita' delle altre, sai che è sgonfia
Che ne dici?
Ci penso
A me piacciono da morire ste cose perchè ci son 1000 modi per realizzarle, ed il solo limite è la fantasia...
Carino il sistema di acquisizione, che cosa è? Come ci entri dentro per loggare la velocità?
E' un sistema basato su un pic 16F877 e, come detto sopra, un 12F675, che campiona una serie di parametri ad intervalli regolari e li trasmette in continuazione al principale in seriale a 19.2 kbps. Il fatto di avere un pacchetto sempre della stessa lunghezza ed un checksum alla fine, mi ha permesso di evitare handshaking. Comunque, il dato è letto da un display e reso disponibile ad un eventuale pc per fare il datalog...il display è questo .
Nel corso del tempo ho aggiunto funzioni sempre nuove, tra le varie cose :correzione % della velocita' per compensare differenti rotolamenti, 2 contakm parziali, consumo istantaneo km/l che diventa lt/h quando mi fermo, consumo medio (associato ad un trip parziale), allarmi per temperature eccessive, pressione olio bassa, % duty cycle iniettori, % farfalla, un cronometro impostabile a step di 10 kmh (da 10 a 100, da 20 a 200, ecc) con precisione 1/10, il cronometro per la pista (visualizza il tempo per 5 sec. quando il ricevitore, un TSOP1738, riceve il pacchetto IR trasmesso dalla torretta) ed altre cose che ora mi sfuggono...
Ora, vorrei sviluppare ulteriormente il sistema rendendo la comunicazione piu' "razionale" ed aggiungendo magari l'accelerometro, le velocita' delle ruote dietro, ecc...
Velocita' e giri le prendo come detto prima con i due capture...se intendi a livello hardware, partitore resistivo e diodo 1N4148 tra pin del pic e +5 per tagliare sopra i 5.7 V (anche se non sarebbe necessario perche' i diodi ci sono internamente...), il segnale fornito dallo speed sensor è un'onda quadra 0/12V, mi pare sui 66 Hz @ 100 kmh.
Ultima modifica di PierGSi il 29/01/2011, 12:06, modificato 1 volta in totale.
Ciao,
Pier.
www.piergm.com
Pier.
www.piergm.com
-
- Messaggi: 878
- Iscritto il: 09/12/2010, 17:58
- Auto: Honda Integra DC2
- Località: PD nord
- Contatta:
Re: Prelevare segnale dalle ruote foniche ABS
Vicus ha scritto:Scusa pier ma ho visto un tuo video su youtube, più precisamente quello dell 8C, ma sei di Cittadella?
Si, sono di Cittadella, il proprietario dell'auto è (era, perche' forse non ce l'ha piu') il figlio di un noto "industriale dei mobili"
Ciao,
Pier.
www.piergm.com
Pier.
www.piergm.com
- masterx81
- Messaggi: 14417
- Iscritto il: 15/11/2010, 16:43
- Auto: Corsa Gsi, Subby WWW
- ECU: MS3 EXP
- Località: Asti
Re: Prelevare segnale dalle ruote foniche ABS
Mettendo una c piu' piccola non fa altro che comportarsi come un filtro passa alto... A frequenze piu' basse attenua il segnale.
Cavolo, la tua scehda di acquisizione è uno spettacolo
Come hai fatto l'osd sul segnale video?
E' un montaggio fatto post registrazione, oppure viene proprio registrato in osd?
Pensavo fosse un prodotto commerciale, non una cosa autocostruita (per quello chiedevo come ci entravi dentro).
Cmq davvero bel lavoro
Deve esserti costato un bel po di tempo di sviluppo
Cavolo, la tua scehda di acquisizione è uno spettacolo
Come hai fatto l'osd sul segnale video?
E' un montaggio fatto post registrazione, oppure viene proprio registrato in osd?
Pensavo fosse un prodotto commerciale, non una cosa autocostruita (per quello chiedevo come ci entravi dentro).
Cmq davvero bel lavoro
Deve esserti costato un bel po di tempo di sviluppo
... Enrico
Ho perso il rispetto di me stesso al Megaraduno 2012 :-)
Ho perso il rispetto di me stesso al Megaraduno 2012 :-)
-
- Messaggi: 878
- Iscritto il: 09/12/2010, 17:58
- Auto: Honda Integra DC2
- Località: PD nord
- Contatta:
Re: Prelevare segnale dalle ruote foniche ABS
masterx81 ha scritto:Mettendo una c piu' piccola non fa altro che comportarsi come un filtro passa alto... A frequenze piu' basse attenua il segnale.
Si, ed attenuandolo anche in senso assoluto avremo meno escursione sull'ingresso non invertente rispetto al valore iniziale (ed impostato sull'invertente) di 2.5V, quindi in prossimità delle creste si avrà l'inversione dell'uscita dell'opamp.
Dovrebbe essere per questo motivo che hai dovuto aumentare il C a 4.7uF per avere una maggior "precisione" alle basse frequenze.
Adesso cerco ltspice e provo...
Cavolo, la tua scehda di acquisizione è uno spettacolo
Come hai fatto l'osd sul segnale video?
E' un montaggio fatto post registrazione, oppure viene proprio registrato in osd?
E' un montaggio, magari venisse registrato in diretta.
Pensavo fosse un prodotto commerciale, non una cosa autocostruita (per quello chiedevo come ci entravi dentro).
Cmq davvero bel lavoro
Deve esserti costato un bel po di tempo di sviluppo
Grazie, ci è voluto bel po' di tempo, si...
Ciao,
Pier.
www.piergm.com
Pier.
www.piergm.com
- masterx81
- Messaggi: 14417
- Iscritto il: 15/11/2010, 16:43
- Auto: Corsa Gsi, Subby WWW
- ECU: MS3 EXP
- Località: Asti
Re: Prelevare segnale dalle ruote foniche ABS
Si, con c basse il segnale si sfasa di 90°
Per l'osd avevo guardato qualcosa tempo fa... Un casino immane... Niente di impossibile, ma c'e' da divertirsi
Per l'osd avevo guardato qualcosa tempo fa... Un casino immane... Niente di impossibile, ma c'e' da divertirsi
... Enrico
Ho perso il rispetto di me stesso al Megaraduno 2012 :-)
Ho perso il rispetto di me stesso al Megaraduno 2012 :-)
-
- Messaggi: 878
- Iscritto il: 09/12/2010, 17:58
- Auto: Honda Integra DC2
- Località: PD nord
- Contatta:
Re: Prelevare segnale dalle ruote foniche ABS
masterx81 ha scritto:Si, con c basse il segnale si sfasa di 90°
Ecco, ho trovato LTspice
a 500 Hz
a 2500 Hz
Ovvero quel che intendevo, aumentando il C ho constatato, come giustamente sostieni fin dall'inizio, si sincronizza e "lavora" sullo zero crossing.
Gia' che c'ero ho anche provato il mio schema, con i due diodi in antiparallelo ed ingresso senza disaccoppiamento; pare funzionare con fronti di commutazione leggermente piu' ripidi (praticmanete in modo impercettibile).
L'unico dubbio che ho in merito al tuo schema è in accelerazione-decelerazione : in questi casi, ovvero con segnale che aumenta anche in ampiezza progressivamente, che succede ? Se la semionda negativa è meno ampia della positiva (o se non sono perfettamente simmetriche le escursioni ), il trigger si sposta piu' su o piu' giu' rispetto al passaggio per lo zero ? Senza C son sicuro che si prenda sempre lo zero crossing vero...
Misurando tra i fronti con il capture temo sia un problema, a meno di fare taante medie. Poi, altra cosa, non so cosa ci sia nell'abs (una rete che taglia ? Di sicuro c'e' un partitore che fornisce una polarizzazione anche a ruote ferme, per rilevare tra l'altro se un sensore è staccato o in corto) per cui boh...mi sa che devo sperimentare
Per l'osd avevo guardato qualcosa tempo fa... Un casino immane... Niente di impossibile, ma c'e' da divertirsi
Ma ci credo, sicuramente qualcosa che va oltre le mie conoscenze...
Ciao,
Pier.
www.piergm.com
Pier.
www.piergm.com
- masterx81
- Messaggi: 14417
- Iscritto il: 15/11/2010, 16:43
- Auto: Corsa Gsi, Subby WWW
- ECU: MS3 EXP
- Località: Asti
Re: Prelevare segnale dalle ruote foniche ABS
Anche in fase di aumento rapido di frequenza non dovrebbero esserci problemi, il passaggio avviene sempre dallo 0.
Dopo il condensatore ti trovi 2.5v costanti, appena prima del condensatore la tensione sale anche solo di pochissimi mv, il condensatore (di grande capacita') si comporta come in un charge pump, che elva la tensione dopo di esso dello stesso valore prima di esso, e l'operazionale vedendo una variazione rispetto ai 2.5 volt di riferimento manda a guadagno infinito l'uscita.
L'unico modo per variare il punto di zero crossing è variare i valori delle resistenze partitore. Queste sarebbe meglio metterle ad alta precisione, così da avere sia il riferimento sull'invertente che il 'bias' il piu' prossimi possibile.
Per la risposta dell'operazionale, non dovrebbero potere variare i tempi di commutazione, in quanto non lavorando ad anello chiuso la sua risposta puo' essere o +v o -v, e lo slew rate dovrebbe essere un parametro fisico dell'operazionale, che non varia in base alla configurazione degli input.
Cmq ltspice dovrebbe essere in grado di simulare un generatore a frequenza variabile, ma da una ricerca veloce non ho trovato nulla...
Dopo il condensatore ti trovi 2.5v costanti, appena prima del condensatore la tensione sale anche solo di pochissimi mv, il condensatore (di grande capacita') si comporta come in un charge pump, che elva la tensione dopo di esso dello stesso valore prima di esso, e l'operazionale vedendo una variazione rispetto ai 2.5 volt di riferimento manda a guadagno infinito l'uscita.
L'unico modo per variare il punto di zero crossing è variare i valori delle resistenze partitore. Queste sarebbe meglio metterle ad alta precisione, così da avere sia il riferimento sull'invertente che il 'bias' il piu' prossimi possibile.
Per la risposta dell'operazionale, non dovrebbero potere variare i tempi di commutazione, in quanto non lavorando ad anello chiuso la sua risposta puo' essere o +v o -v, e lo slew rate dovrebbe essere un parametro fisico dell'operazionale, che non varia in base alla configurazione degli input.
Cmq ltspice dovrebbe essere in grado di simulare un generatore a frequenza variabile, ma da una ricerca veloce non ho trovato nulla...
... Enrico
Ho perso il rispetto di me stesso al Megaraduno 2012 :-)
Ho perso il rispetto di me stesso al Megaraduno 2012 :-)
-
- Messaggi: 878
- Iscritto il: 09/12/2010, 17:58
- Auto: Honda Integra DC2
- Località: PD nord
- Contatta:
Re: Prelevare segnale dalle ruote foniche ABS
Che dici di usare un 12F675 per ruota ?
http://ww1.microchip.com/downloads/en/devicedoc/41190c.pdf
Ha un timer 16 bit cloccabile da fonte esterna ed uno a 8 bit che potrei usare per la finestra di conteggio, l'invio in seriale potrei farlo via software (perche' non ha USART, la routine ce l'avrei gia') con dei ritardi nel main mentre sta contando.
Nel caso, secondo voi posso fidarmi a comprarne qualcuno qui ? http://cgi.ebay.it/Microchip-PIC12F675-I-P-8-bit-Microcontroller-12F675-/300427617467?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item45f2e1a4bb
Dei 78L05, presi sempre in inghilterra a pochi €, per funzionare funzionano, ma escono con 5.3V...
http://ww1.microchip.com/downloads/en/devicedoc/41190c.pdf
Ha un timer 16 bit cloccabile da fonte esterna ed uno a 8 bit che potrei usare per la finestra di conteggio, l'invio in seriale potrei farlo via software (perche' non ha USART, la routine ce l'avrei gia') con dei ritardi nel main mentre sta contando.
Nel caso, secondo voi posso fidarmi a comprarne qualcuno qui ? http://cgi.ebay.it/Microchip-PIC12F675-I-P-8-bit-Microcontroller-12F675-/300427617467?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item45f2e1a4bb
Dei 78L05, presi sempre in inghilterra a pochi €, per funzionare funzionano, ma escono con 5.3V...
Ciao,
Pier.
www.piergm.com
Pier.
www.piergm.com
Torna a “Elettronica generale”
Chi c’è in linea
Visitano il forum: Nessuno e 14 ospiti