舵机

arduino驱动16路舵机

一个人想着一个人 提交于 2020-04-02 21:12:19
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.435e2e8dKDHquW&id=536890985912&_u=21qf7bf5b2a1 无论是电脑USB供电还是专门12v-2A供电 都可以 板子可以级练控制多个 安装库 /*************************************************** This is an example for our Adafruit 16-channel PWM & Servo driver Servo test - this will drive 8 servos, one after the other on the first 8 pins of the PCA9685 Pick one up today in the adafruit shop! ------> http://www.adafruit.com/products/815 These drivers use I2C to communicate, 2 pins are required to interface. Adafruit invests time and resources providing this open source code, please support Adafruit

MG996R舵机防抖问题解决

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-25 00:29:20
import multiprocessing as mp import time import RPi.GPIO as GPIO def gpio_init(): #初始化GPIO,设置初始角和信号输出口36 global pwm global num_ global angle angle = 90 num_ = 0 GPIO.setmode(GPIO.BOARD) GPIO.setup(40,GPIO.IN) GPIO.setup(36, GPIO.OUT) pwm = GPIO.PWM(36, 50) pwm.start(10 / 180 * 90 + 2) pwm.ChangeDutyCycle(0) #清空占空比,这句是防抖关键句,如果没有这句,舵机会狂抖不止 def show_cap(): #死循环 while(1): if GPIO.input(40): break def setDirection(direction): duty = 10 / 180 * direction + 2 pwm.ChangeDutyCycle(duty) print("direction =", direction, "-> duty =", duty) time.sleep(0.04) #等待控制周期结束,舵机的控制周期是20ms,但是不知道为什么要等0.04ms才不会抖 pwm

从智能垃圾桶模型引发的思考?

◇◆丶佛笑我妖孽 提交于 2020-02-09 18:37:03
背景: 随着人们的生活水平不断提高,家居生活现代化是个必然的趋势。智能垃圾桶很好的解决了无需接触垃圾桶就可投放垃圾,防止交叉感染等问题。减少生活当中各种病菌交叉感染的几率;无异味溢出。但其存在需要经常更换电池,电池寿命问题。 目的 : 第一:通过这篇文章,大致能了解目前市面上智能垃圾桶的工作原理。 第二:当使用电池供电,可能对于此产品来讲,功耗会偏大。采用外部供电方式,是否能满足需求。 第三:设计一个产品模型可能不需要考虑很多因素,但设计一款产品考虑因素还有哪些,讨论一下。 实验材料 Arduino控制板 9G舵机 超声波模块 什么是Arduino控制板 它是一款便捷灵活、方便上手的开源型平台。对于初学者是一款极易上手的硬件。 超声波模块的工作原理 通过Trig引脚发一个 10US 以上的高电平,就可以在Echo接收口等待高电平输出;一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。 可能您对此还有疑惑,我们将其换成程序流程: a.单片机引脚触发Trig测距,给至少 10us 的高电平信号; b.模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回; c.有信号返回,通过 IO 输出一高电平,并单片机定时器计算高电平持续的时间; d.超声波从发射到返回的时间. 计算公式

人工神经网络控制下的智能车

半腔热情 提交于 2020-02-02 01:35:32
None****None **我的方法是用摄像头获得的控制量去训练电磁传感器。我将电磁传感器数据及控制量用蓝牙上传至电脑,再用pytorch框架搭建的神网进行反向传播,梯度下降。****在训练迭代一百万次后获取的参数重新写入单片机内运行。 我惊奇地发现实际效果比想象的好:运行平稳流畅。** None 保险丝熔断瞬间 **None****确实,对于电磁解算不知从何下手的我有了极大的帮助。****但是,光靠电磁速度似乎仍旧提不上去。我们仔细分析了一下,舵机每20ms才能进行一次控制,若以3m/s的速度,20ms都能跑出6cm的距离。****并且,舵机转速也不够快,转到对应的位置也需要较长时间。****而电磁传感器就装在舵机前很近的位置,所以,在前瞻有限的情况下,用电磁传感器运行速度慢的现状似乎无法有根本性的突破。** None 室外光电智能车模 **回复:谢谢你的实验工作的分享。可否将你所做的实验更详细的过程、实验数据和录像给我发送过来呢?****如果你所训练的神经网络仅仅是判断当前的偏移量,则结果就会很难突破了。** 建议: None (1)采用RNN结构的动态网络,可以更好捕捉动态运动前后传感器的数据关系,使其对电磁赛道具有更好的预测能力; None (2)需要将所需要的传感器,从单排变成前后多排,将单方向的磁场方向变成多方向,则可以获得更多的磁场信息

树莓派3b+ 舵机驱动开发

浪子不回头ぞ 提交于 2020-01-26 23:17:54
设备:树莓派 3b+ 操作系统:Raspbian 远程访问:SSH 舵机型号:MG90S 使用语言:C,使用wiringPi库。 遇到的难点: PWM频率计算 命令行参数传入C代码时,char向int转换 舵机控制主要用到的函数介绍: wiringPiSetup ( ) ; pinMode ( 1 , PWM_OUTPUT ) ; //only wiringPi pin 1 (BCM_GPIO 18) supports PWM pwmSetMode ( PWM_MODE_MS ) ; // Set to mode: mark:space pwmSetClock ( 192 ) ; //PWM clock: 19.2MHz, divisor 192:100KHz pwmSetRange ( 2000 ) ; //period 20ms pwmWrite ( 1 , 100 ) ; //go default position 舵机控制原理: 周期为20ms,占空比:1ms高电平(最小角度) - 2ms高电平(最大角度)。 从命令行传入的参数为字符串,需转为int类型,才能设置PWM。网上没有找到方便合适的转换函数,故自己编写int char2int(char *argv)。 本程序支持舵机从0 - 90度循环转动。(bash:sudo ./pwm) 本程序支持舵机设置固定角度。

【四足大创】1.2单腿足尖的曲线控制

懵懂的女人 提交于 2020-01-26 23:15:24
【四足大创】1.2单腿足尖的曲线控制 思路 已知足尖的运动轨迹,每隔一小段时间取一个点,通过该点足尖的坐标,倒算出舵机此刻的角度,再让舵机转动到解算出的角度。 Tip:设置几个参数(如足尖运动方程,周期长度,取点间隔等),程序开始运行时,批量计算特定时刻足尖位置,以及位置坐标对应的舵机角度,然后存入数组,之后调用数组数据即可。 足尖曲线 如图所示,曲线分为两部分,上部是一摆线,下部是一条直线,足尖在曲线上周期循环。假设一个周期为2秒,以胯关节为原点,向右为x轴正方向,向下为y轴正方向,则曲线方程可以为(具体参数乱编的): unsigned long long time ; double t , x , y ; time = millis ( ) ; time = time / 2000 ; t = 12.56 * time / 1000 ; if ( t < 6.28 ) { x = t - sin ( t ) - 3.14 ; y = - 1 + cos ( t ) + 10 ; } else { x = - t + 9.42 y = 10 ; } 运动学逆解算 令足尖C点的坐标为(x 0 ,y 0 ),顺时针为x轴正方向,上肢长L 1 ,下肢长L 2 ,C点距原点L 0 ,胯关节舵机应转动至angle_1,膝关节应转动至angle_2,则如图所示: L 0 =sqrt(x 0

PWM波控制舵机总结

主宰稳场 提交于 2020-01-04 22:48:49
文章转自:http://www.geek-workshop.com/thread-70-1-1.html 一、关于舵机: 舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。 舵机的形状和大小多的让人眼花缭乱,大致可以分为下面这几种(如图所示) 最右边的是常见的标准舵机,中间两个小的是微型舵机,左边魁梧的那个是大扭力舵机。图上这几种舵机都是三线控制。 制作机器人常用的舵机有下面几种,而且每种的固定方式也不同,如果从一个型号换成一个型号,整个机械结构都需要重新设计。 第一种是MG995,优点是价格便宜,金属齿轮,耐用度也不错。缺点是扭力比较小,所以负载不能太大,如果做双足机器人之类的这款舵机不是很合适,因为腿部受力太大。做做普通的六足,或者机械手还是不错的。 第二种是SR 403,这款舵机是网友xqi2因MG995做双足机器人抖动太厉害,摸索找到的,经过测试

[TPYBoard - Micropython 之会python就能做硬件 9] 五分种学会用TPYBoard V102 制作避障小车(升级版)

夙愿已清 提交于 2020-01-04 22:47:25
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 感谢山东萝卜电子科技公司授权 一、实验器材 1、TPYboard V102板 1块 2、电机驱动模块L298N 1个 3、电机 2块 4、小车底盘 1个 5、超声波模块 1个 6、舵机 1个 7、SG90舵机支架 1个 8、超声波云台支架 1个 二、超声波模块 1、什么是超声波模块 超声波传感器是利用超声波的特性研制而成的传感器, 它是通过传送一个超声波(远高于人的听觉范围)和提供一个对应于爆裂回声返回到传感器所需时间的输出脉冲来工作的。超声波传感器在非接触性测量方面的应用非常广泛,如检测液体水位(特别是具有腐蚀性的液体,如硫酸、硝酸液体),汽车倒车防撞系统,金属/非金属探伤等,都可以用到超声波距离传感器。 2、超声波模块测距的原理 (1)采用IO口TRIG触发测距,给最少10us的高电平信呈。 (2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回。 (3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。 如下图接线,VCC 供 5V电源, GND 为地线,TRIG 触发控制信号输入,接板子的X9,ECHO 回响信号输出,接板子的X10

xarm舵机id写入例程

て烟熏妆下的殇ゞ 提交于 2019-12-05 17:48:26
主函数 #include "STC12C5A60S2.H" #include "typedef.h" #include "intrins.h" #include "uart.h" #include "LobotSerialServo.h" void Delay1000ms() //@11.0592MHz { unsigned char i, j, k; _nop_(); _nop_(); i = 43; j = 6; k = 203; do { do { while (--k); } while (--j); } while (--i); } int main() { uartInit(); while(1) { LobotSerialServoSetID(254, 1); Delay1000ms(); } } uart.c #include "uart.h" #include "LobotSerialServo.h" #include <string.h> void uartInit() //²¨ÌØÂÊ115200 { PCON &= 0x7F; //?????? SCON = 0x50; //8???,????? AUXR |= 0x04; //???????????Fosc,?1T BRT = 0xFD; //????????????? AUXR |= 0x01; //?

按键举旗

99封情书 提交于 2019-12-05 17:28:53
项目要求:当按下a按键时,能把旗子举起来 材料: microbit控制板 9克舵机 小旗子,写上文字 接线: 舵机接robotbit扩展板s1接口,注意信号线,Vcc,Gnd线 代码: from microbit import * import robotbit while True: robotbit.servo(0,0) sleep(1000) if button_a.was_pressed(): robotbit.servo(0,180) sleep(5000) 说明: 导入robotbit模块库,才能使用以下预定义好的robotbit,servo对象。button_a是microbit模块库中定义的。 robotbit指扩展板对象,servo舵机,第一个参数:0~s1,1~s2,2~s3,.......,8~s9,第二个参数,对应角度,(0~180)之间,相差正负5度 button_a指按键a对象,was_pressed上次被按下过。 sleep(5000),暂停5000毫秒,也就是5秒。 来源: https://www.cnblogs.com/qywyll/p/11937042.html