- Како то ради
- Потребне компоненте
- Шеме
- Ардуино Осцллосцопе Цоде
- Питхон (Плоттер) скрипта
- Ардуино код
- Ардуино осцилоскоп у акцији
Осцилоскоп је један од најважнијих алата који ћете наћи на радном столу било ког инжењера или произвођача електронике. Примарно се користи за преглед таласног облика и одређивање нивоа напона, фреквенције, шума и других параметара сигнала који се примењују на његовом улазу и који се временом могу променити. Такође га користе уграђени програмери за отклањање грешака у коду и техничари за решавање проблема са електронским уређајима током поправке. Ови разлози чине осцилоскоп обавезним алатом било ког инжењера. Једино што могу бити врло скупи, осцилоскопи који изводе најосновније функције са најмање тачности могу бити скупи од 45 до 100 америчких долара, док напреднији и ефикаснији коштају више од 150 америчких долара. Данас ћу показати како се користи Ардуинои софтвер који ће бити развијен са мојим омиљеним програмским језиком Питхон, за изградњу јефтиног четвороканалног Ардуино осцилоскопа способног да извршава задатке за које су неки од јефтиних осцилоскопа распоређени попут приказивања таласних облика и одређивања нивоа напона за сигнале.
Како то ради
Постоје два дела за овај пројекат;
- Конвертор података
- Плоттер
Осцилоскопи обично укључују визуелни приказ аналогног сигнала примењеног на његов улазни канал. Да бисмо то постигли, прво морамо сигнал претворити из аналогног у дигитални, а затим уцртати податке. За конверзију ћемо се ослањати на АДЦ (аналогни у дигитални претварач) на микроконтролеру атмега328п који користи Ардуино за претварање аналогних података на улазном сигналу у дигитални сигнал. Након конверзије, вредност по времену се шаље путем УАРТ-а са Ардуина на рачунар, где ће софтвер за цртање који ће се развити помоћу питхона претворити долазни ток података у таласни облик цртајући сваки податак према времену.
Потребне компоненте
За изградњу овог пројекта потребне су следеће компоненте;
- Ардуино Уно (може се користити било која друга плоча)
- Бреадбоард
- Отпорник 10к (1)
- ЛДР (1)
- Жице краткоспојника
Потребни софтвери
- Ардуино ИДЕ
- Питхон
- Питхон библиотеке: Писериал, Матплотлиб, Дравнов
Шеме
Шема Ардуино осцилоскопа је једноставна. Све што треба да урадимо је да повежемо сигнал који се испитује са наведеним аналогним пином Ардуина. Међутим, користићемо ЛДР у једноставном подешавању делитеља напона за генерисање сигнала који треба испитати, тако да ће генерисани таласни облик описати ниво напона на основу интензитета светлости око ЛДР-а.
Повежите компоненте као што је приказано на доњој шеми;
Након повезивања, инсталацији би требало да се допада слика испод.
Када су све везе готове, можемо наставити са писањем кода.
Ардуино Осцллосцопе Цоде
Писаћемо кодове за сваки од два одељка. За Плоттер, као што је раније поменуто, написаћемо питхон скрипту која прихвата податке из Ардуина путем УАРТ-а и Плотс-а, док ћемо за конвертер писати Ардуино скицу која узима податке из АДЦ-а и претвара их у нивои напона који се шаљу у плотер.
Питхон (Плоттер) скрипта
Пошто је питхон код сложенији, ми ћемо почети са њим.
Користићемо неколико библиотека, укључујући; дравнов, Матплотлиб и Писериал са питхон скриптом као што је раније поменуто. Писериал нам омогућава да створимо питхон скрипту која може комуницирати преко серијског порта, Матплотлиб нам даје могућност генерисања графикона из података примљених преко серијског порта, а дравнов пружа средство за ажурирање парцеле у реалном времену.
Постоји неколико начина за инсталирање ових пакета на ваш рачунар, а најлакши је путем пипа . Пип се може инсталирати путем командне линије на Виндовс или Линук рачунару. ПИП је пакован са питхон3, па ћу вам саветовати да инсталирате питхон3 и означите поље за додавање питхон-а у путању. Ако имате проблема са инсталирањем пипа, потражите савете на овом службеном питхон веб месту.
Ако је пип инсталиран, сада можемо да инсталирамо остале библиотеке које су нам потребне.
Отворите командну линију за кориснике Виндовс-а, терминал за кориснике Линук-а и унесите следеће;
пип инсталл писериал
Након тога, инсталирајте матплотлиб користећи;
пип инсталл матплотлиб
Дравнов се понекад инсталира уз матплотлиб, али само да будете сигурни, покрените;
пип инсталл дравнов
По завршетку инсталације, сада смо спремни за писање питхон скрипте.
Питхон скрипта за овај пројекат је слична оној коју сам написао за осцилоскоп заснован на Распберри Пи.
Почињемо са увозом свих библиотека потребних за код;
време увоза импорт матплотлиб.пиплот ас плт фром дравнов импорт * импорт писериал
Даље креирамо и иницијализујемо променљиве које ће се користити током кода. Низ вал ће се користити за чување података примљених са серијског порта, а цнт ће се користити за бројање. Подаци на локацији 0 биће избрисани након сваких 50 бројања података. То се ради како би се подаци приказивали на осцилоскопу.
вал = цнт = 0
Даље креирамо објект серијског порта преко којег ће Ардуино комуницирати с нашом питхон скриптом. Уверите се да је доле наведени цом порт исти цом порт преко којег ваша Ардуино плоча комуницира са ИДЕ-ом. Горе коришћена брзина преноса од 115200 коришћена је за обезбеђивање велике брзине комуникације са Ардуином. Да би се спречиле грешке, серијски порт Ардуино такође мора бити омогућен за комуникацију са овом брзином преноса.
порт = сериал.Сериал ('ЦОМ4', 115200, тимеоут = 0,5)
Даље, радњу радимо интерактивно користећи;
плт.ион ()
треба да креирамо функцију за генерисање парцеле из примљених података, стварајући горњу и минималну границу коју очекујемо, што је у овом случају 1023 на основу резолуције Ардуиновог АДЦ-а. Такође смо поставили наслов, означили сваку осу и додали легенду како бисмо олакшали идентификацију парцеле.
#цреате тхе фигуре фунцтион деф макеФиг (): плт.илим (-1023,1023) плт.титле ('Осцилосцопе') плт.грид (Труе) плт.илабел ('АДЦ оутпутс') плт.плот (вал, 'ро - ', лабел =' Цханнел 0 ') плт.легенд (лоц =' доњи десни ')
Када смо то учинили, сада смо спремни да напишемо главну петљу која узима податке са серијског порта када су доступни и исцртава их. Да би се синхронизовао са Ардуином, Питхон скрипта шаље Ардуину податке руковања како би указала на његову спремност за читање података. Када Ардуино прими податке о руковању, одговара са подацима из АДЦ-а. Без овог руковања нећемо моћи да графички прикажемо податке у реалном времену.
вхиле (Труе): порт.врите (б'с ') #хандсхаке витх Ардуино иф (порт.инВаитинг ()): # ако ардуино одговори валуе = порт.реадлине () # прочитајте одговор принт (валуе) #принт да бисмо могли надгледајте га број = инт (вредност) # претвори примљене податке у целобројни испис ('Канал 0: {0}'. формат (број)) # Спавајте пола секунде. тиме.слееп (0.01) вал.аппенд (инт (нумбер)) дравнов (макеФиг) #упдате плот за приказ нових уноса података плт.паусе (.000001) цнт = цнт + 1 иф (цнт> 50): вал.поп (0) # одржавајте заплет свежим брисањем података на положају 0
Комплетан питон код за Ардуино осцилоскоп је дат на крају овог чланка је приказано у наставку.
Ардуино код
Други код је Ардуино скица за добијање података који представљају сигнал из АДЦ-а, а затим сачекајте да примите сигнал руковања од софтвера плотера. Чим прими сигнал руковања, преко УАРТ-а шаље прикупљене податке софтверу плотера.
Почињемо са декларацијом пина Аналогног пина Ардуина на који ће се сигнал применити.
инт сенсорпин = А0;
Даље, иницијализујемо и започињемо серијску комуникацију брзином преноса од 115200
воид сетуп () { // иницијализује серијску комуникацију брзином од 115200 бита у секунди како би се подударала са оном у питхон скрипти: Сериал.бегин (115200); }
И на крају, функција воидлооп () која управља читањем података и шаље податке серијски на плотер.
воид лооп () { // очитавање улаза на аналогном пину 0: флоат сенсорВалуе = аналогРеад (сенсорпин); бајт података = Сериал.реад (); иф (дата == 'с') { Сериал.принтлн (сенсорВалуе); кашњење (10); // кашњење између читања ради стабилности } }
Комплетан Ардуино осцилоскоп код је дат у наставку, као и на крају овог чланка је приказано у наставку.
инт сенсорпин = А0; воид сетуп () { // иницијализује серијску комуникацију брзином од 115200 бита у секунди како би се подударала са оном у питхон скрипти: Сериал.бегин (115200); } воид лооп () { // очитавање улаза на аналогном пину 0: ################################### ####################### флоат сенсорВалуе = аналогРеад (сенсорпин); бајт података = Сериал.реад (); иф (дата == 'с') { Сериал.принтлн (сенсорВалуе); кашњење (10); // кашњење између читања ради стабилности } }
Ардуино осцилоскоп у акцији
Отпремите код у Ардуино подешавање и покрените питхон скрипту. Требали бисте видети како подаци почињу да се уливају преко питхон командне линије и како се радња разликује у зависности од интензитета светлости као што је приказано на слици испод.
Дакле, на овај начин се Ардуино може користити као осцилоскоп, може се направити и помоћу Распберри пи, овде погледајте комплетан водич о осцилоскопу заснован на Распберри Пи.