Comments 13
На счет производительности и актуальности выбора именно этого ЯП для научных вычислений можно ознакомиться в статье.
Друг, это статья на msdn. Про C#. Объективность её несколько сомнительна. Думаю, если твой набор требований USB\COM\графика (и MS Office можно заменить на csv) — подойдет любой из серьезных языков.
Впрочем, если это научная статья, никто не обратит внимания.
Я использую метод вращающегося анализатора RAE(фотоэлектрический метод Битти). На практике мы измеряем степень поляризации и находим Ψ и Δ. В программе я вывожу на экран оптические постоянные, также можно считать толщину тонких пленок, коэффициенты отражения и пропускания. В итоге можно посчитать оптическую проводимость и диэлектрическую функцию.
Фотоэлектронный умножитель жутко нелинейный, поэтому на разных участках спектра у него разная чувствительность и нужно поддерживать постоянный сигнал в установленных рамках (для наших измерений это диапазон 300 — 850 мВ при оптимальном соотношении сигнал/шум):
а каково оно — оптимальное соотношение сигнал/шум для данного случая?
судя по графику видно шумы на уровне единиц процента от величины сигнала, тогда вопрос, зачем использовать 16-разрядный АЦП для измерений, (тем более за такие деньги) если из 16-ти разрядов использовано 10-12.
Мой искренний совет автору — посмотрите в сторону использования LabVIEW для данной методики автоматизации.
Аналогичная программа на LabVIEW, (созданная мною), управляющяя установкой на основе монохроматора МДР-23 занимает половину листа формата А4 golf2109.blogspot.com/2016/06/stepper-control-command.html
P.S.
С# я также использовал вначале, но потом перешел на LabVIEW и не жалею,
Что касается соотношения сигнал/шум, я меряю темновой шум(обычно это 1-10 мВ), а потом из массива градуировки ФЭУ(зависимость чувствительности фотоприемника от длины волны), подбираю напряжение так, чтобы быть близко к максимуму чувствительности ФЭУ, не превышая диапазон АЦП(обычно не больше 1000 мВ).
Да и АЦП на 16 разрядов лишним никогда не будет, тем более что кроме ФЭУ я использую фоторезистор(для ИК области), а у него сигнал на выходе около 1 мВ, после усилителя чуть больше(до 150-200 мВ), но и шумы усиливаются тоже. А так как этот АЦП выполнен в виде коробочки, я беру его в лабу для измерения ТКС, где очень маленькие сигналы.
Вот как раз с LabVIEW я и начинал автоматизацию, но в итоге перешел на С#, потому-что LabVIEW работал не стабильно и часто вылетал, особенно когда обрабатывалось много данных в несколько потоков, например несколько тысяч измерений за 1 раз (полный проход от ультрафиолета до инфракрасной области спектра). Ну и вторым фактором стало то что LabVIEW это по сути не стандартный яп, а так как я в основном пишу на Java, под C# для меня проще и быстрее писать и отлаживать программу, чем перетаскивать пиктограммы в LabVIEW.
P.S.
С# я также использовал вначале, но потом перешел на LabVIEW и не жалею
Спасибо за совет, но от LabVIEW я уже отошел окончательно и безповоротно, и тоже как и Вы, ничуть не жалею.
В дальнейшем я планирую перейти на С++ и QT, когда будет посложней проект.
вообще то в фЭУ есть только такая характеристика как темновой ток, который и создает на нагрузочном сопротивлении или входном сопротивлении усилителя или АЦП напряжение. У Вас оно 1-10 мВ, то есть, при диапазоне АЦП 1000 мВ Вы получаете 10-битное разрешение при 1 мВ или при 10 мВ вообще 7-битное. При таких шумах можно вообще использовать Arduino или недорогую платку из серии STM32 Discovery, а не АЦП за пару сотен долларов.
А насчет фоторезистора, так вообще не понятно, — у него нет «сигнала на выходе 1 мВ», у него есть только сопротивление. И если через него пропускать малый ток, который даст на нем 1 мВ, то шуметь он будет очень сильно, кроме того его паказания плавают от температуры и поданного напряжения на него, поэтому точность будет хуже чем с ФЭУ.
А насчет LabVIEW — небольшая справка, — система управления БАК (большого андронного коллайдера) построена на LabVIEW/
Темновой ток — темновым током называют малый электрический ток, который протекает через фоточувствительный детектор, например, фотодиод, фотоэлектронный умножитель при отсутствии поглощенных фотонов. В моем случае, я закрываю световой поток от источника света на входе ФЭУ, и получаю, как я возможно неправильно выразился — "темновой шум".
А насчет фоторезистора, так вообще не понятно, — у него нет «сигнала на выходе 1 мВ», у него есть только сопротивление. И если через него пропускать малый ток, который даст на нем 1 мВ, то шуметь он будет очень сильно, кроме того его паказания плавают от температуры и поданного напряжения на него, поэтому точность будет хуже чем с ФЭУ.
Вот схема: из которой все становится ясно, мы модулируем сигнал(на частоте 500 Гц), поэтому зависимость выходного напряжения от сдвига фаз между основным и опорным сигналами имеет вид косинуса, после интегрирования и синхронного детектора мы получаем постоянный сигнал.
Синхронное детектирование позволяет сдвинуть сигнал в область, где избыточный и генерационно-рекомбинационный шумы уже не такие большие, как на нулевой частоте(без модуляции).
По поводу БАК, я думаю там большую роль играет то, что куча специалистов делает "железо" изначально под лабвью, как например те же National Instruments продают дорогущие, но стабильно работающие модули DAQ(оборудование для сбора данных).
Это схема, от которой я отталкивался, в установке же я спаял как раз по мостовой схеме, резистор подбирал такой-же, как сопротивление у фоторезистора(820 кОм в темноте). Там сейчас стоят ОУ AD820.
Синхронный детектор был сделан в 90-х годах на кафедре в институте, к нему есть схема на 2 страницы А1.
![](https://habrastorage.org/files/27a/68c/dc3/27a68cdc385448b6b142415edf5e0700.jpg)
Источники света — галогенка на 100 Вт и ДРШ-100.
Модуляция — механический обтюратор, опорный сигнал в виде оптопары, которая крепится на диске обтюратора.
Не используйте функцию Math.Pow для целых степеней (особенно для 2), т.к. она медленная. Вместо этого перемножайте вручную.
Автоматизация лабораторных измерений