Привет всем пикабушникам, а особенно тем кто занимается разработкой софта, разработкой устройств и ремонтом различной техники, ведь именно им и будет интересна эта статья) Так как я и сам отношусь к данному контингенту, со временем пришла мысль о том что было бы неплохо иметь на столе простенькое средство анализа сигналов выходящих с ног моих настольных arduino и stm32. Честно скажу, долго я над выбором не думал, и купил первый попавшийся осцилл - !!! ВНИМАНИЕ !!! ДАЛЬШЕ БУДЕТ НЕ РЕКЛАМА !!! Hantek 6022BL (конец не рекламы).
Ну и спустя 2 недели мне пришел этот алюминиевый красавец. О качестве пробников, внешнем виде и прочем вы можете найти видео на youtube, и даже на русском языке. Мое же внимание привлекло программное обеспечение поставляемое вместе с прибором иии...честно - восторга оно не производит.
Далее по списку:
1) Частые зависание и вылеты программы. Не знаю, связано ли это как-то с использованием Win10, но тем не менее - раздражает.
2) Запоминаемый фрагмент уж очень маленький, если синей крутилкой вы выбрали 200 мс, то и просмотреть вы сможете только 200 мс. Непонятно в чем проблема запомнить больший фрагмент, ведь данные хранятся на ПК.
3) Некорректное отображение интерфейса программы на конкретно моем мониторе (4к).
Так как руки чесались поделать что-нибудь, было решено создать собственное ПО для управление этим добром, и желательно было создать ПО лишенное вышеперечисленных косяков. Итак, в комплекте с ПО был обнаружен SDK (видимо узкоглазые хитрожопы знали что их ПО несовершенно) и примеры проектов реализующих основные функции устройства. В SDK содержатся dll для работы с прибором, например таких функции как установка соединения с прибором, установка различных параметров, чтение данных.
Итак, подготовив библиотеки и открыв Qt Creator был создан первый проект целью которого являлось простое чтение и отображение данных при частоте дискретизации 48 Msa/s. Вот тут то я и понял что я нихрена не понял в работе осциллографов. По моему мнению при данной частоте дискретизации я должен получать от прибора, например, 48 000 отсчетов в каждую миллисекунду. Но нифига, оказалось что это не так, потому как время выполнения функции чтения составляет 45-50 миллисекунд, и если следовать моей логике то я должен читать 48 000 * 50 отсчетов при каждом чтении, но такой объем данных не пролазит через USB. Ответ разработчиков на мой вопрос был таким:
Я понял что нихрена не понял второй раз, но попробовал запрашивать по 2000 значений при каждом чтении и отображать их на экране.
В принципе да, похоже на то что должно быть, но почему все такое гладкое и нет шумов? Тоже не знаю.
Ну да ладно, пока попробуем выставить другие параметры, такие же как в проекте примера - количество считываемых значений - 10240, частота дискретизации 1 Msa/s. Взглянем на результат.
Да, разница есть. Появился шум, но сигнал явно исказился, так как там должен быть меандр с частотой 5 Гц. Если кто-то понимает что происходит, прошу подсказать мне что тут происходит, в свою очередь я продолжу разработку и описание процесса. Заранее всем спасибо.