搜索
bottom↓
回复: 19

细分如何计算正余弦表

[复制链接]

出0入0汤圆

发表于 2011-9-13 10:33:14 | 显示全部楼层 |阅读模式
最近在弄步进电机细分,这东西没弄过,不太懂。。我现在用的是8位DAC。。还请弄过的朋友,帮我弄两张128点正半周期的正弦和余弦表。。。。或者告诉我公式如何计算即可。。。我知道用excel很容易做。。但是本人不会用excel。。。囧RZ

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入24汤圆

发表于 2011-9-13 10:35:32 | 显示全部楼层
C语言写个小程序,参数设置好,直接输出到txt文本里面就行了

出0入0汤圆

 楼主| 发表于 2011-9-13 10:51:11 | 显示全部楼层
回复【1楼】20061002838  
-----------------------------------------------------------------------

关键是。。公式不懂。。这位大大,懂么?

出0入24汤圆

发表于 2011-9-13 10:59:00 | 显示全部楼层
直接用C库的sin函数啊,需要什么公式?

出0入0汤圆

发表于 2011-9-13 10:59:03 | 显示全部楼层
C 语言中  sin(float 弧度) 软件打印生成一个文件。 如果不会写上位机 自己就用计算器敲吧。总比这样省时间

出0入22汤圆

发表于 2011-9-13 11:07:16 | 显示全部楼层
上位机不会可以用单片机串口输出结果呀

出0入0汤圆

 楼主| 发表于 2011-9-13 11:23:07 | 显示全部楼层
搞定谢谢。。

/*  HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"
#include"math.h"
#define PI 3.1415926
main()
{
    int x;
    int y;
    for(x=0;x<=90;x++) /*这是角度*/
     {
        y=255*sin(x*PI /180);/*余弦改为cos即可*/
        if(x % 9==0)
         printf("\n");
        printf("%d,",y);
     }
     getch();
}

出0入24汤圆

发表于 2011-9-13 11:31:08 | 显示全部楼层
呵呵,好简洁啊,我是直接输出到文件里面的

出0入0汤圆

发表于 2011-9-13 11:32:38 | 显示全部楼层
128位直接EXCEL再拷到H文件中

出0入0汤圆

 楼主| 发表于 2011-9-13 11:35:29 | 显示全部楼层
/*  HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"
#include"math.h"

#define PI   3.1415926
#define DOT  128 /* 点数*/
#define ZQ   90 /* 1/4周期*/
main()
{
    int x;
    int y;
    for(x=0;x<DOT;x++) /*这是点数*/
     {
        y=256*sin(x*ZQ/DOT*PI /180);/*余弦改为cos即可*/
        if(x % 9==0)
         printf("\n");
        printf("%d,",y);
     }
     getch();
}

改进版。。哈哈

出0入0汤圆

发表于 2011-9-13 11:36:22 | 显示全部楼层
这个占用多大ROM

出0入0汤圆

 楼主| 发表于 2011-9-13 11:45:18 | 显示全部楼层
不知道对不对。。还请各位大大。。看看。。

出0入24汤圆

发表于 2011-9-13 12:20:08 | 显示全部楼层
#include "stdio.h"
#include "math.h"

#define CNT    180          //点数
#define MUL    1024         //倍数
#define SFT    520          //偏移      
#define PI     3.1415926535898          //圆周率


void main(void)
{
  FILE *fp;
  char str[] = {'0','x','0','0','0','0',',',0x20};
  
  unsigned char i = 0;
  unsigned char n;
  unsigned short int m;
  unsigned long ss = 0;
  
  float j,k;
  
  fp = fopen("sin.txt","r+");
  
  for(i = 0; i < CNT; i++)
  {
    j = sin(2*i*PI/CNT);
    k = j*MUL/2 + SFT;
    m = (unsigned int)k;
   
    str[2] = (unsigned char)((m & 0xF000) >> 12);
    str[3] = (unsigned char)((m & 0x0F00) >> 8);
    str[4] = (unsigned char)((m & 0x00F0) >> 4);
    str[5] = (unsigned char)((m & 0x000F) );
   
    printf("%d",str[5]);
   
    for(n=2; n<6; n++)
      if(str[n]<10)
        str[n] += '0';
      else
        str[n] += ('A'-10);
      fseek(fp, ss, SEEK_SET);       
      fwrite(str, 8, 1, fp);
      ss += 8;
      
  }
  
  fclose(fp);
  
}

刚刚下载了一个编译器运行了一下,没问题
注意要自己新建一个sin.txt的空文件,还有就是输出没有换行

出0入0汤圆

发表于 2011-9-13 15:29:45 | 显示全部楼层
我这里有个小软件,挺好用的,试试看
正弦波计算器ourdev_676233CYIJ1T.rar(文件大小:5K) (原文件名:正弦波计算器.rar)

出5入0汤圆

发表于 2011-9-15 20:44:43 | 显示全部楼层
回复【9楼】myqiang1990  小松鼠
-----------------------------------------------------------------------

y=256*sin(x*ZQ/DOT*PI /180),这个公式怎么得出来的

出0入0汤圆

发表于 2012-1-13 09:38:14 | 显示全部楼层
我最近也在研究电机细分啊,看了一个礼拜,看不懂,

出0入0汤圆

发表于 2012-1-13 11:49:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-2-18 23:06:54 | 显示全部楼层
细分学习

出0入0汤圆

发表于 2016-5-26 13:58:14 | 显示全部楼层
大神,细分怎么弄哦?给点建议呗

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-23 10:34

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

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