智能小车49:atmel328p的pwm调速试验

智能小车的变速怎么实现?arduino uno的芯片atmel328p的引脚可以配置pwm功能。简单来说,pwm能调整电流的大小,通过对电流的控制实现电机的变速,也可实现led不同频率的闪烁。

先看下arduino uno的pwm引脚,如下图有六个引脚标有“~”,表示它们可以配置pwm。

为什么是3、5、6、9、10、11这6个?先在印制板图里找到这6个引脚的名称分别为:IO3,IO5,IO6,IO9,SS,MOSI。注意在EAGLE7.3.0这个软件中查看印制板图的方法是先在引脚上右键选择name菜单,名称就会弹出来,再左键选下一个引脚,名称就会自动弹出来了。

我们再打开原理图,看看这6个名称对应了atmel328p的那些引脚。如下图,我已经在图里标出了这6个引脚名:

最后再打开atmel328p的数据手册,查看引脚图,找到这6个引脚(PB3,PB2,PB1,PD6,PD5,PD3)。

在atmel328p数据手册中可以查到计数器有几种模式,如下图,快速pwm模式与相位修正模式。而这两者的区别主要在频率(led闪烁的快慢)与输出大小(led亮的时间)上。寄存器设置不同比较模式,会产生不同的波形,波形决定led的闪烁频率,每次亮的时间。

我还是用《avr单片机入门与速成攻略》上面的例子来调试程序和搭建硬件。由于我用的atmel328p与书上的芯片不一样,所以还是有很多不同的设置的。但主要思路还是用开关来设置OCR0A寄存器,用数码管来显示它的值,从PD6(OC0A)引脚连接led的正极。开关的分别连接PD0、PD1代表加数字与减数字。

代码如下:

实物图如下:

文/中中 浏览次数:0次   2017-12-11 14:28:46

相关阅读


评论: