電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Windows IoT:雙向直流電機控制

Windows IoT:雙向直流電機控制

2022-12-21 | zip | 0.29 MB | 次下載 | 免費

資料介紹

描述

在許多物聯(lián)網(wǎng)場景中,可能需要自動化來物理移動某些東西。為此,您需要使用某種類型的電機。在此示例中,我們將使用L293DNE芯片和運行 Windows IoT Core 操作系統(tǒng)的 Raspberry Pi 2控制單個直流電機。

l293d.pdf

?

所需材料

硬件設(shè)置

單直流電機控制接線圖

?
poYBAGOiXpCAdyJtAAGLomQWjI4098.png
?

數(shù)據(jù)表中的 L293D 引腳輸出圖

?
poYBAGOiXpqAGFiwAAC11jnUIMY084.jpg
?

接線細節(jié)

  • Cobbler 5v 到面包板電源軌 #1
  • Cobbler GND 到面包板接地軌 #1
  • 面包板接地軌 #1 到對面的面包板接地軌 #2
  • L293D 引腳 4、5、12、13 到面包板接地軌
  • L293D 引腳 16 (VCC1) 到面包板電源軌
  • Cobbler 引腳 21 到 L293D 引腳 1 (1,2EN)
  • Cobbler 引腳 20 到 L293D 引腳 2 (1A)
  • Cobbler 引腳 16 到 L293D 引腳 7 (2A)
  • 電池組正極(紅線)到面包板電源軌 #2
  • 電池組接地(黑線)到面包板接地軌 #2
  • L293D 引腳 8 (VCC2) 到面包板電源軌 #2
  • 一根電機線(可互換)到 L293D 引腳 3 (1Y)
  • 一根電機線(可互換)到 L293D 引腳 6 (2Y)

直流電機控制接線

?
poYBAGOiXqOAXxPlAAFOIhr2SCA100.jpg
?

LD293D集成電路

該項目對實現(xiàn)直流電機的雙向控制進行了簡單的考察。有多種方法可以實現(xiàn)此解決方案,這只是其中一種。L293D 芯片能夠控制兩個電機,但在本例中,我們將僅使用 IC 的一側(cè)來控制一個電機。該 IC 依靠 5V 邏輯工作,通過引腳 16 或 VCC1 饋送到芯片。直流電機需要的安培數(shù)比 Raspberry Pi 所能輸出的要大,因此我們通過引腳 8 或 VCC2 使用外部電池為它提供不同的電源。為了控制電機,其使能引腳必須設(shè)置為高電平,在我們的例子中,我們使用電機控制 IC 的左側(cè),因此將是引腳 1 (1,2 EN)。微控制器輸入(1A 或引腳 2 和 2A 或引腳 7)用于控制電機旋轉(zhuǎn)的方向,

數(shù)據(jù)表中的直流電機控制表

?
poYBAGOiXqeATTI6AACdYXr96cs159.jpg
?

軟件

在此解決方案中,創(chuàng)建了一個新的空白通用 Windows 應(yīng)用程序并將其命名為 PiDCMotorControl。添加了對 UWP 的 Windows IoT 擴展的引用。為了創(chuàng)建 UI,將 MainPage.xaml 清單替換為以下內(nèi)容:

用戶界面定義:


????x:Class="PiDCMotorControl.MainPage"
????xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
????xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
????xmlns:local="using:PiDCMotorControl"
????xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
????xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
????mc:Ignorable="d">
?
????<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
????????<Grid.RowDefinitions>
????????????"50" />
????????????"50" />
????????????"50" />
????????????"50" />
????????????"50" />
????????Grid.RowDefinitions>
????????<Grid.ColumnDefinitions>
????????????"200" />
????????????"200" />
????????????
????????Grid.ColumnDefinitions>
????????FontSize="30" Grid.Row="1" Grid.ColumnSpan="3">Motor Control
????????<Button Name="btnIgnitionOn" Margin="5" Background="Green" Foreground="White"??Grid.Row="2" 
????????????????Click="btnIgnitionOn_Click">Ignition ONButton>
????????<Button Name="btnIgnitionOff" Margin="5" Background="Red" Foreground="White" IsEnabled="False" 
????????????????Grid.Row="2" Grid.Column="1" Click="btnIgnitionOff_Click">Ignition OffButton>
????????<Button Name="btnForward" Margin="5" Background="LightBlue" Foreground="DarkBlue" IsEnabled="False" 
????????????????Grid.Row="3" Click="btnForward_Click">ForwardButton>
????????<Button Name="btnReverse" Margin="5" Background="Orange" Foreground="OrangeRed" IsEnabled="False" 
????????????????Grid.Row="3" Grid.Column="1" Click="btnReverse_Click">ReverseButton>
????????<Button Name="btnStop" Click="btnStop_Click" Background="Salmon" Foreground="Sienna" IsEnabled="True"
????????????????Grid.Row="4" Margin="5">StopButton>
???? Grid>

這將創(chuàng)建一個屏幕,其中包含一系列用于控制電機的按鈕。點火按鈕將 LD293D 電機使能引腳設(shè)置為高電平,點火關(guān)閉按鈕將其設(shè)置為低電平。還包括用于向前和向后移動電機的按鈕。停止按鈕可用于停止電機(無需關(guān)閉“點火裝置”)。

直流電機控制用戶界面

?
pYYBAGOiXqmAEo-SAAB_vQBEV-g302.jpg
?

接下來,我們將用以下內(nèi)容替換屏幕實現(xiàn)列表 (MainPage.xaml.cs):

直流電機控制實現(xiàn):

using Windows.Devices.Gpio;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
?
namespace PiDCMotorControl
{
????/// 
????/// Basic Bi-Directional Control of a single DC Motor
????/// 
????public sealed partial class MainPage : Page
????{
????????private int _pinEn1_2 = 21; 
????????private int _pin1A = 20; 
????????private int _pin2A = 16; 
?
????????private GpioController _controller;
????????private GpioPin _motorEnable;
????????private GpioPin _motorControl1A;
????????private GpioPin _motorControl2A;
??????
????????public MainPage()
????????{
????????????this.InitializeComponent();
?
????????????_controller = GpioController.GetDefault();
????????????_motorEnable = _controller.OpenPin(_pinEn1_2);
????????????_motorControl1A = _controller.OpenPin(_pin1A);
????????????_motorControl2A = _controller.OpenPin(_pin2A);
????????????_motorEnable.SetDriveMode(GpioPinDriveMode.Output);
????????????_motorControl1A.SetDriveMode(GpioPinDriveMode.Output);
????????????_motorControl2A.SetDriveMode(GpioPinDriveMode.Output);???? 
????????}
?
????????private void _turnOnIgnition()
????????{
????????????_motorEnable.Write(GpioPinValue.High);
????????}
?
????????private void _forwardMotor()
????????{
????????????_motorControl1A.Write(GpioPinValue.High);
????????????_motorControl2A.Write(GpioPinValue.Low);
????????}
?
????????private void _reverseMotor()
????????{
????????????_motorControl1A.Write(GpioPinValue.Low);
????????????_motorControl2A.Write(GpioPinValue.High);
????????}
?
????????private void _stopMotor()
????????{
????????????_motorControl1A.Write(GpioPinValue.Low);
????????????_motorControl2A.Write(GpioPinValue.Low);
????????}
?
????????private void _turnOffIgnition()
????????{
????????????_motorEnable.Write(GpioPinValue.Low);
????????????_motorControl1A.Write(GpioPinValue.Low);
????????????_motorControl2A.Write(GpioPinValue.Low);
????????}
?
????????private void btnIgnitionOn_Click(object sender, RoutedEventArgs e)
????????{
????????????btnIgnitionOn.IsEnabled = false;
????????????btnIgnitionOff.IsEnabled = true;
????????????btnForward.IsEnabled = true;
????????????btnReverse.IsEnabled = true;
????????????_turnOnIgnition();
????????}
?
????????private void btnIgnitionOff_Click(object sender, RoutedEventArgs e)
????????{
????????????btnIgnitionOn.IsEnabled = true;
????????????btnIgnitionOff.IsEnabled = false;
????????????btnForward.IsEnabled = false;
????????????btnReverse.IsEnabled = false;
????????????_turnOffIgnition();
????????}
?
????????private void btnForward_Click(object sender, RoutedEventArgs e)
????????{
????????????btnForward.IsEnabled = false;
????????????btnReverse.IsEnabled = true;
????????????_forwardMotor();
????????}
?
????????private void btnReverse_Click(object sender, RoutedEventArgs e)
????????{
????????????btnReverse.IsEnabled = false;
????????????btnForward.IsEnabled = true;
????????????_reverseMotor();
????????}
?
????????private void btnStop_Click(object sender, RoutedEventArgs e)
????????{
????????????_stopMotor();
????????}
????}
}

當應(yīng)用程序部署到樹莓派上時,您可以通過操作屏幕上的按鈕來控制電機。

?
poYBAGOiXpCAdyJtAAGLomQWjI4098.png
?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費