使用PIC®单片机进行DMX512通信外文翻译资料

 2022-10-28 16:14:00

英语原文共 18 页,剩余内容已隐藏,支付完成后下载完整资料


使用PICreg;单片机进行DMX512通信

作者:Parthiv Pandya 微芯科技

介绍

DMX512是在大多数专业剧场照明组件中使用的通信协议,例如调光器,扫描仪,移动灯,闪光灯等。本应用笔记(操作说明书)介绍了发送和接收DMX512通信协议的解决方案,该通信协议可以使用提供通用异步收发器(UART)模块的任何PICreg;单片机实现。 特别地,PIC18F24J10是通用器件,用于本应用笔记提供的代码示例。它提供1024字节的数据存储器,允许演示代码存储整个512通道缓冲区的数据(虽然这对于典型应用不是必需的)。只需要一个外部RS-485兼容收发器来完成应用原理图。

DMX解决方案分为两部分:

1.DMX512发射器:

这部分将解释如何生成和传输DMX512数据包。这部分分为两个小节:

(a)如何生成和传输DMX512数据包

(b)一个演示如何向DMX512调光接收器发送命令的演示程序。

2. DMX512接收器:

这部分将解释如何接收DMX512数据包。 再次,它被分为两个小节:

(a)如何接收数据

(b)一个将接收的数据发送到PWM模块以控制LED的亮度的演示程序。

背景

在过去,可变自动变压器被用于控制剧院舞台灯。这需要在舞台周围长的电线给灯供电,整个团队需要通过手动来控制变压器。后来,电动机被连接到自动变压器,这使得控制变得更加麻烦。最终,模拟控制采取了地方的自动变压器,变得相当受欢迎,特别是0-10V模拟调音台。然而,这个系统有三个主要缺点:

它容易产生噪音。根据不同种类的灯,调光可以是非线性的。每个灯需要单独的控制线。

随着计算机技术变得更具成本效益,新的数字调音台进入市场,并且需要一个新的标准,以允许来自不同制造商的设备进行互操作。

美国戏剧技术研究所USITT于1986年首先开发了DMX512协议作为调光器和控制器之间的标准数字接口,后来在1990年又进行了扩展和改进。目前的版本DMX512-A被采纳为美国国家标准协会(ANSI)标准(E1.11)。 DMX512-A的开发目前由娱乐服务和技术协会(ESTA)管理。您可以从www.esta.org网站或www.ansi.org网站获取(购买)协议规范的副本。

DMX512协议的结论

DMX512(Digital MultipleX的首字母缩写),极其简单,成本低且相对稳健。由于这些优点,DMX512获得了巨大的人气。顾名思义,它可以支持多达512个独立的控制通道/设备。它是单向异步串行传输协议,其不提供接收器和发射器之间的任何形式的交互,也不提供任何形式的错误检查或校正机制。因此,它不适合于任何安全关键应用。它使用与RS-485传输标准兼容的物理接口通过两根导线和地线以250k波特率传输数据。

DMX512系统只有一个发射器和多个接收器。DMX512发射器通过XLR 5针或XLR 3针连接器连接到DMX512接收器。母连接器连接到接收器上的发射器和公共连接器。规范规定应使用2对屏蔽电缆。然而,使用第二电缆是可选的。表1示出了当使用XLR 5针连接器时的物理引脚分配。

表1:XLR 5针连接器

注意:XLR连接器通常用于专业音频,视频和照明应用。 连接器具有坚固的外壳和锁定机构。

每个DMX512发送器发送512个8位调光值,在0和255之间,其中0表示熄灭,255表示最大强度。

连接到DMX512线路的每个接收器可以选择512个通道之一(地址选择)来控制其输出灯(负载)。

DMX512协议要求发送器连续重复(至少每秒一次)帧的传输,如图1和表2中的时序图所示。

图1:DMX512时序图 表2:DMX512时序值

为了生成DMX512包,软件解决方案采用一个简单的状态机,包括四个状态:

1. SENDMBB - DMX数据线为空闲

2. SENDDATA - DMX帧的字节0到511

3. SENDMAB - DMX数据线为空闲

4. SENDBREAK - DMX数据线驱动为低电平

图2:发射机状态机

图2显示了状态机。 在本应用中,为了简化代码并仍保留在时序约束内,SENDBREAK,SENDMAB和SENDMBB间隔均设置为100mu;Sec。 如果需要,这些时间可以容易地改变。 Timer0模块用于控制100mu;Sec时序和传输字节之间的间隔。

示例1显示了实现状态机的DMXTransmit子例程的概要。

DMXTransmit子程序设计用于协作多任务应用程序。 为了避免任何时序问题,应该从主程序循环中频繁地调用状态机(大约每40mu;s或更少)。 DmxTxState变量用于表示当前状态和跳转表中的偏移量,以访问状态机子例程中的相应代码段。

示例1:DMX512发射机状态机代码

中断信号允许接收器与识别新数据分组的开始的DMX发射器同步。大多数PIC18单片机上可用的EUSART模块能够自动生成12位长的Break信号,对应于250 k波特的48mu;s。不幸的是,这相对于在DMX512的应用中太短,因为协议需要92mu;Sec的最小长度。 图3显示了本应用笔记中选择的用于生成较长Break信号的替代硬件方法。100Omega;电阻与微控制器的EUSART传输引脚串联,电阻的另一端连接到I / O引脚。 在具体示例中,使用引脚RC5。 通过该解决方案,可以在软件中改变断开时间,从92mu;Sec到176mu;Sec以满足DMX协议中断时间规范,发送断开信号时,引脚RC5被驱动为低电平。 后来引脚RC5是三态的,允许从EUSART传输恢复。

图3:产生一个长的断开信号

发送DIMMING数据

调光数据是8位宽,其中0表示熄灭,255表示完全强度。 图4示出了调光数据的数字表示。 要生成DMX512协议所需的两个停止位,PIC18 EUSART配置为9位模式,第9位永久设置为1。

图4:数字数据显示

调光数据存储在512字节缓冲区(TxBuffer)中,分配在PIC18F24J10 RAM存储器中。使用PIC18单片机架构上的间接寻址寄存器对线性存储器访问,可以将数据写入缓冲器或从缓冲器读取数据。 计数器跟踪从缓冲器发送的字节数。

注意:虽然演示代码存储和传输所有512个通道的调光数据,但是可以轻松地修改它来存储和传输仅一个通道子集,而剩余的所有通道关闭(0)。 这可以显着降低用于减少功能的发射机的MCU RAM要求。

发射器应用演示:调试灯泡

在上一节中,我们看到使用PIC18F器件生成DMX512数据包非常容易。 在本演示应用中,我们将使用连接到DMX512变送器的电位器远程控制连接到标准DMX512接收器的灯。

PIC18F24J10具有带13个输入的10位模数转换器模块。 电位器可以连接到对应于模拟输入通道0的MCU的引脚RA0上。

由于电位器不会快速变化,因此每10 mSec采样就足够了。为了产生模数转换器的自动和周期性激活,可以使用PIC18F24J10微控制器的一个方便的特性。事实上,ADC模块可以周期性地启动捕捉比较和PWM模块(CCP)触发的新转换。 16位Timer1模块与在16位比较模式下配置的CCP模块配合使用。当发生比较触发(Timer1 = CCPR1)时,ADC转换在预选输入通道上启动,Timer1复位。

当ADC转换完成后,新的结果将装入ADRESH寄存器,并且ADIF标志置1。

当在主环路中检测到ADIF位时,发送器将从ADRESH中检索编码电位器位置的最高有效位8位,并将它们传输到与所需通道相对应的位置的发送缓冲器。 在调光接收器处选择相同的通道进行演示。

图5:DMX512发射机电路示意图

注:有关发送器演示的完整代码列表,请参见附录A:“DMX512发送器演示”。

简单DMX512接收器

图6:接收DMX512分组

接收DMX512分组的问题可以分为三个部分。

1.第一部分是由线的延长间隔条件确定一个新的数据包的开始的接收机的同步。 此条件可以通过UART报告的帧错误标志方便地进行识别。 事实上,当线路进入断点级别时,同时在新的DMX512数据包开始时,UART最初将该条件解释为新数据字节的开始。 但是,在启动位和8个数据位的持续时间之后,而不是两个停止位(标记),线保持在间隔条件,则报告帧错误。

由于没有办法预测发送序列的哪一点,接收机将被激活,因此在该阶段期间,UART在循环中连续轮询,以丢弃接收的任何数据,直到检测到第一帧错误。

2.一旦识别出中断条件,接收器需要等待该线返回到空闲状态(标记)和到达的第一个字节的数据。 在该阶段期间,当继续检测到帧错误时,UART将连续轮询。 最终,正确接收的第一个字节被解释为开始代码。 在这个简单的应用中,只接收起始码为0的帧,忽略以不同的起始码(DMX512扩展)开始的帧。

3.最后一部分是一个循环,其中接收机捕获高达512字节的数据,并将它们顺序存储在接收缓冲区中。 在PIC18架构中提供的12位指针用于为RAM存储器空间提供线性存储器访问。

接收器应用演示

在上一节中,我们看到了如何获取512个通道的DMX512数据并将它们存储到接收器缓冲区中。在本节中,我们将使用接收的数据来控制PIC单片机的PWM模块。 将LED连接到PWM输出引脚,我们将观察LED亮度变化,以响应DMX512调光命令。

PIC18F24J10捕捉比较模块和PWM(CCP)模块提供10位分辨率。 当在PWM模式下使用时,它使用Timer2作为其时基,由PR2寄存器决定PWM周期。 由于DMX512协议为每个通道提供仅8位的分辨率,因此将PR2寄存器设置为“0xFF”允许我们只使用8个最高有效位来控制占空比,同时仍然提供大约1MHz的PWM输出频率, 最高16 kHz。 该值大大超过大约100 Hz的最低要求,通常认为足以消除LED的任何可见闪烁。

由于PWM占空比的高8位由CCPR2L寄存器控制,因此只需要周期性地更新它,即复制与接收内部所需DMX512地址(由常量CHANNEL定义)相对应的位置的内容缓冲。

在演示代码中,每次接收到完整的DMX512帧时,CCPR2L寄存器都会更新。如图7为DMX512接收机电路示意图:

图7:DMX512接收机电路示意图

注:有关接收器演示的完整代码列表,请参阅附录B:“DMX512接收器演示”。

在原理图中,EUSART接收器引脚连接到RS-485收发器的接收器输出引脚。 应在DMX-和DMX 数据链路之间连接一个120Omega;,frac14;W的电阻作为线路终端。 图7显示了XLR-3连接器的引脚2(DMX-数据链路)和引脚3(DMX 数据链路)之间的线路终端。 适当的终止大大减少了信号传输问题。

测试设置

为了测试DMX512发射器和接收器,使用了一对单独的PICDEMtrade;2 PLUS演示板。PICDEM 2 PLUS可用于演示18,28和40引脚PIC16和PIC18器件的功能。该板具有一个小型原型开发区,可以构建发送器和接收器收发器电路。

为了利用板上的(4)LED用于接收器演示,PIC18F24J10 CCP2模块的输出可以通过修改微控制器非易失性配置寄存器CONFIG3H“CCP2 MUX”位重定向到PORTB输出引脚RB3。

打断

所提供的发射机和接收机演示代码使用轮询方法来发送和接收DMX512分组。 CPU正在等待定时器到期以生成标记和断点信号,或者等待EUSART发送或接收数据。 为了减少CPU轮询时间,可以使用中断写入提供的代码。

结论

本应用笔记提供了一个非常简单的软件解决方案,使用低成本MCU生成,发送和接收DMX512信号。

参考文献

1. PIC18F24J10数据表(DS39682)

数据手册提供了有关EUSART模块,CCP模块,ADC模块和PIC单片机电气特性的所有必要信息。

2. PICDEMtrade;2 PLUS用户指南(DS51275A_CN)

本应用笔记已使用一对PICDEM 2 PLUS演示板进行测试。

3.美国国家标准E1.11-2004。

官方DMX512协议规范可在www.esta.org上获得。

软件许可协议

Microchip Technology Incorporated(“本公司”)随附的软件旨在提供给您,即本公司的客户,仅供与本公司制造的产品一起使用。

该软件由公司和/或其供应商所有,并受适用的版权法保护。 同时保留所有权利。 任何违反上述使用限制的的行为都可能会根据相应法律对用户进行刑事制裁,并且违约用户将对违反本许可证的条款和条件承担民事责任。

本软件是以“按原样”提供的。本软件不作任何明示,暗示或规定的担保,包括但不限于对适销性和对特定目的的适用性的暗示保证适用于本软件。在任何情况下,本公司都不会对因任何原因造成的特殊,偶然或继发性损害负责。

附录A:DMX512发送器演示

; File: DMX512TrmtDemo.asm
; DMX512 Transmitter demo
;
; This source c

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[137673],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。