Мазмуну:

Кош издүү осциллограф: 11 кадам (сүрөттөр менен)
Кош издүү осциллограф: 11 кадам (сүрөттөр менен)

Video: Кош издүү осциллограф: 11 кадам (сүрөттөр менен)

Video: Кош издүү осциллограф: 11 кадам (сүрөттөр менен)
Video: НАСТЯ КОШ — ПЛОХАЯ (ELEVATE TEAM) 2024, Июль
Anonim
Кош издүү осциллограф
Кош издүү осциллограф

Мен мурунку мини осциллографымды курганымда, эң кичине ARM микроконтроллеримди STM32F030 (F030) аткара алаарымды көргүм келди жана бул жакшы иш кылды.

Комментарийлердин биринде STM32F103 (F103) бар "Көк таблетка" F030 менен иштеп чыгуу тактасынан кичине, балким андан да арзаныраак болушу мүмкүн деп сунушталган. Бирок мини осциллограф үчүн мен иштеп чыгуу тактасын колдонгон жокмун, бирок F030 андан да кичине SMD-DIP тактасында, андыктан ал жерде көк таблетка азыраак болбойт жана мен анын арзан болоруна күмөн санайм.

Код азыр Gitlabта жеткиликтүү:

gitlab.com/WilkoL/dual-trace-oscilloscope

Жабдуулар

Бөлүктөрдүн тизмеси: - пластикалык кутуча - перфортборд (эки тараптуу прототип тактасы 8x12 см) - Көк таблетка - ST7735s TFT дисплейи - литий -ион батареясы - HT7333 3.3V төмөн түшүп кетүү жөнгө салуучусу - MCP6L92 кош опамп - TSSOP8ден DIP8 тактасына - 12 МГц кристалл (кереги жок)) - айлануучу кодер плюс баскычы (2x) - powerswitch - банан терминалдары (4x) - литий -иондук заряддагыч плата - бир нече резистор жана конденсаторлор - нейлон аралыктары, гайкалар жана бурамалар

Куралдар:

- ширетүүчү станция - 0.7мм ширетүүчү - кээ бир зым - каптал кескич - көз айнек жана лупа - бургулоо - мультиметр - осциллограф - STLink -V2

Программалык камсыздоо:

- STM32IDE - STM32CubeMX - STLink Utility - LowLayer китепканасы - ST7735s үчүн ылайыкташтырылган китепкана - Notepad ++ - Kicad

1 -кадам: Interleave же SImron режим

Interleave же SIm Синхрондук режим
Interleave же SIm Синхрондук режим
Interleave же SImron режим
Interleave же SImron режим

Көк таблетка

Бирок идея ошол жерде болчу, мен F103 эки ADC бар экенин билчүмүн! Эгер мен ошол эки ADCди "интерлей" режиминде бирге колдонсом эмне болот, мен буга чейин STM32F407 (F407) менен кылган элем. Тандоо ылдамдыгы эки эсе көбөймөк. Муну тезирээк микроконтроллер менен бириктирсеңиз, бул мини осциллографтун улуу мураскоруна айланат.

Interleave режими Кызык F103 ADCs F030 (жана F407) караганда азыраак өнүккөн, сиз чечимди тандай албайсыз. Андан да маанилүүсү, сиз эки ADC ортосундагы убакытты өзгөртө албайсыз. Эми, сиз аралаштыруу режимин колдонгонуңузда, көбүнчө үлгүлөрдүн эң кыска убакыттын ичинде ылдамдыкты тезирээк алгыңыз келет, бирок осциллограф менен убакытты өзгөртүү зарыл. Балким, муну дагы деле жасаса болот, мен профессионалдуу осциллограф дизайнери эмесмин, бирок мен интерлейлүү режимди колдонуу планынан баш тарттым.

Бир убакта режим

Бирок, эки ADCге ээ болуу дагы көптөгөн мүмкүнчүлүктөрдү берет, эки ADCди "үзгүлтүксүз-бир убакта" режимине койсо болот. Кош из-осциллограф жөнүндө эмне айтууга болот?

Кош издүү осциллограф жасоого аракет кылууну чечкенден кийин, мен мини осциллографта жок болгон өзгөрмө кирүү сезгичтигине ээ болгум келди. Бул кириштердеги начарлатуучу (жана күчөткүч) дегенди билдирет. А балким мен андан да көптү каалагандырмын? Ошентип, мен "жакшы көргөндөрдүн" кичинекей тизмесин түздүм.

WISH LIST

эки канал

эки каналда тең өзгөрмөлүү сезимталдык

эки каналда да иштейт

эки каналда тең өзгөрмөлүү триггер деңгээли

өзгөрүлмө офсет

бир батарея кубаты

мини-осциллограф менен бир кутуга туура келет

2 -кадам: Прототиптөө

Прототиптөө
Прототиптөө
Прототиптөө
Прототиптөө

Адаттагыдай эле мен бул долбоорлорду нан тактасынан баштадым. (Сүрөттү караңыз) Жана перформаттын бардыгын ширетүүдөн мурун, мен анын долбоордун кутусуна кантип туура келерин билүүгө аракет кылам. Бул туура келет, бирок жөн гана. Кээ бир бөлүктөрү экрандын астында, экинчиси Көк таблетканын астында катылган. Дагы, менин долбоорлорумдун көбүндөй эле, бул бир эле жолу болгон долбоор жана мен бул үчүн ПХБ түзбөйм.

3 -кадам: Аттенуаторлор

Аттенуаторлор
Аттенуаторлор

Кадимки осциллографтарда кирүү аттенюаторлору - кичине сигнал релеси бар резисторлорду өчүрүү жана өчүрүү аркылуу өчүрүү жана күчөтүүнү өзгөрткөн схемалар. Менде кээ бир релейлер бар, бирок мен алар 4 Вольттон азыраак которулбасын билем, бул алар толугу менен жүктөлгөн литий -ион батарейкасы менен гана иштей турганын билдирет (4.2V). Ошол резисторлорду алмаштыруунун башка жолу керек болчу. Албетте, мен жөн эле механикалык өчүргүчтөрдү орното алмакмын, бирок бул албетте долбоордун кутусуна туура келбейт, балким мен дагы жакшы санарип потенциометрди сынап көрмөкмүн (менде өтө ызы -чуу).

Анан мен "аналогдук которгучтар" жөнүндө ойлондум, алардын жардамы менен мен санарип потенциометрди өзүм жасай алам. Менин бөлүктөр жыйнагымда CD4066 төрт аналогдук өчүргүчтөр менен табылды. Идея, резисторлорду кайтаруу резисторуна параллель кирип, опам өзгөрмөсүнүн кайтарым байланыш каршылыгын жасоо.

Бул абдан жакшы иштейт, бирок 4066да 4 эле өчүргүчкө ээ болуу жана 2 каналга ээ болуу менен үчтөн ашык сезгичтик деңгээлин жасоо мүмкүн эмес болчу. Мен 500мВ, 1В жана 2В дивизияны тандадым, анткени мен эң көп колдонгон чыңалуу деңгээлдери. Экран 6 бөлүмгө бөлүнөт, андыктан -1.5Vдан +1.5Vга чейин, -3Vдан +3Vга чейин жана -6Vдан 6Vга чейин диапазондорду түзөт.

"Виртуалдык жер" менен сиз бул диапазондорду өйдө жана ылдый жылдыра аласыз, андыктан 0vден +12Vга чейин мүмкүн.

4 -кадам: Virtual Ground

Виртуалдык жер
Виртуалдык жер
Виртуалдык жер
Виртуалдык жер

Осциллограф бир электр рельсин (3.3V) колдонгондуктан, опампаларга виртуалдык жер деңгээл керек же алар иштебейт. Бул виртуалдык жердин деңгээли PWM менен TIM4 бир чыгуучу каналында жасалат, анын кызмат цикли бир нече пайыздан дээрлик жүз пайызга чейин өзгөрөт. 1k каршылыгы жана 10uF конденсатору бар аз өткөрмө чыпкасы муну (дээрлик) 0Vдан 3.3Vга чейинки чыңалууга айландырат. Квадрат толкунунун жыштыгы 100 кГцтен азыраак, андыктан жөнөкөй өтмө чыпкасы жетишерлик жакшы.

Тескерисинче, бул осциллографтын имаратында каналдар үчүн эки башка орун жок экенин түшүндүм. Себеби, бирдиктүү электр энергиясы менен кириш-деңгээл опамдардын чыныгы жер деңгээлинен өзүнчө болушу керек. Ошентип, эки канал тең GND-жөндөөнү өзгөрткөндөй кыймылдайт.

5 -кадам: Ротари коддоочулар жана мүчүлүштүктөрдү оңдоо

Ротари коддогучтар жана мүчүлүштүктөрдү оңдоо
Ротари коддогучтар жана мүчүлүштүктөрдү оңдоо
Ротари коддогучтар жана мүчүлүштүктөрдү оңдоо
Ротари коддогучтар жана мүчүлүштүктөрдү оңдоо

Мини осциллографта мен бардык функциялар үчүн бир гана айлануучу кодерди колдондум. Бул кош осциллографты колдонууну абдан кыйын кылат, ошондуктан бул жерде мага экөө керек. Аттенуаторлор жана виртуалдык жер деңгээлдери үчүн бир кодер, экинчиси убакыт базасы жана триггер үчүн. Тилекке каршы, менин башка долбоорумдагыдай эле, бул айлануучу кодерлер абдан "ызы -чуу". Алар ушунчалык начар болгондуктан, таймерлер менен "коддогуч режиминде" иштебей калышат, аларды окуунун стандарттык жолу. Мен TIM2 таймери менен дебюндук механизмди жасоого туура келди, ар 100us сайын коддогучтарды текшерип туруу. Бул таймер өз кезегинде (бир гана) коддогучтарда кандайдыр бир аракет болгондо башталат, бул киргизүү портторундагы EXTI функциясы менен текшерилет. Азыр коддогучтар жакшы иштейт.

Көрүнүп тургандай, дисплейге ээ болуу мүчүлүштүктөрдү оңдоо маалыматын көрсөтүү үчүн абдан ыңгайлуу болушу мүмкүн.

6 -кадам: Дисплей жана убакыт базасы

Дисплей жана убакыт базасы
Дисплей жана убакыт базасы

Дисплейдин чечими 160 x 128 пиксел, ошондуктан бир экранга 160 үлгү керек, мен ADCлерди ылдамдатып, секундасына 1,6 миллион үлгү алам жана ылдамдатылган микроконтроллер менен (кийинчерээк) минималдуу убакыт базасы 20us бөлүмүнө (экранда 100us). Ошентип, 10 кГц толкуну бүт экранды толтурат.

Бул мен жасаган кичинекей осциллографтан эки эсе ылдамыраак. Ооба, азыр ал эки канал менен:-).

Айткандай эле, дисплейдин туурасы 160 пиксел, ошондуктан экранда 160 гана мааниге ээ болуу керек. Бирок бардык буферлерде чындыгында 320 үлгү камтылган. Ошентип, DMA берүүнүн толук үзүлүшүн (TC) баштоодон мурун 320 баалуулуктарды сактайт. Бул триггер программалык камсыздоодо жасалгандыктан. Тандоо кокусунан башталат, андыктан буфердеги биринчи маани триггер чекити болушу керек болгон жер болушу күмөн.

Андыктан триггер чекити trace_x_buffer аркылуу окуу аркылуу табылат, эгерде маани керектүү триггерде болсо, эгер мурунку мааниси анын астында болсо, trigger_point табылат. Бул абдан жакшы иштейт, бирок сизге чыныгы дисплейдин өлчөмүнөн чоңураак буфер керек.

Бул дагы убакыт базасынын жөндөөлөрүнүн жаңыртуу ылдамдыгы сиз күткөндөн жайыраак болушунун себеби. 200ms/div орнотуусун колдонгондо, бир экрандын маалыматы 1 секундду түзөт, бирок эки эсе көп которулгандыктан, бул 2 секундага созулат. Тезирээк убакыт базасынын жөндөөлөрүндө аны анча байкабайсыз.

TIM3 убакыт базасын түзүү үчүн колдонулат. Бул ADCлерди ылдамдык менен тандалган убакыт базасынын жөндөөсү талап кылат. Анын TIM3 сааты 120 МГц (OVERCLOCKINGти караңыз), максималдуу саны (ARR) анын башка толуп кетишин аныктайт же ST тилинде жаңыртат. TRGO аркылуу бул жаңыртуу импульстары ADCлерди иштетет. Эң төмөнкү жыштык - 160 Гц, эң жогорку - 1,6 МГц.

7 -кадам: ADCs жана DMA

ADCs жана DMA
ADCs жана DMA

Эки ADC бир убакта кириштериндеги чыңалууну айлантат, алар ошол 12 биттик 32 битти бир 32bit өзгөрмөсүндө сакташат. Ошентип, DMA өткөрүп берүү үчүн (кош) конверсияга бир гана өзгөрмөгө ээ.

Бул баалуулуктарды колдонуу үчүн аларды эки баалуулукка бөлүү зарыл, андыктан алар эки изди көрсөтүү үчүн колдонулушу мүмкүн. Жогоруда айтылгандай, F103төгү ADC'лерди 12 биттен башка чечимдерге коюуга болбойт. Алар ар дайым 12 биттик режимде болушат, андыктан конверсиялар дайыма бирдей сааттык импульстарды алышат. Ошентсе да, ADCs overclocking менен, секундасына 1,6 MSamples жасалышы мүмкүн (кара Extra: Overclocking).

ADCsдин маалымдамасы Vdd, 3.3V темир жолу. Муну ыңгайлуураак баалуулуктарга айландыруу үчүн (бир бөлүмгө) мен аттенюаторлордун маанилерин эсептеп чыктым, анткени менде бул эсептөөлөрдөн чыккан резистордун так мааниси жок, кээ бир программалык камсыздоолордо оңдоолор киргизилет.

Бул долбоордо мен "кадимки режимде" DMA колдоном. Бул режимде DMA сөздөрдүн саны (же жарым сөз же байт) баары которулганда маалыматтарды (ADCтен эстутумга) өткөрүүнү токтотот. Башка мүмкүн болгон режимде, "айланма режимде" DMA өзүн өзү баштапкы абалга келтирет жана маалыматтарды үзгүлтүксүз берүүнү улантууда. Бул F103 менен иштеген жок, ал ушунчалык тез болгондуктан, программанын калган бөлүгү окуй электе, ал adc_bufferдеги маалыматтарды жазат. Ошентип, азыр процесс төмөнкүчө:

- DMAны бериле турган маалыматтардын санына тууралоо жана DMAны иштетүү

- ADCлерди иштетүүнү баштаңыз, алар ар бир (кош) конверсиядан кийин DMA которууларын талап кылат

- белгиленген конверсиялардын саны которулгандан кийин, DMA токтойт

- ADCлерди иштетүүнү дароо токтотуңуз

- эс тутумдагы маалыматтарга керектүү болгон бардык манипуляцияларды жасаңыз

- экранда издерди көрсөтүү

- процессти кайра баштоо

8 -кадам: Колдонуучу интерфейси

Колдонуучу интерфейси
Колдонуучу интерфейси

160 x 128 пикселдик экран анча чоң эмес жана мен аны мүмкүн болушунча көбүрөөк колдонууну каалайм. Демек, анын бир бөлүгү агымдын орнотуулары үчүн корголгон эмес. Акыркы бир нече катарда вертикалдуу сезгичтик, убакыт базасы, триггердин деңгээли жана триггер каналы көрсөтүлөт, бирок сигналдар чоң болгондо алар ошол эле аймакта пайда болот. Активдүү болгон вариант сары түстө, калгандары ак түстө көрсөтүлөт.

9 -кадам: Курулуш жана мүмкүн болгон жакшыртуу

Курулуш жана мүмкүн болгон жакшыртуулар
Курулуш жана мүмкүн болгон жакшыртуулар
Курулуш жана мүмкүн болгон жакшыртуулар
Курулуш жана мүмкүн болгон жакшыртуулар
Курулуш жана мүмкүн болгон жакшыртуулар
Курулуш жана мүмкүн болгон жакшыртуулар
Курулуш жана мүмкүн болгон жакшыртуулар
Курулуш жана мүмкүн болгон жакшыртуулар

Мен бул долбоорго абдан кубанычтамын. Бул жакшы иштейт жана ишти аткарат, бирок андан да жакшы болмок.

Долбоордун кутусу өтө кичинекей болгондуктан, бардыгын ыңгайлуу жайгаштыра албайт, бул компоненттерди Көк таблетканын астына коюуга алып келет. Муну мүмкүн кылуу үчүн, көк таблетканы "башкы тактага" түз кошууга болбойт. Мунун баары өтө бийик болгондуктан, мен Blue Pillден көптөгөн бөлүктөрдү алып салууга туура келди, мисалы BOOT0 жана BOOT1ди тандоо үчүн секиргичтер (мен эч качан колдонбогон нерселер) жана мен кристаллды өйдөдөн ылдый карай жылдырууга туура келди. PCB

Мен BNC же SMA туташтыргычтарынын ордуна банан туташтыргычтарын колдонуу менен жашоону татаалдаштырдым, бул перформаттын чоң бөлүгү "эч жакка кетпөө" экенин билдирет, муну өзүмө түшүнүктүү кылуу үчүн, каптон тасмасын өзүмдүн алдын алуу үчүн үстүнө койдум. ага бөлүктөрдү коюудан.

Мунун баарын кичинекей долбоор кутусуна салуунун дагы бир көйгөйү - аналогдук жана санариптик схемалар бири -бирине абдан жакын. Сиз эки изде көрүнүп тургандай, бир топ ызы -чуу бар экенин көрө аласыз. Бул менде нан табакта жок болчу! Аналогдук жана санариптик микросхемалардын электр чубалгыларын мүмкүн болушунча алысыраак жылдыруу менен бир аз жакшыртылган, бирок менин каалоомо жетпейт. Аналогдук микросхемалардын бардык резистордук маанилерин менден да төмөндөтүү (кирүү каршылыгы 1МОм ордуна 100кОм) жардам берген жок. Менин оюмча, эң ылдам убакыт базасын (20us/div) иштетүү сигналдардын аз ызы -чуусу менен жакшырат.

Эгер сиз бул дизайнды аналогдук, санариптик жана күч үчүн бардык smd бөлүктөрү жана өзүнчө катмарлары бар "чыныгы" компьютерде жасасаңыз (бул 4 катмар!), Балким, абдан жакшы иштейт. Бул алда канча кичине болот, ал толугу менен Blue Pill колдонбойт, болгону F103 жана бул аны ADCs үчүн өзүнчө (таза) аналогдук Vdda менен камсыз кылууга мүмкүндүк берет.

Акыркы тийүү катары мен кутучаны кара чачууну чечтим, ал бар беж коробкаларынан өзгөрүү алып келет.

10 -кадам: Код жана кыска видео

11 -кадам: EXTRA: Overclocking

EXTRA: Overclocking
EXTRA: Overclocking

Мен F03 менен болгондой эле, мен F103тү канчалык ылдамдатууну көргүм келди. Бул микроконтроллердин спецификациясы максималдуу сааттын ылдамдыгы 72 МГцтен ашпашы керек деп ырастайт (бул албетте F030га караганда ылдамыраак), бирок мен бир нече блогдордо ылдамдатуу оңой экенин окудум, анда эмне үчүн?

Көк таблетка 8 МГц кристалл менен камсыздалат, PLL 9дан 72 МГцке чейин көбөйтөт. PLL 16га чейин көбөйтүлүшү мүмкүн, бул 128 МГц саатты берет. Бул менин Blue Pill үчүн таптакыр көйгөй болгон жок, чындыгында менин бардык Blue Pills 128MHz боюнча эч кандай көйгөйсүз иштейт.

Бирок азыр чыныгы чек эмне экенин билгим келди. Ошентип, мен 8 МГц кристаллды алып салдым жана анын ордуна 12 МГцке алмаштырдым. Дагы мен PLL мультипликаторун микроконтроллер акыры бергенге чейин көбөйттүм. Бул 168 МГцте болгон! 156MHz боюнча дагы эле жакшы иштеген. Мен аны бир нече саат бою ошол ылдамдыкта иштетип койгом жана анын кулаганын көргөн эмесмин. Бул осциллографта мен 120 МГцке жайгаштым, ылдамдык 12 МГц кристаллында жана PLL 10до, ошондой эле 8 МГц кристаллында жана PLL 15те. (Main.cдеги SystemClock_Config караңыз)

ADCлер азыр дагы ылдамыраак иштешет, менде 30 МГцте иштейт (14 эмес), алар дагы 60 МГцте жакшы иштеп жатышты, STMicroelectronics жакшы жабдууларды жасайт!

STMicroelectronics жүйөлүү себептерден улам бул чектөөлөрдү маалымат барагына киргизет, алар микроконтроллер 72 МГцте бардык шарттарда иштээрине кепилдик берет.

Бирок мен микроконтроллерди -40 Цельсийде, +85 Цельсийде, болгону 2,0 Вольтто же 3,6 Вольтто колдонбогондуктан, аны тездетүү коопсуз деп ойлойм. Микроконтроллерлери бар аппаратты сатууну көздөп жатканда, муну ЭМЕС кылгыла, алар качан колдонуларын билбейсиңер.

Сунушталууда: