已解决,谢谢各位大哥解答 |
可以看看电压问题,仿真软件里没有电压的硬性要求 |
上善若水001 发表于 2020-4-19 16:30 弄好了,但是PWM又出问题。。 |
brad1111 发表于 2020-4-17 19:45 你给驱动板单独供电,再把驱动板的 负极 和单片机的 负极 相接,试试 |
上善若水001 发表于 2020-4-17 10:13 驱动板的地是哪一个,不是只有电源出来的线一个正负极吗? |
pwm是步进电机 |
brad1111 发表于 2020-4-17 09:31 不是必须要用PWM的,你直接给 使能端 高电平,INT1 INT2 一个高电平一个低电平,电机就能转动了。 还有,我怀疑你是不是没有把驱动板和单片机共地 |
大神们,这个电机会不会动,和PWM有关系吗,我程序没有弄pwm,如果需要的话能不能大概教一下怎么弄 |
我未曾来过 发表于 2020-4-16 23:48 不接电源转动轮子,驱动芯片的led会亮,算是电磁吗? |
你这个电机使能是0,到底是驱动芯片那里,还是单片机io口那里,讲道理好像没什么问题。但凡是仿真能实现,但是现实做不到的简单程序,绝大部分可能都是接线问题或者电磁干扰。你先搞明白io口那里有没有问题,但是你主函数一开始就使能了应该没啥问题。当然也有可能是电源问题 |
我拿了两节5号干电池去测试每一个电机,电机和轮子是会转的,所以我感觉问题还是出在L293D上,具体是什么问题不太懂,希望大神能指导一下 |
然后这是我的程序,大佬们也帮忙看一看 #include<reg51.h> #include<intrins.h> typedef unsigned char u8; typedef unsigned int u16; sbit PWM2A=P1^4;//定义M1电机为P1.4的I/O口,即为小车右边第一个电机 sbit PWM2B=P1^5;//定义M2电机为P1.5的I/O口,即为小车左边第一个电机 sbit PWM0B=P1^6;//定义M3电机为P1.6的I/O口,即为小车左边第二个电机 sbit PWM0A=P1^7;//定义M4电机为P1.7的I/O口,即为小车右边第二个电机 sbit SER =P3^4;//定义74hc595芯片 DS脚数据线 sbit RCK =P3^5;//定义 LATCH脚 输出存储器锁存时钟线 sbit SCK =P3^6;//定义输入时钟线 void delay(void)//延迟500ms { unsigned char a,b,c; for(c=23;c>0;c--) for(b=152;b>0;b--) for(a=70;a>0;a--); } void HC595SendData(u8 SendVal) { u8 i; for(i=0;i<8;i=i++) { SER=SendVal&0x80;//1000 0000 1000 0000 SendVal=SendVal<<1;//0000 0000 0000 0000 每次取1位左移 SCK=0; //先将串行时钟输入端SH_CP置成低电平 _nop_(); _nop_(); //两个时钟周期 SCK=1; //数据在串行时钟输入端SH_CP的上升沿输入到移位寄存器 } RCK=0; //锁存 _nop_(); _nop_(); RCK=1; //移位寄存器上升沿时,数据进入存储寄存器 } void main() { PWM2A=1; //M1电机使能 PWM2B=1; //M2电机使能 PWM0B=1; //M3电机使能 PWM0A=1; //M4电机使能 HC595SendData(0x6a);//01101010 全部电机正转,小车前进 delay(); while(1); } |