OMRON E6B2-CWZ6C
接线
线色 | 端子名 |
---|---|
褐色 | 电源+5V~24V |
蓝色 | 0V(COMMON) |
黑色 | 输出A相 |
白色 | 输出B相 |
橙色 | 输出Z相 |
输出说明
AB相为正交信号,若A相超前B相,说明编码器正旋
若B相超前A相,说明编码器反旋
每转一圈,AB输出脉冲数等于编码器线数,而一圈Z相仅输出一个脉冲波
编程
输入捕获
这里采用定时器4的通道1和通道2
void TIM4_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_ICInitTypeDef TIM_ICInitStructure; //PB6 ch1 A,PB7 ch2 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能TIM4时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB时钟GPIO_StructInit(&GPIO_InitStructure); //将GPIO_InitStruct中的参数按缺省值输入GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //PB6 PB7浮空输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure); NVIC_InitStructure2.NVIC_IRQChannel = TIM4_IRQn; NVIC_InitStructure2.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure2.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure2.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure2);TIM_DeInit(TIM4);TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);TIM_TimeBaseStructure.TIM_Period = 999*4; //设定计数器重装值 TIMx_ARR = 线数*4TIM_TimeBaseStructure.TIM_Prescaler = 0; //TIM4时钟预分频值TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1 ; //设置时钟分割 T_dts = T_ck_int TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //使用编码器模式3,上升下降都计数 TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_BothEdge ,TIM_ICPolarity_BothEdge);TIM_ICStructInit(&TIM_ICInitStructure); //将结构体中的内容缺省输入TIM_ICInitStructure.TIM_ICFilter = 6; //选择输入比较滤波器 TIM_ICInit(TIM4, &TIM_ICInitStructure); //将TIM_ICInitStructure中的指定参数初始化TIM3TIM_ClearFlag(TIM4, TIM_FLAG_Update); //清除TIM3的更新标志位TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); //运行更新中断//Reset counterTIM4->CNT = 0;TIM_Cmd(TIM4, ENABLE); //启动TIM4定时器}
中断服务函数(溢出)
//编码器接口模式
void TIM4_IRQHandler(void)
{ if(TIM4->SR&0x0001)//溢出中断{;} TIM4->SR&=~(1<<0);//清除中断标志位
}
这一步以后,可以将编码器的A相和B相接入PB6和PB7计算脉冲
外部中断:Z相归零
在增量式编码器中,没有绝对0位,以上电复位时编码器的位置作为计数0点。每转一圈,Z相输出一个脉冲,此时应当软件将计数脉冲清零,以确保计数与实际一致。
外部中断初始化
//Z相归零
void EXTI_PA1_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure;/* config the extiline(PA1) clock and AFIO clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_AFIO,ENABLE);/* config the NVIC */NVIC_InitStructure1.NVIC_IRQChannel = EXTI1_IRQn;NVIC_InitStructure1.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure1.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure1.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure1);/* EXTI line gpio config(PA1) */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入GPIO_Init(GPIOA, &GPIO_InitStructure);/* EXTI line(PA1) mode config */GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1); EXTI_InitStructure.EXTI_Line = EXTI_Line1;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿中断EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);
}
中断服务函数
void EXTI1_IRQHandler(void)
{TIM4->CNT = 0; //每次遇到相对零(Z信号)就将计数归0 TIM_Cmd(TIM4, ENABLE);EXTI_ClearITPendingBit(EXTI_Line1);
}
此后只需要读取
count = TIM4->CNT/4
即为计数脉冲值
运行截图
本人使用的时OMRONE6B2-CWZ6C 1000线编码器,因此旋转到最大值(1000)时归零
OMRON E6B2-CWZ6C相关推荐
- java dotnet core_在.NET Core 2.0中使用Omron库
我正在尝试在ASP.NET Core 2.0应用程序中使用Omron库(即Compolet) . 我为这些类添加了程序集引用,但在运行时,它们尝试找到 System.Windows.Forms 程序集 ...
- 欧姆龙OMRON PLC之HostLink通讯协议(五)- CP1H以太网FINS/TCP通讯实例
//写在前面: 自2010年起,本人陆续在新浪博客上面发了几篇OMRON PLC的应用笔记,曾经很疑惑阅读量异常增加,后来发现原来是这里有人转载.现将原文照发在这里,希望能帮到做工控的同行朋友们. C ...
- e5cz温控表中文说明书_欧姆龙温控器e5cz说明书 OMRON温控表E5EC说明书
欧姆龙温控器e5cz说明书||OMRON温控表E5EC说明书 联系人:魏工 : 座机: QQ:2030149354 产品资料: 輸入種類設定 开机时初始状态下SV会显示输入传感器种类,出厂预设于K1热 ...
- OMRON NJ501-1520真实项目程序 欧姆龙NJ做的程序27轴+110个气缸+1个机械手
OMRON NJ501-1520真实项目程序 欧姆龙NJ做的程序27轴+110个气缸+1个机械手. 里面的功能块可以会给你种全新的思维. 如果你想扩展编程思维以及提升编程能力! 里面写的气缸块 伺服块 ...
- kepware KEPServerEX与欧姆龙NX系列PLC通讯-Omron NJ Ethernet
KEPServerEX 与欧姆龙NX系列PLC通讯 Omron NJ Ethernet 北京东方鼎晨科技有限公司 目 录 1. 前言 2. 欧姆龙PLC端相关设置 3. Kepware端相关设置 4. ...
- OMRON CJ系列CJ1W-EIP21通过网关设备 EtherNetIP转RS232/485与Modbus Slave软件测试记录文档
OMRON CJ系列CJ1W-EIP21通过网关设备 EnTalk EtherNetIP Adapter - RS232/485与Modbus Slave软件测试记录文档 时间:2021年2月26 记 ...
- OMRON欧姆龙PLC如何实现远程上下载程序?
欧姆龙(omron),是日系PLC当中市场占有率仅次于三菱的一款强大品牌,其兼具了三菱在运动控制以及西门子在总线控制上的优势,在中小型场合以及多轴控制上倍受工程师们的欢迎. 当前市面上欧姆龙PLC根据 ...
- OMRON NB7触摸屏添加.h头文件
OMRON新的NB7触摸屏号称支持c89语言,但是我进去一看其每个生成的用户c文件,都有一个MainEntry()似乎是开放给上级某个虚拟引擎调用的,用户c文件无法看到其他的用户c文件,也无法共享函数 ...
- 【转】欧姆龙OMRON PLC之 CP1H 以太网FINS/TCP通讯实例
原文:http://blog.sina.com.cn/s/blog_539cee190102wr4t.html CP1H上面的选件板插槽可以插入1-2块CP1W-CIF41模块,系统即具有了以太网功能 ...
- omron欧姆龙NJ NX程序 全自动锂电池二封机,主站NJ501-1400+威纶通触摸屏
omron欧姆龙NJ NX程序 全自动锂电池二封机,主站NJ501-1400+威纶通触摸屏. 整机采用EtherCAT总线网络节点控制,松下A6总线控制. 轴控制全部封装成功能块,可按照使用选择对应的 ...
最新文章
- html固定广告,css如何实现广告固定动态漂浮
- RDKit | 删除方差低的描述符
- android 获取活动栈,活动的生命周期系列(1)返回栈
- C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面...
- 听了一堂《**学院》的课,我也是醉了
- Vim的基本操作总结
- java+多线程菜鸟_java多线程
- 图像识别开源代码_灰度图像着色开源代码
- SpringBoot 2.x 使用Redis作为项目数据缓存
- CLion设置背景图片(Pycharm等)
- 关于改良报告与学习总结(Ⅰ)
- You specified a pre-MSA CPU in your CFLAGS
- 开源软件的总拥有成本指南
- 辉迅手机号码归属地查询软件 手机号码归属地 手机查询
- 粒子群算法python_用Python实现粒子群算法(PSO)
- 知乎推荐育儿书籍汇总
- AR技术应用 の 如何做一个Pokemon GO这只皮卡丘是你的吗?
- 如何(不)让你的Python代码不再晦涩难懂
- 英语口语练习四十三之7种方式说“温柔”
- openstack的endpoint
热门文章
- kawamura+maya+picture_zbrush+powermill+mach3+cnc=mydream
- libev 源码解析
- Genymotion破解版AMD显卡,虚拟机安装
- 虚拟串口的使用 (vspd)
- cocos creator2.4.4益智教育游戏源码《顶级食物链》源码H5+安卓+IOS三端源码
- Messages BreakPoints in 64dbg(翻译)
- 替代A100,英伟达向中国市场推出性能阉割版A800 GPU芯片
- test STM32F407 ETH RMII
- 在pdf文件中找关键字的坐标
- 基于51单片机的水质水位PH值溶解率电导率水温浊度检测proteus仿真原理图PCB