- PVSM.RU - https://www.pvsm.ru -

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

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


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

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

Мозгом [3] калькулятора послужил 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 [4] 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 [5]
Скачать для PX16c [6]
Скачать для PX41c [7]

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

  • Исправлен сбой функции самодиагностики (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 [8]. Также можно использовать Arduino Uno в качестве ISP программатора.

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

Большинство 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 [10].
  • Для комплектов с дисплеем с металлической окантовкой: Simple [11].

Раскладку клавиатуры в 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 [20].

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

Источник [21]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/staroe-zhelezo/370610

Ссылки в тексте:

[1] калькуляторами HP RPN: https://www.hpmuseum.org/

[2] RPN-версии: https://en.wikipedia.org/wiki/Reverse_Polish_notation

[3] Мозгом: http://www.braintools.ru

[4] батареи CR2032: https://data.energizer.com/pdfs/cr2032.pdf

[5] PX15c: https://paxer.net/voyager/firmware/px15_0.85.hex

[6] PX16c: https://paxer.net/voyager/firmware/px16_0.85.hex

[7] PX41c: https://paxer.net/voyager/firmware/px41_0.85.hex

[8] usbasp: https://amzn.to/3jvD7UZ

[9] avrdude : https://www.nongnu.org/avrdude/

[10] 3D Case: https://www.thingiverse.com/thing:4936677

[11] Simple: https://www.thingiverse.com/thing:4969303

[12] PX15c: https://paxer.net/voyager/overlay_15.pdf

[13] PX16c: https://paxer.net/voyager/overlay_16.pdf

[14] PX41c: https://paxer.net/voyager/overlay_41.pdf

[15] HP-15C Owner's Handbook: http://www.hp.com/ctg/Manual/c03030589.pdf

[16] HP15C Advanced Functions Handbook: http://h10032.www1.hp.com/ctg/Manual/c03308725.pdf

[17] HP-15C Quick Reference: http://www.thimet.de/CalcCollection/Calculators/HP-15C/HP-15C-Quick-Reference.pdf

[18] HP-16C Owner's Handbookl: https://www.scss.tcd.ie/SCSSTreasuresCatalog/hardware/TCD-SCSS-T.20160121.004/HP16C-OwnersHandbook.pdf

[19] HP-41C/41CV Owners Handbook and Programming Guide: https://www.cosc.canterbury.ac.nz/greg.ewing/X-41/HP41C.pdf

[20] tindie: https://www.tindie.com/products/hobbystone/px-15c-an-hp15c-emulator/

[21] Источник: https://habr.com/ru/post/595735/?utm_source=habrahabr&utm_medium=rss&utm_campaign=595735