本帖最后由 梦溪开物 于 2025-2-13 11:03 编辑
不知不觉已经收到泰坦触觉 TITAN Core开发套件半个月了,有时心血来潮总喜欢捣鼓着玩一玩,正好刚刚学习了SolidWorks的一些简单用法,不如给这个”触觉水壶“做一个外壳,最终3D打印可能只是一部分内容,毕竟考虑着节省成本。
按摩头内部填装泰坦的磁悬浮电机和印制电路板(包括泰坦套件和Sensor电路板),电容式Senso是一个铜箔,嵌套在按摩头的四周,能够感知到皮肤的接触,然后将需要发出的振动信息传递给泰坦套件,泰坦套件就会驱动振动电机对皮肤如脖颈、肩膀等进行按摩。所以,该“触觉水壶”既能喝水又能按摩。
Sensor电路板选用PIC16LF1559作为MCU,通过硬件CVD实现对等效电容的相对测量,电路板非常简单,包括一个MCU最小系统和一个LDO电路。电路的原理图和PCB是使用立创EDA软件进行设计的,具体如下所示:
Sensor电路能够与泰坦套件进行通信,传递有效的控制信息,包括磁悬浮电机的振动强度和振动时间等。
这个CVD测量电容的过程大致分为四个步骤,通过测量内部采样保持电容与外部Sensor等效电容充放电的差分电压的形式,来感知和判断外部的触摸事件。
软件系统大致工作流程如下所示。首先是通过触摸事件唤醒系统,然后对Sensor的等效电容进行测量,之后与泰坦套件进行串口通信,最后泰坦套件驱动振动电机实现对人体皮肤的按摩。Sensor电路板的MCU会定时启动系统工作和进入休眠(当没有触摸事件的时候),以达到低功耗的目的。
主程序如下所示。Sensor板具有低功耗的特性,在扫面期间以外的时间,Sensor板会进入低功耗的状态,主程序首先会判断Sensor有没有被触摸,如果被触摸了,再获取触摸信号的大小,也就是如Sensor接触面积越大,触摸信号值越大,Sensor板会告诉Titan套件控制电机的强度,达到预定的激振动力输出,实现触觉反馈的梯度化效果。
- #include "mcc_generated_files/mcc.h"
- #include "mcc_generated_files/mtouch/mtouch.h"
- uint16_t Sensor_Deviation = 0;
-
- void main(void)
- {
-
- SYSTEM_Initialize();
-
-
-
-
-
- INTERRUPT_GlobalInterruptEnable();
-
-
- INTERRUPT_PeripheralInterruptEnable();
-
-
- while (1)
- {
-
- if(MTOUCH_Service_Mainloop())
- {
-
- if (MTOUCH_Button_isPressed(0))
- {
-
-
- Sensor_Deviation = MTOUCH_Button_Deviation_Get(Button0);
- if((Sensor_Deviation < 70)&&(Sensor_Deviation > 50))
- {
- printf("CHNL 0; Tick 0.15 20\r\n");
- }
- else if((Sensor_Deviation < 90)&&(Sensor_Deviation > 70))
- {
- printf("CHNL 0; Tick 0.35 20\r\n");
- }
- else if((Sensor_Deviation < 110)&&(Sensor_Deviation > 90))
- {
- printf("CHNL 0; Tick 0.55 20\r\n");
- }
- else if((Sensor_Deviation < 130)&&(Sensor_Deviation > 110))
- {
- printf("CHNL 0; Tick 0.75 20\r\n");
- }
- else
- {
- }
- }
- else
- {
-
-
- }
- }
- }
- }
- /**
- End of File
- */