Консультации
FAQ
Он-лайн консультации
Игра Клубы Команды Оборудование Форум

Новости paintball.SU
 
Пейнтбол, джентельмены, только пейнтбол!
2.04.2016 
Пейнтбол, джентельмены, только пейнтбол!
 
Итоги конференции РФП...
29.02.2016 
Итоги конференции РФП...
 
Лига Классического Пейнтбола. Сезон 2016 года
19.02.2016 
Лига Классического Пейнтбола. Сезон 2016 года
 
Где пейнтболисту отпраздновать масленицу?
15.02.2016 
Где пейнтболисту отпраздновать масленицу?
 
Пейнтбол: Событие года - БПМ...
23.01.2016 
Пейнтбол: Событие года - БПМ...
 
Вторжение остановлено. Время спланировать игры в новом году
21.12.2015 
Вторжение остановлено. Время спланировать игры в новом году
 
МонстрыVSЛюди или фантастический пейнтбол в подмосковном ле.SU
24.11.2015 
МонстрыVSЛюди или фантастический пейнтбол в подмосковном ле.SU
 
HALLOWEEN – PAINTBALL – ГВАРДИЯ
24.10.2015 
HALLOWEEN – PAINTBALL – ГВАРДИЯ
 
смотреть всё »

Использование Paralax Basic Stamp в пейнтболе

- 11/09/2007
Автор: Билл Миллз

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

Эта статья не пошаговое руководство по сборке схемы управления для пейнтбольного маркера. Скорее она предназначена для обеспечения базовыми знаниями по электронике и управлению, которые нужны чтобы создать и запрограммировать собственные системы для специального использования. Это ни в коем случае не полный обучающий курс – необходимо прочитать еще и рекомендованные инструкции. Эта статья направит читателя на верный путь, чтобы понимать смысл того, что он читает, и выделить ключевые моменты, которые необходимы для создания индивидуальной схемы для маркера. Описанные здесь схемы можно сочетать с Basic Stamp для создания полнофункционального контролера для пейнтбольного маркера.

Как я уже упоминал во второй статье, хотя микропроцессоры и кажутся более сложными и высокотехнологичными, чем другие электронные компоненты, они могут существенно упростить схемы для определенных задач. Причина в том, что сложность деятельности кроется не в контурах, а в управляющем ими программном обеспечении. Это дает ряд преимуществ. Для меня, человека знакомого со многими языками программирования высокого уровня, это хорошо, потому что ставит меня на знакомую почву (обратите внимание высокий уровень не означает, что этому сложно научиться – это означает, что их проще изучить, так как они ближе к письменному языку, чем к голым цифрам в восприятии микропроцессора). Кроме этого важное преимущество в том. Что добавление или удаление или испытание таких характеристик как время задержки между закрытием болта маркера и моментом выстрела состоит только в настройке программы, а не в разработке и сборке новой цепи. Это огромное преимущество при испытаниях и настройке прототипа. Перерыв, заданный периодом тактовых импульсов на чипе, намного точнее перерыва, установленного скоростью зарядки конденсатора, особенно принимая во внимание величину погрешностей большинства резисторов, о которой мы узнали из предыдущей статьи.
Так как автор не может обеспечить безопасность персонально изготовленного маркера, все программное обеспечение в этой статье © 2002, William R. Mills III и может использоваться только для управления индикатором данных и светодиодами в качестве учебного проекта – оно не должно использоваться для регулирования маркеров или других устройств. У механиков, которые потратят время на изучение обсуждаемой здесь технологии Basic Stamp, не должно возникнуть серьезных проблем с написанием собственных программ для специализированных маркеров.
Хотя селективная стрельба и автоматический режим могут очень помочь технику в исследовании работы клапанов, газовых и подающих систем, на большинстве пейнтболных площадок они запрещены, и по предложенным для маркеров стандартам ASTM их разрешение не планируется. По существу механикам НЕ рекомендуется предоставлять своим клиентам любые режимы стрельбы кроме полуавтоматического. Важно упомянуть, что «обманных режимов», которые внешне делают одно, а незаметно дают пользователям преимущества, также стоит избегать, потому что они только заставят владельцев поля и организаторов игр ввести более строгие ограничения против маркеров с электронным управлением.
В конце 90-х на рынке появилась новинка Angel LCD. Мне не терпелось поэкспериментировать с микропроцессорами, но я решил, что электронные схемы нужные для маркеров окажутся выше моих сил. Я видел в каталогах электронных магазинов Parallax Basic Stamp, и решил более тщательно ее изучить. После недолгого поиска в сети я нашел сайт Parallax и множество любительских сайтов. Находки поразили меня. Basic Stamp это не просто микропроцессор. Это полностью программируемый многоцелевой компьютер в крошечном чипе. Он программируется на PBASIC, языке программирования высокого уровня, и продается за приемлемую цену. Использование Basic Stamp настолько упростило мой проект Rainmaker LCD, я от нулевых знаний Basic Stamp дошел до законченного Rainmaker LCD за три вечера работы.

Технология Basic Stamp

Существует несколько версий Basic Stamp. Первый Revision D Basic Stamp крупноват в сравнении с более современным и популярным Basic Stamp IC (я буду называть его просто Basic Stamp, BS1-IC). Есть еще the Basic Stamp II, у которого вдвое больше входных и выходных соединений, чем у IC и в 512 раз больше памяти, и есть еще более быстрые версии. Все версии Basic Stamp программируются по одному набору команд PBASIC (хотя BS2 отличается некоторыми дополнительными командами), что упрощает переход от одной модели к другой, когда потребуется больше мощности.

Я начал с Basic Stamp IC из-за более низкой стоимости и меньшего размера, и ее мощности оказалось более чем достаточно для нужд пейнтбольного маркера. Маркеру с всесторонним жидкокристаллическим текстовым меню может лучше подойти управление BS2 из-за ее более объемной памяти. Есть множество форм BS1-IC. Ее можно купить отдельно примерно за 30$ (оптом дешевле) или в комплекте, включающем микроконтроллер, кроссовую плату, инструкции, кабель для программирования, и редактор MS-DOS PBASIC и программное обеспечение компилятора, что будет стоить около 100$. Схемы для программирования, программное обеспечение и даже документацию можно найти в сети бесплатно, но комплект определенно упрощает работу с Basic Stamp для начинающих.
BS1-IC это монтажная плата размером примерно 3,5 Х 0,7 см с рядом 14 выводами с одной стороны, что позволяет включить ее в разъем. На плате BS1-IC есть все необходимые для управления компоненты. Это оставляет специализированные функциональные схемы на усмотрение пользователя. Можно создать очень простые схемы, соединенные с I/O-каналами Stamp, чтобы посылать в нее входные сигналы либо контролировать с ее помощью электронные компоненты, такие как соленоидные клапаны.

Выводы (пины) Stamp служат следующим функциям:

Вывод 1 – PWR - Мощность – Здесь Stamp подключается к напряжению. BS1-IC работает на +5 вольт. Эта линия соединяется с входом стабилизатора напряжения с фиксированным выходом и принимает входное напряжение от 6 до 15 вольт. Поэтому логично выбрать для питания Basic Stamp батарею 9В, потому что она может очень долго работать прежде чем напряжение упадет до 6 вольт.

Вывод 2 – GND - Заземление системы – это соединение с отрицательным полюсом источника питания, или шасси в случае использования каркасного заземления. Когда Stamp подключают к кабелю для программирования, оно должно соединять вывод 2 с 25 выводом параллельного порта компьютера.

Вывод 3 - PCO – выход ПК –Кабель для программирования соединяет этот вывод с 11 выводом (Busy) параллельного порта компьютера.

Вывод 4 – PCI – вход ПК–Кабель для программирования соединяет от вывод со вторым выводом (D0) параллельного порта компьютера.

Вывод 5 - +5v – 5v in/out – Это выход встроенного регулятора мощности. Если вы используете на первом выводе батарею для питания Stamp, вы можете использовать линию 5 как регулируемый источник напряжения +5В для цепей, соединенных с платой. Пятый вывод можно также использовать для питания платы если соединить ее с регулируемым источником напряжения +5В вместо первого вывода (проще использовать батареи, соединенные с 1 выводом). Важно отметить, что встроенный регулятор не очень долговечен, и выход 5 вывода не стоит использовать как источник питания для таких вещей как соленоид или яркие лампы – они должны питаться напрямую от батареи или через другой регулятор напряжения.

Вывод 6 – RES – Перезагрузка - Когда электроснабжение basic stamp падает ниже +4В этот вывод выключается, чтобы перезагрузить BS1-IC. Вы можете выключить его самостоятельно, заземлив линию и вручную перезагрузить Stamp, как кнопка reset на компьютере.

Выводы 7 – 14 обычные порты ввода-вывода (l/O-выводы), посредством которых Stamp сообщается. Они могут реагировать на нажатие кнопок (или курка), считывать аналоговые данные напряжения, вырабатывать импульсы (которые могут создавать звуковые волны специфических тонов или контролировать скорость двигателей постоянного тока), читать или передавать последовательно передаваемые данные (для связи с другими компьютерами или ЖК экранами) или просто давать более или менее высокую мощность (чтобы включать или выключать комплектующие, например светодиоды или соленоиды). Возможности этих выводов ограничены цепями, которые вы к ним подключаете. Важно помнить, что эти выводы нельзя использовать для мощных цепей – не больше 40мА суммарного тока. Лучше ставить их на управление транзисторами, через которые пройдет ток.

Есть еще пара терминов, которые стоит знать, прежде чем продолжать - high и low. При работе с компьютерными компонентами у нас есть два состояния – вкл и выкл, простые единицы и ноли, которые компьютер понимает на простейшем уровне. Так как Stamp работает на +5 вольт, high или «вкл.» будет означать +5 вольт в цепи, а low или «выкл» просто ничего, или минимальное напряжение в цепи.

Носитель ВS1-IC – действительно удачная плата, входящая в стартовый набор Basic Stamp. На ней есть разъем для подключения кабеля от ПК, кнопка перезагрузки (присоединяется чтобы закоротить шестую линию), клеммы батареи для присоединения батареи 9v, и перфорированный участок платы, где можно создавать опытные образцы для подключения к разъему, через который они соединяются с ВS1-IC. Носитель это определенно полезный инструмент для обучения использованию Stamp. первыми схемами, которые я создал на носителе, были два светодиодных индикатора и пара кнопок.

Программирование Basic Stamp

Итак, если раньше вы никогда не писали компьютерные программы или сценарии, может появиться несколько препятствий. Это веская причина чтобы воспользоваться инструкцией к Basic Stamp – она отлично объясняет, как программировать Stamp, а также приводит примеры схем и программ для каждого шага работы.

Программы для Basic Stamp пишутся в редакторе PBASIC. Который работает на ПК в MS-DOS. Когда программа готова к испытаниям на Stamp, микроконтроллер подключают к источнику питания, и с помощью кабеля соединяют Stamp с компьютером. После этого программа запускается (ctrl-R в программе PBASIC – подробные указания в инструкции к Stamp). Когда программа запустилась, редактор Stamp компилирует ее из команд PBASIC, которые имеют смысл для нас, в серию цифр, которые понятны интерпретатору на Basic Stamp. если в программе есть серьезные ошибки (неправильно записанные команды и т.д.), редактор выдаст сообщение об ошибке, объясняющее проблему. В противном случае программа через кабель передается в EEPROM (электронно-перепрограммируемая постоянная память) на Stamp и запустится. Теперь, когда EEPROM запрограммировано, Stamp содержит наши команды и начинает их выполнять при поступлении энергии, даже после отключения от ПК.

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

1 шаг – Оденьте маску

2 шаг – Идите к хронографу

3 шаг – Стреляете из маркера

4 шаг – Считайте показания хронографа

5 шаг – Если число больше 300 настройте маркер на немного меньшую скорость и вернитесь к 3 шагу

6 шаг – Идите на поле и играйте

В PBASIC в отличие от большинства типов BASIC нам не приходится помечать каждый свой шаг, если мы не собираемся отсылать туда программу по имени, например если шаг 5 отсылает программу обратно в третий шаг – шаг 3 должен иметь имя в PBASIC.

Изучение PBASIC состоит в основном в изучении команд, которые понимает интерпретатор, и расстановка их в правильном порядке для выполнения работы, которая нам нужна. Я пройдусь по некоторым командам и нескольким простым программам и цепям – это всего лишь введение, инструкция к Basic Stamp и многочисленные ресурсы для Basic Stamp в сети дадут намного более детальную информацию.

В дополнение к электрически стираемому перепрограммируемому ПЗУ, в котором содержится программа Stamp и некоторые долговременные данные, в интерпретаторе PBASIC (процессор Stamp) находится ОЗУ на 16 байт, которое программы PBASIC могут использовать для хранения и обработки цифр. Чтобы вы поняли, о какой мощности компьютера идет речь, это примерно одна миллионная ОЗУ, нужного ПК для работы Windows95. ОЗУ Basic Stamp разбито на две части, некоторые адресуют к битам (могут хранить информацию 1 и 0), а некоторые байтам (от 0 до 255) и некоторые к словам (от 0 до 65.535). Большинство из них совпадают, так что важно выбирать переменные ОЗУ разумно. Например, слово 6 состоит из байтов 12 и 13, так что вы можете использовать байт 12 для хранения цифр если слово 6 уже занято. Таблица адресов ПЗУ находится на 11 странице инструкции к Basic Stamp.

Первое слово ОЗУ называется Port и остается в запасе, хотя может использоваться для хранения чисел. То, что вы можете в него вложить, оказывает большое влияние на то, как функционирует Stamp. Первый байт называется «вывод» и вы можете вводить в него числа или считывать их оттуда. Проще, особенно если вы не разбираетесь в двоичной системе, обращаться к выводам от 0 до 7 индивидуально. Если например I/O-вывод0 подключен к цепи переключателя, который повышает напряжение при нажатии кнопки, мы настроим программу чтобы она контролировала уровень переменной Pin0. Если кнопка нажата, вывод0 равняется 0. Либо, если наша цепь со светодиодом подключена к I/O Pin0, мы можем установить в программе Pin0=1 чтобы при повышении напряжения на выводе светодиод загорался, а состояние Pin0=0 выключало его.

Второй байт порта это Dirs Byte – от слова direction, направление. Все биты, образующие этот байт, определяют, будут ли порты ввода-вывода с соответствующими названиями использоваться для ввода или вывода. Мы увидим несколько таких случаев в примерах программ.

Приступим к делу!

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

Первая схема это схема для светодиода. Она очень проста. Мы соединим резистор на 470 Ом с портом ввода-вывода Stamp заземлим его через светодиод. Так как для светодиодов важно направление тока, мы должны быть уверенны, что заземлен анод светодиода, чтобы катод был соединен с резистором и получал сигнал +5v от порта stamp.

Эту цепь легко собрать на кроссовой плате stamp, хотя для уменьшения размеров и использования на маркере я собрал ее используя резистор для поверхностной установки, припаяв его непосредственно к одному из выводов stamp с миниатюрным светодиодом и коротким проводом соединяющим светодиод и второй вывод со Stamp (заземление). Из-за использования резистора поверхностной технологии не было необходимости чтобы вывод выглядывал за край Stamp, так что я просто обрезал его, чтобы законченная плата была меньше.

Вы также можете установить светодиод на длинных гибких проводах, чтобы можно было установить его на тыльную сторону рукоятки, а цепь stamp скрыть внутри. Что касается выбора светодиодов, кроме необычных (с маркировкой «высокий ток» или «двухцветный» Ии что-то подобное) они очень разнообразны. Вы сможете выбрать их по цвету, форме и размеру, которые отвечают вашим целям. В магазинах вы найдете огромный выбор различных форм и размеров. Ток, который будут использовать светодиоды, минимален, так что вам подойдут резисторы ¼ Ватт или даже меньшей мощности (как крохотные для поверхностной установки), при выборе которых важно выбрать уровень сопротивления – 470 Ом, чтобы на диод не поступило слишком много тока, и он не перегорел.

В нашей цепи со светодиодом, переключение вывода, к которому она подключена, в положение high включает светодиод, а low – выключает.

Наша следующая цепь это переключатель. Мы используем энергию от вывода 5 Stamp 5 (+5v) и подведем ее к контакту замыкающего переключателя с самовозвратом. Другой контакт переключателя соединен и с каналом ввода-вывода на Stamp, и с резистором на 10кОм, ведущим к заземлению. Его также можно соединить с платой Stamp, или с самим микроконтроллером Stamp – резистор соединяет вывод с заземлением, а контакты переключателя идут к выводу 5 и I/O-выводу. В этой цепи I/O-вывод будет выключен пока кнопка не будет нажата, после чего наличие сигнала +5В переведет I/O-вывод в состояние high. Если после того, как мы отпустим кнопку, на выводе останется положительный заряд, резистор сработает как ток нагрузки.

Итак, с этими двумя цепями мы уже можем что-то сделать. В экспериментальных целях давайте подключим цепь переключателя к выводу 7 на Stamp (порт ввода-вывода 0), а цепь светодиода на вывод 14 Stamp (порт ввода-вывода 7).

В PBASIC каждая строка текста используется для одной команды. Каждый раз, когда мы используем символ ’, все что справа от него считается комментарием, и игнорируется интерпретером PBASIC. Комментарии стираются из программы, когда мы загружаем ее в stamp, так что они являются удобным способом вложить в программу пояснения чтобы помочь разораться в ней человеку, который изучает или дорабатывает ее. Я буду использовать комментарии, чтобы добавить объяснения или примечания к программам в этой статье. Часто в комментарии добавляются символы решетки (#), чтобы выделить их для читателя. Команды можно также отделять нажатием Tab, которые также игнорируются Stamp, но упрощают чтение программы.

"#### Демонстрационная программа для переключателя Stamp №1

"#### Эта программа находится на стр. 29

"#### Инструкции к Stamp

let b2=0 "освободить переменную B2 для команды кнопки

Loop: "Назвать эту часть команды Loop

BUTTON 7,1,200,100,b2,0,skip

"Перейти к Skip, если I/O-вывод7 не включен

Toggle 0 " изменяет состояние светодиода на I/O-выводе 0

Skip: " Назвать эту часть команды Skip

Goto Loop "Вернуться в часть программы

" Под именем Loop

При запуске этой программы она сперва убедится, что переменная байт B2 не занята. Это важно потому что нам понадобится чтобы интерпретер использовал В2 для управления командой кнопки. Потом мы определяем указатель адреса в программе, который называется Loop (петля). Затем главное – команда BUTTON. Есть несколько способов проверить состояние переключателя. Но BUTTON действительно важна, в нее входят функции, которые позволяют на не писать множество кодов вручную. За командами следуют их параметры – информация, которую мы к ним прилагаем – отделенные запятыми. У команды кнопки 7 параметров:

Pin – это I/O-вывод, на который должна реагировать BUTTON – в нашем случае, так как переключатель установлен на I/O Pin 7, мы используем 7 как величину этого параметра.

Downstate – это состояние вывода, на которое отреагирует команда BUTTON. Так как наша цепь включает вывод при нажатии кнопки, мы ставим здесь1. Если бы мы хотели, чтобы BUTTON реагировала на выключение вывода, мы поставили бы 0.

Delay – Это значение от 0 до 255, которое устанавливает, как долго кнопка должна быть нажата прежде чем начнется автоповторение. Повторение работает так же как на клавиатуре компьютера. Если вы нажмете кнопку, компьютер напечатает только одну букву, но если вы продолжите держать ее зажатой она подождет и начнет повторять букву. Если мы установим здесь 0, повторение отключится и отскока не будет. Если мы установим 255, отскок останется включенным, но автоповторение выключится.

Rate – это значение от 0 до 255 обусловливает момент, в который происходит автоповторение. Это эквивалент того, насколько быстро появляются буквы на экране компьютера когда кнопка зажата.

Byevariable – Чтобы BUTTON делала это нам надо дать ей байт ОЗУ для работы. Мы назначаем ей один для пользования, чтобы она случайно не исказила важную информацию, которую мы там хранили.

Targetstate –downstate привлекло внимание BUTTON’, сообщив ей когда мы нажали кнопку, Targetstate сообщает ей как реагировать. Перейти на новую часть программы когда кнопка нажата или когда кнопка не нажата?

Address – Если мы отделяем подпрограмму, куда она идет? Мы пошлем ее к Skip.

Шумы курка

Краткое замечание о фильтрации шумов. Когда переключатели или кнопки нажимаются, они не просто включаются или выключаются. Они немного «запинаются» вначале и в конце, и это называется шумом переключателя. Он слишком быстрый чтобы заметить, но компьютер может его зарегистрировать. Одно нажатие кнопки для нас, для компьютера может выглядеть как 2 или 3 коротких нажатия, за которыми следуют долгое нажатие, за которым опять идет 2 или 3 коротких. Фильтрация шумов «отчищает» сигнал, игнорируя короткие шумы вначале или в конце. Написание программы для режима стрельбы Turbo состоит не просто в отключении функции фильтрации. Для режима Turbo требуется чтобы программа дополнительно прообразовывала входящий сигнал от курка во время цикла стрельбы маркера.

Итак, что случается когда наша программа загружена в Stamp? Сначала ничего, пока не нажата кнопка. После этого включается светодиод. Когда кнопку нажимают снова, она выключится. Команда TOGGLE просто меняет выходное значение порта с существующего на противоположное. Если мы зажмем кнопку, через какое-то время светодиод начнет мигать. Это функция автоповтора. Попробуйте поменять значения переменных повтора и задержки чтобы посмотреть как это влияет на работу автоповторения. Помните, каждый раз, когда вы производите изменения, вам надо снова запускать программу, загружая ее в Stamp нажатием R.

И вот что мы получили – очень простой пример, который показывает, как работать с Basic Stamp.

Теперь давайте немного продвинемся вперед с цепью MOSFET и программой подобной тем, что мы используем в маркерах.

MOSFET это вид транзистора. MOSFET может выдерживать более сильный ток чем Stamp и обеспечить приличный уровень изоляции от компонентов, которыми управляет. IFR510 MOSFET более чем достаточно чтобы двигать большинство небольших соленоидных клапанов, которые используются в маркерах как Rainmaker, Shocker, Bushmaster 2000, и т.д. IFR510 и аналогичные ему транзисторы FET можно найти в большинстве магазинов электроники. Для большего соленоида, как тот, что выполняет механическую работу по передвижению шептала на E-Mag, или рукоятке Centerflag на Spyder, вам понадобится больший транзистор чтобы справиться с большей силой тока, или можно использовать последовательно соединенные IFR510. IFR510 устанавливают между источником питания и заземлением. Если бы мы использовали его на маркере, чтобы управлять соленоидным клапаном, один контакт от соленоидного клапана шел бы прямо к + батареи (или к внутреннему регулятору напряжения, если напряжение батареи больше чем то, с которым может справиться соленоидный клапан – я обычно подключаю клапаны MAC на 6В прямо к батарее 9В). Другой контакт соленоидного клапана идет к контакту вывода MOSFET, а подводящий провод MOSFET идет к заземлению. Важно помнить, что MOSFET ставят со стороны заземления от источника питания, не со стороны +. После этого MOSFET соединяют непосредственно с одним из I/O-выводов Basic Stamp. Когда программа включает вывод, MOSFET пропускает ток между входоми выходом. Когда вывод выключается, MOSFET не пропускает ток.

Становится очевидно, что части цепи для электропневматического маркера можно с лекгостью собрать при помощи Basic Stamp и наших трех схем. Необходимый минимум для пейнтбольного маркера с одним соленоидом это Basic Stamp с одной из наших цепей для курка (кнопка и резистор), MOSFET для соединения с соленоидным клапаном, и батарея. Это все! Остальное – программное обеспечение, которое может обеспечить даже селективную стрельбу, если использовать функцию автоповторения на BUTTON. Для добавления жидкокристаллического дисплея надо только еще пару модульных компонентов. Сложность состоит не в электронике, а в механической работе с ее правильной установкой в маркер.

Теперь давайте немного все усложним и рассмотрим пример цепи для реального маркера. Мы также обратим более пристальное внимание на наши циклы (loop), чтобы программа была более модульной. На Basic Stamp, которую я встроил в лоадер Revolution, есть Жидкокристаллический дисплей и пара MOSFET. Так как основная программа модульная мне нужно только наладить некоторые ее секции? чтобы поменять Rainmaker с одним соленоидом, или SuperNova ET на автоматизированный PMI-1 с двумя соленоидами.

В реальности нам понадобится пара входов для маркера, не просто курок, но еще и кнопка переключателя, которой мы сможем переключаться между полуавтоматическим и безопасным режимами. Вместо одного светодиода мы используем два, один сообщает, что Basic Stamp включена и подключена к источнику питания (и что программа работает без ошибок), а второй показывает, в каком режиме мы находимся. Для индикатора питания мы используем зеленый светодиод, а для индикатора режимов красный. Светодиоды припаяны посредством нашей цепи со светодиодом (резистор и диод) с зеленым светодиодом на I/O-выводе 0 (вывод 7 на Stamp),и красным на I/O-вывод 1 (вывод 8 на Stamp). Мы установим еще одну цепь во светодиодом – неважно какого цвета на вывод 9 на Stamp (I/0-вывод 2) чтобы активировать MOSFET и цепь соленоидного клапана. Мы назовем этот светодиод диодом клапана, и он будет загораться в момент, когда открывался бы клапан если бы эта цепь была установлена на пейнтбольный маркер,

Еще две цепи переключателей мы подключим к выводам Stamp 13 и 14. I/O-вывод 7 будет использоваться как предохранитель, а I/0-вывод 6 будет курком. Выбор подходящего переключателя для курка на электропневматическом маркере это тема для отдельной статьи. Это должен быть однополюсный и на одно направление замыкающий переключатель мгновенного действия. Исходя из этого, есть большой выбор, зависящий от напряжения маркера, соединения с курком, и желаемого хода курка – плавный, длинный, четкий, короткий, и т.д.

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

Теперь перейдем к программному обеспечению. Это простая программа полуавтомата с индикаторами предохранителя и мощности. Еще раз напомню, это программа, защищённая авторским правом, и ее нельзя использовать на настоящем маркере. С небольшим пониманием PBASIC вы без проблем сможете написать собственную программу, отвечающую вашим личным требованиям.

"### Программа-симуляция полуавтоматического режима для одного соленоида

"### design Copyright 2002, William R. Mills III All

"### Права защищены. Эта программа может быть использована только с

"### Basic Stamp со светодиодом симулирующим физический

"### Интерфейс маркера, для образовательных целей.

"###

"# Конфигурация и переменные

symbol dwell=b10 "# назовем b10 задержкой чтобы было проще

"запомнить

Symbol drop=b11 "# назовем b22 drop чтобы было проще

"запомнить

Let B2=0 "# освободим b2 чтобы BUTTON могла использовать ее для

"курка

Let B3=0 "# освобоим b3 чтобы BUTTON могла использовать ее для

"кнопки переключения режимов

Let dwell=30 "# установим задержку на 30 мс

Let drop=30 "# установим значение drop на 30 мс

"# Задержка это время, которое соленоид должен оставаться

"открытым для полного и

"# законченного цикла стрельбы. Значение drop это минимальное

"время которое

"# патронник должен оставаться открытым между выстрелами чтобы дать шару

"время упасть

"# в патронник

"######

"# Зажечь диод-индикатор питания, чтобы показать что плата работает

"нормально

"# когда питание включено, и оставить его включенным

Low 0 "# убедиться, что индикатор мощности выключен

Pause 100 "# Подождать 100 мс – 1/10

"секунды

Toggle 0 "# включить светодиод-индикатор питания

Pause 100 "# Еще подождать

Toggle 0 "# снова выключить светодиод

Pause 100 "# Еще подождать

Toggle 0 "# Включить светодиод

"######

"##### Безопасный режим – Gosafe включается перед безопасным режимом так что мы

"не теряем время

"# постоянно настраивая индикатор предохранителя когда

"выполняется команда КНОПКИ

"# ожидая переключения маркера

"в полуавтоматический режим. Это не так важно

"# так как мы также теряем время чтобы

"отправить данные к светодиоду каждый раз переключаясь

"# в безопасный режим

Gosafe: "# Переход в безопасный режим

Low 1 "# Выключаем I/O-вывод 1 чтобы выключить

"светодиод-индикатор режима

Safe: "# Режим безопасности

Button 7,1,255,1,b3,0,skip1

"# если кнопка режима не нажата перейти к Skip1

Goto Gosemi "# Если кнопка нажата, переходим в полуавтоматический режим

Skip1: "# если кнопка не была нажата заканчиваем здесь

Goto Safe "# и возвращаемся в безопасный режим и продолжаем

"# ждать нажатия кнопки

"#######

"####### Полуавтоматический режим, ждем нажатий на

"кнопку курка

"# и реагируем на них, а также ждем

"# нажатия кнопки переключения режимов и переходим обратно в безопасный режим

"# если она нажата. Обратите внимание на новую команду –

"# gosub. Переход к новому

"# месту в программе и продолжение.

"# Gosub переводит в подпрограмму и

"# когда эта подпрограмма закончена (подпрограммы

"# заканчиваются командой возврата)

"# программа вернется на это место и продолжит сразу

"# после того места где был

"# переход в подпрограмму.

Gosemi: "# Это название действия

High 1 "# Включить I/O-вывод 1 чтобы включить

"# светодиод и показать что маркер

"# включен в полуавтоматическом режиме

Semi: "# Теперь мы в полуавтоматическом режиме

Button 6,1,255,1,b2,0,skip2

"# Если курок не был нажат перейти дальше к skip2

Gosub fire

"# Если курок был нажат перейти к

"#подпрограмме стрельбы

Skip2: "# Сделан выстрел или нет, здесь мы заканчиваем

Button 7,1,255,1,b3,0,skip1

"# Если кнопка режимов не нажата, переходим к Skip3

Goto Gosafe "# Если кнопка режимов нажата снова переходим в безопасный режим

Skip3: "# мы перешли к skip3

Goto Semi: "# Если мы не переключили режим

"#ждем следующего нажатия на курок

"##########

"###### Подпрограмма стрельбы – здесь

"# мы активируем соленоид/светодиод

Fire: "# Это название подпрограммы

Low 0 "# Мы выключаем светодиод-индикатор питания

"# во время стрельбы чтобы показать что

"# мы пытаемся стрелять даже в случае

"# каких-либо неполадок

High 2 "# Активируем MOSFET чтобы открыть

"# соленоидный клапан

Pause dwell

"# Теперь мы подождем определенное количество

"# миллисекунд, установленное задержкой ранее

Low 2 "# Теперь мы выключим I/O-вывод 2 и закроем клапан

Pause drop "# Теперь мы сделаем паузу перед следующим

"#выстрелом чтобы дать время"# шару попасть в патронник

High 1 "# А теперь мы снова включаем индикатор питания

Return "# Выстрел сделан так что мы возвращаемся

"#к строке программы

"# следующей сразу за командой перехода в подпрограмму, которая отправляла

"# нас сюда

"######

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

Так как мы делали все отдельными модулями, производить изменения намного проще. Например, если нам надо чтобы маркер работал с парой соленоидных клапанов, как доработанный Autococker или то, что сделал я с PMI-1, нам надо изменить подпрограмму Fire. Исходя из того, что мы использовали I/O-вывод 2 для управления цепью MOSFET, которая активирует соленоид, который заставляет соленоид двигать шептало маркера, мы могли бы поставить цепь MOSFET на I/O-вывод 3 чтобы управлять соленоидным клапаном, который двигает соленоид и болт.

"###### Подпрограмма стрельбы для системы с двумя соленоидами

Fire:

Low 0 "# Мы выключаем светодиод индикатор питания

"#на время стрельбы чтобы показать что

"# мы пытаемся стрелять даже в случае каких-либо

"# неполадок

High 2 "# Открыть клапан чтобы передвинуть шептало

Pause dwell "# Подождать освобождения шептала

Low 2 "# Теперь мы выключим I/O-вывод 2 и освободим шептало

High 3 "# Болт маркера открывается

Pause drop "# Делаем паузу перед следующим выстрелом

"# следующим выстрелом чтобы дать время

"# шару упасть в патронник – можно даже вставить подпрограмму

"# в этом месте для проверки

"# системы глаз вместо этого

Low 3 "# Болт закрывается

High 1 "# И светодиод снова включается

Return "# мы сделали выстрел так что

"# возвращаемся к строчке

"# программы сразу под командой gosub, которая отсылает

"# нас сюда

"######

Возможно придется добавить еще одну задержку. Когда я стрелял из PMI-1 я обнаружил, что он отлично работает во время первого выстрела, но если я стрелял быстро он взводился, но не стрелял. Я обнаружил что после движения болта назад и вперед регулятору низкого давления требуется несколько миллисекунд чтобы достичь давления нужного для движения шептала. Я решил эту проблему, добавив команду паузы сразу после закрытия болта в подпрограмме стрельбы.

Так как насчет жидкокристаллического дисплея? На большинстве буквенно-цифровых дисплеев стоит параллельный интерфейс, а это значит, что им надо 4 или 8 линий передачи данных, а на нашем BS1-IC это не только займет все I/O-выводы, но еще и займет порядочную часть нашей бесценной памяти. Серийные жидкокристаллические дисплеи как правило стоят намного больше чем параллельные, но Wirz продают конвертор примерно за 20$. Merlin P. Jones обычно добавляет в комплект к плате Wirz SLI-OEM бесплатный ЖК экран 8х1. SLI-OEM работает от мощности 5В, так что можете подключать его к выводу 5 Stamp. Я предпочитаю не нагружать регулятор напряжения и устанавливаю фиксированный внешний регулятор на 5В на SLI-OEM, и подключать ее непосредственно к батарее 9В (или 18В в блоке батарей в Revolution). SLI-OEMпоставляется с набором инструкций и возможно придется почитать прежде чем вы поймете, с какими настройками переключателей лучше использовать дисплей. SLI-OEM припаивается на заднюю сторону экрана за пару-тройку минут.

Когда SLI-OEM подключена к тому же заземлению, что и Stamp и источнику питания, остается только протянуть провод от вывода Stamp к последовательному вводу. На SLI-OEM установлено соединение J1 , которое спереди выглядит как 10 отверстий в два ряда по пять с каждой стороны. Мы можем пропустить левый ряд и сконцентрироваться на правом. Сверху вниз вывод 1 надо 5В, вывод 2 идет к заземлению, вывод 3 идет к Stamp, вывод 4 к заземлению, а вывод 5 к источнику 5В. Для нашего примера подключим линию последовательной передачи SLI-OEM к выводу 12 Stamp, которая будет I/O-выводом 5. Это оставит свободный для использования I/O-вывод 4.

Так как насчет жидкокристаллического дисплея? На большинстве буквенно-цифровых дисплеев стоит параллельный интерфейс, а это значит, что им надо 4 или 8 линий передачи данных, а на нашем BS1-IC это не только займет все I/O-выводы, но еще и займет порядочную часть нашей бесценной памяти. Серийные жидкокристаллические дисплеи как правило стоят намного больше чем параллельные, но Wirz продают конвертор примерно за 20$. Merlin P. Jones обычно добавляет в комплект к плате Wirz SLI-OEM бесплатный ЖК экран 8х1. SLI-OEM работает от мощности 5В, так что можете подключать его к выводу 5 Stamp. Я предпочитаю не нагружать регулятор напряжения и устанавливаю фиксированный внешний регулятор на 5В на SLI-OEM, и подключать ее непосредственно к батарее 9В (или 18В в блоке батарей в Revolution). SLI-OEMпоставляется с набором инструкций и возможно придется почитать прежде чем вы поймете, с какими настройками переключателей лучше использовать дисплей. SLI-OEM припаивается на заднюю сторону экрана за пару-тройку минут.

Когда SLI-OEM подключена к тому же заземлению, что и Stamp и источнику питания, остается только протянуть провод от вывода Stamp к последовательному вводу. На SLI-OEM установлено соединение J1 , которое спереди выглядит как 10 отверстий в два ряда по пять с каждой стороны. Мы можем пропустить левый ряд и сконцентрироваться на правом. Сверху вниз вывод 1 надо 5В, вывод 2 идет к заземлению, вывод 3 идет к Stamp, вывод 4 к заземлению, а вывод 5 к источнику 5В. Для нашего примера подключим линию последовательной передачи SLI-OEM к выводу 12 Stamp, которая будет I/O-выводом 5. Это оставит свободный для использования I/O-вывод 4.

Когда SLI-OEM подключена, мы переходим к добавлению команд в программу для отражения данных. После этого я объединил результаты с SLI-OEM и ЖК дисплеем в комплекте с ней, нужна секунда или около того чтобы загрузиться и приготовиться к передаче данных. Так что, возможно придется добавить в программу дополнительную команду паузы при установке переменных чтобы дать SLI-OEM время приготовиться перед первым сообщением. Я добавил следующую строку кода после мигания диода включения:

Serout 5,n2400,(10,"www.WARPIG.com")

"# Показать сообщение загрузки

Команда serout делает то, что подразумевается в названии – передает данные от Basic Stamp. Первый параметр это номер вывода, к которому будут переданы данные, в этом случае это вывод5, к которому мы подключили SLI-OEM. N2400 означает, что данные должны быть переданы на скорости 2400 бит в секунду, с обратной полярностью. Это значение ДОЛЖНО совпадать с настройками переключателей SLI-OEM, или другим устройством, соединенным со Stamp. Stamp может использовать данные в диапазоне от 300 до 2400 шаров в секунду, чем быстрее мы передаем эти данные на ЖК экран, тем меньше времени тратится. Так что чем быстрее тем лучше. Слова в скобках это данные, которые будут появляться на дисплее. Одно character можно определить цифрой ASCII, или можно отправлять текст частями. Цифра 10 освобождает дисплей, на нем появляется WARPIG URL в кавычках.

Я добавил в программу короткую паузу после отображения меню загрузки прежде чем программа начнет процедуру Gosafe

К Gosafe, сразу после строк, выключающих светодиод предохранителя я добавил строку:

Serout 5,n2400,(10,"SAFE") "# Показать безопасный режим

После этого к пункту Gosemi, непосредственно после строк, включающих светодиод предохранителя я добавил:

Serout 5,n2400,(10,"SEMIAUTO") "# показать полуавтоматический режим

Вуаля – вот и программа для маркера с жидкокристаллическим дисплеем. Совсем нетрудно добавить такие вещи как счетчик выстрелов. Счетчик выстрелов начинается с определения переменной, используемой со счетчиком – это должна быть переменная слово, если вы хотите насчитать больше 255 выстрелов. Эту строку можно добавить ближе к началу программы, когда определяются переменные:

Symbol count = w2 "# определить w2 как счетчик выстрелов

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

Count=count+1 "# увеличить число выстрелов

Serout 5,n2400,(10,"#count") "# показать счетчик выстрелов

Это будет отражать счетчик выстрелов при каждом нажатии на курок. Слово «Полуавтомат» не будет отражаться на экране пока кнопка режимов не переключит маркер в безопасный режим, а затем снова в полуавтоматический.

Важное дополнение о жидкокристаллических дисплеях. Большинство команд PBBASIC занимают 1 или 2 байта памяти EEPROM, а каждая буква, отображаемая на экране займет целый байт. Добавление сообщений для ЖК экрана может быстро съесть 256 байт памяти BS1-IC. По моему опыту программа с тремя режимами стрельбы, безопасным режимом, счетчиком выстрелов, и одометр выстрелов (общее количество выстрелов сделанных после того как плата была запрограммирована) может занять больше памяти, чем есть у BS1-IC, и чтобы освободить место потребуется стереть сообщение при загрузке.

Parallax Basic Stamp представляет простой способ интегрировать микропроцессор для физического приложения в реальном мире. Хотя это не будет выгодно для массового производства маркеров, гибкость и простота программирования делает ее идеальной для создания и тестирования прототипов маркеров или кастомизированных маркеров.

Конец.


Версия для печати
 
Пейнтбол-игра
Правила пейнтбола
Спортивный пейнтбол
Пейнтбол-развлечение
Выездной пейнтбол
Корпоративный пейнтбол
Военно-патриотические игры
Тактический пейнтбол
Безопасность в пейнтболе
Альтернатива дивану на week-end
Развитие пейнтбола
Пейнтбол-курьезы
Статистика пейнтбола (2006 год)

Пейнтбол-бизнес
Как Организовать свой клуб
Правовое регулирование отношений
Инструктаж
Соглашение об участии в играх
Американский вейвер
О спонсорстве
Получить консультацию
Спонсирование пейнтбола
Что нужно для создания пейнтбольного клуба...
Бизнес план спортивной компании по пейнтболу


Пейнтбол-дайджест
Основы игры в пейнтбол
Пейнтбол. Лазертаг. Страйкбол
Игры на выживание
Игры патриотов
Пейнтбол: Рассказы и байки
Интернет-материалы
Пейнтбол-Судейство
Пейнтбол-путеводитель
Пейнтбол в лицах!
Материалы СМИ
Пейнтбол: форумы и сайты об игре
Словарь терминов
Пейнтбол: Журналы и книги


Игра Клубы Команды Оборудование Форум
Вопросы, пожелания, замечания, предложения, свои материалы для публикации присылайте на e-mail
Rambler's Top100