Isi kandungan:

Dwi Jejak Osiloskop: 11 Langkah (dengan Gambar)
Dwi Jejak Osiloskop: 11 Langkah (dengan Gambar)

Video: Dwi Jejak Osiloskop: 11 Langkah (dengan Gambar)

Video: Dwi Jejak Osiloskop: 11 Langkah (dengan Gambar)
Video: Alat Bantu Service Portable, Oscilloscope Mini PCBWAY.COM 2024, Julai
Anonim
Dwi Jejak Osiloskop
Dwi Jejak Osiloskop

Semasa saya membina osiloskop mini saya sebelumnya, saya ingin melihat seberapa baik saya dapat membuat mikrokontroler ARM terkecil saya sebagai prestasi STM32F030 (F030), dan ia berjaya.

Dalam salah satu komen itu disarankan bahawa "Blue Pill" dengan STM32F103 (F103) mungkin lebih baik, lebih kecil daripada papan pengembangan dengan F030 dan mungkin bahkan lebih murah. Tetapi untuk osiloskop mini saya tidak menggunakan papan pengembangan tetapi F030 pada papan SMD-DIP yang lebih kecil, jadi ada Pil Biru tentu tidak akan lebih kecil dan saya ragu bahawa ia juga akan lebih murah.

Kod kini tersedia di Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

Bekalan

Senarai bahagian: - kotak plastik - papan wangi (papan prototaip dua sisi 8x12cm) - Blue Pill - Paparan TF77 ST7735s - bateri lithium-ion - Pengatur dropout rendah HT7333 3.3V - dual opamp MCP6L92 - papan TSSOP8 hingga DIP8 - kristal 12 MHz (tidak perlu) - pengekod putar ditambah kenop (2x) - powerwitch - terminal pisang (4x) - papan pengecas ion litium - beberapa perintang dan kapasitor - spacer nilon, kacang dan skru

Alat:

- stesen solder - solder 0.7mm - beberapa wayar - pemotong sisi - gelas dan loupe - gerudi - multimeter - osiloskop - STLink-V2

Perisian:

- STM32IDE - STM32CubeMX - Utiliti STLink - Perpustakaan LowLayer - perpustakaan disesuaikan untuk ST7735s - Notepad ++ - Kicad

Langkah 1: Mod Interleave atau SIm ταυτόous

Mod Interleave atau SIm ταυτόous
Mod Interleave atau SIm ταυτόous
Mod Interleave atau SIm ταυτόous
Mod Interleave atau SIm ταυτόous

Pil Biru

Tetapi idea itu ada, dan saya tahu bahawa F103 mempunyai dua ADC! Bagaimana jika saya menggunakan kedua-dua ADC itu dalam mod "interleave", sesuatu yang telah saya lakukan sebelumnya dengan STM32F407 (F407). Kelajuan pensampelan akan berlipat ganda. Itu, gabungkan dengan mikrokontroler yang lebih pantas dan ia akan menjadi pengganti osiloskop mini.

Mod Interleave Anehnya ADC di F103 kurang maju daripada yang ada di F030 (dan F407), anda tidak dapat memilih resolusi. Yang lebih penting ialah anda juga tidak dapat mengubah masa antara dua ADC. Sekarang, apabila anda menggunakan mod interleave biasanya anda ingin pengambilan sampel secepat mungkin dengan waktu terpendek antara sampel apa pun, tetapi dengan osiloskop, tidak perlu mengubah waktunya. Mungkin masih boleh dilakukan, saya bukan pereka osiloskop profesional, tetapi saya menolak rancangan untuk menggunakan mod interleave.

Mod serentak

Tetapi, mempunyai dua ADC memberikan lebih banyak pilihan, kedua ADC juga boleh disetel ke mod "biasa-serentak". Bagaimana dengan osiloskop jejak dua?

Setelah memutuskan untuk membuat osiloskop jejak dua, saya juga ingin mempunyai kepekaan input yang berubah-ubah, pilihan yang tidak saya miliki pada osiloskop mini. Itu bermaksud atenuator (dan penguat) pada input. Dan mungkin saya mahukan lebih banyak lagi? Oleh itu, saya membuat senarai kecil "nice-to-have".

SENARAI INGIN

dua saluran

kepekaan berubah pada kedua-dua saluran

mencetuskan kedua-dua saluran

tahap pencetus berubah pada kedua-dua saluran

ofset pemboleh ubah

kuasa bateri tunggal

muat dalam kotak yang sama dengan osiloskop mini

Langkah 2: Prototaip

Prototaip
Prototaip
Prototaip
Prototaip

Seperti biasa saya memulakan projek ini di papan roti. (Lihat gambar) Dan sebelum menyolder semua yang ada di papan wangi, saya cuba mencari tahu apakah dan bagaimana ia sesuai di kotak projek yang dipilih. Ia sesuai, tetapi hanya. Beberapa bahagian tersembunyi di bawah skrin, yang lain di bawah Blue Pill. Dan sekali lagi, seperti kebanyakan projek saya, ini adalah projek sekali sahaja dan saya tidak akan merancang PCB untuknya.

Langkah 3: Attenuator

Attenuator
Attenuator

Dalam osiloskop biasa attenuator input adalah litar yang mengubah pelemahan dan penguatan dengan menukar masuk dan keluar perintang dengan relay isyarat kecil. Walaupun saya mempunyai sebilangan geganti tersebut, saya tahu bahawa ia tidak akan beralih pada suhu kurang dari 4 Volt, ini bermaksud bahawa mereka hanya akan berfungsi dengan bateri Lithium Ion yang penuh (4.2V). Oleh itu, saya memerlukan kaedah lain untuk menukar perintang tersebut. Sudah tentu saya hanya boleh memasang suis mekanikal, tetapi itu pasti tidak lagi sesuai dengan kotak projek yang ada dalam fikiran, mungkin saya boleh mencuba potensiometer digital yang lebih baik lagi (yang saya miliki terlalu bising).

Kemudian saya memikirkan "suis analog", dengan mereka boleh membuat potensiometer digital sendiri. Dalam koleksi bahagian saya, saya menemui CD4066 dengan empat suis analog. Ideanya adalah untuk membuat perintang maklum balas pemboleh ubah opamp dengan menukar perintang masuk dan keluar selari dengan perintang maklum balas.

Ia berfungsi dengan sangat baik, tetapi hanya mempunyai 4 suis pada 4066 dan mempunyai 2 saluran, tidak mungkin membuat lebih dari tiga tahap kepekaan. Saya memilih 500mV, 1V dan 2V setiap bahagian kerana ini adalah tahap voltan yang paling banyak saya gunakan. Skrin dibahagikan kepada 6 bahagian, sehingga berkisar antara -1.5V hingga + 1.5V, -3V hingga + 3V dan -6V hingga 6V.

Dengan "landasan maya" anda boleh menggerakkan julat ini ke atas dan ke bawah sehingga mungkin 0v hingga + 12V mungkin.

Langkah 4: Tanah Maya

Tanah Maya
Tanah Maya
Tanah Maya
Tanah Maya

Kerana osiloskop menggunakan rel kuasa tunggal (3.3V), opamps memerlukan aras tanah maya atau mereka tidak akan berfungsi. Tingkat tanah maya ini dibuat dengan PWM pada satu saluran output TIM4, kitaran tugasnya berubah dari hanya beberapa persen menjadi hampir seratus persen. Penapis lulus rendah dengan perintang 1k dan kapasitor 10uF mengubahnya menjadi voltan (hampir) 0V hingga (hampir) 3.3V. Kekerapan gelombang kuadrat hanya di bawah 100kHz, jadi penapis lulus rendah sederhana cukup baik.

Agak lewat dalam pembinaan osiloskop ini, saya menyedari bahawa anda tidak boleh mempunyai dua ofset yang terpisah untuk saluran. Ini kerana kenyataan bahawa dengan bekalan kuasa tunggal, tahap input-ground harus terpisah dari aras tanah sebenar opamps. Oleh itu, kedua-dua saluran bergerak dengan cara yang sama seperti anda mengubah tetapan GND.

Langkah 5: Pengekod Rotary dan Penyahpepijatan

Pengekod dan Penyahpepijatan Putar
Pengekod dan Penyahpepijatan Putar
Pengekod dan Penyahpepijatan Putar
Pengekod dan Penyahpepijatan Putar

Pada osiloskop mini saya menggunakan hanya satu pengekod putar untuk semua fungsi. Itu akan menjadikan osiloskop dwi sangat sukar digunakan, jadi di sini saya memerlukan dua. Satu pengekod untuk atenuator dan permukaan tanah maya dan pengekod lain untuk pangkalan masa dan pencetus. Malangnya, seperti dalam projek saya yang lain, pengekod putar ini sangat "bising". Mereka sangat teruk sehingga mereka tidak dapat bekerja dengan pemasa dalam "encoder-mode", cara standard membacanya. Saya terpaksa membuat mekanisme penyahtinjaan dengan timer TIM2, memeriksa pengekod setiap 100us. Pemasa ini seterusnya dimulakan (hanya) apabila terdapat beberapa aktiviti pada pengekod, ini diperiksa dengan fungsi EXTI pada port input. Kini pengekod berfungsi dengan baik.

Dan seperti yang anda lihat, mempunyai paparan juga sangat berguna untuk memaparkan maklumat penyahpepijatan.

Langkah 6: Paparan dan Pangkalan Masa

Paparan dan Pangkalan Masa
Paparan dan Pangkalan Masa

Paparan mempunyai resolusi 160 x 128 piksel sehingga ada 160 sampel yang diperlukan untuk satu layar, saya berjaya mempercepat ADC untuk melakukan 1.6 juta sampel sesaat dan itu, dengan mikrokontroler yang terlalu banyak (lebih banyak lagi kemudian), memberikan pangkalan masa minimum 20us setiap bahagian (100us setiap skrin). Oleh itu, bentuk gelombang 10kHz akan memenuhi keseluruhan skrin.

Itu hanya dua kali lebih cepat daripada osiloskop mini yang saya buat sebelumnya. Oh, sekarang ada dua saluran:-).

Seperti yang dikatakan, layar berukuran 160 piksel sehingga hanya 160 nilai yang diperlukan per layar. Tetapi semua penyangga sebenarnya mengandungi 320 sampel. Oleh itu, DMA menyimpan 320 nilai sebelum mencetuskan gangguan sepenuhnya (TC) transmisi. Ini kerana pemicu dilakukan dalam perisian. Pensampelan bermula pada saat yang rawak, jadi sangat tidak mungkin nilai pertama dalam penyangga adalah tempat di mana titik pencetus seharusnya.

Oleh itu titik pencetus dijumpai dengan membaca trace_x_buffer, jika nilainya berada pada nilai pencetus yang dikehendaki en jika nilai sebelumnya tepat di bawahnya, titik pemicu dijumpai. Ini berfungsi dengan baik, tetapi anda memerlukan penyangga yang lebih besar daripada ukuran paparan sebenarnya.

Ini juga adalah alasan bahawa kadar penyegaran pada tetapan pangkalan masa yang lebih rendah lebih perlahan daripada yang anda jangkakan. Apabila anda menggunakan tetapan 200ms / div, satu skrin yang penuh dengan data adalah 1 saat, tetapi kerana jumlah penukaran dua kali ganda selesai, itu memerlukan 2 saat. Pada tetapan pangkalan masa yang lebih pantas anda tidak akan menyedarinya.

TIM3 digunakan untuk menghasilkan pangkalan masa. Ini memicu ADC dengan kelajuan seperti yang dikehendaki oleh tetapan pangkalan masa yang dipilih. Jam TIM3 adalah 120MHz (lihat OVERCLOCKING), bilangan maksimum yang dikira (ARR) menentukan bagaimana ia melimpah atau, dalam bahasa ST ia dikemas kini. Melalui TRGO pulsa kemas kini ini mencetuskan ADC. Frekuensi terendah yang dihasilkannya ialah 160 Hz, yang tertinggi ialah 1.6MHz.

Langkah 7: ADC dan DMA

ADC dan DMA
ADC dan DMA

Kedua ADC menukar voltan pada input mereka pada masa yang sama, mereka menyimpan dua nilai 12 bit tersebut dalam satu pemboleh ubah 32bit. Jadi DMA hanya mempunyai satu pemboleh ubah setiap (dua kali) penukaran untuk dipindahkan.

Oleh itu, untuk menggunakan nilai-nilai ini adalah perlu untuk membaginya menjadi dua nilai sehingga dapat digunakan untuk menampilkan dua jejak tersebut. Seperti yang dikatakan, ADC dalam F103 tidak dapat ditetapkan ke resolusi lain daripada 12 bit. Mereka selalu berada dalam mod 12 bit dan penukaran selalu menggunakan jumlah denyutan jam yang sama. Namun, dengan overclocking ADC, 1.6 MS sampel sesaat dapat dilakukan (lihat Extra: Overclocking).

Rujukan ADC adalah Vdd, rel 3.3V. Untuk menukarnya menjadi nilai yang lebih mudah (per pembahagian) saya telah mengira nilai atenuator, kerana saya tidak mempunyai nilai perintang tepat yang keluar dari pengiraan tersebut beberapa pembetulan dilakukan dalam perisian.

Dalam projek ini saya menggunakan DMA dalam "mod biasa". Dalam mod ini DMA berhenti memindahkan data (dari de ADC ke memori) apabila jumlah perkataan (atau setengah kata atau bait) semuanya dipindahkan. Dalam mod lain yang mungkin, "mod bulat" DMA mengatur semula dirinya dan terus memindahkan data tanpa terganggu. Itu tidak berfungsi dengan F103, sangat cepat sehingga menimpa data di adc_buffer sebelum program yang lain dapat membacanya. Jadi sekarang prosesnya adalah seperti berikut:

- tetapkan DMA ke jumlah data yang akan dipindahkan dan aktifkan DMA

- mulakan pencetus ADC, ini akan meminta pemindahan DMA setelah setiap (dua kali) penukaran

- setelah jumlah penukaran yang ditetapkan dipindahkan, DMA berhenti

- serta-merta juga berhenti mencetuskan ADC

- melakukan semua manipulasi yang diperlukan pada data dalam memori

- menunjukkan jejak di skrin

- mulakan semula prosesnya

Langkah 8: Antara Muka Pengguna

Antaramuka pengguna
Antaramuka pengguna

Skrin 160 x 128 piksel tidak terlalu besar dan saya mahu menggunakannya sebanyak mungkin. Oleh itu, tidak ada bahagian yang dikhaskan untuk tetapan arus. Dalam beberapa baris terakhir kepekaan menegak, pangkalan masa, tahap pemicu dan saluran pencetus ditampilkan, tetapi apabila isyarat cukup besar, ia akan muncul di kawasan yang sama. Pilihan yang aktif ditunjukkan dengan warna kuning, selebihnya ditunjukkan dengan warna putih.

Langkah 9: Pembinaan dan Kemungkinan Penambahbaikan

Pembinaan dan Kemungkinan Penambahbaikan
Pembinaan dan Kemungkinan Penambahbaikan
Pembinaan dan Kemungkinan Penambahbaikan
Pembinaan dan Kemungkinan Penambahbaikan
Pembinaan dan Kemungkinan Penambahbaikan
Pembinaan dan Kemungkinan Penambahbaikan
Pembinaan dan Kemungkinan Penambahbaikan
Pembinaan dan Kemungkinan Penambahbaikan

Saya cukup gembira dengan projek ini. Ia berfungsi dengan baik dan menjalankan tugas, tetapi mungkin lebih baik.

Kotak projek terlalu kecil untuk memuatkan semuanya dengan selesa, ini mengakibatkan meletakkan komponen di bawah Pil Biru. Untuk memungkinkan, Pil Biru tidak dapat disolder secara langsung ke "papan utama". Dan kerana ini menjadikannya terlalu tinggi, saya terpaksa mengeluarkan banyak bahagian dari Blue Pill, seperti jumper untuk memilih BOOT0 dan BOOT1 (perkara yang tidak pernah saya gunakan) dan saya juga terpaksa menggerakkan kristal dari atas ke bawah pcb.

Saya menjadikan hidup lebih sukar dengan menggunakan penyambung pisang dan bukannya penyambung BNC atau SMA, ini bermaksud bahawa sebahagian besar papan wangi adalah "kawasan larangan", untuk menjelaskan bahawa saya sendiri meletakkan pita kapton di atasnya untuk mengelakkan diri saya sendiri dari meletakkan bahagian di atasnya.

Masalah lain dengan meletakkan semuanya dalam kotak projek kecil ialah litar analog dan digital sangat berdekatan. Anda dapat melihat bahawa terdapat banyak bunyi yang kelihatan di kedua-dua jejak itu. Ini pun saya tidak ada di papan roti! Dengan menggerakkan talian kuasa untuk rangkaian analog dan digital sejauh mungkin, sedikit peningkatan dibuat, tetapi tidak mencukupi untuk keinginan saya. Mengurangkan semua nilai perintang dalam litar analog lebih jauh daripada yang saya lakukan (rintangan input adalah 100kOhm dan bukannya 1MOhm) tidak membantu. Saya mengesyaki bahawa pencetus pada tetapan pangkalan masa terpantas (20us / div), yang tidak bagus, juga akan bertambah baik dengan bunyi yang kurang pada isyarat.

Sekiranya anda membuat reka bentuk ini pada pcb "sebenar", dengan semua bahagian smd dan lapisan berasingan untuk analog, digital dan kuasa (itu adalah 4 lapisan!) Ia mungkin akan berfungsi dengan baik. Ia akan jauh lebih kecil, ia tidak akan menggunakan Pil Biru yang lengkap tetapi hanya F103 dan itu memungkinkan untuk membekalkannya dengan Vdda analog (bersih) yang berasingan untuk ADC.

Sebagai sentuhan terakhir saya memutuskan untuk menyemburkan kotak hitam, ia membuat perubahan dari semua kotak kuning air yang dimilikinya.

Langkah 10: Kod dan Video Ringkas

Langkah 11: EKSTRA: Overclocking

EKSTRA: Overclocking
EKSTRA: Overclocking

Sama seperti yang saya lakukan dengan F03, saya ingin melihat seberapa baik F103 dapat overclock. Spesifikasi mikrokontroler ini mendakwa bahawa kelajuan jam maksimum tidak boleh melebihi 72MHz (yang tentunya sudah lebih cepat daripada F030) tetapi saya telah membaca di beberapa blog bahawa overclocking itu mudah, jadi mengapa tidak?

Blue Pill dilengkapi dengan kristal 8MHz, PLL mengalikannya dengan faktor 9 hingga 72MHz. PLL dapat ditingkatkan hingga 16 memberikan jam 128MHz. Itu sama sekali tidak menjadi masalah untuk Blue Pill saya, sebenarnya, semua Blue Pills saya berfungsi tanpa masalah pada 128MHz.

Tetapi sekarang saya ingin mengetahui apa had sebenarnya. Oleh itu, saya mengeluarkan kristal 8MHz dan menggantinya dengan salah satu 12MHz. Sekali lagi saya meningkatkan pengganda PLL sehingga pengawal mikro akhirnya menyerah. Itu pada 168MHz! Pada 156MHz ia masih berfungsi dengan baik. Saya membiarkannya berjalan dengan kelajuan selama berjam-jam dan tidak pernah melihatnya terhempas. Dalam osiloskop ini saya menyelesaikan 120MHz, kelajuan yang dapat dipilih dengan kristal 12MHz dan PLL pada 10, serta dengan kristal 8 MHz dan PLL pada 15. (lihat SystemClock_Config di main.c)

ADC sekarang juga berfungsi dengan lebih pantas, saya menjalankannya pada 30MHz (bukannya 14), mereka masih berfungsi dengan baik pada 60MHz, STMicroelectronics membuat beberapa perkakasan yang bagus!

STMicroelectronics meletakkan had ini dalam lembar data dengan alasan yang baik, mereka menjamin bahawa mikrokontroler berfungsi pada 72MHz yang ditentukan dalam semua keadaan.

Tetapi kerana saya tidak menggunakan mikrokontroler pada suhu -40 Celsius, +85 Celsius, pada hanya 2.0 Volt atau 3.6 Volt, saya rasa selamat untuk melakukan overclock. JANGAN lakukan ini apabila anda berhasrat untuk menjual peranti dengan pengawal mikro mereka, anda tidak pernah tahu di mana ia akan digunakan.

Disyorkan: