查看: 2955|回复: 5

[原创] 基于K64的多功能蓝牙小车-连载2

[复制链接]
  • TA的每日心情
    慵懒
    2020-2-14 09:42
  • 签到天数: 196 天

    连续签到: 1 天

    [LV.7]常住居民III

    3

    主题

    213

    帖子

    0

    高级会员

    Rank: 4

    积分
    695
    最后登录
    2024-1-24
    发表于 2016-7-12 22:01:42 | 显示全部楼层 |阅读模式
    本帖最后由 sagitattoo 于 2016-7-12 22:01 编辑

    1、电机驱动
            此次小车采用了4个两端口的直流电机驱动,马力强劲,4驱无阻啊。
            这种电机的驱动很简单,只需两个GPIO即可。当两端口A和B输入电压相等时,电机停止转动;当一端的电压高于另外一端时,电机会转动,那么是正转,还是反转,取决于哪一个端口高,哪一个端口低。当然啦,电机的旋转还需要大电流,由于K64F的GPIO输出电流有限,需要外接电机驱动模块,才能真正使电机转动起来。
            这里的驱动模块采用小车界出镜率很高的L289N解决方案作为后轮驱动,体积较小的L9110模块作为前轮驱动,电源使用7.2V,1300mAh的电池组。其中L289N模块电源输入来自电池组,并且能够输出两路5V电压,一路驱动L9110模块,一路供给K64F开发板


    IMG_1001.png     IMG_1002.png     IMG_1003.JPG

            电机正转反转的测试代码核心部分如下:
    1. #define MOTO_1A_GPIO GPIOB
    2. #define MOTO_1B_GPIO GPIOB
    3. #define MOTO_1A_GPIO_PIN 2U
    4. #define MOTO_1B_GPIO_PIN 3U
    5. #define HIGH 1
    6. #define LOW 0
    7. GPIO_WritePinOutput(MOTO_1A_GPIO,MOTO_1A_GPIO_PIN,HIGH);
    8. GPIO_WritePinOutput(MOTO_1B_GPIO,MOTO_1B_GPIO_PIN,LOW);
    复制代码

    2、小车驱动
            了解了电机的驱动方法,就可以进行小车驱动的编写,也就是将四个电机的驱动配合起来使用。
            小车的驱动最基本的就是停车、直行(
    向前、向后)、转弯(左转,右转),当然还有个车速控制。
            停车操作最容易,直接将所有GPIO口置零,电机就不转了,小车也不跑了;

    1. #define MOTO_1A_GPIO GPIOB
    2. #define MOTO_1B_GPIO GPIOB
    3. #define MOTO_1A_GPIO_PIN 2U
    4. #define MOTO_1B_GPIO_PIN 3U
    5. #define MOTO_2A_GPIO GPIOB
    6. #define MOTO_2B_GPIO GPIOB
    7. #define MOTO_2A_GPIO_PIN 10U
    8. #define MOTO_2B_GPIO_PIN 11U
    9. #define MOTO_3A_GPIO GPIOC
    10. #define MOTO_3B_GPIO GPIOC
    11. #define MOTO_3A_GPIO_PIN 16U
    12. #define MOTO_3B_GPIO_PIN 17U
    13. #define MOTO_4A_GPIO GPIOB
    14. #define MOTO_4B_GPIO GPIOB
    15. #define MOTO_4A_GPIO_PIN 5U
    16. #define MOTO_4B_GPIO_PIN 7U
    17. #define HIGH 1
    18. #define LOW 0
    19. GPIO_WritePinOutput(MOTO_1A_GPIO,MOTO_1A_GPIO_PIN,LOW);
    20. GPIO_WritePinOutput(MOTO_1B_GPIO,MOTO_1B_GPIO_PIN,LOW);
    21. GPIO_WritePinOutput(MOTO_2A_GPIO,MOTO_2A_GPIO_PIN,LOW);
    22. GPIO_WritePinOutput(MOTO_2B_GPIO,MOTO_2B_GPIO_PIN,LOW);
    23. GPIO_WritePinOutput(MOTO_3A_GPIO,MOTO_3A_GPIO_PIN,LOW);
    24. GPIO_WritePinOutput(MOTO_3B_GPIO,MOTO_3B_GPIO_PIN,LOW);
    25. GPIO_WritePinOutput(MOTO_4A_GPIO,MOTO_4A_GPIO_PIN,LOW);
    26. GPIO_WritePinOutput(MOTO_4B_GPIO,MOTO_4B_GPIO_PIN,LOW);
    复制代码

            直行操作需要将四个轮子设置为同一转动方向即可,全速前进的速度还是挺快的;

    1. GPIO_WritePinOutput(MOTO_1A_GPIO,MOTO_1A_GPIO_PIN,LOW);
    2. GPIO_WritePinOutput(MOTO_1B_GPIO,MOTO_1B_GPIO_PIN,HIGH);
    3. GPIO_WritePinOutput(MOTO_2A_GPIO,MOTO_2A_GPIO_PIN,LOW);
    4. GPIO_WritePinOutput(MOTO_2B_GPIO,MOTO_2B_GPIO_PIN,HIGH);
    5. GPIO_WritePinOutput(MOTO_3A_GPIO,MOTO_3A_GPIO_PIN,LOW);
    6. GPIO_WritePinOutput(MOTO_3B_GPIO,MOTO_3B_GPIO_PIN,HIGH);
    7. GPIO_WritePinOutput(MOTO_4A_GPIO,MOTO_4A_GPIO_PIN,LOW);
    8. GPIO_WritePinOutput(MOTO_4B_GPIO,MOTO_4B_GPIO_PIN,HIGH);
    复制代码



            转弯操作将一边的轮子设为停止,另外一边向同一方向转动,车身就可以向轮子停止的那一侧转动了。

    1. GPIO_WritePinOutput(MOTO_1A_GPIO,MOTO_1A_GPIO_PIN,LOW);
    2. GPIO_WritePinOutput(MOTO_1B_GPIO,MOTO_1B_GPIO_PIN,HIGH);
    3. GPIO_WritePinOutput(MOTO_2A_GPIO,MOTO_2A_GPIO_PIN,LOW);
    4. GPIO_WritePinOutput(MOTO_2B_GPIO,MOTO_2B_GPIO_PIN,LOW);
    5. GPIO_WritePinOutput(MOTO_3A_GPIO,MOTO_3A_GPIO_PIN,LOW);
    6. GPIO_WritePinOutput(MOTO_3B_GPIO,MOTO_3B_GPIO_PIN,HIGH);
    7. GPIO_WritePinOutput(MOTO_4A_GPIO,MOTO_4A_GPIO_PIN,LOW);
    8. GPIO_WritePinOutput(MOTO_4B_GPIO,MOTO_4B_GPIO_PIN,LOW);
    复制代码



            3、总结
            小车的驱动是硬件和软件共同作用的结果,小车的电机需要大电流驱动,因此硬件部分要选取稳定的驱动模块并配以足够的电源功率输出,软件的编写则要规划好四个轮子的旋转方向,使小车能够正常行驶,完成既定动作。

    moto_drive.rar

    2.17 MB, 下载次数: 2, 下载积分: 威望 1

    小车直行和左转测试代码

    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-9-9 22:51
  • 签到天数: 415 天

    连续签到: 1 天

    [LV.9]以坛为家II

    79

    主题

    3088

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    5181
    最后登录
    2022-5-23
    发表于 2016-7-12 22:53:20 | 显示全部楼层
      赞一个
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
    发表于 2016-7-12 23:47:20 | 显示全部楼层
    太棒了!
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-4 08:26
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    291

    帖子

    0

    高级会员

    Rank: 4

    积分
    613
    最后登录
    2020-11-21
    发表于 2016-7-13 07:32:44 | 显示全部楼层
    太棒了!太棒了!太棒了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-2-13 08:29
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    531

    主题

    2048

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    210
    最后登录
    2018-8-14
    发表于 2016-7-13 09:54:47 | 显示全部楼层
    厉害 真的很厉害
    签到 签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 2090 天

    连续签到: 5 天

    [LV.Master]伴坛终老

    65

    主题

    8397

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    14180
    最后登录
    2025-7-18
    发表于 2016-7-13 11:30:15 | 显示全部楼层
    很好,很好
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 18:34 , Processed in 0.097322 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表