Отправка данных на программируемый источник питания от Arduino по RS232

У меня есть программируемый источник питания, который имеет последовательный порт связи. Если я отправлю строку "VSET1: 11.00", то источник питания будет установлен на 11.00В. Но мне нужно написать программу, которая увеличит напряжение источника питания на 0,10 В Например, от 0 В до 11,00 В с шагом увеличения 0,10 В. Кроме того, для источника питания необходим фиксированный формат фрейма данных, такой как бит четности, биты данных, стоп-бит. Итак, как создать структуру фрейма данных и отправить ее с arduino.

Нужно ли мне использовать последовательную библиотеку программного обеспечения?

PS. Я новичок в arduino, так что это может показаться глупым.

, 👍1

Обсуждение

Это похоже на тот же блок питания, что и у меня. Мой помечен как TENMA, хотя я видел то, что выглядит так же, как и у других людей..., @Majenko

Одна вещь, которую я действительно нахожу раздражающей в этом блоке питания, заключается в том, что, как только вы отправляете что-либо через последовательный порт, он на некоторое время полностью блокирует переднюю панель., @Majenko

Да, это так. Это источник питания TENMA., @Hrishikesh Dixit


1 ответ


3

Сначала вам понадобится адаптер TTL к RS-232. Они наиболее широко известны как "MAX232" и доступны в виде небольшого модуля.

Это преобразует TTL-сигнал 0-5 В, создаваемый Arudino, в сигнал ± 10 В, используемый RS-232. В Интернете есть множество руководств о том, как их использовать.

Затем вам нужно сгенерировать сигнал. Да, для Arduino UNO библиотека SoftwareSerial - это то, что вам нужно. Опять же, есть много руководств по его использованию.

Чтобы на самом деле отправить инструкции, это может быть что-то вроде:

#include <SoftwareSerial.h>

SoftwareSerial PSU(10, 11); // RX, TX

void setup() {
    PSU.begin(9600);
}

void loop() {
    for (int i = 0; i < 11000; i += 100) { // Здесь я работаю в милливольтах.
        PSU.print("VSET1:");
        PSU.println(i / 1000.0, 2); // Преобразовать милливольты в вольты с помощью 2 DP
        delay(10); // задержка 10 мс
    }
}

Я не тестировал его, но это должно дать вам 0-11 В, повышающееся на 0,1 В за 10 мс.

,

Спасибо, сэр, я попробую то же самое., @Hrishikesh Dixit