jswanglei 发表于 2007-7-17 10:49:07

采用ATMEGA48的DMX512解码器,终于搞定了,发贴庆祝一下

在网上搜到的DMX512都是英文的,看的很吃力,最近要做这个洗墙灯,硬着头皮上,结果原来只是一个串行传输协议而已,一连传送n个数据(n<512),解码器接受到这些数据后,再判断做出相应的动作。

http://cache.amobbs.com/bbs_upload782111/files_7/armok01162198.jpg

http://cache.amobbs.com/bbs_upload782111/files_7/armok01162199.jpg

http://cache.amobbs.com/bbs_upload782111/files_7/armok01162200.jpg

Richey 发表于 2007-7-17 12:02:47

恭喜!

你的地址是用键盘输入吗?

一块板可带几个灯?

接收全部用中断还是检测到BREAK后才开中断?

jswanglei 发表于 2007-7-17 12:31:56

对,上面有三个按键UP DOWN OK就是用来输入地址的。

一块板是按12通道设计的。每个通道的数据处理后,送下位机执行。

接收全部用中断,而且带信号反极性检测功能。本来想采用检测到BREAK后才开中断的,这样太耗资源,所以直接全部用中断,调试时用数码管显示采集到的数据,很稳定,从来没有接受错误的现象。

与下位机的通讯就麻烦了,因为MEGA48的引脚资源用光了,只有自己编了一个三线的串行传输协议,呵呵,下次再做,用MEGA16,这样就可以用SPI通讯了,比较通用。

Richey 发表于 2007-7-17 13:53:58

你的板没有用晶振,250KBPS搞得准吗?

信号反极性检测是什么意思?

MYMCU 发表于 2007-7-18 08:40:21

楼主不是用MEGA48直接控制LED吗?

ddb_21ic 发表于 2007-7-18 19:08:48

好像一般是按照16个通道一个灯,我只做过发送信号

接收端的Mark如果都按套路来还是方便,Break就不重要了,就是停止位

jswanglei 发表于 2007-7-19 08:51:36

MEGA48,采用8M内置RC振荡器,在熔丝位里去掉八分频,是可以达到250KBPS的传输速率的.

反极性检测是指如果RS485送来的信号线不是AB,而是BA(我不知这样描述是否正确),从75LBC184出来的信号正好完全反向,所以我在程序里增加了识别这一现象的功能,如果反向的话,则不从网络读取任何的信号.

不是用MEGA48直接控制LED的,因为我做的这个只是将我需要的通道数据从RS485网络里接受过来,然后它还要将数据传送到下位机去执行的,我下位机是采用了TINY26.由TINY26对LED进行控制.

jswanglei 发表于 2007-7-19 09:03:58

具体几个通道一个灯,是要看实际应用状况的.

我打算用三个通道来控制一组灯(RGB),最近正在构思中,呵呵

DDB_21IC说的没错,对我这板来说,比较重要的两个信号就是:MARK和停止位,不过BREAK还是很重要,因为我是用BREAK来产生帧错误的中断,然后再开始确认何时为起点.

jswanglei 发表于 2007-7-19 09:05:27

具体几个通道一个灯,是要看实际应用状况的.

我打算用三个通道来控制一组灯(RGB),最近正在构思中,呵呵

DDB_21IC说的没错,对我这板来说,比较重要的两个信号就是:MARK和停止位,不过BREAK还是很重要,因为我是用BREAK来产生帧错误的中断,然后再开始确认何时为起点.

我这板有个缺陷就是没有采用光电隔离,因为手头没有高速光耦,而且这块板对体积要求比较高,控制传输部分干扰比较小,就先这样试一下,将来还是要考虑光隔的.

MYMCU 发表于 2007-7-19 10:27:28

采用8M内置RC振荡器做250KBPS的传输速率,应该不是很稳定吧.特别是量产的时候,容易出问题.

jswanglei 发表于 2007-7-19 15:17:30

还可以,至少手里的几个样板是没问题的.我想有时间的话,做个冷热循环,试一下不同温度下的可靠性.

HZZCL 发表于 2007-7-20 09:28:38

可否上传一份DMX512协议?

mcu_hui 发表于 2007-9-10 11:18:12

我是做LED 的,能否给个参考代码,或者交换下程序也可。

mcu_hui 发表于 2007-9-10 11:21:37

点击此处打开armok01171408.xls

mcu_hui 发表于 2007-9-10 11:33:24

我传了个详细的DMX512协议说明,希望对大家有所帮助,欢迎交流!

teltium 发表于 2008-5-3 21:00:29

不错 学习学习 哈哈 250KBPS是有点快

joyall 发表于 2009-3-24 09:54:01

你用什么检测的BREAK,错误帧还是RXB8

lsls 发表于 2010-8-1 08:51:12

QQ:1191474325
提供DMX512产品方面的技术支持。

zwsyau 发表于 2011-3-9 21:25:44

回复【楼主位】jswanglei
-----------------------------------------------------------------------

请教大家一个问题,我用的PIC16F877A的单片机做512解码器,内部的指令频率是5M赫兹,在连接到控制台后,出现接受不到数据,而且程序还跑乱了,不知道是不是单片机频率太低的原因,造成的?
我用的是全部中断接受的,RX9D来判断512数据包的复位信号的。

richwen 发表于 2012-9-15 20:37:43

正需要这方面的资料。{:smile:}

huangpeifeng 发表于 2012-9-17 15:39:55

lsls 发表于 2010-8-1 08:51 static/image/common/back.gif
QQ:1191474325
提供DMX512产品方面的技术支持。

有简单的例程么
页: [1]
查看完整版本: 采用ATMEGA48的DMX512解码器,终于搞定了,发贴庆祝一下