15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP

в 14:00, , рубрики: arduino uno, atmega328, diy или сделай сам, ruvds_перевод, Блог компании RUVDS.com, калькулятор hp, программирование микроконтроллеров, старое железо, Электроника для начинающих

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 1


Я всю свою жизнь пользовался калькуляторами HP RPN, и мне жаль, что RPN-версии больше не производят. Они были упразднены в угоду стандартным инфиксным калькуляторам. Тем не менее я всегда хотел иметь HP15c, но вот никак не подворачивался случай его купить. Так что это моя первая попытка создать его самостоятельно.

В дизайне я использовал только выводные детали, чтобы было проще паять.

Мозгом калькулятора послужил ATMEGA328. Он взял на себя все – дисплей, опрос клавиш, звук, часы и т.д.

Выбор пал именно на этот микроконтроллер, поскольку он довольно распространен в сообществе Arduino и является одним из немногих, которые до сих пор производятся в корпусах, позволяющих монтировать их в отверстия на плате. Других полупроводников я не использовал.

Несмотря на то, что ATMEGA328 – это простой 8-битный микроконтроллер с частотой 8МГц, он все равно довольно быстр. В результате эмуляция работает в 4-5 раз шустрее оригинала.

Я также добавил динамик для озвучивания нажатий клавиш и кварцевый резонатор 32.768КГц для работы часов реального времени.

Эмулятор можно запускать на любом калькуляторе серии Voyager, а также на моем любимом HP41C.

Подборка фото

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 2

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 3
15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 4

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 5

Конфигурация и особенности

  • использованы только выводные детали, что существенно упрощает монтаж;
  • работает в 4-5 раз быстрее оригинала;
  • память:
    • PX15c и PX16c несут такой же объем памяти, что и оригинал.
    • PX41c имеет в 2.5 раза больше памяти, чем оригинал (аналогично установке полутора модулей памяти);
  • память энергонезависима (при отключении калькулятора не сбрасывается);
  • автоматическое отключение;
  • в основе один 8-битный ATMEGA328 с частотой 8МГц (аналогичен Arduino Uno);
  • есть динамик для озвучивания нажатий кнопок;
  • ЖК-дисплей 192x64 px с подсветкой;
  • часы реального времени (кварцевый резонатор 32.768КГц);
  • питание от одной батареи CR2032 3В 235мАч;
  • потребление энергии: 1мкА в выключенном режиме, 350мкА в простое, 3мA в рабочем (при выключенном динамике и подсветке);
  • декодер клавиш: на PX15 и Px16 в режиме программирования названия клавиш отображаются в верхней части дисплея;
  • размер немного меньше оригинала: 4.2" x 2.67" (10.668 x 6.7818см).

Настройки

При выключенном калькуляторе зажмите кнопку . (на PX41c зажать 0) и включите его, кнопку не отпускайте.

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 6

Включится дисплей, на котором будет показана версия прошивки и мини-инструкция. Когда вы отпустите . (на PX41c это 0), отобразятся настройки.

Настроить можно следующее:

  • BKLT: яркость подсветки (0-9);
  • BKTM: таймаут подсветки в секундах (0-255);
  • CONT: контраст (0-15);
  • SLPT: таймер сна (0-255);
  • BEEP: звук клавиш;
  • 1224: формат отображения времени (12hr or 24hr);
  • Time and Date: часы устанавливаются в формате 24hr.

PX15c и PX16c:
Для выбора опции используйте клавиши ÷ и X.
Для изменения параметра используйте + и -.

PX41c:
Для выбора опций используйте клавиши 9 и 6.
Для изменения параметра используйте 3 и R/S.

Советы по сборке

  • Убедитесь, что все компоненты размещены вровень с платой.
  • Для лучшей фиксации деталей можно слегка подогнуть выводы.
  • Начните с пайки самых коротких компонентов (резисторов, конденсаторов, программирующей головки и резонатора). Если конденсаторы окажутся чересчур высокими, то они не позволят ровно закрепить дисплей поверх микроконтроллера, тогда их нужно будет немного отогнуть в сторону.
  • Затем припаяйте микроконтроллер, переключатель и крепление батареи.
  • Убедитесь, что выемка или точка на микроконтроллере совпадает с маркировкой платы.
  • Далее припаяйте все 39 тактовых кнопок. Будет удобнее сразу закрепить все переключатели на плате и перевернуть ее, положив на ровную поверхность.
  • Надавите на заднюю часть платы, чтобы выровнять все переключатели.
  • Сначала припаяйте по одному контакту каждого переключателя и убедитесь, что они расположены вровень с платой, затем припаяйте остальные контакты.
  • Дальше на очереди динамик. Обратите внимание на полярность.
  • Последним паяем дисплей. Припаяйте к нему 9-контактный штекерный разъем. Убедитесь, что разъем припаян короткой стороной, расположен вровень и находится с нужного края.

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

Схема

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 7

Список деталей

Деталь Значение Описание
C1, C2 0.1мкФ Разделительный конденсатор
C3 0.1мкФ Сопротивление динамика
U1 ATMEGA328P Микроконтроллер
J1 6-контактные штыревые разъемы (мама) Программирующая головка Pi
BAT Крепление батареи Крепление батареи CR2032
SPK Зуммер Динамик
XTAL Кварцевый резонатор 32.768КГц Часы
R1 10кОм Подтягивающий резистор сброса
R2 10Ом Резистор ЖК-подсветки
BTN Тактовые кнопки 6х6мм (высота 7мм) Основные кнопки
RST Тактовая кнопка 6х3.5мм Кнопка сброса
DISP ЖК-дисплей 192х64 Дисплей

Прошивка

Текущая версия прошивки v0.85.

Скачать для PX15c
Скачать для PX16c
Скачать для PX41c

Исправлено/Добавлено:

  • Исправлен сбой функции самодиагностики (PX-15c все еще выдает ERROR 9).
  • Исправлен сбой индикатора низкого заряда батареи.
  • Уменьшен дребезг клавиш.
  • Активация меню настроек теперь через клавиши ON и 0, (нажатием ON и . меняется основание системы счисления.
  • В меню настроек:
    • Клавиши 3 и увеличивают и уменьшают значение на 10.
    • Для доступа к настройкам эмулятора нажать 9:.
      • RUNC: количество циклов, выполняемых за раз.
      • KEYC: сколько циклов клавиши ожидать до ее обработки.
      • DBOU: продолжительность эффекта антидребезга кнопок.
      • DISC: только для 41c, количество циклов до повторной отрисовки дисплея.
      • SSPC: только для 41c, количество Slow Speed Cycles до ускорения.
      • BATL: текущий заряд батареи, не настраивается.
      • BATT: порог низкого заряда батареи, не настраивается.

Баги

Версия прошивки v0.85

  • 15c: в режиме Prog декодер клавиш не декодирует STO и RCL при использовании /, *, -и +. Тоже касается функции TEST. Среднее x отображается как X.

Версия прошивки v0.81

  • В редких случаях при включении калькулятора не включается дисплей. Похоже, что это происходит только при низком заряде батареи. Лечится повторным включением устройства.
  • При выполнении самодиагностики (нажатие клавиш ON и X при запуске) выводится ERROR 9. Для возвращения калькулятора в рабочее состояние нужно нажать клавишу сброса.

Первый релиз: версия прошивки v0.80

  • Изредка при включении калькулятора не включается дисплей. Похоже, что это происходит из-за низкого заряда батареи. Исправляется выключением и повторным включением.
  • В режиме программирования декодер клавиш отображает метку прокрутки наоборот.
  • Когда возникает состояние Overflow, дисплей показывает ±9.999999999×1099, но не мигает, как это делал оригинал.

Известные проблемы

  • В PX15c: выполнение внутренней диагностики (нажатием клавиш ON и X при запуске) выводит ERROR 9. Для возвращения калькулятора в рабочее состояние нужно нажать сброс.
  • Инструкция паузы (PSE) короче, так как выполняется быстрее, чем на оригинале.

Внимание! Нажатие сброса или загрузка новой прошивки приводит к стиранию всего содержимого.

Обновление прошивки

Для обновления прошивки вам потребуется стандартный программатор AVR SPI, например usbasp. Также можно использовать Arduino Uno в качестве ISP программатора.

Кроме того, для программирования МК вам потребуется avrdude или иное ПО.

Большинство AVR-программаторов оснащены 6-контактной (2х3) или 10-контактной (2х5) гребенкой. В нашем калькуляторе используется 6-контактная, так что вам наверняка потребуется либо купить переходник, либо сделать его самостоятельно.

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 8

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 9
Я просто отрезал шлейф и припаял 6-контактный штыревую вилку.

Внимание!!! Убедитесь, что на программаторе выставлено напряжение 3В, иначе вы убьете дисплей.

3D-печать корпуса

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 10

Можете напечатать собственный корпус либо взять готовый вариант с Thingiverse:

  • Для комплектов с дисплеем без металлической окантовки: 3D Case.
  • Для комплектов с дисплеем с металлической окантовкой: Simple.

Раскладку клавиатуры в pdf можно взять отсюда:

RPN

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 11

RPN (Обратная польская запись) – это математическая нотация, позволяющая пользователям решать задачи по аналогии с тем, как они привыкли делать это на бумаге. Операторы (+,,x,÷) помещаются после аргументов (например, 3+4 становится 3 {ENTER} 4 +), что дает возможность создавать стек из последовательностей чисел и операций, прорабатывая его снизу вверх. RPN избавляет от необходимости использования скобок в сложных вычислениях и уменьшает количество нажатий клавиш, существенно ускоряя решение задач и делая этот процесс более эффективным.

Дисплей

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 12

ЖК-дисплей содержит 12,288 (192х64) пикселя, чего достаточно для отрисовки всех растровых шрифтов вместе со строкой состояния. Ну а про подсветку я уже говорил.

Мозг

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 13

В основе PX-15c лежит микроконтроллер ATMEGA328P от ATMEL (ныне Microchip). Выбор пал на него, потому что он довольно популярен в сообществе ардуинщиков и по-прежнему является одним из немногих, которые производятся в корпусах для монтажа в отверстия на плате.

Динамик

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 14

Я взял стандартный магнитный динамик, который использовал для озвучивания нажатия клавиш.

Тактовые кнопки

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 15

В комплекте задействовано 39 стандартных тактовых кнопки 6х6мм.

Часы

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 16

Время и дата всегда отображаются в строке состояния. Отсчет же ведется типовым кварцевым резонатором 32.768КГц.

Питание

15с, 16c или 41c – вам какой? Собираем собственный эмулятор калькулятора HP - 17

Питание поступает от литиевой таблетки CR2032 3В емкостью 235мАч, которой при умеренном использовании калькулятора должно хватать на несколько месяцев. Для сохранения энергии PX-15c в режиме простоя замедляется, а спустя определенный промежуток бездействия впадает в сон. Подсветка при простое также отключается.

FAQ

Можно ли его программировать?

Да, при использовании любого эмулятора.

Зачем использовать RPN?

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

Почему вы использовали выводные компоненты?

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

Может ли он создавать графики?

Нет, это не графический калькулятор. Оригинальный HP-15C не имел таких возможностей. А так как эмулируем мы именно его, то и у PX — 15c их нет.

Почему именно 8-битный микроконтроллер?

Дело в том, что большинство 16, 32 или 64-битных вариантов не выпускаются в корпусах, которые бы позволяли монтировать их в отверстия платы, а ATMEGA328 очень популярен среди сообщества Arduino.

На чем писался код для него?

Весь код был написан на стандартном Си, оптимизирован на экономию пространства в ущерб быстродействию и скомпилирован на Mac с помощью GNU AVR Toolchain.

А можно такой купить?

PX-15с можно заказать на tindie.

Автор: Дмитрий Брайт

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js