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

Чарльз Форд. 1001 забытое чудо, Книга проклятых.

Микроконтроллер STM32H750VBT6.

Для проекта индукционного нагрева адаптивного типа класса "Охотник" разработан микроконтроллерный модуль который допускает подключение внешних датчиков и силовых устройств по SPI интерфейсу. Полученные данные могут быть проанализированы и записаны на внутренний носитель или внешний флеш-накопитель. Схема управления силовыми ключами и устройства со SPI интерфейсом подключается к портам микроконтроллера через IDC разъёмы.

Проект индукционного нагревателя адаптивного типа "Хантер" был опубликован на форуме сайта electronix.ru. Администрация сайта electronix.ru посчитала проект недостойным внимания своих пользователей и удалила его без объяснения причин. Пользователей с сайта electronix.ru прошу покинуть energy4all.ru, скачивание и использование материалов запрещено, за разъяснениями обращайтесь к администрации сайта electronix.ru.

Cхему микроконтроллерного модуля для индукционного нагрева адаптивного типа "Хантер" Вы можете изготовить самостоятельно скачав проект Altium по приведённой ссылке или купить. Гербер файлы сгенерированы, платы двусторонние, изготовлялись на PCBWAY по цене 5US/10штук. Нареканий к качеству нет.


Для управления режимами работы микроконтроллерного модуля через web-интерфейс на плату установлен WI-FI модуль ESP32-WROOM-32U. ESP32-WiFi модуль обменивается данными с микроконтроллером по UART интерфейсу, а пользователю предоставит web-страницу для проведения настроек и просмотра результатов.

Схема подключения программатора ESP-PROG к модулю для выполнения прошивки и отладки через JTAG в Eclipse. В ESP-Prog допущена странность. Вывод подписанный как RX, следует подключать к пину RX wifi модуля, вывод TX к пину TX wifi модуля.

Команда запуска openocd: .\bin\openocd.exe -s share/openocd/scripts -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp32-wrover-kit-3.3v.cfg

Микроконтроллер PIC32MZ.

Цель разработки – создание прототипа для отладки функционала и начала работ программирования финального изделия.

Принципиальная схема и разводка печатной платы в DipTrace, доступны по ссылке pcon.zip. Программный код генерации меандра на ассемблере в MPLAB X доступен в архиве pic32mz_ports.X.zip

В отладочной плате реализован следующий функционал:

  • Микроконтроллер PIC32MZ0512EFE064

  • Преобразователи напряжений 9-36V на 3.3 и 5V

  • LED Дисплей WINSTAR 20*4 (PCF8574)

  • Матричная клавиатура 4*4 (PCF8574)

  • Управление восьмью внешними устройствами (PCF8574)

  • RS232 для связи с ПК и подключений GPS модуля

  • I2C преобразователь уровней 3.3V/5.0V для связи с линукс контроллером.

  • I2C часы реального времени.

  • I2C датчик клавиатуры.

  • SPI SD карта

  • RS485 ISO3088

Собрана и тестируется минимальная конфигурация. Контроллер PIC32MZ0512EFE064 и преобразователи напряжения на TPS5420-5V и MCP16301T-I/CH-3.3V.

10.2018 Требуются исправления в схеме:

  • RS232 SP3232EUCN-L не подключен к выводам микроконтроллера, подаётся неверное питание 5V.

  • Сделать подтягивающие резисторы I2C для 3.3V через перемычки, так как внешний контроллер содержит подтягивающие резисторы 1.8ком.

  • Вывести ICSSP в центр, чтобы подключать PickIt 3 без переходников.

  • Убрать JTAG. Не заработал. Нет желания иразбираться почему.

  • Добавить в затвор 2N7002 резисторы 10-20 ом, добавить светодиоды.

  • Вывести линию EN дисплея на микроконтроллер.

I2C.

Программный код примера записи в регистр pcf8574 MPLAB X доступен по ссылке pic32mz_i2c.X.zip.



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

Ошибка линии данных SDA определяется флагом I2C1STATbits.BCL и решается путем установки в ноль и затем поднятием шины SCL. В примере работы с шиной I2C выполняется повторная инициализация модуля I2C. При инициализации модуля шина SDA и SCL сбрасывается в ноль. После инициализации i2c I2C1CONbits.I2CEN = 1, работа продолжается корректно.

Demonstrating an I2C Master device.

Communication Protocols on the PIC24EP and Arduino .

Каталог с исходными текстами I2C Miscrochip.

Подключение LCD к порту pcf8574.

Подключение дисплея к порту pcf8574 позволяет работать с дисплеем с внешнего линукс/windows компьютера по i2c шине. Поскольку используется только один порт pcf8574, работа с дисплеем осуществляется в 4-х битном режиме.

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

I2C1SendByte( lcdByte | LCD_EN ); // Записать данные.
I2C1SendByte( lcdByte ); // Сброить EN.

Алгоритм записи байта данных в порт pcf8574 следующий. Отправляем на шину адрес устройства, получаем подтверждение, затем отправляем байт данных. Далее, цикл повторяется. В случае подключения LCD дисплея к pcf8574 этот алгоритм не работоспособен, так как при декодировании портом своего адреса на линиях данных порта отмечаются нежелательные изменения уровней сигнала. В случае подключения LCD дисплея к порту PCF8574 и работы его в четырёхбитном режиме алгоритм должен быть следующий. Выставляем адрес порта к которому подключен дисплей, получаем подтверждение, и далее, байт за байтом отправляем все необходимые данные. Передача одного байта данных в четырёхбитном режиме выполняется за две операции.

I2C1SendAddress( LCD_WA ); // Адрес pcf8574.
// 0x33
I2C1SendByte( 0b00110100); // 0x3 | EN.
I2C1SendByte( 0b00110000); // Сброс EN.
I2C1SendByte( 0b00110100); // 0x3 | EN.
I2C1SendByte( 0b00110000); // Сброс EN.
// 0x32
I2C1SendByte( 0b00110100); // 0x3 | EN.
I2C1SendByte( 0b00110000); // Сброс EN.
I2C1SendByte( 0b00100100); // 0x2 | EN.
I2C1SendByte( 0b00100000); // Сброс EN.

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


LCD interfacing with Microcontrollers tutorial.

16x2 LCD interfacing in 4 bit mode

Связь с ПК через RS485.

Программа ввода и отображения вводимых символов с компьютера на микроконтроллер и обратно на языке Cи доступна по ссылке: pic32mz_rs485Echo.X.zip, аналогичная программа ввода/вывода текста на ассемблере по протоколу RS485 доступна по ссылке: pic32mz_uart.X.zip

Передача данных в стандарте RS485 организована через аппаратный интерфейс UART микроконтроллера, к которому подключен передатчик ISO3088. Использование ISO3088 избыточно, поскольку гальваническая развязка не используется, используется преобразование уровня из 3.3V UART в 5 вольт RS485.

Для связи с компьютером используется преобразователь интерфейса RS485 в USB Uport 1150. В качестве терминала использована штатная программа, идущая с Moxa Uport 1150, работоспособен и PuTYY терминал.

ISO3088 требует переключения из режима передачи в режим приёма данных по шине. Это достигается изменением состояния четвертого и пятого выводов ISO3088. При смене направления передачи данных требуется задержка в програмном коде UART.

...



USB to RS485 Serial Converter Cable.

Section 21. UART.

Реализация языка программирования форт.

Среда разработки форт-системы MPLAB X IDE, ассемблер, начальный этап разработки ядра форт-системы представлен по ссылке: pic32forth



  • Иницируется модуль UART микроконтроллера и в бесконечном цикле идёт опрос наличия данных во входном регистре. Как только система получает очередной символ с клавиатуры терминала ПК по протоколу RS485, в зависимости от режима он отправляется обратно на терминал ПК для отображения на экране и заносится в буфер ввода микроконтроллера. Признаком конца ввода и начала обработки введённой информации является получение кода 0x0D. что соответствует нажатию на клавиатуре клавиши Enter.

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

  • Если форт-слово в словаре не найдено, то ядро системы пытается преобразовать его в число с учётом текущей системы исчисления, которая может быть любой и задаётся внутренней переменной base либо признаками 0x -шестнадцатеричное или 0b - двоичное. Если преобразование успешно, число помещается на собственный стек форт системы, адрес вершины которого всегда находится в регистре $s0. Если нет, выдаётся сообщения об ошибке что слово не найдено. На этом, как ни странно, работу по реализации форт-интерпретатора в достаточно широком смысле этого слова можно считать законченной.

  • Параметры с которыми работает форт-слово следует предварительно поместить на стек. Итогом работы форт-слова может являться результат который также будет помещён на форт-стек. Примером являются арифметические и логические операции когда со стека снимаются два операнда, после над ними выполняется операция и результат вновь записывается на стек: 13 12 + Результат операции сложения двух чисел 25 будет на стеке.

    ...

  • Данные на стеке представлены в двоичном виде. Чтобы вывести данные на экран значение со стека, их следует преобразовать в ASCII символы. Для подобных преобразования в форт-систему введён буфер вывода. Форт слово '.' (точка) снимает со стека число, преобразует в число системы счисления по умолчанию, результат операции как последовательность ascii символов переносится в буфер вывода. Для удобства .hex - преобразует значение на стеке в шестнадцатиричную систему счисления, .bin - в двоичную и переносят значения со стека в буфер вывода как последовательность ascii символов. Далее этот буфер можно вывести на экран ПК по RS485, выполнив форт-слово "cr", либо передать далее по сети другому устройству.

Мищук Андрей.
Tinkoff: 4377 7278 1809 5759
energy4all@inbox.ru
Буду признателен за поддержку!