3120|1

17

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

DIY电子显微镜用移动滑台 [复制链接]

设计名称:DIY 电子显微镜用移动滑台

图片:

 

滑台网上买的几块钱,不知道是做啥产品用的

系统结构:

1,PYthon上位机程序

2,rs232通信

3,开发板程序包括:电机驱动程序,串口数据解码程序,按键程序,板载示例程序

 

作品简介:

GD32控制板,控制两个步进电机驱动器,控制板与上位机之间通信是232接口,驱动步进电机采用双4拍控制,上位机界面用python写成,这样在看电脑屏幕上图像的时候可以直接点击按钮来调整位置。

视频链接地址:https://training.eeworld.com.cn/video/20637。

电机驱动代码:

void left_move(uint32_t s_hz )
{
    for(k=0;k<4;k++)
    {
        switch(k)
        {
            case 0: 
                gd_eval_motor1_on(MOTOR1A);
                gd_eval_motor1_off(MOTOR1B);
                gd_eval_motor1_off(MOTOR1C);
                gd_eval_motor1_on(MOTOR1D);
            break;
            case 1: 
                gd_eval_motor1_on(MOTOR1A);
                gd_eval_motor1_on(MOTOR1B);
                gd_eval_motor1_off(MOTOR1C);
                gd_eval_motor1_off(MOTOR1D);
            break;
            case 2: 
                gd_eval_motor1_off(MOTOR1A);
                gd_eval_motor1_on(MOTOR1B);
                gd_eval_motor1_on(MOTOR1C);
                gd_eval_motor1_off(MOTOR1D);
            break;
            default: 
                gd_eval_motor1_off(MOTOR1A);
                gd_eval_motor1_off(MOTOR1B);
                gd_eval_motor1_on(MOTOR1C);
                gd_eval_motor1_on(MOTOR1D);
            break;
        }
        plus_delay(s_hz );
    }
}
/*!
    \brief      right_move function,右移双四拍控制
    \param[in]  s_hz 频率
    \param[out] none
    \retval     none
*/
void right_move(uint32_t s_hz )
{
    for(k=0;k<4;k++)
    {
switch(k)
        {
            case 0: 
                gd_eval_motor1_off(MOTOR1A);
                gd_eval_motor1_off(MOTOR1B);
                gd_eval_motor1_on(MOTOR1C);
                gd_eval_motor1_on(MOTOR1D);
            break;
            case 1: 
                gd_eval_motor1_off(MOTOR1A);
                gd_eval_motor1_on(MOTOR1B);
                gd_eval_motor1_on(MOTOR1C);
                gd_eval_motor1_off(MOTOR1D);
            break;
            case 2: 
                gd_eval_motor1_on(MOTOR1A);
                gd_eval_motor1_on(MOTOR1B);
                gd_eval_motor1_off(MOTOR1C);
                gd_eval_motor1_off(MOTOR1D);
            break;
            default: 
                gd_eval_motor1_on(MOTOR1A);
                gd_eval_motor1_off(MOTOR1B);
                gd_eval_motor1_off(MOTOR1C);
                gd_eval_motor1_on(MOTOR1D);
            break;
        }
        plus_delay(s_hz );
    }
}
/*!
    \brief      front_move function  向前移动,双四拍控制
    \param[in]  频率
    \param[out] none
    \retval     none
*/
void front_move(uint32_t s_hz )
{
for(k=0;k<4;k++)
    {
        switch(k)
        {
            case 0: 
                gd_eval_motor2_on(MOTOR2A);
                gd_eval_motor2_off(MOTOR2B);
                gd_eval_motor2_off(MOTOR2C);
                gd_eval_motor2_on(MOTOR2D);
            break;
            case 1: 
                gd_eval_motor2_on(MOTOR2A);
                gd_eval_motor2_on(MOTOR2B);
                gd_eval_motor2_off(MOTOR2C);
                gd_eval_motor2_off(MOTOR2D);
            break;
            case 2: 
                gd_eval_motor2_off(MOTOR2A);
                gd_eval_motor2_on(MOTOR2B);
                gd_eval_motor2_on(MOTOR2C);
                gd_eval_motor2_off(MOTOR2D);
            break;
            default: 
                gd_eval_motor2_off(MOTOR2A);
                gd_eval_motor2_off(MOTOR2B);
                gd_eval_motor2_on(MOTOR2C);
                gd_eval_motor2_on(MOTOR2D);
            break;
        }
        plus_delay(s_hz );
    }
}

/*!
    \brief      back_move function  向后移动双四拍控制
    \param[in]  频率
    \param[out] none
    \retval     none
*/
void back_move(uint32_t s_hz )
{
for(k=0;k<4;k++)
    {    
switch(k)
        {
            case 0: 
                gd_eval_motor2_off(MOTOR2A);
                gd_eval_motor2_off(MOTOR2B);
                gd_eval_motor2_on(MOTOR2C);
                gd_eval_motor2_on(MOTOR2D);
            break;
            case 1: 
                gd_eval_motor2_off(MOTOR2A);
                gd_eval_motor2_on(MOTOR2B);
                gd_eval_motor2_on(MOTOR2C);
                gd_eval_motor2_off(MOTOR2D);
            break;
            case 2: 
                gd_eval_motor2_on(MOTOR2A);
                gd_eval_motor2_on(MOTOR2B);
                gd_eval_motor2_off(MOTOR2C);
                gd_eval_motor2_off(MOTOR2D);
            break;
            default: 
                gd_eval_motor2_on(MOTOR2A);
                gd_eval_motor2_off(MOTOR2B);
                gd_eval_motor2_off(MOTOR2C);
                gd_eval_motor2_on(MOTOR2D);
            break;
        }
        plus_delay(s_hz );
 }
}
/*!
    \brief      频率延时 function
    \param[in]  none
    \param[out] none
    \retval     none
*/
void plus_delay(uint32_t s_hz )
{
uint32_t bs_hz ;
    bs_hz=s_hz ;
    if (bs_hz>1000)
    {bs_hz=1000;}
    if(bs_hz<=1)
    {bs_hz=1;}
    bs_hz=1000/bs_hz;
    delay_1ms(bs_hz);
}
通信解码代码:

void decode_usart()
{
    switch(usart_num)
    {
        case 0x67://主机发送数字1,前进
            code_num=1;
          gd_eval_led_on(LED1);
        break;
    case 0x33:
            code_num=2; //主机发送数字2后退
            gd_eval_led_on(LED2);
    break;
    case 0x66:
            code_num=3;//主机发送数字3左移
    break;
    case 0x19:
            code_num=4;//主机发送数字4右移
    break;
    case 0x65:
            code_num=5;//主机发送数字5停止
    break;
    default:
        code_num=5;//主机发送数字5停止
        gd_eval_led_off(LED1);
        gd_eval_led_off(LED2);
    break;
    }

通信初始化化代码用的是开发板示例程序中的

 

附件

1、源码

2、作品word文档

3、演示视频

 

DIY显微镜移动滑台项目.rar

2.12 MB, 下载次数: 17

演示视频--DIY电子显微镜用移动滑台.mp4

2.08 MB, 下载次数: 4

此帖出自GD32 MCU论坛

最新回复

楼主,麻烦补充以下内容哈: 1、系统框图 2、各部分实现的功能说明和解析 3、证明作品能完成既定功能的演示视频(放视频链接也可以)     详情 回复 发表于 2019-6-23 10:16
点赞 关注
 

回复
举报

824

帖子

190

TA的资源

管理员

沙发
 

楼主,麻烦补充以下内容哈:

1、系统框图

2、各部分实现的功能说明和解析

3、证明作品能完成既定功能的演示视频(放视频链接也可以)

 

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名在路上……

EEworld 有你有我
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表