增量式编码器和绝对式编码器,ABI信号和UVW信号、编码器PWM信号

一、编码器的分类

根据检测原理,编码器可分为光学式、磁式、感应式和电容式,根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。

1、增量式编码器 增量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相;A、B两组脉冲相位差90。,从而可方便的判断出旋转方向,而Z相为每转一个脉冲,用于基准点定位。它的优点是原理构造简单,机械平均寿命可在几万小时以上,抗干扰能力强,可靠性高,适合于长距离传输。其缺点是无法输出轴转动的绝对位置信息。

2、绝对式编码器 绝对式编码器是直接输出数字的传感器,在它的圆形码盘上沿径向有若干同心码盘,每条道上有透光和不透光的扇形区相间组成,相邻码道的扇区数目是双倍关系,码盘上的码道数是它的二进制数码的位数,在码盘的一侧是光源,另一侧对应每一码道有一光敏元件,当码盘处于不同位置时,各光敏元件根据受光照与否转换出相应的电平信号,形成二进制数。这种编码器的特点是不要计数器,在转轴的任意位置都可读书一个固定的与位置相对应的数字码。显然,码道数越多精度越大。目前国内已有16位的绝对编码器产品。

3、混合式绝对编码器 混合式绝对编码器,它输出两组信息,一组信息用于检测磁极位置,带有绝对信息功能;另一组则完全同增量式编码器的输出信息。

二、ABI(ABZ)信号和UVW信号

1、ABI信号

如上图,编码器输出三组方波脉冲A、B和I相;A、B两组脉冲相位差90度,根据谁先出现可以方便的判断旋转方向。而Z相为每转一圈输出一个脉冲,用于基准点定位。

2、UVW信号

编码器还可以输出UVW信号来表示电机的位置变化,主要用于无刷直流电机的驱动。

3、PWM信号

编码器还可以输出PWM信号,改变PWM的占空比来表示编码器的绝对位置。

还可以在PWM信号上加上通信信息,传递给单片机:

如上图,把PWM的一个周期分为4119份,12份用来表示开始,4份用来传递错误信息,4095份用来传递位置信息,8份用来表示结束。

  • 37
    点赞
  • 231
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
波场ABI(Application Binary Interface)编码是用于在波场区块链上进行智能合约交互的一种编码格。它定义了智能合约的函数和参数的编码方,以及返回值的解码方。下面是一个使用Python进行波场ABI编码解码的示例: 首先,你需要安装web3.py库,它是一个用于与以太坊和波场区块链进行交互的Python库。你可以使用以下命令安装web3.py: ```shell pip install web3 ``` 接下来,你可以使用以下代码示例来进行波场ABI编码解码: ```python from web3 import Web3 # 创建一个web3实例 w3 = Web3(Web3.HTTPProvider('https://api.trongrid.io')) # 定义合约ABI abi = [ { "constant": True, "inputs": [], "name": "getValue", "outputs": [ { "name": "", "type": "uint256" } ], "payable": False, "stateMutability": "view", "type": "function" }, { "constant": False, "inputs": [ { "name": "_value", "type": "uint256" } ], "name": "setValue", "outputs": [], "payable": False, "stateMutability": "nonpayable", "type": "function" } ] # 创建合约实例 contract_address = '0x1234567890abcdef' contract = w3.eth.contract(address=contract_address, abi=abi) # 编码函数调用 encoded_function_call = contract.encodeABI(fn_name='setValue', args=[42]) # 解码函数调用 decoded_function_call = contract.decode_function_input(encoded_function_call) # 打印结果 print("Encoded function call:", encoded_function_call) print("Decoded function call:", decoded_function_call) ``` 在上面的示例中,我们首先创建了一个web3实例,并指定了波场的API提供者。然后,我们定义了一个合约的ABI(Application Binary Interface),它描述了合约的函数和参数的结构。接下来,我们创建了一个合约实例,指定了合约的地址和ABI。然后,我们使用`encodeABI`方法对函数调用进行编码,将函数名和参数列表作为参数传入。最后,我们使用`decode_function_input`方法对编码后的函数调用进行解码,得到函数名和参数列表。 请注意,上述示例中的合约地址和ABI是示例数据,你需要根据你自己的合约进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【ql君】qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值