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

Electronik83
Offline
Зарегистрирован: 06.12.2015

Electronik83 пишет:

Чет финал все не выходит у меня сделать, думал все готово - но тормозить что то все стало. Работаю над кодом. Ещё машина придумала ломаться раз в неделю... и клиенты в гараж прилезли. Долго, правда, но работы идут!

Буфер АЦП для финала увеличил с 400 до 700 - появились тормоза, FPS мало стало. Думал алгоритмы мои какие так тормозят, долго ловил баг - и такая херня. Не ожидал такого результата и разницы в объеме буфера с FPS. Курю прошиву дальше. Напильником пилю - турбинку не дали, о фрезере даже не мечтаю)))))

P.S. Еще сделал выход FPS на пин led выход - не умеет наш осциллоскоп мерять инфранизкие частоты. Светодиодом пришлось обойтись.. Первый раз один пультоскоп не помог второму...

DmitriyVVV
Offline
Зарегистрирован: 25.04.2017

Доброго времени суток! Ребята, нужна ваша помощь! Китаец прислал экран на ILI 9341... Какие библиотеки нужно подгрузить и что в коде нужно исправить? Заранее благодарю!

Electronik83
Offline
Зарегистрирован: 06.12.2015

DmitriyVVV пишет:

Доброго времени суток! Ребята, нужна ваша помощь! Китаец прислал экран на ILI 9341... Какие библиотеки нужно подгрузить и что в коде нужно исправить? Заранее благодарю!

Ну тут как бы не так так все просто.... если, конечно, кто то не написал прошиву под него.

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

DmitriyVVV пишет:

Доброго времени суток! Ребята, нужна ваша помощь! Китаец прислал экран на ILI 9341... Какие библиотеки нужно подгрузить и что в коде нужно исправить? Заранее благодарю!

На этом дисплее уже не раз запускали пультоскоп,

по памяти этот пост, другие ищите сами.

Sasha80
Offline
Зарегистрирован: 18.01.2016

Здравствуйте! Помогите разобраться. Вот мерею девайсом переменку, показывает 0,5В (пол волны синуса на дисплее). Это реальные данные напряжения, либо нужно умножить на *2 т.к. синус состоит из двух полуволн.

Затем чтоб увидеть весь синус впаял пару резисотров по совету Бодрого. (методом подбора определил их значение 3,3К). Синус увидел весь, но Ноль он принимает в значении 0,5. Все ли верно?

Electronik83
Offline
Зарегистрирован: 06.12.2015

При опорном в 5 вольт - 2,5 вольта должен быть нулем. При этом резистор по входу (R12 вроде) должен быть меньше, чем в делителе (3.3к в твоем случае). По входу можно кондеснатор проходной поставить, если интересует только переменка - должно быть получше. И я бы в твоем случае ограничил стабилитронами напряжение на входе ардуины, чтоб не попалить последнюю. При такой схеме подключения "средней точки" напряжение будет скорее всего показывать не точно. И ваще  такую схему считаю убогой. Но если среднюю точку делителя сделать землей входа, то тогда куда еще пошло бы. И тогда напряжения будет точно показывать.

Sasha80
Offline
Зарегистрирован: 18.01.2016

Electronik83 спасибо за дополнительные рекомендации! Вторая часть вопроса понятна! Вопрос первой части требует конкретного ответа (чет с возрастом туже соображаю :)). 

Опорное 1.1, прибор без делителя на входе (все по стоку) Измерения переменки дают значение 0,5в - это окончательно точное значение, или его нужно умножить на два, т.к на графике имеем только пол волны?

Electronik83
Offline
Зарегистрирован: 06.12.2015

Sasha80 пишет:

Опорное 1.1, прибор без делителя на входе (все по стоку) Измерения переменки дают значение 0,5в - это окончательно точное значение, или его нужно умножить на два, т.к на графике имеем только пол волны?

Половина опорного напряжения - это и есть нулевой уровень. Т.е. при 1.1В опорном - ноль - это 0.55В.

По измерению: если нужна амплитуда сигнала (размах), то складываем верхний полупериод и нижний, т.е. умножаем на два. При опорном 1.1В - максимальная амплитуда будет равна 1.1В.

DmitriyVVV
Offline
Зарегистрирован: 25.04.2017

Добрый день! Взял за основу ваш код. Только экран подсветкой мерцает и все... Пожалуйста посмотрите, может где ошибка закралась...

[code]
//страничка проекта http://srukami.inf.ua/pultoscop_v2.html
//дистплей TFT SPFD5408
#include <Adafruit_GFX.h>    // Core graphics library
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
//пользовательские настройки
#define levo 12
#define ok 11
#define pravo 10
#define vertikal 2   //размер вертикальной сеткаи(если "0" отключениа)
//пользовательские настройки
byte mass[501];//массив АЦП
byte massDEL[501];
byte menu=1;//переменная верхнего меню
byte razv=0;//значение развертки
float x=60;//счетчик оси Х
int Vmax=0;// максимальное напряжение 
float Vakb=0;//напряженеиЕКБ
unsigned long t=0;//переменная для ращета развертки
unsigned long pause=0;//переменная для замены Delay
int t_del=0; //значение цены деления развертки в микросекундах
bool opornoe=1; //флаг опорного напряжения
bool paus=0; //флаг режима паузы
bool clen_p=0;//флаг чистки паузы
 
DmitriyVVV
Offline
Зарегистрирован: 25.04.2017

Шапку кода брал у форумчанина 240265

Electronik83
Offline
Зарегистрирован: 06.12.2015

DmitriyVVV пишет:

Добрый день! Взял за основу ваш код. Только экран подсветкой мерцает и все... Пожалуйста посмотрите, может где ошибка закралась...

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

И попросим уважаемых форумчан поделиться рабочим скейтчем под ваш экран (SPFD5408)....

DmitriyVVV
Offline
Зарегистрирован: 25.04.2017

Да, господа форумчане, поделитесь пожалуйста! Заранее благодарю!

240265
240265 аватар
Offline
Зарегистрирован: 12.08.2015

Запустите сначала какой нибудь пример из библиотеки чтобы убедится что экран правильно подключен.

grif66
Offline
Зарегистрирован: 28.04.2017

Доброго дня. Собрал пультоскоп на коленке, проверил, сделал печатку под окончательный вариант. Собрал все в корпус. Вчера решил погонять с лабораторным осликом, оказалось в DDS вообще нет никаких сигналов, разве что в режиме пилы какой-то мусор летит и все. Остальные режимы ОК.

Скетч PULTOSCOPE_LCD5110_final2_DDS_Z_EL83_EDITION и все библиотеки из архива с этим скетчем. При загрузке не ругался. Кварц родной 16мгц.

 

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

grif66 пишет:

Доброго дня. Собрал пультоскоп на коленке, проверил, сделал печатку под окончательный вариант. Собрал все в корпус. Вчера решил погонять с лабораторным осликом, оказалось в DDS вообще нет никаких сигналов, разве что в режиме пилы какой-то мусор летит и все. Остальные режимы ОК.

Скетч PULTOSCOPE_LCD5110_final2_DDS_Z_EL83_EDITION и все библиотеки из архива с этим скетчем. При загрузке не ругался. Кварц родной 16мгц.

 

вы фильтр для ддс генератора делали? рц цепочку

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

grif66 пишет:

Доброго дня. Собрал пультоскоп на коленке, проверил, сделал печатку под окончательный вариант. Собрал все в корпус. Вчера решил погонять с лабораторным осликом, оказалось в DDS вообще нет никаких сигналов, разве что в режиме пилы какой-то мусор летит и все. Остальные режимы ОК.

Скетч PULTOSCOPE_LCD5110_final2_DDS_Z_EL83_EDITION и все библиотеки из архива с этим скетчем. При загрузке не ругался. Кварц родной 16мгц.

---Сигнал для DDS берете с пина 10?

---R11 и С2 подсоединяли?

 

grif66
Offline
Зарегистрирован: 28.04.2017

да все по схеме 0.1мкф и 270 ом. Пин 10.

Добавлю. Сейчас попробовал залить вариант скетча PULTOSCOPE_LCD5110_EL83ED_d17032017. В нем много изменено в плане внешнего вида. Глючат кнопки, в первом варианте работают четко. А вот  DDS генератор работает как часы. Т.е. проблема в 1 скетче видимо с вэйвами.

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

grif66 пишет:

да все по схеме 0.1мкф и 270 ом. Пин 10.

Добавлю. Сейчас попробовал залить вариант скетча PULTOSCOPE_LCD5110_EL83ED_d17032017. В нем много изменено в плане внешнего вида. Глючат кнопки, в первом варианте работают четко. А вот  DDS генератор работает как часы. Т.е. проблема в 1 скетче видимо с вэйвами.

Я этот скетч писал, его сипользую http://srukami.inf.ua/rar/PULTOSCOPE_LCD5110_final2_DDS_Z.rar

 

grif66
Offline
Зарегистрирован: 28.04.2017

Этот скетч дорабатывал EL83, значит вопрос по работе DDS генератора к нему.

grif66
Offline
Зарегистрирован: 28.04.2017

разобрался сам. У автора этого скетча PULTOSCOPE_LCD5110_final2_DDS_Z_EL83_EDITION  в массиве данных DDS генератора строки выглядят так:

const byte sinM[]     PROGMEM = {1,6,15,29,48,69,92,117,143,168,191,212,229,243,251,255,254,248,237,222,203,181,156,131,106,81,59,39,22,10,3,1};
const byte pilaM[]    PROGMEM = {1,9,17,25,33,41,49,57,65,73,81,89,97,105,113,121,129,137,145,153,161,169,177,185,193,201,209,217,225,235,245,255};
const byte RpilaM[]   PROGMEM = {250,246,238,230,222,214,206,198,190,182,174,166,158,150,142,134,126,118,110,102,94,86,78,70,62,54,41,33,25,17,9,1};
const byte trianglM[] PROGMEM = {1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,255,239,223,207,191,175,159,143,127,111,95,79,63,47,31,15,1};

а в оригинале в скетче PULTOSCOPE_LCD5110_final2_DDS_Z в том же самом массиве написано так:

byte sinM[32]={1,6,15,29,48,69,92,117,143,168,191,212,229,243,251,255,254,248,237,222,203,181,156,131,106,81,59,39,22,10,3,1};
byte pilaM[32]={1,9,17,25,33,41,49,57,65,73,81,89,97,105,113,121,129,137,145,153,161,169,177,185,193,201,209,217,225,235,245,255};
byte RpilaM[32]={250,246,238,230,222,214,206,198,190,182,174,166,158,150,142,134,126,118,110,102,94,86,78,70,62,54,41,33,25,17,9,1};
byte trianglM[32]={1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,255,239,223,207,191,175,159,143,127,111,95,79,63,47,31,15,1};

собственно замена этих строк на оригинальные привела к тому, что DDS генератор заработал. остальное ничего не менял. Крышечку закрыл. прибор готов к использованию. Еще бы фотки найти как с компа вставить, а не с обменников.

Electronik83
Offline
Зарегистрирован: 06.12.2015

grif66 пишет:

разобрался сам. У автора этого скетча PULTOSCOPE_LCD5110_final2_DDS_Z_EL83_EDITION  в массиве данных DDS генератора строки выглядят так.....

Да, да. Я вкурсе об этой проблеме. Давно все пофиксено)))) Ссори)) 

denbox
Offline
Зарегистрирован: 18.09.2016

DmitriyVVV

Доброго времени суток! Ребята, нужна ваша помощь! Китаец прислал экран на ILI 9341... Какие библиотеки нужно подгрузить и что в коде нужно исправить? Заранее благодарю!

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

https://ru.files.fm/u/43749zt4#_

Rif
Offline
Зарегистрирован: 29.04.2017

Всем привет. Собираю осциллограф на ардуине, но не могу найти рабочую библиотеку для дисплея L2F50 от siemens S65. Кто может скинуть рабочую библиотеку? Заранее спасибо

grif66
Offline
Зарегистрирован: 28.04.2017

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

Joiner
Offline
Зарегистрирован: 04.09.2014

Классно!

pter
Offline
Зарегистрирован: 15.02.2016

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

grif66
Offline
Зарегистрирован: 28.04.2017

VicSan
Offline
Зарегистрирован: 27.04.2017

Добрый день или вечер. Попался на глаза этот проект. Думаю переделать на ESP8266 12F. Как кто считает, есть ли смысл? Все-таки 80 МГц под капотом, может АЦП  12 бит поставить?

VicSan
Offline
Зарегистрирован: 27.04.2017

К предыдущему посту. Думаю, что разъемы BNC все-таки было бы правильней. А так- молодец. Я уже и забыл, когда платы руками рисовал. Ностальжи )))

grif66
Offline
Зарегистрирован: 28.04.2017

VicSan пишет:

К предыдущему посту. Думаю, что разъемы BNC все-таки было бы правильней. А так- молодец. Я уже и забыл, когда платы руками рисовал. Ностальжи )))

BNC в мой корпус не лезут, большие они. Провода-щупы от осциллографа будут использоваться с переходником BNC-SMA. И для самого прибора сделал 2 провода на SMA разъемах. Еще будет подключаться блок для измерения натяжения клиновых ремней (по частоте колебаний) тоже на таких же разъемах.

VicSan
Offline
Зарегистрирован: 27.04.2017

И все-таки, я думаю, есть смысл перевести проект на библиотеку u8glib. Проосто универсальнее получится и под всякие монохромные дисплеи подойдет. Жду ардуинки с кварцем. Завалялся у меня LCD 128x64 Winstar. Не пропадать же добру, которое стоит как TFT. Жаба давит, что без дела лежит.

По поводу ESP 8266. Если я сооружу переходник на I2C, то выводов хватит слихвой. Вопрос: насколько быстро будет отрабатывать экран? Напрямую к аруинке при полном буфере отдает 30 fps. По i2c пока не пробовал, завтра буду травить плату и паять переходничок. Гляну, что получится. Да, еще, завалялось у меня с умного дома на Raspberry кучка АЦП MCP3208 12 бит.  Spi , думаю тоже подкинуть в этот проект. Люди скажут-дорого, лишние выводы и будут правы. Но заказывал оптом у братьев наших меньших. Получилось дешевле чем у нас раза эдак в три тире пять, остался запас. Надо реализовывать. Из-за одного пина. Прошу совета у старожилов. Я человек новый здесь, вроде 60 страниц осилил прочитать, но так ничего путного и не нашел ( в сторону АЦП). Опыта написания скетчей особо нет, я как-то напрямую привык (AVR-GCC), но с ESP выход вижу пока один-Arduino IDE ( Atom). Есть мысли перейти на  новый контроллер? И если все, что я писАл ерунда, просьба обосновать без обсирушек. 

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

VicSan

---LCD 128x64 Winstar Дисплей отличный пойдет

---ESP 8266 Эта штука для осциллографа не пойдет

---MCP3208 Maximum sampling rate is 100KSPS at VDD=5V. тоже не пойдет

Все выше мое ИМХО.

 

VicSan
Offline
Зарегистрирован: 27.04.2017

Вот спасибо. А почему ESP 12F не пойдет? Даже без внешнего АЦП у него есть один 10 битный аналоговый вход. 

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

VicSan пишет:

Вот спасибо. А почему ESP 12F не пойдет? Даже без внешнего АЦП у него есть один 10 битный аналоговый вход. 

Уже в этой ветке писал раз пять точно.

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

VicSan
Offline
Зарегистрирован: 27.04.2017

Спасибо, где-то недочитал. 

Electronik83
Offline
Зарегистрирован: 06.12.2015

To grif66

 Выкинь R1, R2 и R3 - без них будет также))) По рисунку - старая закалка сразу видна, раньше только так рисовали)))

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

для VicSan
"И все-таки, я думаю, есть смысл перевести проект на библиотеку u8glib."

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

VicSan
Offline
Зарегистрирован: 27.04.2017

Вот. сижу разбираюсь. Дисплей подключил пока по dataline. 13 пинов на promini улетело. Кусок кода из этого проекта заработал. Вообще U8G2lib - под монохромные дисплеи, не знаю, как на Siemens себя поведет. Хуже другое- при прошивке ардуинки дисплей приходится снимать, иначе не шьется. Это я про Winstar 128x64. Все-таки придется его переводить на I2C. Порты освободить, да и в готовом приборе чтобы легче прошивать было.

sakatgg
Offline
Зарегистрирован: 09.03.2017

Electronik83, Стояла версия PULTOSCOPE_SSD1306_final2_DDS_Z_EL83_EDITION на 25Мг, наводку до 2.5В правильно 50Гц показывало (1 скрин).

Прошил на 27Мг - стало показывать заоблачную величину (2 скрин). Прошил на 32Мг - тоже самое (3скрин). 

Где может надо еще подкорректировать? Меняю только #define overclock 16 на свои значения.

На Oled SSD1306 с терминалом, с ускоренным выводом, как дела обстоят? На последней SSD1306 тормознуто дюже выводит. На последней версии для LCD5110 намного быстрее, но экран маловат разрешением. Спасибо.

 

VicSan
Offline
Зарегистрирован: 27.04.2017

А где кондеры на кварц?

sakatgg
Offline
Зарегистрирован: 09.03.2017

VicSan, Поставил 2шт на 22pF на кварц - не изменилось.

Если поставить кварц на 16Мг (в скейче 32Мг) - частоту 100гц показывает

VicSan
Offline
Зарегистрирован: 27.04.2017

Ну так это естественно, Вы не меняя в коде частоту поставили кварц в два раза меньше частотой. Но в случае с 32MHz я бы поставил 33pF.

sakatgg
Offline
Зарегистрирован: 09.03.2017

22pF стоят, ошибся в написании. На 82pF ставил - не заводиться. Пример с 100Гц - это так на всякий случай, понятно что будет работать. 

VicSan
Offline
Зарегистрирован: 27.04.2017

Попробуйте optiboot.

sakatgg
Offline
Зарегистрирован: 09.03.2017

Загрузчик врятли влияет. Да и на 25Мг иногда вместо 50Гц проскакивает это заоблачное значение. Тут скорее уже аппаратное ограничение скорее всего.

VicSan
Offline
Зарегистрирован: 27.04.2017

Причин может быть куча. От конденсаторов на питание, до неправильной разводки питания. Надо схему Вашу смотреть. По фоткам не совсем понятно.

VicSan
Offline
Зарегистрирован: 27.04.2017

Как питание на контроллер разведено?

Electronik83
Offline
Зарегистрирован: 06.12.2015

Баг с выводом частоты на OLED SSD1306 я тоже наблюдал. Вроде даже правил его. Я свои прошивки не тестирую на разных частотах. Только на 16 МГц, поэтому по некорректности отображения частоты ничего не могу сказать. На данный момент допишу под 5110, потом буду переделывать под разные экраны (это не долго). Первым делом переделаю под SSD306. Как то так....

И тут скорее всего что не в питании дело. Я заметил, что контроллер наводку воспринимает как то под другому, нежели конкретный сигнал. Я просто сравнивал наводку и такой же сигнал, как наводка - контроллер выдавал разные результаты. С чем это связано - я не знаю. Может реально с питанием что, но маловероятно.

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

sakatgg
Offline
Зарегистрирован: 09.03.2017

Питание пробовал с 2х разных литиевых usb боксов, а также БП от роутера Кинетик через модуль на 1117 - стабилизатор на 5В . Во всех случаях косяк на 27Мг имеется.

Сейчас кстати словил на разгоне - залочился МК - Lockbits включились, хорошо  fusebit doctor есть. Так что осторожнее с экстремальным разгоном :)

Electronik83
Offline
Зарегистрирован: 06.12.2015

sakatgg пишет:

Питание пробовал с 2х разных литиевых usb боксов

Я все же думаю, что питание не виновато. Или преобразовалка 3.7 -> 5 может че портит... Напрямую с лития никак? Просто есть такой шанс, что в фоновые 50 герц включены всякие ВЧ помехи, от преобразователя напряжения или компа, вот МК и не знает, что показать. Хотя эти ВЧ помехи были видны бы на экране, т.к. рисуем байт за байтом. Это все ИМХО! Т.е. мысли, может все не так.
P.S. Еще не так давно заметил, что первый байт преобразования АЦП выдает херню, может тут косяк. Скорее всего тут! Тогда синхронизация неверно отрабатывается! А программное измерение частоты отчасти работает как синхронизация! Алгоритмы примерно одинаковы.

sakatgg пишет:

Сейчас кстати словил на разгоне - залочился МК - Lockbits включились

ООООоооо! Я думал, что такого не бывает:) До скольки разогнал???? Доктора тоже паял - брал взаймы у кореша атемегу для этого:)) Свои все залочил случайно:))