Taula de continguts:

Oscil·loscopi de doble traça: 11 passos (amb imatges)
Oscil·loscopi de doble traça: 11 passos (amb imatges)

Vídeo: Oscil·loscopi de doble traça: 11 passos (amb imatges)

Vídeo: Oscil·loscopi de doble traça: 11 passos (amb imatges)
Vídeo: 📈 Technical Analysis of Stock Trends by Edwards, Magee and Bassetti AudioBook Full Part 2 of 2 2024, Juliol
Anonim
Oscil·loscopi de doble traça
Oscil·loscopi de doble traça

Quan vaig construir el meu mini oscil·loscopi anterior, volia veure fins a quin punt podia fer que el meu microcontrolador ARM més petit fos un STM32F030 (F030), i va fer un bon treball.

En un dels comentaris es va suggerir que una "píndola blava" amb un STM32F103 (F103) podria ser millor, més petita que la placa de desenvolupament amb el F030 i possiblement fins i tot més barata. Però per al mini oscil·loscopi no vaig fer servir la placa de desenvolupament, sinó el F030 en una placa SMD-DIP encara més petita, de manera que una píndola blava segurament no seria més petita i dubto que també seria més barata.

El codi ja està disponible a Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

Subministraments

Llista de peces: - caixa de plàstic - perfboard (tauler prototipus de doble cara de 8x12cm) - Blue Pill - Pantalla TFT ST7735s - bateria de ions de liti - Regulador de baixa caiguda de 3,3 V HT7333 - MCP6L92 dual opamp - Tauler TSSOP8 a DIP8 - Cristall de 12 MHz (no necessari)) - codificador rotatiu més comandament (2x) - interruptor de potència - terminals de plàtan (4x) - placa de carregador de ions de liti - diversos resistors i condensadors - separadors de niló, femelles i cargols

Eines:

- estació de soldadura - soldadura de 0,7 mm - filferro - tallador lateral - ulleres i lupa - trepant - multímetre - oscil·loscopi - STLink-V2

Programari:

- STM32IDE - STM32CubeMX - Utilitat STLink - Biblioteca LowLayer - biblioteca adaptada per a ST7735s - Bloc de notes ++ - Kicad

Pas 1: entrellaça o S mode simultani

Mode intercalat o Simultània
Mode intercalat o Simultània
Mode intercalat o Simultània
Mode intercalat o Simultània

Pastilla blava

Però la idea era allà i sabia que el F103 té dos ADC. Què passa si fes servir aquests dos ADC junts en mode "intercalat", cosa que he fet abans amb el STM32F407 (F407). La velocitat de mostreig es duplicaria. Això, combina això amb un microcontrolador més ràpid i donaria lloc a un gran successor del mini oscil·loscopi.

Mode intercalat Curiosament, els ADC del F103 estan menys avançats que el del F030 (i el F407), no podeu triar la resolució. El més important és que tampoc no podeu canviar el temps entre els dos ADC. Ara, quan utilitzeu el mode intercalat, normalment voleu que el mostreig sigui el més ràpid possible amb el menor temps entre mostres, però amb un oscil·loscopi és necessari canviar el temps. Potser encara es pot fer, no sóc un dissenyador d'oscil·loscopis professional, però vaig deixar de banda el pla d'utilitzar el mode intercalat.

Mode simultani

Però, tenint dos ADC proporciona moltes més opcions, els dos ADC també es poden configurar en mode "simultani-regular". Què tal un oscil·loscopi de doble traça?

Després d'haver decidit intentar fer un oscil·loscopi de doble traça, també volia tenir una sensibilitat d'entrada variable, una opció que no tenia al mini oscil·loscopi. Això significa un atenuador (i un amplificador) a les entrades. I potser volia encara més? Així que vaig fer una petita llista de "agradables".

LLISTA DE DESITJOS

dos canals

sensibilitat variable als dos canals

activant en ambdós canals

nivell d'activació variable a tots dos canals

desplaçament variable

bateria única

cabre a la mateixa caixa que el mini-oscil·loscopi

Pas 2: prototipatge

Prototipatge
Prototipatge
Prototipatge
Prototipatge

Com de costum, vaig començar aquests projectes en una taula de treball. (Veure imatge) I abans de soldar tot el perfboard intento esbrinar si i com encaixarà a la caixa del projecte escollida. Encaixa, però només és just. Algunes parts estan amagades sota la pantalla, altres sota la píndola blava. I, de nou, igual que per a la majoria dels meus projectes, aquest és un projecte únic i no en dissenyaré cap.

Pas 3: Atenuadors

Atenuadors
Atenuadors

En els oscil·loscopis normals, els atenuadors d’entrada són circuits que canvien l’atenuació i l’amplificació mitjançant la commutació de resistències d’entrada i sortida amb relés de senyal petits. Tot i que tinc alguns d’aquests relés, sé que no canviaran a menys de 4 volts, cosa que significa que només funcionaran amb una bateria de ions de liti (4.2V) completament carregada. Per tant, necessitava una altra manera de canviar aquestes resistències. Per descomptat, només podia instal·lar interruptors mecànics, però segur que això ja no encaixaria en la caixa del projecte, potser podria tornar a provar un potenciòmetre digital millor (el que tinc és massa sorollós).

Llavors vaig pensar en "commutadors analògics", amb els quals puc fer jo mateix un potenciòmetre digital. A la meva col·lecció de peces vaig trobar el CD4066 amb quatre interruptors analògics. La idea és fer que la resistència de retroalimentació d’una opamp sigui variable canviant les resistències d’entrada i sortida paral·leles a la resistència de retroalimentació.

Funciona molt bé, però amb només 4 commutadors al 4066 i amb 2 canals no era possible fer més de tres nivells de sensibilitat. Vaig triar 500 mV, 1 V i 2 V per divisió, ja que aquests són els nivells de voltatge que més faig servir. La pantalla es divideix en 6 divisions, de manera que es fan els intervals -1,5V a + 1,5V, -3V a + 3V i -6V a 6V.

Amb el "terreny virtual" podeu moure aquests intervals cap amunt i cap avall de manera que fins i tot 0v a + 12V sigui possible.

Pas 4: terra virtual

Terra virtual
Terra virtual
Terra virtual
Terra virtual

Com que l’oscil·loscopi utilitza un sol carril de potència (3,3 V), els opamps necessiten un nivell de terra virtual o no funcionaran. Aquest nivell de terra virtual es realitza amb PWM en un canal de sortida de TIM4, el seu cicle de treball canvia d’uns pocs per cent a gairebé un cent per cent. Un filtre de pas baix amb una resistència de 1 k i un condensador de 10 uF el transforma en una tensió de (gairebé) 0V a (gairebé) 3,3V. La freqüència de l’ona quadrada és poc inferior a 100 kHz, de manera que el simple filtre de pas baix és prou bo.

Bastant tard a la construcció d’aquest oscil·loscopi em vaig adonar que no es poden tenir dues compensacions separades per als canals. Això es deu al fet que amb una única font d'alimentació, el nivell d'entrada-terra ha de ser separat del nivell real del sòl dels opamps. Per tant, els dos canals es mouen de la mateixa manera que canvieu la configuració de GND.

Pas 5: codificadors rotatius i depuració

Codificadors rotatius i depuració
Codificadors rotatius i depuració
Codificadors rotatius i depuració
Codificadors rotatius i depuració

Al mini oscil·loscopi he utilitzat només un codificador rotatiu per a totes les funcions. Això faria molt difícil l’ús d’un oscil·loscopi dual, de manera que aquí en necessito dos. Un codificador per als atenuadors i el nivell de terra virtual i l'altre codificador per a la base de temps i el disparador. Lamentablement, igual que en el meu altre projecte, aquests codificadors rotatius són molt "sorollosos". Són tan dolents que simplement no funcionarien amb temporitzadors en "mode codificador", la forma estàndard de llegir-los. Vaig haver de fer un mecanisme de desacord amb el temporitzador TIM2, comprovant els codificadors cada 100us. Aquest temporitzador al seu torn s'inicia (només) quan hi ha alguna activitat als codificadors, això es comprova amb la funcionalitat EXTI als ports d'entrada. Ara els codificadors funcionen bé.

I, com podeu veure, tenir una pantalla també pot ser molt útil per mostrar informació de depuració.

Pas 6: visualització i base de temps

Visualització i base de temps
Visualització i base de temps

La pantalla té una resolució de 160 x 128 píxels, de manera que hi ha 160 mostres necessàries per a una pantalla completa, he aconseguit accelerar els ADC per fer 1,6 milions de mostres per segon i això, amb el microcontrolador molt overclocked (més sobre això més endavant), dóna una base de temps mínima de 20us per divisió (100us per pantalla). Així, una forma d'ona de 10 kHz omplirà tota la pantalla.

Això és només el doble de ràpid que el mini oscil·loscopi que feia abans. Bé, ara ho fa amb dos canals:-).

Com s'ha dit, la pantalla té una amplada de 160 píxels, de manera que només es necessiten 160 valors per pantalla. Però tots els buffers contenen 320 mostres. Per tant, el DMA emmagatzema 320 valors abans que desencadeni una interrupció completa de transmissió (TC). Això es deu al fet que l’activació es fa al programari. El mostreig s’inicia en un moment aleatori, de manera que és molt poc probable que el primer valor del buffer sigui el lloc on hauria d’estar el punt d’activació.

Per tant, el punt de desencadenament es troba llegint el traçador_x_buffer, si el valor es troba en el valor de desencadenament desitjat i si el valor anterior està just a sota, es troba el punt de desencadenament. Funciona força bé, però necessiteu una memòria intermèdia més gran que la mida real de la pantalla.

Aquesta és també la raó per la qual la freqüència d’actualització de la configuració de la base de temps inferior és més lenta del que podríeu esperar. Quan utilitzeu el paràmetre de 200 ms / div, una pantalla plena de dades és d’1 segon, però com que es fa el doble de conversions, això trigarà 2 segons. A la configuració de la base de temps més ràpida, no ho notareu tant.

TIM3 s’utilitza per generar la base de temps. Desencadena els ADC amb la velocitat que requereix la configuració de la base de temps seleccionada. El seu rellotge de TIM3 és de 120 MHz (vegeu OVERCLOCKING), el nombre màxim al qual compta (ARR) determina com desborda d’altres o, en llenguatge ST, s’actualitza. Mitjançant TRGO, aquests impulsos d’actualització activen els ADC. La freqüència més baixa que genera és de 160 Hz, la màxima és de 1,6 MHz.

Pas 7: ADC i DMA

ADC i DMA
ADC i DMA

Els dos ADC converteixen el voltatge de les seves entrades al mateix temps, emmagatzemen aquests dos valors de 12 bits en una única variable de 32 bits. Per tant, el DMA només té una variable per conversió (doble) per transferir.

Per utilitzar aquests valors, cal dividir-los en els dos valors perquè es puguin utilitzar per mostrar els dos rastres. Com es va dir, els ADC del F103 no es poden configurar en altres resolucions diferents de 12 bits. Sempre estan en mode de 12 bits, de manera que les conversions sempre tenen el mateix nombre de pulsacions de rellotge. Tot i això, amb l'overclocking dels ADC, es poden fer 1,6 MSamples per segon (vegeu Extra: Overclocking).

La referència dels ADC és Vdd, el carril de 3,3 V. Per convertir-ho en valors més convenients (per divisió) he calculat els valors dels atenuadors, perquè no tinc els valors de resistència exactes que surten d'aquests càlculs, es fan algunes correccions al programari.

En aquest projecte faig servir DMA en "mode normal". En aquest mode, el DMA deixa de transferir dades (des de ADC a memòria) quan es transfereixen totes les paraules (o mitges paraules o bytes). En l'altre mode possible, "mode circular", el DMA es restableix i continua transferint dades sense interrupcions. Això no va funcionar amb l'F103, és tan ràpid que sobreescriu les dades de l'adc_buffer abans que la resta del programa pogués llegir-les. Ara el procés és el següent:

- Configureu DMA al nombre de dades que voleu transferir i activeu DMA

- Inicieu el desencadenament dels ADC, que sol·licitaran transferències DMA després de cada conversió (doble)

- després de transferir el nombre de conversions establert, DMA s'atura

- també deixeu immediatament de desencadenar els ADC

- Feu tota la manipulació necessària a les dades de la memòria

- mostrar traces a la pantalla

- torneu a iniciar el procés

Pas 8: interfície d'usuari

Interfície d'usuari
Interfície d'usuari

Una pantalla de 160 per 128 píxels no és molt gran i vull fer-ne servir el màxim possible. Per tant, no hi ha cap part d’ella reservada per a la configuració de corrents. A les darreres files es mostren la sensibilitat vertical, la base de temps, el nivell d’activació i el canal d’activació, però quan els senyals siguin prou grans apareixeran a la mateixa zona. L'opció activa es mostra en groc, la resta en blanc.

Pas 9: construcció i possibles millores

Edificació i possibles millores
Edificació i possibles millores
Edificació i possibles millores
Edificació i possibles millores
Edificació i possibles millores
Edificació i possibles millores
Edificació i possibles millores
Edificació i possibles millores

Estic bastant content d’aquest projecte. Funciona bé i fa la feina, però podria ser millor.

La caixa del projecte és massa petita per adaptar-se a tot amb comoditat, cosa que resulta en haver de posar components sota la píndola blava. Per fer-ho possible, la píndola blava no es podia soldar directament amb la "placa principal". I com que això ho feia massa alt, vaig haver de treure moltes parts de la píndola blava, com ara els ponts per seleccionar BOOT0 i BOOT1 (coses que mai no faig servir de cap manera) i fins i tot vaig haver de moure el cristall de dalt a baix de el pcb.

Vaig fer la vida més difícil mitjançant l'ús de connectors de plàtan en lloc de connectors BNC o SMA, cosa que significava que una gran part del perfboard era una "zona de no-go-area", per deixar-ho clar per mi mateix, hi vaig posar cinta kapton per evitar-me de posar-hi peces.

Un altre problema amb posar-ho tot en una caixa de projecte tan petita és que els circuits analògics i digitals estan molt units. Es pot veure que hi ha força soroll visible a les dues traces. Això ni tan sols el tenia a la pissarra! En moure les línies elèctriques dels circuits analògics i digitals el més allunyats possible, es va fer una petita millora, però no suficient per al meu gust. Reduir tots els valors de resistència als circuits analògics fins i tot més que jo (la resistència d’entrada és de 100kOhm en lloc d’1MOhm) no va ajudar. Sospito que l'activació de la configuració de la base de temps més ràpida (20us / div), que no és fantàstica, també millorarà amb menys soroll als senyals.

Si feu aquest disseny en un "real" pcb, amb totes les parts de smd i capes separades per analògic, digital i de potència (això és de 4 capes!) Probablement funcionarà molt bé. Serà molt més petit, no utilitzarà una píndola blava completa, sinó només la F103 i això permetrà subministrar-la amb un Vdda analògic (net) separat per als ADC.

Com a toc final, vaig decidir ruixar la caixa de negre, fa un canvi de totes les caixes de color beix que té.

Pas 10: el codi i un vídeo curt

Pas 11: EXTRA: overclocking

EXTRA: Overclocking
EXTRA: Overclocking

Tal com vaig fer amb el F03, volia veure fins a quin punt es pot overclockar un F103. Les especificacions d’aquest microcontrolador afirmen que la velocitat màxima de rellotge no ha de superar els 72 MHz (que per descomptat ja és més ràpida que la F030), però havia llegit en diversos blocs que el overclocking era fàcil, per què no?

La píndola blava inclou un cristall de 8 MHz, el PLL es multiplica amb un factor de 9 a 72 MHz. El PLL es pot augmentar fins a 16 donant un rellotge de 128 MHz. Això no va suposar cap problema per a la meva píndola blava, de fet, totes les meves pastilles blaves funcionen sense problemes a 128 MHz.

Però ara volia esbrinar quin és el límit real. Així que vaig eliminar el cristall de 8 MHz i el vaig substituir per un de 12 MHz. De nou vaig augmentar el multiplicador de PLL fins que finalment el microcontrolador es va rendir. Això era a 168 MHz! A 156 MHz encara funcionava bé. El vaig deixar funcionar a aquesta velocitat durant hores i mai el vaig veure caure. En aquest oscil·loscopi em vaig conformar amb 120 MHz, una velocitat que es pot seleccionar amb un cristall de 12 MHz i PLL el 10, així com amb un cristall de 8 MHz i el PLL el 15. (vegeu SystemClock_Config a main.c)

Ara els ADC també funcionen més ràpid, els tinc funcionant a 30 MHz (en lloc de 14), encara funcionaven bé a 60 MHz, STMicroelectronics és un bon maquinari.

STMicroelectronics posa aquests límits al full de dades per una bona raó, ja que garanteixen que el microcontrolador funcioni als 72 MHz especificats en totes les condicions.

Però com que no faig servir el microcontrolador a -40 centígrads, +85 centígrads, amb només 2,0 volts o 3,6 volts, crec que és segur fer-ne un overclock. NO ho feu quan vulgueu vendre un dispositiu amb els seus microcontroladors, mai no sabreu on s'utilitzaran.

Recomanat: