基于S3C6410的小车制作(二)

本文讨论了使用S3C6410处理器控制电机,并通过外部计数器D8253对编码器进行计数的方法,解决了资源限制问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制部分主要是电机的控制,我们已经有了现成的电机驱动模块,因此,只要针对该模块编写驱动即可.

电机驱动模块如下

图中, 两边两个蓝色的双口接线口分别接两个电机,下面的一个三口接线口从标示可以看到,分别接输入电源,地和一个5V的输出,两边两排杜邦线接口接控制信号,分别控制两个电机.

当我们给IN1高电平,IN2低电平,左边电机正转,而给IN1低电平,IN2高电平,电机反转.

由于S3C6410可以引出两路PWM信号,因此我们让两路PWM信号分别控制两个电机,然后每一路加一个GPIO信号控制电机方向



上图是其中一路的控制电路, PWM1和EINT4是从S3C6410引出的PWM信号和方向信号,这两个信号经过一片74LS00处理,其功能为,当EINT4为0时, M1_PWM0 = PWM1, M1_PWM1 = 0,当EINT4为1时, M1_PWM0 = 0, M1_PWM1 = PWM1.


还有一个重要的问题就是,车上有两个编码器, 因此我们需要两个计数器来对其进行计数,然而悲剧的是,S3C6410总共才有4个计数器,我们已经用了两个,而且外部时钟输入只有一个,因此,不可以用S3C6410对编码器进行计数.

于是,我借助外部计数器D8253对编码器进行计数,再把D8253连入S3C6410的系统总线.

原理图如下

图中P5,P6是用来连接两个编码信号的,将编码器的信号作为D8253的两个时钟信号,这样就可以对编码器进行计数了,EINT19和EINT20是两个中断信号,表示计数器完了,需要重新置数.




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值