gmyu 发表于 2011-3-29 10:21:17

AMIS30512步进电机控制芯片

昨天下午熟悉了AMIS30512步进电机控制芯片,用PIC写了些程序,居然转起来了。在一定频率下运行很平稳,
晚上看了些speci。今早试用了一些功能,觉得很好,特此向大家推荐,我刚刚试用,会的都贴出来了。
SPI接口,可以细分1/32,控制方向,电流,BEMF检测,限流,给外部器件提供稳压电源5V,看门狗,电压检测,角度,EMC等等。

几乎没有任何外围元件,所以就不要问我接线图,下个speci看看就行。
void MOTO_sendBytes(uint8 cmdM, uint8 datM)
{
   signed int8j;
   clr_mCS;   
      for(j=7; j>=0; --j)
      {
         output_bit(MOTO_DI, bit_test(cmdM, j));// Send a data bit
         set_MOTO_CLOCK;                  // Pulse the clock
         clr_MOTO_CLOCK;
      }
      for(j=7; j>=0; --j)
      {
         output_bit(MOTO_DI, bit_test(datM, j));// Send a data bit
         set_MOTO_CLOCK;                  // Pulse the clock
         clr_MOTO_CLOCK;
      }

   set_mCS;
}

#int_RTCC
void RTCC_isr()
{ //blnNXT = 0;
if (enMoto){
    if (blnNXT)
      {clr_mNXT;blnNXT = 0;}
    else
      {set_mNXT;blnNXT = 1;}
}
}

void main()
{
//   uint8 txtBuf;

// Xtmp = 10;
// fCnt = 11;
   
   output_A(0x00);
   output_B(0x00);
   output_C(0x00);
   set_tris_A(0b11100000);//   set_tris_A(0b11110001);
   set_tris_B(0b11111111); //   set_tris_B(0b00010001);
   set_tris_C(0b10010000); // ALL output
//   port_B_pullups(true);
//   setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_64);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_128); //32-8M=4ms   13.1ms for 256-20M =76.3359
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   enable_interrupts(INT_RTCC);
//   ext_int_edge(H_TO_L);      // init interrupt triggering for button press
   //enable_interrupts(INT_EXT);// turn on interrupts
   //enable_interrupts(int_rda);
   enable_interrupts(GLOBAL);

   set_mCS;
   clr_MOTO_CLOCK;
   enable_MOTO;
   
   delay_ms(200);
   blnNxt = 0; //for NXT output flag

   MOTO_sendBytes(0x80,0x0); //8=write,0=reg0. Dat7=wdtEN,6-3=wdtInterval

while(true)
    {
   clr_MOTO_CLOCK;
      MOTO_sendBytes(0x83,0x0); //8=write,3=reg3
      MOTO_sendBytes(0x81,0x1B); //8=write,1=reg1. Dat7-5=StepMode,4-0=currentAmp
   MOTO_sendBytes(0x82,0x0B); //8=write,2=reg2. Dat7=dir,6=nxtp,3=PWMF,2PWMJ,1-0EMC
      MOTO_sendBytes(0x83,0x80); //8=write,3=reg3. Dat7motoEN,6SLP,5SLAG,4SLAT
   delay_ms(8000);
   
      MOTO_sendBytes(0x83,0x0); //8=write,3=reg3
      MOTO_sendBytes(0x81,0x5B); //8=write,1=reg1. Dat7-5=StepMode,4-0=currentAmp
   MOTO_sendBytes(0x82,0x88); //8=write,2=reg2. Dat7=dir,6=nxtp,3=PWMF,2PWMJ,1-0EMC
      MOTO_sendBytes(0x83,0x80); //8=write,3=reg3. Dat7motoEN,6SLP,5SLAG,4SLAT
   delay_ms(2000);
    }
}

自己还手焊了一个H桥电路,很多年没有搞这些了,手上没有合适的板子,荒废了,大家就不要学我。
左边的是IC驱动,中间那堆事分离元件的驱动(包括12个三极管,8个二极管,8个电阻),阿莫有给过那个图,右边是电机。
http://cache.amobbs.com/bbs_upload782111/files_37/ourdev_626381ZFVVX0.JPG
moto driver (原文件名:IMG001.JPG)

gmyu 发表于 2011-3-29 10:22:40

这个是两相四线的,IC最大H桥电流是800mA,可以到40V,不知这个功率可以应用到哪些方面。

luzj05 发表于 2011-3-29 14:01:30

帮顶~!

gmyu 发表于 2011-3-30 09:32:36

SPI接口,可以细分1/32,控制方向,电流,BEMF检测,限流,给外部器件提供稳压电源5V,看门狗,电压检测,角度,EMC等等。

主要是它的细分,反电动势检测,保护等等功能。很奇怪,网上基本没有它的应用。

还有它的PWM加入人工抖动,没搞明白啥意思。
这里是数据手册。
speci.ourdev_626712VC6AA9.pdf(文件大小:415K) (原文件名:AMIS30512-D.pdf)

gmyu 发表于 2011-3-30 09:41:42

应用笔记
app. noteourdev_626713J01NTR.pdf(文件大小:2.87M) (原文件名:AND8371-D.pdf)
app. noteourdev_626714F0KRC9.pdf(文件大小:1.36M) (原文件名:AND8399-D.pdf)
app. noteourdev_626715CCU9V8.pdf(文件大小:148K) (原文件名:AND8403-D.pdf)

lningbd 发表于 2011-3-31 15:03:21

想推广,就翻译一下呗。
它的失步检测功能的原理是什么?可靠吗?
这种驱动芯片,SPI接口罕见,与其他电机驱动芯片和现成的驱动器“无兼容性”,要是用的话程序上还要做不少工作,难怪“网上基本没有它的应用”。

gmyu 发表于 2011-4-2 12:21:35

没想推广,就想摆弄一下,手上有几个。就想问个问题如下。

这个是两相四线的,IC最大H桥电流是800mA,可以到40V,不知这个功率可以应用到哪些方面?

lningbd 发表于 2011-4-2 21:00:51

能介绍一下SPI的指令有哪些吗?

yanghai-M 发表于 2011-4-4 22:49:18

AMIS的这款芯片的技术是来自德国TRINAMIC公司的TMC223这家公司之前帮AMIS开发出来的,现在TRINAMIC的TMC芯片又推出了功能更高的Coolstep系列的芯片了 而且失步检测的分辨率比AMIS的更高。
点击此处下载 ourdev_628384Z00UOQ.pdf(文件大小:737K) (原文件名:TMC260_TMC261_TMC262_datasheet.pdf)
点击此处下载 ourdev_628385L88WJZ.pdf(文件大小:1.79M) (原文件名:TMC223_datasheet.pdf)
点击此处下载 ourdev_628386IM49TR.pdf(文件大小:692K) (原文件名:New Driver-TMC26X.pdf)

gmyu 发表于 2011-4-6 11:14:39

楼上更厉害,可是我手头只有AMIS,朋友送的,而且不知道这个价格多少。
回复七楼:我简单看了下,所谓指令就是改寄存器内容,应该是4个寄存器,第一个是状态,其他是控制。每次发两个字节,第一个字节就是读/写加地址,第二个就是寄存器的内容。从我上面的程序可以看出,最少应该3条指令就可以转动了,以后你每次改变改一些标志实现相应的操作。

semonpic 发表于 2011-4-6 11:53:40

做个单轴还可以,要是多轴联动还行吗

lningbd 发表于 2011-4-6 15:18:42

回复【9楼】gmyu
-----------------------------------------------------------------------

谢谢。我也看懂些,设置细分,电流。调速还是用脉冲,换向还是高低电平

gmyu 发表于 2011-4-14 12:25:57

调速就是调NXT脚的频率,换向不用硬件高低电平也可以,直接改标志位就行。

xxoo14 发表于 2012-11-21 16:35:14

我正在使用这个驱动芯片,很不错,想问下丢步怎么检测 ,楼主做了没有

gmyu 发表于 2012-11-21 16:43:04

我老笨,datasheet和notes太多,没看懂,你那他做什么?

xxoo14 发表于 2012-11-21 16:46:13

gmyu 发表于 2012-11-21 16:43 static/image/common/back.gif
我老笨,datasheet和notes太多,没看懂,你那他做什么?

我做驱动器的,现在做用SLA脚基本可以检测到堵转了,但是检测MSP寄存器防止丢步还不是很好

gmyu 发表于 2012-11-21 16:49:42

长时间没看,貌似有电流和反向电动势的detect功能,我没用过,玩玩而已
页: [1]
查看完整版本: AMIS30512步进电机控制芯片