单片机控制多路舵机
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ms,在每2.5ms的时间间隔内实现对3个 (20/8)舵机的控制。
注:需控制多少舵机
• 具体实现: 参 见 程 序!
Thanks !
• 需求分析: 1,由于需控制的舵机数量多,用单片机 自带的PWM口(4个)远远不够,需用普 通I/O口通过TIMER定时来生PWM来驱 动舵机。
Demo板上控制舵机的I/O口: PD4~PD7 , PC0~PC7, PA0~PA3 , PB0~PB3
2,控制舵机的PWM的周期为20ms,脉冲 宽度为0.5~2.5ms,舵机的转动范围是 180度,则2ms控制180度。假设控制精 度要达到1度,那么控制上要区分的最 小时间间隔为:2ms / 180 ,约为0.01ms 即控制精度要达到100KHz。
单片机程序的编写 ——以多路舵机控制为例
一,单片机编程相关硬件知识
单片机 = CPU(核) + 存储器 + 外围接口部件
PC = CPU + 存储器 +接口及扩展插槽
不同之处: PC运算能力强,通用,价格高,用作嵌 入式不如单片机划算。
相同之处:单片机即是PC的精简版,只不过具体实 现功能有所不同。
百度文库
3,单片机资源问题: 由上可知,由于舵机信号必须一直提
供,控制20路舵机就需要占用很大的系统 资源。战场队至少要留出部分资源给无线 串口,剧场队还需要在这块单片机上完成 其他动作。可见单片机资源还是比较紧张 的。 经验:资源还好,足够用了!
• 具体实现:
?
答案:方 法 有 很 多 种
• 提供的参考方法: 把20ms平分为8个时间间隔,每个2.5
• 基于CodeVision程序的编写
• 基于WinAVR 程序的编写
• 烧写器的使用 推荐:双龙SLISP SLISP.bmp 并口烧写器 优点:SLISP通用,烧写器简单,成本 低,稳定性好
注意:熔丝位的配置
• 刚安装时
• 改为:
三,实例——多路舵机控制
• 开发平台: 软件:WinAVR-20080512 烧写:SLISP 硬件:校对提供的demo板----Mega16 烧写:并口烧写器
• AVR的功能部件:(以Mega16为例) I/O端口:PORTA~PORTD,4×8=32端口 TIMER: TIMER0~TIMER2 UART : 1个 SPI : 1个 外部中断:INT0~INT2 PWM: 4个(OC0,OC1A,OC1B,OC2)
二,单片机编程软件环境
三种IDE(集成开发环境) • 基于ICC 程序的编写
• 用C语言编写单片机程序时,CPU及存储器 对于用户来说都是透明的,即用户不需要知 道它们是如何工作的。
• 所以,如何用好单片机,写好控制程序, 除了大家学习的一些基本的C语言编写知识 和技巧外,主要就是如何充分合理的对单片 机外围功能部件的利用。
注:汇编编程时需要对cpu和存储器知识有所了解。
!! 单片机编程入门主要就是对外围功能部件 的使用。
外围功能部件使用: 掌握外围功能部件的工作原理; 设置相应的寄存器 如 OCR1 = 0x12;
单片机常用的外围部件有:
普通I/O端口; TIMER (定时器/计数器); UART(异步串行口); SPI (同步串行口); 中断 ;
PWM
其他的还有:ADC,IIC,CCP,JTAG等。 注:引脚复用概念
注:需控制多少舵机
• 具体实现: 参 见 程 序!
Thanks !
• 需求分析: 1,由于需控制的舵机数量多,用单片机 自带的PWM口(4个)远远不够,需用普 通I/O口通过TIMER定时来生PWM来驱 动舵机。
Demo板上控制舵机的I/O口: PD4~PD7 , PC0~PC7, PA0~PA3 , PB0~PB3
2,控制舵机的PWM的周期为20ms,脉冲 宽度为0.5~2.5ms,舵机的转动范围是 180度,则2ms控制180度。假设控制精 度要达到1度,那么控制上要区分的最 小时间间隔为:2ms / 180 ,约为0.01ms 即控制精度要达到100KHz。
单片机程序的编写 ——以多路舵机控制为例
一,单片机编程相关硬件知识
单片机 = CPU(核) + 存储器 + 外围接口部件
PC = CPU + 存储器 +接口及扩展插槽
不同之处: PC运算能力强,通用,价格高,用作嵌 入式不如单片机划算。
相同之处:单片机即是PC的精简版,只不过具体实 现功能有所不同。
百度文库
3,单片机资源问题: 由上可知,由于舵机信号必须一直提
供,控制20路舵机就需要占用很大的系统 资源。战场队至少要留出部分资源给无线 串口,剧场队还需要在这块单片机上完成 其他动作。可见单片机资源还是比较紧张 的。 经验:资源还好,足够用了!
• 具体实现:
?
答案:方 法 有 很 多 种
• 提供的参考方法: 把20ms平分为8个时间间隔,每个2.5
• 基于CodeVision程序的编写
• 基于WinAVR 程序的编写
• 烧写器的使用 推荐:双龙SLISP SLISP.bmp 并口烧写器 优点:SLISP通用,烧写器简单,成本 低,稳定性好
注意:熔丝位的配置
• 刚安装时
• 改为:
三,实例——多路舵机控制
• 开发平台: 软件:WinAVR-20080512 烧写:SLISP 硬件:校对提供的demo板----Mega16 烧写:并口烧写器
• AVR的功能部件:(以Mega16为例) I/O端口:PORTA~PORTD,4×8=32端口 TIMER: TIMER0~TIMER2 UART : 1个 SPI : 1个 外部中断:INT0~INT2 PWM: 4个(OC0,OC1A,OC1B,OC2)
二,单片机编程软件环境
三种IDE(集成开发环境) • 基于ICC 程序的编写
• 用C语言编写单片机程序时,CPU及存储器 对于用户来说都是透明的,即用户不需要知 道它们是如何工作的。
• 所以,如何用好单片机,写好控制程序, 除了大家学习的一些基本的C语言编写知识 和技巧外,主要就是如何充分合理的对单片 机外围功能部件的利用。
注:汇编编程时需要对cpu和存储器知识有所了解。
!! 单片机编程入门主要就是对外围功能部件 的使用。
外围功能部件使用: 掌握外围功能部件的工作原理; 设置相应的寄存器 如 OCR1 = 0x12;
单片机常用的外围部件有:
普通I/O端口; TIMER (定时器/计数器); UART(异步串行口); SPI (同步串行口); 中断 ;
PWM
其他的还有:ADC,IIC,CCP,JTAG等。 注:引脚复用概念