打印
[开源硬件]

【21ic DIY秀】+无刷电机、舵机调速模拟器

[复制链接]
4703|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 whtwhtw 于 2019-3-2 09:14 编辑

一次在使用小水泵抽水玩的时候不小心把水洒到水泵无刷电机调速模拟器上,就这样无声无息的挂了。。。。。。居然坏了,这也太脆弱了吧。。。

就是这货,内部就一个ssop16封装的芯片,型号还打磨了,其它就剩一个电位器、led,贴片电容电阻了。
于是把它肢解了,由于画面太过血腥也就不上照片了。

其实看某宝也很便宜,但是考虑到电工的身份。。。。。。还是做一个吧

相关帖子

沙发
whtwhtw|  楼主 | 2019-3-1 20:54 | 只看该作者
本帖最后由 whtwhtw 于 2019-3-2 09:22 编辑

第一步、查阅相关资料
搜了几个网页后发现这个页面介绍的比较详细
http://www.moz8.com/thread-82875-1-1.html?_dsign=4c5e3ada
以下内容为摘录:
控制舵机的信号其实也是PWM,跟我们在之前课程讲到的PWM原理一样。比较一下异同:
控制LED亮度的PWM:周期10ms,高电平0~10ms可以连续变化;
控制舵机的PWM:周期20ms,高电平时间0.5ms~2.5ms变化。



使用特权

评论回复
板凳
whtwhtw|  楼主 | 2019-3-1 21:12 | 只看该作者
二、设计原理和方案
看看原理也挺简单的,不就是PWM嘛,周期20ms,正脉冲0.5ms-2.5ms,仅此而已。
手上有新塘的M0、M4,STM的M3,GD的M4,还有以前用剩下的2051、avr mega8、mega16。
考虑到简单的小玩意就不打板了,就打算用洞洞板和DIP封装的mega8设计,调脉宽利用原模拟器上的电位器。
原理就是单片机采集电位器上的电压,根据电压值确定输出pwm脉宽在0.5ms到2.5ms之间变化,并且脉宽数据用spi串口屏显示。
上原理图

使用特权

评论回复
地板
whtwhtw|  楼主 | 2019-3-1 21:30 | 只看该作者
三、制作过程-找元器件、焊接电路板
话不多说,开工
洞洞板


mega8




打完、收工

这里补充一下液晶屏的资料,从某宝老王那里买的,一个字“便宜”。一块多钱的128*64

显示芯片用的ST7567
一切都好,唯一要吐槽的就是这液晶焊盘,眼睛都焊瞎了,拿着高倍放大镜才能看见焊连了没有。。。。。。

使用特权

评论回复
5
whtwhtw|  楼主 | 2019-3-1 21:32 | 只看该作者

使用特权

评论回复
6
whtwhtw|  楼主 | 2019-3-1 21:45 | 只看该作者
本帖最后由 whtwhtw 于 2019-3-2 09:33 编辑

四、代码
编译器用的CodeVisionAVR
定时器0中断用作指示灯LED1的反转定时;
定时器1中断用于PWM输出
AD使用查询模式,每次循环检测滑动电阻器输出电压值,通过判断ADC值修改定时器1的输出比较寄存器的值OCR1AL、OCR1AH。
程序主要内容为:
#include <mega8.h>
#include <delay.h>
#include "ASCII_FONT.h"
#include "yj_init.h"
#include "AD.h"
#include "stdlib.h"
//#include "stdio.h"
// Declare your global variables here

unsigned int plus,show_plus;
unsigned int adc_int_data;

unsigned char show_adcdata[16];
unsigned char show_plusdata[16];

float adc2_data;

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xD8;
PORTC.3=~PORTC.3;
// Place your code here

}

// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Place your code here
    show_plus=plus;
    if(show_plus<=270)
        plus=270;                                //由于使用内部RC震荡器精度问题,和舵机动作范围受供电电压影响;脉宽0.5ms-2.5ms对应的比较寄存器值在250-1250才对。
    else if(show_plus>=1225)            //实测脉宽在低于0.5ms和大于2.5ms时候舵机会震颤,所以这里进行了范围压缩
       plus=1225;
    else
        ;
    OCR1AH=plus>>8;
    OCR1AL=plus&0xff;
}


具体程序如下
mage8_PWM.zip (143.3 KB)

使用特权

评论回复
7
whtwhtw|  楼主 | 2019-3-1 21:57 | 只看该作者
本帖最后由 whtwhtw 于 2019-3-1 22:01 编辑

五、效果

视频




使用特权

评论回复
8
whtwhtw|  楼主 | 2019-3-2 09:18 | 只看该作者
@21ic小喇叭 我的标题改了,为啥在列表中没变啊,让我重新发一次吗?

使用特权

评论回复
评论
21ic小喇叭 2019-3-4 09:32 回复TA
@whtwhtw :应该就是延迟了 
whtwhtw 2019-3-4 09:28 回复TA
@21ic小喇叭 :是的,过几分钟后,系统自己改过来了 
21ic小喇叭 2019-3-4 09:20 回复TA
@whtwhtw :改过来了吧 
whtwhtw 2019-3-2 09:20 回复TA
估计是服务器延迟吧,好几分钟才改过来...... 
9
kingTek| | 2019-3-2 19:22 | 只看该作者
这种pwm舵机的时间片利用效率低下,纯模拟方式,早该淘汰了

使用特权

评论回复
10
kingTek| | 2019-3-2 19:25 | 只看该作者
就这么个简单玩意还float adc2_data

使用特权

评论回复
11
whtwhtw|  楼主 | 2019-3-2 19:35 | 只看该作者
kingTek 发表于 2019-3-2 19:25
就这么个简单玩意还float adc2_data

就像某些部门的某些领导,上班看看报喝喝茶,做个ppt是吧,闲着也是闲着,做ppt多加几个动画对他来说只是少喝一口茶而已,您也别较真

使用特权

评论回复
12
璀璨中的凋零| | 2019-3-3 22:46 | 只看该作者
好厉害啊。。我一个刚入门的萌新都看不懂

使用特权

评论回复
13
gaon2| | 2019-3-4 12:02 | 只看该作者
都是大神

使用特权

评论回复
14
whtwhtw|  楼主 | 2019-3-4 16:56 | 只看该作者
璀璨中的凋零 发表于 2019-3-3 22:46
好厉害啊。。我一个刚入门的萌新都看不懂

那就赶快学啊,c不像汇编,比以前学单片机容易很多了

使用特权

评论回复
15
whtwhtw|  楼主 | 2019-3-4 16:57 | 只看该作者

使用特权

评论回复
16
puxu2018| | 2019-3-8 16:27 | 只看该作者

使用特权

评论回复
17
老道游天下| | 2019-3-25 14:46 | 只看该作者
这种pwm舵机的时间片利用效率低下,重庆时时彩 https://1680380.com/view/shishicai_cq/ssc_index.html 纯模拟方式,早该淘汰了

使用特权

评论回复
18
whtwhtw|  楼主 | 2019-3-26 08:40 | 只看该作者
老道游天下 发表于 2019-3-25 14:46
这种pwm舵机的时间片利用效率低下,重庆时时彩 https://1680380.com/view/shishicai_cq/ssc_index.html 纯 ...

兄弟啊,没用时间片啊,这是用的定时器匹配中断实现的,难道还有比这效率还高的?大神指导一下

使用特权

评论回复
19
whtwhtw|  楼主 | 2019-4-4 15:15 | 只看该作者
本帖最后由 whtwhtw 于 2019-4-4 15:27 编辑

兄弟姐们们,喜欢的给投个票吧


5号

使用特权

评论回复
20
dennyl| | 2019-4-16 11:31 | 只看该作者
ATmega PWM控制马达比较多,低功耗

使用特权

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

本版积分规则

72

主题

2501

帖子

35

粉丝