驱动SG90舵机运算
来源:互联网 发布:如何开放服务器端口 编辑:程序博客网 时间:2024/05/16 10:39
一、舵机:
1、1MHZ=1us 1KHZ=1000us 1HZ=1000 000us 1/60HZ=166ms
2、1ms<=脉宽<=2ms --> 1KHZ<=脉宽<=500HZ
3、PWM周期信号20ms;舵机转向左极限角度,正脉冲为2ms,负脉冲为20ms-2ms=18ms
4、舵机控制系统工作稳定,PWM占空比 (0.5~2.5ms 的正脉冲宽度)和舵机的转角(-90°~90°)线性度较好
舵机的控制需要一个20ms左右的时基脉冲(1/0.020s=50HZ),该脉冲的高电平部分为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是:
0.5ms-------------0度; 2.5%
1.0ms------------45度; 5.0%
1.5ms------------90度; 7.5%
2.0ms-----------135度; 10.0%
2.5ms-----------180度; 12.5% C/(180-0)=HL/(2.5-0.5) --> C=90L 一度等于90有效部分脉冲长度比例
def set_servo_angle(channel, angle): #输入角度转换成12^精度的数值
date=4096*((angle*11)+500)/20000#进行四舍五入运算 date=int(4096*((angle*11)+500)/(20000)+0.5)
pwm.set_pwm(channel, 0, date)
尺寸:21.5mmX11.8mmX22.7mm
重量:9克 (1kg=1公斤=2斤)
无负载速度:0.12秒/60度(4.8V)0.002s/度
堵转扭矩:1.2-1.4公斤/厘米(4.8V)
使用温度:-30~~+60摄氏度
死区设定:7us (7MHZ)
工作电压:4.8V-6V
三、位置等级有1024个,有效角度范围180度,控制的角度精度是可以达到180/1024度约0.18度了,从时间上看其实要求的脉宽控制精度为2000/1024us约2us。
四、使用的是每0.02ms进入一次中断,那么数每+1,舵机大概转过0.02/2*185=1.85°。0.5ms-2.5ms这段高电平时间越长舵机转过角度越大,0.5ms舵机就转过0°,2.5ms舵机就转到最大角度(大概185°)
1、1MHZ=1us 1KHZ=1000us 1HZ=1000 000us 1/60HZ=166ms
2、1ms<=脉宽<=2ms --> 1KHZ<=脉宽<=500HZ
3、PWM周期信号20ms;舵机转向左极限角度,正脉冲为2ms,负脉冲为20ms-2ms=18ms
4、舵机控制系统工作稳定,PWM占空比 (0.5~2.5ms 的正脉冲宽度)和舵机的转角(-90°~90°)线性度较好
舵机的控制需要一个20ms左右的时基脉冲(1/0.020s=50HZ),该脉冲的高电平部分为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是:
0.5ms-------------0度; 2.5%
1.0ms------------45度; 5.0%
1.5ms------------90度; 7.5%
2.0ms-----------135度; 10.0%
2.5ms-----------180度; 12.5% C/(180-0)=HL/(2.5-0.5) --> C=90L 一度等于90有效部分脉冲长度比例
#2^12精度 角度转换成数值 #angle输入的角度值(0--180) #pulsewidth高电平占空时间(0.5ms--2.5ms) #/1000将us转换为ms #20ms时基脉冲(50HZ)
pulse_width=((angle*11)+500)/1000 //将角度转化为500(0.5)<-->2480(2.5)的脉宽值(高电平时间) angle=180时 pulse_width=2480us(2.5ms)date/2^12=pulse_width/20 ->有上pulse_width的计算结果得date=2^12*( ((angle*11)+500)/1000 )/20 -->int date=4096((angle*11)+500)/20000;
def set_servo_angle(channel, angle): #输入角度转换成12^精度的数值
date=4096*((angle*11)+500)/20000#进行四舍五入运算 date=int(4096*((angle*11)+500)/(20000)+0.5)
pwm.set_pwm(channel, 0, date)
二、SG90厂家给出的技术数据:
尺寸:21.5mmX11.8mmX22.7mm
重量:9克 (1kg=1公斤=2斤)
无负载速度:0.12秒/60度(4.8V)0.002s/度
堵转扭矩:1.2-1.4公斤/厘米(4.8V)
使用温度:-30~~+60摄氏度
死区设定:7us (7MHZ)
工作电压:4.8V-6V
三、位置等级有1024个,有效角度范围180度,控制的角度精度是可以达到180/1024度约0.18度了,从时间上看其实要求的脉宽控制精度为2000/1024us约2us。
四、使用的是每0.02ms进入一次中断,那么数每+1,舵机大概转过0.02/2*185=1.85°。0.5ms-2.5ms这段高电平时间越长舵机转过角度越大,0.5ms舵机就转过0°,2.5ms舵机就转到最大角度(大概185°)
0 0
- 驱动SG90舵机运算
- 树莓派控制SG90舵机
- 树莓派控制SG90舵机
- 树莓派(raspberryPi)通过wiringpi C库控制sg90舵机
- FPGA 驱动舵机
- stm32 PWM驱动舵机
- STC PCA应用舵机驱动、
- Arduino 舵机驱动板编程
- 树莓派pca9685舵机驱动板python驱动
- 舵机
- 舵机
- Arduino教程(提高篇)——舵机的驱动
- STM32 PWM波驱动模拟舵机(库函数版)
- STM32 PWM波驱动舵机(库函数版)
- 树莓派3b+控制舵机、伺服电机的驱动代码。
- DIY遥控船(一):电调和舵机的驱动[使用STC89C52]
- 基于DragonBoard 410c的遥控炮台一之舵机驱动(上)
- 基于DragonBoard 410c的遥控炮台二之舵机驱动(下)
- 【JZOJ 4912】幻想
- java异常
- ROS工作空间的创建
- 近期总结及未来规划
- Nginx配置 隐藏入口文件index.php
- 驱动SG90舵机运算
- Java如何跳出多层循环 采用标签
- 销量统计
- 第十四周:C语言:输入一个数插入有序数组中
- 第三章 高质量的代码 数值的整数次方
- equals和HashCode 修改一致?
- php清除html标签,除空格和换行
- shell的一些基本命令(使用的小技巧)
- Ubuntu 16.04(32位)下iTop4412环境搭建+Android4.0.3编译