登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[学习笔记] PWM控制智能车电机转速

[复制链接]
发表于 2019-2-6 23:03:49 | 显示全部楼层 |阅读模式
学习笔记
学习科目: PWM控制智能车电机转速
学习安排: 先掌握有关PWM的知识,结合电路图,尝试写程序,调试程序,验证结果。
开始时间: 2019-02-04
结束时间: 2019-02-06

#include<reg52.h>//用的是stc89c52单片机

sbit IN0 = P1^0;//定义电机引脚
sbit IN1 = P1^1;//定义电机引脚
sbit Rightpwm=P0^0;//电机使能引脚
bit Right_moto_stop=1;//开关

#define Rightgo {IN0=1,IN1=0;}//小车前进封装
#define PWMSD     9//PWM调速值


unsigned char count=0;//频率计数器
unsigned char push_val_left = 0;
unsigned char pwm_val_left = 0;

void main()
{
        TMOD = 0x11;//定时器1和0同时为模式1
        TH0 = 0xFC;
        TL0 = 0x18;
        TR0 = 1;
        ET0 = 1;
        EA = 1;//开总中断
        TH1 = 0xFF;
        TL1 = 0xA3;
        ET1 = 1;
        TR1 = 1;
        while(1)
        {
                Rightgo;//小车前进函数
                push_val_left=PWMSD;//小车速度选择
        }
}       
void pwm_out_moto()//PWM调速函数
{
        if(Right_moto_stop)
        {
                if(pwm_val_left<=push_val_left)
                {
                        Rightpwm=1;
                }       
                else
                {
                        Rightpwm=0;
                }
                if(pwm_val_left>=20)
                {
                        pwm_val_left=0;
                }       
        }
        else
  {
                 Rightpwm=0;
  }       
               
}       
void InterruptTimer0() interrupt 1 //定时器0中断服务函数  用于占空比
{
        TH0 = 0xFC;
        TL0 = 0x18;
        pwm_val_left++;
        pwm_out_moto();
}       
void InterruptTimer1() interrupt 3//定时器1中断服务函数   用于频率
{
        TH1 = 0xFF;
        TL1 = 0xA3;
        count= (count+1);
        count=(count%40);
}
不知道怎么回事,自己拍的照片上传不了,所以就只看程序吧,主要是分享一下思路,
大致思路就是用2个定时器,一个定时器负责频率,一个定时器负责产生占空比,来产生PWM方波,定义好电机引脚,PWM引脚输出高电平和低电平的时间总和为周期值。
还有一个就是好好利用百度。       
小车程序是自己写的(刚学的),所以难免有不足之处,还请有经验的大佬斧正。
好懒~~不想说~~~
发表于 2019-2-17 23:40:31 | 显示全部楼层
为什么又要调频率又要调占空比?正常情况下,设定好定时器频率,然后调占空比就好了嘛~
Carpe.Diem.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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