英语原文共 18 页
外文翻译
使用PIC单片机进行DMX512通信
作者:pathiv pandya
简介
DMX512是一种通信协议,用于大多数专业剧院照明组件,如调光器、扫描仪、移动灯、频闪灯等。本应用程序说明提供了一个发送和接收DMX512通信协议的解决方案,该协议可以使用任何PIC单片机提供的通用异步接收器发射器(UART)模块来实现。特别地,在本应用程序说明提供的代码示例中使用了PIC18F24J10,这是一种通用的设备。它提供1024字节的数据内存,这允许演示代码为整个512通道缓冲区存储数据(尽管这对于典型的应用程序不是必需的)。只需一个外部RS- 485兼容的收发器就可以完成应用程序的原理图。DMX解决方案由两部分提供:
1.DXM512 发送器
这一部分将解释如何生成和传输dmx512数据包。这分为两部分:
- 如何生成和传输DMX512数据包
(b) 演示了一个如何将命令发送到DMX512灯调光接收机的程序。
- 这一部分将解释如何接收dmx512数据包。它又分为两小部分:
(a)如何接收数据
(b)展示了一个能将接收到的数据发送到PWM模块控制LED的亮度的程序
背景
在过去,可变的自动变换器被用来控制剧院舞台灯光。这就需要舞台周围的电线为灯具供电,整个团队需要手动控制变压器。之后,电动马达被连接到自动变压器上,这样控制起来就不那么麻烦了。最终,模拟控制取代了自动变压器,变得非常流行,尤其是0-10V模拟控制台。尽管如此,这一制度仍存在三大缺陷:
1. 它容易产生噪音。
2. 调光可能是非线性的,这取决于不同类型的灯。
3.每个灯都需要单独的控制导线。
随着计算机技术的成本效益的提高,新的数字控制器进入了市场,同时也需要一种新的标准来允许来自不同制造商的设备进行互操作。
美国剧场技术协会USITT于1986年首先开发了DMX512协议,作为调光器和控制台之间的标准数字接口,后来在1990年进行了扩展和改进。目前的版本,即DMX512-A,也被美国国家标准协会(ANSI)作为标准(E1.11)采用。DMX512 - A的开发目前由娱乐服务和技术协会(ESTA)管理。
DMX512协议的剖析
DMX512(数字多路复用的缩写)非常简单,成本低,而且相对简单,由于这些优点,DMX512得到了广泛的欢迎。顾名思义,它可以支持512个独立的控制通道/设备。它是一种单向异步串行传输协议,不提供收发之间的任何形式的握手,也不提供任何形式的错误检查或纠正机制。因此,它不适合任何安全要求严格场合的应用。数据以250k波特率传输,使用与RS-485传输标准兼容的物理接口,通过两根电线和地面传输。
DMX512系统只有一个发射机和多个接收器。DMX512发射机通过XLR 5引脚或XLR 3引脚连接器连接DMX512接收机。母连接器连接到发送器和接收器上的公连接器。该规范规定应使用两对屏蔽电缆。
然而,第二根电缆的使用是可选的。表1显示了使用XLR 5-引脚连接器时的物理输出。
表1:XLR 5-引脚 连接器
注意:XLR连接器通常用于专业的音频、视频和照明应用程序。连接器具有坚固外壳和锁定机构。
每个DMX512发射机发送512个8位调光值,在0到255之间,其中0表示关灯,255表示最大强度。
连接到DMX512线路的每个接收器可以选择512通道(地址选择)中的一个来控制其输出灯(负载)。
DMX512协议要求发射机连续重复(至少每秒一次)帧的传输,如图1和表2中的时序图所示。
图 1 DMX512时序图
表 2 DMX512时序表
DMX512发送器
为了生成DMX512数据包,软件解决方案使用了一个简单的状态机,由四种状态组成:
- SENDMBB—DMX数据线为空闲
- SENDDATA—DMX帧的0到511的字节
- SENDMAB—DMX数据线为空闲
- SENDBREAK—DMX数据线被置低
图2 发送机状态机
- 图2显示了状态机。在这个应用程序中,为了简化代码并保持在时间限制内,SENDBREAK、SENDMAB和SENDMBB的时间间隔都设置为100 u秒。如果需要,可以轻松更改这些时间间隔。定时器O模块用于控制100u秒的定时和传输字节之间的间隔。
图2展示了状态机。在这个应用程序中,
为了简化代码并保持在时间限制内,SE
NDBREAK、SENDMAB和SENDMB
B的时间间隔都设置为100 us。如果
需要,可以轻松更改这些时间间隔。定
时器O模块用于控制100us的定时和
传输字节之间的间隔。
示例1:DMX512发送机状态机制代码
示例1显示了实现状态机的DMX传输子例程的概要。
DMX传输子程序是为在协同多任务应用程序中使用而设计的。为了避免任何计时问题,应该足够频繁地从主程序循环调用状态机(大约每40个uu或更少)。DmxTx状态变量用于表示当前状态,并作为跳转表中的off集来访问状态机子例程中的相应代码段。
产生中断信号
中断信号允许接收器与DMX发射器同步识别新数据包的开始。大多数PIC18微控制器上都有EUSART模块,它可以自动生成12位长中断信号,相当于250k波特下的48 uS。不幸的是,这对于DMX512应用程序来说太短了,因为协议要求最小长度为92 uS。图3显示了在这个应用程序注释中选择的用于生成更长的中断信号的替代本机硬件方法。1002电阻与单片机的传输引脚和电阻的另一端串联到I/O引脚上。在具体的例子中,使用了RC5引脚。通过该方案,可以在软件中改变中断时间,从92 uSec到176 uS,以满足DMX协议中断时间规范,在发送中断信号时,pin RC5被置低。而后的引脚RC5是三态的,允许从EUSART恢复传输。
图3: 产生一个长中断信号发送调光数据
调光数据为8位宽,其中0代表灯灭,255代表全强度。图4显示了调光数据的数字表示。为了生成DMX512协议所需的两个停止位,PIC18 EUSART被配置为9位模式,gth位被永久设置为“1”。
图4: 调光数据的数字表示
调光数据存储在一个512字节的缓冲区(T缓冲区)中,该缓冲区在PIC18F24J10 RAM内存中分配。使用PIC18单片机架构中用于线性内存访问的间接寻址寄存器将数据写入或从缓冲区读取。计数器跟踪从缓冲区传输的字节串的数量。
注意: 尽管演示代码存储并传输所有512通道的调光数据,但是可以很容易地将其修改为只存储和传输通道的一个子集,同时关闭所有其余通道(0)。这可以大大降低功能变送器对单片机RAM的要求。
发射机应用演示:调光灯
在上一节中,我们看到使用PIC18F设备很容易生成DMX512包。在这个演示应用程序中,我们将使用一个连接到DMX512发射器的电位器来远程控制一个连接到标准DMX512接收器的灯。
PIC18F24J10有一个10位模数转换器模块,有13个输入。电位器可以连接到单片机的 RAO上,对应于模拟输入通道0。
由于电位计不会很快改变,每10毫秒取样一次就足够了。为了自动和周期性地激活模数转换器,可以使用PIC18F24J10单片机的一个方便的功能。实际上,ADC模块可以由捕捉比较和PWM模块(CCP)
触发形成周期性的转换。
图5: DMX512发射机电路原理图
在连接中使用16位Timer1模块,CCP模块配置为1个6位比较模式。当比较触发器发生时(Timer1 =CCPR1), ADC转换在预先选择的输入通道上启动,并重置Timer1。
当ADC转换完成时,一个新的结果被加载到ADRESH寄存器中,并设置ADIF标志。
当在主回路中检测到ADIF位元时,发射机将从编码电位器位置的最重要的8位元中检索,并将其传输到与所需通道对应的传输缓冲区中。相同的通道将选择在调光接收器进行演示
DMX512 接收示例
图6: 接收一个DMX512数据包
接收DMX512数据包的问题可以分解为三部分。
1. 第一部分是接收端与新数据包开始的同步,该数据包是由线路的长时间中断条件识别的。UART报告的错误帧标志可以方便地识别这种情况。实际上,当行至中断级别时,在一个新的DMX51 2包的开始,UART最初将该条件解释为一个新数据字节的开始。但是,当起始位和另外8个数据位持续时间超过两个停止位(标记)后,该行仍然处于中断状态时,将报告一个错误帧。
由于无法预测接收器将在传输序列的哪个点被激活,在此阶段UART将在一个循环中连续轮询,以丢弃接收到的任何数据,直到检测到第一个错误帧。
2.一旦确定了中断条件,接收方需要等待该行返回空闲状态(标记),并等待第一个字节的数据到达。在此阶段,随着帧错误不断被检测,UART将被连续轮询。最后,正确接收到的第一个字节被解释为起始代码。在这个简单的应用程序中,只接收起始码为0的帧,忽略以不同起始码(DMX512扩展名)开头的帧。
- 最后一部分再次包含一个循环,其中接收方捕获最多512字节的数据,并将它们按顺序存储在接收方缓冲区中。PIC18架构中可用的12位指针用于提供对RAM内存空间的线性内存访问
接收方应用示例
在上一节中,我们了解了如何获取512通道的DMX512数据并将其存储到接收器缓冲区中。在本节中,我们将使用接收到的数据来控制PIC单片机的PWM模块。将LED连接到PWM输出引脚,我们将观察响应DMX512调光命令的LED亮度变化。
PIC18F24J10捕获比较和PWM (CCP)模块提供10位分辨率。当在PWM模式中使用时,它使用Timer2作为它的时间基,PR2寄存器确定PWM周期。由于DMX512协议仅为每个通道提供8位的分辨率,因此将PR2寄存器设置为OxFF允许我们仅使用8位最重要的位来控制占比周期,同时仍然提供大约16khz的PWM输出频率。这个值大大超过了最低要求,大约100赫兹,通常认为足以消除任何可见的闪烁的LED。
由于PWM任务周期中最重要的8位是由CCPR2L寄存器控制的,所以定期更新它就足够了,可以从接收缓冲区中复制与所需DMX512地址(由常量通道定义)对应的位置的内容。
每当收到完整的DMX512帧时,都会更新CCPR2L寄存器。
图7: DMX512接收电路原理图
在原理图中,EUSART接收引脚连接到RS- 485收发机的接收输出引脚。在DMX-和DMX 数据链路之间应连接120,frac14;W电阻作为线路终止器。图7显示了XLR-3连接器引脚2 (DMX- data link)和引脚3 (DMX data link)之间的行结束符。适当的终止大大减少了信号传输的问题。
测试设置
为了测试DMX512发射器和接收器,使用了一对单独的PICDEMTM 2 PLUS演示板。PICDEM 2 PLUS可用于演示18、28和40引脚PIC16和PIC18设备的能力。该板有一个小的原型区,其中可以建立发射机和接收机收发电路。
为了利用板上可用的(4)led进行接收器演示,PIC18F24J10 CCP2模块的输出可以通过修改单片机非易失性配置寄存器CONFIG3H“CCP2 MUX”位重新定向到PORTB输出至RB3引脚。
中断
所提供的发送方和接收方示例代码使用轮询方法发送和接收DMX512数据包。CPU等待计时器过期以生成标记和中断信号,或者等待EUSART传输或接收数据。为了减少CPU轮询时间,可以使用中断编写提供的代码。
总结
本应用程序说明提供了一个非常简单的软件解决方案,使用一个低成本的单片机生成,传输和接收dmx512信号。
使用FPGA和XILKernel设计嵌入式DMX512控制器
由于LED技术的发展,光和色的创造发展迅速。这项技术使我们能够用LED创造出各种颜色。LED寿命也比旧技术长。因此,现代建筑增加了LED装饰性照明的使用,通常以条形灯、泛光灯、手电筒和文本显示的形式出现。这些灯的显示模式和运动由DMX控制器控制。DMX控制器可以是PC或单片机(MCU),用于存储和向设备发送控制数据。使用PC作为DMX控制器可以实现多通道控制,但功耗和成本较高。单片机具有较低的功耗和成本,但用于控制多个DMX通道的时延较长,因为一次只能向一个通道发送数据。单片
资料编号:[3827]
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。