Arduino осциллограф

Mastino
Offline
Зарегистрирован: 03.12.2011

Добрый день всем,

Нужно проверить работу ДМРВ. Так как это делает человек на видео: http://www.youtube.com/watch?v=x7jfdAWZPFM

можно ли использовать arduino вместо осциллограф? Serial.print(micros()); Serial.println(analogRead(A1)); ?

или Serial.println своей задержкой все испортит? может есть другие мысли как это реализовать?

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Вам для начала все испортит скорость АЦП :)

Максимальная частота выборки (после танцев с бубном) теоретически 10кГц - оцифровываете в буфер "кадр" и "неторопясь" передаете это на комп. О "реалтайме" речи не идет, увы.

Mastino
Offline
Зарегистрирован: 03.12.2011

так что отпадает?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Можно записать данные в массив, типа аналог логического анализатора. Потом этот массив передать через Serial в комп и смотреть график. Если записывать данные по прерываниям от таймера, то получится достаточно неплохо, только шаг для рерываний придется вычислить заранее. Еще, чтобы не писать мусор, лучше всего начинать запись при переходе входящего сигнала через какой то уровень.

Это один из вариантов.

Если хотите передавать данные непрерывно, можно попробовать воспользоваться библиотекой Firmata, но с каким шагом она будет выдавать - трудно сказать, зависит от Ардуины и от скорости Serial, плюс от программы на компе, которая будет эти данные считывать. Но я бы не рассчитывал на высокие скорости. В демо режиме я в таком режиме программу гонял, но частоту опроса - не мерял.

Еще есть куча программ для Ардуино и на комп (поищите в гугле), которые выводят на экран данные с пинов на экран компа в виде графика. В гугле выдается много информации по строке "arduino oscilloscope"

 

Mastino
Offline
Зарегистрирован: 03.12.2011

большое спасибо за правду хорошие ответы!

а сам analogRead не будет глючить если его очень часто вызывать? не помню где но была такая проблема что когда очень часто вызываешь analogRead данные искажаются. или что то путаю?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Посмотрите на форуме, недавно leshak на эту тему писал, во всяком случае именно о помехах на соседних аналоговых пинах, не висящих в воздухе, а именно на подключенных.

Хотя, если не ошибаюсь, про это в даташитах на микропроцессор что то было, я бы для начала там посмотрел.

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Не будет. Он контролирует флаг "конец преобразования". А вот если от таймера, то придется проверять флаз самостоятельно.

Если Вас не интересуют частоты сигналов больше 2кГц, то имеет смысл возиться, если 2 кГц - мало, то смотрите в сторону STM, но с ними сложнее - нужен определенный базовый уровень пронраммирования. Хотя научиться можно - есть форумы и уроки... Это не реклама, это опыт.

leshak
Offline
Зарегистрирован: 29.09.2011

Мне, когда я боролся с энкодерами вот это помогло 

http://letsmakerobots.com/node/31422

но деталей - я уже не помню.

Вроде даже 1mHz удавалось выжать.

Но, как правильно сказал AlexFisher, ни о какой RealTime - речи не идет.

Настраиваешь какой-то тригрер. Как только он сработал - начинается запись в память дуины. Сколько времени - ну естественно зависит от частоты. Но даже на mega1280 там на больших частотах хватало на сотни миллисекунд только. Когда "память кончилась" - все это отдается софту на комп неспеша - и смотришь в offline что там намеряло.

Думаю можно поигратся и увеличить время записи  (там кажись скетч под 8-мь каналов сделан). ТО есть byte на каждый sample. Если одного канала достаточно, но то можно повыкаблучиватся с запихиванием 8-ми замеров в одни байт.

Но... эта софтина именно LogicAnalizer. Не осцилографф. Хотя, может быть есть и осцилографные аналоги.

Простейший - лобовой вариант - по каком-то событию просто делать кучу записей ваших analogRead() в какой-то массив, а потом выкидывать это в формате MegunoLink.

 

 

Artur1985
Offline
Зарегистрирован: 19.02.2013

Возможно вам поможет данная статья.
http://robocraft.ru/blog/arduino/61.html

Сам не разбираюсь в вопросе, но там внизу ссылка на готовый, просто скачать и залить код на ардуино. Отображает данные на компьютере.
http://code.google.com/p/arduinoscope/wiki/Usage

У меня запустилось и, что-то отображалась, а что пока не знаю:).

Mastino
Offline
Зарегистрирован: 03.12.2011

Спасибо, но к сожалению этот не прокатит :( Уже как и решили как делать другим способом.

Artur1985
Offline
Зарегистрирован: 19.02.2013

Не за что, просто не давно видел и баловался.
Удачи.