小弟我刚刚开始学习用arduino解决一点实验中的设备通讯问题,诚恳向大家求助。
1 问题背景
用单片机监控来自一台设备(dev1)的TTL触发信号,如果检测到信号就立刻控制另一台设备(dev2)的开启。dev2实际是一台激光器,所以发出是一组参数,控制激光的频率和占空比以及开启时长。
小弟设计了一个很简单的方案,从dev1的DB9口中引出三根线连到单片机上的rx,tx和GND上,单片机上引出两根线(GND 和一个pin脚)连到dev2的BNC接口引出的两根线上。用while(Serial.available()>0)来监控串口信息,一旦有信息来就控制pin的电平输出。
2 问题描述
现在单片机可以实现接受信号再发出触发信号,但有几个问题
1)因为dev1无论设置为发出的是高电平还是低电平,单片机串口显示的都是0。因为dev1的手册没有提供通讯协议内容,我用的波特兰9600监测的。
2)dev1可以设置发出TTL的时间长短,但只能在设置为1s(只能为整数秒)时单片机能收到信号,高于1s就侦测不到信号。
3)从dev1发出信号,到dev2的激光触发,肉眼可见显著的延迟,大概在1.5~2秒之间。因为小弟做的实验对同步要求非常,要到毫秒级别,所以这个问题是最严重的。
3 求助内容
因为小弟没有计算机或者工科背景,对单片机和数字电路知识薄弱,任何有助于我理解该问题现象或者解决该问题的方案或者建议,小弟感激不尽并殷勤献上积分币。谢谢~