嘉立创产业服务站群
发作品签到
专业版

基于STM32最小系统的电机调速系统

工程标签

474
0
0
0

简介

其实是接的一单课设

简介:其实是接的一单课设
”暖冬创趣迎新年“

开源协议

GPL 3.0

创建时间:2024-12-19 13:29:31更新时间:2025-05-26 01:48:00

描述

题目要求

1735724045712.jpg
1.控制电机速度
2.控制电机正反转
3.把读取到的电机转速显示

题目分析

无,没有使用PID来控制,因为题目也没有要求

提示:电源设计
电源设计.jpg

原理图设计说明

电机驱动

1735724045712.jpg
降压模块

1735724045719.jpg
主控核心板

1735724045725.jpg

PCB设计说明

把线走通,过大电流导线尽量给粗一点的线宽,编码器要接到定时器计数,尽量走近一点。

软件说明

因为是开环控制,所以比较简单使用定时器1输出pwm,使用定时器2的编码器模式进行电机的测速。然后使用IIC来驱动带IIC的1602显示速度即可

#include
void main()
{
    一些初始化
    
      while (1)
  {
	  if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7) == 0)
	  {		
		delay_ms(10);
		while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7) == 0);

		time++;
	  }  

	  if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6) == 0)
	  {
		delay_ms(10);
		  while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6) == 0);
		  time--;
	  }
	  if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0)
	  {	  
		delay_ms(50);		  
		 while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1) == 0);

		  time = -time;
	  }
	  if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4) == 0)
	  {
		delay_ms(10);
		  time = 0;
	  }
	 
	  
	  if( time > 7)
	  {
		  time = 7;
	  }
	  
	  if(time < -7)
	  {
		  time = -7;
	  }

	  speed = time*1000;	

		Load(speed,0);
	  
		Read();

((float)Encoder_Left/(20.90/6000));
	  
		sprintf((char *)display_buf,"speed: %d   ",-Encoder_Left  );
		lcd_put_cur(0, 0); // put cursor at the entered position rol(0 or 1), col(0 - 15)
		lcd_send_string (display_buf);  // send string to the lcd


}

实物展示说明

基于HAL库的开发

1735742921002.jpg

注意事项

其它附件上传

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
VID_20250101_230449_0_COMPRESSED.mp4
9
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航