Informazioni sul tuo schema:
Tutto sembra a posto, puoi aumentare R2 a 10k o anche 100k, la capacità del MOST è così piccola, il FAN avrà un'inerzia di rotazione molto maggiore rispetto al ritardo di spegnimento nel MOST, probabilmente anche con 1M. In questo modo la posizione del tuo 100R è irrilevante e mentre sei acceso non sprechi alcun mA. Se non tieni mai premuto de uC in reset, tecnicamente non è nemmeno necessario, dal momento che il tuo uC lo attiverà attivamente su o giù.
Per il segnale PWM, potresti vedere se il foglio dati consente un pull-up esterno a 12V, anche se dubito che farà molta differenza in entrambi i modi.
A proposito del rumore:
EDIT: ho letto male la tua trama per kHz, il che è stupido se ci pensi, dove è Hz. Parte della mia storia cambierà un po '(come il discorso sulla necessità di MHz per il lavoro digitale), ma l'idea generale rimane.
Lascerò l'intero post così com'è, ma per un segnale a 100Hz con rumore a 30kHz, invece di 100kHz con rumore> 5MHz (anche se non aveva davvero senso, vero?), Potresti aumentare i resistori che interagiscono con i condensatori di un fattore 10 e anche di aumentare i condensatori di un fattore compreso tra 50 e 100. In tutti gli esempi otterrai una frequenza di filtro inferiore di fattore 1000. Ma va anche bene solo aumentare i condensatori di un fattore compreso tra 10 e 20, per ottenere bordi più nitidi o una risposta più rapida sul segnale di interesse, poiché 30kHz è molto lontano da 100Hz.
Quindi considera questo post come scritto per le alte frequenze e ridimensiona le idee, rendendole anche molto più facili da implementare! (Soprattutto il rifiuto digitale in 3.)
Fine modifica
Dal momento che crei un caso d'uso così piacevole per elaborare metodi di riduzione del rumore, proverò a crearne uno adatto alla tua situazione.
A chiunque legga, sappi:
Si tratta solo di rumore su un segnale digitale
In un segnale digitale puoi supporre che ci siano solo due tensioni che ti interessano "on" e "off". Qualunque cosa nel mezzo è inutile e appartiene al rumore o all'errore. In un segnale analogico, è necessario conoscere ogni livello di tensione ed è necessario eseguire un filtraggio effettivo con carichi di C, L, ecc.
Un problema nel segnale è che i picchi di rumore negativo a livello alto e i picchi di rumore positivo a livello basso si avvicinano molto l'un l'altro, quindi un semplice trigger standard, anche con livello regolabile, non può assolutamente garantire che non si otterrà mai confuso.
Le tue opzioni:
- Cambia il pregiudizio
- Modifica i livelli di tensione
- Aggiungi isteresi "lenta"
- Filtra il rumore
1. Modifica la distorsione:
Il positivo ha picchi negativi molto bassi, perché il pull-up non può vincere dal rumore. La cosa più semplice che puoi provare è diminuire quella resistenza. Esiste il rischio che ciò aumenti anche i picchi sul segnale di spegnimento, quindi potrebbe non funzionare sempre. Ma è molto probabile che ti dia un po 'di spazio tra le punte per impostare una semplice isteresi.
2. Modificare i livelli di tensione
Puoi facilmente, se il ventilatore lo consente, cambiare il Tacho a un livello di tensione più alto e aggiungere uno stato intermedio:
simula questo circuito - Schema creato usando CircuitLab
Ora potrebbe esserci spazio sufficiente tra i picchi alti e bassi per assicurarsi che la MAGGIOR PARTE sia sempre attiva, anche quando ci sono picchi negativi e sempre spenti, anche se ci sono picchi positivi. Potrebbero essere necessari alcuni diodi, zener o resistori per ottenere il set-point nella nuova situazione, ma se i picchi sul segnale negativo rimangono quelli che sono, non dovrebbero innescare il MOSFET, purché tu non lo faccia sostituirlo con uno che abbia una soglia di gate inferiore a 2V.
3. Aggiungi isteresi "lenta":
Questo è un trucco che viene comunemente usato quando sai che un segnale di rumore appuntito è almeno di un ordine di grandezza più grande del segnale che ti interessa. Ritarderà leggermente il segnale, quindi non può essere usato in situazioni in cui il momento esatto di un cambio on / off è importante.
Ma per un segnale in cui vuoi solo conoscerne la forma o la frequenza, questo è un metodo molto robusto. Fondamentalmente inizia a innescarsi quando c'è una tensione che attraversa la soglia, ma completa quell'azione solo quando rimane lì. Esistono molti modi per crearne uno.
Puoi farlo nel controller (che è il più semplice nel conteggio dei componenti): puoi innescare su un fianco, quindi campionare altri valori a una velocità sufficiente per vedere l'alto tra i picchi di rumore, ma non confondere la perdita di un intero periodo di basso. Quindi fai un giudizio predefinito basato sulla conoscenza del tuo segnale e rumore. Ad esempio, se è possibile campionare a 10 MHz, è possibile acquisire 50 campioni ed essere certi che una frequenza massima di 100 kHz non verrà ignorata se si segue la regola della maggioranza. Vale a dire: almeno 25 devono essere bassi perché sia effettivamente basso. I tuoi picchi sono solo molto sottili e il più delle volte è il segnale originale, quindi potrebbe funzionare, ma il numero della maggioranza può essere regolato. Funzionerà anche con campioni da 1MHz e 6 o 7, ma sarà meno della maggioranza effettiva, quindi potrebbero esserci alcuni rischi.
Puoi anche farlo esternamente:
ma è già MOLTO più complicato dell'aggiunta di un semplice filtro, specialmente quando guardi il risultato con un uC con qualche isteresi nel suo input già. Ma è divertente pensarci, quindi cerchiamo di:
simula questo circuito
U1 è qualsiasi Op-Amp o Comperatore adatto. I comperatori sono switcher migliori, spesso con swing migliore, ma per i sub-MHz un OpAmp con swing rail / rail decente lo farà facilmente.
Mentre questo tipo di isteresi può essere costruito con almeno un resistore in meno, questo è più facile da spiegare e come tale più facile da modificare.
Prima immaginalo senza il condensatore:
Per prima cosa, vedi che il divisore della resistenza è influenzato dall'uscita di U1, lo tirerà un po 'più in basso di più in alto attraverso la resistenza apparente di 20kOhm. Diciamo che sull'ingresso positivo di U1 è una tensione di 1,1 V arrotondata per difetto quando la sua uscita è 0 e 3,9 V arrotondata per eccesso quando la sua uscita è 5V.
Se l'ingresso Tacho di avvio in regime permanente è alto, l'uscita U1 sarà bassa, a causa della natura invertita dell'ingresso nel Tacho. Quindi l'ingresso negativo sarà, sempre a causa del resistore di pull-up aggiuntivo, di circa 2,3 V. Poiché l'ingresso positivo è solo 1,1 V, l'ingresso deve scendere al di sotto di 2,2 V per fare in modo che l'ingresso negativo veda una tensione più bassa e l'uscita si ribalti.
Quando l'uscita si capovolge, l'ingresso negativo vedrà 3,6 V (perché in questo momento il segnale di ingresso è 2,2 V, l'uscita di U1 è 5 V, quindi il loro mezzo, realizzato dai resistori da 10k è di circa 3,6 V), ma il positivo l'ingresso sarà passato da 1,1 V a 3,9 V, quindi il negativo è ancora sotto l'ingresso positivo e l'uscita rimarrà 5V.
Se il segnale ora "si interrompe" rapidamente e torna indietro, l'output di U1 tornerà rapidamente indietro, ma lo spike ha già dovuto scendere al di sotto di 2,2 V, quindi è meglio di niente.
Se il segnale scende ulteriormente a 0, la situazione stabile diventerà solo più forte, l'ingresso negativo scenderà a 2,5 V (poiché ipotizziamo che il tachimetro della VENTOLA sia abbastanza forte da un pull-down) e il positivo si fermerà a circa 3,9 V.
Ora il segnale deve alzarsi al di sopra di 2,7 V affinché l'uscita si ribalti dall'altra parte. Molto probabilmente il 95% dei picchi verrà già ignorato.
Aggiunta del condensatore:
Con il condensatore, il segnale in ingresso deve fornire energia sufficiente per un tempo sufficiente a caricare o scaricare il condensatore. In effetti questo è già un filtro RC. Qualsiasi picco che si tuffa rapidamente e poi si ripristina non sarà in grado di scaricare il condensatore.
Il valore di C dipende ovviamente dal segnale sorgente e dal segnale di rumore. Ho 510pF parcheggiato a sfera per un segnale sorgente a 100kHz contro una durata massima di 1 picco, ma non ho fatto molta matematica, è solo un istinto basato sul tempo RC che potrebbe essere vicino a ciò che funzionerà.
4. Filtrare il rumore
È un po 'come filtrare un segnale analogico. È possibile utilizzare una semplice rete RC, come discusso nella sezione precedente:
simula questo circuito
Poiché i picchi di rumore sono pari o inferiori a 1us, non possono apportare variazioni molto significative nella tensione sul condensatore, poiché il suo tempo RC è 5us. Ciò significa che l'energia nei picchi viene appiattita in media. Dato che vedi picchi alti e bassi bassi sui picchi, è anche possibile che le medie siano molto vicine a 0 V e 5 V, ma ciò può essere detto solo con immagini migliori o solo un esperimento. Dal momento che lo si alimenta a un pin uC, il tempo RC sarà probabilmente sufficiente per vederlo alto o basso. Ciò causerà una leggera distorsione a causa della carica più lenta rispetto alla scarica, causata dalla resistenza di pull-up. Alcune modifiche ai valori possono produrre un risultato in cui ciò è trascurabile.
Se ciò non bastasse, potresti aggiungere altri componenti, ma stai esagerando molto rapidamente quando il rumore dominante è almeno 10 volte "più veloce" del segnale.
È possibile aggiungere un induttore 4.7uH in serie con il resistore per appianare alcuni fianchi ad alta frequenza, forse anche 10uH.
Ma ad essere onesti, nel caso di "dargli da mangiare ad un uC" l'unica ragione per sperimentare L in un segnale del tuo tipo è trovare un equilibrio in cui R è grande, C è piccola e L aiuta solo a appianare alcuni fianchi, in modo che R2 / R1 sia abbastanza piccolo da ignorare la differenza nei tempi di salita e di discesa. come un R1 di 33k, un C di 150pF e un L in serie con un R1 di 56uH. O forse una perlina di ferrite al posto dell'induttore, dipende un po 'dalla nitidezza delle punte.
Ma già pensando troppo, direi.