正如[之前的博客文章]中提到的,加州大学伯克利分校的 EECS 16B 课程重点关注构建名为 S1XT33N 的语音控制机器人的为期一个学期的项目。然而,这个机器人并不是你在初中或高中时建造的标准机器人汽车。我和我的实验室伙伴只获得了基本的两轮机器人组件,包括轮子、电机、底盘、Arduino Leonardo、电池和面包板,我们必须自己构建和连接其他所有组件。如果您有兴趣了解有关该课程的更多信息,请访问课程网站[https://www.eecs16b.org/]。
以下是我在实验室学到的所有内容的总结,这一切都归功于可爱的 EECS 16B 课程工作人员。我们必须接线的一些电路组件包括电机编码器电路、稳压器电路、麦克风板电路和用于隔离语音频率的低通滤波器。我们还必须对不同的反馈系统进行编程来实现汽车的运动,包括开环和闭环反馈。添加动作后,我们记录了语音命令并设计了 PCA 分类算法,以便我们的语音命令能够与特定动作相匹配。该项目最重要的部分是将所有内容集成到一个有凝聚力的语音控制机器人中。该项目的另一个关键部分是学习构建平面电路和调试复杂系统。
这是具有所有不同电路的面包板的布局。
构建机器人的第一步是让机器人的 Arduino 控制电机并允许轮子移动。向电机提供电压时,我们将使用 Arduino 的脉宽调制 (PWM) 引脚。我们希望向电机提供 0 至 5V 之间的电压,但很难提供特定值(例如 3.3V)的直流电流。为了解决这个问题,我们使用具有“占空比”的 PWM 信号,“占空比”表示信号通电的时间百分比,从而使我们能够控制 PWM 信号的平均电压。不同的占空比使我们能够实现不同的特定电压,从而可以控制电机。
然而,每个电机都需要一个单独的控制器电路,该电路由 NPN 双极结型晶体管 (BJT)、二极管和电阻器组成。 NPN BJT 的作用是充当压控开关。当 BJT 开启时,可以将其视为有效地将电源接地,从而“完成电路”。 BJT 还可以处理比 Arduino 引脚更多的电流,从而提供必要的电流来使电机运行。电阻器值控制进入 BJT 基极端子的电流量,并且随着电阻器值的增加,电流减小。二极管沿特定方向传导电流,有助于耗散电机感应行为产生的反电动势。为每个车轮构建控制器电路后,每个电路都通过单个开关连接到 9V 电源轨,以控制电机的开启或关闭。
这是电机控制器电路的电路布局。左边的Arduino引脚提供PWM信号,带M的元件是电机,BJT在电机下方,充当开关。
测试控制器电路后,下一步是构建编码器电路,以使机器人能够测量每个轮子行驶的距离。编码器使用基于光的机制来测量速度。它们在两个组件之间发射光,当连接到机器人轮时,通过记录特定时间范围内光中断的次数来计算速度。该方法可以实现精确且准确的速度测量。当实现沿着预定义路径行进的控制反馈方案时,这将变得非常重要。我为每个轮子配备了一个编码器,并使用编织跳线将编码器连接到面包板和 Arduino,以屏蔽信号线免受外部噪声的影响。由于编码器输出的电压高于 Arduino 可以处理的电压,在将编码器连接到 Arduino 之前,我构建了一个分压器来降低编码器输出电压。
此时,我们的机器人可以控制其电机并测量每个轮子的速度。下一步是构建电压调节器电路。提供的电池为 9V,但机器人的电路采用 5V。为了将电压降低到必要的 5V,我使用了 5V 稳压器和两个 100 纳法拉电容器来帮助机器人降低高频噪声并稳定导轨上的电压波动。
这是稳压电路的电路布局。
为学生提供了用于麦克风板的印刷电路板 (PCB),但在我可以将麦克风板用于机器人之前,我必须设置带有偏置电路的麦克风板,以便为麦克风中的不同引脚提供信号木板。偏置电路在电路中的各个点建立预定电压。第一个引脚充当直流偏移,帮助将信号集中在 0 到 5V 之间,第二个引脚充当“虚拟地”。这个虚拟地允许我建立一个电压为 2.5V 的半轨。在构建了处理语音信号的偏置电路后,我通过播放不同频率的音调并调整电位器来调整麦克风板,直到所有有效频率的峰峰值电压不超过 5V。
这是定制麦克风印刷电路板,由驻极体麦克风、电位器、运算放大器插座以及接地和 5V 引脚组成。下面是麦克风偏置电路的原理图。
由于机器人应该处理语音信号而不是随机噪声,因此我构建了一个低通滤波器来隔离低于特定截止频率的频率,以帮助更好地采样语音命令。第一步是确定一个好的截止频率。会话语音频率范围约为 3 kHz,因此我将其设置为截止点。低通滤波器由电阻和电容组成,我使用了6200欧姆的电阻和10e-9法拉的电容,通过公式freq=1/2piRC给出了2570Hz的截止频率。截止频率点处的峰峰值电压应为原始峰峰值电压的 1/rad(2),我用函数发生器验证了这一点。由于低通滤波器的信号很弱,我构建了一个增益为2的同相放大器来增强信号。
这是 RC 低通滤波器的示例。
这是最终的面包板!
这些就是S1XT33N的所有主要电路元件,此时机器人可以拾取语音信号并移动轮子。然而,机器人无法直线行驶、识别特定单词或在特定语音命令后移动。这是下一篇博客文章的内容,重点是控制系统、PCA 和集成!所有数据均来自[https://www.eecs16b.org/]的课程人员。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !