Пультоскоп на Arduino 27МГц!!!

karl2233
Offline
Зарегистрирован: 05.07.2015

VetalST

1. можно. Мы вроде так и собираемся делать.

2. там вроде коммутатор стоит, а в том что тут делаем - его нет. Но АЦП имеет типовое включение, так что подходит.

 

Okmor, а какие параметры получились у каналов? И эта, мне кажется что поставить одну 7660 не велика сложность, зато гарантировано. А то виртуальная земля будет иметь высокую нестабильность. И мне кажется что придётся с опорным что-то мудрить.

 

 

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Ясли бы мне надо было осциллограф, я бы его купил.

Я преследую цель создать осциллограф за МИНИМАЛЬНЫЕ деньги.

Опорное стоит как столб. Оно общее для АЦП и Ардуины откуда и общая шкала для двух каналов, которае не нуждается в калибровке.

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

Ожидаемые параметры: два канала. Один 4 000 000 выборок, а второй 300 000. Оба работают синхронно с рассогласованием 3-4 тика процессора.

Из деталей: Ардуинка - 1.5$  +   АЦП 2$   +   ОУ1$   + LCD 4$ + Макетка 1$ + энкодер 1$ + мелочь 1$

Итого 11$ - 12$

VetalST
Offline
Зарегистрирован: 29.12.2015

А к каким выводам ардуины будет подключен АЦП9280 ?????

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

VetalST пишет:

А к каким выводам ардуины будет подключен АЦП9280 ?????

D0-D7

От Serial.print() придется отказатся

VetalST
Offline
Зарегистрирован: 29.12.2015

Okmor пишет:

D0-D7

От Serial.print() придется отказатся

А я и забыл что Serial.print() пин D0 и D1.  Спасибо.

sirota
Offline
Зарегистрирован: 18.08.2015

А куда выводить? i2c? Хотя идея хороша. Ждем реализации. 4 млн выборок - это ого-го какой частоты аналоговый сигнал можно ловить!

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

sirota пишет:

 4 млн выборок - это ого-го какой частоты аналоговый сигнал можно ловить!

К сожалению это не совсем так. По скольким точкам можно более -менее адекватно построить огибающюю той же синусоиды? С десяток это наверное рядом с приемлемым минимумом. 4 мегавыборки делим на 10.

Меня лично устроит. Большинство радиолюбителей тоже. Но до идеала далеко.

Сорри. Немного в сторону. Встречал видео "почему многие не любят ардуино" (видимо ардуино айде). Прекрасный образец того как НЕ надо делать видео. Слишком много лишних слов. Тем не менее сам эксперимент интересен.

Так вот суть. Две ардуинки выполняют одно и то-же. Просто дрыгают ножкой. Но прога в одной на ардуино, другая на Си. Разница в скорости по осциллограмме раз в 10. Это к разговору о двухканальном ослике на меге 88 несколько страниц назад. Быть может в этом суть того, что он так красиво рисовал? И возможно это путь  к повышению быстродействия?

Приношу извинения, если глупость пишу, не программер ни разу. Весь мой опыт в этой области - немного Бейсика еще на Спектруме.

VetalST
Offline
Зарегистрирован: 29.12.2015

Лекс 59

А как у вас дела с LS020?

Я делал на L2F50 и для проверки LS020 переделал скетч под него. Работает шустрее чем L2F50 и почти нет мерцания на кварце 26 мгц, нужно еще с кодом поколдовать. Если хотите могу скинуть скетч и библиотеку. Я к LS020 хочу ацп добавить в будущем.

sirota
Offline
Зарегистрирован: 18.08.2015

Так и тут только самая первая "дрыгала ножками" на виринге. Следующая уже без виринга была на чтение. Отрисовка да была вирингом, но само заполнение буфера нет. А следующая и подавно будет на C заполнение буфера. 

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

VetalST пишет:

Лекс 59

А как у вас дела с LS020?

Я делал на L2F50 и для проверки LS020 переделал скетч под него. Работает шустрее чем L2F50 и почти нет мерцания на кварце 26 мгц, нужно еще с кодом поколдовать. Если хотите могу скинуть скетч и библиотеку. Я к LS020 хочу ацп добавить в будущем.

Я пока застопорился. В размышлениях. Пробу провел, но повторять тот ослик в металле смысла не вижу. 020ый мыслю либо на Хамелеон, либо там будет видно. Сейчас пока в ардуино осваиваюсь.

А идея пультоскопа на 020ом меня заинтересовала (я правильно вас понял, пультоскоп?). Почему нет? Не так сложно реализовать. И даже любопытно попробовать в цвете. Может так и оставлю. Тем более сам посматриваю сделать более компактный вариант. Придут АД823 и входную часть попробую покомпактнее. А входной аттенюатор просто на 8 позиционной крутилке от радиостанции. Поэтому был бы благодарен за скетч. Ну а с АЦП станет еще интереснее.

man_200
Offline
Зарегистрирован: 29.04.2016

Пол Союза ищет LS020 и вы туда-же! Очередной неисполнимый Хамелеон хотите получить? Разговор шел о доступности проекта и доставаемости железа. 3310, 5110, много разных по размеру TFT есть свободно. Лелею себя надеждой , что появится проект на 328-й +9280+823+TFT 240х320 - альтернатива Хамелеону!!! Просто и сердито.

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

man_200 пишет:

Пол Союза ищет LS020 и вы туда-же!

Стр. 21 пост 1041 вам некоторые вещи объяснят по поводу меня и данного дисплея. Не пропадать же добру.

НО! Если дисплей загнется, то не столь простой Хамелеон станет кучкой запчастей. А скажем Пультоскоп можно будет перевести на другой дисплей. Это одна из причин, почему я не спешу с Хамелеоном. Да и не все для него у меня есть.

man_200
Offline
Зарегистрирован: 29.04.2016

В Казахстане Сименсы - эксклюзив. Запчасти к ним заказывают в России за бешенные бабки. И это информация от многих ремонтников из разных городов. То, что проект на 3310 будет существовать параллельно, то и это замечательно

karl2233
Offline
Зарегистрирован: 05.07.2015

учитывая открытость проекта, возможность цеплять к нему практически любые дисплеи и это всё с довольно приличными параметрами - то Пультоскоп на голову круче Хамелеона.

ИМХО.

правда автор притих подозрительно =)

 

VetalST
Offline
Зарегистрирован: 29.12.2015

 Лекс 59 

вот ссылка https://yadi.sk/d/MT1KNFqErrinE

У меня тоже лежит без дела LS020 и L2F50 а, Хамелеон собирать не спешу жду версии на ардуино.

А экран можно прикрутить какой угодно на то оно и ардуино.  Главное что есть исходник, а подправить и переделать на свой лад можно все что угодно.

 

 

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

VetalST пишет:

 Лекс 59 

вот ссылка https://yadi.sk/d/MT1KNFqErrinE

У меня тоже лежит без дела LS020 и L2F50 а, Хамелеон собирать не спешу жду версии на ардуино.

А экран можно прикрутить какой угодно на то оно и ардуино.  Главное что есть исходник, а подправить и переделать на свой лад можно все что угодно.

 

 

Благодарю вас. Сейчас буду смотреть - пробовать.

Еще делители для самого дисплея надо собрать.

VetalST
Offline
Зарегистрирован: 29.12.2015

Делитель вот таким образом

 

 

 

 

 

 

 

 

гляньте здесь  http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts?page=6#comment-170753

А для экрана я вот так делал только под  LS020 1.8V ему не нужно и диод не ставил.

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

Скачал ардуино 1.0.5. Скачал библиотеку ПВМ. Прикрутил ее не без бубна. Вроде скетч загрузился в про-мини. Пойду дальше шаманить. Результаты доложу. Только сегодня уже вряд-ли успею. Спасибо.

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

VetalST пишет:

Делитель вот таким образом

 

 

 

 

 

 

 

Почему то все делают эту ашипку.

Если не учитывать входное сопротивление АІ:

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

Я гляжу на картинки делителей и не понимаю нифига. Я тоже пытался прикрутить делители прямо на вход АЦП Меги 328 в ослике М328-3310 (Он же Пультоскоп).

Правда я там ставил резюки начиная с 360 ком (вместо 100). И у меня нифига не получилось. Если делитель на 2 еще худо-бедно работал с частотокомпенсирующим кондером на 1000 пкф (!!!), то делитель на 5 делил даже меньше, чем делитель на 2. Я не от хорошей жизни там операционник поставил.

Там правда я использовал голую мегу. Но не думаю, что отличие в этом.

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Лекс 59 пишет:

Я гляжу на картинки делителей и не понимаю нифига. Я тоже пытался прикрутить делители прямо на вход АЦП Меги 328 в ослике М328-3310 (Он же Пультоскоп).

Правда я там ставил резюки начиная с 360 ком (вместо 100). И у меня нифига не получилось. Если делитель на 2 еще худо-бедно работал с частотокомпенсирующим кондером на 1000 пкф (!!!), то делитель на 5 делил даже меньше, чем делитель на 2. Я не от хорошей жизни там операционник поставил.

Там правда я использовал голую мегу. Но не думаю, что отличие в этом.

Так и должно быть. Вы не учли входное сопротивление АЦП.

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

Okmor пишет:

Так и должно быть. Вы не учли входное сопротивление АЦП.

Простите? А в чем это выражается? Вы схему посмотрели или как? Уверяю вас, элементарные расчеты я умею вполне.

Кстати, а какое входное сопротивление АЦП? Я по этому поводу немало думал и даже не один пост написал. Если сможете ответить однозначно, буду признателен.

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

VetalST пишет:

 Лекс 59 

вот ссылка https://yadi.sk/d/MT1KNFqErrinE

Я правильно понял прилагаемый текстовый файл по подключениям: в скобках даны номера портов ардуино?

Я применил про-мини. Дислей подключил по текстовому файлу. Запитал ардуинку и дисплей на 3,3 вольта. Отличие - резисторы делителя дисплея использовал 1к и 2к (это у меня уже стандарт на 3310).

Пробовал и с диодом на 1V8 и без. Ничего не произошло. Частоту кварца в скетче поставил родную 16мгц.

Я встречал упоминания, что не все ЛС020 одинаковые. Не сталкивались с подобным? Скетч вроде залился. Правда в логе выдал кучу ошибок. Прога отрапортовала конец загрузки. Скетч без делителя. Кнопки и входы-выходы пока не подключал.

Сижу чешу репу. Куда копать неясно.

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Лекс 59 пишет:

Okmor пишет:

Так и должно быть. Вы не учли входное сопротивление АЦП.

Простите? А в чем это выражается? Вы схему посмотрели или как? Уверяю вас, элементарные расчеты я умею вполне.

Кстати, а какое входное сопротивление АЦП? Я по этому поводу немало думал и даже не один пост написал. Если сможете ответить однозначно, буду признателен.

Помоему 200К, но я не проверял.

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

Okmor пишет:

Помоему 200К, но я не проверял.

А как вы тогда делители считаете?

Так вот информирую. Я пытался его измерить. Обычным способом. Подавая на вход сигнал и ставя резистор последовательно. Там где сигнал упал бы в два раза, то сопротивление резистора было бы равно сопротивлению АЦП МК.

С наибольшим резистором, что у меня есть 5,3 мегом, уровень сигнала не снизился ни на миллиметр.

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

Единственное логичное объяснение - сопротивление динамическое. Открывается вход на ничтожные доли секунды. И тогда оно видимо порядка нескольких килоом. Возможно оно даже адаптивное.

Поэтому делители прямо на вход цеплять не удается. Поэтому я офигел от ваших делителей. Поэтому написал то, что написал.

А откуда ваше "Помоему 200К, но я не проверял"?

Я уже второй раз встречаю недостоверные посты от вас. Написаные небрежно и не подумав. Не думаю, что буду прислушиваться к вам впредь.

VetalST
Offline
Зарегистрирован: 29.12.2015

Лекс 59 

Я удалил предыдущую ссылку.

Вот ID arduino-1.0.5 каким я лично все это дело компелировал https://yadi.sk/d/ax4fHpw8rsQo5

Вот скетчи для LCD_ls020 и библиотеки для них https://yadi.sk/d/F2aPqgDBrsQu8

Все проверил все работает нет никаких ошибок. Замените библиотеки в папке мои документи, Documents\Arduino\libraries на мои библиотеки с архива.

В скобках указанны пины для подключения дисплея к ардуине. У меня делитель на 1к и 680ом.

1.8V подключать не нужно.

// CS_PIN             (8) 
// REST_PIN         (7) 
// RS_PIN          (10)
// DAT_PIN        (11)
// CLK_PIN        (13)
 
Между дисплеями LS020B8UD06 и LS020B8UD05 нет ни какой разници.
 
 
 
 
 
VetalST
Offline
Зарегистрирован: 29.12.2015

Лекс 59 Вы где то писали что кнопки не подключали.

Без кнопок а точнее без подтягивающих резистров на землю, ардуина будет виснуть думая что все кнопки нажаты.

Подтяните землю к пинам кнопок.

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Вот удалось посмотреть меандр частотой 500 000 Гц.

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

Okmor пишет:

Вот удалось посмотреть меандр частотой 500 000 Гц.

Поздравляю!!!!

Ты уже обогнал Хамелеон!!!!

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Боюсь, что это какая то гармоника, но входной тракт показал себя отлично.

Кто знает как ускорить этот код.

ISR(TIMER1_COMPA_vect)//обработчик прерывания по совпадению А
{    
    OCR1A=MeasureDelay; 
    MyBuff_AI0[N++] = PIND ;
}

 

karl2233
Offline
Зарегистрирован: 05.07.2015

Okmor, однополярный вход?

 

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Вход двуполярный, но проблема в тактировании ацп.

Иду читать мануалы.

Вот эта фигня испольняется более 50 тактов. 

Как ускорить?

1 ISR(TIMER1_COMPA_vect)//обработчик прерывания по совпадению А
2 {   
3     OCR1A=MeasureDelay;
4     MyBuff_AI0[N++] = PIND ;
5 }

 

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

VetalST пишет:

Лекс 59 

Я удалил предыдущую ссылку.

Спасибо за столь подробную информацию, это здорово помогает, особенно пока ориентируешься в таких делах не очень, помогает разобраться. Попробую. Отпишусь.

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

VetalSTу.

Ардуино снова выдала кучу ошибок, но программу залила через программатор. Снова ничего. Но еще вчера у меня мелькнуло подозрение на делитель. Я ведь питаю 3,3 вольта. Просто выдернул на макетной панели резисторы по 2к на землю. Т.е. от делителя остались по 1к на ардуино.

Результат ниже. Все мелькает, но это без кнопок пока. Дисплей несколько тускловат в смысле подсветки. Но это какой достался. Да еще сверху защитный чехольчик из пленки от ламинатора для перестраховки.

Спасибо. Попробую поиграть. Возможно еще не сегодня-завтра, еще с входным трактом разобраться предстоит. Мне не хочется повторять на ЛМ833. Скоро должны прийти АД823. Возможно и при 5 вольтах будет достаточно для Пультоскопа.

Я вот думаю. В Хамелеоне один из портов дрыгает ножкой и от этого дела запитывается подсветка. Другой вариант подсветки - питать 12-16 вольт. Если делать батарейное питание, то второй вариант будет быстро садить литий. Поразмышляю. Прелесть схем на Ардуино в том, что можно не лепить плату всерьез. Монтажки достаточно. Я пока не слишком привык к подобному.

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

Лекс 59 В Хамеоеоне стоит повышайка на 12в для подсветки дисплея. DC-UP.

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

bodriy2014 пишет:

Лекс 59 В Хамеоеоне стоит повышайка на 12в для подсветки дисплея. DC-UP.

Да. Я ее и имел в виду. Сорри, если выразился невнятно.

Судя по вашему фото, реальный диапазон Хамелеона в пределах 300-400 кгц по меандру?

VetalST
Offline
Зарегистрирован: 29.12.2015

Лекс 59  Как на счет мерцания экрана? 

Роскомпелируйте строчки 466 и 485 уберите /* и */ . Это сетка. И послотрите как на ваш взгляд лутче для глаз с ней или безнее.

//отрисовка графика№№№№№№№№№№№№№№№№№№№№№
      if(paus==0){
        lcd.fillRect(30, 16, 175, 112, BLACK);//стиране поле графика
        //////////////////////////////////////////////////сетка
     /*   for(byte i=113;i>15;i=i-3){
          lcd.drawPixel(26,i, BLUE);
          lcd.drawPixel(43,i, BLUE); 
          lcd.drawPixel(60,i, BLUE); 
          lcd.drawPixel(77,i, BLUE); 
          lcd.drawPixel(94,i, BLUE); 
          lcd.drawPixel(111,i, BLUE);
          lcd.drawPixel(128,i, BLUE); 
          lcd.drawPixel(145,i, BLUE); 
          lcd.drawPixel(162,i, BLUE);
        }

        for(byte i=30;i<175;i=i+3){
          lcd.drawPixel(i,25, BLUE);
          lcd.drawPixel(i,42, BLUE); 
          lcd.drawPixel(i,59, BLUE);
          lcd.drawPixel(i,76, BLUE); 
          lcd.drawPixel(i,93, BLUE); 
          lcd.drawPixel(i,110, BLUE);
        }*/
        //////////////////////////////////////////////////////
        lcd.fillCircle(165,110-SinU/3, 2, YELLOW);//рисуем уровень синхронизации 
        lcd.fillCircle(165,110-SinU/3, 3, YELLOW);//рисуем уровень синхронизации 
        x=30;
        for(int y=sinhMASS;y<sinhMASS+145;y++){ 
          //for(int y=0;y<145;y++){
           if(razv<7){
            x++;
          }
          if(razv==7){
            x=x+2;
          }
          if(razv==8){
            x=x+3;
          } 
          if(razv==9){
            x=x+4;
          }
          if(razv==10){
            x=x+5;
          }
          if(x>175){
            x=175;
          } // что бы не засирало экран

          // lcd.drawLine(x+1,110-massDEL[y]/3+1, x+2,110-massDEL[y+1]/3-1, BLACK);//стираем график
          // lcd.drawLine(x,110-massDEL[y]/3, x+1,110-massDEL[y+1]/3, BLACK);//стираем график
          
          lcd.drawLine(x,110-mass[y]/3, x+1,110-mass[y+1]/3, GREEN);//график
          lcd.drawLine(x+1,110-mass[y]/3+1, x+2,110-mass[y+1]/3+1, GREEN);//график
        }
        sinhMASS=0;  
        MenuT();  
      }

Я вчера не смог , но всеравно на днях хочу попробовоть побороть мерцание.

 

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

Лекс 59 пишет:

Да. Я ее и имел в виду. Сорри, если выразился невнятно.

Судя по вашему фото, реальный диапазон Хамелеона в пределах 300-400 кгц по меандру?

Я считал сколько он мегасемплов делает и писал на форуме, не помню 4 или 6 MSPS.

Это слишком неопределенное понятие того "что можно рассмотреть", зависит от ситуации.

Если ШИМ сигнал то да, меандр 300-400 можно смотреть, а если допустим снаббер подбирать то до 200.

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

VetalSTу

Я пока не готов сказать про мерцание. Сейчас собираю более полный вариант Пультоскопа на ЛС020. уже под нормальное питание и кнопки.

Почитал ваш код. Немного посмеялся над некоторыми комментами. Но увы, кроме комментов это пока для меня недалеко от китайской грамоты. Уж про синтаксис и не говорю.

Буду готов - сообщу про мерцание. Кстати, в ослике на меге32 и ЛС020 питание идет через транзистор, который управляется МК. Т.е. питание подается не непрерывно. А мерцания там не было. Может там где-то решение?

На ваш вопрос о синусоиде. Линия развертки на уровне 2,5 при просто открытых входах, я там еще ничего не соединял. Скорее всего будут обе полуволны. Почему - ХЗ. Вход АЦП вообще для меня пока темен. Странная штука. Я об этом писал в посте 1175 (сердитые нотки - не вам). Он похоже, сам выбирает себе режим. На сколько стабильно - тоже ХЗ.

Добавлю.

Во блин! Сейчас включил 5 вольт на ардуино, дисплей через 4 диода, пока без кнопок. А линия развертки на нуле сидит. Ох и хитрая штука вход АЦП МК.

Еще раз. Линия снова на 2,5. Что сказать не знаю. Вход пока открытый. А тот вариант питания, что я пробую - фиговенький. Меряю после 4 ого диода - 1,9 вольта. А после 3 его - 9 с копейками. Откуда? Надо стабилизатор ставить. А то доиграюсь с дисплеем...

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

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

VetalSTу

Возможно это первое впечатление. Мерцание есть. Не могу сказать, что сильно мешает. Готов смириться.

А сетку я не вижу. Возможно позже попробую, как вы сказали, раскомментировать строки.

Пока голый вход.

Фото снова не грузится. Половина синусоиды. Линия на нуле.

Сетка появляется в паузе при прокрутке. Удобно, должен сказать.

Конечно, цветной дисплей производит хорошее впечатление. Да и нагляднее. Мне нравится. Если Пультоскоп АЦП реализую на ТФТ, то возможно первый переделаю под ЛС020. Пока спешить с железом не буду, пожалуй. Да и входной тракт все-равно отрабатывать, что для одного, что для другого.

Идея Окмора по искусственному нулю мне не нравится. Чисто из практики. Очень часто при реальных измерениях трудно избавится от наводок, в том числе от рук. Тогда обычно одну руку на металлический корпус ослика заземляешь. Как поведет себя искусственный ноль в такой ситуации - ХЗ. И вообще проблемы экранировки в приборах с высокой чувствительность - очень непростые проблемы подчас. Осложнять ее дополнительно я бы не стал.

VetalST
Offline
Зарегистрирован: 29.12.2015

Лекс 59

Этот код сказать что я писал не могу, так как я его тупо копировал с авторских скетчей bodriy2014 V2 часть с 5110 и часть  на TFT экране. Я только подставлял свои значения, ну и немного своего.   

Соберите полностью как положенно с питанием и потом напише что и как. У меня четко стоит при включении на 0, а синус показыват полностью две полуволны. Вот так http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts?page=12#comment-175783  постоянку показывает как положенно. 

А ошибки красным в начале компиляции, это ID ардуино ругается что библиотека экрана написанна для старой версии, но ID ардуино 1,0,5 или 1,0,6 все равно ее проглатует и создает прошивку. 

Вечером поробую отключить подсветку и все лишне, и гляну откуда берется синус. Ведь на 5110  одна полуволна как и положенно.

 

 

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

VetalSTу

Частотомер, когда синус через конденсатор особенно, показыват чаще всего "0". При игре синхронизацией иногда что-то пишет, но безбожно врет. Я правильно понял, частотомер чисто програмный? Не аппаратный как в Пультоскопе на 3310?

Про частотомер я пока четко не понял закономерностей.

 

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Okmor пишет:

Боюсь, что это какая то гармоника, но входной тракт показал себя отлично.

Кто знает как ускорить этот код.

ISR(TIMER1_COMPA_vect)//обработчик прерывания по совпадению А
{    
    OCR1A=MeasureDelay; 
    MyBuff_AI0[N++] = PIND ;
}

Боюсь, что накрылась наша качалка медным тазом. Прошлая фотка захвата 500 000 Гц оказалась стробоскопическим эффектом.

Немного оптимизировал код..

Терперь он выглядит так : ISR(TIMER2_COMPA_vect) {   MyBuff_AI0[N++] = PIND ; }

Ногодрыг на CLK АЦП организован на втором таймере частотой 8 000 000 Гц.

Это главный цикл захвата сигнала. Меандр 20 000 Гц выглядит так. И это максимум чего удалось добится.

Максимальная частота захвата 800 000 Гц, 20 тиков на одну точку.

Над оптимизацией ISR(TIMER2_COMPA_vect) {   MyBuff_AI0[N++] = PIND ; } придется серезно поработать.

Какие есть идеи.

 

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

Okmor пишет:

Какие есть идеи.

Жаль, рано я обрадовался.

На счет ускорения выполнения  в Атмел студии можно настроить параметр оптимизации от него зависит во сколько тактов будет выполняться код, там есть возможность на скорость оптимизировать или надежность, если не то ни другое не подходит можно вставлять АСМ вставки прямыми ассемблерными командами там их не много и синтаксис не сложный и это будет максимум что можно. 

Как в  Arduino IDE это сделать не знаю, возможно есть файл с флагами компилятора и модно ли здесь делать АСМ вставки и сколько команд и какие тоже не знаю, если найдешь ответ со мной не забудь поделиться, чувствую без них мы максимум не выжмем. 50тактов на команду это вредительство для наших целей!!!

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

Например если нашему АЦП нужно 4 такта на преобразование значит при тактировании 20МГц можно собирать 5мегасемплов выборки. Ты даташит куришь давно там должно быть.

 

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Вопрос тактирования решен.

Первый таймер TIMSK1 тактирует с частотой 8 000 000 Гц, в не зависимости от частоты захвата.

Второй таймер TIMSK2 производдит захват сигнала.

У меня есть идея как в оптимизировать код  MyBuff_AI0[N++] = PIND ; нужно убрать из него переменную N вообще и заменить ее константой.

Вот сравнение с переменной и константой.

PORTB = p[1]; //Константа

  4e:   80 91 63 00     lds     r24, 0x0063

  52:   88 bb           out     0x18, r24       ; 24

//*********************************************

char i = PINB; //Переменная

  4e:   86 b3           in      r24, 0x16       ; 22

PORTC = p[i];

  5c:   99 27           eor     r25, r25

  5e:   87 fd           sbrc    r24, 7

  60:   90 95           com     r25

  62:   e0 91 64 00     lds     r30, 0x0064

  66:   f0 91 65 00     lds     r31, 0x0065

  6a:   e8 0f           add     r30, r24

  6c:   f9 1f           adc     r31, r25

  6e:   20 81           ld      r18, Z

  70:   25 bb           out     0x15, r18       ; 21

 

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

Okmor существенный прирост в пять раз!

Чем смотришь дай ссылку пож. или название.

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Ничем не смотрю. Содрал здесь.

 

Вот сравнение с переменной и константой.

PORTB = p[1]; //Константа

  4e:   80 91 63 00     lds     r24, 0x0063   //*2

  52:   88 bb           out     0x18, r24       ; 24 //*1

//*********************************************

char i = PINB; //Переменная

  4e:   86 b3           in      r24, 0x16       ; 22

PORTC = p[i];

  5c:   99 27           eor     r25, r25  // * 1

  5e:   87 fd           sbrc    r24, 7  //*2-3

  60:   90 95           com     r25   //*1

  62:   e0 91 64 00     lds     r30, 0x0064 //*2

  66:   f0 91 65 00     lds     r31, 0x0065  //*2

  6a:   e8 0f           add     r30, r24 // *1 

  6c:   f9 1f           adc     r31, r25  //*1

  6e:   20 81           ld      r18, Z  //*2

  70:   25 bb           out     0x15, r18       ; 21   //*1

//всего 14 тиков. и еще 6 на N++ так и получается 20 тактов на одну точку, или 800 000 fps

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Иду учить ассембер. Вспомню електронику МК-61. 

Там фигня целая. Всего то пол сотни операторов из которых используется 20-30. :-)

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Подучил ассемблер :-)

Вот чего удалось добится для меандра 500 Кгц.

Частота захвата 5 300 000 точек/сек. Это 3 такта на одну точку.

Думаю, что это максимум.

karl2233
Offline
Зарегистрирован: 05.07.2015

и то хлеб!

это, как понимаю с ОУ на однополярном?

если поробовать двухполярное? или это не из той оперы и питание никакого влияния на этот аспект не окажет?

читал пяток последних сообщений несколько раз... 
н-дя... 
ощущаю себя полным неандертальцем:
лично мне ничего не понятно, но интересно до жути =)
Okmor, готов для экспериментов один АЦП(из двух у меня) и пару ОУ(из пяти) передать.