舵机无法控制机械臂旋转,反而自转的问题

news/2024/11/23 20:47:56/

        学校举办的机器人大赛需要用arduino uno开发板做一辆小车,同时需要我们配套制作一个机械臂安装在上面。

 于是我用储存了好久的纸板制作了一个非常简陋的“机械臂”--↑↑↑↑↑

但我忽略了一个问题:

纸板太重了,舵机运行的时候只能自转,无法带动机械臂旋转。只有加重舵机的质量(用手按住舵机)才能够控制机械臂旋转。

下面是我的arduino代码,非常繁琐(QAQ)

#include <SoftwareSerial.h>
#include <Servo.h>
#define Servo_1 2
#define Servo_2 3
#define Servo_3 12
#define Servo_4 13
SoftwareSerial BT(8,9);
int serialData;
int Pin_1 = 5;
int Pin_2 = 6;
int Pin_3 = 10;
int Pin_4 = 11;
int a = 0,b = 0,c = 0,d = 0;
Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;
void setup() {pinMode(Pin_1,OUTPUT);pinMode(Pin_2,OUTPUT);pinMode(Pin_3,OUTPUT);pinMode(Pin_4,OUTPUT);pinMode(Servo_1,OUTPUT);myservo1.attach(Servo_1);pinMode(Servo_2,OUTPUT);myservo2.attach(Servo_2);pinMode(Servo_3,OUTPUT);myservo3.a ttach(Servo_3);pinMode(Servo_4,OUTPUT);myservo4.attach(Servo_4);Serial.begin(9600);BT.begin(9600);
}void loop() {if( BT.available()>0 ){serialData = BT.read();if(serialData == '1'){digitalWrite(Pin_1,LOW);digitalWrite(Pin_2,HIGH);digitalWrite(Pin_3,LOW);digitalWrite(Pin_4,HIGH);} else if(serialData == '2'){digitalWrite(Pin_1,HIGH);digitalWrite(Pin_2,LOW);digitalWrite(Pin_3,LOW);digitalWrite(Pin_4,HIGH);} else if(serialData == '0'){digitalWrite(Pin_1,LOW);digitalWrite(Pin_2,LOW);digitalWrite(Pin_3,LOW);digitalWrite(Pin_4,LOW);} else if(serialData == '3'){digitalWrite(Pin_1,LOW);digitalWrite(Pin_2,HIGH);digitalWrite(Pin_3,HIGH);digitalWrite(Pin_4,LOW);} else if(serialData == '4'){digitalWrite(Pin_1,HIGH);digitalWrite(Pin_2,LOW);digitalWrite(Pin_3,HIGH);digitalWrite(Pin_4,LOW);} else if(serialData == 'a'){if(a>-180) a -= 10;myservo1.write(a);} else if(serialData == 'b'){if(a<180) a += 10;myservo1.write(a);}  else if(serialData == 'c'){if(b>-180) b -= 10;myservo2.write(b);} else if(serialData == 'd'){if(b<180) b += 10;myservo2.write(b);} else if(serialData == 'e'){if(c>-180) c -= 10;myservo3.write(c);} else if(serialData == 'f'){if(c<180) c += 10;myservo3.write(c);} else if(serialData == 'g'){if(d>-180) d -= 10;myservo4.write(d);} else if(serialData == 'h'){if(d<180) d += 10;myservo4.write(d);}}}

我试图把舵机和机械臂黏在一起,但无奈并没有用,手边材料有限——只有牙签,纸板等。所以最终也没能得到解决。

以后再想想办法吧,提醒大家如果制作机械臂的时候一定要注意这一点,不要重蹈我的覆辙。


http://www.ppmy.cn/news/872438.html

相关文章

倍福--PLC通过功能块读取第三方伺服COE-Online参数,获取的温度、扭矩、驱动器报错代码

本文介绍通过COE功能块添加第三方伺服的温度、扭矩、驱动器报错PDO。 扫描IO 首先扫描IO配置 CoE 接口的驱动器,要在 PLC 程序中修改驱动器参数,可以使用 CoeSDO 通讯的方式 。 CoeSDO 通 讯 的 功 能 块 包 括 FB_EcCoeSdoRead , FB_EcCoeSdoWrite ,FB_EcCoeSdoReadEx ,…

三轴加速度传感器的驱动编程

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 学习之路&#xff0c;长路漫漫&#xff0c;写学习笔记的过程就是把知识讲给自己听的过程。这个过程中&#xff0c;我们去记录思考的过程&#xff0c;便于日后复习&#xff0c;梳理自己的思路。学习之乐&#xff0c;独乐乐&a…

机器人手眼标定 (四轴六轴都适用)

机器人手眼标定 &#xff08;四轴/六轴都适用&#xff09; 问题解析 ​ 机器人手眼标定分为两种情况&#xff1a;eye-in-hand和eye-to-hand&#xff0c;即传感器是否安装在机器人手抓末端。不管是那种情况&#xff0c;手眼标定的科学问题都是求解AXXD的问题&#xff0c;其中X…

DFIG控制1:转子侧变换器控制

双馈发电机控制1&#xff1a;转子侧变换器控制 软件版本&#xff1a;MATLAB Simulink R2022b 参考资料&#xff1a; DFIM Tutorial 1 - Implementation and Control of a DFIM in Matlab-SimulinkH. Abu-Rub, M. Malinowski, and K. Al-Haddad, Power Electronics for Renewab…

伺服增益调整方法

伺服增益参数调整方法 2012-05-10 11:23:29| 分类&#xff1a; 默认分类 | 标签&#xff1a;伺服 增益 伺服增益 松下 松下电机 |字号大中小 订阅 http://www.autozhaopin.com/bbs/thread-18593-1-1.html 引用地址 首先&#xff0c;机械本身的结构对伺服增益的调整…

基于ESP32四旋翼无人机如何根据PID算法进行电机的PWM duty补偿

1.计算模型 电机位置和补偿输出的关系&#xff0c;需要求解的是C1,C2,C3,C4的电机输出补偿值。分别对应M1,M2,M3,M4四个电机。 2.推导过程&#xff08;可以跳过不看&#xff0c;直接到第三步&#xff09; 3. 四个电机的PID补偿输出的算法如下&#xff1a; C1到C4的值是根据…

伺服增益参数简述及其调整

参考文献 [1] 颜嘉男. 伺服电机应用技术[M]. 第1版. 北京:科学出版社, 2010. [2] 台达. ASDA-B2伺服手册[EB/OL]. [3] 陈国强, Putra A S. 工业自动化中的驱动与控制[M]. 第1版. 北京:机械工业出版社, 2016 :86-105. 相关内容回顾&#xff1a; 伺服电机基本概念解析&#xff1…

ORACLE 表空间不足与用户配额(限额)不足的问题解决

表空间不足与用户配额不足是两种不同的概念。表空间的大小是指实际的用户表空间的大小&#xff0c;而配额大小指的是用户指定使用表空间的的大小。两者的解决方式亦不相同。(看看这里)配额问题的解决&#xff1a;alter user skate quota 2g on tablespace_name;视图&#xff1a…