>> 模塊的廠家資料下載請(qǐng)查看百度網(wǎng)盤鏈接 工作電" />

一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CW32模塊使用 EC11旋轉(zhuǎn)編碼器

CW32生態(tài)社區(qū) ? 來(lái)源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2024-09-09 18:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

旋轉(zhuǎn)編碼器是一種將旋轉(zhuǎn)位移轉(zhuǎn)換為一連串?dāng)?shù)字脈沖信號(hào)的旋轉(zhuǎn)式傳感器。這些脈沖用來(lái)控制角位移。讀數(shù)系統(tǒng)通常采用差分方式,即將兩個(gè)波形一樣但相位差為180°的不同信號(hào)進(jìn)行比較,以便提高輸出信號(hào)的質(zhì)量和穩(wěn)定性。讀數(shù)是在兩個(gè)信號(hào)的差別基礎(chǔ)上形成的,從而消除了干擾。

1.模塊來(lái)源

模塊實(shí)物展示:

wKgZombezTaAE2hMAAAizv4lfuY91.webp



資料下載鏈接:https://pan.baidu.com/s/18pp1KaT2V_llizWvdIXtKA?pwd=8889
資料提取碼:8889

2.規(guī)格參數(shù)

>>>

模塊的廠家資料下載請(qǐng)查看百度網(wǎng)盤鏈接

工作電壓:5V

工作電流:1MA

模塊尺寸:18 x 25 mm

旋轉(zhuǎn)角度: 360度

通信協(xié)議:相位差

管腳數(shù)量:5 Pin(2.54mm間距排針

3.移植過(guò)程

我們的目標(biāo)是在立創(chuàng)·CW32F030C8T6開發(fā)板上能夠判斷旋轉(zhuǎn)方向、旋轉(zhuǎn)次數(shù)和是否按下的功能。首先要獲取資料,查看數(shù)據(jù)手冊(cè)應(yīng)如何實(shí)現(xiàn),再移植至我們的工程。

3.1查看資料

旋轉(zhuǎn)編碼器是通過(guò)兩個(gè)引腳的相位差,實(shí)現(xiàn)的旋轉(zhuǎn)方向判斷(以后的CLK引腳統(tǒng)一稱呼為A相,DT引腳為B相)

當(dāng)是順時(shí)針旋轉(zhuǎn)時(shí),A相超前B相90度,即A相為下降沿時(shí),B相為低電平;A相為上升沿時(shí),B相為高電平。

當(dāng)是逆時(shí)針旋轉(zhuǎn)時(shí),B相超前A相90度,即A相為下降沿時(shí),B相為高電平;A相為上升沿時(shí),B相為低電平。

wKgaombezTeAVtH6AAA3KtpXk8811.webp

而EC11按旋轉(zhuǎn)的輸出動(dòng)作可以分為兩種。

一種是轉(zhuǎn)兩格,A、B端輸出一個(gè)完整脈沖(轉(zhuǎn)一格就只是由低電平->高電平或由高電平->低電平);

一種就是轉(zhuǎn)一格,A、B對(duì)C端輸出一個(gè)完整脈沖。

wKgZombezTeAFFzZAAALcjDaCxY05.webp


轉(zhuǎn)一格半個(gè)脈沖

wKgaombezTiAbIQVAAAOisBuVHI11.webp


轉(zhuǎn)一格完整脈沖

因此我們只需檢測(cè)A相或者B相有發(fā)生高低電平跳變時(shí),就判斷另一相狀態(tài),來(lái)決定旋轉(zhuǎn)方向。根據(jù)以下真值表,可以發(fā)現(xiàn):

當(dāng)兩相同時(shí)為上升沿或者同時(shí)為下降沿時(shí),則為順時(shí)針;

當(dāng)兩相不同時(shí)為上升沿或者不同時(shí)為下降沿時(shí),則為逆時(shí)針;

下B相 右A相 上升沿 下降沿
上升沿 順時(shí)針 逆時(shí)針
下降沿 逆時(shí)針 順時(shí)針

旋轉(zhuǎn)編碼器是機(jī)械結(jié)構(gòu)的,是機(jī)械結(jié)構(gòu)就避免不了在旋轉(zhuǎn)或者按下時(shí)有抖動(dòng),這里采用定時(shí)器每隔10ms掃描一次編碼器是否有動(dòng)作,實(shí)現(xiàn)10ms內(nèi)的消抖。

wKgZombezTiAHXRlAACKclU9UZE27.webp

wKgaombezTiAPV_ZAABbeDWaFEQ91.webp

在中斷服務(wù)函數(shù)中,根據(jù)真值表確定旋轉(zhuǎn)的方向。

wKgZombezTmAMenMAADdiih9-AE98.webp

3.2引腳選擇

該模塊有5個(gè)引腳,具體引腳連接見 表 各引腳連接。

wKgaombezTmAMH-SAACDGPfYy7s71.webp

3.3移植至工程

打開自己的工程。(這里工程參考見入門手冊(cè)工程模板)

移植步驟中的導(dǎo)入.c和.h文件與第二章的第1小節(jié)【DHT11溫濕度傳感器】相同,只是將.c和.h文件更改為ec11.c與ec11.h。這里不再過(guò)多講述,移植完成后面修改相關(guān)代碼。

在文件ec11.c中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-19     LCKFB-LP    first version
 */

#include "ec11.h"
#include "stdio.h"


/******************************************************************
 * 函 數(shù) 名 稱:Encoder_GPIO_Init
 * 函 數(shù) 說(shuō) 明:旋轉(zhuǎn)編碼器引腳初始化
 * 函 數(shù) 形 參:無(wú)
 * 函 數(shù) 返 回:無(wú)
 * 作       者:LC
 * 備       注:使用定時(shí)器每10Ms掃描一次是否有旋轉(zhuǎn),即通過(guò)定時(shí)器進(jìn)行消抖
******************************************************************/
void Encoder_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;                     // GPIO初始化結(jié)構(gòu)體
    BTIM_TimeBaseInitTypeDef BTIM_TimeBaseInitStruct;     // 定時(shí)器初始化結(jié)構(gòu)體

    RCC_GPIO_ENABLE();        // 使能GPIO時(shí)鐘
    BTIM_RCC_ENABLE();        // 使能BTIM時(shí)鐘

    // 禁止中斷,以安全地配置NVIC
    __disable_irq();

    // 開啟BTIM1中斷,并關(guān)聯(lián)到NVIC
    NVIC_EnableIRQ(BSP_TIMER_IRQ);

    // 允許中斷,恢復(fù)中斷狀態(tài)
    __enable_irq();

    GPIO_InitStruct.Pins =  GPIO_ENCODER_SW|          // GPIO引腳
                            GPIO_ENCODER_LCK|
                            GPIO_ENCODER_DT;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP;    // 上拉輸入
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;          // 輸出速度高
    GPIO_Init(PORT_GPIO, &GPIO_InitStruct);           // 初始化


    // 配置定時(shí)器模式、周期和預(yù)分頻器
    BTIM_TimeBaseInitStruct.BTIM_Mode = BTIM_Mode_TIMER;       // 設(shè)置為定時(shí)器模式
    BTIM_TimeBaseInitStruct.BTIM_Period = 625 - 1;             // 設(shè)置周期,使得定時(shí)器每10ms產(chǎn)生一次溢出中斷
    BTIM_TimeBaseInitStruct.BTIM_Prescaler = BTIM_PRS_DIV1024; // 預(yù)分頻器設(shè)置為1024,以降低時(shí)鐘頻

    // 使用上述配置初始化定時(shí)器BTIM1
    BTIM_TimeBaseInit(BSP_TIMER, &BTIM_TimeBaseInitStruct);

    // 使能BTIM1的溢出中斷
    BTIM_ITConfig(BSP_TIMER, BTIM_IT_OV, ENABLE);

    // 啟動(dòng)定時(shí)器BTIM1
    BTIM_Cmd(BSP_TIMER, ENABLE);
}


/******************************************************************
 * 函 數(shù) 名 稱:Encoder_Scanf
 * 函 數(shù) 說(shuō) 明:判斷旋轉(zhuǎn)編碼器是否有往哪一個(gè)方向旋轉(zhuǎn)
 * 函 數(shù) 形 參:無(wú)
 * 函 數(shù) 返 回:1=正轉(zhuǎn) 2=反轉(zhuǎn)
 * 作       者:LC
 * 備       注:哪一邊正轉(zhuǎn)哪一邊反轉(zhuǎn)不需要太在意,你說(shuō)的算
******************************************************************/
char Encoder_Scanf(void)
{
    static GPIO_PinState EC11_CLK_Last= GPIO_Pin_RESET; //EC11的LCK引腳上一次的狀態(tài)(A相)
    static GPIO_PinState EC11_DT_Last = GPIO_Pin_RESET; //EC11的DT引腳上一次的狀態(tài)(B相)
    char ScanResult = 0;
    //當(dāng)A發(fā)生跳變時(shí)采集B當(dāng)前的狀態(tài),并將B與上一次的狀態(tài)進(jìn)行對(duì)比。
    if(GET_CLK_STATE !=EC11_CLK_Last)
    {           //若A 0->1 時(shí),B 1->0 正轉(zhuǎn);若A 1->0 時(shí),B 0->1 正轉(zhuǎn);
                //若A 0->1 時(shí),B 0->1 反轉(zhuǎn);若A 1->0 時(shí),B 1->0 反轉(zhuǎn)
        if(GET_CLK_STATE == 1)     //EC11_A和上一次狀態(tài)相比,為上升沿
        {
            //EC11_B和上一次狀態(tài)相比,為下降沿
            if((EC11_DT_Last == 1)&&(GET_DT_STATE == 0))
                ScanResult = 1;  //正轉(zhuǎn)
             //EC11_B和上一次狀態(tài)相比,為上升沿
            if((EC11_DT_Last == 0)&&(GET_DT_STATE == 1))
                ScanResult = 2; //反轉(zhuǎn)

            //>>>>>>>>>>>>>>>>下面為正轉(zhuǎn)一次再反轉(zhuǎn)或反轉(zhuǎn)一次再正轉(zhuǎn)處理>>>>>>>>>>>>>>下面為正轉(zhuǎn)一次再反轉(zhuǎn)或反轉(zhuǎn)一次再正轉(zhuǎn)處理

在文件ec11.h中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-19     LCKFB-LP    first version
 */
#ifndef _BSP_ENCODER_H_
#define _BSP_ENCODER_H_

#include "board.h"

#define RCC_GPIO_ENABLE()   __RCC_GPIOA_CLK_ENABLE()

#define PORT_GPIO           CW_GPIOA

//SW引腳
#define GPIO_ENCODER_SW     GPIO_PIN_7

//CLK引腳
#define GPIO_ENCODER_LCK    GPIO_PIN_6

//DT引腳
#define GPIO_ENCODER_DT     GPIO_PIN_4

//獲取CLK引腳的狀態(tài)
#define GET_CLK_STATE   GPIO_ReadPin(PORT_GPIO, GPIO_ENCODER_LCK)
//獲取DT引腳的狀態(tài)
#define GET_DT_STATE    GPIO_ReadPin(PORT_GPIO, GPIO_ENCODER_DT)
//獲取SW引腳的狀態(tài)
#define GET_SW_STATE    GPIO_ReadPin(PORT_GPIO, GPIO_ENCODER_SW)

//定時(shí)器掃描
#define BTIM_RCC_ENABLE()            __RCC_BTIM_CLK_ENABLE() // 使能定時(shí)器時(shí)鐘
#define BSP_TIMER                    CW_BTIM1                // 定時(shí)器
#define BSP_TIMER_IRQ                BTIM1_IRQn              // 定時(shí)器中斷
#define BSP_TIMER_IRQHANDLER         BTIM1_IRQHandler        // 定時(shí)器中斷服務(wù)函數(shù)


void Encoder_GPIO_Init(void);//旋轉(zhuǎn)編碼器初始化
unsigned char Encoder_Sw_Down(void);//編碼器是否按下
int Encoder_Rotation_left(void);//左轉(zhuǎn)服務(wù)函數(shù)
int Encoder_Rotation_right(void);//右轉(zhuǎn)服務(wù)函數(shù)


#endif

4.移植驗(yàn)證

在自己工程中的main主函數(shù)中,編寫如下。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-19     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "ec11.h"

int32_t main(void)
{
    board_init();        // 開發(fā)板初始化

    uart1_init(115200);  // 串口1波特率115200

    Encoder_GPIO_Init();
    printf("encoder demo startrn");
    while(1)
    {
        if( Encoder_Sw_Down() == 1 )//旋轉(zhuǎn)編碼器被按下
        {
            printf("Encoder downrn");
        }
    }
}

移植現(xiàn)象:向右旋轉(zhuǎn)10次,向左旋轉(zhuǎn)10次,按下一次。

wKgZombezTqAaLTVAACKQjalaL418.webp

模塊移植成功案例代碼:

鏈接:https://pan.baidu.com/s/18_4-IfR_pzyy1QvyQE7XkQ?pwd=LCKF

提取碼:LCKF

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 旋轉(zhuǎn)編碼器
    +關(guān)注

    關(guān)注

    5

    文章

    160

    瀏覽量

    26354
  • EC11
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    9013
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    255

    瀏覽量

    1254
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    旋轉(zhuǎn)編碼器EC11在stm32中怎么用???

    旋轉(zhuǎn)編碼器EC11,在stm32中怎么用???是要接外部中斷,還是定時(shí)的特定引腳啊?看到論壇里有人發(fā)的,有人說(shuō)接到定時(shí)特定引腳,STM32
    發(fā)表于 05-07 07:00

    EC11旋轉(zhuǎn)編碼器簡(jiǎn)單介紹

    元器件編碼器旋轉(zhuǎn)編碼器
    jf_95215556
    發(fā)布于 :2022年09月28日 19:41:48

    請(qǐng)問(wèn)STM32CubeMX配置Encoder模式如何驅(qū)動(dòng)EC11旋轉(zhuǎn)編碼器

    請(qǐng)問(wèn)STM32CubeMX配置Encoder模式如何驅(qū)動(dòng)EC11旋轉(zhuǎn)編碼器?
    發(fā)表于 11-18 07:48

    EC11編碼器的相關(guān)資料分享

    EC11編碼器EC11編碼器通常又被稱作為旋轉(zhuǎn)編碼器,一般主要是用于亮度、溫度、頻率,音量調(diào)節(jié)等
    發(fā)表于 11-24 06:51

    旋轉(zhuǎn)編碼器EC11驅(qū)動(dòng)的相關(guān)資料推薦

    旋轉(zhuǎn)編碼器EC11驅(qū)動(dòng)/*-------->>>>>>>>--------注意事項(xiàng):EC11旋轉(zhuǎn)編碼器
    發(fā)表于 01-12 08:01

    常用的旋轉(zhuǎn)編碼器ec11介紹

    變化了。常用的旋轉(zhuǎn)編碼器ec11如下:這種編碼器一共有五個(gè)針腳,兩個(gè)是按壓的微動(dòng)開關(guān)使用,和其他功能毫無(wú)關(guān)系。剩
    發(fā)表于 01-20 06:46

    EC11旋轉(zhuǎn)編碼器的相關(guān)資料分享

    1、概述本文所使用的編碼器EC11旋轉(zhuǎn)編碼器,該編碼器由兩個(gè)部分組成,第一部分(3腳ACB)分別為編碼
    發(fā)表于 02-23 07:30

    ec11編碼器接法及分類介紹,工作原理、性能及應(yīng)用解析

    ec11旋轉(zhuǎn)編碼器是一種光電式旋轉(zhuǎn)測(cè)量裝置,它把被測(cè)的角位移或者直接轉(zhuǎn)換成數(shù)字信號(hào)。如若ec11編碼器
    的頭像 發(fā)表于 03-03 13:49 ?7.8w次閱讀

    EC11系列ALPS 11型金屬軸型編碼器的數(shù)據(jù)手冊(cè)免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是EC11系列ALPS 11型金屬軸型編碼器的數(shù)據(jù)手冊(cè)免費(fèi)下載。
    發(fā)表于 05-27 08:00 ?35次下載
    <b class='flag-5'>EC11</b>系列ALPS <b class='flag-5'>11</b>型金屬軸型<b class='flag-5'>編碼器</b>的數(shù)據(jù)手冊(cè)免費(fèi)下載

    EC11系列金屬軸型編碼器的數(shù)據(jù)手冊(cè)免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是EC11系列金屬軸型編碼器的數(shù)據(jù)手冊(cè)免費(fèi)下載。
    發(fā)表于 12-17 17:08 ?67次下載
    <b class='flag-5'>EC11</b>系列金屬軸型<b class='flag-5'>編碼器</b>的數(shù)據(jù)手冊(cè)免費(fèi)下載

    旋轉(zhuǎn)編碼器是什么,它的優(yōu)勢(shì)都有哪些

    旋轉(zhuǎn)編碼器分為增量型編碼器絕對(duì)型編碼器兩種,型號(hào)有EC08、EC11
    發(fā)表于 12-02 17:34 ?5097次閱讀

    EC11編碼器和單片機(jī)通信

    EC11編碼器EC11編碼器通常又被稱作為旋轉(zhuǎn)編碼器,一般主要是用于亮度、溫度、頻率,音量調(diào)節(jié)等
    發(fā)表于 11-16 14:51 ?34次下載
    <b class='flag-5'>EC11</b><b class='flag-5'>編碼器</b>和單片機(jī)通信

    N76E003 旋轉(zhuǎn)編碼器 EC11

    1、概述本文所使用的編碼器EC11旋轉(zhuǎn)編碼器,該編碼器由兩個(gè)部分組成,第一部分(3腳ACB)分別為編碼
    發(fā)表于 12-29 19:23 ?29次下載
    N76E003  <b class='flag-5'>旋轉(zhuǎn)</b><b class='flag-5'>編碼器</b> <b class='flag-5'>EC11</b>

    ec11編碼器 有什么驅(qū)動(dòng)芯片嗎

    EC11編碼器是一種常用的編碼器,通常用于工業(yè)自動(dòng)化、機(jī)器人、數(shù)控機(jī)床等領(lǐng)域。為了驅(qū)動(dòng)EC11編碼器的正常工作,需要使用相應(yīng)的驅(qū)動(dòng)芯片。下面
    的頭像 發(fā)表于 12-13 10:43 ?2465次閱讀

    基于合宙Air780E開發(fā)板集成ec11旋轉(zhuǎn)編碼器實(shí)例

    一個(gè)基于Air780E開發(fā)板,集成ec11旋轉(zhuǎn)編碼器的實(shí)例。
    的頭像 發(fā)表于 08-08 10:13 ?1193次閱讀
    基于合宙Air780E開發(fā)板集成<b class='flag-5'>ec11</b><b class='flag-5'>旋轉(zhuǎn)</b><b class='flag-5'>編碼器</b>實(shí)例