4 заметки с тегом

концепция

Выбор кванта времени

9 июля 2013, 4:39

Казалось бы: бери с точностью до миллисекунд — и точно хватит на все времена вперед, на любые изысканные нужды. Но не все так просто.

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

Таким образом, для определения теоретического разрешения по времени нашего реле делаем простой рассчет:

  • Частота переменного тока в сети (российской, в частности) — 50Гц
  • За период напряжение пересекает нулевую отметку 2 раза (вспомните синусоиду)
  • Таким образом получаем, что частота переходов через «0» — 100Гц (или 1 раз в 10 миллисекунд)

Все бы ничего, если бы теория всегда сходилась с практикой. Частота микроконтроллера довольно высокая. По крайней мере позволяет отмерять секунду с наносекундной точностью. Хорошо. У нас есть «идеальные» 100Гц, которые генерирует микроконтроллер. Проблема лишь в том, что по биениям напряжения в сети вы врядли построите точные часы: вам никто не гарантирует в ней 50Гц. Около того — да, но не более.

В итоге я затеял тест, чтобы посмотреть как будет интерферировать частота переходов через «0» в сети и частота микроконтроллера. Я сделал видеозапись. Но стоит учесть тот факт, что у записи тоже есть определенная характеристическая частота (частота кадров), поэтому наблюдаемая картинка сама интерферирует со всем бутербродом, означенным выше. Смотрите сами. На табло слева частота справа соответствующий период в миллисекундах.

Планы

27 июня 2013, 1:44

При планировании я учитываю не только постепенное улучшение и расширение функций, но и оставляю место для рефакторинга (т. е. для кардинальной переделки/перекомпоновки). Разработку прошивки я планирую делать сначала «фишку» для основной цели устройства, затем «плюшку» для удобства и будущего расширения функций. Пока я очертил следующие шаги развития прошивки (software) и внутренней начинки (hardware).

  • v0.1 Простейший таймер. Отмеряет время в соответствии с выбранным EV
  • v0.2 Разработка основных классов и библиотек, которые потребуются в дальнейшем. Основное нововведение — режим настроек (меню)
  • v0.3 Режим тестовых полосок: инкрементный, полный, линейный (?) подрежимы
  • v0.4 Введение языковых профилей (Английский, Русский)
  • v0.5 Режим простой последовательности экспозиций
  • v0.6 Сохранение/загрузка настроек, последовательности, состояния
  • v1 Официальный релиз
  • v2 Поддержка датчика освещенности

Что касается аппаратной платформы, то здесь сначала необходимый минимум, затем «навороты» и «излишества»:

  • v1 Основа. Символьный экран, 2 кнопки, Энкодер с кнопкой, Педаль, Модуль с реле, Корпус.
  • v2 Улучшения, обкатка решений коннекторов. Попробую символьный экран меньших габаритов (либо графический экран). Сформируется «power unit», который будет содержать блок питания, реле и подключение фотоувеличителя.
  • v3 Датчик освещенности. С точки зрения основной платформы добавится дополнительный коннектор, но для самого датчика нужно будет подобрать корпус и интерфейсное решение.
  • v4 «Излишества». Возможно добавлю в силовой блок (power unit) дополнительное реле для safelight. И, возможно, дополнительный элемент управления на основное устройство.

Обретение формы

27 июня 2013, 1:02

Пока разные детали приходили из интернет-магазинов проект жил в виде зародыша на картонке: двухсторонний скотч, картонка, простейшая макетная плата. На макетной плате сменяя друг-друга отлаживались компоненты и блоки кода:

  • Сегментный дисплей
  • Звук
  • Кнопки
  • Энкодер
  • Символьный дисплей в связке с конвертером I2C-сигнала в параллельный

Теперь пришел черед объединить эти наработки под одной оболочкой. Для этого сначала надо разработать интерфейс прототипа, расположение и назначение элементов. При разработке интерфейса я учел тот факт, что у устройства могут быть пользователи у которых основная рука — левая, или, скажем, он просто расположен слева или справа на рабочем месте печатника. Исходя из этого образовалось симметричное расположение элементов управления, назначение которых можно варьировать исходя из собственных вкусов.

Также немаловажное внимание я уделяю тактильным ощущениям, поскольку устройством прийдется пользоваться иногда в полной темноте. Поэтому кнопки и энкодер щелкают под пальцами: натренированная рука безошибочно выставит нужное значение отточенным движением: поведение элементов управления предсказуемо и ощущщаемо.

Начало

19 июня 2013, 4:36

После быстрых набросков во время поездок в метро на работу и обратно, созрела идея, ее очертания, элементы исполнения.

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

Итак, в моем распоряжении уже был самый главный элемент, от которого можно было оттолкнуться сразу: Arduino. Началось глубокое изучение характеристик устройства: таймеры, прерывания, PWM, I2C…

Первыми пришли дисплеи МЭЛТ, заказанные сразу же. Как только они пришли — начались эксперименты с ним: написание стабильного драйвера (отдельной задачей встало выяснить I2C-адрес устройства), управление яркостью подсветки, разработка вида символов для алфавита, и прочее.

Далее подоспели кнопки и энкодер. Начались эксперименты с устранением, так называемого, bouncing (дребезжания контактов), когда показания какое-то время «скачут», прежде чем установиться на определенном значении.

Сейчас проект выглядит так: