Калибровка сенсоров телефонов Siemens

25 февраля 2006 года.
Новиков Максим Глебович
Обновлено 24 марта 2006 года

Содержание:

Что такое калибровка
Программа Siemens Calibrator 1.0
Математические аспекты
Калибровка внутреннего вольтметра
Калибровка внутреннего термометра
Настройка контрастности дисплеев
Заключение

Что такое калибровка

Мобильный телефон является сложным комбинированным прибором, включающим в себя множество различных устройств, которые мы привыкли видеть в нашей жизни в виде отдельных изделий (приёмник, передатчик, монитор, клавиатура, таймер, блок питания). Помимо этих открытых нашему взору основных модулей в мобильном телефоне присутствует много других вспомогательных устройств, обеспечивающих правильную работу вышеописанного оборудования. К таким устройствам относятся вольтметр и термометр.

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

Термометр телефона осуществляет не менее важную работу. Как известно, характеристики радиодеталей могут сильно меняться при изменении температуры окружающей среды. Для устранения влияния внешней температуры на работу телефона, встроенный в схему термометр вносит поправку в её работу. Термометр установлен рядом с очень важной деталью — кварцевым генератором частоты, управляемым напряжением (VCXO). При изменении температуры схема термометра вносит поправку в управляющее напряжение, и генератор удерживает заданную частоту несмотря на температурные перепады. Стоит ли говорить, что от стабильности генерируемой частоты зависит совпадение радиочастот при передаче информации по радиоканалу, правильность определения расстояния до ретранслятора и т.п., что в свою очередь сказывается на надежности и качестве телефонной связи.

Вольтметр и термометр телефона (да и не только телефона — это касается любых внешних цифровых устройств) производят измерения следующим образом. Они преобразуют величины измеряемых параметров в свои внутренние единицы измерения и затем по простой формуле переводят их в конкретное число Вольт или градусов соответственно. Но каждый экземпляр телефона (даже той же самой модели) при измерении одного и того же параметра из-за различий в характеристиках радиодеталей даст разные результаты. Поэтому каждому конкретному прибору нужно объяснить, насколько он ошибается, то есть вписать в формулу пересчёта внутренних единиц в Вольты или градусы свою поправку измерения.

Эти поправки вводятся на заводе и хранятся в специальной области памяти телефона — EEPROM. Структурно EEPROM построена в виде отдельных блоков данных разного размера и назначения, организованных в виде базы данных. Доступ к каждому блоку телефон получает по его номеру. Блок, хранящий поправки (константы калибровки) для вольтметра и термометра имеет номер 67 и размер 20 байт. Он содержит 10 двухбайтовых значений, которые телефон подставляет в формулы пересчета внутренних единиц в Вольты или градусы.

Примечание: При записи в блок новых значений старый блок со старыми значениями не удаляется, а просто помечается как удаленный, а новый блок с новыми значениями записывается рядом. Поэтому при многократной записи новых значений память EEPROM может переполниться. В этом случае необходимо сделать дефрагментацию EEPROM. Обычно она делается с помощью утилиты Siemens EEPROM Tool. Описание методики дефрагментации выходит за рамки этой статьи.

Исходя из вышесказанного нетрудно понять, что при потере по какой бы то ни было причине блока 67 телефон становится инвалидом. Блок 67 от другого телефона не подойдет, ибо он имеет константы для настройки другого вольтметра и термометра. Телефон конечно может заработать, но скорый выход из строя аккумулятора обеспечен на 100%.

Как правило, отдельно блок 67 не теряется. Чаще всего теряется по разным причинам сразу весь EEPROM. Если вы не сохранили ни свой старый рабочий фулфлэш, ни отдельно EEPROM, то кроме настроек вольтметра и термометра пропадут также параметры радиотракта (мощности и частоты приёмо-передатчика), видеопараметры (контрастность дисплея) и индивидуальный номер аппарата (IMEI).

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

Индивидуальный номер аппарата (IMEI) написан на самом телефоне. Он располагается под аккумулятором и находится непосредственно под штрих-кодом. Его можно вписать в память телефона с помощью программы Joker (для телефонов на платформе EGOLD).

Видеопараметры (блок 5007 — Display-Initialization (Abgleich-Bl.)) и константы калибровки вольтметра и термометра (блок 67 — Measurement values for temp. and volt.) можно восстановить самостоятельно.

В статье, предложенной вашему вниманию, описывается наиболее прогрессивная на сегодняшний день методика повторной калибровки встроенного вольтметра и термометра (восстановление значений блока 67) и регулировка контрастности (восстановление значений блока 5007).

Примечание: Методика калибровки несовершенна, поскольку придумывалась нашими прошивкокопателями, действовавшими способом «научного тыка». Никто, кроме разработчиков телефона, не знает точно, за что отвечает тот или иной параметр и какое влияние друг на друга они оказывают. Выявлены лишь некоторые закономерности, используя которые можно в той или иной степени вылечить аппарат.

Внимание! Если телефон имеет заводскую калибровку (EEPROM родной, и в нём никто не копался), то её трогать не следует, даже если вы поменяли аккумулятор. Точнее, чем на заводе, вы все равно не откалибруете. В случае, если аккумулятор работает не так, как ему положено, в этом виноват он сам, а не заводские настройки. При смене аккумулятора калибровка ни вольтметра, ни термометра не требуется, ибо она предназначена только для компенсации неточностей характеристик радиосхем самого телефона.

Предостережение: Существует техническая возможность путем неправильной калибровки (обмана) внутреннего вольтметра раздвинуть границы рабочего диапазона аккумуляторной батареи. Этого делать нельзя, поскольку при работе в расширенном диапазоне напряжений срок ее службы сильно сокращается. Помните, что основная задача при зарядке литий-ионного аккумулятора — обеспечение максимальной точности. Допуск составляет лишь 1%. При недозаряде на 100 мВ (2,4%) результатом является потеря 10% ёмкости. При перезаряде можно нарваться на взрыв элемента или его аварийное самоотключение, которое должно сработать при напряжении 4,6 вольта. При снижении нижней границы ниже 3,6 вольт аккумулятор начинает сильно изнашиваться. К тому же это снижение не имеет смысла, поскольку ниже точки 3,6 вольт сосредоточено слишком мало энергии. При напряжении 2,3 вольта должно сработать самоотключение аккумулятора во избежание его смерти.

[Вернуться в начало]

Программа Siemens Calibrator.

В процессе калибровки внутреннего вольтметра и термометра мы будем работать с 67-м блоком EEPEOM, где содержатся нужные нам параметры. Для этого мы используем программу Siemens Calibrator. Подробное ее описание можно найти на странице поддержки.

После нажатия на кнопку «Подключить» программа ждёт кратковременного нажатия на кнопку телефона с красной трубкой. После нажатия происходит соединение программы с телефоном и в пустые поля всех трёх вкладок программы считаются константы текущей калибровки из телефона.

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

[Вернуться в начало]

Математические аспекты

 

Формула вычисления правильного напряжения телефоном в милливольтах:

V = SpgX0 + ((0 − (VBattDSP − SpgY04V)) * SpgDelta) / (SpgY03V − SpgY04V), где

VBattDSP — считанное значение напряжения во внутренних единицах телефона.

Формула вычисления правильной температуры телефоном во внутренних единицах:

T = TempDSP * TempStg / 100 − TEnvOff, где

TempDSP — считанное значение температуры во внутренних единицах телефона.

Это не вся формула. После нее, видимо для устранения неоднородности датчиков, идет коррекция по таблице и заключительный перевод в градусы. Для каждого датчика таблица коррекции своя. Настройка корректирующих таблиц — дело тёмное и никому неизвестное. Поэтому мы рассмотрим упрощенный (грубый) вариант калибровки термометра.

В процессе практических экспериментов выявилась некоторая нелинейность внутренней шкалы температуры, что отражено на графике неравномерностью шага градуса.

[Вернуться в начало]

Калибровка внутреннего вольтметра

Для калибровки внутреннего вольтметра нам потребуется точный цифровой вольтметр (3 знака после запятой на диапазоне 3–5 вольт). В качестве такого вольтметра я использовал советский вольтметр В7-38 с погрешностью на нужном нам диапазоне ±0,006–0,007 вольт. В наши дни его стоимость составляет 8–10 тысяч рублей, но его можно найти и у знакомых радиолюбителей. Описание дальнейших наших действий составлены с учётом работы именно с этим вольтметром.

Для справки: погрешность вольтметра для каждого измерения высчитываем следующим образом. В техническом описании В7-38 берём единую формулу расчёта погрешности для диапазонов 20, 200 и 1000 вольт:

Процент предела погрешности = ±0,07 + 0,02 * (Uп / Ux), где
Uп — предел измерения (в моём случае 20 вольт),
Ux — измеряемое напряжение (нам понадобятся напряжения в интервале 3,2–4,2 вольт).

Подставив нужные значения в формулу получим погрешности от 0,165% до 0,195% измеряемой величины что соответствует погрешности ±0,006–0,007 вольт. Такая погрешность нас устроит. Более того, если у нас есть другой телефон с правильными заводскими настройками, мы всегда сможем откалибровать наш вольтметр до точности калибровки этого телефона. Однако, как показывает практика, сами телефоны откалиброваны на заводе примерно с той же погрешностью, так что подгонка вольтметра под заведомо рабочий телефон имеет смысл только в том случае, если погрешность вашего вольтметра намного больше указанной выше.

Порядок калибровки внутреннего вольтметра:

  1. Работы проводим при температуре 20±5°С, чтобы показания внешнего вольтметра были как можно точнее.
  2. Заряжаем аккумулятор в нашем, а лучше в аналогичном но исправном телефоне до конца или почти до конца.
  3. Если у вас вольтметр B7-38 или ему подобный, то включаем его в сеть и переключаем в режим измерения напряжения постоянного тока. Даем ему поработать включенным 15 минут. За это время электронная схема вольтметра войдет в рабочий тепловой режим и стабилизируется. Показания вольтметра до и после прогрева могут разнится на несколько тысячных вольта (в моём случае 0,002). После прогрева вольтметра замкнем его щупы и рукояткой калибровки выставим на индикаторе 0,000.
  4. Теперь подключим его к аккумулятору телефона. Для этого возьмем 2 коротких многожильных провода, зачистим оба с одной стороны на 12 мм, а с другой столько, сколько нужно для подсоединения к ним щупов вольтметра. Крепко скрутим между собой жилы каждого из зачищенных концов проводов так, чтобы они не распушились в процессе дальнейшей работы. Подсоединим щупы вольтметра так, чтобы они не замыкались между собой. Лучше их заизолировать или хотя бы зафиксировать их друг относительно друга. Затем выключим телефон и вынем аккумулятор. Каждый из кончиков зачищенных на 12 мм концов аккуратно проденем на 3 мм в ушки левого и правого контактов телефона и загнем их, чтобы они не вылетели оттуда, не замыкались между собой и со средним контактом и имели надежное электрическое соединение. Всовывать кончики в ушки надо от центра в стороны, чтобы в случае их разгибания они не замкнулись с центральным контактом. Прижмем провода пальцем к стенке так, как они прижмутся потом аккумулятором, и убедимся, что изоляция у них начинается сразу за ребром отсека для аккумулятора, и не мешает ему встать на место. Более длинные концы зачищать не следует во избежание их замыкания в дальнейшем.
     

     
    Теперь аккуратно вставим аккумулятор. Зачищенные концы плотно прижмутся аккумулятором к стенке, что предотвратит их замыкание.
     

     
    Внимание! напряжение на внешнем разъеме телефона (который снизу) не соответствует напряжению на аккумуляторе, поэтому мы подключаемся непосредственно на его клеммы!
     
  5. Теперь мы должны подключить телефон к компьютеру. Для этого используем «неродной» шнур, описанный в статье про i-низацию.
  6. Запускаем программу Siemens Calibrator 1.0. После запуска программы нажимаем кнопку «Подключить» и кратковременно нажимаем на кнопку телефона с красной трубкой. В пустые поля всех вкладок программы из телефона считаются константы калибровок.
  7. Работаем с первой вкладкой. Устанавливаем значение параметра SpgX0. Оно должно равняться реальному напряжению в милливольтах, показываемому внешним вольтметром на заряженном аккумуляторе в настоящий момент, а точнее быть чуть ниже его, чтобы к моменту конца калибровки по этой точке, они сравнялись вследствие естественного разряда аккумулятора. Предположим, напряжение на вольтметре 4157 милливольт. В этом случае значением параметра будет к примеру 4150. Теперь подгоняем параметр SpgY04V так, чтобы значение VBattMiddle равнялось напряжению на внешнем вольтметре. Не забываем после изменения константы записать её в телефон. Некоторые телефоны начинают использовать новые значения констант только после своей перезагрузки, поэтому, если после отправки новых констант в телефон показания внутреннего вольтметра не изменились, отключаем телефон и затем снова вводим его в Service Mode. Когда напряжение на внешнем вольтметре сравняется со значением параметра SpgX0, проводим последнюю подгонку показаний VBattMiddle.
  8. Устанавливаем значение параметра SpgDelta равным 1000 и разряжаем аккумулятор. Можно вставить в телефон другой, уже разряженный аккумулятор. Теперь подгоняем параметр SpgY03V так, чтобы значение VBattMiddle равнялось напряжению на внешнем вольтметре.

После завершения вышеописанных манипуляций вольтметр будет откалиброван. Нажмём кнопку «Отключить». Зарядим аккумулятор и проверим соответствие показаний вольтметров в диапазоне 4 вольт. Поскольку мы настраивали верхнюю точку в момент соответствия реального и записанного в параметр SpgX0 напряжения, расхождений быть не должно.

[Вернуться в начало]

Калибровка внутреннего термометра

Описание процесса калибровки термометра выглядит проще, чем описания калибровки вольтметра, но осуществить его будет сложнее, поскольку нам придется менять температуру окружающей среды и дожидаться, пока на нее отреагирует термометр телефона.

Итак, для настройки термометра нам понадобится цифровой комнатный термометр с выносным зондом для измерения температуры уличного воздуха и точностью измерения до 0,1°C. К сожалению, у таких термометров погрешность обычно составляет ±1°C, но и условия, в которых мы будем производить калибровку тоже не позволят нам добиться большей точности. В этой главе я лишь опишу методику калибровки, а ваша задача — найти по возможности более совершенные температурные условия и более точный термометр).

Например, значительно упростит задачу наличие второго аналогичного телефона с родным 67-м блоком и с открытым инженерным меню, в котором выводятся показания внутреннего термометра. В этом случае мы сможем отказаться от неточного внешнего термометра, и сравнивать показания внутренних термометров, находящихся в абсолютно одинаковых условиях.

Порядок калибровки термометра:

  1. Запускаем программу Siemens Calibrator 1.0. После запуска программы нажимаем кнопку «Подключить» и кратковременно нажимаем на кнопку телефона с красной трубкой. В пустые поля всех вкладок программы считаются константы калибровок из телефона.
  2. Работаем со второй вкладкой. В поле TEnvStg (шаг) заносим 100, в TEnvOff (смещение) — 0. В этом режиме и работал бы термометр, если бы он был идеален. Не забываем после изменения константы записать её в телефон. Некоторые телефоны начинают использовать новые значения констант только после своей перезагрузки, поэтому, если после отправки новых констант в телефон показания внутреннего термометра не изменились, отключаем телефон и затем снова вводим его в Service Mode.
  3. Находим опорную точку внутренней шкалы телефона, от которой происходит её растяжка-сжатие (изменение шага градуса) при изменении параметра TEnvStg. Эта точка должна быть в районе +25°C. Для точного нахождения этой точки положим телефон на источник тепла, чтобы температура внутри телефона плавно поднималась. Отслеживая температуру по параметру VCXOTemp при +30°C производим двукратное увеличение параметра TEnvStg (до 200) и следим, на сколько изменилось значение VCXOTemp. Если при +30°C VCXOTemp увеличилось, например, на 0,5°C, значит опорная точка находится +30−0,5=+29,5°C. Если VCXOTemp не увеличилось, а уменьшилось, значит не вычитаем, а складываем градусы. После замеров не забываем возвращать в параметр TEnvStg значение 100.
  4. Кладем телефон в условия, при которых температура окружающего воздуха по показаниям телефона соответствует высчитанному нами значению. Термометр телефона точно почувствует температуру окружающего воздуха через достаточно долгий промежуток времени, поэтому даем телефону отлежаться. Я регулировал температуру телефона на протяжении часа расстоянием до батареи отопления.
  5. Удостоверившись в том, что показания термометра телефона стабилизировались у опорной точки, проверяем её, изменяя параметр TEnvStg. Температура VCXOTemp не должна измениться. Если она меняется, уточняем местоположение опорной точки экспериментальным путем, слегка меняя температуру окружающей среды. Итак, когда опорная точка найдена и температура телефона стабилизирована, кладем на него зонд внешнего термометра. Через несколько минут он тоже примет температуру телефона.
  6. Изменяя параметр TEnvOff, приравниваем температуру, показываемую телефоном к температуре внешнего термометра. Этим самым мы выставляем центральную калибровочную точку шкалы и подготавливаемся к калибровке шага градуса.
  7. Теперь кладем телефон и зонд внешнего термометра в холодное место (например, в холодильник, в морозильную камеру. Но только следите, чтобы в морозильной камере температура была не ниже −10°C. Если интерфейсного шнура не хватает до холодильника, а на улице зима, нет солнца, и компьютер стоит у окна, можно просто выставить телефон и зонд внешнего термометра на подоконник, как это сделал я.
  8. После такого большого изменения температуры телефон будет принимать новую температуру около часа. Когда температура VCXOTemp стабилизируется, приравниваем ее параметром TEnvStg к показаниям внешнего термометра. Этим самым мы выставляем вторую калибровочную точку шкалы, регулируя шаг градуса.

Теперь термометр телефона можно считать откалиброванным.

[Вернуться в начало]

Настройка контрастности дисплеев

Тут совсем просто. Запускаем программу Siemens Calibrator, подключаем телефон, открываем третью вкладку и верхним ползунком регулируем контрастность, наблюдая ее изменение на телефоне в реальном времени. Затем записываем ее в телефон.

Контрастность внешнего дисплея в «раскладушках» в реальном времени настроить не удасться, поэтому каждый раз сохраняем новую настройку, выставленную нижним ползунком, и проверяем контрастность включением телефона.

[Вернуться в начало]

Заключение

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

Прежде всего это DarkBear, раскопавший в конце 2002 года формулы использования телефоном калибровочных констант для вольтметра, а в начале 2003 года — формулы для термометра. Не могу не заметить, что первая программа, написанная для облегчения калибровки — Siemens Sensors Tool, была написана им еще в 2001 году.

После появления этой программы, на различных сайтах Интернета появилось несколько разных методик калибровки. Несмотря на наличие формул, никто еще толком не понимал назначение констант, и методики были далеки от идеала. Кроме того, программа писалась под 35—45 серии, и на более старших моделях не показывала текущие значения напряжений и температур. Из-за этого появлялись еще более извращенные методики калибровки, которые по определению не могли дать хороший результат.

В начале 2006 года мной была написана более совершенная программа для калибровки — Siemens Calibrator, и тут уже не обошлось без исследований, сделанных Papuas'ом в части программного взаимодействия с телефоном посредством BFB-протокола. Программа Siemens Calibrator стала видеть значения вольтметра у всех телефонов Siemens, построенных на платформе EGOLD, и теперь уже представилось возможным написать современную методику калибровки, которую я изложил выше.

[Вернуться в начало]
[Оставить отзыв в гостевой]
Hosted by uCoz