Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[笔记]硬件:PWM模拟信号实现 #1

Open
keyskull opened this issue Jan 16, 2016 · 1 comment
Open

[笔记]硬件:PWM模拟信号实现 #1

keyskull opened this issue Jan 16, 2016 · 1 comment

Comments

@keyskull
Copy link
Member

学习笔记的第一话,来个简单易明点的先:

  • PWM信号是一种用于硬件控制的通信信号.
  • PWM信号按周期里更改高低电平各自占用时间的差异来进行控制.
  • 一个周期的时间硬件是有说明文档的.
    • 例如我最近做的四轴飞行器的XXD牌子的电子调速器简称电调(diǎo)的操作频率是50Hz,1/50=0.02秒/次即一个周期的时间为20毫秒20000微妙.
    • C语言的微妙延时的函数是usleep(unsigned int);
    • PS:一个周期即是程序猿的一次loop.
      1 1

_如图所示__T__pwm就是一个周期,_T*on为一个周期的高电平时间,当高电平时间越短,XXD电调就越慢[其他硬件有不同的使用规则的详细问X宝店长或上网找文档].
PS:我是盗图的~.不要问我为什么,我想静静,也不要问我静静是谁.

@keyskull
Copy link
Member Author

keyskull commented Feb 5, 2016

example for Arduino的电平转换函数

  • xxd电调(diǎo)调速
    • xxd电调的调速是要在>500微秒的高电平后才开始的,其他参数你们试试我也说不准,我也没有文档,只是百度回来的~~
int pin=3;//表示信号针脚的地址
int speed=100;
while(true){//确保一个loop需要使用0.02秒运行一次
digitalWrite(pin,HIGH);//高电平
usleep(500+speed);//高电平存在时间越长加速率越高
digitalWrite(pin,LOW);//低电平
usleep(20000-500-speed);//填充延时时间
}
  • SG90陀机角度
int pin = 7; 
int angle = 80;//角度:0~180度.PS: SG90陀机的旋转角度只有180度
digitalWrite(pin ,HIGH);//高电平
usleep(angle*11+500);//将角度转化为500-2480的脉宽值,__SG90陀机的控制范围为500-2480
digitalWrite(pin ,LOW); //低电平
usleep(20000-500-angle*11);  //填充延时时间

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants