Популярные проекты

WEB PICµBASIC LOGIC CONTROLLER

USB PICµBASIC Mid Hardware

USB PICµBASIC LOGIC CONTROLLER

DDS генератор сигналов "OSKAR-DDS"

Термостол для оплавления паяльной пасты

Осциллограф Карманный "OSKAR" V3.1

Электроника и механика 3-х координатного станка ЧПУ (Hobby CNC)

Простой счетчик

Измеритель ESR и емкости конденсаторов

Самодельный установщик SMD компонентов - раскладочный станок "SMD PLACER V2"

Прибор для измерения частоты, емкости, индуктивности, сопротивления

Выключатель /диммер светодиодных лент с ДУ.

Светомузыка «СЕМИЦВЕТИК» + автомат световых эффектов.

Универсальный прибор для автомобиля. Часы, термометр, вольтметр, тахометр.

Все, что нельзя запрограммировать на ассемблере, приходится паять.

      Этот сайт посвящен моим проектам на PIC контроллерах, доступных для публичного освещения. Все приведенные схемы реализованы в железе и работают в настоящее время в быту или производстве. Для написания программ использован пакет MPLAB/х , свободно распространяемый фирмой MICROCHIP. Используется программатор PICKIT2/3, ICD2/3. Любую конструкцию можно собрать самому, даже если она платная и получить бесплатно код разблокировки. Также можно приобрести в качестве набора для сборки или готового изделия. Принимаются заказы на разработку аналогово-цифровой или цифровой электроники, систем управления и электроники для производства с применением контроллеров.
Вопросы и предложения писать на почту Gennadiy.V@gmail.com
Если у Вас есть интересные предложения, закакзы или вопросы и форум Вам не помог - адрес тот же.


USB PICµBASIC LOGIC CONTROLLER .
Универсальный контроллер на все случаи жизни

  Внешний вид


PICµBASIC LOGIC CONTROLLER
Общее описание

          По сути - это универсальный контроллер для тех, кто хочет автоматизировать разные процессы и создавать собственные устройства на базе микроконтроллера. Не важно, будет ли это система «Умный дом», или термостат, или измеритель и индикатор напряжения, или охранная система с контролем доступа – это все по силам. И все это можно программировать самостоятельно, не вникая в особенности микроконтроллеров и за короткое время, благодаря встроенному интерпретатору языка PICµBASIC с поддержкой различных периферийных устройств и интерфейсов. Он одинаково подходит и для создания термометра и для управления небольшим станком или оборудованием или теплицей. Данный контроллер представляет собой небольшое устройство, позволяющее решать задачи управления, регулирования сбора информации, отправки или получения команд по сетевым интерфейсам и отображать информацию на ЖКИ дисплее.
     Контроллер представляет собой несложное устройство на базе PIC микроконтроллера, со встроенным интерпретатором языка PICµBASIC с открытой архитектурой. Для написания и загрузки программ достаточно блокнота и терминала. Область применения контроллера - разработка устройств непрофессионалами в области программирования, промышленное, любительское и учебное использование. Управляющая программа представляет собой текст на языке Бейсик в энергонезависимой памяти. Задачей контроллера является интерпретация и исполнение команд этого языка. Как и традиционный ПЛК, он имеет дискретные, аналоговые входа/выхода и коммуникационные интерфейсы, которые могут использоваться для связи с другими устройствами или источниками/приемниками информации.
     Контроллер, со встроенным интерпретатором предназначен для быстрой разработки устройств прежде всего непрофессионалами, людьми, которые представляют что нужно сделать, но не имеют возможности тратить время на профессиональный цикл разработки.
     Далее будет рассматриваться аппаратная платформа USB PICµBASIC, существуют также версии с графическим дисплеем и/или Ethernet интерфейсом и различим числом каналов ввода/вывода

PICµBASIC LOGIC CONTROLLER
Технические характеристики


   - Количество каналов дискретного ввода TTL или 5V CMOS до 12
   - Количество каналов аналогового ввода 0…5V до 4
   - Количество каналов аналогового вывода ШИМ 1
   - Интерфейс RS232/485 1200-115200 8N1 1
   - Часы реального времени с календарем. 1
   - Интерфейс USB 1
   - ЖКИ символьный дисплей HD44780 от 2*8 до 4*20 1
   - Клавиатура, число кнопок ,шт 5
   - Силовые выхода – реле с переключающими контактами, шт 3
   - Аудио выход - динамик 1
   - Интерфейс шины 1-Wire 1
   - Интерфейс считывателя карт EM-marine 125k 1
   - Буферированный выход для мощного полевого транзистора ШИМ 1
   - Встроенный стабилизатор питания от внешних 9-12 вольт 1
   - Встроенный программный модуль считывания ключей DS1990
   - Встроенный программный модуль считывания термодатчика DS18B20
   - Встроенный программный модуль считывания карт EM-marine 125k
   - Язык программирования встроенный интерпретатор PICµBASIC
   - Энергонезависимая память программ пользователя, кбайт, 64
   - Среднее время исполнения простых операторов, мкС, 150
   - Память переменных пользователя (ОЗУ) кбайт, 1
   - Энергонезависимая память данных пользователя кбайт, 1,25

    Конструктивно выполнен на печатной плате размерами 62*90 мм. С одной стороны расположен дисплей м клавиатура, а с другой все компоненты и клеммы для подключения. Питание осуществляется от нестабилизированного источника постоянного тока напряжением 8-15 вольт. Ток потребления не превышает 200мА. Входа/выхода мультиплексированы с различными функциональными блоками и конфигурация задается перемычками на плате и/или настройками из программы. Дополнительно могут быть подключены модули расширения памяти и интерфейсов.
     Контроллер изначально программируется программой - загрузчиком один раз с помощью программатора. В дальнейшем загрузка и обновление PICµBASIC производится с помощью программы BOOTLOADER через порт USB. Обновление не затрагивает программу и данные пользователя.

PICµBASIC LOGIC CONTROLLER
Аппаратная платформа


    Ядром контроллера является микроконтроллер PIC18F2455/2550 фирмы "MICROCHIP", который собственно и выполняет все функции. В качестве памяти программ пользователя используется микросхема памяти 24LC512. Собственно это и является минимальной конфигурацией контроллера. Наличие или отсутствие остальных модулей, включая часы реального времени, дисплей, кнопки, интерфейсы - не влияет на работоспособность контроллера. Просто не будут работать корректно функции связанные с ними. Так например дисплей и/или кнопки можно выполнить отдельным модулем и использовать только на этапе отладки программы и затем отключить. Это не приведет к ошибкам в программе. Контроллер выполнен на доступных деталях и прост в настройке.
Принципиальная схема (кликабельно)


Скачать в формате sPlan 7.0

Разводка печатной платы: Сторона DIP элементов

Разводка печатной платы: Сторона SMD элементов.


Скачать

Перечень элементов:

 

BAT1                = 1 x CR2032
C7                   = 1 x 1.0
C13                  = 1 x 1n
C16                  = 1 x 680p
C14,C15           = 2 x 2n2
C5,C6               = 2 x 27
C8,C22,C23       = 3 x 100.0
C9,C11,C12,C20,
C21                  = 5 x 0.1
D9                   = 1 x S1M
D10                  = 1 x 5V6
D12                  = 1 x ** ss12
D2,D3,D4,D5,D6,
D7,D8              = 7 x LL4148
D9,D10,D11      = 3 x LL4148
DD2                 = 1 x PIC18F2455/PIC18F2550
DD4                 = 1 x DS1307Z (N)
DD5                 = 1 x 24C(256/512)
K1,K2,K3          = 3 x TR05-5VDC
LCD 1               = 1 x BC1602
R20                  = 1 x 3k9
R27                  = 1 x 150k
R29                  = 1 x 30k

 

R14,R15,R35,
R39                  = 4 x 3k
R2,R38             = 2 x 10K
R26,R28,R32,
R40,R41,R42     = 6 x 10k
R5,R7               = 2 x 1k
R8,R9,R10,R11,
R12,R13,R16,
R17,R18,R19,
R21,R22,R23,
R24,R25           = 15 x 100
SP                    = 1 x SPK
T2                    = 1 x BC807C
T4                    = 1 x BC817C
T5                    = 1 x BC817C
T1,T3               = 2 x BC817C
T6,T7               = 2 x BC817C
VR1                 = 1 x 7805
X2,X3,X4,X6,
X11,X12,X13     = 7 x 126-03P
X7,X8,X12        = 3 x 126-02P
XR1                 = 1 x 32768Гц
XT1                 = 1 x 16 MHz


    Все выходы, подключенные к ножкам процессора, имеют нагрузочную способность не более 20мА. Напряжение на всех входах не должно превышать 5 вольт постоянного тока. Микросхема VR1 – линейный стабилизатор. Если предполагается питание от стабилизированного источника 5 Вольт, микросхему можно исключить и запаять перемычку между контактными площадками 1 и 3 этой микросхемы. В качестве динамика ("пищалки") может быть использован излучатель любой системы, важно, чтобы он был пассивным (не содержал встроенного генератора). Перемычками можно отключать/подключать периферийные модули или ножки процессора к выходным клеммам в зависимости от планируемого использования контроллера. Перемычка BOOT ставится на разъем программирования для аварийного входа в BOOT Loader. Контраст дисплея регулируется номиналом резистора подключенного к 3 ножке дисплея, яркость подсветки – R7.
    Винтовые клеммы предназначены для включения в схему устройства пользователя и подачи питания. Предусмотрен выход питания напряжением 5вольт для питания модулей расширения. Дискретный ввод совместим по уровням с ТТЛ и КМОП при напряжении питания 5/3,3 Вольт. На аналоговый входы могут подаваться сигналы в диапазоне от 0 до 5 вольт, что соответствует дискретному представлению от 0 до 1023 единиц. АЦП работает в реальном времени, (с периодом около 40 мкС), но реальная дискретизация зависит от частоты считывания при помощи оператора ADC и зависит от длины цикла, в который это оператор включен. Модуль PWM может быть использован как аналоговый вывод при включении RC фильтра на выходе. Параметры RC-цепи определяются пользователем. С целью обеспечения возможности использования «лазерно-утюжной технологии» печатные проводники выполнены с одной стороны.

Фото контроллера без индикатора



PICµBASIC LOGIC CONTROLLER
Программное обеспечение


    Для начала работы в PIC микроконтроллер должна быть загружена прошивка BOOT Loader. Это можно сделать отдельно или прямо на плате, используя разъем программирования для PICKIT2. В дальнейшем все загрузки и обновления производятся без наличия программатора через разъем USB.

Все обновления прошивок, программ, документации находятся в разделе Файлы / Files

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

Скачать драйвер можно в разделе Файлы / Files

    После успешной установки драйверов можно приступать к загрузке кода PICµBASIC в микроконтроллер. Контроллер, с уже установленным PICµBASIC, ожидает всего 1 секунду после старта запросы от BOOT Loader. По этому для обновления сначала следует запустить программу для загрузки а потом подключать контроллер. Если не установлены драйвера или код испорчен - используйте аварийный вход в BOOT Loader с помощью перемычки. Если она установлена то код BOOT Loader запущен всегда. Перемычку следует устанавливать до подачи питания.

Программа загрузчик.


    Для входа в режим загрузки нажмите кнопку «Open Port» предварительно указав номер порта, на котором проинсталлировали ранее устройство. Запустится счетчик ожидания соединения. Подключите контроллер к компьютеру или подайте на него питание - связь установится автоматически.
     Загрузка кода PICµBASIC. Нажмите кнопку Open File and Download, выберите файл прошивки *.hex и загрузка начнется автоматически. Затем произойдет автоматическая проверка загруженного архива. В случае успешного выполнения нажмите кнопку Install Basic. Прошивка будет распакована и активирована, о чем появится уведомление. На этом прошивка окончена. Прошивка/обновление не затрагивает пользовательскую программу и данные.
     Кнопка Format форматирует память микроконтроллера, при этом пользовательские данные в памяти программ будут удалены и удалена прошивка PICµBASIC. Сама программа пользователя и BOOT Loader не затрагивается. Кнопка Info показывает версию BOOT Loader до момента инсталляции кода PICµBASIC. При подключенном ЖКИ индикаторе на нем также будут отображаться сообщения.
     С момента инсталляции кода PICµBASIC и появления его приглашения - далее работаем в среде кода PICµBASIC. Программу BOOT Loader можно закрывать.
     Для комфортной загрузки/выгрузки написанных ранее программ пользователя из контроллера используем программу PIC MICRO BASIC.



    Она позволяет выгрузить программу пользователя в файл *.bas и наоборот загрузить программу в контроллер. При загрузке совпадающие номера строк будут заменены, не совпадающие будут добавлены к существующим в контроллере. Для очистки памяти программ пользователя в контроллере нажмите кнопку New Program. Очистка займет некоторое время. Подать команду PICµBASIC можно из окна Command. Кнопка Info показывает информацию о PICµBASIC. Программа *.bas – это обычный текстовый файл и редактируется текстовым редактором, например блокнот.

     Дальнейшая работа идет в среде интерпретатора PICµBASIC.

При реализации данного проекта добавлены в PICµBASIC ряд команд, позволяющих обслуживать периферийные устройства предлагаемого модуля.
     Начальное общение со средой ведется через консоль - (консолью называли телетайпный аппарат, с помощью которого оператор общался с компьютером), вместо консоли теперь можно использовать любой персональный компьютер или планшет, подключенный по интерфейсу USB с эмуляцией RS-232, с запущенной терминальной программой. Причём, работа через консоль актуальна только на этапе загрузки и отладки программы. В дальнейшем может использоваться для обмена информацией.
     Для комфортной работы используем программу BasicTerminal.exe
Скачать можно в разделе Файлы / Files




PICµBASIC LOGIC CONTROLLER
Описание языка программирования

Требования к оборудованию.

Контроллер PIC18F с свободной оперативной памятью не менее 2К байт и 32к памяти программ. Тестирование производится на PIC18F46K22, PIC18F2550, PIC18F67J60.   Дополнительные  сведения смотрите в документации на конкретную плату. В дальнейшем все данные приведены для самого маломощного процессора PIC18F2550. С остальными размеры памяти для пользователя будут больше, по возможностям процессора. Также для PIC18F46K22 задействовано два разных потока  RS232/485. А для  PIC18F67J60 также как поток добавляется TCP/IP или UDP соединение. Это также касается и каналов ШИМ, АЦП и др.

                               Распределение памяти  и типы переменных

                Память переменных:

Всего  1024  8-битных ячеек с адресами от  0 до 1023 (для 2к ОЗУ). На нее отображаются все  переменные

                Память программ

Микросхема  24LC512. Вмещает в себя до 1023 строк программы, нумерованных от 0 до 1023

                Энергонезависимая память данных

Доступна вся имеющаяся у процессора память EEPROM  с произвольной записью/чтением. Для  PIC18F2550 256 байт
Доступно расширение  микросхемами 24LC512 памяти данных пользователя как дополнительный модуль
Доступно расширение  памяти данных пользователя за счет свободной памяти программ процессора  1кБ блоками по 64 байта

                Переменные:

Существует 52 обычных переменных, обозначаемых буквами от A до Z и a-z
Внутреннее представление 16-битное  со знаком . Отображаются  на  память с адреса 128  по 231. Занимают две ячейки, старший байт числа  в младшем адресе.  При печати оператором PRINT   отображаются знаковыми целыми в диапазоне -32767 до +32767
Пример  записи :    10 C=А+b:#(100)=55:$(A)=C +(10/2+1)*2

Существует три индексных переменных  $() , #() , @(). Индексом может быть число от 0 до 1023 или простая переменная, при этом ее значение должно быть в этом же диапазоне. Индекс соответствует адресу ячейки. Всего 4 блока по 256 байт.
Так например индекс =129 соответствует младшему  байту  обычной переменной  A. Пустой индекс не допускается.
Внутреннее представление 8-битное . Значение всех переменных с одним индексом –одинаковое.
Основное применение – косвенная адресация, работа с текстами и массивами.
Их отличие  -  при выводе.
Отображение при печати оператором PRINT  значения ячейки  0х4А по адресу 20
$(20)   -  представление как символ с кодом   0х4А – J по таблице ASCII
#(20)  -  представление десятичного числа   - 74
@(20) -  представление как HEX запись – 4A

При работе с арифметическими операторами значение  представляется числом от 0 до 255
При математических операциях с разными типами  в индексные переменные записывается и читается младший байт от обычных переменных. Вложенные индексы не поддерживаются.

Числа:

Все числа являются знаковыми целыми в диапазоне -32767 до +32767 либо целыми  в диапазоне  0-255

Текст

Текст всегда заключается в кавычки  "text"

Операторы

Арифметические:

+ сложение
- вычитание
* умножение
/ целочисленное деление (нужно иметь в виду, что, например, 14/5=2)
% - взятие остатка от деления (14%5=4)

& побитное И
| побитное или
^ побитное исключающее или
! побитная инверсия

Сравнения (используются только оператором IF):

= равно 
<> (или ><) не равно
> больше
< меньше
>= (или =>) больше или равно
<= (или =<) меньше или равно

 

Выражения

Выражения составляются из чисел, переменных, арифметических логических и битовых операторов. Операторы сравнения не могут быть использованы в выражениях. Функции не могут быть использованы в выражениях.  Вычисления производятся слева направо. Применением скобок можно изменить порядок вычислений.
Существует 4 уровня.
- сначала вычисляются выражение с унарными операторами + и
например: A=-B*2, при этом первым будет выполнено взятие B с противоположным знаком;
- затем вычисляются выражения с * и / и %
- затем вычисляются выражения с + и  -
- затем вычисляются выражения с & | ^ !

Функции

Функции могут быть одного или нескольких аргументов, перечисленных через запятую в фигурных скобках
Пример записи  A=ROR{#(100),5}:C=SQR{A*A+B*B} В качестве аргумента могут выступать числа, переменные, выражения.

Операторы и команды .

У операторов/команд  могут быть параметры. Они указываются через пробел от имени оператора и  если их несколько, то перечисляются через запятую. Для некоторых через точку с запятой. В качестве параметров  могут выступать числа, переменные, для некоторых – текст или выражения.

Листинг программы.

Все строки программы нумеруются  от  0 до 1023 (до 4096 с модулем расширения)
В одной строке могут быть записаны несколько выражений и/или  функций и/или  операторов  через   : двоеточие.
Принята  запись функций и операторов  только  ПРОПИСНЫМИ буквами.
Длинна строки ввода ограничена  63 символами, включая номер. Рекомендуется использовать  наибольшее заполнение для экономии памяти, если надо. Лишние символы в конце строки игнорируются.
Программа выполняется до последней строки и останавливается. Остановить или закончить выполнение раньше можно командами STOP, END . Для постоянной работы используйте бесконечный цикл.
В данной реализации есть оператор обработки ошибок, который позволяет выполнить переход на другую часть программы при возникновении ошибки в основной части без остановки выполнения программ.

Встроенный редактор

Добавление строки  - набрать строку с номером
Удаление строки – набрать номер строки
Копирование строки  - команда   COPYДля копирования массива строк команда COPY может быть использована и в программе.  Для удаления строки командой  COPY надо скопировать несуществующую строку в удаляемую строку
Таким образом можно менять структуру программы из самой программы

Метки
Меткой перехода является номер строки.  Количество ограничено размером самой программы. От  0 до 1023
Если строки не существует, то  выполняется ближайшая с большим номером. Пример допустимых меток: 10, 200, 210.

Потоки ввода-вывода

Поток  КОНСОЛЬ - по умолчанию  консоль ввода вывода  - USART.  Для контроллеров с USB  - USB-CDC (виртуальный COM порт)
Поток  ТЕРМИНАЛ  - ЖКИ дисплей, подключенный к контроллеру и клавиатура
Поддерживается символьный  или графический. Клавиатура – матрица 4*5 кнопок.
Поток  RS232  - Второй USART контроллера с возможностью работы через 485 /422 интерфейс
Поток  Ethernet  UDP или TCP/IP  клиент/сервер

Периферийные устройства и устройства ввода/вывода

Датчик температуры DS18B20  или  считыватель DS1990  или шина 1Wire
Считыватель карт  EM marine 125 кгц  - 1
АЦП 10/8 бит  - по возможностям процессора
Часы реального времени  DS1307
Внешняя память  24LC512
Спикер (излучатель звука)
Аналоговые входы
Остальные порты контроллера могут использоваться как настраиваемые порты ввода вывода.
Также при отсутствии периферийных модулей порты контроллера к ним могут быть использованы как   настраиваемые порты ввода вывода.
Силовые выходы с реле
Остальные устройства  - смотрите в документации на конкретную плату.
Список постоянно расширяется с выходом новых версий.

Питание
Внешний источник питания напряжением 9-12 вольт постоянного тока 200мА (350 мА для плат с Ethernet)

Быстродействие
Среднее время выполнения простых  команд – 150 мкс @ 40MHz

Прошивка контроллера.
Контроллер программируется программой  - загрузчиком один раз с помощью программатора.
В дальнейшем загрузка и обновление  PIC MICRO Basic производится с помощью программы BOOTLOADER через USB/RS232/Ethernet.
Обновление не затрагивает программу пользователя.

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

     Полный перечень операторов, функций, комнд содержится в документе "PICµBASIC Language".
Скачать его можно в разделе Файлы / Files

PICµBASIC LOGIC CONTROLLER
Подключение модулей





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

         (с)  Гармаш Геннадий  2015.
Замечания и предложения - gennadiy.v@gmail.com
Поддержка и актуальные версии http://picping.ru/ 

                   Software Licence Agreement:
THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION.  NO WARRANTIES, WHETHER
EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY
TO THIS SOFTWARE. THE AUTHOR SHALL NOT, UNDER ANY CIRCUMSTANCES, BE LIABLE
FOR SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

         Разрешается свободное некоммерческие использование опубликованных версий без каких либо гарантий.

*Для коммерческого использования требуется  регистрация каждой копии П/О.
*Исчезнет надпись DEMO и возможно появятся дополнительные возможности.


ПО распространяется под лицензией Shareware. Вы можете скачать с сайта схемы, инструкции, прошивки бесплатно.

Обсудить на форуме
Купить