自制航模电调程序设计与AVR单片机应用

5星 · 超过95%的资源 需积分: 50 78 下载量 184 浏览量 更新于2024-09-16 5 收藏 1.42MB DOC 举报
本文档主要涉及的是一个自制的无刷电机控制器(电调)的程序设计,使用了AVR系列的单片机ATMEGA8,并以C语言编写。作者Holger Buss在2007年创建此程序,仅供个人使用,不提供商业授权。程序包括对电机转速、电流等参数的监控和控制,以及换向延时、I2C通信超时等相关功能。 电调程序设计的关键知识点: 1. **单片机编程**:该程序基于ATMEGA8单片机,这是一种常见的8位微控制器,由Atmel公司生产。它具有内置闪存、SRAM和EEPROM,以及多种外设接口,常用于嵌入式系统。 2. **C语言**:程序采用C语言编写,C语言是一种广泛应用的编程语言,适合编写系统级软件,因其高效性和灵活性,常用于嵌入式系统的开发。 3. **电机控制**:电调的核心任务是控制无刷电机的运行。通过调整输出的脉宽调制(PWM)信号来改变电机的转速和扭矩。 4. **PWM(脉宽调制)**:PWM是控制电机转速的关键技术,通过改变信号的占空比来调整电机的平均功率。 5. **电流检测**:程序中定义了变量`Strom`用于监测电机电流,这对于保护电机和电池、防止过载至关重要。 6. **换向延迟**:`KommutierDelay`变量表示电机换向时的延时,这是为了避免在换向过程中产生瞬间短路。 7. **I2C通信**:I2C(Timeout)可能涉及到与其他设备如传感器或显示器的通信,I2C是一种多主设备总线协议,允许设备间低速通信。 8. **串口通信(Serial I/O)**:`SIO_Timeout`和`SIO_Drehzahl`与串行输入/输出有关,可能用于调试或数据传输。 9. **转速表**:`DrehZahlTabelle`是一个预计算的转速表,用于快速获取特定转速对应的PWM值。 10. **电机状态管理**:`MotorAnwerfen`和`MotorGestoppt`变量分别表示电机启动和停止的状态,用于控制电机的启停过程。 11. **计数器**:`CntKommutierungen`用于记录电机换向次数,这可以作为评估电机运行状况的一个指标。 12. **AD转换**:`ZeitZumAdWandeln`可能指的是进行模拟到数字转换所需的时间,这通常用于将来自传感器的模拟信号转化为数字信号,以便单片机处理。 这个程序展示了自制电调的基本框架,包括电机控制策略、故障保护机制以及与其他设备的通信接口。对于学习和理解嵌入式系统以及电机控制的初学者来说,这是一个很好的实例。