HDD motoru sürme

Başlatan blacklogic, 13 Ağustos 2013, 22:15:41

blacklogic

Elimde olan malzemeler ile bu işe giriştim motoru döndermeyi başardım ancak frekans hızı konusunda sıkıntı çekiyorum, max. ve min. frekans ne olmalı acaba ? Şuanda motor yavaş dönüyor yani 1 turu 2sn alıyor gibi.
kullandığım transistörler çok ısınıyor yarın bd135 ve bd136 ile deneyeceğim.

Kod ve devre şeması:
#include <xc.h>
#include <pic18f1230.h>
#include "delay.h"

// CONFIG1H
#pragma config OSC = INTIO2       // Oscillator (External RC oscillator, port function on RA6)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

// CONFIG2L
#pragma config PWRT = OFF       // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOR = BOHW       // Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
#pragma config BORV = 3         // Brown-out Reset Voltage bits (Minimum setting)

// CONFIG2H
#pragma config WDT = ON         // Watchdog Timer Enable bit (WDT enabled)
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3L
#pragma config PWMPIN = OFF     // PWM Output Pins Reset State Control bit (PWM outputs disabled upon Reset)
#pragma config LPOL = HIGH      // Low-Side Transistors Polarity bit (Even PWM Output Polarity Control bit) (PWM0, PWM2 and PWM4 are active-high (default))
#pragma config HPOL = HIGH      // High Side Transistors Polarity bit (Odd PWM Output Polarity Control bit) (PWM1, PWM3 and PWM5 are active-high (default))

// CONFIG3H
#pragma config FLTAMX = RA5     // FLTA Mux bit (FLTA input is muxed onto RA5)
#pragma config T1OSCMX = LOW    // T1OSO/T1CKI MUX bit (T1OSO/T1CKI pin resides on RB2)
#pragma config MCLRE = ON       // Master Clear Enable bit (MCLR pin enabled, RA5 input pin disabled)

// CONFIG4L
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable bit (Reset on stack overflow/underflow enabled)
#pragma config BBSIZ = BB256    // Boot Block Size Select bits (256 Words (512 Bytes) Boot Block size)
#pragma config XINST = OFF      // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled)

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit Block 0 (000400-0007FF) (Block 0 is not code-protected)
#pragma config CP1 = OFF        // Code Protection bit Block 1 (000800-000FFF) (Block 1 is not code-protected)

// CONFIG5H
#pragma config CPB = OFF        // Code Protection bit (Boot Block Memory Area) (Boot Block is not code-protected)
#pragma config CPD = OFF        // Code Protection bit (Data EEPROM) (Data EEPROM is not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit Block 0 (000400-0007FF) (Block 0 is not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit Block 1 (000800-000FFF) (Block 1 is not write-protected)

// CONFIG6H
#pragma config WRTC = OFF       // Write Protection bit (Configuration Registers) (Configuration registers are not write-protected)
#pragma config WRTB = OFF       // Write Protection bit (Boot Block Memory Area) (Boot Block is not write-protected)
#pragma config WRTD = OFF       // Write Protection bit (Data EEPROM) (Data EEPROM is not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit Block 0 (000400-0007FF) (Block 0 is not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit Block 1 (000800-000FFF) (Block 1 is not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF      // Table Read Protection bit (Boot Block Memory Area) (Boot Block is not protected from table reads executed in other blocks)
#define _XTAL_FREQ 4000000
#define f 6
void main (void)
{
    void adc(void);
    TRISB=0x00;
    LATB=0x00;
    TRISA=0xFF;
    //adc();
    while(1)
    {
        LATB=0b00110010;
        __delay_ms(f);
        LATB=0b10110000;
        __delay_ms(f);
        LATB=0b11100000;
        __delay_ms(f);
        LATB=0b11000010;
        __delay_ms(f);
        LATB=0b1000011;
        __delay_ms(f);
        LATB=0b00100011;
        __delay_ms(f);
    }

}



skara1214

bu hdd motorlarında hall effect varmı dahili?
Herkes ölür ama herkes gerçekten yaşamaz

Icarus

blind startup yaptıktan sonra back EMF'i ölçerek senkron olarak hızınızı artıracaksınız.

Ayrıca level-shift yapmamışsınız PNP'ler PIC'in ESD diyotlarını halledebilirler...

blacklogic

#3
Alıntı yapılan: skara1214 - 13 Ağustos 2013, 22:18:24
bu hdd motorlarında hall effect varmı dahili?
Keşke olsa çok iyi olurdu ama yok. HDD motoru ile bldcye giriş yaptım düzgün ve verimli bir çalışma yaparsam mosfetiler ile bir devre kurup sensörlü bldc motor alacağım. Buradaki kodda sadece port aç kapat yaparak çalıştırdım ama pwm ile de aynı devreye kod yazdım ama motor dönmedi. PWM şeması şu şekilde:


mesaj birleştirme:: 13 Ağustos 2013, 22:25:26

Alıntı yapılan: Icarus - 13 Ağustos 2013, 22:21:00
blind startup yaptıktan sonra back EMF'i ölçerek senkron olarak hızınızı artıracaksınız.

Ayrıca level-shift yapmamışsınız PNP'ler PIC'in ESD diyotlarını halledebilirler...
valla hocam terimlere yapancı kaldım, biraz açarmısınız ? PNPlerin pic neden bir zararı olsun o kısmı anlamadım. Rica etsem şema üzerinde düzeltilmesi gereken yerleri düzeltir misiniz?

Icarus

Burada nasıl olduğu detaylı anlatılıyor.
http://ww1.microchip.com/downloads/en/AppNotes/01160b.pdf
http://ww1.microchip.com/downloads/en/appnotes/00970a.pdf

PNP'lerin devresine bakarsanız PIC'in IO pin'ine +12V verdiğinizi görürsünüz. PIC max 5V