玩3D打印机也有一段时间了,最近想自己设计一块3D打印的主板但是又不知道如何下手,索性从已有的开源项目入手分析别人是怎么控制3D打印机的。这块Ramps 1.4是一块arduino mega 2560单片机开发板的扩展板。使用它搭配mega2560就形成了功能完整的3D打印机控制板。
3D打印机DIY经常使用的主板——Ramps1.4(RepRap Arduino Mega Pololu Shield)。它设计的目的是用低成本在一个小尺寸电路板上的集成Reprap所需的所有电路接口。RAMPS连接强大的Arduino MEGA平台,并拥有充足的扩展空间。除了步进电机驱动器接口外,RAMPS提供了大量其他应用电路的扩展接口,RAMPS是一款更换零件非常方便,拥有强大的升级能力和扩展模块化设计的Arduino的扩展板。
下面是Ramps 1.4的原理图
分模块解读:
电源模块
电源分为VCC和+12V,其中+12V是接入ramps 1.4的12V开关电源提供的,VCC是从arduino mega2560单片机开发板上引出的5V供电。在国产的开发板上5V供电使用的是AMS1117稳压芯片提供的,由于稳压芯片只能提供很小的电流,因此在既要带动单片机及其外围电路以及扩展板的情况下容易烧坏。以下所有VCC代表5V供电,+12V代表12V供电。
LED模块
D14引脚接1k电阻接到LED再接地。这样D14引脚输出高电平即可点亮LED灯。
限位开关
一共6组3PIN排针接口,每个接口的3个PIN分别连接VCC、GND、和单片机的IO,每个轴对应两个限位开关模块,分别用于限制最大值和最小值。对应的IO为 D2、D3、D14、D15、D18、D19。
热敏电阻
用6PIN排针引出,每两个对应一个热敏电阻,其中一个接地,一个连接4.7k上拉,两者之间有10uf电容滤波。看来是和4.7k电阻分压后测量中点电压值以计算热敏电阻阻值,从而计算温度。对应的IO口为A13、A14、A15,均为单片机的模拟量输入IO口。
I2C接口
连接D20、D21和VCC以及GND ,目前似乎没有用到。
加热头和风扇
由一个6PIN排针引出,每两个PIN对应一个加热模块或者风扇,其中一个PIN连接+12V,另一个PIN连接到MOS管漏极,源极接地,栅极通过10欧姆电阻连接到IO,此10欧电阻用于防止栅极电容充电时产生振铃效应。在IO连接点处通过一个100k电阻接地,在IO控制时此电阻不起作用,但是在IO不控制时起到拉低电平使得默认不加热的目的。同时有一个LED和一个1.8k电阻串联后并联在两个PIN之间,这样在MOS管导通时LED就会亮,起到指示作用。对应的IO口是D8、D9、D10。MOS管的型号为STP55NF06L,查阅数据手册得知Vgs为5V时导通电阻典型值为0.016欧姆。
步进电机驱动
使用了5个步进电机驱动模块,每个对应连接单片机的3个IO口,一个控制步进脉冲一个控制旋转方向一个控制使能。5个步进电机驱动模块分别被命名为E0、E1、X、Y、Z,其中E0对应的使能引脚命名为E0-EN,E0对应的步进脉冲引脚命名为E0-STEP,E0对应的方向控制引脚命名为E0-DIR,其他几个模块的引脚也类似的方式命名,均可在原理图左上角找到对应的IO口,不再赘述。
Reset
一个微动开关一边接地一边接单片机的reset引脚,按下后给单片机复位。
Servos
使用4个3PIN排针引出,每个的第一脚为GND,第二脚接5V,第三脚接IO。四组接口对应的IO分别是D4、D5、D6、D11,目前不清楚有什么作用。
AUX-1
两组4PIN排针引出,每组第一脚接VCC,第二脚接GND,剩下两个接IO,对应的IO口编号为D1、D2、A3、A4。目前尚不清楚此模块的作用。
AUX-2
目前用处不明,略。
AUX-3
连接显示屏模块的SPI总线。
AUX-4
连接显示屏模块。