当前位置:首页 > Windows程序 > 正文

C#串口控制舵机 arduino源码 及C#源码及界面

2021-03-25 Windows程序

1.舵机原理简介

技术分享

控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。 

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:   

0.5ms--------------0度;    

1.0ms------------45度;    

1.5ms------------90度;    

2.0ms-----------135度;    

2.5ms-----------180度;


2.arduino下位机源码

     #include<Servo.h>  //库文件 Servo servo1;      static int v=0; String mycommand=""; void setup()   {     Serial.begin(9600);//此处为串口设置的波特率 ,可以修改 必须同上位机设置的波特路一致。     servo1.attach(3);  // 控制的端口是~3号     servo1.write(90);   } void loop()   {     while(Serial.available()>0)     {       mycommand+=char(Serial.read());       delay(2);     }     for(int m=0;m<mycommand.length();m++) //         {           char ch = mycommand[m];   //读取串口数据           switch(ch)              {                  case ‘0‘...‘9‘:                        v = v*10 + ch - ‘0‘;   //字符转换成十进制                         break;                   case ‘a‘:   //如果数据后带a,则表示是一号舵机的数据,比如串口发送85a                         //if(v >= 5 || v <= 175 )                             servo1.write(v); // 让A从66度旋转到9度 (可修改角度)                                               //用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°,“V”得到所输入的值而改变角度,比如85a为85度角                          Serial.println(v+"°");//舵机角度改变后 发送改变的角度到上位机。                          v = 0;                           break;                      }               }      mycommand=""; }

技术分享

我选择我的是arduino Uno,舵机的接线方法是红色(VCC)端接控制板的5V处,棕色端接板子的GND,舵机的橙色线为信号线,接板子上的3号口;







温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67220.html