使用FPGA的自行车辅助系统

电子说

1.3w人已加入

描述

步骤1:硬件和材料

该项目分为3个主要小节:机械部分(“我们需要什么?”),电气部分(“我们如何捆绑东西?”)和软件部分(“我们如何使其工作?”)。

那么,我们需要什么?

用于机械部分的材料: (图1 )

-一个塑料盒

-金属支架

-外部电源

-电缆扎带

-1个铁钉子

-易于弯曲的金属线

-较轻

-钳子

-铝箔

-金属支架

-粗针

-小号L型金属支架(应接近声纳传感器的大小)

-和一辆自行车(显然= D)

电气部件的材料和硬件:( 。2和3 )

-Basys3开发板

-3 X Pmod MAXSONAR

-Pmod NAV

-Pmod BT2

-Pmod GPS

-3 X伺服电机

-2个LEDs

-2个电阻

-2个按钮

-固定输出线性稳压器(LM7805)

-电池9 V

-9V电池连接器

-引脚

-焊接板(我们的尺寸约为95 x 47 mm,然后将其切成小块)

-电线

-便携式智能手机电池充电器

软件部分:

-Vivado Design Suite WebPACK(我们使用的是2016.4版本)

-Android Studio

步骤2:组装物理组件

现在可以在自行车上组装组件了!

任务1:在自行车上建立盒子并将其安装

我们将塑料支架绑在自行车的后部。此步骤特定于一个人拥有的自行车的类型;如果您有一个自行车行李架,则可以简化此操作(实际上,如果有,则只需跳过第一步,然后转到第二步-不幸的是我们没有一个,所以我们不得不即兴创作)。

1。从后轮在保护翼上开4个孔,它们之间的距离分别为11厘米和2.5厘米。我们用铁钉子和锤子打孔。铁钉的直径应足够大,以使电线穿过孔。我们必须用一块木头支撑它,以防止后轮被钉子刺穿。

2。在塑料盒中的四个长孔中,在长11厘米,宽2.5厘米的矩形的角处,以塑料盒为中心(图4 )。我们通过加热一小部分金属丝的尖端并刺穿塑料来制成孔。

3。将盒子装到自行车上。我们使用金属丝,方法是从末端上下颠倒插入,然后将金属丝绑在中间以固定支架,并防止其移动。金属线应更长一些,因为稍后将用于将板固定在盒子中。

等一下!结果可以在图中看到。 5 :)

任务2:构建对声纳Pmod的支持

因为我们无法直接在声纳上修复声纳Pmod伺服,我们为其创建了一个支撑,该支撑将安装在伺服电机的头部。同样,如果您要根据所使用的伺服器的类型以不同的方式执行此步骤,则可以自由操作,尽管我们仍将描述如何以这种方式执行此操作:

1。我们使用加热的针尖在伺服器的十字旋转头上钻了更大的孔。针应足够粗,以使您的线材穿过针孔。

2。用金属线将金属支架连接到伺服器的塑料轮上。

3。使用两个束线带将声纳传感器固定在支架上,如图图6 所示。

任务3:将伺服器,声纳和支架安装在盒

我们用胶带和回形针将舵机固定在盒上。我们还在特定位置切割了盒子,以使组件合适,并且伺服器可以旋转。通过在塑料盒上打孔(黄色)或通过粘贴塑料来安装灯。的图。 11

任务4:捆绑所有组件

如图中所示。 12 ,在盒子里,我们有Basys3开发板,GPS和BT2模块;用电线,电缆扎带和胶带将它们固定。在它们的顶部,用硬纸板隔开的面包板带有用于接地和为伺服器供电的引脚。图13 。

第3步:处理电气部件

伺服电机

伺服电机

下一步,我们需要以某种方式将电气部件连接到板上。..由于传感器随附的收到的Digilent 6/12引脚电缆连接器很短,我们不得不通过焊接电线和引脚来扩展连接器用锡。 图7.a 和 7.b 显示了我们应在项目中的Basys3板与Pmod之间建立的连接。

此步骤再次分为几个任务。

任务1 :将每个按钮焊接到一块焊板上,然后将其连接到两根导线上,这两根导线的长度相等,可以从自行车的一个手柄上取下到前面提到的自行车背面的板上。一根线将接地,另一根线将连接到电路板的引脚。一个按钮需要2 X 160厘米的电线。 (图8)

任务2 :对LED和电阻进行相同的操作。因为我们决定将信号灯放在较早安装的盒子的背面,所以所需的电线将不再像上面提到的那样长。每根电线30厘米对我们来说绰绰有余。 (图9)

任务3 :如果要连接3个伺服器,电路板的电源将不足。因此,我们决定为每个伺服器放置9V电池。因为使用的伺服器在4.8V-》 6V的电压下工作,所以我们添加了一个固定输出线性稳压器(LM7805),该稳压器为我们提供了5V的输出,用于为伺服器供电。 (图10)

未来的更新将包括Pmod的最终接线。现在,这是使用6/12针Digilent电缆连接器完成的。

步骤4:测试外围设备

所有内容均已在VHDL中编程。在本节中,我们将解释每个实现背后的逻辑。我们还提供下面的代码。

作为蓝牙模块的PmodBT2是使用UART协议控制的。从数据表我们知道它的波特率为115200。我们需要知道接收和发送操作的过采样率。尽管我们还为接收部分提供了代码,但我们现在仅使用传输功能。传输的过采样率计算为板频率/蓝牙波特率,在本例中为100MHz/115200 =868。有关如何控制和连接蓝牙的更多信息,请参见Internet。尽管pmod有12个引脚,但我们将仅连接RX,TX的2个引脚,GROUND和VCC的2个引脚。

PmodMAXSonar使用PWM(脉冲宽度调制)协议进行编程,尽管您可以使用其他编程协议。我们将需要引脚4(PWM输出),引脚5(GND)和引脚6(VCC)。 RX引脚将被上拉并设置为输出以连续传输数据。我们忽略了模拟和TX引脚。该分量的输出将是英寸的范围,该范围将通过对PWM输入脉冲的长度(即147微秒)进行计数来获得。每次计数器达到14699时,我们都会增加英寸,如果读数大于零,则会重置缓冲区以准备新的读数。

我们使用蓝牙模块将声纳读数传输到手机。我们计算出,要发送数据,我们需要将传输过采样率乘以所需的位数乘以2。过采样率是867,位数是16,乘以2,得到27774。使用计数器,每次达到该值时,我们就传输范围。可以根据需要进一步调整该值。

LED的一根线接地,另一根线接地。按钮的连接方式相同。面板等待按钮被按下。当它在按钮引脚上记录更改时,它开始闪烁一个LED。另一个按下的按钮将停止相应的指示灯。指示灯在逻辑上“绑定”到按钮。另一个导致另一个按钮。

注意:必须将按钮信号线所在的端口设置为在XDC文件中上拉才能正常工作。

Servos输入PWM的周期应为2ms。这意味着50 Hz频率。由于Basys3内部时钟的频率为100MHz,为了获得所需的50Hz时钟周期,我们将100MHz/50Hz = 2000000计数。基于特定的填充因子,我们将获得一定程度的伺服磁头移动,该角度再次实现为计数器。

使用模块SPI_communication_NAV_AG通过设置寄存器来从加速度计获取数据。想读取数据。例如,如果希望从x轴读取数据,可以将spi_addr设置为“ 0101001”。由于我们希望一直进行通信,因此我们将enable设置为1。从加速度计的X轴读取数据(主从SPI通信)。用重力加速度单位解释数据,并检查其是否在阈值内:1-5 g。如果阈值之间的读数值通知了制动信号灯。

注意:这些值可从观察中得知

GPS用于识别自行车的行驶速度。数据通过UART协议收集,并以5条消息的形式出现。我们只需要第五个VTG即可获得速度。来自GPS的所有信息都通过BT2发送到应用,最终在其中进行解析,并提取所需的数据。

第5步:对电路板进行编程

我们现在准备为当前的系统赋予生命!

1。打开Vivado Design Suite并创建一个新项目。

2。为项目指定所需的名称,创建一个约束文件,然后选择零件xc7a35tcpg236-1,它是Basys3板上的fpga核心。

3。为代码文件中提供的每个组件创建新的设计源,或仅将它们上载。

4。将我们提供的约束文件放入您的项目中(如果需要,可以根据自己的需要对其进行自定义)。

5。综合并实施您的设计。生成比特流,打开新目标并编程设备:)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分