1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Устранить постоянную составляющую

Тема в разделе "WASM.A&O", создана пользователем Black_mirror, 2 апр 2010.

  1. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.036
    Для измерения некоторой величины используются два датчика:
    Датчик A выдаёт некоторое напряжение, пропорциональное измеряемой величине. Правда сигнал этот сильно зашумлён, и нужной точности измерений не обеспечивает.
    Датчик V выдаёт некоторое напряжение, пропорциональное скорости изменения этой величины, то есть путём интегрирования мы можем получить измеряемую величину.
    Дело портится тем, что количество попугаев, соответствующее нулю для первого и второго датчиков, неизвестно - оно медленно плавает само по себе и существенно быстрее при изменении температуры.
    По поводу определения нуля Z для второго датчика идея есть такая:
    (S1-Z*T1)/(S2-Z*T2)=D1/D2
    (S1-Z*T1)*D2=(S2-Z*T2)*D1
    S1*D2-S2*D1=Z*(T1*D2-T2*D1)
    Z=(S1*D2-S2*D1)/(T1*D2-T2*D1)
    где
    T1 и T2 - два достаточно длинных соседних(чтобы нуль не сильно уплыл) интервала времени
    S1 и S2 - сумма всех показаний датчика V на первом и втором интервалах соответственно
    D1 и D2 - разность между конечным и начальным показаниями(отфильтрованными для устранения шума) датчика A на первом и втором интервале соответственно.
    В общем интересно выслушать критику по поводу данной идеи, а так же другие предложения (для датчика A понятно что так просто нуль не найти, там только точная калибровка).

    Еще интересно послушать соображения про алгоритм оптимального управления нагревателем. Устройству иногда может требоваться работать при температурах <-20, а начинка в нём в основном для комнатных условий(+5..+50). Сейчас алгоритм управления нагревателем сделан безобразно, за пару минут температура успевает уплыть на 2-3 градуса (корпус с некоторой теплоизоляцией у устройства имеется). Может тут стоит поставить термодатчик не только рядом с нагревателем, но и на внешнюю стенку?!
    Возможно ли обойтись вообще без нагревателя? Сильно ли врут от холода АЦП(24 разряда, у самого датчика фактическая точноть 20)? Программно это можно скорретировать или лучше вообще не думать на эту тему?
     
  2. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    В электротехнике постоянная составляющая устраняется фильтром высоких частот. То есть надо как-то смоделировать его программно и получить формулы вроде твоих?

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

    Сорри, я это все забыл давно.
     
  3. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.943
    а я задачу не понял. если датчик выдает производные, то при чем тут постоянная составляющая.
    и что за ацп с такой погрешностью? может это не ацп плывет, а питалово нестабильное или не вытягивает? или даже входной сигнал?

    низкая температура - не проблема. контроллер в термос из пенопласта + регулируемый нагреватель. хоть аналогово, хоть импульсно. можно хоть постоянную температуру устроить. как в инкубаторе

    от температуры в ацп врут эталонные резисторы/стабилитроны. но пару грд для нормального ацп не должно много значить. а вот питалово - да. питалово очень важно
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Black_mirror
    Это сопротивление меняется от температуры, тоесть общие параметры. Значит следует ввести соответствующую поправку, включив терморезисторы и расширить диапазон измеряемых велечин, поставив усилитель.
    Кварцевые резонаторы используйте для создания опорных частот.
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Black_mirror
    Судя по всему вам нужна радикальная переделка устройства. Полумерами типа введение коррекции вы ничего не добьётесь.
    Все ацп, источники калиброванных напряжений/частот - в отдельный экранированный термостат, который поддерживает максимальную рабочую температуру (+50). Все датчики температур и линии передач от них - экранировать, чтобы избежать зашумленности.
    А то, что у вас плавает температура внутри измерительного блока - это недопустимо.
     
  6. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.036
    _basmp_
    J0E
    Если бы не шум, то можно было бы просто взять значение A и не мучаться. Но вместо него приходится использовать интеграл от (V-Z). Поскольку A может принимать только ограниченные значения, то и этот интеграл должен быть ограничен. Но если в качестве Z взять какую-то константу, то за час работы действительное значение Z может изменится настолько, что интеграл уплывёт на величину порядка полного диапазона измерений. Вот и нужно этот интеграл как-то привязать к A чтобы он никуда не уплывал. На счёт фильтрации V перед интегрированием у меня есть некоторые сомнения, проблему привязки она никак не решает. Может стоит привязываться к "глобальным"(за некоторый интервал времени) максимумам и минимумам датчика A, и соответствующии значения интеграла приравнивать к ним. Или определять ошибку Z за предыдущий интервал, а на следующем намеренно использовать Z с чуть заниженной ошибкой противоположного знака, чтобы коррекция произошла "сама".

    Clerk
    cresta
    Термостат есть, на счёт нестабильности напряжения гипотезу проверю(тем более что в устройстве с отключённым нагревателем такого безобразия не наблюдается). Меня сейчас больше интересуют алгоритмы управления нагревателем при наличии одного датчика температуры, и что можно сделать при наличии нескольких. Сейчас показания датчика температуры(после некоторого преобразования) попадают в ШИМ, который управляет оптопарой, управляющей схемой нагревателя. Это конечно лучше, чем "включить, когда стало слишком холодно", но может существуют другие алгоритмы?
     
  7. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.943
    Black_mirror
    если у вас большие помехи или нестабильность по питанию или аналоговым цепям, боюсь убрать их без потери точности будет довольно затруднительно только рассчетными методами. хотя можно попробовать оттолкнуться от известного характера процесса. например, если известно, что процесс непрерывно и конечен во второй производной (ускорение), то можно использовать аппросимацию сплайнами. те использовать точки с некоторым, достаточно большим промежутком как базовые (это если помеха имеет колебательный характер. если нет, то не получится). но это не лучший вариант.

    я думаю, что вам надо понять откуда помеха. если ваш контроллер/ацп перегрет при пайке или бракованый это одно. если у вас гуляют электролиты (а они гуляют от температуры) - это другое. если БП или кондеров на ногах не хватает - третье.

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

    все это делать то сувая все это в морозилку, то на утюг

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

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Black_mirror
    Берёте термитор, после оцифровки сигнал подаёте на какойлибо порт в комп и пишите простейшую тулзу для снятия лога. Тогда станет понятна зависимость параметров от температуры, из чего и следует исходить. Если погрешность слишком велика, следует пересмотреть общую архитектуру. Повторяю - используйте усилитель дабы расширить диапазон, тем самым снизить чувствительность.
     
  9. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Мощность нагревателя должна регулироваться таким образом, что чем ближе температура к идеальной/рабочей, тем меньше мощность. В несколько ступеней, самая мощная из которых работает на старте, потом отключается, остается менее мощная(ые). При достижении рабочей температуры оставлять только самую слабую ступень, её должно хватать на поддержание набранной температуры. Когда работал регулировщиком радиоаппаратуры, видел такую схемку в осциллографах Tektronix. Датчик температуры достаточно иметь один, только не возле нагревателя, а возле ацп и элементов, задающих опорные частоты и напряжения. Снаружи термостата (там где датчики A и V) датчик температуры ставить бесполезно.

    Clerk
    разве усилитель снижает чувствительность?
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    cresta
    Да. Например амплитуда у вас 1В, соответственно если увеличить амплитуду до 4В уменьшится чувствительность ацп в 4 раза.
     
  11. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    А, вот о чем речь... Вы про ацп говорите. Я думал о чувствительности устройства в целом.
    Если ставить усилитель между датчиком и ацп, то для ацп требования по стабильности снижаются.
    Но появляется проблема стабильности самого усилителя. Думаю, это ещё более нестабильный элемент, чем ацп.
    Плюс усиливаются все помехи.
     
  12. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    2.764
    выводим усредненное значение с датчика А, т.е.
    1-е значение = (A(1)+A(2)+A(3)+A(4))/4
    2-е значение = (A(2)+A(3)+A(4)+A(5))/4
    3-е значение = (A(3)+A(4)+A(5)+A(6))/4 и т.д.
    правда небольшая задержка по времени, которую придется учесть, но от шумов вы избавитесь и выделите низкочастотную составляющую вашего сигнала