找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5892|回复: 2
打印 上一主题 下一主题
收起左侧

基于stm32f103的蓝牙开关控制舵机 PCB+代码 原创DIY

  [复制链接]
跳转到指定楼层
楼主
本设计为原创DIY作品,2019.10.18日打好PCB样板,代码调试了近10天,出了V1.0版本,还有待改进的地方,比如功耗问题,V1.0版本功耗在58毫安左右,经改进V2.0功耗在2毫安左右(主要是舵机的待机功耗,在2.5毫安左右),2.0的板子还没打好,这里先贴出V1.0的板子设计和代码,设计上或者代码上有问题的还望大家指正。如需转载,请注明出处,QQ:1907913345,Author:VenceQ1:此电路中主芯片的VCC和GND之间没有加耦合电容,在电压不稳定的情况下,容易烧坏主芯片,一般情况不会烧坏
Q2:此电路中的按键GND脚设置错误,需要的请自行修改板子
Q3:所使用的蓝牙模块为信驰达的主从一体4.0
Q4:V1.0的电路图中我把蓝牙模块的P05和P04接到BLUE和RED上了,本来希望来用来判断是否连接成功,发现这样设计的话,没法将P05拉低,就不能利用蓝牙进行停机唤醒。
Q5:AMS1117可以不使用,本来想用5V的电源来驱动马达的,但是发现马达转速太快,关不了灯,后来换成了舵机,就不需要AMS1117和HR9110的马达驱动芯片了

Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
原理图:



PCB:



实物:



操作方式:
V1.0版本:蓝牙APP发送0x01,舵机转动到-45°,发送0x02,舵机转动到-90°,发送0x11,舵机转动到45°,发送0x12,舵机转动到90°,发送0x00,舵机转动到0°。

单片机主函数代码:
  1. //本设计利用信驰达进行蓝牙通信,通过串口1控制电动马达的转动,stm32的PB1控制蓝牙模块的使能,蓝牙模块的工作电压范围在1.8-3.3V,具有低功耗
  2. //2019年10月22号21点44分,作者Vence
  3. #include "stm32f10x.h"
  4. #include "usart1.h"
  5. #include "bluetooth.h"
  6. #include "key.h"
  7. #include "led.h"
  8. #include "motor.h"
  9. #include "runmodel.h"

  10. u8 motor_mode = 0;               //电机运动模式
  11. u8 send_flag = 0;

  12. int main(void)
  13. {        
  14.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                         //中断控制器分组设置
  15.                 Key_Init();                                                                                                            //初始化按键
  16.                 EXTI_Configuration();
  17.                 Usart1_Init(115200);                                                                   //设置串口1的波特率为115200bit
  18.                 LedInit();                                                                                                    //初始化led
  19.                 Delay_Init();                                                                                                 //初始化延迟函数
  20.                 BlueTooth_Init();                                                                                //初始化蓝牙模块
  21.                 USART_Cmd(USART1, ENABLE);                                                                                                         //除能串口
  22.                 GPIO_ResetBits(GPIOB,EN);
  23.                 Motor_Init();                                                                                                                                                                //舵机初始化
  24.                 Lo_Signal;
  25.                 while(1)
  26.                 {
  27.                         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) == Bit_RESET)
  28.                         {
  29.                                 DelayMs(100);
  30.                                 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) == Bit_RESET)
  31.                                 {
  32.                                         send_flag++;
  33.                                         if(send_flag == 2)
  34.                                                 send_flag = 0;
  35.                                         if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_2) == Bit_RESET)
  36.                                                 GPIO_SetBits(GPIOA,GPIO_Pin_2);        
  37.                                         else
  38.                                                 GPIO_ResetBits(GPIOA,GPIO_Pin_2);        
  39.                                        
  40.                                         if(send_flag == 1)
  41.                                         {
  42.                                                 Motor_Mode(Reverse_45);
  43.                                         }
  44.                                        
  45.                                         if(send_flag == 0)
  46.                                         {
  47.                                                 Motor_Mode(Forward_45);
  48.                                         }
  49.                                 }
  50.                         }
  51.                         
  52.                 }
  53. }

复制代码

全部资料51hei下载地址(PCB+代码):
基于stm32的马达开关.7z (2.62 MB, 下载次数: 139)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:700612 发表于 2020-3-7 22:54 | 只看该作者
不错
回复

使用道具 举报

板凳
ID:1108276 发表于 2024-1-6 12:55 | 只看该作者
好的厉害,不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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