用PIC16F84实现的自然风发生器
时间:01-09
来源:互联网
点击:
普通电风扇的送风强度是不变的,不如阵阵吹拂的自然风那样舒适宜人。这里,我们用PIC16F84单片机制作一个自然风发生器,当其和电风扇串接时,即可使电风扇送出时强时弱的仿自然风。
一、硬件电路及原理
要使电风扇送出仿自然风,就需要改变电风扇送风的强弱,即需要改变风扇电机的电压和电流,从而改变其转速。如图1所示,风扇插座与晶闸管TREAC相串联,改变晶闸管控制角α,即控制晶闸管导通的时间,就能使风扇电机的电压、电流发生变化。图2展示了α角和电机负载电压的关系。
Α角的变化又可通过电容C1的充放电时间的改变来实现。PIC16F84单片机按一定规律选择电阻Rx,即可改变电容C1的充放电时间,从而改变2N2646的导通时间。改变了TREAC的导通角,达到改变电风扇送风强弱的目的。控制角α和强弱风的关系如图3所示。
市电频率f=50Hz,则可得下式 α/360°=t/0.02 ……………(1)
根据图1所示RxC1充电回路,可推知
α=t·360°/0.02 ={RxC1ln1[1/(1-n)]}·360°/0.02 ……………(2)
其中,η=VP/VBB,Vp为C1充电后的电压值,VBB为充电电源电压,一般取η=0.63。若电容C为0.047μF,根据(2)式的值,求得对应于不同的α设定值的Rx值表:
R0=1kΩ,R1=33kΩ,R2=62kΩ,R3=89kΩ,R4=120kΩ,R5=150kΩ,R6=180kΩ,R7=220kΩ。
Rx接于PIC16F84单片机的RB0~RB7口;RA0口为启动信号输入口,当A键按下时,自然风发生器开始工作;RA1口为停止信号输入口,当B键按下时,自然风发生器停止运行;RA3口为交流电相位检测口。用于确定交流电的起始相位。
程序清单:
LSIT P=PIC16F84
#INCLUDE P16F84INC
FC EQU0CH
FD EQU0DH
ORG 0
MAIN:CLRW
TRIS RB
MOVWFRB;置RB口为输出口,
;且置其初值为0
MOVLW0FH
TRIS RA ;置A口为输入口
KEYA:BTFSCRA,0 ;A键是否按下
GOTO KEYA ;A键未按下转
KEYA,等待
START:MOVLW80H ;A键按下,
;80H→F8
MOVWFF8
BTFSSRA,1 ;B键按下否
GOTO MAIN ;B键按下
PHASE:BTFSCRA3
GOTO PHASE ;等待交流电
零相位
MOVF8,W
MOVWFRB ;F8→RB口
CALL DELAY;延时10秒
CLRC ;清C
RRF F8 ;F8右移
BTFSS3,0
GOTO PHASE
GOTO START
DELAY:MOVLW 150
MOVWF F9
MOVLW 7 ;给RTCC预
设倍数1∶256
OPTION
LOOP:MOVLW 255
SUBWF RTCC
BTFSS 32
DECFSZ F9
GOTO LOOP
RETLW 0
END ;程序结束
一、硬件电路及原理
要使电风扇送出仿自然风,就需要改变电风扇送风的强弱,即需要改变风扇电机的电压和电流,从而改变其转速。如图1所示,风扇插座与晶闸管TREAC相串联,改变晶闸管控制角α,即控制晶闸管导通的时间,就能使风扇电机的电压、电流发生变化。图2展示了α角和电机负载电压的关系。
Α角的变化又可通过电容C1的充放电时间的改变来实现。PIC16F84单片机按一定规律选择电阻Rx,即可改变电容C1的充放电时间,从而改变2N2646的导通时间。改变了TREAC的导通角,达到改变电风扇送风强弱的目的。控制角α和强弱风的关系如图3所示。
市电频率f=50Hz,则可得下式 α/360°=t/0.02 ……………(1)
根据图1所示RxC1充电回路,可推知
α=t·360°/0.02 ={RxC1ln1[1/(1-n)]}·360°/0.02 ……………(2)
其中,η=VP/VBB,Vp为C1充电后的电压值,VBB为充电电源电压,一般取η=0.63。若电容C为0.047μF,根据(2)式的值,求得对应于不同的α设定值的Rx值表:
R0=1kΩ,R1=33kΩ,R2=62kΩ,R3=89kΩ,R4=120kΩ,R5=150kΩ,R6=180kΩ,R7=220kΩ。
Rx接于PIC16F84单片机的RB0~RB7口;RA0口为启动信号输入口,当A键按下时,自然风发生器开始工作;RA1口为停止信号输入口,当B键按下时,自然风发生器停止运行;RA3口为交流电相位检测口。用于确定交流电的起始相位。
程序清单:
LSIT P=PIC16F84
#INCLUDE P16F84INC
FC EQU0CH
FD EQU0DH
ORG 0
MAIN:CLRW
TRIS RB
MOVWFRB;置RB口为输出口,
;且置其初值为0
MOVLW0FH
TRIS RA ;置A口为输入口
KEYA:BTFSCRA,0 ;A键是否按下
GOTO KEYA ;A键未按下转
KEYA,等待
START:MOVLW80H ;A键按下,
;80H→F8
MOVWFF8
BTFSSRA,1 ;B键按下否
GOTO MAIN ;B键按下
PHASE:BTFSCRA3
GOTO PHASE ;等待交流电
零相位
MOVF8,W
MOVWFRB ;F8→RB口
CALL DELAY;延时10秒
CLRC ;清C
RRF F8 ;F8右移
BTFSS3,0
GOTO PHASE
GOTO START
DELAY:MOVLW 150
MOVWF F9
MOVLW 7 ;给RTCC预
设倍数1∶256
OPTION
LOOP:MOVLW 255
SUBWF RTCC
BTFSS 32
DECFSZ F9
GOTO LOOP
RETLW 0
END ;程序结束
![](../img/eep/emb/emb-41858tlszszlmmmf.jpg)
- PIC16F84A单片机教程(PCB图和原理图)详解(09-23)
- 基于PIC16F84的两组PWM输出的实例源程序(08-12)
- 基于PIC16F84单片机的IC卡智能水表设计(01-31)
- PIC16F84A单片机教程板详解(PCB图和原理图)(07-19)
- PIC16F84产生两组PWM输出的实例源程序(05-17)
- Windows CE 进程、线程和内存管理(11-09)