Jump to content

    

bvn123

Свой
  • Content Count

    116
  • Joined

  • Last visited

Everything posted by bvn123


  1. борода - это кратковременный всплеск после включения? в этом случае АЦП требует времени на инициализацию после подачи питания, для некоторых АЦП документация рекомендует пропустить одну или несколько начальных выборок или выборки в начале пропускаются программно и без рекомендаций, т.е., если это всплеск, измерение может выполняться по его окончании при корректном программном решении. тут другая опасность: как ты заметил ранее, емкость конденсатора сильно зависит от температуры, значит, опорное напряжение (= напряжение заряжаемого конденсатора) будет достигать разного уровня только из-за разной температуры при прочих равных условиях (R делителя, U), и чем быстрее получен результат АЦП после включения, тем сильнее на погрешность влияние температуры. еще и сопротивление резисторов делителя может плыть после подачи тока через них, и не обязательно в одну сторону. при 24-разрядном преобразовании все это может повлиять на результат, может, поэтому и потому что этого достаточно, используется 14 разрядов. что касается стоимости АЦП - у него удобные встроенные узлы (источники тока для мостов, например), которые, при использовании дешевого АЦП, занимали бы и место на плате, и в итоге стоили бы не дешевле, и размещались бы на разных подложках, т.е., надо было бы отдельно учитывать температурные характеристики отдельных узлов.
  2. Есть ли возможность объективно сравнить результаты измерения? (изменилось ли при тех же измеряемых параметрах и условиях окр.среды СКО, не появилось ли смещение) Если да, сравни результат при подключенном осциллографе и без него, а также без осциллографа, но с открытым и закрытым корпусом устройства - можно будет понять, не является ли подключение осциллографа причиной помехи 200мВ. Неплохо бы посмотреть сигнал аналоговым осциллографом в отсутствие внешних помех, в т.ч. подальше от компьютера. Запиши/посмотри спектр помехи - нет ли там выраженных гармоник, например, на частоте импульсного БП устройства, если он есть, на тактовой частоте АЦП.. Бывает полезно поставить пару конденсаторов, один 0,1мкФ поближе ко входу, второй, например, 1мкФ - у них еще и разные индуктивности, соотв., разная резонансная частота, давят ВЧ в разных диапазонах. Ты хочешь разобраться или доработать схему? Т.е., вставить буфер в выпускаемое устройство, отсоединить делитель от входа возможность есть? Будет ли помеха на нижнем резисторе (моста?) той же / меньшей / большей, если резисторы с конденсатором отсоединить от входа REFIN?
  3. На покупной плате с STM32 по углам корпуса 4 контакта, а под корпусом два отверстия. Контакты ни к чему не подключены. При этом между, например, 1-м контактом микроконтроллера и контактом напротив угла выводится пара дорожек из-под корпуса МК; корпус без металлизации, выдавливать возможные излишки припоя при монтаже из-под корпуса не требуется. Зачем нужны эти контакты и отверстия?
  4. Спасибо за ответы. Я параллельно запросил на форуме производителя. Это под сокет yamaichi IC149, устанавливаемый вместо МК, там есть и ссылка на фото применения сокеты на такой же плате (у меня открылась только через VPN) https://community.st.com/s/question/0D50X0000ASojnjSQB/the-pattern-of-stm32-microcontroller-nucleol053r8-development-board-has-4-pins-on-the-corners-and-two-holes-under-the-package-what-is-the-purpose-of-these-pins-holes
  5. Цитата(Arthur_Sh @ Aug 24 2017, 08:55) Вопрос был теоретическим, можно ли таким способом измерить расстояние, больше вариантов пока нет. Самое простое решение в лоб, это напрямую оцифровывать несущую 300мГц и в плисине делать измерение фазы. Может что то есть попроще. при 300МГц заданное вами разрешение 1/100000, - оцифровывать: АЦП? сколько разрядов, какая частота выборки? какое разрешение при этом получите? ознакомьтесь с доступными АЦП - заполнять импульсами? какова тактовая частота ПЛИС, которую можете использовать? какое разрешение при этом получите прикиньте на теоретическом уровне - в идеальных условиях. PLD Altera шли с тактовой частотой 220МГц, FPGA 400МГц, какая-то фирма планировала выпускать на 2ГГц (сведения несколько устаревшие) см. в начале об интерферометре, на ваши 1000мм будет множество интерференционных полос, их надо считать, возможно формирование sin и cos сигналов, далее как в инкрементных энкодерах : в зависимости от соотношения фаз этой пары сигналов определяется направление движения и что делать с импульсами - суммировать или вычитать в счетчике. по картинке не ясно, у вас движение в трех или в двух плоскостях, сможете ли вообще посылать сфокусированное лазерное излучение в фотоприемник
  6. можно использовать посредственный (желательно стабильный) источник сигнала и образцовый измеритель параметра, по результатам параллельных измерений вашим счетчиком и образцовым измерителем пересчитываете коэффициенты для вашего счетчика, вносите их в память, снова сравниваете, вероятно, после того, как накатаете процесс, от второго сравнения можно будет отказаться. возможно этот вариант окажется дешевле. а по нюансам калибровки AD напишите в соотв. раздел на https://ez.analog.com/ или поищите службу поддержки - не помню, есть ли у них еще таковая или все через EngineerZone
  7. Цитата(Arthur_Sh @ Aug 22 2017, 09:54) Максимальное расстояние 1000мм, минимальное 50мм, можно ли использовать фазовый метод измерения? Возьмем частоту 300мгц, длина волны (приблизительно) 1м. Изменяя расстояние от 0 до 1000мм получим изменение фазы 0-360гр. В теории верно или нет? каким методом будете преобразовывать фазу для измерения с разрешением, линейностью, не говоря уже о погрешности, не хуже 1/100000 от шкалы, к тому же на частоте 300МГц? в какой сигнал, в напряжение, пропорциональное фазе, в число импульсов?
  8. Цитата(blackfin @ Aug 14 2017, 15:39) Тогда зачем додумывать за ТС? Может, ТС нужно ... и я о том же: требования нужны
  9. при определенных условиях, требования к которым вы не указали, может прокатить и такой вариант: -USB-микроскоп -шкала с шагом 0,01мм сбоку платформы все это при условия: платформа - таки да, и она есть; движется по одной координате; не должно быть грязи/подтекающего масла и т.д. ничего не мешает разместить микроскоп рядом, а компьютер неподалеку: к шкале жесткие требования по температурному расширению, старению материала (менее 0,01мм (10мкм) на 1000мм); ваша возможность заказать/изготовить/оплатить такую шкалу - слышал, что делают штрихи и с шагом 1мкм на коротких шкалах, существуют прецизионные червяки - вдруг ваше устройство совсем легкое и можно сделать червяк с шагом, например, 2мм, 1/20 оборота - и движение на 0,01мм, а люфт на вашей совести. предлагаю назвать ваше устройство ССОНС - совершенно секретный объект низкой стоимости
  10. Цитата(Arthur_Sh @ Aug 13 2017, 18:44) очень дорого((( можно удешевить комплектацию, если собирать самому, на ebay прдлагают БУ лазеры, если под фазовый дальномер, можно найти двухчастотные (частота биений между двумя частотами лазера может быть порядка нескольких МГц, на этой частоте измерять фазу принимаемого сигнала относительно опорного) дешевле ли в итоге? неизвестно, в каком состоянии БУ лазеры, требуют ли восстановления, понадобится оптик, по электронике - кондиционирование аналоговых сигналов (в зависимости от расстояния и диапазона требования могут быть суровы), возможно, питание лазера, вычисление фазы - FPGA (PLD) + микроконтроллер + интерфейс для передачи в РС; программист - приложение для РС, программы FPGA, микроконтроллера, механика, оборудование; все это надо аттестовать...
  11. Цитата(Arthur_Sh @ Aug 11 2017, 22:26) Отражатель можно разместить, точнее таких отражателей может быть три (образуют треугольник и в вершине пара: излучатель-приемник) тогда рассмотрите возможность применения лазерного интерферометра.
  12. - что измерять, абсолютное расстояние или разницу расстояний, - допускается ли размещение излучателя и приемника рядом друг с другом и отражателя на объекте, до которого измеряется расстояние. -если дополнить экзотикой - можно ли тянуть механическую линейку (в виде шкалы, нанесенной на торец платформы, например)/вращать прецизионную червячную передачу и т.д. лазерный интерферометр измерит разницу расстояний, для абсолютного измерения нужна точка отсчета, разрешение в доли мкм по принципу лазерного дальномера (вычислять задержку) вряд ли: скорость света 3E8 м/с, при проходе до отражателя и обратно расстояние увеличивается вдвое, если разрешение (не точность) 0,015мм (для упрощения расчета), удвоенное значение 0,03мм или 3E-5м, требование к разрешению по времени 3Е-5 / 3Е8 = 1Е-13с или 0,1пикосекунда, у микросхем ACAM TDC режим повышенного разрешения 10пс что-то свое с заполнением 10ТГц или фазовый детектор с разрешением 0,1пс - интересно было бы взглянуть...
  13. проблему решил, осциллограф ходовой, тему просматривают, поэтому оставляю небольшой отчет. готовой ссылки не нашел и на трех форумах её не предложили, написал свое приложение. что предлагали на другом форуме: использовать возможность конвертирования файла osc в csv приложением Recorder оциллографа ISDS205, перегонять файлы, которые нужно сократить обрезкой, в csv, затем обрабатывать в другом приложении. что из этого вышло: файл размером 100М приложение Recorder конвертирует только целиком, время конвертирования на моем не новом компьютере 17 минут размер файла csv составил 2,7 Гигабйта (27:1) в написанном приложении файл osc осциллографа ISDS205 размером 100 Мегабайт открывается, обрабатывается и выводится в виде графика за 420мс, дальше на графике можно поставить пару меток, обозначающих фрагмент для сохранения в новый файл в родном формате osc, сохранение по времени обычное, от объема. пока скрины процесса для файла osc со временем открытия-построения графика здесь: http://accel.net23.net/ISDS205_osc_cut.html
  14. Добрый день, интересует обрезка файлов *.osc, создаваемых приложением Recorder USB-осциллографа INSTRUSTAR ISDS205. В идеале хотелось бы скачать приложение, способное открыть график на нем выделить фрагмент для сохранения и сохранить его в том же формате osc Может, попадалась на такое приложение ссылка? Приложение Recorder фрагмент сохраняет в виде картинок или файла csv. Не удобно хранить исходные файлы иногда по 100М, в которых иногда интересует короткая посылка, занимающая от силы 50К. (как написать приложение, знаю, если такое уже есть, хотелось бы скачать) Спасибо.
  15. Цитата(_SVP_ @ Jul 28 2017, 17:05) хочется разрешение побольше, в идеале порядка 0.1оС если есть возможность установить микросхему вместо термопары (физически <корпус 16-lead LFCSP> и по диапазону <−40°C to +150°C>) - посмотрите ADT7320, интерфейс SPI, разрешение 16-bit temperature resolution: 0.0078°C АЦП - с требованиями только к разрешению, вероятно, действительно любой, если поднять усиление для узкого диапазона температур и добавить смещение
  16. спасибо, если будет неустойчиво работать, добавлю задержку
  17. Здравствуйте, не получается вывести МК из спящего режима. ATmega48PA, Тактирование микроконтроллера выбрано установкой Fuses от внутреннего RC-генератора 8МГц (проверил, тактирование МК от 8МГц есть) кварц 32768Гц подключен к TOSC1,2 и тактирует Таймер2 в асинхронном режиме. Переполнение Таймера2 раз в 0,5с изменяет состояние на контакте МК, для индикации к контакту подключен светодиод. Если команда _SLEEP() заблокирована, Таймер2 в асинхронном режиме работает, светодиод мигает с расчетной частотой. МК не пробуждается Таймером2 в асинхронном режиме, если выполнена команда _SLEEP(). В то же время МК пробуждается, если заблокировать асинхронный режим (убрать команду ASSR=(1<<AS2)) - тогда светодиод мигает очень часто (на таймер2 поступает частота 8МГц/1024, кроме того, чтобы видеть мигание, приходится и в TCNT2 грузить 216 вместо 16-ти) Т.е., проблема возникает при одновременном использовании SLEEP и асинхронного режима Таймера2, можно сказать, отдельно они работают. То же написал на ассемблере в AVR Studio с тем же результатом. В чем ошибка? CODE//===========Листинг:=========// #include <iom48PA.h> #include <ina90.h> #pragma vector=TIMER2_OVF_vect //KBD & Indication __interrupt void TIMER2_OVF(void) { SMCR=0; TCNT2=256-16; PIND=1<<PD4;} void main() { SP=RAMEND; DDRD=(1<<PD4); //Запрет работы WDT - без изменений из описания ATmega48PA _CLI(); _WDR(); MCUSR &= ~(1<<WDRF); WDTCSR |= (1<<WDCE) | (1<<WDE); WDTCSR = 0x00; //Инициализация Таймера2 ASSR=(1<<AS2); //асинхронный режим: кварц 32768Гц на TOSC1,2 -> Таймер2 TIMSK2=(1<<TOIE2); //прерывание переполнения Таймера2 разрешить TCNT2=256-16; //при Ftosc2=32768 /1024 = 32Гц это 0.5с срабатывания таймера TCCR2B=(1<<CS22) | (1<<CS21) | (1<<CS20); // Pre2=1024, Ftimer2 = 32 Гц _SEI(); //Разрешить прерывания while (1) { SMCR= (0<<SM2) | (1<<SM1) | (1<<SM0) | (1<<SE); // 0000 0111 - разрешить Power Save sleep mode _SLEEP(); //перевести МК в спящий режим } }
  18. нашел решение: попробовал подождать, не сбросятся ли флаги: Цитатав окне I/O View, но при этом устанавливаются биты, сигнализирующие о занятости этих регистров в ASSR: ASSR.TCN2UB и ASSR.TCR2BUB; чтобы не ждать повторно сброса флага ASSR.TCN2UB при записи в TCNT2 в обработчике Timer2_Ovf, можно -дать таймеру отсчитывать все 256 импульсов до переполнения, тогда в обработчике в него не потребуется что-либо записывать, а секундный или 2-секундный интервал выбирать Prescaler-ом - делить не на 1024, а на 64, например. -или работать с прерыванием по совпадению состояния таймера с заранее заданным (CTC) CODE//===========Листинг:=========// #include <iom48PA.h> #include <ina90.h> #pragma vector=TIMER2_OVF_vect //KBD & Indication __interrupt void TIMER2_OVF(void) { SMCR=0; PIND=1<<PD4;} void main() { SP=RAMEND; DDRD=(1<<PD4); //Запрет работы WDT - без изменений из описания ATmega48PA _CLI(); _WDR(); MCUSR &= ~(1<<WDRF); WDTCSR |= (1<<WDCE) | (1<<WDE); WDTCSR = 0x00; //Инициализация Таймера2 TIMSK2=(1<<TOIE2); ASSR=(1<<AS2); //асинхронный режим: кварц 32768Гц на TOSC1,2 -> Таймер2 TCNT2=0; //при входной частоте Ftim2=32768 /64 = 512Гц и деление на 256 таймером2 - интервал 0.5с TCCR2B=(1<<CS22) | (0<<CS21) | (0<<CS20); // Pre2=64, Ftimer2 = 512 Гц while(ASSR & 0x11); _SEI(); while (1) { SMCR= (0<<SM2) | (1<<SM1) | (1<<SM0) | (1<<SE); // 0000 0111 Power Save sleep mode _SLEEP(); } } }
  19. может, у кого-нибудь есть работающий фрагмент с асинхронным тактированием таймера2 и Power Save sleep mode для ATmega48p/88p/168p? === об отладке: в отладчике IAR for AVR команда _SLEEP() не отрабатывается, в AVR Studio 4.19, после установки ASSR.AS2, команды записи в TCNT2 и TCCR2 не приводят к изменению состояний в соотв.окошках этих регистров в окне I/O View, но при этом устанавливаются биты, сигнализирующие о занятости этих регистров в ASSR: ASSR.TCN2UB и ASSR.TCR2BUB; запись в TIMSK2 вызывает нормальную установку соотв. флажка, перемещение команды установки ASSR.AS2 за блок команд инициализации TCNT2, TCCR2 и TIMSK2 приводит к установке соотв. флажков этих регистров в IO View, но не к нормальной работе, к тому же в писании сказано, что этого делать не следует: "When the value of AS2 is changed, the contents of TCNT2, OCR2A, OCR2B, TCCR2A and TCCR2B might be corrupted." в Atmel Studio 6.2 то же самое, но медленнее работает сомневаюсь, что астудио7 обеспечит корректную отладку: в шестой версии пропадали простые возможности отладки, которые работали в 4-й. И на сайте атмел страница, где можно задать вопрос, приглашает зайти позже.
  20. Здравствуйте, управляемый микроконтроллером модуль SIM900D передает данные на ftp-сервер, для инициализации выполняется более десятка AT-команд. на большинство команд ответ "OK" приходит быстро (от модуля), три ответа - с задержкой в нескорлько секунд (команды-время ожидания ответа в конце) иногда ответ с первого раза не приходит. Подскажите, где посмотреть рекомендации - по выбору времени ожидания ответа на отдельные AT-команды (используемые команды ниже) - по выбору числа повторов при отсутствии ответа в течение выбранного времени - к какой команде возвращаться при сообщении "ERROR" или лучше дернуть PowerKey SIM900 и повторить всю последовательность - связано ли время ожидания отваета с параметром, получаемым при запросе качества сигнала (может, например, при параметре ниже 18 не стоит и передавать на ftp) - если ответ на передачу положительный, велика ли вероятность ошибки в созданном на ftp-сервере файле (интересуют не цифры, а практический опыт, к примеру, передавали с параметром качества сигнала 10, были ошибки, индицировались ли ошибки в ответе, полученном от SIM900) Или каждый все это нарабатывает опытным путем? Ниже последовательность интересующих команд, после большинства ответ приходит быстро, 2-секундного ожидания хватает с избытком, для 3-х команд с более длительным ожиданием ответа (вероятно, от оператора и от ftp-сервера) время указано: AT+SAPBR=3,1,"CONTYPE","GPRS" OK AT+SAPBR=3,1,"APN","<адрес точки доступа оператора связи>" OK AT+SAPBR=1,1 >>>>>>>>>>>>длительное ожидание, 4с OK AT+FTPSERV="<имя сервера>" OK AT+FTPUN="<имя пользователя>" OK AT+FTPPW="<пароль>" OK AT+FTPPUTNAME="u.bin" OK AT+FTPPUTPATH="/data/" OK AT+FTPTYPE="I" OK AT+FTPPUTOPT="APPE" OK AT+FTPPUT=1 OK >>>>>>>>>>>>длительное ожидание, 6с +FTPPUT:1,1,1300 AT+FTPPUT=2,9 +FTPPUT:2,9 <передать 9 байт> OK +FTPPUT:1,1,1300 AT+FTPPUT=2,25 +FTPPUT:2,25 <передать 25 байт> OK +FTPPUT:1,1,1300 AT+FTPPUT=2,0 >>>>>>>>>>>>длительное ожидание, 6с +FTPPUT:1,0 Спасибо
  21. Да, общение по UART с микроконтроллером и пока для отладки с компом - транзитом через микроконтроллер. Ответ действительно приходит не всегда, поэтому таймаут - крайний срок, когда его еще стоит ожидать - нужен. Задача неспешная, экономии питания не требует, проверка ответов по истечении таймаутов немного проще.
  22. turnon, спасибо, очень интересные решения пока не разыскал AT-команды для получения CRC файла с FTP-сервера, есть такая?
  23. Здравствуйте, интересуют ответы разных операторов России, Украины, Белоруссии на запрос баланса счета ответ Киевстар и Beeline (Украина) +CUSD: 1,"Na rahunku 34.00 grn. Bonusy: *100# null" +CUSD: 1,"Na rahunku 26.30 grn. Nomer die do ... из этих ответов программно выделить баланс несложно - найти кавычку, после нее искать первую цифру, пока идут цифры или разделитель (точка, запятая) - считать это символами, относящимися к балансу. встречаются ли отличия в ответах ДРУГИХ операторов - цифры между кавычкой и первым числом баланса, запись баланса словами, а не цифрами, или, скажем, запись баланса в виде "34 rub. 00 kop" Спасибо.
  24. Спасибо всем за ответы, думаю не декодировать все это в микроконтроллере, управляющем GSM-модемом, а только искать первую цифру после кавычки; начиная с этой цифры, брать фрагмент ответа о балансе так, чтобы он заполнил остаток места в собственном смс, передача от первой цифры даст экономию числа передаваемых символов, будет больше шансов, что остаток на счету попадет в одно сообщение. Более гибкое декодирование можно будет сделать на компе.
  25. Спасибо за ответы, похоже, особого смысла стремиться унифицировать ТОЛЬКО разбор ответа нет еще из-за того, что и номера для запроса баланса по операторам не одинаковы, уже вижу номера запросов *100#, *102#, *111# тему нашел: > Автоматическое определение баланса СИМ карточки, Выделение суммы из ответа на запрос USSD