|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
|
Универсальный контроллер28.06.2013, 13:39. Показов 67177. Ответов 47
Метки нет (Все метки)
Хочу представить свой "универсальный контроллер" (не хватило фантазии обозвать по-другому). Динный проект образовался спонтанно и развивался в течении нескольких месяцев, так-что получился достаточно объемным. Описать его полностью я не смогу, так-как некоторый функции подзабылись :crazy:
Контроллер позволяет с помощью ПК управлять различными устройствами, и на момент написания статьи это: - восьми битный порт ввода-вывода; - восьми канальный 10бит АЦП; - 2 ШИМ контроллера; - 2 двигателя постоянного тока; - 6 сервомашинок; - шина I2C; Управление осуществляется по COM-порту, подачей специальных команд. За разбор команд отвечает простейший интерпретатор. Немного о формате команд. Воспринимаются только заглавные символы. Все слова обязательно должны быть разделены пробелами с обоих сторон !(на данный момент пробелами считаются: $0D, $0A, , ,). Количество пробелов подряд не ограничено. Команды могут иметь неограниченное число параметров. Окончанием команды считается символ ;. Собственно список доступных команд и их описание. USORT - команда для настройки соединения с ПК. В качестве параметра задается скорость соединения. Пример: USORT BR_9600 ; установит скорость обмена 9600 бит; PORT - команда для работы с восьмибитным портом. Параметры: "число", DDR, OR, AND, RD. Пример: PORT 255 ; выведет в порт 255. PORT DDR $FF $AA RD установит все выводы на выход, выведет $AA, и произведет чтение вернув число (в данном случае 170). ADC - команда для работы с АЦП. Параметры: "число", AREF, IREF. Пример: ADC IREF 0 1 2 3 ; - установит внутренний ИОН, и выведет 4 результата преобразования с каналов 0, 1, 2, 3 соответственно. PWM - команда для работы с ШИМ. Параметры: "число", А, В, ENABLE, DISABLE. Пример: PWM ENABLE A 10 B 93 ; - разрешает работу ШИМ и установит для канала А 10% заполнение, для канала В 93% заполнение. MOTOR - команда для работы с двигателями постоянного тока (с поддержкой НЧ программного 8уровневого ШИМ). Параметры: "число", MR, ML, ENABLE, DISABLE. Пример: MOTOR ENABLE MR -8 ML 4 ; разрешает работу двигателей, установит для правого максимальную мощность "назад", для левого половину мощности "вперед". SERVO - команда для работы с сервомашинками. Параметры: "число", ENABLE, DISABLE. Пример: SERVO ENABLE 0 50 1 90 2 30 ; разрешает работу сервомашинок, установит для 0, 1, 2 угол 50, 90, 30 градусов соответственно. I2C - команда для работы с шиной I2C. Принцип работы будет понятен на примере работы с микросхемой at24c16 (адрес на шине $A0). I2C SWWWWWWWP $A0 $00 $05 1 2 3 4 ; запишет в микросхему 4 байта ($01,$02,$03,$04) начиная с адреса $0005. I2C SWWWSWRRRRP $A0 $00 $05 $A1 ; выведет 4 байта прочитанные с адреса $0005. Хватит команд, есть еще несколько, но они менее полезны. Контроллер основан на МК ATMiko16, работающим на частоте 7.3728MHz. После прошивки контроллер выглядит так: [4.94 Кб] Прошивка протестирована на боте управляемого с ПК, но буковку b я пока не убираю :crazy:
0
|
|
| 28.06.2013, 13:39 | |
|
Ответы с готовыми решениями:
47
Универсальный адаптер универсальный Arduino Универсальный фильтр |
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||||
| 28.06.2013, 14:21 | ||||
0
|
||||
|
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
|
||
| 28.06.2013, 14:36 | ||
Есть ещё командный интерпритируемый язык близкий к вашему варианту Tcl т.к. описанных команд не достаточно для создания автономного устройства и в чём тогда универсальность? (т.е. самостоятельно, применить контроллер уже не получится?)
0
|
||
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
| 28.06.2013, 14:47 | |
|
Похоже на контроллер с самопальным "монитором", с чем совместим непонятно.
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 28.06.2013, 14:48 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
|
| 28.06.2013, 14:51 | |
|
Добавить команды для работы с SPI дело пары часов, просто мне этот интерфейс не требовался.
Джамперы прошлый век :) - текущая прошивка умеет конфигуриться из еепромки. По умолчанию интерпретатор отъедает 1/16 времени мк, и этого хватает для работы на скорости 115200. Меньше кварц - меньше энергопотребление.
0
|
|
|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
||
| 28.06.2013, 15:13 | ||
Есть ещё командный интерпритируемый язык близкий к вашему варианту Tcl т.к. описанных команд не достаточно для создания автономного устройства и в чём тогда универсальность? (т.е. самостоятельно, применить контроллер уже не получится?) Автономность и не планировалась. Управляющая программа находится на ПК (телефоне) - контроллер лишь исполнитель. Купил я к примеру акселерометр - что да как непонятно. Цепляю его по I2C, запускаю гипертерминал (или аналог), шлю команды читая даташит и "вживую" вижу как он работает и что выдает :).
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||||
| 28.06.2013, 15:14 | ||||
I2C-то хоть аппаратный (TWI)? Какой максимальный битрейт обеспечивает?
0
|
||||
|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
|
| 28.06.2013, 15:23 | |
|
Аппаратный I2C оказался очень капризным (несоблюдение последовательности операций на шине приводило к его "зависаниям") поэтому используется программный 100kHz.
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 28.06.2013, 15:27 | ||
Недели две назад была такая тема, в ней тоже показывали интерактивный преобразователь интерфейсов (есть сайт) - так это сказка! В хорошем смысле этого слова.
0
|
||
|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
||
| 28.06.2013, 15:39 | ||
Недели две назад была такая тема, в ней тоже показывали интерактивный преобразователь интерфейсов (есть сайт) - так это сказка! В хорошем смысле этого слова. Интерактивный преобразователь интерфейсов - это лишь одна из фишек :). С помощью моего девайса можно управлять ботом с ПК (6 сервомашинок и 2 движка ). Так-же я собирал на нем напряжометр и частотомер. В прошивке уже сидит генератор сигналов, но оболочку на ПК я еще не делал.
0
|
||
|
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
|
||
| 28.06.2013, 15:40 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
||
| 28.06.2013, 15:50 | ||
Тестировал на at24c16. Если задать неправильную последовательность операций на шине, то аппаратный I2C "теряет" эту микруху и всегда выдает NACK.
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 28.06.2013, 16:11 | ||
Да и от зависшего состояния TWI избавиться легко. Imho прошивка робота обязана уметь выходить из любых зависаний. Не знаетет кАк - делайте soft-risit.
0
|
||
|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
||
| 28.06.2013, 16:19 | ||
Да и от зависшего состояния TWI избавиться легко. Imho прошивка робота обязана уметь выходить из любых зависаний. Не знаетет кАк - делайте soft-risit. Зависает не прошивка, а аппаратный I2C. Если дурак изобретательный, то никакая защита не поможет :). Я использую программный I2C - он НЕ зависает.
0
|
||
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
| 28.06.2013, 17:37 | |
|
Назовите хотя бы одно преимущество перед Ардуиной, кроме той что поделка ни с чем ни совместима. Может цена настолько копеечная? Где фото кстати?
P.S. Если контроллер универсальный, какому API соответствуют его команды?
0
|
|
|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
||
| 28.06.2013, 18:26 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
||
| 28.06.2013, 18:44 | ||
Для бытовой техники таким API являются RC-5, DMX512. Для робототехники Quik API, SmartCOM, Otfo Dyrist, Alor COM, Plaza2. Наверняка что то не упомянул. Но это какие никакие стандарты.
0
|
||
|
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 36
|
||
| 28.06.2013, 19:03 | ||
Для бытовой техники таким API являются RC-5, DMX512. Для робототехники Quik API, SmartCOM, Otfo Dyrist, Alor COM, Plaza2. Наверняка что то не упомянул. Но это какие никакие стандарты. Моя ваша не понимать. Объясните как с помощью RC-5, DMX512, Quik API, SmartCOM, Otfo Dyrist, Alor COM, Plaza2 покрутить двигатель, подрыгать пином или подергать серву через терминал ? Будет ли это проще чем, к примеру, послать команду "PORT $FF ;" ?
0
|
||
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
||
| 28.06.2013, 19:22 | ||
Преимущество стандартных протоколов в том, что соответствующее оборудование выпускают десятки фирм по всему миру (и главное в Китае). Набрав в поиске AliExpress строку RC5 coder/decoder вы получите кучу ссылок на копеечное оборудование. И не совсем копеечное, и даже совсем не копеечное. P.S. Я не часто заглядываю в раздел "Робототехника", но и здесь на первом месте топик "Создаем ROBO_API".
0
|
||
| 28.06.2013, 19:22 | |
|
Помогаю со студенческими работами здесь
20
Универсальный таймер Универсальный AmbiLight Универсальный программатор Универсальный терминал на AVR Универсальный JTAG отладчик Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|