Chạy motor HDD (brushless) bằng Attiny13 - Điều khiển động cơ không chổi quét (4 dây)

Chắc hẳn các bạn đều đã từng dùng qua máy tính bàn và biết rằng trong đó có những ổ đĩa HDD cũ. Khi lên đời laptop, những chiếc HDD cũng hàng chục GB đã trở nên vô dụng vì dung lượng quá ít của nó hoặc nó đã hỏng từ lâu! Qua bài viết này, mình mong muốn truyền một ít kiến thức và thành quả của mình để các bạn biến ổ cứng HDD cũ trở nên có ít hơn. Như mình chẳng hạn... biến nó thành một máy mài mini heart!

1. Chuẩn bị

2. Sơ đồ mạch điện

Hình 1: Sơ đồ mạch điện

3. Lập trình

Code tạo ra dạng xung như trong hình, lưu ý là tốc độ phải từ thấp đến cao, có một số HDD không đáp ứng được tầng số cao, lúc đó xảy ra hiện tượng HDD không xoay mà sẻ dừng hẳn, kèm theo tiếng rít.

Hình 2: Xung điều khiển động cơ

byte phase1 = 2;
byte phase2 = 3;
byte phase3 = 4;
byte led = 1;
byte Button = PB0;
boolean reading = 0;

unsigned int stepLength = 40000;
unsigned int minStepLength = 1400; // tầng số khi HDD max tốc độ
unsigned int steps = 5;

void setup()
{
    pinMode(led, OUTPUT);
    pinMode(phase1, OUTPUT);
    pinMode(phase2, OUTPUT);
    pinMode(phase3, OUTPUT);
    pinMode(Button, INPUT);
    digitalWrite(led, LOW);
}

void loop()
{
    if(digitalRead(Button) == 0)
        reading = 1;

    if (reading == 1)
    {
        switchStep(1);
        switchStep(2);
        switchStep(3);

        if(stepLength > minStepLength)
            stepLength = stepLength - steps;
        else
            stepLength = minStepLength;

        if (stepLength < 39950)
        {
            digitalWrite(led, HIGH);
            steps = 400;
        }

        if (stepLength < 20000)
        {
            digitalWrite(led, LOW);
            steps = 100;
        }

        if (stepLength < 4000)
            steps = 2;
        
        if (stepLength < 1600)
            digitalWrite(led, HIGH);
    }
}


void switchStep(byte stage)
{
    switch(stage)
    {
        case 1:
            digitalWrite(phase1, HIGH);
            digitalWrite(phase2, LOW);
            digitalWrite(phase3, LOW);
            myDelay(stepLength);
            break;

        case 2:
            digitalWrite(phase1, LOW);
            digitalWrite(phase2, HIGH);
            digitalWrite(phase3, LOW);
            myDelay(stepLength);
            break;

        default:
            digitalWrite(phase1, LOW);
            digitalWrite(phase2, LOW);
            digitalWrite(phase3, HIGH);
            myDelay(stepLength);
            break;
    }
}

void myDelay(unsigned int p)
{
    if (p > 16380)
        delay (p / 1000);
    else
        delayMicroseconds(p);
}

4. Video

Trong video mình có dán luôn giấy ráp (giấy nhám) làm dùng cụ mài, tiếc là mình không quay khi đang mài thử cho mọi người xem.

Các bạn cứ làm thử, cảm giác cái gì mình làm là thấy đã à.

5. File mạch in

Các bạn in theo tỉ lệ 1:1 nhé !

1. Mặt dưới

Mặt đồng:

http://www.mediafire.com/download/s9h1vg0kr4d1v9l/Attiny13_run_HDD_motor_01.PDF (mirror)

2. Mặt trên

Mặt nhựa:

http://www.mediafire.com/download/ggfu93cg73y25ci/Attiny13_run_HDD_motor.PDF (mirror)

5. Nạp chương trình

Các bạn nạp chường trình bằng Arduino IDE Classic theo hướng dẫn tại bài viết Bài 2: Attiny13 - Trợ thủ đắc lực của Arduino - Lập trình nó? hoặc nạp trên cloud với Codebender theo hướng dẫn tại bài viết Lập trình ATtiny13 với Codebender

Chúc các bạn thành công !

lên
21 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Kiểm tra sức khỏe acquy 12V với Attiny13

Hôm nay, mình sẽ chia sẻ cho các bạn cách để làm một mạch kiểm tra tình trạng acquy với Attiny13. Mình đã làm sẵn mạch in, các bạn có thể dùng nó để làm ra mạch kiểm tra acquy 12V chuyên nghiệp!

lên
12 thành viên đã đánh giá bài viết này hữu ích.

Nạp file .hex cho chip AVR - USBISP - Hướng đẫn cụ thể với 2 dòng ATTiny13 và ATmega8

Đôi khi chúng ta có file nạp cho chip .hex, hoặc các bạn làm xong một dự án trên board Arduino, các bạn không cần bootloader (nhất là chíp Atmega8), và các bạn muốn phát triển trên một bảng mạch riêng thì lúc đó ta sẻ nạp trực tiếp file .hex cho chip, và hôm nay mình sẻ hướng dẩn các bạn nào chưa biết một cách nạp file .hex (firmware) đơn giản và an toàn. Có rất nhiều cách nạp firmware các bạn có thể tìm hiểu trên Internet.

lên
12 thành viên đã đánh giá bài viết này hữu ích.