1、所谓的PWM就是高低变化的方波,单片机可以实现,建议选择有PWM功能的单片机;
2、精度不高的话,可以用简单一点的码盘来测速,直接计数就行;精度高的话,可以用编码器,推荐Avagotech的HEDS9710系列编码器;
3、单片机可以设定为在没有发生中断时读取键盘;若正在读取键盘时产生了中断,则保存当前状态,执行中断,之后再继续读取键盘。所以不会影响PWM信号的。这个要在程序里注意的,比如读键盘的时候不能关闭中断,否则就不能产生PWM信号了。
可以产生pwm的芯片多着呢,你问的只是产生,可没叙述清楚要以何种方式产生?你要实现的是单片机控制直流电机,也就是软件控制占空比,鉴于你是新手,扩展外部芯片的方式产生pwm的方法不推荐。你还是用定时中断吧(大系统中这种方法却是错误的,因为,定时器是宝贵的资源,决不能独占),估计你也不了解定时器的工作原理,它和cpu是独立运行的,你用定时中断的方式,且把优先级提为最高,pwm信号是不会被打断的,而占空比在中断服务程序里设置。不过我觉得还是用自带pwm模块的单片机更有优势,不管从硬件成本和软件开销上来说,最后,建议你做设计之前把单片机原理弄懂,要不然寸步难行。
PWM用定时器产生就可以,要用中断功能,这样就不会与键盘冲突了。
转速检测可以用霍尔、光电或者旋转编码器,我在另一个回答中已经讲过了。
如果只是做试验,简单省事的办法是拆一个老式的机械鼠标,用其中的光电检测器件以及光栅轮自己改装。
很多单片机有PWM功能的,不用买专用的芯片,直流机没有必要用速度传感器,因为那样你还得编码送给CPU作为反馈,建议你用一款有AD采集和PWM功能的单片机,直接用电压反馈,我们以前做空调的时候鼓风机就是怎么调速的,用定时器的话里使用的 一定是中断,比普通IO高一点,可以的。也就是按键即使按下去了,当他没有中断的官大,所以,想处理中断的事(就是发占空比了)。
对于没有PWM的单片机可以用定时器产生PWM,或者直接用友PWM输出的单片机如MEGA8/16等;用555定时器也可以产生PWM,调节充放电电阻调整PWM;电机常用的传感器是霍尔传感器,有型号如:CS3144,CS3503,CS277,CS3020等;
用定时器产生PWM不会因键盘扫描影响,其优先级比键盘扫描高。