5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: 舵机电调测试器 [打印本页]

作者: root_007    时间: 2009-6-24 17:47
标题: 舵机电调测试器
这个最简单,但元件难找,我就死活找不到390nF的电容。
(, 下载次数: 70)

还是单片机最简单,手头只有M8,本来这种东西,8Pin的ATTiny足矣。
内部1M,电压3V到5V,电位器10K以及上,越大越省电。
(, 下载次数: 54)

实际测试,脉宽在1ms与2ms之间,周期21ms。
程序文件如何上传?这里只能传图片。
作者: root_007    时间: 2009-6-24 17:49
标题: 还是自己去编译吧,这是ICCAVR的。
#include <iom8v.h>
#include <macros.h>
#include "common.h"

#define SetPlus()  PORTB |= (1<<PB0)
#define ClrPlus()  PORTB &= ~(1<<PB0)

UCHAR GetPosition()
{
  INT8 i,nRet;
  UINT nSum;
  
  UINT8 nADC,nMax,nMin,iMax,iMin,nVol[4];
  
  //pVoltage = 0;
  nMax = 0;
  nMin = 255;
  
  ADCSRA|=(1<<ADSC);      //启动ADC
  while(ADCSRA & (1<<ADSC));  //首次值抛弃
  
  //连续四次取样
  for(i=0;i<4;i++)
  {  ADCSRA|=(1<<ADSC);      //启动ADC
    while(ADCSRA & (1<<ADSC));
    nADC = ADCH;
    
    if(nADC > nMax)  
    {  nMax = nADC;
      iMax = i;
    }
    else if(nADC < nMin)
    {  nMin = nADC;
      iMin = i;
    }
    
    nVol = nADC;
  }
  
  nSum = 0;

  //去掉最大最小值,取平均数
  for(i=0;i<4;i++)
  {  if(i!=iMax && i!=iMin)
      nSum += nVol;
    
  }
  nSum >>= 2;
  return nSum > 120 ? 120 : nSum;
}

void init_devices(void)
{
  
  CLI();

  PORTB = 0x00;
  DDRB  = 0x01;
  PORTC = 0x00;
  DDRC  = 0x00;
  PORTD = 0x00;
  DDRD  = 0x00;

  TCCR0 = 0x00;
  TCNT0 = 0x83;
  TCCR0 = 0x02;
  
  ACSR  = 0x80;        //关闭模拟比较器
  ADCSR = 0B10000000;      //允许ADC
  ADMUX = 0B00100000;      //外部参考源,左对齐,0号通道
  
  MCUCR = 0x00;        
  GICR  = 0x00;
  TIMSK = 0x00;
  SEI();
  
}

void main(void)
{  
  INT8 nPos;
  
  int i,nClr;
  
  init_devices();
  
  while(1)
  {
    SetPlus();
    
    nPos = GetPosition();  //ADC过程,0.4ms
    
    for(i=0;i<65;i++);    //最少1 ms;
  
    for(i=0;i<nPos;i++);
    
    ClrPlus();
    nClr = 2400 - nPos;
    for(i=0;i<nClr;i++);
  }
}


[ 本帖最后由 root_007 于 2009-6-24 17:52 编辑 ]
作者: Jaken    时间: 2009-6-24 17:52
不懂编程,帮顶
作者: hh718    时间: 2009-6-24 20:01
难懂,只会用:em01:
作者: 蓝色∮的海    时间: 2009-6-24 23:18
专业:em17:
作者: yanrhfj    时间: 2009-6-25 13:01
用C语言写的
#include <iom8v.h>
#include <macros.h>
#include "common.h"


include "common.h"这个是自己做的函数吧???
作者: yanrhfj    时间: 2009-6-25 13:05
谢谢LZ编译通过的,写的不错,可以给个再小点吗?
作者: rchobby    时间: 2009-6-25 14:09
:em26:
作者: LF-GODDESS    时间: 2009-6-25 14:22
还是555简单,看我的帖
作者: 小新    时间: 2009-6-26 20:12
电容可以找几个串,并联就可以了,数值可以用万用表直接测量
作者: djb    时间: 2009-7-2 07:01
common.h头文件没有,编译通不过,能贴出来吗?
作者: root_007    时间: 2009-7-2 14:50
源代码贴上来时被吃去几个字符,

nVol =  应该改为 nVol [ i ]  =

comm.h就几个定义
#define UCHAR unsigned char
#define UINT unsigned int

[ 本帖最后由 root_007 于 2009-7-2 14:56 编辑 ]
作者: 张笑天    时间: 2009-7-2 18:58
好不好用?
作者: 航MI    时间: 2009-10-7 17:53
就测试简单就好
作者: 别拿菜鸟不当鸟    时间: 2009-10-7 19:44
不懂。!! 帮顶!
作者: sh505    时间: 2009-10-24 08:27

作者: 天线老宝宝    时间: 2012-3-25 14:55
请问楼主  为什么编译的时候一直会提示INT8   UINT8是未定义的呢?  刚接触单片机  还望楼主指点
作者: xijiyoyilo    时间: 2012-3-26 05:12
标题: 不懂。!! 帮顶!
不懂。!! 帮顶!
作者: zssssha    时间: 2012-3-26 10:21
很好的资料,标记一下,学习学习
作者: 小越    时间: 2012-4-13 09:30
10楼说的最简单实用
作者: cot8    时间: 2012-4-13 09:38
真棒,谢谢分享:em15: :em15: :em15:
作者: jjj206    时间: 2012-4-13 23:16
電容可以使用接近容量的。
作者: wxd5765    时间: 2012-4-16 16:22
聪明的人还是很多啊,佩服
作者: 13905068660    时间: 2012-4-17 21:30
:em26:
作者: feitian227    时间: 2012-7-26 16:32
为什么不开定时器啊?
作者: icewoo    时间: 2012-8-2 13:29
有没有高手帮忙把这个程序编译下给个HEX文件,不懂编程,只会焊接刷程序。。。
作者: snailb    时间: 2012-8-2 20:18
不折腾,这东西没几个钱,买一个省心,放心,安心,自己做的,如果出错,且正在试电机,那就很危险了




欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://wz.5imx.com/) Powered by Discuz! X3.3