51单片机智能小车pwm调速设计 |
您所在的位置:网站首页 › 51单片机智能小车调速 › 51单片机智能小车pwm调速设计 |
本文目录一览: 1、智能小车如何实现PWM调速? 2、我用51单片机做个智能小车四驱的!想要实现差速转向,怎么做!要pwm控制!需要几个定时器!一个可以 3、51单片机实现pwm对电机调速 4、单片机实现pwm控制 5、51单片机小车速度控制 6、用51单片机用PWM调速C语言程序怎么写····· 智能小车如何实现PWM调速?不需要单独的 PWM模块,仅靠单片机和电机驱动(L298N)足够了。 具体是在程序中用单片机的IO口模拟出PWM信号来,也就是控制IO口输出的高低电平的时间,利用不同时间实现不同占空比,继而控制驱动电路,改变电机的转速。 我用51单片机做个智能小车四驱的!想要实现差速转向,怎么做!要pwm控制!需要几个定时器!一个可以电子差速从几年前就有人投入了研究,分主动差速和被动差速。被动差速是控制两个电机严格的按照等转矩或等功率运转,主动差速是根据要求控制两个电机按一定的差速比闭环调速运转。 51系列单片机指令周期太长,不适合做电机驱动,无法实现电子差速的要求,建议使用性能更好单片机来完成,比如dsPIC,STM32,AVR系列等。 51单片机实现pwm对电机调速可以用一个定时器实现,也可以用两个定时器实现 一个定时器实现办法,如定时器定时50US中断一次,中断100次是5ms,即PWM的周期 每次中断,变量a加1,并且a与另一变量b比较,如果ab,让某一管脚输出高电平,如果a=b,则让其输出低电平,a等于100时清0,这样占空比是b/100,改变b的值,就可以改变占空比 缺点定时器定时时间不能太短,例如10us中断程序根本执行不完,若占空比调节精度要求较高,如要求百分之一,则a需大于100,这样PWM波的周期就比较大,频率比较低 两个定时器,如一个定时器0定时100us,另外一个定时器1定时小于100us,如b us 定时器0中断时输出高电平,并打开定时器1,定时器1负责置低电平 这样,就可以产生周期100us,占空比是b/100的方波 频率可以比用一个定时器高一些 单片机实现pwm控制/*********************************************************/ // 定时器0中断服务程序. /*********************************************************/ void timer0() interrupt 1 { //本中断函数,每隔1ms执行一次. //每次执行,都是使P0从此刻输出0. //并且令T1从此刻开始定时. //T1定时时间是:"PWM"us,即2~255us. TR1 = 0; TH0 = 0xfc; TL0 = 0x66; TH1 = PWM; TR1 = 1; P0 = 0x00; //启动输出 } /*********************************************************/ // 定时器1中断服务程序 /*********************************************************/ void timer1() interrupt 3 { //本中断函数,每隔2~255us执行一次. //本中断函数在1ms期间,只会执行一次. //本函数一旦执行,就是使P0从此刻输出1. TR1 = 0; P0 = 0xff; //结束输出 } //程序在P0口输出8路相同的PWM脉冲波形, //周期为1ms,低电平的持续时间为2~255us。 //在主函数里面,利用按键修改PWM的数值2~255,并且发音。 51单片机小车速度控制你好! 1、建议采用PWM控制小车速度以及启停等 2、可以增加无线部分,传输PWM控制指令 3、电机驱动,可以采用L298模块 4、具体小车实物和程序,都能完成 给个我自己写的程序你,我试过了,通过! #include #define uchar unsigned char #define uint unsigned int sbit P0_0=P0^0; uchar a; /********************************************* * TH0和TL0是计数器0的高8位和低8位计数器, * 计算办法:TL0=(65536-C)%256; * TH0=(65536-C)/256, * 其中C为所要计数的次数即多长时间产生一次中断; * TMOD是计数器工作模式选择,0X01表示选用模式1, * 它有16位计数器,最大计数脉冲为65536,最长时间 * 为1ms*65536=65.536ms * *********************************************/ void init_sys(void); /*系统初始化函数*/ void main (void) { init_sys(); while(1); } void init_sys(void) { TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1; } void timer0(void) interrupt 1 { TH0=(65536-100)/256; TL0=(65536-100)%256; a++; if(a=3) { P0_0=1; if(a==3) //改变低电平持续时间 { //也即改变占空比 P0_0=~P0_0; } } else { P0_0=0; if(a==5) //改变周期 { a=0; } } } 标签: 51单片机智能小车pwm调速设计 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |