STM32TSC 용량 센서 터치 감지 (STM32 CubeIDE) 단일 터치 센서 편

2020년 3월 28일에 기술하다
이른바 터치감
기계 부품 없이 인터페이스 구현(입력)
예제 IH 작업 패널 등
STM 32의 F0, F3 시리즈 등에서는 하드웨어로서 터치 센서를 활용하는 기능(TSC)을 갖추고 있으며, 이를 활용해 CPU 자원의 소모를 억제할 수 있다.그리고 재고는 있어요.
개요: 용량 터치 버튼을 간단하게 만들 수 있다(조정을 시도하지 않았다.
그나저나 아두노에도 터치 센서 라이브러리가 있다.(하드웨어가 아닌 소프트웨어 구현)
STM 32의 TSL(터치 감지 라이브러리)에서 교정과 리셋(Cube가 생성된 경우)이 자동으로 수행되기 때문에 적절한 매개 변수라도 잘 작동할 수 있다.
해본 일
시용량 버튼
터치 후 수직 기둥
실제로 수동으로 기술한 코드는 20줄 정도밖에 안 돼요.
컨디션
・NUCLEO-F303 RE
・STM32 CubeIDE
자료.
개요 알기 쉬움: STM32 터치 감지 컨트롤러(TSC) 프레젠테이션
STM32Cube에서 TSC를 실행하는 녀석: UM1913 Developing applications on STM32Cube with STMTouch touch sensing library
TSL(터치 센서 라이브러리)에서 정의
단일 터치 버튼
Touchkey sensor
직선형 터치 센서
Linear sensor
원형 터치 센서
rotary sensor
이번엔 단일 터치 버튼이니까 터치키 관련 항목 설정
프로그램
  • STM 32 CubeIDE의 Device Configuration Tool 설정(GUI를 통해 설정할 수 있는 곳)
    - System Core용 TSC
    - 각 그룹은 샘플링 콘덴서를 연결하고 최대 3개의 센서를 지정합니다(이번에는 하나의 센서).
    - Middleware의 TOUCHSENSEING
    -SSensors selection에서 TSC로 지정된 핀을 터치키와 회전센서 등에 할당(이번에는 터치키)
     
  • 코드별 생성 버튼
        -main.c에 대한 코드 생성 및 TSC 라이브러리 파일 등에 대한 추가(+ 자동 생성 매개 변수와 코드를 초기화하는 tsl user.c 등
  • main.편집 c
    - 터치 센서 조건으로 L-포스트 코드
  • 설명
    단계(상세 설명
    Sytem Core의 TSC에서 설정
    그룹 1의 G6IO1을 샘플링 콘덴서 연결로 설정
     G6_센서로 IO3 지정(이번에는 총 1개

    이어서 Middleware의 TOUCHSENSING을 Enable하여 Sensors selection으로 이동합니다

    여기에 선과 링 모양의 버튼을 사용하는 경우 Lin/Rotary sensors used를 설정하지만, 이번에는 일반적인 터치 버튼을 실현하기 위해 TouchKey sensors의 TSSLPRMTOTAL_TOUCHKEYS의 개수를 1, IO로 설정합니다.TSC에서 TOUCHKEY1을 사용할 버튼 지정(필요: 사전 TSC 설정)
    Config parameters 설정

    Config parameters에서 TSSLPRMUSE_PROX를 0으로 지정합니다.이것은 접근 센서로 사용하는데 이번에는 0이다.그 외에 초기치인 것 같습니다.
    마지막으로 에서 코드 생성
    main.편집 c
     main.c의 추기 부분만 기술합니다.자동으로 생성된 주석에서 위치를 확인하십시오.
    main.c
    /* USER CODE BEGIN PV */
    TSL_tTick_ms_T time_tick;       //タッチセンスライブラリに、タイマを利用せず一定時間毎に実行する関数が存在する。そのカウンタ的な
    uint16_t  reference,delta,state,measure;//デバッグ用
    /* USER CODE END PV */
    
    int main(void){
     /* USER CODE BEGIN 2 */
        tsl_user_status_t tsl_status;
      /* USER CODE END 2 */
      while(1){     
            /* USER CODE BEGIN 3 */
            tsl_status = tsl_user_Exec();
            if (tsl_status != TSL_USER_STATUS_BUSY)//ここは怪しい、
            {
                if (MyTKeys[0].p_Data->StateId == TSL_STATEID_DETECT)//タッチセンサを読みだす 
                {
                    HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET); //LED ON
                }
                else
                {
                    HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);//LED OFF
                }
            }
            //以下デバッグ用 SWVで見やすい
            if (TSL_tim_CheckDelay_ms(10, &time_tick) == TSL_STATUS_OK)
            {
                measure=MyTKeys[0].p_ChD->Meas;         //タッチキーの生の値
                delta=MyTKeys[0].p_ChD->Delta;          //なんか
                reference=MyTKeys[0].p_ChD->Ref;        //しきい値(時間とともにリフレッシュされて適切な値になる
                state=MyTKeys[0].p_Data->StateId;       //ボタンの状態  今回はタッチ中にTSL_STATEID_DETECTとなる
            }
    
        }
      /* USER CODE END 3 */
    
    }
    
    전기회로
    회로는 0.1μF로 PB11과 GND를 연결하고 센서의 PB13은 약간의 배선만 연장한다(사실 10k를 연결하는 것 같다

    실행 결과
    사진 없음
    조절 파라미터가 없기 때문에 동선뿐만 아니라 피막 부분을 터치해도 반응이 있을 수 있다.
    파라미터 조정과 접근 센서 기능은 앞으로 시험해 볼 계획이다

    좋은 웹페이지 즐겨찾기