Осцилограф раскритикуйте

AS31979
Offline
Зарегистрирован: 22.12.2015

Вводная - USB осцилограф на 20 Мгц у меня есть, требуется именно портативный, причем такой чтобы спалить было не жалко. Увы прецендент уже есть...

Техническое задание:- осцилограф по дешевле и проще - в жертву готов принести  точность.

По форуму нашол:

http://arduino.ru/forum/proekty/vyzhimaem-maksimum-usb-ostsillograf-na-arduino  - но не портативный, да еще и USB.

http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts  - Пульпоскоп, только скетча толком нет + экран совершенно непонятный.

http://arduino.ru/forum/proekty/mini-ostsillograf-arduino-na-lcd-5110  - лучшее из найденного, с экраном тоже не все понятно, но пока лучшее из найденного.

Чего не нашол так это примеров с использованием LCD12864 - даже примеров рисования нет :(

Собственно по чем нужна критика - моих способностей гарантированно хватит прикрутить вместо штатного АЦП микроконтролера вот такое чудо:

 http://www.payatel.ru/185-shema-prostogo-preobrazovatel-acp-cap.html   - земенить чтение данных АЦП на чтение порта  и изменить задержку много ума не нужно.

Теперь собственно по чем нужна критика:

Да я понимаю что разрадность такого АЦП всего 4 бита, согласен что для звука совершенно не годится - но мне этот пробник-осцилограф нужен для цифры. Есть или нет сигнал, тут важнее частота выборки, форма дело десятое.

Возможность сделать опторазвязку как в драйверах ЧПУ

На вскидку без проблем получается минимум два канала по 4 бит(хватит одной микросхеммы 74НС244 - очень дешовая), при этом никто не мешает сохранить возможность использования АЦП микроконтролера - выводов хватает.

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

 

 

 

nik182
Offline
Зарегистрирован: 04.05.2015

Посмотрите здесь http://tomeko.net/reviews/avr_nano/ и вокруг.  Я вот этим пользуюсь http://tomeko.net/miniscope_v2c/index.php?lang=en для разных мелких дел два канала с приличным разрешением. 

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

AS31979 пишет:

....

http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts  - Пульпоскоп, только скетча толком нет + экран совершенно непонятный.

К вам подходит выражение "смотрю в книгу-вижу фигу"

 

AS31979 пишет:

....

Собственно по чем нужна критика - моих способностей гарантированно хватит прикрутить вместо штатного АЦП микроконтролера вот такое чудо:

 http://www.payatel.ru/185-shema-prostogo-preobrazovatel-acp-cap.html   - земенить чтение данных АЦП на чтение порта  и изменить задержку много ума не нужно.

Теперь собственно по чем нужна критика:

Да я понимаю что разрадность такого АЦП всего 4 бита, согласен что для звука совершенно не годится - но мне этот пробник-осцилограф нужен для цифры.

Эта конструкция  не даст 4бит АЦП.

Возможно вам подойдет такой приборчик?

 

AS31979
Offline
Зарегистрирован: 22.12.2015

USB осцирограф есть, хоть то что на нем заявленно 20 МГц лажа, но явно покруче будет чем то что предлагаете.

Пульпоскоп видел, сегодня на видео от автора наткнулся - завтра закажу экран на Алиэкспресе. В нем меня больше всего именно экран и смущает - На том же Алиекспресе есть LCD12864, да на 3$ дороже, но размер...

Подробнее "не даст 4 бит" можно - я со своими делитанскими знаниями вижу в ней две проблеммы:

1. Высокое опорное напряжение(от 4-х вольт) - для малых входных сигналов совсем не подходит, мне для цифры. На худой случай потом можно маштабирующий операционик прикрутить.

2. При чтении микроконтролер может схватить промежуточное состояние(переключения при измерениях) - плата за простоту...

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

AS31979 пишет:

USB осцирограф есть, хоть то что на нем заявленно 20 МГц лажа, но явно покруче будет чем то что предлагаете.

Пульпоскоп видел, сегодня на видео от автора наткнулся - завтра закажу экран на Алиэкспресе. В нем меня больше всего именно экран и смущает - На том же Алиекспресе есть LCD12864, да на 3$ дороже, но размер...

Подробнее "не даст 4 бит" можно - я со своими делитанскими знаниями вижу в ней две проблеммы:

1. Высокое опорное напряжение(от 4-х вольт) - для малых входных сигналов совсем не подходит, мне для цифры. На худой случай потом можно маштабирующий операционик прикрутить.

2. При чтении микроконтролер может схватить промежуточное состояние(переключения при измерениях) - плата за простоту...

Для  4 бит АЦП нужно намного больше компараторов чем в вашей схеме.

Все АЦП параллельного типа очень быстрые потому что сигнал одновременно проходит через сотни компараторов затем через шифратор выдается значение в виде числа.

Мне замысел ваш понятен, но компараторов нужно много, столько портов нет в Ардуино.

AS31979
Offline
Зарегистрирован: 22.12.2015

Вы описывате класический паралельный АЦП - ну эго нафиг, там на одних компаратаорах в трубу вылететь можно, этот АЦП больше напоминает АЦП дельта, только ПРЕДЕЛЬНО упрощенный.

Это как раз 4-х битный АЦП, просто он построен по весьма хитрому принципу - этот же принцип сильно ограничивает максимальную разрядность. Кроме того резисторы (27 кОм) нужно подбирать в зависимости от напряжения переключения в логическую еденицу конкретной микросхеммы!!!!

Поясняю - дело в инвертировании сигнала логическими элементами микросхеммы.

Пример работы первого разряда - допущения: сопротивление источника сигнала равно нулю, сопротивление входов микросхеммы бесконечности. Напряжение питания 10В, напряжение логической еденицы на выходе микросхеммы 10В, напряжение логического нула на выходе микросхеммы 0В, напряжение переключения на логическую еденицу 5В.

Начальный момент времени - на всех входах микросхеммы уровень сигнала меньше логической единицы, соответственно на выходе инвертора логическая еденица(10В). Сигнал на входе АЦП равен нулю, на вход младшего разряда напряжение поступает через делитель: сигнал 27кОм - 31,6кОм(логические еденицы с выходов микросхеммы через паралельные резисторы 56, 110, 220 кОм). Получается что при входаящем сигнале АЦП равном нулю на логическом входе первого элемента уже 4,6В - логическая еденица на выходе старших разрядов подтягивает к логической еденице вход младшего разряда. Как только появится хотя бы слабый сигнал на входе АЦП напряжение на входе первого разряда подымится и логический элемент переключится...

На ыходе АЦП сигнал изменился с 1111 на 1110.

При увеличении входного сигнала поведение второго разряда АЦП аналогично, только там делитель из трех элементов 27 кОм сигнал - 37 кОм(резисторы 56 и 110 кОм со старших разрядов).

На выходе АЦП КРАТКОВРЕМЕННО появился сигнал 1100. ЭТО ГЛАВНЫЙ НЕДОСТАТОК ТАКОГО АЦП, и чем больше разрядов, тем больше вероятность считать на истиный, а промежуточный сигнал!!!!!!!!!!!!!

Самое вкусное в работе этого АЦП начитается в тот момент когда происходит переключение второго разряда АЦП - теперь вместо того чтобы подтягивать вход младшего разряда к логической еденице он тянет его к логическому нулю. Причем поскольку это происходит через резистор 56 кОм влияние второго разряда на первый будет наибольшим!!!

Младший разряд переключается и сигнал на выходе становится 1101.

Если сигнал на входе АЦП увеличится еще больше он передавит противодействие второго разряда и сигнал на выходе станет равным 1100.

Получается что когда сигнала на входе АЦП нет старшие разряды тянут входа младших разрядов к логической еденице, а при сигнале большом входном сигнале младшие разряды начинают тянуть входа старших к уровню логической еденицы.

По идее использование  в данной схемме 4-х канального компаратора позволит регулировать напряжение переключения в логическую еденицу, но цифровые микросхеммы гораздо доступнее...

 

 

 

AS31979
Offline
Зарегистрирован: 22.12.2015

Сегодня с утра удавил лень и выполнил практическую работу по измерениям скорости, в сравнении учавствовали:

http://srukami.inf.ua/pultoscop_v25110.html  - наверное самое быстрое и  известное решение на Ардуино PULTOSCOPE.

И мой кусок кода  фактически состоящий из куска кода PULTOSCOPE, этой публикации   http://robotosha.ru/arduino/digitalwrite-optimizing-arduino.html  и кусочка справочной информации с этого сайта   http://arduino.ru/Tutorial/Upravlenie_portami_cherez_registry.

Цель - понять сколько семплов сможет сделать Ардуино с внешним АЦП.

Предельная скорость оцифровки PULTOSCOPE фактически ограничивается скоростью выполнения этого куска кода:

if (razv>0){
      for(int i=0;i<700;d++){            // Заменив i на d загнал в безконечный цикл
        PORTD = B00000100;               // устанавливаем состояние pin3 как HIGH
          while ((ADCSRA & 0x10)==0);
          ADCSRA|=0x10;
          mass[i]=ADCH;
        PORTD = B00000000;               // устанавливаем состояние pin3 как LOW  
      }

Куски PORTD = B00000100; и PORTD = B00000000; нужны для измерения скорости в цикле, погрешность вызываемую выполнением этих частей кода буду определять расчетным путем позже.

Мой кусок кода:

 for(int i=0;i<700;x++){ // в оригинале кода было for(int i=0;i<700;i++)
                           // для того чтобы цикл стал бесконечным нужно
                           // не чтобы условие i<700; всегда было верным
                           // время выполнения x++ такое же как и i++
                           // в оригинале, только ни на что не влияет
       
        PORTD = B00000100; // устанавливаем состояние pin3 как HIGH
        mass[i]=PIND;      // в оригинале читается старший регистр АЦП
                           // у меня читается регистр порта, 8 бит за раз
        PORTD = B00000000; // устанавливаем состояние pin3 как LOW
      }  

Отличие только в том что идет чтение регистра порта, соответственно не нужно давать АЦП время на преобразование.

Результаты:

PULTOSCOPE

Мой код чтение данных порта в масив:

Результат для  Arduino Nano 3.0 16 МГц - с внутренего АЦП можно снять не более 309 тысяч выборок в секунду, с внешнего 941 тысячу выборок. Но для того что бы осцилограф мог считать частоту выборок в код были внесенны два баластных куска которуе сьедают 8 тактов процесора в каждом цикле. После перерасчета получается что теоретическая скорость с внутреним АЦП 365 тысяч выборок в секунду и 1777 тысяч выборок для внешненего АЦП.

Полученные расчетные данные  несколько расходятся с теми что видел в интернете когда искал информацию по осцилографу - если не изменяет автор PULTOSCOPE заявлял про 300 тысяч выборок, но не известно как он считал, да и 100% уверенности в своих расчетах нет. В любом случае ошибка не превышает 20%.

AS31979
Offline
Зарегистрирован: 22.12.2015

Выводы:

1. При минимальной переделке кода даже без разгона микроконтролера можно получить более милиона выборок в секунду, с разгоном более 2-х милионов.

2. В оригинальном скетче PULTOSCOPE линиии порта А вообще не используются, а это 6 бит.

3. При одном милионе выборок даже если на каждый период синусоиды брать 20 точек - это просмотр в приличном качестве сигналов в 50 кГц.

4. Возникает проблемма - в описании на даннный АЦП   http://www.payatel.ru/185-shema-prostogo-preobrazovatel-acp-cap.html   встречал упоминание что частота обработки сигнала ограничивается примерно 1 Мгц, можно конечно сделать 6 компараторов(две микросхеммы по 4 ОУ в каждой), просто дешево(1,8$ Arduino, 1,8$ за экран и 2$ на все остальное - кроме акумулятора и корпуса), но всего 6 уровней...

5. Товарищи практики  главный вопрос ДЕШЕВЫЙ и ДОСТУПНЫЙ АЦП - что можете посоветовать? И насколько актуальна осцилограмма разрядностью 3 бита?

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Зря время потратили, хотя не зря!

Самообразование это важнейшая вещь.!

---Максимальная скорость АЦП Пультоскопа без разгона 327 000 +/-5% готов подтвердить эксперементально!

--в соседней ветке на внешенем недорогом АЦП достигли скорости 4 000 000 

 

 

AS31979
Offline
Зарегистрирован: 22.12.2015

Уже писал в начале темы - чтобы если сгорел не было жалко, на данный момент стоимость всей начинки которая может сгореть: 1,8$ Arduino, 1,8$ за экран и 2$ на все остальное. Что бы сгорел корпус и акумулятор я даже не знаю куда это воткнуть нужно...

А у автора соседней ветки поручается 19$ - 3.5$ на корпус. акумулятор зарядка = 15$...  :( а нужен он такой если есть:

 http://kazus.ru/forums/showthread.php?t=112797&page=6    по цене 25-30$  - да дороже, но это законченное и укомплектованное изделие которое нужно только спаять, и дисплей там получше будет, да к тому же микроконтролер Ардуино совместимый. А внешний вид готового изделия - небо и земля.

Кроме того не согласен с расценками на АЦП, я сам пытался найти в продаже 8 битный быстродействующий АЦП, сначала по Кривому Рогу, потом по Украине, потом по Алиэкспресс - лучшее что нашел   11,5$ за 5 шт.

Так что пока ваш PULTOSCOPE гораздо привлекательнее по стоимости комплектующих, а если удастся прикрутить к нему простенький 4-х битный АЦП на логической микросхемме то по цене конкурентов у него вообще не будет, недостаток в виде маленького экрана можно пережить.

AS31979
Offline
Зарегистрирован: 22.12.2015

В качестве самооправдания за то что никак не могу заставить себя писать скет тестера сделал еще одну лабораторную - четырех битный АЦП на микросхемме К561ЛА7, для скептиков снято видео.

Собирал по схеме из этого сайта -   http://radiostorage.net/?area=news/1034   в первой ссылке в процесе сборки обнаруженна лажа.

https://youtu.be/hQSRuiiewPs   напряжение питания микросхеммы 9В, первый светодиод включается при напряжении чуть более 1В, значение 1111 инициируется при напряжении примерно 8,5В. Есть проблеммы с четкостью срабатывания первого разряда - грешу на контакты макетки.

Первоисточник по данной схеме - Рюмик С.М. 1000 и одна микроконтроллерная схема.

bulat943
Offline
Зарегистрирован: 19.09.2016

AS31979 пишет:

Чего не нашол так это примеров с использованием LCD12864 - даже примеров рисования нет :(

осциллограф от VirtOs первые страницы,там и скетч есть

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

AS31979 пишет:

В качестве самооправдания за то что никак не могу заставить себя писать скет тестера сделал еще одну лабораторную - четырех битный АЦП на микросхемме К561ЛА7, для скептиков снято видео.

Собирал по схеме из этого сайта -   http://radiostorage.net/?area=news/1034   в первой ссылке в процесе сборки обнаруженна лажа.

https://youtu.be/hQSRuiiewPs   напряжение питания микросхеммы 9В, первый светодиод включается при напряжении чуть более 1В, значение 1111 инициируется при напряжении примерно 8,5В. Есть проблеммы с четкостью срабатывания первого разряда - грешу на контакты макетки.

Первоисточник по данной схеме - Рюмик С.М. 1000 и одна микроконтроллерная схема.

Видео просмотрел.

Но это всего 2бита

Для того чтоб было 4бита нужно 15 компараторов.

AS31979
Offline
Зарегистрирован: 22.12.2015

Один бит это 0 или 1.

2 бита это уже - 00, 01, 10, 11.

Внимательно смотрите видео - это 4 логических элемента, но не 4 компаратора. Количество возможных комбинаций 16.

a5021
Offline
Зарегистрирован: 07.07.2013

AS31979 пишет:

Мой кусок кода:

 for(int i=0;i<700;x++){ // в оригинале кода было for(int i=0;i<700;i++)
                           // для того чтобы цикл стал бесконечным нужно
                           // не чтобы условие i<700; всегда было верным
                           // время выполнения x++ такое же как и i++
                           // в оригинале, только ни на что не влияет
       
        PORTD = B00000100; // устанавливаем состояние pin3 как HIGH
        mass[i]=PIND;      // в оригинале читается старший регистр АЦП
                           // у меня читается регистр порта, 8 бит за раз
        PORTD = B00000000; // устанавливаем состояние pin3 как LOW
      }  

Не занимайтесь изобретением велосипедов. Вечный цикл изображается так:

for(;;) {
  //...
}

// или

while (1) {
  //...
}

// или

do {
 //...
} while(1);

В отличии от вашего изобретения, тут никаких дополнительных действий, кроме бесконечного исполнения кода внутри цикла не производится.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

AS31979

Так слишком медленно

for(int i=0;i<700;x++){ // в оригинале кода было for(int i=0;i<700;i++)
                          // для того чтобы цикл стал бесконечным нужно
                          // не чтобы условие i<700; всегда было верным
                          // время выполнения x++ такое же как и i++
                          // в оригинале, только ни на что не влияет
      
       PORTD = B00000100; // устанавливаем состояние pin3 как HIGH
       mass[i]=PIND;      // в оригинале читается старший регистр АЦП
                          // у меня читается регистр порта, 8 бит за раз
       PORTD = B00000000; // устанавливаем состояние pin3 как LOW
     }  

Нужно напрямую в память писать, так быстрее в 5раз

void read_POTD (){
  mass[0]=PIND; 
  mass[1]=PIND;
  mass[2]=PIND;
  mass[3]=PIND;
  mass[4]=PIND;
  //и так пока не заполним массив
 }  
AS31979
Offline
Зарегистрирован: 22.12.2015

Проект накрылся медным тазом.

Сделать АЦП на логических элементах можно, НО есть ДВА ньюанса...

Напряжение логической еденицы должно составлять 50% он напряжения питания,а напряжение выхода должно быть близким к напряжению питания. Другой вариант - напряжение логической еденицы должно составлять 50% от напряжения выхода.

В той микрухе что мне досталась при питании 9В напряжение логической единицы на входе равно 5,2В, а напряжение выхода чуть больше 7,7В. Как результат коду 1110 соответствует не 0,6В, а почти 3В. Значению 0000 теоретически соответствует 9,8В. Поскольку подавать на вход микросхеммы напряжение больше напряжения питания чревато поучаем вместо диапазона 0 - 15, диапазон измерения 0 - 13, который ко всему прочему смещен относительно нуля.

 

Если использовать вместо цифровой микросхеммы недорогой счетверенный операционный усилитель например LM324 вылазит другая проблемма - граничная частота усиления. Рассматриваемый АЦП фактически является последовательным, для выполнения преобразования сигнал должен последовательно пройти через все 4-ре элемента. Соответственно минимальная частота усилительных элементав АЦП должна быть минимум в 4-ре раза больше частоты входного сигнала.

Вся подлянка в том что у недорогих и широкодоступных операционных исилителей граничная частота 1 - 1,3 МГц, итог частота входного сигнала не доложна превышать 250 кГц для АЦП на LM324. Если брать более дорогое операционные усилители теряется весь смысл этой затеи.

Кто знает НЕДОРОГОЙ и РАСПРОСТРАНЕННЫЙ операционный усилитель с частотой от 10 МГц????????????

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

AS31979 пишет:

.......

Кто знает НЕДОРОГОЙ и РАСПРОСТРАНЕННЫЙ операционный усилитель с частотой от 10 МГц????????????

Быстрые ОУ стоят дороже чем парралельный АЦП.

AS31979
Offline
Зарегистрирован: 22.12.2015

Конец пред последнего абзаца "теряется весь смысл этой затеи."

Сам прекрасно понимаю - АЦП 8bit 20МГц стоит 5$(с доставкой с г. Харьков "Космодром"). Меня смущает не цена, а необходимость заказывать 1 микросхемму черте от куда...

Ну надеятся ведь не вредно?

a5021
Offline
Зарегистрирован: 07.07.2013

AS31979 пишет:
Сам прекрасно понимаю - АЦП 8bit 20МГц стоит 5$(с доставкой с г. Харьков "Космодром"). Меня смущает не цена, а необходимость заказывать 1 микросхемму черте от куда...

А обычно нужные микрухи у вас прямо с потолка падают? Можно и не за $5 и не из Харькова:

Примерно в тех же краях и ОУ скорострельные обитают.

 

AS31979
Offline
Зарегистрирован: 22.12.2015

Огромное спасибо за ссылку, я тоже искал на Алиэкспресс, но такая цена мне попадалась только в партиях из 10 шт.