Машинка для ардуино: Bluetooth машинка своими руками | AlexGyver
|Содержание
Bluetooth машинка своими руками | AlexGyver
ОБНОВЛЕНИЯ
- v1.1 – улучшена стабильность. Требуется библиотека GyverMotor
05.11.2021 удалена старая версия, оставил только 1.1. Обновлена библиотека GyverMotor в архиве
ОПИСАНИЕ
И вот наконец-то я решился сделать свою собственную машинку на управлении по Bluetooth! Для начала решил сделать всё максимально просто: 4 мотора, 4 колеса, ардуина, блютус модуль, ну и драйвер. Запитаем всё от паурбанка, на него и колёса закрепим. Для Андроид слепил приложеньку GyverJoy, простенький джойстик. Самая главная фишка в том, что в проекте используем FPV камеру и приёмник для смартфона, добавив разделение экрана от новой версии Андроид получим одновременное управление машинкой и вывод видео с камеры! Смотрите видос, проект просто бомбезный!
КОМПОНЕНТЫ
Инструменты, полезное
Каталоги ссылок на Алиэкспресс на этом сайте:
- Всё для пайки: паяльники, приспособления
- Платы Ардуино, модули и датчики
- Модули и датчики для умного дома
- Дешёвые инструменты
- Аккумуляторы, платы защиты, зарядники
- Мультиметры
- Блоки питания, преобразователи
Железки со схемы
Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей. Также проект можно попробовать собрать из компонентов моего набора GyverKIT.
- Powerbank XiaoMI USBx2 https://ali.ski/WGT1X4
Arduino Nano купить в РФ, aliexpress, aliexpress, искать
Bluetoth HC-06 aliexpress, aliexpress, искать
Драйвер MX1508 aliexpress, aliexpress, искать
- Моторчик и колесо
- https://ali.ski/cr8rh
- https://ali.ski/akKNb0
- 4 мотора и колёса https://ali.ski/WHzSi
Макетная плата aliexpress, aliexpress, искать
- Танковое шасси https://ali.ski/6Mlgo7
FPV:
- Камера 3 в 1 https://ali.ski/CwPX9
- FPV OTG приёмник
- https://ali.ski/dOjdwE
- https://ali.ski/m-t6Jp
- Другие варианты приёма видео:
- FPV часы https://ali. ski/geptr
- Крутой дисплей с приёмником https://ali.ski/YJflI
- FPV шлем как у меня https://ali.ski/36ORh
ПРОШИВКА
ВНИМАНИЕ!
Максимально подробный гайд по началу работы с платой и загрузке прошивки для проекта находится ЗДЕСЬ. Изучи его внимательно, прежде чем писать на форум или в группу ВК!
ИНСТРУКЦИЯ
СКАЧАТЬ
GITHUB
БАГРЕПОРТ
ПОДДЕРЖАТЬ
Вы можете поддержать меня за создание доступных проектов с открытым исходным кодом, полный список реквизитов есть вот здесь.
как сделать радиоуправление своими руками
Это первый роботизированный проект, который я когда-либо делал, и если вы никогда не пробовали собрать робота, то, скорее всего, думаете что это сложно. Но Ардуино и шасси 2WD / 4WD сделают вашу сборку намного проще, и вы соберете своего первого робота с радиоуправлением на Ардуино без каких-либо мучений.
По пути ко мне пришла идея о создании радиоуправляемой машины своими руками, которая бы объезжала препятствия, поэтому я собрал и этот проект, видео и файл программы к которому прикладываю ниже.
Файлы
- Arduino_Obstacle_Avoiding_Rover.ino
- Obstacle Avoiding Robot Arduino Code.pdf
Содержание статьи
Шаг 1: Нужные части и инструмент
Я воспользовался готовыми решениями, и все запчасти и инструменты были приобретены через интернет.
Запчасти:
- Набор шасси 4WD для робота (GearBest)
- Arduino Nano (GearBest)
- Модуль H-моста LM298 (GearBest)
- Модуль bluetooth HC-06 (Amazon)
- Литий-ионные батарейки 2 x 18650 (GearBest)
- Отсек для батареек 2x 18650 (GearBest)
- Небольшая макетная плата (GearBest)
- Провода сечением 0.5 мм2
- Провода с джамперами папа-мама (Amazon)
- Провода с джамперами мама-мама (Amazon)
- Малярная лента, изолента или что-то подобное (Amazon)
Для робота, объезжающего препятствия:
Ультразвуковой модуль измерения расстояния HC — SR04 (GearBest)
Необходимый инструмент :
- Паяльник (Amazon)
- Кусачки (Amazon)
- Стриппер для провод (GearBest)
- Клеевой пистолет (GearBest)
Шаг 2: Что такое робот?
Робот – это электромеханическое устройство, которое способно каким-либо образом реагировать на окружающую обстановку и принимать самостоятельные решения или действия, чтобы достичь определенных целей.
Робот состоит из следующих компонентов:
- Структура / Шасси
- Привод / Мотор
- Контроллер
- Вводные устройства / Датчики
- Источник питания
В следующих шагах я опишу каждый из этих компонентов, и вы всё легко поймёте.
Шаг 3: Структура / Шасси
Структура состоит из физических компонентов. Робот имеет один или несколько физических компонентов, которые каким-либо образом двигаются для выполнения задания. В нашем случае структура робота – это шасси и колёса.
Шаг 4: Приводы
Под приводом можно понимать устройство, которое преобразовывает энергию (в робототехнике под энергией понимается электрическая энергия) в физическое движение. Большинство приводов производят вращательное или линейное движение.
В нашем случае привод – это DC-мотор, скорость которого равна 3000 оборотам в минуту, а вращающий момент 0.002 Н•м. Теперь добавим к нему шестерню с передаточным числом 1:48. Новая скорость уменьшается на коэффициент 48 (в результате давая 3000/44 = 68 оборотов в минуту) и вращающий момент увеличивается на коэффициент 48 (в результате давая 0. 002 x 48 = 0.096 Н•м).
Шаг 5: Подготавливаем клеммы моторчиков
Отрежьте по 4 провода красного и черного цвета длиной примерно 12-15 см. Я использовал провода сечением 0.5 мм2. Оголите концы проводов. Припаяйте провода к клеммам моторчиков.
Вы можете проверить полярность моторчиков, соединив их с отсеком для батареек. Если он движется в прямом направлении (с красным проводом на позитивной и черным на негативной клеммах батареек), то с соединением все в порядке.
Шаг 6: Устанавливаем мотор
Прикрепите две акриловые распорки к каждому мотору при помощи двух длинных болтов и двух гаек. Для наглядности вы можете посмотреть видео.
Возьмите на заметку, что провода на каждом моторе ведут к центру шасси. Соедините оба красных и оба черных провода от моторов с каждой стороны шасси. После соединения у вас будет две клеммы на левой стороне и две на правой.
Шаг 7: Устанавливаем крышу
Послу установки 4 моторов нужно установить крышу. Приладьте 6 медных стоек при помощи гаек, клеммы проводов выведите сквозь отверстие в крыше.
Шаг 8: Контроллер
Теперь у нас установлены шасси и приводы, но нам не хватает контроллера. Шасси без контроллера никуда не поедут. Робот будет оставаться на месте, оставаясь безжизненным. Поэтому, для того чтобы робот перемещался, нам нужен мозг (контроллер).
Контроллер – программируемое устройство, способное работать по заданной программе и отвечающее за все вычисления, принятие решений и коммуникацию. В нашем случае в качестве контроллера мы используем микроконтроллер Ардуино Нано.
Контроллер принимает входные данные (с датчиков, удалённо и т.д.), обрабатывает их и затем даёт команду приводам (моторам) выполнить выбранное задание.
Если вы подключите позитивный провод от батарей на одну строну моторчика, затем подключите негативный провод от батарей на другой контакт моторчика, то он начнёт крутиться вперёд. Если вы поменяете провода местами, то мотор начнёт вращаться в другую сторону.
Микроконтроллер можно использовать, чтобы вращать мотор в одном направлении, но если вам хочется с помощью микроконтроллера вращать мотор и вперёд, и назад, то вам нужна дополнительная схема – H-мост. В следующем шаге я объясню, что это такое.
Шаг 9: Н-мост (модуль LM 298)
Что такое Н-мост?
Термин Н-мост произошел от типичного графического представления этой схемы. Это схема, которая может вращать мотор как в прямом, так и в обратном направлении.
Принцип работы:
Посмотрите приложенную картинку для понимания принципа работы схемы Н-моста. Мост состоит из 4 электронных выключателей S1, S2, S3, S4 (транзисторы / MOSFET/ IGBTS).
Когда выключатели S1 и S4 закрыты, а остальные два открыты, положительное напряжение будет проходить через мотор, и он будет вращаться в прямом направлении. Таким же образом, когда закрыты выключатели S2 и S3, а S1 и S4 открыты, обратное напряжение будет даваться на мотор и он начнёт вращаться в обратном направлении.
Заметка: выключатели на одной руке (то есть S1, S2 или S3, S4) никогда не закрываются одновременно – это создаст короткое замыкание.
Н-мосты доступны в виде интегральных схем, либо можно собрать свой мост при помощи 4 транзисторов или MOSFET. В моём случае используется интегральная схема Н-моста LM298, которая позволяет управлять скоростью и направлением моторов.
Описание распиновки:
Out 1: DC мотор 1 «+» или шаговый двигатель A+
Out 2: DC мотор 1 «-» или шаговый двигатель A-
Out 3: DC мотор 2 «+» или шаговый двигатель B+
Out 4: вывод мотора B
12v: вход 12V, но можно использовать от 7 до 35V
GND: Земля
5v: выход 5V, если джампер 12V стоит на месте, идеально для питания Arduino (и т.п.)
EnA: позволяет получать сигналы PWM для мотора A (Пожалуйста, прочитайте секцию «Arduino Sketch Considerations»)
IN1: включает мотор A
IN2: включает мотор A
IN3: включает мотор B
IN4: включает мотор B
BEnB: позволяет получать сигналы PWM для мотора B (Пожалуйста, прочитайте секцию «Arduino Sketch Considerations»)
Шаг 10: Входы / Датчики
В отличие от людей, роботы не ограничены лишь зрением, звуком, осязанием, обонянием и вкусом. Роботы используют различные датчики для взаимодействия с внешним миром.
Датчик – это устройство, которое выявляет и отвечает на определенные типы входящей информации из окружающего мира. Этой информацией может быть свет, тепло, движение, влажность, давление или любое другое явление окружающей среды.
Входящие сигналы могут идти от датчиков, удалённо, или со смартфона. В этом руководстве я использую смартфон в качестве девайса, отправляющего сигналы, управляющие роботом.
Шаг 11: Источник питания
Чтобы управлять приводами (моторами) и питать контроллер, роботу нужен источник питания. Большинство роботов питается от батарей. Когда мы говорим о батареях, то имеем в виду множество вариантов:
- Алкалиновые батарейки AA (не заряжаются)
- Никель-металгидридные или никель-кадмиевые батарейки AA (заряжаются)
- Литий-ионные батареи
- Литий-полимерные батареи
В зависимости от ваших нужд, нужно выбрать подходящий вид батарей. По-моему мнению, нужно всегда выбирать заряжаемые батареи достаточной ёмкости. Я использовал 2 литий-ионные батареи стандарта 18650 ёмкостью 2600mAh. Если для автономности вам нужно больше мощности, используйте большой комплект батарей, например 5A turnigy.
Отсек для батарей:
Отсек для батарей я заказал в Китае, он не подходил для батарей с плоским верхом, поэтому я использовал два неодимовых магнита для придания батарейкам нужной формы.
Зарядка:
Для зарядки батарей нужен хороший зарядник. По моему опыту, эти зарядники хорошо зарекомендовали себя:
- PowerEx AA Charger-Analyzer (Amazon)
- XTAR LiIon Battery Charger (Amazon)
- Turnigy LiPo Battery Charger (Amazon)
Шаг 12: Установка компонентов
Цельная схема устанавливается на крыше. Отсек для батарей, драйвер двигателей LM 298 и маленькую макетную плату я закрепил горячим клеем, но можно просто прикрутить их. Модуль bluetooth закрепляется скотчем. Ардуино нано вставьте в макетную плату.
Шаг 13: Электропроводка
Для соединения модулей понадобятся провода с джамперами.
Соедините красные провода двух моторов вместе (на каждой стороне) и затем черные провода. В итоге у вас выйдет по две клеммы с каждой стороны.
MOTORA отвечает за два правых мотора, соответственно два левых мотора соединены с MOTORB.
Для соединения всех компонентов следуйте инструкции:
Соединение моторов:
Out1 -> красный провод левостороннего мотора (+ )
Out2 -> черный провод левостороннего мотора ( — )
Out3 -> красный провод правостороннего мотора ( + )
Out4 -> черный провод правостороннего мотора ( — )
LM298 — > Arduino
IN1 -> D5
IN2-> D6
IN2 ->D9
IN2-> D10
Модуль Bluetooth -> Arduino
Rx-> Tx
Tx ->Rx
GND -> GND
Vcc -> 3.3V
Питание
12V — > красный провод батарей
GND -> черный провод батарей и пин GND на Arduino
5V -> соедините с пином 5V Arduino
Шаг 14: Логика управления
Чтобы понять принцип работы, я создал эту логическую таблицу. Она очень пригождается во время написания кода.
Шаг 15: Софт
Часть с фотом очень проста, она не требует никаких библиотек. Если вы поняли таблицу логики из прошлого шага, то сможете написать свой код. Я не тратил на код много времени и просто скопировал чей-то готовый вариант. Чтобы управлять роботом-машиной, я использую смартфон, соединённый с контроллером через модуль Bluetooth (HC-06).
Скачайте приложение. После его установки, свяжите телефон с модулем Bluetooth. Пароль «1234». Код Ардуино прикреплён ниже.
Файлы
- Basic_Robt.ino
- Smartphone Controlled Arduino Robot Code.pdf
Шаг 16: Тестирование
Чтобы проверить робота-машину, я положил её на маленькую картонную коробку. Таким образом, колёса будут крутиться, но машинка будет оставаться на месте. Проверьте работоспособность, нажимая все доступные кнопки. Если всё работает, то можно по-настоящему управлять ей.
Заметка: если моторы вращаются в противоположном направлении, то просто поменяйте местами провода.
Шаг 17: Планы на будущее
В этом руководстве я объяснил, как создать простенькую машинку. Дальше я хочу добавить в неё некоторые улучшения. Вы можете присоединить к ней различные датчики, вот некоторые идеи:
- Добавление ультразвукового датчика для объезда препятствий
- Использование модуля WiFi, например ESP8266 или Node MCU вместо Bluetooth, для удлинения дистанции управления.
- Добавление солнечной панели для зарядки батарей.
Portenta Machine Control — Официальный магазин Arduino
Код: AKX00032
/
Штрих-код: 763004
55
299,00 €
| /
Добавление возможностей промышленного Интернета вещей к автономному промышленному оборудованию.
Обзор
Portenta Machine Control — это полностью централизованный маломощный промышленный блок управления, способный управлять оборудованием и механизмами. Его можно запрограммировать с использованием среды Arduino или других встроенных платформ разработки.
Благодаря своей вычислительной мощности Portenta Machine Control обеспечивает широкий спектр вариантов профилактического обслуживания и использования ИИ. Он позволяет собирать данные в режиме реального времени с завода и поддерживает удаленное управление оборудованием, даже из облака, если это необходимо.
Основные преимущества:
Сокращение времени выхода на рынок
Дайте новую жизнь существующим продуктам
Добавить подключение для мониторинга и управления
Адаптируйте его к своим потребностям, каждый контакт ввода-вывода можно настроить
Сделайте оборудование умнее, чтобы быть готовым к революции ИИ
Обеспечение безопасности и надежности с нуля
Откройте новую возможность бизнес-модели (например, сервис)
Взаимодействуйте с вашим оборудованием с помощью усовершенствованного ЧМИ
Модульная конструкция для адаптации и модернизации
Portenta Machine Control позволяет компаниям внедрять новые модели «бизнес как услуга», отслеживая использование клиентами оборудования для профилактического обслуживания и предоставляя ценные производственные данные.
Portenta Machine Control обеспечивает стандартное для отрасли управление программным ПЛК и может подключаться к целому ряду внешних датчиков и приводов с изолированным цифровым вводом-выводом, аналоговым вводом-выводом, совместимым с током 4-20 мА, 3 настраиваемыми температурными каналами и выделенным разъем I2C. Доступны различные варианты подключения к сети, включая USB, Ethernet и WiFi/Bluetooth® с низким энергопотреблением, в дополнение к отраслевым протоколам, таким как RS485. Все входы/выходы защищены сбрасываемыми предохранителями, а встроенное управление питанием спроектировано так, чтобы обеспечить максимальную надежность в суровых условиях.
Ядро Portenta Machine Control работает на плате микроконтроллера Portenta H7 (входит в комплект), высоконадежной конструкции, работающей в промышленных температурных диапазонах (от -40 °C до +85 °C), с двухъядерной архитектурой, не требующей каких-либо внешних охлаждение. Главный процессор предлагает возможность подключения внешних человеко-машинных интерфейсов, таких как дисплеи, сенсорные панели, клавиатуры, джойстики и мыши, для обеспечения реконфигурации конечных автоматов на месте и прямого управления процессами.
Конструкция Portenta Machine Control рассчитана на широкий спектр сценариев использования. Можно настроить выбор контактов ввода/вывода с помощью программного обеспечения. Portenta Machine Control выделяется как мощный компьютер для унификации и оптимизации производства, где один тип оборудования может удовлетворить все ваши потребности. Среди других выдающихся особенностей:
Промышленная производительность с использованием возможностей плат Portenta
Корпус, совместимый с DIN-рейкой
Вставные клеммы для быстрого подключения
Компактное устройство (170 x 90 x 50 мм)
Надежная конструкция, работающая при промышленных температурах (от -40 °C до +85 °C) с двухъядерной архитектурой, не требующей внешнего охлаждения
Встроенные часы реального времени (RTC) для обеспечения идеальной синхронизации процессов
Используйте встроенные возможности подключения без каких-либо внешних компонентов
Сертификат CE, FCC и RoHS
Portenta Machine Control можно использовать в различных отраслях промышленности с широким спектром типов машин, включая: этикетировочные машины, машины для формования и укупорки, картонажные машины, клеильные машины, электрические печи, промышленные стиральные и сушильные машины, миксеры и т. д.
Легко добавьте Portenta Machine Control к существующим процессам и станьте владельцем своих решений на рынке машин.
Технические характеристики
Процессор | STM32H747XI Dual Cortex®-M7+M4 32-разрядный микроконтроллер Arm® с низким энергопотреблением (Portenta H7) |
Ввод |
|
Выход | |
Другой ввод/вывод | |
Протоколы связи | |
Связь | |
Память | |
Размеры | 170 х 90 х 50 мм |
Вес | 186 г |
Мощность | 24 В пост. тока +/- 20 % |
Тип разъема | Вставные клеммы для быстрого подключения |
Рабочая температура | от -40°C до +85°C (от -40°F до 185°F) |
Соответствие
Для этой платы предоставлены следующие декларации соответствия:
WEE
RCM
RoHS
CE
9000 2 FCC
UKCA
REACH
Для получения дополнительной информации о наших сертификатах, пожалуйста, посетите docs.arduino.cc/certifications
Документация
Изучите, как работает Portenta Machine Control, используя следующие файлы:
Схемы Portenta Machine Control
СХЕМЫ В .PDFPINOUT В .PDFDATASHEET IN .PDF
Схемы Portenta H7
СХЕМЫ В .PDF
Узнать больше
- ARDUINO DOCS Для получения полной технической документации, руководств и многого другого посетите Arduino Docs
Получите вдохновение
##заголовок##
##субтитры##
##текст##
читать далее
Введение в программирование на машинном языке Arduino — Arxterra
Микроконтроллер AVR и встраиваемые системы с использованием ассемблера и C Мухаммад Али Мазиди, Сармад Наими и Сепер Наими
Вот некоторые из источников, которые я использовал для разработки материала, использованного в лекции. ряд.
0010 0111 0000 0000 → 1110 1111 0001 1111 → 1011 1001 0000 0111 → 1011 1001 0001 1000
1011 1001 0000 0100 → 1011 0000 0111 0110 → 1011 1000 0111 0101 → 1100 1111 1111 1101
Напишите программу на ассемблере для включения и выключения света с помощью переключателя. Похожая программа использовалась при разработке The Wake-up Machine.
Важной частью этого курса является понимание дизайна и языка «Компьютера».
Компьютер реализует классический цифровой вентиль , который вы изучили в классе Digital Logic (EE201) в программном обеспечении с такими инструкциями, как and, or, и eor/xor.
Вам также придется плавно переходить от двоичного к шестнадцатеричному и обратно (т. е. Системы счисления ).
Компьютерные программы перемещают данные через регистры, поэтому знание триггеров и регистров также является важной базовой частью этого класса.
Наконец, вместо проектирования с помощью вентилей (EE201) вы будете проектировать с помощью кода. Таким образом, вам нужно будет просмотреть такие концепции Programming , как: передача данных (выражения присваивания), арифметические и логические операторы, передача управления (ветвление и цикл), а также битовые и битовые тестовые операторы, которые вы использовали в своем классе программирования (CECS174 или CECS100). .
Хорошей новостью является то, что помощь доступна в Главе 0: «Введение в вычислительную технику» вашего учебника, в дополнительных материалах, представленных в начале этого документа, в Интернете и в Приложении A – Системы счисления.
Числа и их компьютерное представление
Введение
Результат десяти пальцев с основанием 10 символ предшествует другому символу или следует за ним. Бывший. IV = 4 против VI = 6. Это была очень неуклюжая система для арифметических операций.
Позиционная запись (положительные действительные целые числа)
Дробные числа не будут рассматриваться, но следует отметить, что добавление указанного было бы простым и логичным дополнением к представленной теории.
Значение каждой цифры определяется ее позицией. Обратите внимание на произношение 256 «Двести пятьдесят шесть?
Пример. 256 = 2*10 2 + 5*10 1 + 6*10 0
Обобщение по любому основанию или основанию
Основание или основание = количество различных цифр, которые могут встречаться в каждой позиции в системе счисления.
N = A n r n + A n-1 r n-1 + … + A 1 r 1 + A 9035 7 0 r 0 (или простой A 1 r + A 0 )
Введение в двоичную систему
Работа большинства цифровых устройств по своей природе является двоичной, они либо включены, либо выключены.
Примеры: переключатель, реле, лампа, транзистор и транзисторно-транзисторно-логическая интегральная схема (TTL IC)
Таким образом, для цифрового компьютера вполне логично использовать основание 2.
Примечание. Будущие устройства могут не иметь этой характеристики, и это одна из причин важности основ и теории. Потому что они добавляют гибкости системе.
В двоичной системе допускается только 2 состояния; 0 и 1 (ЛОЖЬ или ИСТИНА, ВЫКЛ или ВКЛ)
Пример: Старший бит
Бит = одна двоичная цифра (0 или 1)
Это уравнение, связанное с позициями, также дает нам инструмент для преобразования заданной системы счисления в основание 10 — в этом примере двоично-десятичный.
Основание восемь и основание шестнадцать
В начале разработки цифрового компьютера фон Нейман понял полезность работы в промежуточных системах счисления, таких как основание 8 (или восьмеричное)
Путем группировки 3 двоичных цифр или битов формируется одна восьмеричная цифра . Обратите внимание, что 2 3 = 8
Таблица преобразования двоичных чисел в восьмеричные 002 0 0 0 = 0
0 0 1 = 1
0 1 0 = 2
0 1 1 = 3
1 0 0 = 4
1 0 1 = 5
1 1 0 = 6
1 1 1 = 7 Символы (не числа) 8 и 9 не используются в восьмеричной системе. .
Пример: 100 001 010 110
4 1 2 6 8 = 4*8 3 + 1*8 2 + 2*8 1 + 6*8 0 = 2134
Это это еще один эффективный способ перехода от основания 2 к основанию 10
Резюме: Основание 8 позволяет вам работать на языке компьютера, не имея дело с большим количеством единиц и нулей. Это стало возможным благодаря простоте преобразования с основанием 8 в основание 2 и обратно.
В микрокомпьютерах используется группировка из 4 бит (вместо 3 бит) или основание 16 (2 4 ). Первоначально произносившийся шестнадцатеричным, основание 16 было быстро переименовано в шестнадцатеричное (на самом деле это должно быть основание 6).
Таблица преобразования двоичного кода в шестнадцатеричный 0 0 0 = 0
0 0 0 1 = 1
0 0 1 0 = 2
0 0 1 1 = 3
0 1 0 0 = 4
0 1 0 1 = 5
0 1 1 0 = 6
0 1 1 1 = 7
1 0 0 0 = 8
1 0 0 1 = 9
1 0 1 0 = А
1 0 1 1 = B
1 1 0 0 = C
1 1 0 1 = D
1 1 1 0 = E
1 1 1 1 = F
9000 2 В Hex заимствованы символы для чисел от 10 до 15. из алфавита. Это показывает, насколько относительными являются числа на самом деле, или, другими словами, они действительно являются просто символами.
Пример: 1000 0101 0110
8 5 6 16 = 8*16 2 + 5*16 1 + 6*16 0 = 2134
90 002 Работать с основанием 16 не так сложно, как может показаться, хотя требует небольшой практики.
Преобразование из базы 10 в заданное основание (или основание)
Последовательное деление лучше всего продемонстрировать на примере
Чтобы получить цифры в правильном порядке, пусть они падают вправо.
Для этого примера: 43 10 = 101011 2 Быстрая проверка (восьмеричная) 101 011 = 5*8 + 3 = 43 10
Другой пример: преобразование 43 10 из десятичного числа в восьмеричное
Восьмеричное длинное деление
Для этого примера : 43 10 = 53 8 Быстрая проверка (восьмеричная) 5*8 + 3 = 43 10
Обобщение процедуры ИЛИ Почему это работает
90 003
Где r = основание, N = число, A = остаток, а n = количество цифр в основании r для числа N. Деление обычно выполняется по основанию 10.
Другой способ выражения приведенной выше таблицы:
N = r*N 1 + A 0
N 1 = r*N 9035 7 2 + А 1
Н 2 = r*N 3 + A 2
:
N n-1 = r*N n + A n-1 9035 8
N n = r*0 + A n
или (теперь для легкости)
N = r*( r*N 2 + A 1 )+ A 0 замена N 1 9 0358
N = r 2 N 2 + rA 1 + A 0 умножить r через уравнение
N = r 2 (r*N 3 + A 2 ) + rA 1 + A 0 замена N 2
:
N = A n r n + A n-1 r n-1 + … + A 1 r 1 + A 0 903 58 р 0
Номенклатура
Бит = 1 двоичная цифра
Байт = 8 бит
Word = Зависит от компьютера
Двоичная арифметика
Двоичная сумма
Двоичное сложение выполняется аналогично десятичному сложению с использованием следующих правил двоичного сложения:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10 (0 с переносом 1)
Примеры:
Проблема | 21 10 + 10 10 = 31 10 | 45 10 + 54 10 = 99 10 | 3 10 + 7 10 = 10 10 |
10101 2 + 01010 2 _______________ 11111 2 | 101101 2 + 110110 2 _______________ 1100011 2 | 011 2 + 111 2 _______________ 1010 2 | |
Чек | 1*2 3 + 0*2 2 + 1*2 1 + 0*2 0 = 1*8 + 0*4 + 1*2 + 0*1 = 10 10 |
Восьмеричное сложение
Восьмеричное сложение также выполняется аналогично десятичному сложению, за исключением того, что каждая цифра имеет диапазон от 0 до 7 вместо 0 до 9.
Задача | 21 10 + 10 10 = 31 10 | 45 10 + 54 10 = 99 10 | 3 10 + 7 10 = 10 10 |
25 8 + 12 8 _______________ 37 8 | 55 8 + 66 8 _______________ 143 8 | 3 8 + 7 8 _______________ 12 8 | |
Чек | 3*8 1 + 7*8 0 3*8 + 7*1 = 31 10 | 1*8 2 + 4*8 1 + 3*8 0 64 + 32 + 3 = 99 10 | 1*8 1 + 2*8 0 8 + 2 = 10 10 |
Шестнадцатеричное сложение
Шестнадцатеричное сложение также выполняется аналогично десятичному сложению, за исключением того, что каждая цифра имеет диапазон от 0 до 15 вместо 0 до 9.
Задача | 21 10 + 10 10 = 31 10 | 45 10 + 54 10 = 99 10 | 3 10 + 7 10 = 10 10 |
15 16 + 0A 16 _______________ 1F 16 | 2D 16 + 36 16 _______________ 63 16 | 3 16 + 7 16 _______________ А 16 (не 10) | |
Чек | 1*16 1 + 15*16 0 16 + 15 = 31 10 | 6*16 1 + 3*16 0 96 + 3 = 99 10 | 10*16 0 10 10 |
Двоичное умножение
Десятичное число | Двоичный |
11 10 x 13 10 _______________ 33 10 11 10– _______________ 143 10 | 1011 2 x 1101 2 _______________ 1011 2 0000 2- 1011 2– 1011 2— _______________ 10001111 2 |
Чек | 8*16 1 + 15*16 0 128 + 15 = 143 10 |
Двоичное деление
Проверка: 1*16 1 + 5*16 0 = 16 + 5 = 21 10 90 003
Практикуйтесь в арифметических действиях, составляя задачи, а затем проверяя свои ответы путем преобразования их обратно к базе 10 через разные базы (например, 2, 8 и 16).
То, как компьютер выполняет арифметические операции, является гораздо более сложной темой и не рассматривается в этом разделе.
Дополнения и отрицательные числа ИЛИ добавление бита знака
Сложение, умножение и деление — это хорошо, но как насчет вычитания и отрицательных чисел? Из начальной школы вы узнали, что вычитание — это просто сложение отрицательного числа. Математики вместе с инженерами использовали этот принцип вместе с арифметикой по модулю — естественным результатом сумматоров конечной длины — чтобы позволить компьютерам работать с отрицательными числами без добавления каких-либо новых аппаратных элементов в арифметико-логическое устройство (АЛУ).
Величина знака
Вот простое решение, просто добавьте бит знака. Чтобы реализовать это решение на аппаратном уровне, вам потребуется создать вычитатель; значит больше денег.
знак величи 0301 Дополнение до единиц
Вот решение, которое немного сложнее. Добавьте бит знака и инвертируйте каждый бит, составляющий величину — просто измените 1 на 0 и 0 на 1.
знак величина
Пример: – 2 = 1 в дополнении 1 вы просто добавляете биты знака и величины, позволяя последнему биту переноса (из знака) попасть в ведро бит , и затем добавьте 1 к ответу. Еще раз позвольте последнему биту переноса упасть в битовое ведро. Битовое ведро возможно из-за физического размера сумматора.
0 1010 2 10
+ _ 1 1101 2 +(-2)
0 1000 2 8
+______ 1 2 Настройка
0 1001 2
Хотя теперь вы можете использовать аппаратный сумматор для вычитания чисел , теперь вам нужно добавить 1 к ответу. Это снова означает добавление оборудования. Усугубляет эту проблему то, что дополнение до единицы позволяет двум числам равняться 0 ( шизофренический ноль ).
Двойки Дополнение
Вот решение, которое немного сложнее в настройке, но не требует корректировок в конце добавления. Есть два способа получить дополнение числа до двух.
Метод 1 = Возьмите дополнение до 1 и добавьте 1
__0 0010 2 2
+ 1 1101 2 Дополнение до 1 (т. е. обращение)
+ 1 2 добавить 1
1 1110 2
Метод 2 = Двигайтесь справа налево, пока не встретите 1, затем инвертируйте.
0 0010 2 | начало = 2 10 |
0 2 | без изменений |
10 2 | нет изменений, но встречается одно |
110 2 | инвертировать = изменить 0 на 1 |
1110 2 | инвертировать = изменить 0 на 1 |
1 1110 2 | инвертировать = изменить 0 на 1 |
Вычитание в дополнении до двух аналогично сложению. Никакой корректировки не требуется, и в дополнении до двух нет шизофренического нуля , хотя у него есть дополнительное отрицательное число (см. Как это работает).
0 1010 2 10
+ 1 1110 2 +(-2)
0 1 001 2 8
Примеры:
Проблема | 33 10 – 19 10 = 14 10 | 69 10 – 84 10 = -15 10 |
0 100001 2 + 1 101101 2 _______________ 0 001110 2 | 0 1000101 2 + 1 0101100 2 _______________ 1 1110001 2 | |
Чек | преобразовать в промежуточную базу E 16 = 14 10 | преобразовать обратно в знак величины – 0001111 2 преобразовать в промежуточную базу (16) – Ф 16 = – 15 10 |
Почему это работает
Реальные сумматоры имеют конечное число битов, что естественным образом приводит к арифметике по модулю — битовому ведру.
Переполнение
Теперь, когда арифметика сводится к хождению по кругу, положительные числа могут суммироваться с отрицательными и наоборот. Два теста позволяют быстро проверить, существует ли состояние «переполнения».
Тест 1 = Если два числа отрицательные, а ответ положительный, произошло переполнение.
Тест 2 = Если два числа положительные, а ответ отрицательный, произошло переполнение.
Если бы компьютеры были калькуляторами, а мир был идеальным местом, мы бы закончили. Но это не так, поэтому мы продолжаем рассматривать несколько реальных проблем и их решения.
Коды символов ИЛИ нечисловая информация
Проблема с десятичными числами
Представление десятичных чисел в двоичном компьютере. Двоичное представление десятичного числа несколько лет назад могло быть «зашито» в арифметико-логическое устройство (АЛУ) компьютера. Сегодня он, скорее всего, просто представляет некоторую информацию, которая естественным образом представлена в базе 10, например, ваш студенческий билет.
Решение
В этой задаче нужно представить десять различных цифр. Использование 4 бит 2 4 или 16 комбинаций могут быть созданы. Используя 3 бита 2 3 или 8 комбинаций, можно создать. Таким образом, для представления одной десятичной цифры потребуется 4 бита. Здесь следует указать, как из 4 битов (0000–1111) можно создать 16 комбинаций, в то время как наибольшее числовое значение, которое может быть представлено, равно 15. Причина, по которой наибольшее числовое значение и количество комбинаций различаются, связана с ноль (0) является одной из комбинаций. Эта разница указывает на необходимость всегда следить за тем, мокрее вы работаете, ноль или один родственник, и что именно вы ищете — двоичное число или комбинации.
Наиболее распространенный способ представления десятичного числа называется двоично-десятичным кодом (BCD). Здесь каждое двоичное число соответствует своему десятичному эквиваленту, а числа больше 9 просто не допускаются. BCD также известен как код 8-4-2-1, поскольку каждое число представляет соответствующий вес двоичных цифр. Напротив, код Excess-3 представляет собой невзвешенный код, использовавшийся в более ранних компьютерах. Его кодовое назначение происходит от соответствующего двоично-десятичного кода плюс 3. Преимущество кода Excess-3 заключалось в том, что, дополняя каждую цифру двоичного кодового представления десятичной цифры (дополнение до 1), 9будет сформировано дополнение этой цифры. В следующей таблице перечислены все десятичные цифры и их эквиваленты в кодах BCD и Excess-3. Я также включил отрицательный эквивалент каждой десятичной цифры, закодированной с использованием кода Excess-3. Например, дополнение 0100 (1 десятичный знак) равно 1011, то есть 8 десятичных знаков. Вы можете найти больше десятичных кодов на странице 18 «Цифрового дизайна» М. Морриса Мано (текст курса).
Двоично-десятичный код (BCD) | Превышение-3 | |||
Десятичная цифра | Двоичный код 8-4-2-1 | Десятичная цифра | Двоичный код | 9 комплиментов |
0 1 2 3 4 5 6 7 8 9 Н/Д Н/Д Н/Д Н/Д Н/Д Н/Д | 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 | Н/Д Н/Д Н/Д 0 1 2 3 4 5 6 7 8 9 Н/Д Н/Д Н/Д | 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 | 1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 |
Проблема с буквенно-цифровыми символами
Представляет буквенно-цифровые данные (строчные и прописные буквы алфавита (az, A-Z), цифровые числа (0-9) и специальные символы (возврат каретки, перевод строки, точка и т. д.). .).
Решение
Для представления прописных и строчных букв алфавита плюс десять цифр необходимо не менее 62 (2×26+10) уникальных комбинаций. 2 6 или 64 уникальные комбинации будут работать, для специальных символов останется только 2 комбинации. С другой стороны, код, использующий 7 бит, обеспечивает 2 7 или 128 комбинаций, что дает более чем достаточно места для алфавита, цифр и специальных символов. Итак, кто решает, какие бинарные комбинации каким символам соответствуют. Здесь нет «лучшего пути». Около тридцати лет назад IBM выпустила новую серию компьютеров, в которых для хранения одного символа использовалось 8 бит (2 8 = 256 комбинаций), и разработала расширенный двоично-десятичный код обмена (EBCDIC, произносится как ep-su-dec). для этой цели. Поскольку у IBM была почти монополия в области компьютеров, в то время другие производители компьютеров отказались принять EBCDIC, и именно так появился 7-битный американский стандартный код для обмена информацией (ASCII). В настоящее время ASCII принят практически всеми производителями микрокомпьютеров и мини-компьютеров. В таблице ниже показан частичный список кодов ASCII. На странице 23 текста перечислены все 128 кодов с пояснениями к управляющим символам.
ДЕКАБРЬ | ШЕСТИГР. | СИМВОЛ | ДЕКАБРЬ | ШЕСТИГР. | СИМВОЛ |
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 20 21 22 23 24 25 26 27 28 29 2А 2Б 2С 2D 2Е 2F 30 31 32 33 34 35 36 37 38 39 3А 3Б 3С 3D 3Е 3F | ! » # $ % и ‘ ( ) * + , – * / 0 1 2 3 4 5 6 7 8 9 : ; ? | 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 40 41 42 43 44 45 46 47 48 49 4А 4Б 4С 4Д 4Е 4F 50 51 52 53 54 55 56 57 58 59 5А 5Б 5С 5D 5Е 5F | @ А Б С Д Е Ф Г Х я Дж К л М Н О 9 _ |
Слово «строка» обычно используется для описания последовательности символов, хранящихся в виде их числовых кодов (например, ASCII).
Хотя для ASCII требуется только 7 бит, в компьютерах стандартом является использование 8 бит, где крайний левый бит равен 0. Это позволяет вам кодировать еще 128 символов (включая такие символы, как греческие буквы), что дает вам расширенный код . набор символов , просто заставив крайний левый бит быть 1. Это также может привести к компьютерной версии Вавилонской башни. В качестве альтернативы крайний левый бит может использоваться для обнаружения ошибок при передаче символов по телефонной линии. Что подводит нас к нашей следующей проблеме.
Synthesis
Хотя ASCII решает проблему связи между англоязычными компьютерами, как насчет японских, китайских или русских компьютеров, которые имеют разные, и во всех этих примерах, более крупные алфавиты?
Проблема связи
Двоичная информация может передаваться последовательно (по одному биту за раз) через какой-либо вид средства связи, например, телефонную линию или радиоволну. Любой внешний шум, внесенный в среду, может изменить битовые значения с 1 на 0 или наоборот.
Решение
Самое простое и наиболее распространенное решение проблемы связи заключается в добавлении к отправляемой информации бита четности . Функция бита четности состоит в том, чтобы сделать общее количество отправляемых единиц либо нечетным (нечетная четность), либо четным (четная четность). Таким образом, если было отправлено любое нечетное количество единиц, но получено четное число единиц, вы знаете, что произошла ошибка. В приведенной ниже таблице показаны соответствующие биты четности (нечетные и четные), которые будут добавлены к 4-битному блоку данных.
Синтез
Что произойдет, если две двоичные цифры изменят значения битов? Можно ли разработать систему не только для обнаружения ошибок, но и для идентификации и исправления измененных битов? Один из наиболее распространенных кодов исправления ошибок был разработан Р. У. Хэммингом. Его решение, известное как код Хэмминга, можно найти в самых разных местах, от схемы оперативной памяти (ОЗУ) до телекоммуникационной линии космического корабля. Дополнительные сведения о кодах исправления ошибок см. на стр. 29.9 к 302 текста.
Хотя обнаружение ошибок — это хорошо, предотвращение их появления — еще лучше. Что, конечно же, подводит нас к нашей следующей проблеме.
Ошибка энкодера вала
Когда вал вращается, вам необходимо преобразовать его радиальное положение в двоично-цифровое число.
Решение
Тип кодера, который будет кратко описан ниже, преобразует положение вала в двоично-кодированное цифровое число. Это преобразование будет выполнено несколькими различными типами устройств; описываемый тип представляет устройства, используемые в настоящее время, и следует понимать, что более сложные кодеры могут обеспечить дополнительную точность. Кроме того, обычно возможно преобразовать физическое положение в электрический сигнал аналогового типа, а затем преобразовать этот сигнал в цифровую систему. Однако в целом можно построить более прямые и точные кодеры, исключив промежуточный этап преобразования физического положения в аналоговый электрический сигнал. На рисунке ниже показан диск с кодированными сегментами, соединенный с валом.
Энкодер может быть физически реализован с использованием электромеханической (щеточной) или электрооптической технологии. Предполагая электрооптическое решение, кодирующий диск состоит из полос, разделенных на прозрачные сегменты (заштрихованные области) и непрозрачные сегменты (незаштрихованные области). С одной стороны диска размещен источник света, а с другой стороны — набор из четырех фотоэлементов, расположенных так, что по одной ячейке находится за каждой полосой диска кодера. Если между источником света и светочувствительной клеткой находится прозрачный сегмент, будет получен результат 1; и если перед фотоэлементом находится непрозрачная область, будет выход O.
Существует одна основная проблема с показанным кодером: если диск находится в позиции, где выходное число меняется с 011 на 100, или в любой позиции, где несколько битов изменяют значение, выходной сигнал может стать неоднозначным. Как и в любом физически реализованном устройстве, как бы тщательно оно ни было изготовлено, кодер будет иметь ошибочные выходы в нескольких позициях. Если это происходит, когда 011 изменяется на 100, возможно несколько ошибок; значение может быть прочитано как 111 или 000, любое из которых является значением со значительными ошибками. Чтобы обойти эту трудность, инженеры используют код «Грей» или «единичное расстояние» для формирования диска кодера (см. предыдущий рисунок). В этом коде 2 бита никогда не меняют значения в последовательных закодированных двоичных числах. При использовании диска с кодировкой Грея 6 может быть прочитано как 7, а 4 как 5, но больших ошибок не будет. В таблице ниже показан список 4-битного кода Грея.
Десятичный | Серый Код |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 |
Synthesis
Код Грея используется во множестве приложений, кроме энкодеров.