当前位置: 首页 > news >正文

asp.net网站 兼容牧和邻宠物网站建设

asp.net网站 兼容,牧和邻宠物网站建设,网站安全建设管理制度,免费crm系统下载实例4#xff1a;树莓派GPIO控制舵机转动 实验目的 通过背景知识学习#xff0c;了解舵机的外观及基本运动方式。了解四足机器人mini pupper腿部单个舵机的组成结构。通过GPIO对舵机进行转动控制#xff0c;熟悉PWM。了解mini pupper舵机组的整体调零。 实验要求 使用Py…实例4树莓派GPIO控制舵机转动 实验目的 通过背景知识学习了解舵机的外观及基本运动方式。了解四足机器人mini pupper腿部单个舵机的组成结构。通过GPIO对舵机进行转动控制熟悉PWM。了解mini pupper舵机组的整体调零。 实验要求 使用Python语言编程在编程中使用PWM方法通过树莓派GPIO控制外部舵机来回摆动角度范围为0°~180°周期为四秒。 实验知识 1. 什么是舵机 舵机servomotor是一种简化版本的伺服电机是位置伺服的驱动器能够通过输入PWM信号控制旋转角度具备轻量、小型、简化和性价比高的特点。 舵机适用于那些需要角度不断变化并可以保持的简单控制系统它能实现较为精确的电机控制在航模、遥控玩具、机器狗等品类上运用良好。 图片1一般舵机的外观 2. 舵机的运动方式 舵机的运动方式是绕轴摆动“舵机”一词也和它的运动方式有关舵机常用来摆动调整方向就像海洋上的水手的舵一样航模和船模常常用舵机的摆动来调整一些零部件的角度。 图片2舵机的运动动图 3. 舵机的组成结构 舵机一般是由保护外壳、内部集成控制芯片、小型直流电机、减速器齿轮组、位置检测单元构成的。 当主控给舵机发出转动信号时控制芯片驱动电机开始转动通过减速器将动力传达到输出轴上的摆臂由位置检测单元反馈转动结果信号给主控进行反馈调节。 一般来说位置检测单元可以是可变电阻当舵机转动时可变电阻随之改变由此可得转动的角度信息。舵机包含了电机、传感器和控制器是一个集成度高的、完整的伺服电机系统。 图片3舵机的内部结构拍摄 4. mini pupper定制舵机的部分硬件参数 芒砀科技MANGDANG针对mini pupper的运动需求在原型舵机的基础上优化改进了机械结构定制了mini pupper专用舵机这使得mini pupper的控制更加精确、动力更加澎湃。 图片3定制舵机的外观 参考链接mini pupper定制电机规格书 课程附件 MiniPupper-Servo-Spec.pdf 5.mini pupper舵机的控制方法 对于舵机的控制首先要了解其基本硬件参数以及舵机对信号通讯的要求。 如图所示mini pupper一代舵机允许PWM的直接使用也就是说舵机可以直接连接到树莓派上的GPIO_PWM端口使用而不需要考虑通讯协议这对机器人入门开发者来说较为友好。 图片4舵机端口的连线 mini pupper一代舵机部分参数表 namevalue端口1(黄)PWM Signal端口2(红)Vcc端口3 (棕)GND信号周期20ms信号频率50HZ脉冲长度范围500us-2500us to 0°~180°脉冲长度对应占空比2.5% - 12.5%信号高电平范围2V-5V信号低电平范围0.0V-0.45V中间位对应脉冲1500 μsec 需要注意的是 占空比脉宽/周期 脉宽500us-2500us对应的占空比为2.5% - 12.5% 6. RPi的GPIO库中PWM的用法 import RPi.GPIO as GPIO # 引入GPIO库GPIO.setmode(GPIO.BOARD) #初始化GPIO引脚编码方式需放在代码正式开始处 GPIO.setup(12, GPIO.OUT) #初始化GPIO引脚设置需放在代码正式开始处p GPIO.PWM(channel, frequency) # 创建pwm实例 channel为引脚号 frequency为频率p.start(dc) # 开始pwm dc为初始占空比(0.0 dc 100.0)p.stop() # 停止pwmp.ChangeFrequency(freq) # 改变频率Hzfreqp.ChangeDutyCycle(dc) # 改变占空比(0.0 dc 100.0)GPIO.cleanup() # 清理GPIO引脚参考链接RPi GPIO库中PWM()函数的详细资料 实验步骤 1. 编写Python程序 servo_PWM_GPIO.py #!/usr/bin/python # coding:utf-8 # servo_PWM_GPIO.py # 树莓派GPIO控制外部舵机来回摆动角度范围为0~180°周期为4秒。 try:import RPi.GPIO as GPIO except RuntimeError:print(Error importing RPi.GPIO! This is probably because you need superuser privileges. You can achieve this by using sudo to run your script) import timedef servo_map(before_value, before_range_min, before_range_max, after_range_min, after_range_max):功能:将某个范围的值映射为另一个范围的值参数原范围某值原范围最小值原范围最大值变换后范围最小值变换后范围最大值返回变换后范围对应某值percent (before_value - before_range_min) / (before_range_max - before_range_min)after_value after_range_min percent * (after_range_max - after_range_min)return after_valueGPIO.setmode(GPIO.BOARD) # 初始化GPIO引脚编码方式 servo_SIG 32 servo_VCC 4 servo_GND 6 servo_frec 50 servo_time 0.01 servo_width_min 2.5 servo_width_max 12.5 # servo_degree_div servo_width_max - servo_width_min)/180 GPIO.setup(servo_SIG, GPIO.OUT) # 如果你需要忽视引脚复用警告请调用GPIO.setwarnings(False) # GPIO.setwarnings(False) servo GPIO.PWM(servo_SIG, servo_frec) # 信号引脚servo_SIG 频率servo_frec in HZ servo.start(0) servo.ChangeDutyCycle(servo_width_min) # 回归-90° print(预设置完成两秒后开始摆动) time.sleep(2) try: # try和except为固定搭配用于捕捉执行过程中用户是否按下ctrlC终止程序while 1:for dc in range(1, 181, 1):dc_trans servo_map(dc, 0, 180, servo_width_min, servo_width_max)servo.ChangeDutyCycle(dc_trans)# print(dc_trans)time.sleep(servo_time)time.sleep(0.2)for dc in range(180, -1, -1):dc_trans servo_map(dc, 0, 180, servo_width_min, servo_width_max)servo.ChangeDutyCycle(dc_trans)# print(dc_trans)time.sleep(servo_time)time.sleep(0.2) except KeyboardInterrupt:pass servo.stop() # 停止pwm GPIO.cleanup() # 清理GPIO引脚2. 运行程序servo_PWM_GPIO.py并观察效果 在servo_PWM_GPIO.py的目录下执行以下命令 sudo python servo_PWM_GPIO.py此时应观察到舵机在树莓派的控制下来回摆动角度范围为0°~180°周期为四秒。 3. 尝试运行Python程序 servo_PWM_GPIO_2.py[可选] 如果你希望尝试手动输入一个角度值来转动舵机你可以试试servo_PWM_GPIO_2.py #!/usr/bin/python # coding:utf-8 # servo_PWM_GPIO_2.py # 输入一个角度值舵机将转动到对应的角度 try:import RPi.GPIO as GPIO except RuntimeError:print(Error importing RPi.GPIO! This is probably because you need superuser privileges. You can achieve this by using sudo to run your script) import timedef servo_map(before_value, before_range_min, before_range_max, after_range_min, after_range_max):功能:将某个范围的值映射为另一个范围的值参数原范围某值原范围最小值原范围最大值变换后范围最小值变换后范围最大值返回变换后范围对应某值percent (before_value - before_range_min) / (before_range_max - before_range_min)after_value after_range_min percent * (after_range_max - after_range_min)return after_valueGPIO.setmode(GPIO.BOARD) # 初始化GPIO引脚编码方式 servo_SIG 32 servo_VCC 4 servo_GND 6 servo_frec 50 servo_time 0.01 servo_width_min 2.5 servo_width_max 12.5 # servo_degree_div servo_width_max - servo_width_min)/180 GPIO.setup(servo_SIG, GPIO.OUT) # 如果你需要忽视引脚复用警告请调用GPIO.setwarnings(False) # GPIO.setwarnings(False) servo GPIO.PWM(servo_SIG, servo_frec) # 信号引脚servo_SIG 频率servo_frec in HZ servo.start(0) servo.ChangeDutyCycle(servo_width_min) # 回归-90° print(预设置完成两秒后开始等待输入) time.sleep(2) # 为舵机指定位置 try: # try和except为固定搭配用于捕捉执行过程中用户是否按下ctrlC终止程序while 1:position input(请输入0°-180°的角度值\n)if position.isdigit()1:dc int(position)if (dc0) and (dc180):dc_transservo_map(dc, 0, 180,servo_width_min,servo_width_max)servo.ChangeDutyCycle(dc_trans)print(已转动到%d°处%dc)else:print(Error Input:Exceed Range)else:print(Error Input:Not Int Input) except KeyboardInterrupt:passservo.stop() # 停止pwm GPIO.cleanup() # 清理GPIO引脚4.尝试调零[可选] 为了确保控制精度mini pupper上的舵机组通常在使用前先进行一次调零。 试试在命令行中运行舵机调零脚本 run_set_neatral.sh sudo ./run_set_neatral.sh#!/usr/bin/env sh# step 1 stop robot service systemctl stop robot# step 2 set neatral positionecho 1500000 /sys/class/pwm/pwmchip0/pwm0/duty_cycle echo pwm 0 setting pwm off parameter -- 90 degree echo 1500000 /sys/class/pwm/pwmchip0/pwm1/duty_cycle echo pwm 1 setting pwm off parameter -- 90 degreeecho 500000 /sys/class/pwm/pwmchip0/pwm2/duty_cycle echo pwm 2 setting pwm off parameter -- 0 degreeecho 2500000 /sys/class/pwm/pwmchip0/pwm3/duty_cycle echo pwm 3 setting pwm off parameter -- 180 degreesleep 1echo Done ! 如果希望了解校准的详细信息你可以查看mini pupper的官方文档校准 确保 Mini Pupper 已预先组装好使用GUI校准工具来优化腿部的位置。 对于每条腿移动杆使所有腿都成 45 度角。 腿的角度会随着滑动条在屏幕上的位置而变化。 如果它不动则说明您执行的步骤不正确。 您可以使用 iPhone 的倾斜传感器app、尺子或量角器来测量角度。 实验总结 经过本知识点的学习和实验操作你应该能达到以下水平 知识点内容了解熟悉掌握舵机舵机的外观及基本运动方式✔舵机单个舵机的组成结构✔PWMPWM方法对舵机进行转动控制✔调零与校准mini pupper舵机组的调零与校准✔ 版权信息教材尚未完善此处预留版权信息处理方式 mini pupper相关内容可访问https://github.com/mangdangroboticsclub
http://www.w-s-a.com/news/857281/

相关文章:

  • 南宁一站网网络技术有限公司网站开发技术应用领域
  • 公司网站建设方案ppt专业构建网站的公司
  • 深圳网站建设方维网络网站框架设计好后怎么做
  • 合肥网站建设过程网站栏目建设调研
  • 手机访问网站页面丢失北京电商平台网站建设
  • 郑州网站怎么推广中山 网站关键词优化
  • 国外试用网站空间网站建设与管理题目
  • 淄博网赢网站建设网站设计的技术选择
  • 建外贸网站 东莞厦门做网站最好的公司
  • 为您服务网站新网站做百度推广
  • 电子商务免费网站建设网站制作哪个好薇
  • 全面启动门户网站建设中小型企业建设一个网站大概需要多少钱
  • 建网站一般多少钱网站建设上传服务器步骤
  • 手机销售网站怎么做的网站推广优化建设方案
  • 做任务分享赚钱的网站德阳网站建设公司哪家好
  • 云南建设工程质量监督网站wordpress网站导航主题
  • 徐州网站建设哪家好薇手机开源网站代码
  • 更新网站要怎么做呢泰安市58同城招聘网
  • 溧阳网站建设价格企业网站设计费用
  • 我建设的网站打开很慢河北住房和城乡建设厅网站卡
  • 门户网站广告的特点有网站的建设初步定位
  • 建设网站第一步网页建设方案
  • 网站开发需要那些人才wordpress 小工具原理
  • 广州建设局官方网站佛山高端网站制作公司
  • 东莞哪里能学建设网站网站备案值得吗
  • 中山 网站建设 骏域小程序开发课程
  • 北京网站建设成都微商城app官方下载
  • 网站开发用户登陆的安全wordpress 开发网站
  • 网站建设容易出现的问题四川seo关键词工具
  • 做外单网站有哪些内容服务好的南京网站建设