一、背景

兴趣爱好来了,决定研发一个产品。涉及到电工和机械等知识,所以记录一下相关的基础知识。

二、实验组成

(一)器材

        1.总控及连接线

        (1)主要是uno-r3开发版1台,它也是一个含脉冲发生器。

        (2)USB连接线1根,一般是购买uno-r3自带的。一头是type-B(插在uno-r3上面的,网上一搜索就知道是什么形状了),另一头是type-A(就是平时插电脑usb接口的)。

        (3)杜邦线4根,用于连接uno-r3向步进电机控制发送脉冲。我是买uno-r3送的。        

        2.步进电机控制器及连接线

        (1)雷赛M542C

        老婆批的经费有限,开发测试买的便宜的套装。

        (2)电源线2根

        用来连接到开关电源,套装没有带电源线,我自己买的,1方(平方毫米)的、10米长,多买点,怕其他地方有用。

        3.步进电机

        雷赛57CM13,电机默认4根线,接到步进电机控制器上,上面贴了一张纸,明确了接线方式。这4根线,我的理解为既是电源线又是控制线,因为电机正反是电流方向决定的,转多少是时长决定的。

        4.开关电源及连接线

        (1)开关电源

        这个很好买,主要看输出,我是24V、10A的输出,3对输出接口。

        (2)插头及线

        卖家给我一个裸的。。。。我自己买了一个三相插头、1米长的插头线。        

(二)工具

        1.剥线器(电工钳或拨线钳)

        

        2.改刀(梅花、一字都需要)

        我买的套装了,其他地方用得着

        

        (三)软件

         开发软件使用的是:Arduino。

三、连接方案

        只要材料、工具齐全,接线很容易的。不知道的问AI,查资料,easy!

四、测试代码

        代码从刚开始电机动了(与预期不一样的动)到最后的函数化封装,大概经历了4次更新,测试代码如下:

const int pulsePin = 2;   // 接PUL+
const int dirPin = 3;     // 接DIR+
const int stepPer360 = 400;  // 驱动器设置:400步=360°(1圈)

void setup() {
  pinMode(pulsePin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  
  // 初始化:脉冲引脚低电平(未发送),方向引脚默认低电平
  digitalWrite(pulsePin, LOW);
  digitalWrite(dirPin, LOW);
  delay(100);  // 给驱动器初始化时间

  // 测试:调用函数转180°正转 → 停1秒 → 转360°反转
  motorRotate(180, 1);  // 1=正转,180°
  delay(1000);
  motorRotate(360, 0);  // 0=反转,360°(1圈)
}

void loop() {
  // 空循环,仅执行setup里的测试
}

// 电机转动函数:angle=转动角度;direction=方向(1=正转,0=反转)
void motorRotate(float angle, int direction) {
  // 1. 计算需要发送的脉冲数:(角度/360°)×400步/圈
  int steps = (angle / 360.0) * stepPer360;
  if (steps <= 0) return;  // 角度≤0则不执行

  // 2. 设置方向(1=正转→LOW,0=反转→HIGH,按你的实际方向逻辑)
  digitalWrite(dirPin, direction == 1 ? LOW : HIGH);
  delay(10);  // 方向切换延迟(已测试10ms足够)

  // 3. 发送对应脉冲数(转动指定角度)
  for (int i = 0; i < steps; i++) {
    digitalWrite(pulsePin, HIGH);
    delayMicroseconds(300);  // 速度:300微秒(可按需调整)
    digitalWrite(pulsePin, LOW);
    delayMicroseconds(300);
  }
}

五、心得体会

1.与AI协作,大大缩短跨领域的学习时间。

        如果没有AI帮助我,我一个小白,估计几个月都干不下去,多半要半途而废。特别是设备选型,对于小白难说,太难了。硬件什么都不懂,型号、参数一脸懵。接线也是,哪里接哪里,更是看不懂。。。

2.物理世界的运行是需要时间的。

        平时,我们编写业务代码,除了并发,基本不用考虑时序的问题。但是硬件控制,特别是数字信号转模拟信号的时候,模拟信号类似医院的心电监测仪上显示的波形,波形是什么?是高或者低一段时间持续的表现。特别是电机转动方向的指令,高或者低电位是要保持一些时间的,如果不保持时间,脉冲可能会被丢弃,因为设备需要一定时间来感知电位。另外一个参数是转动脉冲,一个步一个脉冲,脉冲必须持续一定时间才可以被识别,否则电机看上去几乎没有动,只有电流声。

3.步进电机控制器有详细的设置。

        步进电机控制器上面有sw1-sw8,一共8个控制开关,组合起来实现了电流和1圈(360°)的步数设置。具体控制设置,我也是自己看加上AI解读搞明白设置的。其实很简单,就是不懂,没有经验,但是AI辅助学习后,飞快。

4.AI协助评估电路连接的安全性。

        把设备的参数,接线的情况,全部丢给AI,让她评估是否有过载或者烧坏的风险,比如有的地方需要加电阻或者电容不?当年大学学习的是软件方向,对于数电了解太少,电路设计更是一窍不通,但是我们要有这个风险意识。产品设计,第一就是安全,在持续运行下,设备是否不会升温而导致起火?设备持续运行的能力如何?故障自恢复能力如何?人工干预故障的操作是否简单?简单粗暴的关机再开机来解决问题时,是否考虑了初始状态?我虽然是外行,但是长期积累的设计理念还是有一些。这些就可以借助AI的能力来快速帮助我们进入到陌生领域的高级段位。在一个领域学习精深了后,我们就可以从方法论、哲学的角度去探索其他领域,缺的主要是经验,AI刚好可以弥补一大部分,最核心的是问题方向的判断,来发挥AI的经验优势。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐