标题: 自制萝莉无刷电调 [打印本页]

作者: away24680    时间: 2020-4-23 11:07
标题: 自制萝莉无刷电调
首先感谢萝莉大神的一系列教程,原贴地址
贴内有详细教程,本人只把图纸和固件拷贝至此,为方便广大电子爱好者下载学习;
PN版

全N



固件烧录

固件;全N版
只有hex文件,无源码: 萝丽全N无刷固件.rar (2.07 KB, 下载次数: 177)

以及pcb抄板文件
注意:pcb文件有错误
有能力者自行修改
错误在单片机的vcc采用了电池的正极供电,切勿要从7805稳压 【我爱萝丽爱萝丽】再开新坑 无刷电调 DIY教程.docx (252.87 KB, 下载次数: 173) 芯片处供电。
由于全N性能较好固件只有全N如需PN自行下载或私信;




作者: away24680    时间: 2020-4-23 11:11
全N和PN的原理图位置错了,大家注意,全N指的是用的MOS管都为nMOS
作者: lhxtzlhxtz    时间: 2020-12-22 10:31
你的电路图全部都有错误
作者: 霸气范    时间: 2021-6-27 12:44
电路图好像两个 全n和pn的有错误,电源反了吧

作者: zh68a11    时间: 2022-3-13 20:41
不错,谢谢楼主。
作者: zhhdok    时间: 2023-4-9 11:22
太棒了留下记号
作者: zhhdok    时间: 2023-4-9 11:22
lhxtzlhxtz 发表于 2020-12-22 10:31
你的电路图全部都有错误

???
作者: zhhdok    时间: 2023-4-9 14:07
能把c分享一下吗
作者: fsyczxyy    时间: 2023-6-8 13:13
不给源码 这不浪费感情嘛,我给你写一个示例代码把
#include <reg51.h>
#define FOSC 11059200L
#define BAUD 9600
#define TIMER_CLOCK 921600L

sbit IN1 = P1^0;  //引脚定义
sbit IN2 = P1^1;
sbit IN3 = P1^2;
sbit IN4 = P1^3;

unsigned char code PWM_HL[8] = {0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x3F}; //PWM占空比

void delay_us(unsigned char i)
{
    while(i--);
}

void delay_ms(unsigned char i)
{
    unsigned char j;
    while(i--)
        for(j = 0; j < 110; j++);
}

void Timer0Init()
{
    TMOD &= 0xF0;
    TMOD |= 0x01; //16位计数器模式
    TH0 = 0x3C;
    TL0 = 0xB0;
    ET0 = 1;
    TR0 = 1;
    EA = 1;
}

void SerialInit()
{
    PCON = 0x00;
    SCON = 0x50;
    TMOD |= 0x20; //Timer1为8位自动重载定时器模式
    TH1 = 256-((FOSC/12/32)/BAUD);
    TL1 = TH1;
    TR1 = 1;
}

void PWM(unsigned char speed)
{
    unsigned char i;

    if(speed > 7)
        speed = 7;

    for(i = 0; i < 500; i++)
    {
        if(speed > i >> 8)
            IN1 = 1;
        else
            IN1 = 0;
        if(speed > i >> 6)
            IN2 = 1;
        else
            IN2 = 0;
        if(speed > i >> 4)
            IN3 = 1;
        else
            IN3 = 0;
        if(speed > i >> 2)
            IN4 = 1;
        else
            IN4 = 0;

        delay_us(1);
    }
}

void main()
{
    SerialInit();
    Timer0Init();
    while(1)
    {
        PWM(5);
        delay_ms(2000);
        PWM(2);
        delay_ms(2000);
    }
}

void Timer0_ISR() interrupt 1
{
    static unsigned char count = 0;
    static unsigned char speed = 0;
    TH0 = 0x3C;
    TL0 = 0xB0;
    count ++;
    if(count >= 10)
    {
        count = 0;
        if(SBUF > 10)
            speed = SBUF - 10;
        else
            speed = 0;
    }
    PWM(speed);
    TF0 = 0;
}
```

在此示例中,我们使用了定时计数器Timer0来产生控制无刷电机(4相)的PWM信号。通过修改定时器的计数方式和TH0、TL0寄存器的值,可以实现不同的PWM频率和占空比。具体实现步骤为:

1. 根据控制要求,定义引脚和占空比常量
2. 初始化定时器Timer0,并编写相应的定时器中断服务函数Timer0_ISR()
3. 初始化串口通信,并在主函数中调用PWM()函数来控制无刷电机的速度和方向
作者: 房子    时间: 2024-4-29 06:24
fsyczxyy 发表于 2023-6-8 13:13
不给源码 这不浪费感情嘛,我给你写一个示例代码把
#include  
#define FOSC 11059200L

技术哥牛,看不懂。支持一波!!!
作者: zhhdok    时间: 2024-6-22 23:50
fsyczxyy 发表于 2023-6-8 13:13
不给源码 这不浪费感情嘛,我给你写一个示例代码把
#include  
#define FOSC 11059200L

牛人
作者: kloo4568    时间: 2024-7-9 16:12
漂亮,我一直在做,就是没做出来
作者: Eliyas    时间: 2024-11-5 10:49
打样的话,板子面积会不会很大呀?
作者: QQQQ987    时间: 2025-2-21 21:01
错误都发出来,这是要闹啥???




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1