一、模块介绍
购买链接:
https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-18748153240.68.3afa2366yqRAJh&id=576040401250
光耦合器以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用。光耦合器一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管,使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。
继电器是一种电子控制器件,它具有控制系统和被控制系统,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”故在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。
二、原理分析
PC817是一个光电耦合器,CON2是电源接口。当电源没有接通时,光耦内的发射端的LED灯没有被点亮,光耦内的接收器没有导通,所以CO和EM口为闭合状态,GPH_0为高电平。当电源接通时,光耦内的发射端发射光线,接收器接感应到光后导通电路,所以GPH_0为低电平。
通过对引脚GPH_1的控制,改变三极管状态,从而控制继电器的电源是否导通。当GPH_1为高电平时,三极管导通,继电器电源导通,所以继电器处于常闭状态。当GPH_1为低电平时,三极管闭合,继电器内没有供电,所以为常开状态。
三、代码解读
一、对GPIO进行初始化
调用GPIO_Init函数配置GPIO参数。
二、实现调试串口的初始化
涉及到串口GPIO配置、串口参数配置、NVIC配置。
三、根据需求设置/获取GPIO口的状态
通过串口发送对应的指令,可以调用 GPIO_SetBits函数或者GPIO_ResetBits函数设置GPIO的电平状态。也可以调用GPIO_ReadOutputDataBit函数获取GPIO的电平状态。
初始化函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
设置输出电平函数:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
四、实践操作
一、操作步骤:
将 STM32F407 核心板正确插接到魔法师 M3/M4 底板上,连接好 J-link 与 PC 机;
将 光耦-继电器模块 模块插到 P8 口,底板拨码 S1 拨向 ON 端;
编译整个工程,打开底板电源,烧写程序到核心板,并按一次复位按键。
二、实验现象:
1.串口打印 菜单信息。
2.串口输入 1-继电器打开,万用表测模块上“常闭”和“COM”连通;
3.串口输入 2-继电器关闭,万用表测模块上“常开”和“COM”连通;
4.串口输入 3-输入状态,串口调试助手上可以看到输入信号的状态值;
5.其他提示错误。