Как работает калькулятор? Создаём свою вычислительную машину! #2

Как работает калькулятор? Создаём свою вычислительную машину! #2

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

Кстати, у меня есть замечательная школа математики для программистов – Академия вектозавров. Первую, бесплатную, главу пройти обязательно всем! :)


Первая часть статьи.



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






Этим я и занялся. Сначала я собирал из транзисторов и резисторов каждый отдельный логический элемент, а затем соединял все эти логические элементы между собой. Может показаться, что это достаточно сложный процесс, но привыкнув к программе, через минут 30 я уже без труда верстал схему. Более того, многие участки схемы повторялись и поэтому можно было быстро копипастить. Пару часов и схема готова.




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




Когда все элементы расставлены нужно провести все дорожки между компонентами. Дорожки на плате очень напоминают фрактальные узоры. Советую, кстати, посмотреть мой ролик, посвященный фракталам, он реально интересный.
По сути, плата готова. Только посмотрите, как она красиво выглядит. По-моему, получилось очень даже прикольно!




Плату даже можно просмотреть в 3D и понять, как она будет выглядеть в реальной жизни.
Сначала я думал изготовить её сам из куска текстолита, используя лазерно-утюжную технологию. Но мой перфекционизм сказал мне «нет», да и мороки много со всеми химикатами, которые нужно для этого разводить. Ещё мне хотелось, чтобы на плате была шелкография, а этого так сам не нарисуешь.

Поэтому я решил заказать плату у китайцев. Единственное, что я не понял, это как производить симуляцию и проверку схемы. Ведь если я ошибся, то узнаю об этом только через месяц-полтора, а это очень критично, если я не хочу писать статью полгода. Подумал я «эх, была-не была» и решил рискнуть, не разбираясь особо. Заказал я так 10 плат и стал ждать.




Так же я заказал несколько сотен транзисторов и много-много резисторов разного номинала, чтобы наверняка.




Через месяц пришла небольшая коробка, вот они мои платы. Я удивился, как всё герметично и аккуратно запаковано. Сами платы очень хорошего качества. Вот это дело: и красивые картинки, и аккуратно. Очень похоже на плату какого-нибудь сложного устройства и даже не верится, что я её сам сконструировал.







Естественно, я сразу сел всё впаивать. Очень уж интересно было: заработает это чудо инженерии или нет.
И как вы думаете, заработала ли эта плата или нет. Дам вам несколько секунд подумать.
Короче, не заработала. Ну или смотря как это воспринимать. На первый взгляд всё было хорошо и плата прошла несколько проверок, однако на один из трёх ответов она давала неправильный результат. Сумму она считала правильно, но почему-то переносила единицу в следующий разряд, хотя делать этого не должна была (Когда на один вход подавал единицу, а на другой - ноль).
Эту проблему я назвал «R16». Почему? – Узнаете позже.
А пока, я начал разбираться, в чём же может быть дело. Первое, что пришло в голову, это некачественная пайка.




Я начал досконально изучать места спайки и перепаивать элементы, чтобы всё было максимально аккуратно.
Ошибка ведь могла быть в чём угодно. Например, при спайке оловом могли случайно соединиться два каких-нибудь контакта. В том числе, я подумал о том, что паяльная кислота могла проводить небольшой ток и сильно влиять на схему.
Естественно, я всё почистил и проверил, и, как не печально, плата работать не захотела. Вылезала всё та же R16.
Я подумал, что возможно какой-то из резисторов или транзисторов палёный и просто вышел из строя. Это не приятная ситуация, ведь в таком случае нужно выпаивать все элементы, проверять их и опять впаивать.
Я начал этим заниматься. И на самом деле, и это не самая приятная работа я вам скажу: постоянно обжигаешься, пытаясь вытащить нагретые элементы.

Я всё проверил – все элементы, как не печально, оказались исправными.
Ещё немного подумав, я решил, что скорее всего проблема была в том, что я впаял транзисторы не той стороной. И на самом деле нужно было впаивать их задом-наперёд. Примерно в ту же степь можно отнести теорию о том, что ножки транзисторов нужно было как-то перекрутить и только потом впаять обратно.
В интернете я посмотрел документацию для этого транзистора. Забавно то, что на разных сайтах я находил разные данные об одном и том же транзисторе. Ну, тогда, правда, мне это было не забавно.

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




Мне тогда показалось, что проблема R16 – это в первую очередь неправильная разводка логических элементов.
Так прошло пару месяцев, и я решил поиграться с этой платой и поковырять её снова. На этот раз я просто смотрел на неё и почему-то мне показалась странной одна её часть, там, где был расположен резистор R16.




Я смотрю на него, и вижу, что он ведёт в никуда. То есть в контакт ведёт провод, но другой конец резистора находился в вакууме и не был соединён с чем-то ещё.
Я сразу понял, что это не здоровая штука и пошёл смотреть на плату в том место, где находится резистор под номером 16. И знаете, что я там увидел? Оказалось, что программа, в которой я разводил плату, ошиблась и не соединила два элемента, которые я соединил.




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




Естественно, после этого весь сумматор работал правильно.

Забавная история, кстати, произошла, когда я уже отчаялся и решил обратится за помощью к другим людям. Да не к кому попало, я пошёл в институт к зав кафедре радиоэлектронной физики НГУ. Я пришёл там, нарисовал ему схему, рассказал, что да как, что пытаюсь сделать. А он посмотрел на схему и сразу такой говорит: так это вообще брехня какая-то – это работать никогда не будет, не удивительно, что оно у тебя не работает. И тогда я уж подумал, что всё, реально неправильно я сделал и только чистая случайность помогла мне решить эту проблему. Так что и профессионалы иногда могут ошибаться.

Один сумматор – это скучно, и я соединил два таких, чтобы уже по-настоящему почувствовать, что всё работает правильно. Получился такой вот бутерброд. Все нужные контакты для управления и вывел в один пучок.




Для управления этим сумматором я сделал своеобразный пульт управления, состоящий из четырех тумблеров (Два тумблера на первое число и два тумблера на второе) и трёх лампочек, на которых и выводится результат суммы в двоичном виде.




Я всё собрал, соединил и всё, наконец-таки, заработало. Для этого сумматора возможно 2 в четвёртой = 16 возможных комбинаций. Все из них я проверил и всё работает правильно.

На этом, конечно, можно было остановиться, но я потратил настолько много времени, а результат не то, чтобы завораживает сознание. Ну да, всё работает и суммирует, но выглядит это так себе: много проводов и на полочку это красиво не поставишь.
Я решил делать 4х битный сумматор на одной микросхеме. Чтобы не было огромного количества проводов и можно было спокойно складывать относительно большие четырёхзначные числа.
Очередной раз я засел делать теперь уже четырёхбитный сумматор. По большей мере, это был копипаст старой схемы и разводка элементов конструирования.
Получилась такая вот схема. Здесь верхние четыре блока – это копии сумматора. Внизу расположились элементы управления: 8 выключателей по четыре на каждое число и экран, состоящий из пяти светодиодов. На этих лампочках и будет выводится результат суммы в двоичном виде.




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





Пришло время заказывать, правда в этот раз размер платы был намного больше и цена заказа, соответственно сильно поднялась. Поэтому я заказал лишь 5 таких плат. Хотя, сейчас мне кажется, что и этого много.
Заказ был сделан, но в этот раз я решил поэкспериментировать и сделал цвет платы чёрным, а не зелёным. Посмотрим, как это будет выглядеть в жизни.

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




На шестой месяц производства этого видео, я огромную посылку из Китая. Это была та самая посылка.
На этот раз посылка была заметно тяжелее. Упаковка, как и в прошлый раз, на высшем уровне, тут претензий нет.
Ну и самое главное, просто посмотрите на то, как они выглядят. Мне это напоминает материнскую плату от компьютера.




Они даже положили мне небольшую линзу. Кстати, кто знает, как работает линза Френеля? Если интересно, то в одной из следующих статей могу рассказать, как работает такая вот плоская линза.




В общем, начал я всё это впаивать и в отличии от первой платы, эта далась мне совсем не легко. На то чтобы впаять все эти элементы, а это 150 резисторов и 93 транзистора ушло два долгих вечера. Я настолько заколебался всё это впаивать, что, наверное, ещё несколько месяцев не захочу ничего паять.




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




К счастью, работает он полностью исправно. В этот раз, перед тем как заказать, я на несколько раз перепроверил все контакты, чтобы не получить брак. Шансов на ошибку у меня не было.

Для 4х битного сумматора возможно 2 в восьмой, то есть 256 возможных вариантов положения тумблеров. Я перепробовал все возможные и все работает отлично. Это не может не радовать.

Такой вот получился проект. На самом деле, я очень рад тому, что всё-таки решил отложить выпуск этой статьи, но вставить в неё всё, что хотел. Я надеюсь, что вы, как и я получили удовольствие при чтении. Всем продуктивной недели!

На эту тему на моём YouTube канале есть видеоролик, посвященный этой теме, советую подписаться и узнавать о таких масштабных проектах первым :)

Первая часть статьи.




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







Если у вас остались вопросы или пожелания, то вы можете оставить комментарий (регистрироваться не нужно)

Ценитель:

Подскажи, пожалуйста, в какой программе ты "разводил" схемы?
А проект крутой, конечно, тут без комментариев! Браво)))
------------------------------------------------------------
EasyEDA, там же их и заказывал :)


Дата: 15-08-2019 в 13:39

Анонимно:

А что, если построить троичный сумматор - то получится троичный калькулятор?


Дата: 16-11-2019 в 01:34

Анонимно:

Было очень интересно)


Дата: 29-11-2019 в 17:59

Анонимно:

Транзисторы 2N2222A использовались, верно? Если да, то какие именно использовать?(есть к примеру KSP2222ABU или KSP2222ATA)


Дата: 26-02-2020 в 22:15

Анонимно:

Привет, подскажи, ты разводил землю на плате, или просто соединил все радиоэлементы?


Дата: 28-04-2020 в 13:08

Анонимно:

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


Дата: 14-10-2020 в 19:33

Ivan Ilin:

я гей


Дата: 26-10-2020 в 19:18

Анонимно:

Здравствуйте не могли бы вы выложить в открытый доступ геребер файл плат(тех, которые складывают по одному разряду)


Дата: 02-12-2020 в 07:21

Анонимно:

Я правильно понимаю, что плюс светодиода индикации надо подключить на вывод суммы, а его минус на минус питания через резистор?


Дата: 03-12-2020 в 16:20

Анонимно:

Кто же использует кислоту при пайке?
Канифоль есть!


Дата: 04-12-2020 в 04:44

Анонимно:

скинь гербер файл плиз


Дата: 09-09-2021 в 15:10

Анонимно:

Сделал этот калькулятор в майнкрафте по вашему гайду, однозначно зачетно.


Дата: 28-12-2021 в 18:56

Ivan Ilin:

nvvv


Дата: 29-12-2021 в 12:58

Анонимно:

Поздравляю прекрасная работа. Правда логический элемент ИЛИ я-бы сделал из двух диодов. Успехов.


Дата: 05-06-2022 в 16:29

Анонимно:

Ты бы немог поделиться файлом с печатной платой.


Дата: 18-07-2022 в 12:50

Анонимно:

А можете, пожалуйста, отправить ссылку на проект в Easy EDA, что бы я сам мог покавырятся и заказать 5 4-битных сумматоров.


Дата: 21-07-2022 в 13:30

Анонимно:

Спасибо большое за вашу работу. Я смог повторить ваш сумматор, но использовал готовые логические элементы, а не транзисторы. Вот ссылка https://oshwlab.com/minomix-1/Sumator-4-bit


Дата: 24-09-2022 в 20:27

Анонимно:

Можно файл платы для печати?


Дата: 21-09-2023 в 11:06

Сашка:

Была ОЧЕНЬ полезная информация. И, конечно это было долго но я сделал 4 битный калькулятор, по той же схеме.


Дата: 24-10-2023 в 18:23

Анонимно:

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


Дата: 06-12-2023 в 23:11

Александр К.:

Круто!!!


Дата: 19-02-2024 в 12:27

Анонимно:


* {
transform: rotate(180deg);
}


Дата: 03-04-2024 в 16:00


Мои курсовые | 30.11.2019: Выложил мои курсовые в открытый доступ. Теперь они отображаются в колонке слева под новостями.

Для будущих авторов | 12.10.18: Если вы хотите стать автором статей на сайте и получить подтвержденный аккаунт, то обращайтесь на почту! support@ilinblog.ru

Обновления | 21.08.18: Добавлена возможность комментировать статьи. Сайт адаптирован под мобильные устройства.

Обновления | 19.01.18: Добавлена возможность добавления математических формул в статьи посредством языка latex. Пример использования тут. Также добавлена возможность редактирования статей.

Информация о пользователях | 28.10.17: Расширена функциональность страницы пользователей, теперь можно добавить статус и личную информацию.

Мои статьи и исследования:

Измерение спектра квантовой эффективности полупроводникового фотокатода на основе арсенида галлия (курсовая)
Исследование индукционного метания цилиндрических проводников импульсным магнитным полем (курсовая)
Броуновское движение
Температура и методы её измерения
Исследование механики движения мячей