>
工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获 得的直流偏置电压与电位器的电压比较,获得电压差输出。
最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动 电位器旋转,使得电压差为0,电机停止转动。在程序中控制舵机的转动角度,就是生成不同脉宽的PWM就行了。
上面的代码简单的生成一个PWM 驱动舵机旋转,比较简单。 代码中用delay来实现延时,如果是同时控制多个舵机,用这样的代码是不行的,需要自己计算时间。因为用delay整个单片机都“休息”了,无法执行任何代码。在实际实现中,还需要不断的读取传感器输入和进行其他处理。
红外距离传感器
传感器介绍:
SHARP红外距离传感器,用于模型或机器人制作,可以用来测量距离。每个模块赠送一根15cm长PH2.0的单头排线.
技术规格:
探测距离:10-80cm
工作电压:4-5.5V
标准电流消耗:33-50 mA
输出量:模拟量输出,输出电压和探测距离成比例
接好电源,把模拟信号输出端接在单片机的模拟输入Pin就行了。
测试代码:
int potPin = 2;
int ledPin = 13;
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT); }
void loop() {
val = analogRead(potPin);
digitalWrite(ledPin, HIGH);
delay(val);
digitalWrite(ledPin, LOW);
delay(val); }
运行结果,led随着传感器距离的变化闪烁间隔也随着变化。
控制电机
常用的直流电机使用L293D来控制,使用H293的电路如下:
不过在验证是发现,对于小电机,直接用单片机的PWM端子来输出不同电压的来控制速度也是可行的,虽然不太精确,但是对于实现运动
特征是足够了。单片机无法输出真正的线性模拟电压,PWM是通过调整空占比间隔来模拟不同电压值的。
测量了电机在空载和负载情况下电流都只有几十毫安,所以先采取这种简单的办法验证。