電子發(fā)燒友App

硬聲App

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

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

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

Windows IoT:雙向直流電機(jī)控制

2022-12-21 | zip | 0.29 MB | 次下載 | 免費(fèi)

資料介紹

描述

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

l293d.pdf

?

所需材料

硬件設(shè)置

單直流電機(jī)控制接線圖

?
poYBAGOiXpCAdyJtAAGLomQWjI4098.png
?

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

?
poYBAGOiXpqAGFiwAAC11jnUIMY084.jpg
?

接線細(xì)節(jié)

  • Cobbler 5v 到面包板電源軌 #1
  • Cobbler GND 到面包板接地軌 #1
  • 面包板接地軌 #1 到對(duì)面的面包板接地軌 #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
  • 一根電機(jī)線(可互換)到 L293D 引腳 3 (1Y)
  • 一根電機(jī)線(可互換)到 L293D 引腳 6 (2Y)

直流電機(jī)控制接線

?
poYBAGOiXqOAXxPlAAFOIhr2SCA100.jpg
?

LD293D集成電路

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

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

?
poYBAGOiXqeATTI6AACdYXr96cs159.jpg
?

軟件

在此解決方案中,創(chuàng)建了一個(gè)新的空白通用 Windows 應(yīng)用程序并將其命名為 PiDCMotorControl。添加了對(duì) UWP 的 Windows IoT 擴(kuò)展的引用。為了創(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)建一個(gè)屏幕,其中包含一系列用于控制電機(jī)的按鈕。點(diǎn)火按鈕將 LD293D 電機(jī)使能引腳設(shè)置為高電平,點(diǎn)火關(guān)閉按鈕將其設(shè)置為低電平。還包括用于向前和向后移動(dòng)電機(jī)的按鈕。停止按鈕可用于停止電機(jī)(無需關(guān)閉“點(diǎn)火裝置”)。

直流電機(jī)控制用戶界面

?
pYYBAGOiXqmAEo-SAAB_vQBEV-g302.jpg
?

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

直流電機(jī)控制實(shí)現(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();
????????}
????}
}

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

?
poYBAGOiXpCAdyJtAAGLomQWjI4098.png
?

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

評(píng)論

查看更多

下載排行

本周

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  445次下載  |  免費(fèi)
  3. 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  133次下載  |  1 積分
  5. 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
  6. 0.10 MB   |  120次下載  |  免費(fèi)
  7. 4如何正確測(cè)試電源的紋波
  8. 0.36 MB   |  3次下載  |  免費(fèi)
  9. 5550W充電機(jī)原理圖
  10. 0.13 MB   |  2次下載  |  6 積分
  11. 6USB的PD快充協(xié)議電壓誘騙控制器FS312A中文手冊(cè)
  12. 1.51 MB   |  2次下載  |  免費(fèi)
  13. 7USB Type_C PD快充協(xié)議智能觸發(fā)芯片F(xiàn)S8025B應(yīng)用手冊(cè)
  14. 1.48 MB   |  1次下載  |  免費(fèi)
  15. 8基于三相二電平PFC和隔離DC-DC轉(zhuǎn)換器的11kW雙向電池充電器
  16. 618.10 KB  |  1次下載  |  免費(fèi)

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  445次下載  |  免費(fèi)
  3. 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  133次下載  |  1 積分
  5. 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
  6. 0.10 MB   |  120次下載  |  免費(fèi)
  7. 4使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
  8. 2.96 MB   |  44次下載  |  免費(fèi)
  9. 53314A函數(shù)發(fā)生器維修手冊(cè)
  10. 16.30 MB   |  31次下載  |  免費(fèi)
  11. 6美的電磁爐維修手冊(cè)大全
  12. 1.56 MB   |  22次下載  |  5 積分
  13. 7使用TL431設(shè)計(jì)電源
  14. 0.67 MB   |  8次下載  |  免費(fèi)
  15. 8感應(yīng)筆電路圖
  16. 0.06 MB   |  8次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935119次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73807次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65987次下載  |  10 積分