西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 2634|回复: 14

[求助] 一个关于电机的霍尔传感器的子程序看不懂。(别人写的)求教!!

  [复制链接]

该用户从未签到

发表于 2011-7-12 20:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/* This file has been prepared for Doxygen automatic documentation generation.*/
/******************************************************************************/
//! \name Output pins to drive stages.
#define UL  PB0
#define VL  PB6
#define WL  PB7
#define UH  PD5
#define VH  PD6
#define WH  PD7
#define MC_MASK   ((0<<UL)|(0<<VL)|(0<<WL)|(1<<UH)|(1<<VH)|(1<<WH))

//! \name Hall sensor input pins.
//@{
#define HALL1        0 // PB3
#define HALL2         1 //PB4
#define HALL3         2 //PB5
#define HALL_MASK  ((1<<HALL1)|(1<<HALL2)|(1<<HALL3))

#define HP1 ((0<<HALL1)|(1<<HALL2)|(0<<HALL3)) //5
#define HP2 ((0<<HALL1)|(1<<HALL2)|(1<<HALL3)) //4
#define HP3 ((0<<HALL1)|(0<<HALL2)|(1<<HALL3)) //6
#define HP4 ((1<<HALL1)|(0<<HALL2)|(1<<HALL3)) //2
#define HP5 ((1<<HALL1)|(0<<HALL2)|(0<<HALL3)) //3
#define HP6 ((1<<HALL1)|(1<<HALL2)|(0<<HALL3)) //1
//20070728

#define PDP1_CW  ((1<<UH)|(1<<VH)|(0<<WH))
#define PDP2_CW  ((1<<UH)|(0<<VH)|(1<<WH))
#define PDP3_CW  ((1<<UH)|(0<<VH)|(1<<WH))
#define PDP4_CW  ((0<<UH)|(1<<VH)|(1<<WH))
#define PDP5_CW  ((1<<UH)|(1<<VH)|(0<<WH))
#define PDP6_CW  ((0<<UH)|(1<<VH)|(1<<WH))
#define PDP_stop  ((1<<UH)|(1<<VH)|(1<<WH))
                                          
#define PBP1_CW  ((0<<UL)|(1<<VL)|(1<<WL))
#define PBP2_CW  ((1<<UL)|(1<<VL)|(0<<WL))
#define PBP3_CW  ((0<<UL)|(1<<VL)|(1<<WL))
#define PBP4_CW  ((1<<UL)|(0<<VL)|(1<<WL))
#define PBP5_CW  ((1<<UL)|(0<<VL)|(1<<WL))
#define PBP6_CW  ((1<<UL)|(1<<VL)|(0<<WL))
#define PBP_stop  ((1<<UL)|(1<<VL)|(1<<WL))

#define PDP1_ANCW  ((0<<UH)|(1<<VH)|(1<<WH))
#define PDP2_ANCW  ((1<<UH)|(0<<VH)|(1<<WH))
#define PDP3_ANCW  ((1<<UH)|(0<<VH)|(1<<WH))
#define PDP4_ANCW  ((1<<UH)|(1<<VH)|(0<<WH))
#define PDP5_ANCW  ((0<<UH)|(1<<VH)|(1<<WH))
#define PDP6_ANCW  ((1<<UH)|(1<<VH)|(0<<WH))
                                       
#define PBP1_ANCW  ((1<<UL)|(1<<VL)|(0<<WL))
#define PBP2_ANCW  ((0<<UL)|(1<<VL)|(1<<WL))
#define PBP3_ANCW  ((1<<UL)|(1<<VL)|(0<<WL))
#define PBP4_ANCW  ((1<<UL)|(0<<VL)|(1<<WL))
#define PBP5_ANCW  ((1<<UL)|(0<<VL)|(1<<WL))
#define PBP6_ANCW  ((0<<UL)|(1<<VL)|(1<<WL))

const unsigned char HAll_CW[] = {
        0,
        3,        //         ((1<<HALL1)|(0<<HALL2)|(1<<HALL3))
        6,        //  ((1<<HALL1)|(0<<HALL2)|(0<<HALL3))
        2,        //  ((1<<HALL1)|(1<<HALL2)|(0<<HALL3))
        5,        //  ((0<<HALL1)|(1<<HALL2)|(0<<HALL3))
        1,        //  ((0<<HALL1)|(1<<HALL2)|(1<<HALL3))
        4,        //  ((0<<HALL1)|(0<<HALL2)|(1<<HALL3))
        7,
};
//b
const unsigned char PDP_CW[] = {
  // MC_PORT drive config
  PDP_stop,
        PDP5_CW,        //        ((0<<UH)|(1<<VH)|(0<<WH))
        PDP6_CW,        //        ((1<<UH)|(0<<VH)|(0<<WH))
        PDP4_CW,        //        ((1<<UH)|(0<<VH)|(0<<WH))
        PDP3_CW,        //        ((0<<UH)|(0<<VH)|(1<<WH))
        PDP1_CW,        //                    ((0<<UH)|(1<<VH)|(0<<WH))
        PDP2_CW,        //        ((0<<UH)|(0<<VH)|(1<<WH))
  PDP_stop  ,        //            ((1<<UH)|(1<<VH)|(1<<WH))   
};
const unsigned char PBP_CW[] = {
  // MC_PORT drive config
  PBP_stop,
        PBP5_CW,        //    ((1<<UL)|(1<<VL)|(0<<WL))
        PBP6_CW,        //    ((1<<UL)|(0<<VL)|(1<<WL))
        PBP4_CW,        //    ((1<<UL)|(1<<VL)|(0<<WL))
        PBP3_CW,        //    ((0<<UL)|(1<<VL)|(1<<WL))
        PBP1_CW,        //    ((0<<UL)|(1<<VL)|(1<<WL))
        PBP2_CW,        //    ((1<<UL)|(0<<VL)|(1<<WL))
  PBP_stop,        //    ((0<<UL)|(0<<VL)|(0<<WL))
};
//-----------------------------------------------------------------
const unsigned char HAll_ANCW[] = {
        0,
        5,        //  ((0<<HALL1)|(0<<HALL2)|(1<<HALL3))
        3,        //         ((1<<HALL1)|(0<<HALL2)|(1<<HALL3))
        1,        //  ((1<<HALL1)|(0<<HALL2)|(0<<HALL3))
        6,        //  ((1<<HALL1)|(1<<HALL2)|(0<<HALL3))
        4,        //  ((0<<HALL1)|(1<<HALL2)|(0<<HALL3))
        2,        //  ((0<<HALL1)|(1<<HALL2)|(1<<HALL3))
        7,
};
//b
const unsigned char PDP_ANCW[] = {
  // MC_PORT drive config
  PDP_stop,
        PDP3_ANCW,       
        PDP6_ANCW,       
        PDP2_ANCW,       
        PDP5_ANCW,       
        PDP1_ANCW,       
        PDP4_ANCW,       
  PDP_stop  ,         
};
const unsigned char PBP_ANCW[] = {
  // MC_PORT drive config
  PBP_stop,
    PBP3_ANCW,       
    PBP6_ANCW,       
    PBP2_ANCW,       
    PBP5_ANCW,       
    PBP1_ANCW,       
    PBP4_ANCW,       
  PBP_stop,        //    ((0<<UL)|(0<<VL)|(0<<WL))
};

评分

参与人数 1西莫币 +3 收起 理由
179361311 + 3 需要提供相应的单片机的资料,才能给你仿真 ...

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

发表于 2011-7-17 23:52 | 显示全部楼层
谢谢分享了,了解一下
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-7-18 13:44 | 显示全部楼层
1,定义上下桥臂的6路IO;
2,定义HALL传感器的IO接口;
3,定义6个HALL状态;
4,定义3个上桥臂在正转时、6个HALL状态下IO口输出的电平;
5,定义3个下桥臂在正转时、6个HALL状态下IO口输出的电平;
6,定义3个上桥臂在反转时、6个HALL状态下IO口输出的电平;
7,定义3个下桥臂在反转时、6个HALL状态下IO口输出的电平;
8,构建电机正转HALL表;
9,构建电机正转上桥臂输出的6个状态;
10,构建电机正转下桥臂输出的6个状态;
11,构建电机反转HALL表;
12,构建电机反转上桥臂输出的6个状态;
13,构建电机反转下桥臂输出的6个状态;
14,程序仿真时,发现表中的数据有溢出的情况,不能确定是作者本来的意图,还是疏忽,最好是配上单片机资料和原理图才能明白。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-7-18 13:51 | 显示全部楼层
学习一下,多谢分享
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-7-21 15:44 | 显示全部楼层
回复 3# 179361311

非常感谢版主的细心解答。我大致了解了,但还有几个细节请问一下版主:
1,  #define MC_MASK   ((0<<UL)|(0<<VL)|(0<<WL)|(1<<UH)|(1<<VH)|(1<<WH)) ,  #define HALL_MASK  ((1<<HALL1)|(1<<HALL2)|(1<<HALL3))
这究竟要表达一个什么意思?
2,#define HALL1        0 // PB3
#define HALL2         1 //PB4
#define HALL3         2 //PB5
这个HALL得IO口怎么定义成了0、1、2,这与PB3、4、5有何关系么?
3, 再有后面的有些解释总感觉怪怪的,看不太懂。
4,用的是M48单片机。控制直流无刷电机的。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-7-21 15:59 | 显示全部楼层
回复 3# 179361311

例如像这个电机正转HALL表后面的解释总感觉和前面定义有冲突啊
const unsigned char HAll_CW[] = {
        0,
        3,        //   ((1<<HALL1)|(0<<HALL2)|(1<<HALL3))
        6,        //  ((1<<HALL1)|(0<<HALL2)|(0<<HALL3))
        2,        //  ((1<<HALL1)|(1<<HALL2)|(0<<HALL3))
        5,        //  ((0<<HALL1)|(1<<HALL2)|(0<<HALL3))
        1,        //  ((0<<HALL1)|(1<<HALL2)|(1<<HALL3))
        4,        //  ((0<<HALL1)|(0<<HALL2)|(1<<HALL3))
        7,
};
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-7-21 16:17 | 显示全部楼层
现在公司也准备搞电机,控制器正是头痛啊
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-7-21 21:56 | 显示全部楼层
看别人的程序要自已优化一下哦
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-8-1 10:12 | 显示全部楼层
回复 5# diandongji


    关于1:#define (定义) MC_MASK (等于)  ((0<<UL)|(0<<VL)|(0<<WL)|(1<<UH)|(1<<VH)|(1<<WH))  (UWV 移位后按位相加)
  关于2:PB5  PB4  PB3 与2   1   0  没有直接对应关系 很多软件都是把物理量 转换成数字量,再进行处理
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-8-31 12:02 | 显示全部楼层
很高深  的东西
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-9 09:03 | 显示全部楼层
这个搞不懂,太复杂了
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-15 15:36 | 显示全部楼层
呵呵,我没有具体看你程序,但是大概看了一眼,和我现在做的差不多。其实他是利用三路霍尔信号,来确定转子位置,通过三路霍尔信号的六种组合,讲360度角度6等份。通过读取当前霍尔信号的值以及上次的霍尔信号值,来确定当前的电机转向和转速。希望对你有帮助
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-10-17 14:30 | 显示全部楼层
太夸张了 写这么复杂,一个数组完成的事情···
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2012-8-22 09:48 | 显示全部楼层
学习一下,多谢分享
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2012-8-27 09:10 | 显示全部楼层
学习,多谢分享
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|西莫电机圈 ( 浙ICP备10025899号-3 浙公网安备:33028202000436号

GMT+8, 2024-11-25 09:11 , Processed in 0.146083 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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