2015-12-24 浏览量 2048
利用单片机控制伺服电机,可以使用集成了带有PWM功能定时/计数器。但这种方式有它固有的诸多缺点,在需要控制的伺服电机比较多,运动关系复杂的情况下,这种方式是不适用的。本系统利用了ATmega16单片机内部集成的定时/计数器,以及非易失性存储介质EEPROM和UART接口设计了多路伺服电机控制器。
控制器用串口与上位机电脑进行通信,通过电脑的串口调试软件发出指令,选择实时在线调试,批量发送动作指令并存储在单片机的EEPROM中,或单片机按照指令自动控制各路伺服电机运动。
系统选用ATmega16单片机的一个8位计数器Timer0和一个16位计数器Timer1协调工作,利用单片机的I/O接口产生出可以控制单片机的PWM信号。各伺服电机可以协调地运动。这种控制方法使得单片机有多少空余的I/0口,就能控制多少路伺服电机。控制电机的数量根据具体应用而定,其余的I/O接口可以用来连接传感器等器件,利于功能扩展。
硬件设计
电路主要包括电源、单片机最小系统、伺服电机接口、RS-232接口电路、其他器件接口等几个部分,见图。
系统采用两种电源模式:一种是伺服电机和单片机共用同一个电源。由于AVR系列单片机抗干扰能力强,功耗小,在伺服电机数量比较少的情况下,可以使用这种方式。另一种方式是伺服电机和单片机采用独立电源,分别由各自的电源系统供电。两种方式通过跳线选择。系统输入电压为6V,单片机的电源采用LM1117低压差稳压器获取5V电压。
ATmega16单片机有一路串口可以与外界通信。系统采用MAX232芯片将单片机的TTL电平转换为-10V~15V的RS-232电平。
最小系统包括单片机复位电路、时钟电路,以及在系统编程(ISP)接口。系统使用8MHz石英晶体作为外部时钟源。
软件部分由主程序、定时/计数器和I/O接口控制部分以及串口通信部分组成。采用C语言编写程序,流程图见图。程序在EEPROM中开辟一个30×16的二维数组,用来存放自动运行时,各伺服电机运动的相应值。各值存放在数组的第二维,可存放的动作序列有30组。
主程序主要完成单片机片上硬件的初始化以及应用控制程序部分。系统初始化内容包括:用于控制伺服电机的I/O接口设置为输出,低电平;其他I/0口设为输入。Timer0和Timer1使能,Timer0使用主系统时钟8分频,Tiner1使用主系统时钟不分频,定时器同I/O口不相连,溢出中断。UART接口使能,接收中断。
主程序还完成读取串口的值,确定用户需要实时调试还是批量输入指令,还是自动运行,并执行相应程序。 TimerO和,Timer1交替使用,在使用一个计数器时关闭另一个计数器。由于TimerO的时钟频率高,计数值小,因此,Timer0首先溢出中断。在中断中关闭,Tiner1,把代表各电机位置的变量值与一个用于控制各I/O接口电平时间的变量比较。如果超过它,就将该口电平设为低电平,否则为高电平。然后将这一用于比较的变量自加1。重新设置Timer0计数初值。这样Timer0就不断地中断,不断把代表各电机位置的变量同用于比较的变量比较,使各控制端口高电平时间根据需要在0.5ms~2.5ms之间,直到所有接口高电平时间都结束,禁能Timer0,使能Tliner1。利用Timer1控制低电平时间,使得方波周期为18ms~20ms。
自动状态下,系统按照EEPROM中存放的指令控制伺服电机运动。实时调试指令模式下,程序把串口读到的16个数据分别赋给代表伺服电机位置的16个变量,定时器会自动产生相应的控制信号。如果需要存放指令,只需要把串口读到的数据分别赋给在EEPROM中开辟二维数组的第二维。如果指令更多,可以采用外部扩展EEPROM的方法进行存储空间扩展。
总结
通过测试,该系统性能可靠。系统采用单片机两个定时器联合工作的方法,利用中断程序,产生了多路伺服电机控制信号。与一般所采用的直接使用定时器PWM功能的方法相比,本系统可控制电机路数多,控制简单,通过设置各变量的值就可以控制伺服电机运动到相应位置。
平皮带输送机 SEZ31伺服型 宽度指定型 带防跑偏中间驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SEZ31步进型 宽度指定型 带防跑偏中间驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SEZ31调速型 宽度指定型 带防跑偏中间驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SEZ01伺服型 宽度指定型 中间驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SEZ01步进型 宽度指定型 中间驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SEZ01调速型 宽度指定型 中间驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SET31伺服型 宽度指定型 带防跑偏头部驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SET31步进型 宽度指定型 带防跑偏头部驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SET31调速型 宽度指定型 带防跑偏头部驱动双槽型材(带轮直径30mm)
安昂自营
平皮带输送机 SET01伺服型 宽度指定型 头部驱动双槽型材(带轮直径30mm)
安昂自营