|
昨天下午熟悉了AMIS30512步进电机控制芯片,用PIC写了些程序,居然转起来了。在一定频率下运行很平稳,
晚上看了些speci。今早试用了一些功能,觉得很好,特此向大家推荐,我刚刚试用,会的都贴出来了。
SPI接口,可以细分1/32,控制方向,电流,BEMF检测,限流,给外部器件提供稳压电源5V,看门狗,电压检测,角度,EMC等等。
几乎没有任何外围元件,所以就不要问我接线图,下个speci看看就行。
void MOTO_sendBytes(uint8 cmdM, uint8 datM)
{
signed int8 j;
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[16];
// 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[19].JPG) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|