找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1941|回复: 2
收起左侧

stm32使用L298N控制直流电机 PID

[复制链接]
ID:576778 发表于 2021-1-9 10:03 | 显示全部楼层 |阅读模式
  1. 利用PID控制直流编码电机
  2. 直流电机带光电编码器。

  3. 单片机源程序如下:
  4. #include "delay.h"
  5. #include "stm32f10x.h"
  6. #include "sys.h"
  7. #include "timer.h"
  8. #include "usart.h"
  9. #include "encoder.h"
  10. #include "oled.h"
  11. #include "pwm.h"
  12. #include "control.h"
  13. #include "led.h"
  14. #include "key.h"

  15. extern int Target_velocity;
  16. extern u16  Encoder;             //左右编码器的脉冲计数
  17. extern u16  Moto1;                 //电机PWM变量

  18. u8 t=0;         
  19. float speed;

  20. int main(void)
  21. {               
  22.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
  23.   
  24.         delay_init();                     //延时函数初始化         
  25.         KEY_Init();                  //初始化与按键连接的硬件接口
  26.         OLED_Init();
  27.         uart_init(9600);                    //=====串口初始化
  28.   Encoder_Init_TIM2();            //=====编码器接口
  29.       
  30.         TIM3_Int_Init(99,7199);          //10ms
  31.       
  32.         IN2=1;
  33.   IN1=0;
  34.       

  35.         LED_Init();                          //初始化与LED连接的硬件接口
  36.       
  37.         TIM1_PWM_Init(7199,0);//不分频。PWM频率=72000/(899+1)=80Khz

  38.     while(1)
  39.            {
  40.                         
  41.                          speed = Encoder*100/4/13/30;           
  42.                          printf("speed:%0.2f rad/s\r\n",speed); //x100/4/13/30 //13线  30减速比  4分频
  43.                         
  44.                          OLED_ShowString(0,0,"speed:",16);
  45.                    OLED_ShowNum( 16,0,speed,3,16);
  46.                    OLED_ShowString(48,0,"rad/s",16);
  47.                    OLED_Refresh_Gram();//更新显示到OLED                          
  48.                         
  49.                        
  50.                         t=KEY_Scan(0);                //得到键值
  51.                         switch(t)
  52.                         {                                 
  53.                                 case KEY0_PRES:  Target_velocity++;  break;
  54.                                 case KEY1_PRES:  Target_velocity--;  break;
  55.                                 default:                        delay_ms(10);      
  56.                         }                        
  57.                 }
  58. }                 
复制代码


回复

使用道具 举报

ID:1 发表于 2021-1-9 15:37 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

ID:877505 发表于 2021-1-14 14:38 | 显示全部楼层
这个就有点和标题不符合了吧,就一个主函数,什么算法,电路图都没有

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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