本设计为原创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控制电动马达的转动,stm32的PB1控制蓝牙模块的使能,蓝牙模块的工作电压范围在1.8-3.3V,具有低功耗
- //2019年10月22号21点44分,作者Vence
- #include "stm32f10x.h"
- #include "usart1.h"
- #include "bluetooth.h"
- #include "key.h"
- #include "led.h"
- #include "motor.h"
- #include "runmodel.h"
- u8 motor_mode = 0; //电机运动模式
- u8 send_flag = 0;
- int main(void)
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断控制器分组设置
- Key_Init(); //初始化按键
- EXTI_Configuration();
- Usart1_Init(115200); //设置串口1的波特率为115200bit
- LedInit(); //初始化led
- Delay_Init(); //初始化延迟函数
- BlueTooth_Init(); //初始化蓝牙模块
- USART_Cmd(USART1, ENABLE); //除能串口
- GPIO_ResetBits(GPIOB,EN);
- Motor_Init(); //舵机初始化
- Lo_Signal;
- while(1)
- {
- if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) == Bit_RESET)
- {
- DelayMs(100);
- if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) == Bit_RESET)
- {
- send_flag++;
- if(send_flag == 2)
- send_flag = 0;
- if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_2) == Bit_RESET)
- GPIO_SetBits(GPIOA,GPIO_Pin_2);
- else
- GPIO_ResetBits(GPIOA,GPIO_Pin_2);
-
- if(send_flag == 1)
- {
- Motor_Mode(Reverse_45);
- }
-
- if(send_flag == 0)
- {
- Motor_Mode(Forward_45);
- }
- }
- }
-
- }
- }
复制代码
全部资料51hei下载地址(PCB+代码):
基于stm32的马达开关.7z
(2.62 MB, 下载次数: 149)
|