holts2 发表于 2014-12-30 21:39:43

holts2的KL25开源项目进行中 --- 电机转速显示控制板



一直想DIY台小铣,主轴电机选用无刷电机,通过同步轮带无动力主轴,为了直观的显示电机的转速,准备做个电机转速控制板,板上有两个轻触按键,一个调高转速,一个调低转速,每按一次,转速按50转的步进值增加或减小,长按则连续递增或递减,显示使用黑白液晶显示屏。

项目的整体结构如图所示:




显示部分如下图所示:




成本估算:240 元

显示 25
打板 50
KL25小板+书165


预计完成的时间: 2015/2/10


声明版权属于本人所有,作品授权发布在阿莫网站上,阿莫网站和飞思卡尔拥有资料的发布权和使用权。

superrf 发表于 2014-12-30 21:50:53

支持一个

ping624 发表于 2014-12-30 21:55:39

主动铣还是??

wxfje 发表于 2014-12-30 22:00:09

这个无刷电机的驱动也是自己搞定的吧

holts2 发表于 2014-12-30 22:02:15

wxfje 发表于 2014-12-30 22:00
这个无刷电机的驱动也是自己搞定的吧

不包括驱动,驱动买成品

fengyunyu 发表于 2014-12-30 22:18:59

holts2 发表于 2014-12-30 22:02
不包括驱动,驱动买成品

LZ的驱动板哪个买的?

holts2 发表于 2014-12-30 22:22:42

fengyunyu 发表于 2014-12-30 22:18
LZ的驱动板哪个买的?

和电机一起买的,电机带驱动板

swap2013 发表于 2014-12-31 07:30:19

Q1电路有点不明白

wxfje 发表于 2014-12-31 07:35:12

holts2 发表于 2014-12-30 22:02
不包括驱动,驱动买成品

那相对来说容易些
期待楼主的作品

wxfje 发表于 2014-12-31 07:37:19

swap2013 发表于 2014-12-31 07:30
Q1电路有点不明白

确实没看明白楼主Q1那部分电路的用意

holts2 发表于 2014-12-31 07:55:41

swap2013 发表于 2014-12-31 07:30
Q1电路有点不明白

Q1是背光控制,还在考滤要不要

holts2 发表于 2014-12-31 07:57:59

wxfje 发表于 2014-12-31 07:37
确实没看明白楼主Q1那部分电路的用意

初步设想从基极引出,接外接电位器控制亮度,看情况有没必要再说吧

bbsview 发表于 2014-12-31 08:48:17

不错,加油,坐等最终成品

armok 发表于 2014-12-31 10:18:13

honeybear 发表于 2014-12-31 13:22:17

应该难度不大,期待楼主的作品

holts2 发表于 2014-12-31 13:35:33

honeybear 发表于 2014-12-31 13:22
应该难度不大,期待楼主的作品

看起来 是简单,就一个显示呗

子鱼 发表于 2014-12-31 14:01:15

楼主只给出了电源部分和LCD显示部分 电机控制板驱动部分没有给出

holts2 发表于 2014-12-31 14:03:22

子鱼 发表于 2014-12-31 14:01
楼主只给出了电源部分和LCD显示部分 电机控制板驱动部分没有给出

电机控制驱动不包括在项目,只是个显示而与

子鱼 发表于 2014-12-31 14:05:22

楼主前期做的比较多 比如选择使用的LCD屏、按键、电机控制板。期待楼主的作品

holts2 发表于 2014-12-31 14:10:03

子鱼 发表于 2014-12-31 14:05
楼主前期做的比较多 比如选择使用的LCD屏、按键、电机控制板。期待楼主的作品...

前期的都是买的成品,没做什么

armok 发表于 2014-12-31 19:17:51

holts2 发表于 2014-12-31 19:22:43

armok 发表于 2014-12-31 19:17
你的开发套件已经寄出,申通:768996925969

支付运费我们已经支付,广东省内1-2天到,省外3-5天到。


好的,谢谢

彼岸花开@ 发表于 2014-12-31 21:57:16

1、小铣是啥。。楼主可否解释一下。。
2、那个战速是怎么测试。看楼主按键一下。可是实现50转的步进。。那个1转的步进是什么决定的呢。。。

holts2 发表于 2014-12-31 22:02:19

本帖最后由 holts2 于 2014-12-31 22:04 编辑

彼岸花开@ 发表于 2014-12-31 21:57
1、小铣是啥。。楼主可否解释一下。。
2、那个战速是怎么测试。看楼主按键一下。可是实现50转的步进。。那 ...


这个就是想做的小铣
http://www.amobbs.com/thread-5600324-1-1.html

转速就是设个变量,按一下加50,按两下加100 ………………

啥1转,在我这里直接忽略不记

javabean 发表于 2014-12-31 23:22:28

holts2 发表于 2014-12-31 22:02
这个就是想做的小铣
http://www.amobbs.com/thread-5600324-1-1.html



这个比较实用~

franki 发表于 2014-12-31 23:22:45

很好的设计 ,如何测电机的转速 ,用码盘嘛

holts2 发表于 2015-1-1 09:25:53

javabean 发表于 2014-12-31 23:22
这个比较实用~

哪个是大工程了,后期投入吧

holts2 发表于 2015-1-1 09:28:23

franki 发表于 2014-12-31 23:22
很好的设计 ,如何测电机的转速 ,用码盘嘛

有码盘成本就上去了, 主轴电机转速不需要精准,有个大概就可以了, 所以这里的转速不是闭环控制的概念,取其简单,够用就好

holts2 发表于 2015-1-1 13:53:01



板子收到了

holts2 发表于 2015-1-2 18:15:07

holts2 发表于 2015-1-1 13:53
板子收到了

我用的是MDK, 拿 到的书说的是CW, KL25开源板子用的是KDS, 这哪跟哪啊,都说不上话

holts2 发表于 2015-1-2 18:17:02

holts2 发表于 2015-1-2 18:15
我用的是MDK, 拿 到的书说的是CW, KL25开源板子用的是KDS, 这哪跟哪啊,都说不上话...

看来得学学KDS了, 用坛子强大的查找功能, 有XD已分享过了http://www.amobbs.com/forum.php?mod=viewthread&tid=5607499&highlight=KDS

holts2 发表于 2015-1-2 21:52:58

本帖最后由 holts2 于 2015-1-2 22:00 编辑

holts2 发表于 2015-1-2 18:17
看来得学学KDS了, 用坛子强大的查找功能, 有XD已分享过了http://www.amobbs.com/forum.php?mod=viewt ...

弄了一天KDS还是没搞清关系,算了还是用回我的MDK,将我的MDK5.0 更新到5.13, 编译原来的程序竟然出错,查了半天,原来就遇到过http://www.amobbs.com/thread-5593739-1-1.html

在MDK中,include paths 搞定

C:\Keil\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS\Include

搞定,先睡,明天继续

witlong 发表于 2015-1-3 00:28:09

支持。楼主辛苦了。

qs6361036 发表于 2015-1-3 08:22:01

关于电机的方案 ,关注一下

holts2 发表于 2015-1-3 08:40:09

witlong 发表于 2015-1-3 00:28
支持。楼主辛苦了。

大家共同学习

holts2 发表于 2015-1-3 21:03:06

holts2 发表于 2015-1-3 08:40
大家共同学习

加下两个按键在图上

superrf 发表于 2015-1-4 10:19:56

holts2 发表于 2015-1-3 21:03
加下两个按键在图上

两个按键有什么功能?

holts2 发表于 2015-1-4 10:22:52

superrf 发表于 2015-1-4 10:19
两个按键有什么功能?

调速度用的, Key_UP 按下一次,转速增加50, Key_Down按下一次,转速减50

holts2 发表于 2015-1-7 09:38:20

这两天看了下苏大的资料,开始写一点代码,首先根据我的项目需求,我需要定义两个按键:



//============================================================================
//文件名称:key.h
//功能概要:按键构件头文件
//版权所有:holts
//更新记录:2015-01-07   V1.0
//============================================================================

#ifndef _KEY_H   //防止重复定义(_KEY_H开头)
#define _KEY_H

//头文件包含
#include "common.h"    //包含公共要素头文件
#include "gpio.h"      //用到gpio构件

//按键端口及引脚定义
#define KEY_UP       (PORTB|1)    //增加转速按键使用的端口/引脚
#define KEY_DOWN   (PORTB|2)    //减少转速按键使用的端口/引脚


//=================接口函数声明===============================================
//============================================================================
//函数名称:key_init
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(1) 表示为B口1号脚)
//函数返回:无
//功能概要:按键驱动初始化。
//============================================================================
void key_init(uint_16 port_pin);

//============================================================================
//函数名称:key_read
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(1) 表示为B口1号脚)
//函数返回:无
//功能概要:按键读取。
//============================================================================
void key_read(uint_16 port_pin);

//============================================================================
//函数名称:key_done
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(1) 表示为B口1号脚)
//函数返回:无
//功能概要:按键处理。
//============================================================================
void key_done(uint_16 port_pin);

#endif    //防止重复定义(_KEY_H结尾)

//===========================================================================


zndz410 发表于 2015-1-7 10:15:34

看楼主的项目直播来了,关注中。。。。

LK9286 发表于 2015-1-7 15:30:45

收藏下,关注

holts2 发表于 2015-1-8 10:36:43

接下来会用到哪些系统资源 ?

Key我们在前面已经定义了,Systick 肯定会用到的,pwm 也会用到,当然还会用到LCD,但刚开始时为了简单,先不接LCD,所以先用系统的light 标示操作的回应,还需要限制电机的转速范围为 500 - 2500, 所以看起来我们应该 这样


//============================================================================
//文件名称:includes.h
//功能概要:工程总头文件
//版权所有:holts
//版本更新:2015-01-08V1.0
//============================================================================

#ifndef _INCLUDES_H//防止重复定义(开头)
#define _INCLUDES_H

//包含使用到的构件头文件
#include "common.h"
#include "systick.h"
#include "gpio.h"
#include "pwm.h"
#include "light.h"
#include "key.h"

//定义全局变量


//宏常数
#define RUN_COUNTER_MAX   1500000ul   //小灯闪烁频率

#define MAX_SPEED    2500//最高转速
#define MIN_SPEED    500   //最低转速

#endif            //防止重复定义(结尾)


holts2 发表于 2015-1-8 15:33:35

holts2 发表于 2015-1-8 10:36
接下来会用到哪些系统资源 ?

Key我们在前面已经定义了,Systick 肯定会用到的,pwm 也会用到,当然还会用 ...


有了以上这些资源,如何使用它们从而满足设计需求? 简单来说电机的的速度控制,就是输入PWM去控制电机,通过占空比的变化产生输出PWM电压的变化,从而控制电机的转速,但是电机的转速控制多种多样,且控制电压和转速不一定是线性关系。

我们这里简化处理,假定它们是线型关系,在500 - 2500的转速按100转一档,分为21档,如下表所示:



通过设置不同的占空比,输出不同的电压控制电机转速,当然如果对电机转速的控制精度要求较高,可以针对各档测试电机转速标定控制电压,或在电机上加装码盘,哪是后话了。


luckner 发表于 2015-1-8 18:03:23

楼主那个Q1电路背光使用LED实现的吗

holts2 发表于 2015-1-8 19:24:01

luckner 发表于 2015-1-8 18:03
楼主那个Q1电路背光使用LED实现的吗

是                的

luckner 发表于 2015-1-8 20:39:28

白光的还是?固定亮度?不如控制一下亮度,这样更酷炫

holts2 发表于 2015-1-8 20:41:47

luckner 发表于 2015-1-8 20:39
白光的还是?固定亮度?不如控制一下亮度,这样更酷炫

TFT屏自带背光

superrf 发表于 2015-1-8 21:18:39

holts2 发表于 2015-1-8 20:41
TFT屏自带背光

TFT背光不支持PWM调光吗?

holts2 发表于 2015-1-8 21:20:03

superrf 发表于 2015-1-8 21:18
TFT背光不支持PWM调光吗?

支持的,不过就这小屏还搞个PWM调光,不值啊

superrf 发表于 2015-1-8 21:24:13

holts2 发表于 2015-1-8 21:20
支持的,不过就这小屏还搞个PWM调光,不值啊

应该没有调光的必要,电源供电也不怕耗电

luckner 发表于 2015-1-8 23:48:39

调光会很酷炫的!

holts2 发表于 2015-1-9 07:57:07

luckner 发表于 2015-1-8 23:48
调光会很酷炫的!

我的目标是简单实用,低成本,不要酷炫

luckner 发表于 2015-1-9 09:18:43

也多不多什么麻烦啊

holts2 发表于 2015-1-9 09:21:36

luckner 发表于 2015-1-9 09:18
也多不多什么麻烦啊

麻烦很麻烦,在这个小屏上这样做不划算的

luckner 发表于 2015-1-9 09:22:47

holts2 发表于 2015-1-9 09:21
麻烦很麻烦,在这个小屏上这样做不划算的

多大的屏幕?

holts2 发表于 2015-1-9 09:26:10

luckner 发表于 2015-1-9 09:22
多大的屏幕?

大约1寸

holts2 发表于 2015-1-9 09:27:46


主程序看起来应该 是这样的



/**
******************************************************************
* @File :    main.c
* @Purpose:Main process
******************************************************************
*/
#include "includes.h"   //包含总头文件

volatile unsigned char timers;

uint_8 Trg;
uint_8 Cont;

uint_8 CurrDuty = 11;

uint_8 SpeedTable[] = { "2500","500","600","700","800","900","1000","1100","1200","1300","1400","1500","1600","1700","1800","1900","2000","2100","2200","2300","2400"};

uint_8DutyTable[] = {100,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96};

/******************************************************************/
int main(void)
{
        // 声明主函数使用的变量
        uint_32period=100;
        // 关总中断
        DISABLE_INTERRUPTS;
        //初始化外设模块
        light_init(RUN_LIGHT_BLUE,LIGHT_OFF);   //初始化蓝灯
        systick_init(CORE_CLOCK_DIV_16, TICK);    // 初始化SysTick周期为10ms,时钟源为外部时钟
        pwm_init(TPM0,TPMCH0,period,DutyTable);//初如化PWM
        //lcd_init()

        //开总中断
        ENABLE_INTERRUPTS;

        //进入主循环
        for(;;)
        {

          /* 键盘处理 */
            RunTask(key_done,Task0_ID);

          /*运行指示灯闪烁*/
          RunTask(blink,Task1_ID);

          /*显示处理*/
          //RunTask(Disp,Task2_ID);

        }//主循环end_for
}


luckner 发表于 2015-1-9 09:28:54

holts2 发表于 2015-1-9 09:27
主程序看起来应该 是这样的

看起来像0.96的那个oled

superrf 发表于 2015-1-9 09:35:04

luckner 发表于 2015-1-9 09:28
看起来像0.96的那个oled

PDF文档里是STN的屏

holts2 发表于 2015-1-9 09:40:34

luckner 发表于 2015-1-9 09:28
看起来像0.96的那个oled

大小一样,但不是OLED

am3359 发表于 2015-1-10 20:13:33

学习一下.

qs6361036 发表于 2015-1-10 21:22:28

显示部分是怎么实现的 ,上位机软件吗 ?

superrf 发表于 2015-1-10 21:35:03

qs6361036 发表于 2015-1-10 21:22
显示部分是怎么实现的 ,上位机软件吗 ?

LCD显示,楼主已经上传图片了

holts2 发表于 2015-1-10 21:38:48

superrf 发表于 2015-1-10 21:35
LCD显示,楼主已经上传图片了

飞线焊了块LCD显示,软件还没完成,先调好按键部份,软件再加显示,全部调通后再打板

qs6361036 发表于 2015-1-10 22:04:35

superrf 发表于 2015-1-10 21:35
LCD显示,楼主已经上传图片了

哦 ,LCD显示啊 ,没看到 !

superrf 发表于 2015-1-10 22:07:04

qs6361036 发表于 2015-1-10 22:04
哦 ,LCD显示啊 ,没看到 !

29楼的图片,右侧就是LCD

Ray______ 发表于 2015-1-12 23:55:01

简单也好,新手多

holts2 发表于 2015-1-17 08:42:16

Ray______ 发表于 2015-1-12 23:55
简单也好,新手多

单价的东西要做好也不简单

holts2 发表于 2015-1-20 21:41:35

这两天终于把板子画出来了,明天打板去

superrf 发表于 2015-1-20 22:50:35

holts2 发表于 2015-1-20 21:41
这两天终于把板子画出来了,明天打板去

准备用这个模块?背面的芯片像STM8

holts2 发表于 2015-1-21 01:05:10

superrf 发表于 2015-1-20 22:50
准备用这个模块?背面的芯片像STM8

是的,只是显示太浪费了,加个MCU

superrf 发表于 2015-1-21 10:09:21

holts2 发表于 2015-1-21 01:05
是的,只是显示太浪费了,加个MCU

这个模块也会用到KL25这个项目?

Juggernaut 发表于 2015-1-21 10:09:58

holts2 发表于 2015-1-9 09:27
主程序看起来应该 是这样的

楼主用的是官方库吗

holts2 发表于 2015-1-21 10:52:03

superrf 发表于 2015-1-21 10:09
这个模块也会用到KL25这个项目?

先完成这个项目,在这个项目中,这个显示板只焊按键开关,和显示屏。


之后这块板可焊MCU (可选STM8S103或 KL03),作为个最小系统板单独玩。

holts2 发表于 2015-1-21 10:52:53

Juggernaut 发表于 2015-1-21 10:09
楼主用的是官方库吗

不是官方的,是苏大的库

superrf 发表于 2015-1-21 11:25:13

holts2 发表于 2015-1-21 10:52
先完成这个项目,在这个项目中,这个显示板只焊按键开关,和显示屏。




原来是一板多用{:smile:}

holts2 发表于 2015-1-21 11:38:38

superrf 发表于 2015-1-21 11:25
原来是一板多用

是的,这个项目用KL25有点大材小用了,而且实际应用时,显示和控制两块板不好布局,我希望显示和控制集成在一块板上。

holts2 发表于 2015-1-25 17:23:42

holts2 发表于 2015-1-21 11:38
是的,这个项目用KL25有点大材小用了,而且实际应用时,显示和控制两块板不好布局,我希望显示和控制集成 ...





板子回来了

Juggernaut 发表于 2015-1-25 19:49:04

感觉很赞啊

holts2 发表于 2015-1-25 19:51:57

Juggernaut 发表于 2015-1-25 19:49
感觉很赞啊

哪个USB插口没搞好,C3C4 要飞线接地了

holts2 发表于 2015-2-1 13:46:28

holts2 发表于 2015-2-1 13:49:49

holts2 发表于 2015-2-1 13:50:29

holts2 发表于 2015-2-2 08:09:55

板子焊好了,准备开始调程序

superrf 发表于 2015-2-2 09:49:07

holts2 发表于 2015-2-2 08:09
板子焊好了,准备开始调程序

加油啊,快过年了{:smile:}

holts2 发表于 2015-2-2 10:03:49

superrf 发表于 2015-2-2 09:49
加油啊,快过年了

是啊,最近事多,进度有点拖后了,不过一定在年前搞定它

holts2 发表于 2015-2-3 20:06:13

程序调式好了,项目完成

holts2 发表于 2015-2-3 20:06:52

上传源程序

holts2 发表于 2015-2-3 20:08:11

本帖最后由 holts2 于 2015-2-3 21:00 编辑

手机拍的视频如何上传到优裤,审核中 。

holts2 发表于 2015-2-3 20:59:13

演示视屏

http://v.youku.com/v_show/id_XODg1ODQyMzgw.html

holts2 发表于 2015-2-6 12:25:25

armok 发表于 2014-12-31 19:17
你的开发套件已经寄出,申通:768996925969

支付运费我们已经支付,广东省内1-2天到,省外3-5天到。


站长,项目已完成, 相关资料已上传, 请审核。

holts2 发表于 2015-3-7 15:45:40

顶             起

holts2 发表于 2015-6-10 06:38:41

准备移值到K03
页: [1]
查看完整版本: holts2的KL25开源项目进行中 --- 电机转速显示控制板