打印
[Cortex-M0技术交流]

第五批菜农学子---2012学习第三帖——直流电机控制

[复制链接]
2035|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
手头正好有点东西,简单做了个小车,接293D控制程序简单,只是跑个正方形,红外探测壁障还没弄。

#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"


int main (void)
{
int i=0;
int on=0;
int dn=0;
        UNLOCKREG();                                                                                                                 
    SYSCLK->PWRCON.XTL12M_EN = 1;                                                                               

    DrvSYS_Delay(5000);                                                                                                         
        DrvGPIO_Open(E_GPA, 2, E_IO_OUTPUT);                //PA2-5连接293D分别控制左右两路电机                                       
        DrvGPIO_Open(E_GPA, 3, E_IO_OUTPUT);                                                                 
        DrvGPIO_Open(E_GPA, 4, E_IO_OUTPUT);                                                                 
        DrvGPIO_Open(E_GPA, 5, E_IO_OUTPUT);
        DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT);
        DrvGPIO_Open(E_GPB, 15, E_IO_INPUT);                //key1做输入

        DrvGPIO_ClrBit( E_GPB,10);                                        //关闭蜂鸣器
               



while(DrvGPIO_GetBit( E_GPB,15 )==1);                        //key1按下开始
{}
       
                DrvSYS_Delay(5000000);                                                         


               

                          DrvGPIO_SetPortBits( E_GPA,40);                 //直行  
                           DrvSYS_Delay(1500000);
                          DrvGPIO_SetPortBits( E_GPA,0);
                           DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
                        DrvSYS_Delay(10000000);
                          DrvGPIO_ClrBit( E_GPB,10);


                    DrvGPIO_SetPortBits( E_GPA,36);                 //左转        90度
                        DrvSYS_Delay(400000);
                          DrvGPIO_SetPortBits( E_GPA,0);
                           DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
                        DrvSYS_Delay(10000000);
                        DrvSYS_Delay(10000000);
                          DrvGPIO_ClrBit( E_GPB,10);

                           DrvGPIO_SetPortBits( E_GPA,40);                 //直行
                           DrvSYS_Delay(1500000);       
                          DrvGPIO_SetPortBits( E_GPA,0);
                           DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
                        DrvSYS_Delay(10000000);
                        DrvSYS_Delay(10000000);
                          DrvGPIO_ClrBit( E_GPB,10);

                DrvGPIO_SetPortBits( E_GPA,36);                 //左转        90度
                        DrvSYS_Delay(400000);
                          DrvGPIO_SetPortBits( E_GPA,0);
                           DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
                        DrvSYS_Delay(10000000);
                        DrvSYS_Delay(10000000);
                          DrvGPIO_ClrBit( E_GPB,10);

                          DrvGPIO_SetPortBits( E_GPA,40);                 //直行  
                           DrvSYS_Delay(1500000);
                          DrvGPIO_SetPortBits( E_GPA,0);
                           DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
                        DrvSYS_Delay(10000000);
                        DrvSYS_Delay(10000000);
                          DrvGPIO_ClrBit( E_GPB,10);

                    DrvGPIO_SetPortBits( E_GPA,36);                 //左转        90度
                        DrvSYS_Delay(400000);
                          DrvGPIO_SetPortBits( E_GPA,0);
                           DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
                        DrvSYS_Delay(10000000);
                        DrvSYS_Delay(10000000);
                          DrvGPIO_ClrBit( E_GPB,10);

                           DrvGPIO_SetPortBits( E_GPA,40);                 //直行
                           DrvSYS_Delay(1500000);       
                          DrvGPIO_SetPortBits( E_GPA,0);
                           DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
                        DrvSYS_Delay(10000000);
                        DrvSYS_Delay(10000000);
                          DrvGPIO_ClrBit( E_GPB,10);

                DrvGPIO_SetPortBits( E_GPA,36);                 //左转        90度
                        DrvSYS_Delay(400000);
                          DrvGPIO_SetPortBits( E_GPA,0);
                           DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
                        DrvSYS_Delay(10000000);
                        DrvSYS_Delay(10000000);
                          DrvGPIO_ClrBit( E_GPB,10);

                       
               

                         DrvGPIO_SetPortBits( E_GPA,0);                       



}

C360_2012-03-03-21-16-19.jpg (478.49 KB )

C360_2012-03-03-21-16-19.jpg

C360_2012-03-03-21-17-23.jpg (409.39 KB )

C360_2012-03-03-21-17-23.jpg

C360_2012-03-03-21-17-44.jpg (423.2 KB )

C360_2012-03-03-21-17-44.jpg

小车跑正方.rar

2.1 MB

工程

相关帖子

沙发
xyz549040622| | 2012-3-4 06:24 | 只看该作者
介个不错,继续弄下去玩

使用特权

评论回复
板凳
Swallow_0322| | 2012-3-4 07:34 | 只看该作者
顶!

使用特权

评论回复
地板
乡村男孩| | 2012-3-4 09:39 | 只看该作者
顶一个

使用特权

评论回复
5
dong_abc| | 2012-3-4 11:12 | 只看该作者
学生就是好,有空玩。

使用特权

评论回复
6
缥缈九哥| | 2012-3-4 11:17 | 只看该作者
开始以为 是直流无刷电机的。所以 进来 了,哈哈。

使用特权

评论回复
7
plc_avr| | 2012-3-4 12:29 | 只看该作者
顶一下,大叔的板子能自已跑了,呵呵。

使用特权

评论回复
8
plc_avr| | 2012-3-4 12:32 | 只看该作者
开始以为 是直流无刷电机的。所以 进来 了,哈哈。
缥缈九哥 发表于 2012-3-4 11:17

-----------------------
新唐不给力!有人做出来无刷电机驱动,只有原理图,没有源码,那个还是当版主的也没有开源.....连官网也看到这个无刷驱动了,光有图片能说明啥呢,比ST或PIC的差远了。人家可是只接全部开源啊。。。。。。。。

使用特权

评论回复
9
plc_avr| | 2012-3-4 12:40 | 只看该作者
如果不是新唐官方做的,官方可以给人家一定费用,直接将源码开源,这样的推广会更给力。否则太小气了。

使用特权

评论回复
10
缥缈九哥| | 2012-3-4 12:44 | 只看该作者
新唐的无刷电机的DEMO在我这。可是还没有要到例子。
中国的人品就是这样,懂那么一点东西就遮遮掩掩的,当作祖传秘方。中国的国情就是那么样。你一出来先进的东西,大家都只想着**想着盗版,产品刚出样品,还没有赚回开发投入费用就让别人大批低价量产赚走了。政策也没有版权保护,法律更是一纸空文管的只是无权无势的老百姓,法庭也只是特权阶层的舞台,谁有关系谁有钱就谁赢。谁按规则出牌,谁就输得很惨,谁老实谁就吃亏。。社会就是那么进步缓慢的了。。。

使用特权

评论回复
11
nongfuxu| | 2012-3-4 16:51 | 只看该作者
DrvGPIO_Open(E_GPA, 2, E_IO_OUTPUT);          //PA2-5连接293D分别控制左右两路电机        

首先鼓励LZ.
若LZ把函数名定义得更加贴切实际就更胜一筹了.
例: DrvMotor (  RightMotor,  On );

使用特权

评论回复
12
disixin| | 2012-3-5 09:21 | 只看该作者

使用特权

评论回复
13
meilidianzhi| | 2012-3-6 21:28 | 只看该作者
不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

130

帖子

0

粉丝