obiettivo¶
questo coso conta le frequenze.
È utile per queste cose:
- debug generico
- debug di ricetrasmettitori, per controllare la frequenza dei segnali in gioco
- operare ricetrasmettitori, per sapere su che frequenza siamo sintonizzati
Obiettivi:
- alta impedenza, in modo da non disturbare il circuito di provenienza.
- dovrebbe accettare segnali sia molto piccoli sia molto grandi (mettere dei numeri qui!)
- arrivare fino a 30MHz
- pratico e compatto
Firmware¶
Partiamo da: github.com/dword1511/stm32-freqmeter
Ma poi facciamo alcune modifiche in github.com/boyska/stm32-freqmeter (vedi l’allegato main.bin
se vuoi il precompilato): timer chaining e altre piccolezze per l’accuratezza
Attacando A8 ad A0, vediamo una precisione migliore di 1ppm, al netto dell’imprecisione del quarzo dell’stm32
Vede bene segnali fino a 36MHz
Sarebbe da aggiungere un’interfaccia con display LCD e tasti. Attualmente la seriale è un’interfaccia “interattiva”. Quando avremo un LCD, la seriale potrà essere usata come interfaccia batch.
Circuito di input¶
autoprogettato¶
Il circuito di input fa un buffer in common emitter; poi amplifica in common collector; quindi fa clipping del segnale con un diodo verso +3V. L’idea è che amplifichiamo di molto (TODO: quale è il rapporto attuale?) il segnale, in modo che anche segnali sotto soglia la superino; però poi dobbiamo clippare per non danneggiare il circuito. Attualmente come diodo uso un normalissimo 1n4148. Sarebbe meglio utilizzare uno schottky, che ha meno caduta ed è più veloce.
Funziona? boh apparentemente sì, però non vorrei che il buffer caricasse troppo. Sarebbe quindi da riprendere il circuito di input da quello di quest altro frequency counter che ho trovato in giro: www.4sqrp.com/kits/freq-mite/freq-mite_schematic.jpg
Il circuito fatto e’ efficace solo fino a tipo 5MHz (massimo proprio), poi non passa piu’ nulla. Negli allegati c’e’ uno zip di un progetto kicad per rifarlo, ma ancora non e’ correto
insomma l’autoprogettato non va un granché
lt1016¶
con un lt1016 sembra andare meglio! anche se in teoria lo puoi alimentare con la sola 5V, funziona molto meglio se gli dai +5V e -5V. Così facendo ti dà un bell’onda quadra in output.
In particolare si vedeva che funzionava bene ricevendo in input sinusoidi di ampiezza 100mV.
Salendo di frequenza le cose iniziavano a sporcarsi, ma è difficile capire quanto sia colpa della breadboard, quindi la prossima volta proviamo a fare la stessa prova con un circuito saldato su millefori. Comunque per quel che si intravedeva, sembra cavarsela fino almeno a 5MHz. Da datasheet dovrebbe arrivare anche a 50MHz… vedremo!
non l’abbiamo mai testato con anche il microcontrollore attaccato, anche perché la sua uscita è a quasi 5V, che sono troppi per i nostri pin. serve quindi un modo per ridurre il voltaggio che sia però molto rapido.
dati tecnici stm32¶
Per un stm32 un segnale è alto se supera gli 1.8V, mentre è basso se sta sotto gli 1.2V. È indefinito altrimenti. vedi electronics.stackexchange.com/a/394850 + www.st.com/resource/en/datasheet/stm32f103vc.pdf sezione 5.3.14 e fai i conti per Vil e Vih ponendo Vdd=3.3V.
Impacchettare¶
Scatola¶
Nella scatola ci deve essere spazio per il circuito stesso, uno schermo, due (o più?) pulsanti.
Serviranno inoltre questi connettori:
- DC in
- BNC segnale di input
- BNC segnale di output (per la generazione di segnali reference)
- qualcosa per l’interazione via seriale. Possibilità:
- usare un connettore telefonico in cui far passare tx,rx e gnd
- stessa cosa ma con un db9
- mettere un usb-ttl interno e quindi esporre direttamente il connettore usb
Saldare¶
per il microcontrollore una millefori è sicuramente la cosa più comoda. Per il circuito di input si potrebbe forse preferire un circuito manhattan per ridurre il rumore