通过单片机io口信号控制可控硅导通角
用来实现对交流电压的调压控制
如何来实现那?
单片机是个什么样的信号,怎么样控制可控硅的导通角那?
请高手给个提示!

原理很简单,用可控硅的调光台灯电路到处都有,把上边电位器那一部分换成单片机的一个输出端,使用单片机输出PWM信号,即可得到不同的控制电压,以控制可控硅的导通情况。
复杂一点的需要做闭环系统,也就是通过ADC输入后,形成一个闭环的电压监测,依据此值来控制输出,使输出电压与预设的电压一致。

自动调光台灯电路工作原理:

电路工作原理:

电路如图152所示。交流电压经桥堆整流后,一路经R1由稳压管VD钳位后得9V的脉动直流电压供控制电路使用;另一路加到电灯H和可控硅VS两端。改变VS的导通角即可改变电灯H的亮度;H中通过的是脉动直流电流。控制电路使用脉动直流电源可保证输出的触发脉冲与可控硅VS的阳极电压同步。
点击在新窗口中浏览此图片
图152

图152中光敏电阻RG用作探头。VT1(9012)、R2、R3等组成误差放大器,VT1实质上起到一个可变电阻的作用。VT2(BT33)、C1等组成张弛振荡器,作为VS的触发电路。当探头处的照度发生变化时,如改变探头和灯泡的距离使探头处照度降低,则RG 的阻值增大,VT1的基极电位降低,其集电极电流增加,从而使C2的充电时间缩短,使触发脉冲相位前移、VS导通角增大,灯的亮度增加;反之,当探头处照度增加时,会使灯的亮度减弱。可见若探头处的照度基本保持不变,就可实现自动调光的目的。同上分析,在探头位置不变的情况下,当电源电压发生波动时,也能使灯的亮度保持不变,起到稳光作用。C1、L组成噪音滤波电路,可抑制对其他电子设备的射频干扰。

元件选择与安装调试:

整流桥堆用1A/400V的;VS用1A/400V的单向可控硅;VT2用分压比η<0.7的单结晶体管,如BT33B,其基极间电阻Rbb应尽量大一些,以控制电路的总电流。光敏电阻RG电好选用亮阻在5~10KΩ之间的,如MG4354、MG4534等。

整个装置除RG外可装在台灯的底座内。RG用两根导线引出装在带透明窗内的塑料盒内作探头用。

调试工作应在自然光线较暗的情况下进行。调试时将探头放在离灯泡40~50cm处,调节R4,亮度应明显发生变化。在探头附近放一个照度计,可凭自己的直观确定。如果R4调到最大时灯泡仍然没有变暗,则说明RG的亮阻太大,应调换或增大R4的阻值。经上述调试后,在一定范围内改变探头与灯泡的距离,灯泡的亮度应发生变化,而探头处的照度基本保持不变。
我想用MSComm,或者用其他免费控件控制串口,要实现的功能如下:
只要利用串口输出的电压控制一个继电器的开和关就行了。因为我从来没做过这方面的,请给出完整的程序和继电器的型号,可行立即加分,不够可再加。
Reader_1 »
使用串口的RTS和DTR信号可以进行简单的控制。
下面的工程的窗体包含4个按钮,一个MSComm控件


[code]Private Const COMPORT = 1
Private Sub Command1_Click()
MSComm1.RTSEnable = True
End Sub

Private Sub Command2_Click()
MSComm1.RTSEnable = False
End Sub


Private Sub Command3_Click()
MSComm1.DTREnable = True
End Sub

Private Sub Command4_Click()
MSComm1.DTREnable = False
End Sub

Private Sub Form_Load()
'
Command1.Caption = "打开继电器 1"
Command2.Caption = "关闭继电器 1"
Command3.Caption = "打开继电器 2"
Command4.Caption = "关闭继电器 2"

On Error GoTo PortErr
MSComm1.CommPort = COMPORT
MSComm1.PortOpen = True
Exit Sub

PortErr:
MsgBox "无法打开通讯口" & COMPORT, vbCritical
End
End Sub

Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub[/code]

Reader_2 »
串口输出特性:
1: 输出电压 -3- -25 伏
0: 输出电压 3-25 伏
实际在PC上面,不接负载的话
1: 输出电压 -3- -12 伏,基本在-12伏左右
0: 输出电压 3 - 12 伏 基本在12伏左右

你至少要进行简单的隔离,然后在连接继电器。
Reader_3 »
请问 kensu 要怎样隔离啊?能再说详细一点吗? Reader_4 »
串口的电流太小, 驱不动继电器,应该用外接电源。然后用串口发信息,控制外接电路。 Reader_5 »
你这种做法不太妥,只能勉强试试:
用一个发光二极管,串接一个适当电阻(或可调电位器),再接光电隔离集成块4N25的输入,
输出可至74ls244(42?记不太清了)或74ls373,最好还是要接一个功放驱动集成块去驱动继电器。 Reader_6 »
我认为瓦特说的对.
因为我做过的就是这样的.
继电器外接电源.
通过上位机想串口发指令控制它
在学校或企业,经常会使用电铃,但电铃声同消防铃声太相似.能否用电脑播放歌曲,并用串口控制开关扩音机? 某些此类的专业设备和软件非常贵,其实你可以DIY,而且并不复杂.

     原理:

      串口被软件打开后,串口DB9的4脚(DTR)会有一个10V的电压.当关闭串口后,电压即消失.

     软件开发.

       串口软件的开发可以利用API FUNCTION和Mscomm控件来开发.由于此项目非常简单,只涉及开关串口,所以使用api开发更为简单,以下是主要代码 :

打开串口:  


BOOL CTimerDlg::OpenComPort(){

hCom=CreateFile(_T("COM1"),GENERIC_READ/*|GENERIC_WRITE*/,0,NULL,OPEN_EXISTING,
   FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
   NULL);
if(hCom==INVALID_HANDLE_VALUE)
   return false;
else
   return true;

}

关闭串口:
void CTimerDlg::CloseComPort(){
  
CloseHandle(hCom);


}


硬件设计:

1。选用继电器控制;
2。用双向可控硅,控制导通角;
因为在交流电时,单向可控硅反向关断,负载仅一半压降!

可控硅(SCR)基本概念:  http://www.go-gddq.com/html/2006-08/406155.htm


/***************************** 延时t毫秒 **********************************/

void delay_1ms(uint t)

{

       uint i;

       while(t--)

       {

              /* 对于11.0592M时钟,约延时1ms */

              for (i=0;i<125;i++);

       }

}

/******************************* 延时10us *********************************/

void delay_10us(uchar y)               // 延时子程序10us

{

    uchar x;

    for(x=y;x>0;x--);

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/**************************   温度测量模块_Strat *****************************/


uchar tplsb,tpmsb;                           // 温度值低位、高位字节

sbit DQ = P2^0;                              // DS18B20数据引脚DQ


/*********** 产生复位脉冲初始化DS18B20 ***********/

void TxReset(void)

{

       uint i;

       DQ = 0;

       /* 拉低约900us */

       i = 100;

       while (i>0)    i--;  

       DQ = 1;                                    // 产生上升沿

       i = 4;

       while (i>0)    i--;

}

/****************** 等待应答脉冲 ****************/

void RxWait(void)

{

       uint i;

       while(DQ);

       while(~DQ);                             // 检测到应答脉冲

       i = 4;

       while (i>0) i--;

}

/******** 读取数据的一位,满足读时隙要求 ********/

bit RdBit(void)

{

       uint i;

       bit b;

       DQ = 0;

       i++;

       DQ = 1;

       i++;i++;    // 延时15us以上,读时隙下降沿后15us,DS18B20输出数据才有效

       b = DQ;

       i = 8;

       while(i>0) i--;

       return (b);

}

/***************** 读取数据的一个字节 *******************/

uchar RdByte(void)

{

       uchar i,j,b;

       b = 0;

       for (i=1;i<=8;i++)

       {

              j = RdBit();

              b = (j<<7)|(b>>1);             //测量的位的值(0或1)放在最高位,然后往右移动1位,

                                                        //把空出的最高位放接下去测的位的值(0或1)。

       }

       return(b);

}


/******** 写数据的一个字节,满足写1和写0的时隙要求 ********/

void WrByte(uchar b)

{

       uint i;

       uchar j;

       bit btmp;

       for(j=1;j<=8;j++)

       {

              btmp = b&0x01;

              b = b>>1;                          // 取下一位(由低位向高位)

              if (btmp)

              {

                     /* 写1 */

                     DQ = 0;

                     i++;i++;                      // 延时,使得15us以内拉高

                     DQ = 1;

                     i = 8;

                     while(i>0) i--;             // 整个写1时隙不低于60us

          }

              else

              {

                     /* 写0 */

                     DQ = 0;              

                     i = 8;

                     while(i>0) i--;             // 保持低在60us到120us之间

                     DQ = 1;

                     i++;

                     i++;

              }

       }

}

/*************** 启动温度转换 ***************/

void convert(void)

{

       TxReset();                                // 产生复位脉冲,初始化DS18B20

       RxWait();                                 // 等待DS18B20给出应答脉冲

       delay_1ms(1);                          // 延时

       WrByte(0xcc);                          // skip rom 命令

       WrByte(0x44);                         // convert T 命令

}

/*************** 读取温度值 *****************/

float temperature=0;                       // 转换之后的实际温度值

void RdTemp(void)

{

       TxReset();                                // 产生复位脉冲,初始化DS18B20

       RxWait();                                 // 等待DS18B20给出应答脉冲

       delay_1ms(1);                          // 延时

       WrByte(0xcc);                          // skip rom 命令

       WrByte(0xbe);                         // read scratchpad 命令

       tplsb = RdByte();                     // 温度值低位字节(其中低4位为二进制的“小数”部分)

       tpmsb = RdByte();                   // 高位值高位字节(其中高5位为符号位)

                                                        // 温度转换,把高低位做相应的运算转化为实际温度

       temperature=((tpmsb*256)+tplsb)*0.0625;

}


/* 读取的温度值最终存放在tplsb和tpmsb变量中。tplsb其中低4位为

二进制的“小数”部分;tpmsb其中高5位为符号位。真正通过数码管输出时,

需要进行到十进制有符号实数(包括小数部分)的转换。 */

/************************   温度测量模块_End *******************************/
Load比较简单:

$("#have_votes_to_vote").load("/con/vote/act/hasleft",{clientTime:Date()},
       function(data){if(data==""){$(this).text('0')}}
  );


http://xxx.xxx.com/con/vote/act/hasleft:

<?php
$content = json_encode ( array ("code" => "1", "message" => "成功!",'votehasleft'=>$result[0]['FViewCount']) );
echo $content;
?>


getJSON:
PHP

<?php require './script.php';?>
<label   id="have_votes_to_vote" class="have_votes_to_vote"></label>
<script language="javascript">

$.getJSON('http://xxx.xxx.com/con/vote/act/hasleft',function(data){alert(data.message);$("#have_votes_to_vote").text(data.message);});
</script>




$.ajax的写法:

    var noMiniPic = $.ajax({
        url: "/con/user/act/checkmini",
        data:"clientTime="+Date(),
    async: false
        }).responseText;
    if(parseInt(noMiniPic)==1)
    {
        alert('ÎÂܰÌáʾ£ºÇëµã»÷ÉÏ´«£¬ÔÙÌá½»×¢²áÐÅÏ¢');  
        return false;
    }





参考:http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.html
         http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html

一直用极点五笔,使用PhotoShop CS4文字输入时,切换到中文输入法‘极点五笔’时,Photoshop出现假死,无法响应,使用其他输入法(如:搜狗五笔、智能ABC等)时正常,在杜志民老师的指导下极点的问题得以解决。

升级 NVIDIA 显卡驱动

我的主机是SOYO N8+集成NVIDIA GeForce 8200显卡,Windows Server 2003系统,升级显卡驱动后(驱动版本:6.14.11.9056),Photoshop CS4切换至极点五笔输入法时使用正常,极点五笔与Photoshop CS4 的兼容性问题解决。

如果你还未解决,可以试试网上的其他方法(我使用这些方法未成功):

1、控制面板 - 区域和语言选项 - 语言 - 详细信息 - 高级 - 关闭所有高级文字服务(去掉勾)

2、PS中,编辑 - 首选项 - 文字 - 显示亚洲字体选项、字体预览大小(去掉勾)

我今天也遇到这个问题!!!
终于在Linux系统上安装成功了:

提前准备:Flash Media Server
Redhat Linux Enterprise

(没有上述软件的就要下载)

1,先装好Linux,再把Flash Media Server下载到Linux系统上。扔到你想扔的目录下。Eg:/usr/tmp/FMS.zip

2,解压。先cd 到tmp目录下:

# cd /usr/tmp
# upzip Fms.zip
# tar -xzf FlashMediaServer3.tar.gz
# cd FMS_3_0_1_r123
# ./installFMS -platformWarnOnly //为什么要带这个参数。不知道。带就是了。不带不成功
。。。

跟着提示做,就安装成功了(默认的FMS会启动),可以用Top查看一下进程,看看有没有跟FMS相关,没有就执行下面的命令。

# cd /opt/adobe/fms
# ./fmsmgr server fms start

好了。写个Flash程序连接测试一下吧。(如果连接不成功,请把防火强设置一下或关闭)

本人在Flash Media Server 3 Redhat Linux Enterprise 5已经成功。 阅读全文
   1. 用户体验一致性
      QQ校友集成了QQ账号登录、QQ空间、QQ相册等多种腾讯老牌服务。这种集成一方面方便了用户,另一方面却造成了用户体验的严重不统一。SNS网站的体验统一性是非常重要的。如果使用QQ校友的时候突然跳到QQ空间,是一件很怪的体验。用户想看看好友的动态就需要熟悉那么多种不同的界面,肯定会累死在途中。
   2. 数据初始化
      SNS网站最重要的是数据初始化的问题:试想当一个用户进入一个空空如也的社区是什么感觉。目前比较简单的伎俩就是用一些“僵尸用户”去忽悠,但这些手段已经在国内被用臭了,几乎每一个网站注册成功都会有一个穿的比芙蓉鸡鸡还暴露的女人加你好友。2009年了,腾讯用这招的成功率估计也比较低。我现在上校友看了之后发现内容实在是千差万别,不伦不类。
   3. 用户圈子文化壁垒
      用户圈子的统一性也是QQ校友面临的严峻问题。上面说到的“大专院校的学生”和“年轻白领”都是意识形态相近、生活习惯相近的人群,而剩下的这些人在社会上的地位相差则十分悬殊,他们很难有共同的话题。

电脑配置

WEB2.0 jackxiang 2009-11-12 18:31
http://zj.zol.com.cn/diy/list.php?userid=eonion
http://zj.zol.com.cn/diy/detail/1244998.html



件名称   配件型号   价格(元)
C P U   Intel i5 750(盒)   1580
散热器   盒装   
主   板   技嘉 P55-VD4   1660
显   卡   影驰 GTX275黑将版   1680
内   存   红色威龙 2G DDR3 1333   320
硬   盘   希捷 1TB 7200.12 16M(串口)   585
显示器     
声   卡   集成   
网   卡   集成   
光   驱   先锋刻录 DVD   190
音   箱   

用户自行选购
  
机   箱   酷冷至尊 毁灭者   260
电   源   航嘉多核HD   390
鼠   标   罗技 键鼠套装   135
  键   盘     套装   
合计   6800元

i5-750参数方面采用最新的LGA1156接口,主频为2.66GHz!
http://zhaoyi.javaeye.com/blog/235380
阅读全文
http://westroad.org.cn/editor_compare.html
我们在做性能优化的时候,第一步需要判定哪部分程序最需要做优化,一般来说程序运行最耗时的那部分,也就是程序热点(Hotspots)是我们的候选,而优化热点函数后性能提升效果也最明显。

为什么要提这个问题呢?因为最近做过一些项目,很多人一上来看到程序中这里适合用多线程,那里适合用SSE,但是有没有先考虑过这部分程序优化后性能提升的比例能有多少?一般我们在做优化之前都需要有一个基本的估计,需要优化的代码占程序总运行时间的多少,用不同的手段最多能达到怎么样的优化效果,达到这样的效果后是否满足我的既定目标?这样分析下来后才开始分配人力和时间资源。

有些人觉得,我自己心里很清楚程序哪里最耗时。但是感觉往往不是那么精确的,现在寻找热点的工具有很多, VTune,Parallel Amplifier等都可以做到。既然有工具,我们就借助工具定量地进行分析,做为我们开始的第一步。
最近在看北电代码的时候,发现,系统中大部分模块都采用的是一个进程/一个线程的设计方式,一个大的功能模块由多个进程构成。因为系统是运行在Linux平台上,一开始,我觉得这种设计是有问题,追溯根源,以为是北电之前使用的操作系统是vxworks,那帮北美的开发人员把vxworks中task的概念生搬硬套到linux中,在linux中提供了比进程性能更高的线程,他们并没有充分的利用起来。之后认真思考了一下,发现,他们这样设计是有道理的。分析如下,我们先来说说进程和线程的区别吧。
阅读全文
真正明白什么是嵌入式是在一年多年前,那时开始到现在感觉一直是技术崇拜,唯有技术才是生存之道,之所以有这样的想法是因为,我一开始就想做技术,于是就疯狂的去了解自己感兴趣的,也是有带点功利性的思想吧,最后把自己定格在嵌入式。自学有个不好的地方就是学得乱,没有系统的学习基础,把嵌入式之根本给抛弃了,而去追求表面浮华的东西,比如外围模块,LCD,LED,AD,CAN,触摸屏,等等,而嵌入式的精华却很少去了解,比如计算机组成,操作系统原理等。我想得好好反思一下,不要让自己在技术淹没在技术漩涡中。做技术现在多如牛毛,能出大师级的很少,有一部分是正真的工程师级,还有一部分是在某个企业能胜任一定工作的及技术师级,还有一部分就是“混混级”的,呵呵,说得不大恰当!

能解决问题就好。。。 技术毕竟是为了让生活过的更好,而不是纠缠于细节成为技术性孔乙己。。

看来你将继续迷失方向,“外围模块”只是些浮华的东西?“计算机组成,操作系统原理”是精华?每个部分都有其精华的部分你没有发掘而已,社会大分工的时代,思想要解放。

我也在学嵌入式软件开发呵呵。多多交流

做技术现在多如牛毛,能出大师级的很少,有一部分是正真的工程师级,还有一部分是在某个企业能胜任一定工作的及技术师级,还有一部分就是“混混级”的,呵呵,说得不大恰当!

呵呵,做做技术之后,你再一转身,再一看的时候,你就会发现,干技术永远发不了,还是得干管理啊,要不然,10年之后,和你一起来的人都当副总裁了,你还是个电子工程师啊,

上面的网友说得不无道理,做技术的可以从技术管理方面着手!
难道是用单片机的管脚来通过时间定时做开关控制晶闸管的导通与关闭的时间比来达到控制加热时输出功率的目的?还请高人多加指点?
答案:
用单片机做PWM控制电加热器的加热功率请问控制思路可以这么考虑:加热功率的大小由输出脉冲的占空比决定,占空比大,则加热功率就大。而输出脉冲的的形成可采用计时方式,即利用内部的定时/计数器产生,可以设置两个定时器,一个为脉冲高电平输出的延时,另一个为低电平输出的延时或整个周期时间的延时。两个定时/计数器采用中断工作方式,另外设置单片机的某一引脚为脉冲输出通道,当两个定时/计数器定时到后,分别改变这个通道的状态,就可实现PWM脉冲的输出。

PWM脉冲的占空比就由于两个定时/计数器的定时确定。而定时的大小则根据检测信号与设定值的偏差,经过PID运算或其它控制规律运算确定。整个单片机系统主程序是对检测加热温度信号进行周而复始的扫描。当扫描到有信号输入时(A/D转换芯片送给单片机的),就进行控制规律的比较,需要改变输出脉冲占空比时,将计算后的两个定时/计数器的定时值分别重新送给这两个定时/计数器定时值的存储单元即可。

实际为了提高时效,可以根据控制规律,将输出脉冲的占空比所对应的两个定时/计数器的定时值事先计算好,并按照顺序事先存放在单片机的内存中,执行程序时则采用查表的方法,在扫描到有信号输入时直接查表,取出定时值送给这两个定时/计数器。这样工作速度快,PWM的动、静态性能较好,但程序编写好后,控制精度就不能更改。

因为,这是整个系统的设计问题,只能简单地说这些思路了。
分页: 200/271 第一页 上页 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 下页 最后页 [ 显示模式: 摘要 | 列表 ]