❶ 单片机和变频器的modbus通信
变频器是用标准modbus协议的,他提供有数据格式,变频器不用编程,只作为通用设备和你单片机通讯,单片机需要编写程序实现modbus协议。
❷ 如何用单片机控制变频器
建议去致远变频器网看看,里面资料很多很全。如果从问题来看,还是很简单的,让单片机发出正反转触点信号,以及给出一个模拟量控制信号即可,为何用单片机做,也许是为了锻炼设计吧。
❸ 单片机c语言编程100个实例
51单片机C语言编程实例 基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。 C语言编程基础: 1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。 在某引脚输出低电平的编程方法:(比如P2.7引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2.7 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 在某引脚输出方波编程方法:(比如P3.1引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P3.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 5. { 6. P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC 7. P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND 8. } //由于一直为真,所以不断输出高、低、高、低……,从而形成方波 9. } 将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) ) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { 7. if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC 8. { P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 2 51单片机C语言编程实例 9. else //否则P1.1输入为低电平GND 10. //{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 11. { P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC 12. } //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平 13. } 将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) ) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { //取反的方法是异或1,而不取反的方法则是异或0 7. P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出 8. } //由于一直为真,所以不断将P3取反输出到P2 9. } 注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。 第一节:单数码管按键显示 单片机最小系统的硬件原理接线图: 1. 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF 2. 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF 3. 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理 4. 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机I/O输出 将一发光二极管LED的正极(阳极)接P1.1,LED的负极(阴极)接地GND。只要P1.1输出高电平VCC,LED就正向导通(导通时LED上的压降大于1V),有电流流过LED,至发LED发亮。实际上由于P1.1高电平输出电阻为10K,起到输出限流的作用,所以流过LED的电流小于(5V-1V)/10K = 0.4mA。只要P1.1输出低电平GND,实际小于0.3V,LED就不能导通,结果LED不亮。 开关双键的输入:输入先输出高 一个按键KEY_ON接在P1.6与GND之间,另一个按键KEY_OFF接P1.7与GND之间,按KEY_ON后LED亮,按KEY_OFF后LED灭。同时按下LED半亮,LED保持后松开键的状态,即ON亮OFF灭。 代码 1. #include <at89x52.h> 2. #define LED P1^1 //用符号LED代替P1_1 3. #define KEY_ON P1^6 //用符号KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符号KEY_OFF代替P1_7 5. void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值 6. { 7. KEY_ON = 1; //作为输入,首先输出高,接下KEY_ON,P1.6则接地为0,否则输入为1 8. KEY_OFF = 1; //作为输入,首先输出高,接下KEY_OFF,P1.7则接地为0,否则输入为1 9. While( 1 ) //永远为真,所以永远循环执行如下括号内所有语句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1输出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1输出低,LED灭 13. } //松开键后,都不给LED赋值,所以LED保持最后按键状态。 14. //同时按下时,LED不断亮灭,各占一半时间,交替频率很快,由于人眼惯性,看上去为半亮态 15. } 数码管的接法和驱动原理 一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。作为习惯,分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。 我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。 以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据
❹ 如何实现PIC单片机控制变频器以及需要什么
变频调速作为交流电机调速的主要手段已经在工业领域中应用的十分广泛,其具有的调速范围宽、稳速精度高、动态响应快、适用范围广、运行可靠等技术性能,已逐步取代直流电机调速系统。变频器的控制方式主要有三种:1.通过变频器面板操作,即通过操作面板改变频率的输出和其他运行参数;2.在变频器模拟量输入端输入0~10V或4~20mA信号,通过改变输入模拟量的大小控制变频器的输出频率;3.通过变频器的通讯口(多为RS485)进行控制。第一种方式一般用于现场手动调节和参数设定,后二种方式多用于自动调节和远程控制。工控领域中常用的PLC、DCS等控制系统都具有适用于变频器接口条件的控制模块,可以方便的实现变频器的闭环自动控制,在大中型的控制系统中使用较为普遍。而对于一些小型实验装置和嵌入式控制装置,处理器在控制变频器之外,一般还需要处理键盘输入、显示屏、数据采集和其它过程控制等工作,这种控制要求更适合采用单片机系统作为控制核心,而以PLC加操作面板的形式,虽能实现功能但成本过高,不宜采用。
使用单片机控制变频器可以选择后二种方式,采用通讯口方式控制,其优点是控制功能全面,通过相应的电平转换电路适合变频器的通讯口形式(RS484/RS232/CAN等),就可与变频器进行通讯,硬件简单,二者间的连线数量少连接方便。缺点是需要了解掌握变频器的通讯协议才能进行控制编程,软件设计复杂。由于不同品牌的变频器通讯接口和通讯协议各不相同,目前尚没有统一的标准,只能针对一种变频器进行开发,缩小了变频器品种的选择范围,适用性受到限制。而对于模拟量输入控制方式,则几乎在所有的变频器中都能支持,虽然在功能上比较单一,但可实现调速的主要功能,能满足多数场合的使用要求,具有普遍性。
最常用的模拟量输入调速方法是通过电位器来调节频率,即改变模拟量输入的电压值,达到调节转速的目的。采用机械式电位器虽简单易行,但易磨损,长期使用不够稳定,同时还有一个最大的缺陷是只适合手动调节,不能实现自动调节。笔者采用数字电位器替代机械式电位器,在单片机的控制下,不但能进行简单的手动变频调速,还能根据控制要求实现PID闭环自动控制,不失为一种功能全面的单片机控制变频器的好方法。原文位置
数字电位器
笔者采用美国Xicor公司的X9221双E2POT非易失性数控电位器,电阻阵列端电压±5V,分为64个抽头。X9211包含二个电阻阵列,每个阵列包含有63个电阻单元。在每个单元之间和二个端点都有可以被访问的抽头点。滑动单元在阵列中的位置由用户通过二线制串行总线接口控制。每个电阻阵列与一个滑动端计数寄存器和四个8位数据寄存器联系在一起,这四个数据寄存器可以由用户直接写入和读出,滑动端计数寄存器的内容控制滑动端在电阻阵列中的位置。功能框图如图1 所示。原文位置
图1 功能框图
原文位置
X9211的写入单元为8字节的E2PROM存储器,写入次数105次,数据保存时间100年,亦即电位器抽头位置具有掉电保持功能,不会因为失电而改变。X9211共有3种电阻阵列值:2KΩ、10KΩ、50KΩ,可根据实际需要选择;分辨率为每个电位器64个抽头;采用20引脚DIP和SOIC封装。本文所以选择使用双组电位器X9221,是因为控制对象除变频器外,还有一组由可控硅调压控温的电加热器,同样可以采用数字电位器的方法进行调控,这样使用一片X9221就可实现对二个对象的控制,对二者可以分别进行调节和控制,互不影响,因此非常适合双路输出的控制要求,方便简捷,一举两得。
单片机与数字电位器接口
X9221支持I2C二线制串行总线规约,与单片机的接口只需要2根I/O线。单片机作为主机可按照规约规定的时序启动数据的传输,并为发送和接收操作提供时钟,X9221作为从机响应主机的操作,从总线上接收数据或将数据送至总线上,从而实现单片机对X9221的读写操作,硬件接口电路如图2所示。
图2中X9221的二组电阻阵列分别连接变频器调节端子和电热器调节端子,在变频器接口端子中还有一个控制变频器启停的干接点,由单片机P3.2口经驱动控制继电器实现。与变频器模拟控制接口连接需要注意的是,一般变频器的输入接口的提供的电压是0-10V,X9221电阻阵列的端电压相对于Vss是±5V,如果按一般习惯将变频器控制接口的负极 0V与Vss连接作为公共端时,那么电位器的VH端电压相对Vss将会是10V,超出了允许范围,会造成器件损坏。因此二者连接时应将变频器控制接口的正极10V与X9211的正电源Vcc电源连接作为公共端,即共正极连接,这样就可以保证电位器的VH和VL的 端电压会在±5V的正常工作范围内。由于变频器采用的是整流—PWM逆变输出的工作原理,在工作过程中必然会产生许多高次谐波,对单片机系统的干扰较大,因此二者间的连接应使用屏蔽电缆,并将屏蔽层一端可靠接地;同时在X9221的输出端增加滤波电容,减少高频信号的引入。
软件设计
X9221包括二个滑动端计数寄存器(WCR),每个E2POT电位器各对应一个。WCR可以被认为是一个6位并行和串行装载的带有输出译码的计数器,用来选择沿着电阻阵列的六十四选一的开关。WCR的内容可以有4种方法来改变:1.可以由主机通过Write WCR指令来直接写入(串行加载);2.可以通过XFR Data Register指令把四个辅助数据寄存器之一的内容直接写入(并行装载);3.可以通过Increment/Decrement指令一步一步地修改;4.可以在上电时装入它的数据寄存器0(R0)的内容。
送给X9221所有的命令都由开始条件为引导,这个条件就是当SCL为高时,SDA由高至低的跳变。X9221连续监视SCL和SDA线上的开始条件,在遇到这个条件前将不响应任何命令。接着单片机必须输出要访问的X9221的8位地址。其中高4位为器件类型辨识符,固定为0101,低4位是该器件地址,由X9221的A0-A3输入端的状态来定义。在本设计中A0-A3全部接地,故地址为50H。 X9221在比较地址成功后会作出一个应答响应,以表示数据接收成功。接着单片机可以送出一个字节包括指令和寄存器指针的信息,格式如下:
其中高4位决定操作指令,P0位选择二个电位器中的一个,最低2位(R1 R0)选择4个寄存器中的一个。最后以SCL为高时SDA由低到高的跳变为一个终止条件来结束。终止条件一旦发出,则X9221开始内部的写周期,典型的写周期时间为10ms,如果单片机在X9221写操作周期内访问,则没有应答返回,此时可以采用轮询的方式等待应答信息。详细的时序及指令说明请参阅器件手册。
原文位置
结语
采用数字电位器控制变频器调速,可适用于各种规格型号的变频器,硬件组成简单,不需要价格较高外围电路复杂的D/A芯片,在单片机的控制下可进行闭环回路的自动跟踪调节,性价比高,易于实现。笔者所设计的电路实际应用于微型喷雾干燥实验机的电脑控制器中,已小批量生产。喷雾干燥实验机是将液体溶液干燥加工成为固体粉末,多用于医药、食品、化工和实验室等进行样品的制备和实验。在实验中要求能够根据物料的特性选择不同的干燥风量和加热温度,该功能的实现就是通过51 单片机控制一片数字电位器X9221,分别调节风机变频器和加热器可控硅调压模块控制风机转速和加热功率,采用模糊控制结合PID调节的控制方法,根据用户设定的温度和风量值,实现了风量和加热温度的自动调节,取得了满意的结果。因此,使用单片机系统控制变频器调速时,采用数字电位器作为输出调节接口,是一个简单实用、适用范围广、具有较高性价比的好方法。
❺ 如何实现变频器的自动控制
单片机不太熟,但我知知道PLC输出可以直接接到变频器上。最简单的比如一个正反转的控制,
plc编程
道有2个输出量,
正转
和反转分别接到变频器专的的多功能输入端,变频器再接到电机上,就可以通过外属部的开关
直接控制
电机。
❻ 如何用单片机控制变频器
用51。AVR。PIC都可以如果你要用比较多的I0的话。我建议你采用AVR的ATMEGA128L单片机,它具有64个腿,从A-E口各8,再加PINF口的5个口。总共具有40多个腿。但是如果用在你这个课题上,一片AT89S51或者你说的80C51也是足够的。很简单。你可以采用预制的外部端子来控制变频器,由光藕来控制变频器的外部端子,而光藕由51单片机来控制就okay了。如果你想采用无级调速,你可以采用变频器的模拟通道。不过需要A/D采集而已。那种方法基本差不多。随意采用。至于LCD。你可以采用1602液晶屏来实现。正反转直接在外部由单片机控制接触器来实现就okay了。
❼ 单片机控制变频器
学电子的弄变频器应该没有问题,只是你还没弄清变频器的工作原理,不要单片机只用变频器就能控制电机的转速,加入单片机是来控制变频器何时启动、加速、减速、停止。变频器有控制端口,跟你的单片机来通信,你把变频器看成好多接触器就行了,用你的单片机来控制其吸合,选变频器要由你的负载来定,跟输入电压没关系。