Testina magnetica e opamp

Salve a tutti!

Nei giorni scorsi mi trovavo per le mani delle vecchie radio con lettore di cassette musicali. Dopo aver smontato lo smontabile la mia attenzione si è concentrata sulla testina magnetica. Avevo chiesto settimane fa nel forum come poter realizzare un lettore di cassette musicali con Arduino, ma avete in pochi post avete ogni possibilità di riuscita nel progetto :smiley:

Ho fatto qualche ricerca in rete ed ho trovato un altro modo per poter utilizzare questa testina magnetica ovvero come lettore di schede magnetiche.

Prima di passare alla codifica del segnale al momento sono fermo su come poter leggere il segnale dalla testina magnetica. Ho trovato un interessante articolo che spiega come poter prelevare il segnale audio di un microfono con gli ingressi analogici di arduino (Arduino Audio Input : 8 Steps (with Pictures) - Instructables).
Al posto del microfono ho provato ad utilizzare la testina magnetica ma non ho ottenuto risultati positivi: forse perche' il segnale in uscita dalla testina è troppo basso? In rete ho letto che la testina magnetica restituisce un segnale di circa +-25 mV, quindi partendo dallo schema presente nel link che ho postato poche righe sopra ho provato a modificare la resistenza da 100K con alcune più grandi in modo da aumentare il fattore di amplificazion. Nulla di fatto!

Ho utilizzato una sorta di oscilloscopio di fortuna (Pololu USB AVR Programmer) per vedere i dati in uscita dall'amplificatore, ma quando collego i due poli della testina magnetica ricevo un segnale di tipo digitale, ovviamente ci sarà qualche cosa di sbagliato che causa questo errore. Oppure questo oscilloscopio non va bene? Purtroppo ho visto che quelli buoni costano un bel pò...

Dopo aver fatto prove e prove in questi giorni mi trovo costretto a disturbare tutti voi nella speranza di ricevere qualche utile dritta.
Sapete aiutarmi??? HELP!!! :frowning:

Grazie mille a tutti!!!

PS so che esistono lettori di schede magnetiche che restituiscono i bit in maniera semplice, li ho già utilizzati e tutto funziona bene, ma vorrei ugualmente fare queste prove, il mio scopo non è tanto leggere i bit, quanto approfondire questi esperimenti!

Allora, ho fatto prove tutto il tempo ed alla fine ho capito che il problema era la schermatura del cavo. Utilizzando infatti un normale cavo audio e ponendo la schermatura a GND riesco a leggere i dati in ingresso abbastanza bene, soltanto che ancora rimane un fastidioso rumore di fondo.

Se provo a toccare per mezzo di una pinzetta metallica la linea GND in un qualsiasi punto del circuito (sia sui pin dell'Arduino, sia nei pressi della testina), automaticamente questo rumore di fondo scompare ed ottengo un segnale pulitissimo.

Come poter replicare questo effetto? Una resistenza? Un condensatore? Sapreste aiutarmi?

Grazie mille a tutti!

E' probabile che quel disturbo che senti siano i 50Hz della rete elettrica.

Per eliminarlo devi postare il circuito usato e tutti i componenti, compresi gli alimentatori o le pile

Se alimenta a pile dovrebbe essere immune dai 50Hz. Comunque in rete esistono maree di soluzioni "filtro 50Hz", però ha ragione Cyb, vediamo prima lo schema dei collegamenti e cerchiamo di capire se ci sono punti deboli

Allora, per maggiore completezza riporto uno stamp del mio pseudo oscilloscopio dove si nota l'interferenza:

Uploaded with ImageShack.us

Se invece di usare l'oscilloscopio utilizzo l'ingresso analogico dell'arduino ottengo in 5 secondi di campionamento un range max/min che va da circa 560 a 460.

Lo schema è quello utilizzato nel link che ho postato nel primo post. Lo riporto di seguito per comodità:

In definitiva per l'alimentazione uso due batterie da 9V collegate all'opamp mentre l'arduino e' alimentato dal pc. Inoltre se uso lo pseudo oscilloscopio questo e' alimentato sempre da pc. Il pc che utilizzo è un portatile collegato alla rete elettrica.

Il circuito al momento è montato su due bredboard, una per la parte dell'amplificazione, una seconda parte dove ci sono tutti i componenti per gestire l'offset. Su quest'ultima prelevo il segnale che va o sull'Arduino o all'oscilloscopio.

Grazie!!!

Cosa succede se diminuisci le due R da 100k portandole a 22k o anche a 10k?
Metti un C da 100nF tra il pin ARef e GND, è importante per dare maggiore stabilità alla lettura dell'ADC.
Se il tuo segnale non super i 3V imposta l'analogReference su EXTERNAL e collega i 3,3V di Arduino all'ARef (ma il C deve starci sempre!)
La breadboard ovviamente è un'antenna per ogni disturbo RF, se realizzi tutto su un PCB con un bel piano di massa, al 99% scompare ogni disturbo, specialmente se andrai ad alimentare tutto a batterie; a quel punto però dovrai trattare l'analogico seguendo i consigli che ho messo sull'altro Topic (letture analogiche o cose del genere).
Un esperimento che puoi fare è realizzare un filtro passa-alto impostato su 80-100Hz, da mettere tra l'uscita dell'op-amp e l'ingresso dell'ADC.

Grazie Michele, procederò per gradi, la PCB la farò all'ultimo ed ovviamente verrete chiamati in causa prima dell'effettiva realizzazione :smiley: Il PCB finale sarà alimentato esclusivamente a batterie (cercherò il topic di cui mi hai parlato).

Stasera farò gli esperimenti del condensatore e del cambio di resistenza. A tal proposito, riguardo la resistenza, cambiando questo valore non cambia anche il fattore di amplificazione? Considera che lavoro su valori che raggiungono i +-25mv e riesco ad effettuare letture apprezzabili portando quasi a zero la resistenza variabile. In ogni caso proverò.

Per quanto riguarda i 3.3V devo verificare, magari anche abbassando lo zero del segnale che attualmente è settato a 2.5V, però dovrei modificare anche l'amplificazione in modo che non vengano superati certi valori. Ovviamente posso farlo solo se riesco a diminuire le interferenze, altrimenti non riuscirei più a distinguere il segnale da queste.

Per quanto riguarda il filtro passa-alto non saprei come realizzarlo, magari ne riparleremo se i tentativi di cui sopra non risolveranno il problema

Grazie!

Le due resistenze a cui mi riferisco sono nquelle del partitore di tensione su A0, ovviamente non parlavo di quella di controreazione dell'op-amp, che non va toccata.
La tensione dei 2,5V credo sia fissata dalle due R di partitore, penso sia sufficiente diminuire la pull-down per diminuire l'offset, ma prima portale a 10k cadauna, quei valori sono assolutamente eccessivi per l'ADC di Arduino.
Il filtro è una banale coppia RC opportunamente calcolata, in MegaTopic c'è il mio Topic Link Utili, c'è qualcosa anche sui calcoli RC, ma devi cercare la soluzione "passa-alto" in modo che vengano bloccate tutte le frequenze al di sotto di 80-100Hz.
A mia memoria una prova che puoi fare "al volo" è quella di sostituire il C da 10µF con un C da 100-220nF, dovrebbe agire proprio sulle frequenze basse.
Poi andando vedendo....

Aggiungo che non si possono lasciare gli ingressi del secondo operazionale sconnessi: meglio portare a massa l'ingresso non invertente e cortocircuitare quello invertente con l'uscita.

cyberhs:
Aggiungo che non si possono lasciare gli ingressi del secondo operazionale sconnessi: meglio portare a massa l'ingresso non invertente e cortocircuitare quello invertente con l'uscita.

Quindi dovrei collegare l'ingresso non invertente a GND, mentre per l'altro? Non ho ben capito :smiley:

più chiaro di così non so come potrebbe scriverlo, prova a rileggere con un minimo di calma :wink:

pardon :grin: :grin: :grin:

Ho provato con due R da 10k, non cambia nulla. In ogni caso lascio queste qua!

Metti un C da 100nF tra il pin ARef e GND, è importante per dare maggiore stabilità alla lettura dell'ADC.

ho messo un condensatore con codice 104 e non cambia nulla. Lascio anche questo :smiley:

Se il tuo segnale non super i 3V imposta l'analogReference su EXTERNAL e collega i 3,3V di Arduino all'ARef (ma il C deve starci sempre!)

Allora, le prove che faccio al momento non prevedono l'utilizzo di Arduino, o meglio, da lui al momento prendo solo la 5V. Il segnale lo controllo con lo pseudo-oscilloscopio. In ogni caso ho cambiato la tensione di riferimento ed al posto della 5V ho collegato il tutto alla 3.3V, ottengo che lo zero del segnale passa da 2.5V a 1.6V. Devo tenermi un pò più stretto con l'amplificazione, ma posso lavorare a questo voltaggio dato che può portare solo benefici, anche se al momento non cambia proprio nulla.

A mia memoria una prova che puoi fare "al volo" è quella di sostituire il C da 10µF con un C da 100-220nF, dovrebbe agire proprio sulle frequenze basse.

Con il condensatore da 10µF l'errore di fondo oscilla tra 1.8V e 1.4V, ovvero +-0.2V rispetto al centro.
Con un condensatore da 100nf (cod. 104), l'errore oscilla tra 1.78V e 1.41V, un leggero miglioramento. Lascio anche questo.

Aggiungo che non si possono lasciare gli ingressi del secondo operazionale sconnessi: meglio portare a massa l'ingresso non invertente e cortocircuitare quello invertente con l'uscita.

Non cambia nulla

Un esperimento che puoi fare è realizzare un filtro passa-alto impostato su 80-100Hz, da mettere tra l'uscita dell'op-amp e l'ingresso dell'ADC.

Nel tuo Megatopic c'è il link ad un sito che calcola i filtri LC e non RC... In ogni caso qui (Yahoo | Mail, Weather, Search, Politics, News, Finance, Sports & Videos) dicono che per un filtro da 100Hz basta usare un condensatore da 200nF ed una resistenza da 8kOhm. Poichè giù uso il condensatore da 220, ho semplicemente inserito una resistenza da 8.2kOhm. Non noto risultati...

Dopo tutte queste prove non sono riuscito a trovare una soluzione soddisfacente. Grazie di tutto in ogni caso!!

Oh cavolo... Posso farvi ridere?? :grin:

Ho messo un foglio di alluminio sotto tutte le bredboard e l'ho collegato a GND...

Uploaded with ImageShack.us

In fondo è stata la prima cosa che mi avete consigliato di fare, portare tutto su PCB, fare un buon piano di massa... Seppure in maniera molto rozza ho applicato questo consiglio!!!

Io avevo detto che trasferendo sul PCB con un buon piano di massa avresti risolto tutto probabilmente, questa è la prova provata!
Gli altri accorgimenti adottali tutti, non puoi pensare di vedere ogni possibile beneficio ad occhio nudo, ma nel loro insieme ti miglioreranno il risultato. Riguardo la questione 1,65V, li ottieni perché applichi i 3,3V ad un partitore al 50%. Variando opportunamente la R di pull-down puoi arrivare al valore di partenza che preferisci (1,65 o 1,5 o 1,3, ecc) avendo come valore finale sempre 3,3V, conviene insistere.....

Certo, son convinto di quello che dici, magari quegli accorgimenti mi saranno utili soprattutto quando lavorerò con arduino per gestire il segnale!

A me sta bene che lo zero del segnale sia alla metà perfetta :wink:

In ogni caso mi consigli di lavorare con i 3.3V, giusto? Mi confermi che con il lettore analogico ottengo risultati migliori? I 5V fanno comodo, ma se ci perdo in precisione posso anche sacrificarli.

Grazie, Gianfranco

Più è bassa la tensione di riferimento e migliore è la risoluzione dell'ADC, ma tutto questo resta valido a patto che l'intero range di valori non superi quello di riferimento, altrimenti la parte "alta" va in over-range e viene tagliata, cioè da un certo valore in poi avrai sempre 1023 e perderai il controllo. La mia idea di variare il partitore è poer aumentare tale range, se non ti bastano 1,65V non puoi partire da metà della tensione di riferimento, ma devi partire da una tensione inferiore, p.es. 1,5 - 1,4 o queanto ti serve e per far ciò puoi agire solo sul partitore

Considerando che posso avere sia valori positivi che negativi rispetto allo zero del segnale, lo stare a metà per me è l'ideale. Se mai dovessi andare al di la della tensione massima (o minima), dovrei agire sul fattore di amplificazione che posso regolare per mezzo della resistenza variabile!

ok, allora passa a 3,3V a sei a posto. Una sola cosa: i vari consigli NON sono per ARDUINO ma sono per lo stand-alone, quindi sono specifici per ciò che andrai a fare a livello PCB. Arduno nasce così ed alcune cose non potrai mai farle se non "manipolandolo seriamente": il disaccoppiamento di Avcc, l'uso di un quarzo, ecc.

Certo, al momento con l'Arduino sto solo mettendo a punto il prototipo. Come già detto vi disturberò nuovamente per avere consigli sulla realizzazione del PCB!!!