Мазмуну:
- Жабдуулар
- 1 -кадам: Interleave же SImron режим
- 2 -кадам: Прототиптөө
- 3 -кадам: Аттенуаторлор
- 4 -кадам: Virtual Ground
- 5 -кадам: Ротари коддоочулар жана мүчүлүштүктөрдү оңдоо
- 6 -кадам: Дисплей жана убакыт базасы
- 7 -кадам: ADCs жана DMA
- 8 -кадам: Колдонуучу интерфейси
- 9 -кадам: Курулуш жана мүмкүн болгон жакшыртуу
- 10 -кадам: Код жана кыска видео
- 11 -кадам: EXTRA: Overclocking
Video: Кош издүү осциллограф: 11 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Мен мурунку мини осциллографымды курганымда, эң кичине 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 режим
Көк таблетка
Бирок идея ошол жерде болчу, мен 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
Эки 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
Мен 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 Вольтто колдонбогондуктан, аны тездетүү коопсуз деп ойлойм. Микроконтроллерлери бар аппаратты сатууну көздөп жатканда, муну ЭМЕС кылгыла, алар качан колдонуларын билбейсиңер.
Сунушталууда:
CircuitPython менен кош түстүү тилке графиги: 5 кадам (сүрөттөр менен)
CircuitPython менен кош түстүү тилке графиги: Мен бул LED бар-графаны Pimoroni сайтынан көрдүм жана covid-19 блокировкасын ишке ашырууда бул арзан жана кызыктуу долбоор болушу мүмкүн деп ойлодум. Анын ар биринде 24 LED, кызыл жана жашыл бар 12 сегмент, ошондуктан теорияда сиз r көрсөтө алышыңыз керек
DIY Variable LED панели (кош түстүү): 16 кадам (сүрөттөр менен)
DIY өзгөрмөлүү LED панели (кош түстүү): жеткиликтүү DIY кайра заряддалуучу LED панелин жасап, жарыкыңызды жакшыртыңыз! Кош түстүү жарыктыкты жөнгө салуу менен жабдылган бул долбоор сизге жарык булагыңыздын ак балансын айланаңыздагы жарыкка дал келтирүү үчүн ийкемдүүлүк берет
Жөнөкөйлөтүлгөн 3D Басылган Аниматроникалык Кош Көздүн Механизми: 4 Кадам (Сүрөттөр менен)
Жөнөкөйлөтүлгөн 3D Басып чыгарылган Аниматроникалык Кош Көздүн Механизми: Өткөндө бир көздүү жөнөкөй механизмди куруп, дизайнды жакшыртууну, ошондой эле аны жаратуучулар коомчулугуна жеткиликтүү кылууну кааладым. Жаңыртылган жамаат онлайнда оңой сатып алына турган бөлүктөрдү колдонот жана дээрлик бардык компоненттер
Кош Band гитара/бас компрессору: 4 кадам (сүрөттөр менен)
Dual-Band гитара/бас компрессор: Негизги окуя: Менин басс ойногон досум үйлөнүп жаткан, мен ага оригиналдуу нерсе кургум келди. Мен анын гитара/бас эффект педалдары бар экенин билчүмүн, бирок компрессор колдонгонун көргөн эмесмин, ошондуктан сурадым. Ал бир аз өзгөчөлүктөргө көз каранды, ошондуктан ал
7 сегменттүү кош дисплейлер CircuitPythonдогу потенциометр тарабынан башкарылат - көрүнүштүн туруктуулугунун көрсөтүлүшү: 9 кадам (сүрөттөр менен)
CircuitPythonдогу потенциометр менен башкарылган кош 7 сегменттүү дисплейлер-Көрүүнүн туруктуулугунун демонстрациясы: Бул проект 7 сегменттүү LED дисплейлериндеги дисплейди башкаруу үчүн потенциометрди колдонот (F5161AH). Потенциометрдин баскычы бурулганда, көрсөтүлгөн номер 0дон 99га чейин өзгөрөт. Каалаган убакта бир гана LED күйөт, абдан кыска, бирок