LOVEBABY 发表于 2015-7-8 08:54:25

拆了个加油机的编码器

拆了个加油机的编码器,一不小心码盘搞弯了回不回不去了,看来要下次再找个拆

LearningASM 发表于 2015-7-8 09:08:21

看得眼花花的,120栅一圈?
那问题来了,在这个设备上,这一栅格对应多少油?

LOVEBABY 发表于 2015-7-8 09:30:50

LearningASM 发表于 2015-7-8 09:08
看得眼花花的,120栅一圈?
那问题来了,在这个设备上,这一栅格对应多少油? ...

问我也不懂

mcu5i51 发表于 2015-7-8 09:32:33

LearningASM 发表于 2015-7-8 09:08
看得眼花花的,120栅一圈?
那问题来了,在这个设备上,这一栅格对应多少油? ...

要看齿轮一圈对应多少没了,应该是椭圆齿轮作传感器

LearningASM 发表于 2015-7-8 09:51:01

mcu5i51 发表于 2015-7-8 09:32
要看齿轮一圈对应多少没了,应该是椭圆齿轮作传感器

所以我问,
在这个设备上,这一栅格对应多少油

ahuang227 发表于 2015-7-8 09:56:33

怎么感觉这个编码器有问题啊,接个单片机接到光耦的发射端是什么意思啊?是不是加油的过程中闪两下,多给你记点油进去?

这个9701c 只能在这个直径的码盘上上180度的格子,再精细了做不了。但是经典应用上是不要单片机的啊。

标准论坛尾巴。当你看到这个尾巴的时候就知道你的回复是正常的。

czzhouyun 发表于 2015-7-8 10:47:23

码盘有单独卖的,你这能搞弯啥材料的?不是不锈钢吧?

LOVEBABY 发表于 2015-7-8 11:06:53

ahuang227 发表于 2015-7-8 09:56
怎么感觉这个编码器有问题啊,接个单片机接到光耦的发射端是什么意思啊?是不是加油的过程中闪两下,多给你 ...

不懂是啥意思,不过感觉是处理好的数据送主板去吧

ywq 发表于 2015-7-8 11:07:03

脉冲是多少的?1000的吗?

LOVEBABY 发表于 2015-7-8 11:08:11

ahuang227 发表于 2015-7-8 09:56
怎么感觉这个编码器有问题啊,接个单片机接到光耦的发射端是什么意思啊?是不是加油的过程中闪两下,多给你 ...

不懂是啥意思,不过感觉是处理好的数据送主板去吧

xiaobendan 发表于 2015-7-8 11:10:25

看起来很是高大上的

hefq 发表于 2015-7-8 14:00:52

这种编码器,可以用JLC钢网直接做出来{:lol:}

yufanyufan77 发表于 2017-7-26 16:32:40

本帖最后由 yufanyufan77 于 2017-7-27 09:03 编辑

刚刚写了个加油机编码器程序不知道能用不
#include "Encode.h"


#define T1_PORT        GPIOI
#define T0_PORT        GPIOI
#define T1_PIN        GPIO_Pin_2
#define T0_PIN        GPIO_Pin_3
#define T1_READ()((T1_PORT->IDR & T1_PIN)?1:0)       
#define T0_READ()((T0_PORT->IDR & T0_PIN)?1:0)       

static unsigned long EncodeCounts = 0;//正转脉冲数
static unsigned long EncodePluseErrorCounts = 0;//非加油状态正转脉冲数
static unsigned long DropEncodeCounts = 0;//丢失脉冲数
static unsigned long RbackEncodeCounts = 0;//反转脉冲数
static unsigned char EncodeError = 0;//编码器异常标志



//设置编码器故障代码
void SetEncodeError(unsigned char EncodeErrors)
{
EncodeError = EncodeErrors;
}
//获取编码器错误代码 0:正常1:反转2:脉冲丢失3:T0或T1故障 4:停机还出油 5:脉冲停止
unsigned char GetEncodeError(void)
{
return EncodeError;
}


//设置编码器脉冲数
void SetEncodeCounts(unsigned long EncodeCount)
{
EncodeCounts = EncodeCount;
}
//获取编码器脉冲数
unsigned long GetEncodeCounts(void)
{
return EncodeCounts;
}


void EncodeParmInit(void)
{
SetEncodeCounts(0);
}

//Beep端口初始化
void EncodeInterfaceInit(void)
{
//定义一个接口配置结构
GPIO_InitTypeDef GPIO_InitStruct_Encode;
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOI, ENABLE);//初始化时钟

GPIO_InitStruct_Encode.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;//对应管脚
GPIO_InitStruct_Encode.GPIO_Mode = GPIO_Mode_IN;//输出模式
GPIO_InitStruct_Encode.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct_Encode.GPIO_Speed = GPIO_High_Speed;
GPIO_Init(GPIOI, &GPIO_InitStruct_Encode);
EncodeParmInit();
}

//相位判断
//返回值:0:正常 1:脉冲丢失 2:编码器反转
static unsigned char JudgeEncodeRound(unsigned char T0_val ,unsigned char T1_val)
{
unsigned short temp = 0;
temp = T0_val;
temp = (temp<<2) | T1_val;
switch(temp)
{
//正转
case 0:
case 7:
case 14:
case 8:
return 0;
//反转
case 11:
case 13:
case 4:
case 2:
return 2;
}
//丢脉冲
return 1;
}


//读取编码器
//00 01 11 10
void EncodeProcess(void)
{
unsigned char temp = 0;
unsigned char T0_val = 0;
unsigned char T1_val = 0;
unsigned char EncodeTemp_val = 0;
static unsigned char Encode_val = 0;
static unsigned long EncodeStopCountsTime = 0;//正转脉冲停止时间

T0_val = T0_READ();
T1_val = T1_READ();

EncodeTemp_val = (T0_val<<1) | T1_val;

if(Encode_val == EncodeTemp_val)//此时间段内没有转动
{
    //开始计时
    EncodeStopCountsTime++;
    if(EncodeStopCountsTime>10000)
    {
      SetEncodeError(5);
      EncodeStopCountsTime = 0;
    }
    return ;
}
else
    EncodeStopCountsTime = 0;


temp = JudgeEncodeRound(Encode_val ,EncodeTemp_val);

switch(temp)
{
//正转
case 0:
    Encode_val = EncodeTemp_val;
    EncodeCounts++;
    if(!GetnozzleNumFuelState())//非加油状态
      EncodePluseErrorCounts++;
    if(EncodePluseErrorCounts>100)
      SetEncodeError(4);//停机状态还出油
    break;
case 1:
    //脉冲丢失需修正
    DropEncodeCounts++;
    if(DropEncodeCounts>10&&DropEncodeCounts<20)
    {
      SetEncodeError(2);//丢脉冲
      return;
    }
    if(DropEncodeCounts>20)
    {
      SetEncodeError(3);//T0或T1故障
      return;
    }
    break;
case 2://反转
    Encode_val = EncodeTemp_val;
    RbackEncodeCounts++;
    if(RbackEncodeCounts>20)
    {
      SetEncodeError(1);
      return;
    }
    break;
}
}

yufanyufan77 发表于 2017-7-27 13:28:42

楼主你是做加油机的吗

ffbiao 发表于 2019-12-4 10:35:09

yufanyufan77 发表于 2017-7-26 16:32
刚刚写了个加油机编码器程序不知道能用不
#include "Encode.h"



坛友,你做加油机系统?

shuipaopao 发表于 2019-12-4 11:11:43

这个加油机编码器是双脉冲输出的,一般是开漏输出,不带防作弊功能。带防作弊功能的还带有出口TTL输出,接税控口。

ericdai 发表于 2019-12-4 11:30:58

类似鼠标的原理

newselect 发表于 2019-12-4 11:35:19

换个齿密点的盘是不是可以作弊了

yufanyufan77 发表于 2019-12-20 09:25:22

ffbiao 发表于 2019-12-4 10:35
坛友,你做加油机系统?

是的一直在加油设备行业干

yufanyufan77 发表于 2019-12-20 09:30:30

newselect 发表于 2019-12-4 11:35
换个齿密点的盘是不是可以作弊了

嗯可以少出油但是流量过快加油机会锁死

redworlf007 发表于 2023-3-27 15:40:44

我最近也在倒腾这个编码器。

网络攻城师 发表于 2023-3-27 15:47:38

redworlf007 发表于 2023-3-27 15:40
我最近也在倒腾这个编码器。
(引用自21楼)

1000线以内的码盘 14元包邮,某宝一大堆,卷的飞起,内孔各种各样,

9700   9731的光电编码器读头也是几块钱,自己修不如买新的。

redworlf007 发表于 2023-3-27 17:07:18

网络攻城师 发表于 2023-3-27 15:47
1000线以内的码盘 14元包邮,某宝一大堆,卷的飞起,内孔各种各样,

9700   9731的光电编码器读头也是几 ...
(引用自22楼)

我做的是监听加油机每次加油数据的设备,就是反向获取数据,我从屏幕 站控 税控取到数据,现在在想从编码器脉冲拿出数据来。

redworlf007 发表于 2023-4-18 11:52:52

LearningASM 发表于 2015-7-8 09:08
看得眼花花的,120栅一圈?
那问题来了,在这个设备上,这一栅格对应多少油? ...
(引用自2楼)

转一圈,0.5L的油。
页: [1]
查看完整版本: 拆了个加油机的编码器