您的位置:首页 > 其它

.Net Micro Framework研究—MF驱动继电器

2008-03-03 13:40 369 查看
年前张欣有一个比较好的想法,想用Digi的MF板驱动一个小型继电器,这样就可以用MF直接控制家中的小功率220V的电器了。由于我们公司非纯软件公司,软硬件部门都有,所以比张欣多了点接触硬件的机会。
Digi开发板标准电压是3.3V,所以继电器的工作电压要小于或等于3.3V,此外继电器吸合点要能承受220V,1~3A的电流,否则实用价值不大。最终我选择的继电器的型号为:HUIKE HK4100F-DC3V-SHG 触点指标:交流220V 3A 直流30V 3A。
先看一看Digi开发板的原理图,看看怎么接入我们的继电器。



CR14 是一个LED灯,R23是一个限流电阻,对应的GPIO的Pin值为6,我们就对它下手。原理图很简单,从图上看出我们必须去掉CR14 LED灯,如果继电器直接连接到接线柱上,则继电器和CR14 LED灯并联,LED灯会分流。此外不短接电阻,则电阻会分压(继电器和电阻是串联关系)。好了我们改造后的板子如下:







程序很简单,如下:
[align=left]namespace DigiTest[/align]
[align=left]{[/align]
[align=left] using System;[/align]
[align=left] using System.Collections;[/align]
[align=left] using System.Net;[/align]
[align=left] using System.Net.Sockets;[/align]
[align=left] using System.Runtime.CompilerServices;[/align]
[align=left] using System.Text;[/align]
[align=left] using System.Threading;[/align]
[align=left] using Microsoft.SPOT;[/align]
[align=left] using Microsoft.SPOT.Hardware;[/align]
[align=left] using Microsoft.SPOT.Net;[/align]
[align=left] using Microsoft.SPOT.Net.NetworkInformation;[/align]
[align=left] [/align]
[align=left] public class DigiTest[/align]
[align=left] {[/align]
[align=left] public static void Main()[/align]
[align=left] {[/align]
[align=left] OutputPort[] output = new OutputPort[5];[/align]
[align=left] //InputPort[] input = new InputPort[5];[/align]
[align=left] Cpu.Pin[] pin = new Cpu.Pin[5] { (Cpu.Pin)0, (Cpu.Pin)1, (Cpu.Pin)2, (Cpu.Pin)5, (Cpu.Pin)6 };[/align]
[align=left] [/align]
[align=left] for (int i = 0; i < 5; i++)[/align]
[align=left] {[/align]
[align=left] //input[i] = new InputPort(pin[i], false, Port.ResistorMode.PullUp);[/align]
[align=left] output[i] = new OutputPort(pin[i], false);[/align]
[align=left] }[/align]
[align=left] while (true)[/align]
[align=left] {[/align]
[align=left] for (int i = 0; i < 5; i++)[/align]
[align=left] {[/align]
[align=left] output[i].Write(!output[i].Read());[/align]
[align=left] }[/align]
[align=left] //Debug.Print(input[0].Read().ToString() + " " + input[1].Read().ToString() + " " + input[2].Read().ToString() + " " + input[3].Read().ToString() + " " + input[4].Read().ToString());[/align]
[align=left] Thread.Sleep(1000);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
}
把程序部署到Digi开发板,运行一下,是不是听到继电器在啪啪作响,用万用表量一量常开触电是否通断正常?我想如果没出什么意外,一切正常,下一步你就可以控制家用电器了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: