zpwang 发表于 2007-5-5 23:17:12

打算用M16做个两相H桥步进电机驱动

受人之托.准备上手一从没做过的相目,60V~100V/1A~10AH桥两相步进电机驱动.对此以前没有多少了解.近来看了点资料.现在打算动手.下面的想法不知能否行通,请在行朋友指点!

   使用一片M16产生四通道20KHz的PWM(脉宽可调以达到电流控制)去调制四通道由外部中断触发的微步脉冲(使用一4二输入与门).用这几路脉冲驱动H桥供电机工作.

   用两通道AD转换采样A,B两相的电流来控制20KHzPWM信号的脉宽,实现恒流斩波.和电流档位控制.

   目前最担心的是M16的工作速度可能跟不上.中断资源冲突.这几天调了一下,感觉是外部中断能每步触发,但定时中断确有很多被丢失.还没有加进AD转换.和其他控制.不知这个方案是否会流产.

   欢迎各位有识之士前来讨论,提出您宝贵的建议.在此先谢了!

zpwang 发表于 2007-5-7 00:15:13

贴一张逻辑分晰图给大家看看.

http://cache.amobbs.com/bbs_upload782111/files_7/armok01153086.JPG

Qhjh 发表于 2007-5-7 12:05:45

M16:做20k恒频

+网络电阻做8位DAC,细分要挑出32级很容易.

斩波比较这些全部用外部硬件设计掉.

如果做细分8级的话,就用M8(看I/O的数量).

找个数字示波器看看电流波形,就知道是否大功告成.

-------------------------------------------------------------

我上个月接的项目和你的项目内容完全一样.起初和你想的也完全一样.要完全做好时间太长了.所以建议细分的话用恒频斩波方式的,不要求细分的话,用L297.

专用的话,用L297比较快,机械传动比部分在选好步进电机时就好设计掉.

wj414 发表于 2007-5-8 20:05:35

请问有没有L297+L298N的典型电路?

zpwang 发表于 2007-5-8 20:27:43

谢谢二楼朋友的建义.达算改用频率能上35MHZ的单片机STC12C5410AD来做.

zpwang 发表于 2007-5-8 20:27:53

谢谢二楼朋友的建义.达算改用频率能上35MHZ的单片机STC12C5410AD来做.

Qhjh 发表于 2007-5-8 23:35:35

我也一直也在想细分简单化,STC同批次个别片会出现太娇气,没有好感.

我用M16+PWM方式(软件方式,只是想想,没有去实现过):

M16L超到16M 1US执行16条指令差不多了.

开两个中断:ICP+PWM

ICP:

1.外部CP触发

2.动作时序查表

3.更新PWM值



PWM:

调整PWM值(有时想想这个调整还要加入PID思想)



读取ADC部分,暂时没有想好.为了讨论方便:

假设步进电机额定电流4A,细分为4级4个阶梯,粗粗理解每个阶梯的电流差值应该是要相等的.

假设功率电阻选择1欧母,就有1V,2V,3V,4V.MEGA系列的ADC转换,一般总有个最高ADC时钟频率吧,没有测试过假如2^5位分辨率时,这个时钟频率可以上到多少,而且ADC通道打切(2相要两个通道),听大家说好像不太稳定,反正保险些要做个数字滤波吧,这些就要增加时间开销,因此要想个方法,比如DA我们用网络电阻方式,AD我们也可以用网络电阻方式再加两个LM339或其它比较器,参考电压:0.9V,1V,1.1V,1.9V,2V.2.1V,2.9V,3V,3.1V,3.9V,4V,4.1V,接成类似的窗口比较器,然后接入I/0,担心I/O不够的话,SPI+165.这样就不用担心AD转换的速度了,感觉这个框架还是可以操作的.

----------------------------------------------------------------------------

另外一直感觉奇怪的是楼主对付两相为什么要4通道PWM?2通道PWM不是就够了吗!1个线圈分配1个PWM,加控制I/O+1路PWM+数字电路(或GAL)正反都可以实现了啊(我在直流电机上实现过).

zpwang 发表于 2007-5-9 21:31:27

多谢六楼的朋友再次回复!

首先两通道是可以完成任务,但用四通道更可靠呀.在不同的时段A+/A-及B+/B-的电流要求不一样(做细分的话)

至于使用运放+基准电压与相电流比较的方法是我最初考虑过.这个只能起到不同电流档位设定的作用.对细分它无能为力.外加DA的话成本增加是小事,关键是电路拥肿.充分利用CPU资源的话电路整洁,也减少了元件失效率.

听你说STC有不稳定因素,不知是否,我没有用过它做产品.要是不行用什么IC好?想过用LM3S6xx的ARM IC做.不知这款IC的稳定性如何.三十多元一片,相对用专业驱动IC应该便宜点,而且设机上可以灵活很多.

我想微步脉冲做到能响应10KHz的速度,每步10个PWM脉冲,每个PWM脉冲分10至100份步进.

只是10份的话要加细分就不太可能了.

Qhjh 发表于 2007-5-9 23:18:03

我的说法难道不是细分吗?!!呵呵!



楼主7楼的意思我是明白的,这个是思考惯性上的问题,传统的驱动器可以设置工作电流,通过人工对DIP开关打切组合然后送到VREF端. VREF/功率电阻 = 工作电流.

我的不是这个意思,既然用了A/D,这个比较当然用软件完成了,我说的窗口比较器的作用:

就是针对楼主"在不同的时段A+/A-及B+/B-的电流要求不一样(做细分的话)"

1.不一样,就会在不同的时段产生不同的电压 (= 电流*功率电阻值).

2.MCU当然知道这个时段的理想电压(电流)值(PWM占空比),

3.MCU用窗口比较器知道了这个时段的真实电压值!!!!!!事情不就简单了吗?!!!呵呵.也烦,

要用类似PID调节自己摸个调节公式.

4.A+/A-/B+/B- = 1010到0010,1/2步内插入4步的话,也就是1010下会有4个时段,时段迁移,就只要改变PWM的占空比完成的.



这个窗口比较器和手机上的电量指示器一样,可以知道每个阶梯(时段的)电压值,比如今天的,明天的,后天的,大->小./充电 小->大,一清二楚.

cbcb128 发表于 2007-5-10 14:22:51

细分电流要附合相量原则才能更好,不是简单的1。2。3

Qhjh 发表于 2007-5-10 18:49:59

简单1.2.3怎么不行呢?!相量也是1.2.3 ..步啊.讨论到细节肯定就会显现出来了!

gwhuang 发表于 2007-8-15 21:08:37

请问有没有两相步进电机驱动程序,c语言的...我是用M16做个两相H桥步进电机做的
页: [1]
查看完整版本: 打算用M16做个两相H桥步进电机驱动