В этой статье я хочу рассказать о сборке одной современной версии известного в советское время программируемого калькулятора "Электроника МК-61". Впервые с этим калькулятором я познакомился в школе на уроках информатики еще до знакомства с компьютерами. Знакомство с программированием у меня также началось именно с этого калькулятора. Сейчас еще можно приобрести оригинальный калькулятор, причем за небольшие деньги, но у меня возникло желание именно собрать подобное устройство.
Проект МК-61s-Mini - является аппаратным эмулятором калькулятора "Электроника МК-61", построенный на отладочной плате "BlackPill". В этом проекте достаточно точно реализованы все документированные функции, также воспроизведена не высокая точность оригинала. Как я понял, реализованы и не документированные особенности калькулятора. Физический дизайн МК‑61s‑Mini не копирует корпус оригинала. Ссылка на проект МК-61s-Mini.
Подготовка к сборке.
Для сборки калькулятора в продаже можно найти комплект из двух плат: основной платы для установки всех электронных компонентов и декоративной верхней панели (несколько фотографий с двух сторон):
На момент написания статьи платы можно было приобрести в магазине FANJET, прямая ссылка на лот, где я сам их и приобрел.
Как всегда завел отдельную коробку для всех деталей этого калькулятора, некоторое время потребовалось для формирования полного комплекта (две фотографии):
Деталей в комплекте, если не считать кнопок, совсем не много. Сердцем является отладочная плата "STM32F411CEU6 Black Pill", экран я купил WINSTAR WH1602B. Также добавил в комплект Li Pol аккумулятор на 2000 мАч и модуль зарядки (впоследствии поменял на другой, т.к. этот маленький мне нужен для другого проекта):
Сборка.
По ссылке в начале статьи есть несколько файлов с инструкциями, среди них подробная инструкция по сборке, по которой я и собрал основную плату. Разъем для подключения питания устанавливать не стал, т.к. планирую использовать модуль зарядки аккумуляторов. Все остальные элементы установил:
Для того, чтобы верхняя декоративная плата опустилась как можно ниже, мне пришлось справа на плате сделать небольшой вырез под экран, т.к. у экрана имеется небольшой выступ. Если этого не сделать, то корпус будет толще на три миллиметра и кнопки высотой 14 мм не будут выступать из корпуса. Возможно это связано именно с моим экраном и с экранами других производителей такой проблемы не будет. Что касается пластиковых стоек, то я использовал рекомендованные размеры, правда стойки под упор экрана использовал меньшего диаметра, но это не важно, т.к. экран к ним я не прикручивал, он прижался верхней декоративной платой.
Калькулятор я запитал от аккумулятора через модуль заряда. Модуль заряда аккумулятора на выходе выдает напряжение такое же, которое выдает сам аккумулятор, в нем нет DC-DC преобразователя в 5 вольт. В результате я получил на выходе с модуля заряда около 4-х вольт. Т.к. все основные элементы калькулятора питаются от 3.3 вольта, то 4-х вольт считаю вполне достаточным. Подсветка совсем немного тускнее и больше я не заметил никакой разницы. Подстроечным резистором нужно "проявить" изображение на экране (две фотографии):
Что касается времени автономной работы от аккумулятора, то пока только смог теоретически его рассчитать: калькулятор потребляет около 25-30 мА, емкость аккумулятора 2000 мАч, что, скорее всего, не правда и реальная емкость будет около 1000-1200 мАч, соответственно время непрерывной работы должно быть не менее 40 часов, а с учетом только периодического его включения, заряда может хватить на месяц и более.
Модуль зарядки подключил к калькулятору так, чтобы задействовать штатный выключатель. Толщина аккумулятора всего 3 мм, я его прикрепил к нижней части калькулятора на двухсторонний скотч. Модуль зарядки также временно прикрепил на двухсторонний скотч, впоследствии закреплю его на корпусе горячим клеем.
Хорошо видно, что толщина калькулятора будет больше, чем вариант без аккумулятора, но "оно того стоит".
Корпус будет состоять из боковой рамки и нижней крышки. В нижней крышке сделал отверстия под стойки, которые закрепил горячим клеем, держаться крепко:
Индикатор заряда оказался внизу калькулятора. Красный индикатор сигнализирует о зарядке батареи, синий индикатор, о завершении зарядки (две фотографии).
Калькулятор собран.
Краткий обзор.
Калькулятор МК-61s-Mini полностью функционально соответствует программируемому калькулятору "Электроника МК-61". Отличаются они только формой корпуса и расположением клавиш. Также в этот калькулятор добавлены дополнительные клавиши для его настройки, полное описание можно найти по ссылке в начале статьи.
Калькулятор "Электроника МК-61" и, соответственно, МК-61s-Mini отличается по способу выполнения вычислений от обычных калькуляторов. Обратите внимание, в этих калькуляторах нет клавиши "=", используется "обратная польская запись".
В калькуляторе имеется четыре регистра образующих стек, два из которых задействованы для вычислений. После ввода первого числа, необходимо нажать на клавишу "B↑", затем ввести второе число и уже потом нажать на соответствующее действие. Например, 2+3: нажимаем "2", затем "B↑", далее вводим "3" и нажимаем "+", на экране отобразиться результат "5". Очень подробно про это описано в документации к калькулятору, которую можно найти в интернете в отсканированном виде.
Еще один интересный пример: 2*(3+4). На калькуляторе вводи число "2", далее "B↑", вводим "3", опять нажимаем "B↑", вводим "4" и теперь нажимаем последовательно "+" и "*", на экране отобразиться результат "14". На мой взгляд очень удобно и быстро, но надо привыкать.
И последний пример: расчет длины окружности 2πR. Для этого вводим число, например, "10", нажимаем "B↑", далее водим "2", теперь сразу вводим "π" (предварительно надо нажать "F") и, затем, два раза "*". На экране получим длину окружности "62.831852".
Предлагаю написать маленькую программу для вычисления длины окружности. Для этого надо калькулятор перевести в режим программирования последовательным нажатием на "F" и "ПРГ". Теперь можно ввести программу. Вводим "B↑", "2", "F", "π", "*", "*", "С/П", "В/О". Каждое нажатие на клавишу добавило в программу одно действие. Сам процесс расчета уже был рассмотрен в последнем примере, а вот в программе добавлены дополнительные два действия: "С/П" - остановить выполнение программы, чтобы увидеть результат и "В/О" - вернуться на начало, если потребуется повторить расчет.
Нажимаем "F" и "АВТ", чтобы выйти из режима программирования обратно в "Автоматический" режим. Клавишей "В/О" устанавливаем программу на начало. Теперь можно ввести любое значение радиуса окружности и нажать на клавишу "С/П", калькулятор почти сразу отобразит длину окружности. Теперь можно повторить вычисление, вводом нового радиуса и нажатием "С/П", получаем новый результат и т.д. Таким образом время выполнения однотипных расчетов можно очень сильно сократить, а также использовать результат выполнения программы для других вычислений.
Я привел пример ввода очень простой программы, а в калькуляторе можно вводить программы с различными логическими ветвлениями, циклами, подпрограммами, используя специальные ячейки памяти для хранения предварительных результатов и многие другие возможности. Таким образом, можно выполнять различные сложные научные расчеты и даже играть в игры.
На этом хотел бы завершить рассказ про этот калькулятор. Теперь он будет лежать у меня на столе, а иногда и на полке в качестве экспоната вместе с другими компьютерами и устройствами, которые я сделал своими руками.