UARM机械臂手爪夹取力反馈(智能抓取)
本帖最后由 lfshit 于 2015-12-23 11:06 编辑一、FSR400薄膜压力传感器 FSR400薄膜压力传感器用于测量一定受力区域的正压力的一种薄膜传感器,根据正压力不同,输出电阻值不同。淘宝上面有卖,60元左右,实物如下图左图所示。虽然有些小贵,但是测试中发现输出值很稳定,只要标定好了,那么传感器的精度还是蛮高的。该款传感器具体参数如下:1.尺寸:厚(0.48毫米),作用区外径7.6mm2.电阻范围:无限/开路(无压力),100KΩ(压光),200Ω(最大压力100N)3.测力范围:0.2 N(30KΩ)到100N(200Ω) 注:FSR400最大测力100N(1000Ω),不符合下图,需重新校验、标定。 对于我们采购的这片力传感器,实验中标定出其压力—电阻—电压取值如下表:
总电压3.3V(对应ADC转换后为4095)
电位计阻值/ KΩ15
力量描述无刚使劲有点劲较使劲手最大劲
传感器阻值/ KΩ∞5015102
分压输出/ V3.32.51.71.30.34~0.4
4.电源:使用小于1mA的电流(取决于上拉/下拉电阻和电源电压)5.采集输出电路: 注:本次实验中,电位计R值选为15 KΩ。
二、手爪夹取力反馈方案实现
手爪夹取力反馈原理及实现:将薄膜力传感器贴在机械臂手爪内侧,单边贴即可,将力传感器输出端与定值电位器串联分压,总压3.3V,即无压力状态。随着压力增大,输出电压逐渐减小,有明确的对应关系,见上表。 这个电压接入到手爪控制芯片STM32F030F4P6的PA5口,使用ADC_CH5,(由于没实现双通道ADC同时工作,暂时把源程序中的温度ADC先关了…待完善攻克)。 程序里对这个电压执行判断,若小于一定值,则停止转动,保持当前位置。测试中,可达到预定目标。只是需针对不同抓取物,设置不同的抓取力。测试过程中有时会出现的问题:爪子动作不灵敏…电机嗡嗡响,但是运动传递不到爪子那,执行不了动作。
试验系统实物图
三、附STM32部分程序//GPIOA_Pin_5 SETTINGADC!!! GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//32F1xx为AIN,此处为AN GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); //判断输入压力值,控制机械臂手爪动作。 if(ADC1ConvertedValue<2100) { inverse_speed=0x0fff; normal_speed=0x0a00; GPIO_SetBits(GPIOA,GPIO_Pin_2); } else { inverse_speed=0xffff; normal_speed=0xa000; GPIO_ResetBits(GPIOA,GPIO_Pin_2); } //ADC配置函数static void ADC_Config(void){ ADC_InitTypeDef ADC_InitStructure; /* ADC1 Periph clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); /* ADCs DeInit */ ADC_DeInit(ADC1); /* Initialize ADC structure */ ADC_StructInit(&ADC_InitStructure); ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge =ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward; ADC_Init(ADC1, &ADC_InitStructure); /* Convert the ADC1 Channel 5 with 239.5 Cycles as sampling time */ ADC_SampleTime_239_5Cycles);// ADC_ChannelConfig(ADC1,ADC_Channel_5, ADC_SampleTime_239_5Cycles);// /*ADC Calibration */ ADC_GetCalibrationFactor(ADC1); //ADC_TempSensorCmd(ENABLE); /* Enable the ADC peripheral */ ADC_Cmd(ADC1, ENABLE); /* Wait the ADRDY flag */ while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY)); /* ADC1 regular Software Start Conv */ ADC_StartOfConversion(ADC1); }
恭喜楼主项目取得新进展,顺祝圣诞、元旦双节快乐!!!可否加我QQ109680644,进一步请教学习。 zhuoxianzhi 发表于 2015-12-24 09:48
恭喜楼主项目取得新进展,顺祝圣诞、元旦双节快乐!!!可否加我QQ109680644,进一步请教学习。 ...
谢谢您,也祝您元旦快乐! 学习了,不知道楼主如何解决uarm定位精度不高的问题。 lizjuee 发表于 2016-7-1 08:48
学习了,不知道楼主如何解决uarm定位精度不高的问题。
你说的对,因为舵机的回差有点大,这款的位置误差有点大,我没有解决这个问题。可以关注uarm团队,应该会有高精度版本的~ 请问楼主,我最近也在学习夹爪控制,还没找到控制法,不知您怎去控它呢? 柔爪是不是就不用研究力度等细节了?
页:
[1]