我正在尝试与matlab和arduino Uno进行实时通信 . 我们的想法是用PWM发送电机命令,并读取传感器值 . 但首先我想要在串口/ USB上进行实时通信 .

因此,arduino代码正在等待来自matlab的调用,并且根据调用的类型,答案将被转发到电机(控制命令)或编码器值将被发送到笔记本电脑(读取命令) .

在matlab部分,我使用了串行对象,并以高波特率打开 . 当我使用分析器检查matlab中的时序时,看起来问题不是来自matlab方面,而是来自arduino /或串行通信 .

问题是由于某种原因,我需要一个非常小的采样时间大约0.004秒 . 但无论波特率有多大,我都无法做到这一点 . 为了加快沟通,我应该改变什么?重要的是要提到我需要实时控制 . 使用0.004,我得到一些非常嘈杂的数据,平均值约为0.015;但是如果我将它改为0.015,仍会出现一些峰值 .

为了更好地理解这里是arduino代码:

const byte numChars = 8;

char receivedChars[numChars]; // an array to store the received data

int numb = 0;

boolean newData = false;

void setup() {

Serial.begin(250000);

Serial.setTimeout(100);

}

void loop() {

recvWithEndMarker();

showNewData();

}

void recvWithEndMarker() {

static byte ndx = 0;

char endMarker = '>';

char rc;

while (Serial.available() > 0 && newData == false) {

rc = Serial.read();

if (rc != endMarker) {

receivedChars[ndx] = rc;

ndx++;

if (ndx >= numChars) {

ndx = numChars - 1;

}

}

else {

receivedChars[ndx] = '\0'; // terminate the string

ndx = 0;

newData = true;

}

}

numb = atoi(receivedChars);

}

void showNewData() {

if (newData == true) {

if (numb==256)

Serial.println(numb);

newData = false;

}

}'

这是MATLAB代码

for k = 1:N,

% time(k)

alpha(k) = utread;

%simple constant input, here goes the control algorithm

% u(k) = (-1 + k/255);

u(k) = sign(mod(k,5)-2);

% for aaa=1:100

% 1+2;

% end

utwrite(u(k));

%synchronize, wait for next sample time

time(k+1) = toc;

while(time(k+1)

time(k+1) = toc;

end

end

为简单起见,我只提出了最重要的部分 . 和utread是一个具有以下形式的函数:

utread.m

global utip

fprintf(utip.s,'256>');

dat = fscanf(utip.s,'%d');

while (isempty(dat)) % wait for data on the serial

fprintf(utip.s,'256>');

dat = fscanf(utip.s,'%d');

end

arduino读取matlab串口,Matlab Arduino实时串行通信,采样0.004 s相关推荐

  1. linux 串口 arduino,linux通过串口对arduino读写

    linux平台,程序接收一个字符串和一个数字,字符串为发送给arduino的数据,数字为返回的字符串的长度,实际长度会用在这个数乘5 #include #include #include #inclu ...

  2. Arduino 读取 Pin2 的电平信号,并把结果打印到串口,也同时反映到 LED 灯

    Arduino 读取 Pin2 的电平信号,并把结果打印到串口,也同时反映到 LED 灯 /*读取 Pin2 的电平信号,并把结果打印到串口,也同时反映到 LED 灯 */// 定义引脚 int pu ...

  3. Arduino读取JY901+GPS/北斗双模定位模块信息(提高定位精度)串口和I2C通信

    Arduino读取JY901+GPS/北斗双模定位模块信息 上一篇JY901模块连接ATK-1218-BD,GPS/北斗通过JY901上位机显示数据 采用JY901的上位机查看信息后,确定JY901, ...

  4. matlab连接板,怎样用Matlab连接控制Arduino开发板

    在本篇文章中,我们将新建一个简单的MATLAB m文件来与Arduino开发板进行通信. MATLAB用于Arduino硬件的支持包允许您使用MATLAB通过USB电缆与该开发板通信.支持包适用于32 ...

  5. 直流电机 matlab,使用MATLAB和Arduino开发板进行直流电机控制

    在本篇文章中,我们将主要介绍如何使用MATLB和Arduino开发板控制直流电机.如果您是初次使用MATLAB软件,建议您先学习如何使用MATLAB实现简单的LED闪烁. 创建用于控制直流电机的MAT ...

  6. 关于python读取Arduino发送的串口数据将bytes转换为str问题

    关于python读取Arduino发送的串口数据将bytes转换为str问题 Arduino作为一款非常好的开源软件,在控制领域十分受欢迎.最近在做一件事就是将Arduino的数据通过串口传输到电脑, ...

  7. matlab中instr,MATLAB 串口通信

    matlab 串口编程 由于项目需要,用matlab 做了一个串口通信工具,也碰到不少坑.这里总结一下. 读取串口数据 matlab 支持串口通信,因此直接调用串口的结构体serial就可以,在调用之 ...

  8. MATLAB串口通信

    Matlab并不具备直接访问硬件的能力,但是支持面向对象技术,通过调用Instrument Control Toolbox中的serial类函数来创建串口对象,对串口对象操作就是对串口操作,使用起非常 ...

  9. Ariduino入门笔记——9. Arduino 默认函数(串口通信)

    文章目录 什么是串口 Serial 串口函数 串口准备--if(Serial) 获取可读取的字节数--available() 获取可写入的最大字节数--availableForWrite() 串口连接 ...

最新文章

  1. Oracle11g与Oracle11gxe有什么区别
  2. 容器安全最佳实践入门
  3. 【若依(ruoyi)】表格图片预览功能图片超宽、超高问题
  4. DbUtils使用原理详解【不懂的来】
  5. RuntimeError: inconsistent AsyncHTTPClient cache
  6. 量化指标公式源码_通达信指标公式源码线上阴线指标公式
  7. 2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件...
  8. css3-3 css3背景样式
  9. Sublime Text 4不显示未注册的方法
  10. 贝索斯的蓝色起源被21名员工投诉
  11. 关于libusb-win32开发的经验
  12. Google新项目:从一条线开始,完成地球的绘制
  13. linux下mail函数,Linux主机禁用Mail函数的解决办法
  14. idea设置主题路径
  15. 数学在线绘图计算机,Desmos Graphing Calculator插件,在线可视化图形计算器
  16. 代码审计jizhiCMS 后台getshell
  17. 面试官问我知道的分布式事务,我一口气说了六种
  18. 国内最火的10款Java开源项目
  19. vt-x+linux子系统,虚拟机安装linux 系统(二 )解决 Intel VT-x 报错
  20. vue功能之“微信支付“

热门文章

  1. 投资学习网课笔记(part8)--基金第八课
  2. 网络编程(part7)--网络主机/IP地址/域名/端口号
  3. html课表插件,课程表插件Timetables(原创)
  4. 好枪手是靠子弹喂出来的,好分析师是靠大量项目沉淀出来的
  5. SAP 电商云 UI State persistence 状态持久化设计的入口 - initSync
  6. SAP 电商云 Spartacus UI 产品明细页面路由路径的自定义配置
  7. SAP UI5 System Test 的工具之一:uiveri5
  8. SourceTree查找Github修改记录的技巧
  9. 一个简单易用的图标字体库和CSS框架fontawesome
  10. Angular In-memory Web API使用介绍