UARM机械臂手爪夹取力反馈(智能抓取)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17108|回复: 6

UARM机械臂手爪夹取力反馈(智能抓取)

[复制链接]
发表于 2015-12-23 10:53 | 显示全部楼层 |阅读模式
本帖最后由 lfshit 于 2015-12-23 11:06 编辑

一、  FSR400薄膜压力传感器
    FSR400薄膜压力传感器用于测量一定受力区域的正压力的一种薄膜传感器,根据正压力不同,输出电阻值不同。淘宝上面有卖,60元左右,实物如下图左图所示。虽然有些小贵,但是测试中发现输出值很稳定,只要标定好了,那么传感器的精度还是蛮高的。该款传感器具体参数如下:
  1.尺寸:厚(0.48毫米),作用区外径7.6mm
  2.电阻范围:无限/开路(无压力),100KΩ(压光),200Ω(最大压力100N)
  3.测力范围:0.2 N(30KΩ)到100N(200Ω)
   注:FSR400最大测力100N(1000Ω),不符合下图,需重新校验、标定。
                              
对于我们采购的这片力传感器,实验中标定出其压力—电阻—电压取值如下表:

  
总电压
  
3.3V(对应ADC转换后为4095)
电位计阻值/ KΩ
15
力量描述
刚使劲
有点劲
较使劲
手最大劲
传感器阻值/ KΩ
50
15
10
2
分压输出/ V
3.3
2.5
1.7
1.3
0.34~0.4
  4.电源:使用小于1mA的电流(取决于上拉/下拉电阻和电源电压)
  5.采集输出电路:
注:本次实验中,电位计R值选为15 KΩ。

二、  手爪夹取力反馈方案实现
手爪夹取力反馈原理及实现:将薄膜力传感器贴在机械臂手爪内侧,单边贴即可,将力传感器输出端与定值电位器串联分压,总压3.3V,即无压力状态。随着压力增大,输出电压逐渐减小,有明确的对应关系,见上表。   这个电压接入到手爪控制芯片STM32F030F4P6的PA5口,使用ADC_CH5,(由于没实现双通道ADC同时工作,暂时把源程序中的温度ADC先关了…待完善攻克)。   程序里对这个电压执行判断,若小于一定值,则停止转动,保持当前位置。
测试中,可达到预定目标。只是需针对不同抓取物,设置不同的抓取力。
测试过程中有时会出现的问题:爪子动作不灵敏…电机嗡嗡响,但是运动传递不到爪子那,执行不了动作。

试验系统实物图

三、  附STM32部分程序
//GPIOA_Pin_5 SETTING  ADC!!!
    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);
}

力传感器产品实物

力传感器产品实物

电阻-力 关系图

电阻-力 关系图

力反馈分压采集电路图

力反馈分压采集电路图

试验系统实物图

试验系统实物图
发表于 2015-12-24 09:48 | 显示全部楼层
恭喜楼主项目取得新进展,顺祝圣诞、元旦双节快乐!!!可否加我QQ109680644,进一步请教学习。
 楼主| 发表于 2015-12-29 23:18 | 显示全部楼层
zhuoxianzhi 发表于 2015-12-24 09:48
恭喜楼主项目取得新进展,顺祝圣诞、元旦双节快乐!!!可否加我QQ109680644,进一步请教学习。 ...

谢谢您,也祝您元旦快乐!
发表于 2016-7-1 08:48 | 显示全部楼层
学习了,不知道楼主如何解决uarm定位精度不高的问题。
 楼主| 发表于 2017-6-19 19:21 | 显示全部楼层
lizjuee 发表于 2016-7-1 08:48
学习了,不知道楼主如何解决uarm定位精度不高的问题。

你说的对,因为舵机的回差有点大,这款的位置误差有点大,我没有解决这个问题。可以关注uarm团队,应该会有高精度版本的~
发表于 2021-10-21 12:00 | 显示全部楼层
请问楼主,我最近也在学习夹爪控制,还没找到控制法,不知您怎去控它呢?
发表于 2022-5-13 11:48 | 显示全部楼层
柔爪是不是就不用研究力度等细节了?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:54 , Processed in 0.158551 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表