深度优先

这个家伙好懒,除了文章什么都没留下

0%

【Iot】树莓派自助投食器

https://steemit.com/utopian-io/@cha0s0000/arduino-sg90
https://www.cnblogs.com/zhanggaoxing/p/11748663.html
https://github.com/dotnet/iot/blob/master/src/devices/ServoMotor/README.md

一、认识SG90舵机模块及应用

舵机,也叫做伺服马达,内部控制系统是具有闭环控制系统的机电结构。

舵机由以下部件组成:

  • 外壳
  • 电路板
  • 无核心马达
  • 齿轮
  • 位置检测器

SG90舵机模块的的原理主要是由核心闭环控制系统发出PWM(脉冲宽度调制)信号给舵机,然后信号在电路板上得到IC处理之后计算出转动的角度, 根据设定的角度驱动无核心马达转动,通过减速齿轮给摆臂以动力,在此同时电位器返回当前的位置信号,判断是否已经到达设定位置。

SG90舵机模块的特性如下:

  • 只能旋转180度
  • 尺寸:22.3 X 11.8 X 26.3 mm
  • 操作速度:0.12秒/60度(4.8V);0.1秒/60度(6.0V)(无负载条件下)
  • 扭矩大小:1.3kg·cm(4.8V);1.5kg·cm(6.0V)
  • 操作温度:-30~+60°C
  • 正常工作电压:4.8V~6V

二、编写程序驱动SG90舵机模块转动

连接Arudino UNO与SG90舵机模块

SG90舵机模块出厂时配有三条不同颜色的接线已连接在舵机控制电路上,分别是:

  • 棕色 : 接地线

  • 红色 : 接电源正极线

  • 橙色 : 模块信号输出引脚

Arduino UNO SG90舵机模块
GND 棕色接线
5V 红色接线
D10 橙色接线
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using Iot.Device.ServoMotor;
using Iot.Device.Uln2003;
using System;
using System.Device.Pwm;
using System.Threading;

namespace MyServoMotor
{
internal class Program
{
private static void Main(string[] args)
{
ServoMotor servoMotor = new ServoMotor(PwmChannel.Create(0, 0));

servoMotor.Start(); // Enable control signal.
while (true)
{
//for (int i = 0; i < 180; i++)
//{
// servoMotor.WriteAngle(i);
// Thread.Sleep(15 * 1);
//}
//for (int i = 180; i >= 1; i--)
//{
// servoMotor.WriteAngle(i);
// Thread.Sleep(15 * 1);
//}
servoMotor.WriteAngle(0);
Thread.Sleep(100 * 1);
servoMotor.WriteAngle(90);
Thread.Sleep(100 * 1);
servoMotor.WriteAngle(180);
Thread.Sleep(100 * 1);
servoMotor.WriteAngle(90);
Thread.Sleep(100 * 1);
Console.WriteLine(DateTime.Now);
}
//servoMotor.Stop();
}
}
}

如何启用 Raspberry Pi 上的 PWM ?

修改 /boot/config.txt ,添加 dtoverlay=pwm 。

启用 PWM 通道 1 请参考:https://github.com/raspberrypi/firmware/issues/1178

修改 GPIO 引脚功能请参考:https://www.dummies.com/computers/raspberry-pi/raspberry-pi-gpio-pin-alternate-functionshttp://abyz.me.uk/rpi/pigpio/pigs.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# dtoverlay=pwm
# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
disable_overscan=0

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=82

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
#dtparam=i2s=on
dtparam=spi=on

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2


[all]
#dtoverlay=vc4-fkms-v3d

audio_pwm_mode=2
dtoverlay=audremap,pins_18_19
dtoverlay=pwm-2chan,pin=18,func=2,pin2=19,func2=2
dtoverlay=vga666-6
start_x=1
gpu_mem=128
enable_uart=1
dtoverlay=w1-gpio