搜索
bottom↓
回复: 37

以前用Atmega8515做的一个16通道伺服舵机控制的东东

[复制链接]

出0入0汤圆

发表于 2006-2-28 17:13:40 | 显示全部楼层 |阅读模式
此程序为16通道伺服舵机控制程序,使用CodeWizardAVR V1.24.1d编译生成,采用AVR单片机ATmage8515L,晶振频率8MHZ,另有如下几点说明:

1.主体电路应该有AVRmega8515L单片机, RS232通讯部件、I2C总线插座、16路伺服舵机控制接口、8MHZ晶体、AVR-ISP编程下载接口。

2.PB0口的跳线接至高电平时为伺服舵机的实时调试模式,此时应该打开“16通道舵机控制器”软件,并将单片机的串口和电脑的COM1口相连,然后打开单片机通电运行,拖动滑竿,如果舵机能实时跟踪滑块的动作,说明通讯正常。拖动其他通道的舵机,取好合适的动作值(指令范围0~250)和动作时间(大于120ms小于5s)后点“添加”即加入了第一条指令,依次可以加入更多的指令;如果哪一条指令有错误,选中它后重新拖动滑竿后点“修改”即可纠正,点“删除”即可删掉这一条指令;也可以打开OFFOCE组件ACCESS2000进行修改。添加完毕便可运行按“自动播放”进行演示,演示成功可按生成HEX文件,此HEX文件用作24Cxx的烧入文件。

3.PB0口的跳线接至低电平时伺服舵机的脱机运行模式:前提是在“16通道舵机控制器”软件将各条指令编好后,点“生成文件”(如图3)便可生成压缩数据,然后通过TOP2003编程器把它烧入24CXX系列(这里用的是24C64,8KB的容量) 的E2PROM,将它插入I2C插槽,并将PB0口的跳线接至低电平,接通单片机电源,舵机便可逐条执行刚才做好的指令,指令条数可达2000条。

4.单片机内的程序已经达到控制精度的要求:控制路数-16路        ,分辨率-0.72°/分度,指令范围0~250,单条指令执行时间-大于120ms小于5s,调速模式-13种,数据压缩率-小于10%



注意:由于舵机工作电流较大,使用时应将舵机和单片机分开供电,否则程序容易跑飞。



附:

程序主体部分参考于逻辑电子网站公布的3通道舵机控制程序(详细说明可参见www.luojz.net),我这里所作的改进只是扩展了通道,以及加入了速度模式控制(由于速度缺乏准确性,这里通过将动作值和动作时间相除去获得运行速度的,后台程序有13种速度模式),它可以控制16路伺服舵机、解决了DIY机器人制作领域(尤其是多关节仿生机器人和带有表演性质的机器人)的基本动作控制要求。



主要创新点:

1.        可以同时控制多达16路伺服舵机,同时还可以扩展通道或其他电机。

2.        利用AVR单片机MEGA系列的嵌入式高速性能可以使伺服舵机的控制路数达到至少16路(最多可扩至24路),控制精度可以达到250的分辨率,如果可能的话甚至可以飞航模飞机;

3.        每一路伺服舵机均具有自调速功能,即先给定舵机的动作数值和动作时间,系统内会自动按照规定的动作数值和时间算出到达规定位置的速度,这样可以避免直接给舵机定义速度的缺乏直观性;

4.        PC终端软件采用VC编写,界面直观友好,操作使用简便,可以明显提高智能机器人动作指令的开发效率,同时指令经过数据压缩处理存放在外置E2PROM中,将程序和指令数据完全分离。





欢迎大家多多交流指正!

部分资料来源于一些论坛,如有侵权,请告知!

出0入0汤圆

发表于 2006-2-28 17:39:26 | 显示全部楼层
东西呢.谁删除了吗????

出0入0汤圆

发表于 2006-2-28 18:28:29 | 显示全部楼层
没设计,没代码?

出0入0汤圆

发表于 2006-2-28 18:34:01 | 显示全部楼层
http://www.robotdiy.com/phpbb2/viewtopic.php?t=8677&view=previous&sid=b18643b224c365b19a60195c380993d4

只见打雷不见下雨

出0入0汤圆

 楼主| 发表于 2006-2-28 18:50:10 | 显示全部楼层
各位不好意思,试了半天没传上去!

出0入0汤圆

 楼主| 发表于 2006-2-28 18:55:19 | 显示全部楼层
点击此处下载armok01104548.rar

出0入0汤圆

 楼主| 发表于 2006-2-28 18:59:10 | 显示全部楼层
这是单片机源程序、电路原理图及PC机端的运行程序(及源程序),望大家多多支持!!!

点击此处下载armok01104548.rar

出0入0汤圆

 楼主| 发表于 2006-2-28 19:04:50 | 显示全部楼层
有谁能帮忙看看这个程序?



请教:如何用模拟比较器来触发定时器1的输入捕获使能功能?

http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=590803&bbs_id=1000





我的问题是在写超声波测距实验中碰到的。我的思路是:让从超声波接收电路得到的高电平经单片机的AIN0与AIN1的0.5V电压进行比较,使模拟比较器控制和状态寄存器ACSR的ACO置位,比较器的输出被直接连接到输入捕捉的前端逻辑,从而使得比较器可以利用T/C1 输入捕捉中断逻辑的噪声抑制器及触发沿选择功能。  

这是部分程序,已经用CVAVR编译通过,并用VMLAB仿真到T/C1中的模拟比较器控制和状态寄存器ACSR中的ACO位已经有高电平输出,却在输入捕捉寄存器中ICR1中检测不到捕获到的时间值?如果这样写不对,应该怎样使用输入捕获使能功能?请CVAVR高手多多指教!  



/*****************************************************   

This program was produced by the   

CodeWizardAVR V1.24.1d Standard   

Automatic Program Generator   



Chip type           : ATmega8515L   

Clock frequency     : 3.686400 MHz   



*****************************************************/   



#include <mega8515.h>   



unsigned int rising_time;   

unsigned char mid=0;   



interrupt[TIM1_CAPT] void timer1_capt_isr(void)                 

{   



mid=ACSR&0x20;   

if(mid)   

   {                                       

   rising_time=(256*ICR1H)+ICR1L;               

   }     



ACSR=0x07;   



}   



void main(void)   

{   



TCCR1A=0x00;   //普通模式   

TCCR1B=0xC1;  ////输入噪声抑制,上升沿触发,无分频系数   

ACSR=0x07;//模拟比较器触发输入捕获使能   

TIMSK=0x08;// T/C1 capture :on  



#asm("sei");   

while (1)   

{   

..............   

}   

}

出0入0汤圆

发表于 2006-3-1 08:44:54 | 显示全部楼层
赞一个!

出0入0汤圆

发表于 2006-3-1 09:14:38 | 显示全部楼层
没有数据格式么?通讯的,存储的……

出0入0汤圆

 楼主| 发表于 2006-3-2 18:32:24 | 显示全部楼层
用的USART串口数据通讯

出0入0汤圆

 楼主| 发表于 2006-3-2 18:41:05 | 显示全部楼层
有谁能帮忙看看这个程序?

http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=590799&bbs_page_no=1&bbs_id=1000







请教:如何用模拟比较器来触发定时器1的输入捕获使能功能?  





我的问题是在写超声波测距实验中碰到的。我的思路是:让从超声波接收电路得到的高电平经单片机的AIN0与AIN1的0.5V电压进行比较,使模拟比较器控制和状态寄存器ACSR的ACO置位,比较器的输出被直接连接到输入捕捉的前端逻辑,从而使得比较器可以利用T/C1 输入捕捉中断逻辑的噪声抑制器及触发沿选择功能。   

这是部分程序,已经用CVAVR编译通过,并用VMLAB仿真到T/C1中的模拟比较器控制和状态寄存器ACSR中的ACO位已经有高电平输出,却在输入捕捉寄存器中ICR1中检测不到捕获到的时间值?如果这样写不对,应该怎样使用输入捕获使能功能?请CVAVR高手多多指教!  







我用的CVAVR编译,VMLAB3.12仿真,其中,1.prj为CVAVR的工程文件,my_idea.prj为VMLAB的工程文件,望高手多加指点!



点击此处下载armok01104846.rar





/*****************************************************   

This program was produced by the   

CodeWizardAVR V1.24.1d Standard   

Automatic Program Generator   



Chip type           : ATmega8515L   

Clock frequency     : 3.686400 MHz   



*****************************************************/   



#include <mega8515.h>   



unsigned int rising_time;   

unsigned char mid=0;   



interrupt[TIM1_CAPT] void timer1_capt_isr(void)                  

{   



mid=ACSR&0x20;   

if(mid)   

   {                                       

   rising_time=(256*ICR1H)+ICR1L;                 

   }      



ACSR=0x07;   



}   



void main(void)   

{   



TCCR1A=0x00;   //普通模式   

TCCR1B=0xC1;  ////输入噪声抑制,上升沿触发,无分频系数   

ACSR=0x07;//模拟比较器触发输入捕获使能   

TIMSK=0x08;// T/C1 capture :on   



#asm("sei");     

while (1)   

{   

..............   

}   

}  





-----此内容被easyfly_step于2006-03-02,18:41:36编辑过


-----此内容被easyfly_step于2006-03-02,18:42:54编辑过

出0入0汤圆

发表于 2006-3-6 10:00:04 | 显示全部楼层
>unsigned int rising_time;

>unsigned char mid=0;

楼主为何不加volatile?



类似问题已经被问过N回了……



在简单提示一下:如果变量存在并行读写的可能性,一定要加volitile修饰符。



PS:楼主的舵机控制的数据格式能否解释一下?“串口传输”那是传输的事情,每个字节每位代表何意?

出0入0汤圆

发表于 2006-7-25 06:54:14 | 显示全部楼层
easyfly_step....你好



请问ATMEGA8515L??Atmega8515  一样???

传输的资料格式???









猪头牌二足机器人----请大家多多指教!!谢

http://hk.im.tv/VLOG/personal.asp?Memid=411&FID=10546












-----此内容被uucww于2006-07-25,07:51:00编辑过

出0入0汤圆

发表于 2006-8-21 11:38:29 | 显示全部楼层
楼猪真强啊!

出0入0汤圆

发表于 2006-12-14 11:41:39 | 显示全部楼层
楼主你好,我是用VB编程的,对VC不懂,请教如何将串口改为3(因我的是USB)转换的),另外,我用VC++6.0打开SCommTest.rc ,编译通不过,产生以下错误,请指点一下,先谢了。

Linking...

nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex

nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex

libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

Debug/IniFile.exe : fatal error LNK1120: 3 unresolved externals

执行 link.exe 时出错.



IniFile.exe - 1 error(s), 0 warning(s)

出0入0汤圆

发表于 2007-8-21 11:08:08 | 显示全部楼层
楼主有联系方式没? 看到请加我QQ:123046785想请教一些问题

出0入0汤圆

发表于 2007-11-9 02:53:03 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2008-3-21 11:07:27 | 显示全部楼层
easyfly_step 老兄,你上传那个压缩文件,解压时有错啊,能不能重新压缩一个,重传下,谢谢!

出0入0汤圆

发表于 2008-3-21 21:03:26 | 显示全部楼层
easyfly_step 老兄,你上传那个压缩文件,解压时有错啊,能不能重新压缩一个,重传下,谢谢!

出0入0汤圆

发表于 2008-7-23 23:27:26 | 显示全部楼层
谢谢分享 !

出0入0汤圆

发表于 2008-9-8 18:11:28 | 显示全部楼层
ddddddddddddddd

出0入0汤圆

发表于 2008-9-8 18:43:36 | 显示全部楼层
up

出0入0汤圆

发表于 2008-9-8 21:30:38 | 显示全部楼层
ding

出0入0汤圆

发表于 2008-12-28 20:47:31 | 显示全部楼层
你上传那个压缩文件,解压时有错啊,能不能重新压缩一个,重传下,谢谢!&nbsp;

出0入0汤圆

发表于 2009-3-9 17:59:11 | 显示全部楼层
谢谢分享 !

出0入0汤圆

发表于 2009-4-1 09:31:54 | 显示全部楼层
ding

出20入128汤圆

发表于 2010-1-23 21:47:42 | 显示全部楼层
好像上传的压缩包解压错误啊,还有包里面好像没有看到电路图,请楼主再处理一下好吗?急需这份资料,谢谢!

出0入0汤圆

发表于 2010-1-29 18:34:50 | 显示全部楼层
make

出0入0汤圆

发表于 2010-1-30 11:26:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-28 01:05:26 | 显示全部楼层
顶!

出0入0汤圆

发表于 2010-3-1 09:48:45 | 显示全部楼层

出0入0汤圆

发表于 2010-7-30 14:36:35 | 显示全部楼层
ding

出0入0汤圆

发表于 2011-4-21 11:51:55 | 显示全部楼层
不错的,顶了!

出0入0汤圆

发表于 2011-9-10 14:53:51 | 显示全部楼层
ding
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 03:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表