Seçilmiş

Atolye

Teknoloji

Ev & Dekorasyon

Mutfak

Oyun

Outdoor

Sanat

Arduino İle Hard Disk Motoru Sürme

Tanıtım: Ne Hakkında

Bu projede Hall Effect sensörlerini kullanmadan HDD motorunu sürdüm. Tabii ki Hall Effect kullansaydım daha iyi olabilirdi. 

1. Adım: HDD'nin Kapağını Açın

Şimdiye kadar ilk defa uygun tornavida olmadığı halde böyle bir işe kalkıştım. Doğru tornavida olmadığı için haliyle işi biraz zorlaştırdı. Her hard disk içimi farklı bir his kaplar. O parlak yüzüyle bizi karşılar. 

2. Adım: Jumper'ları Lehimleyin

Normalde jumper lehimlemeyi hiç sevmem. Bu seferlik affedin beni. Ayrıca ölçü aletiyle her bacak arasını ölçün ve ortak GND'yi bulun. Bende gri olan kablo ortak. 

3. Adım: Bağlantılar

Normal transistör veya mosfet kullanabilirsiniz. Ben "Flyback Protection" ve Base dirençlerini kullanmamak için ULN2003 Entegresini kullandım. Gerekli bağlantıları yapın. 

4. Adım: Yazılım

Yazılımı Hollandalı bir arkadaş yazmış : http://bartvenneker.nl/schemas/Code_arduino_hdd.txt

int phase1 = 2;
int phase2 = 3;
int phase3 = 4;
int led = 12;

unsigned long stepLength = 40000;
int minStepLength = 1400;
int steps = 5;

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

void loop() {
  switchStep(1);
  switchStep(2); 
  switchStep(3);
  
  if(stepLength > minStepLength)
  {
    stepLength = stepLength - steps;
  } else {
    // set the minimum pulse length
    stepLength=minStepLength;
  }
  
  if (stepLength < 39950) {
    digitalWrite(led, HIGH);   // second gear
    steps = 300;
  }
   
  if (stepLength < 20000) {
    digitalWrite(led, LOW);      // third gear
    steps = 50;
  }

  if (stepLength < 3000) {
    digitalWrite(led, HIGH);      // fourth gear
    steps = 2;
  }
}


void switchStep(int 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 long p) {
if (p > 16380) {
  delay (p/1000);
  } else {
  delayMicroseconds(p);
  }
}

Yorumlar.

6995 Görüntülenme

0 Favoriler


coco

Trakya Üniversitesinde İngilizce Öğretmenliği okuyorum. Hobi olarak yazılım ve elektronikle ilgileniyorum. Bu siteyi deneyimlerimi paylaşmak için kullanıyorum. Üye olup sizler de paylaşabilirsiniz.


Bir Söz

“İtiraf ederim ki, düşmanlarımız çok çalışıyor. Biz de onlardan daha çok çalışmaya mecburuz. Çalışmak demek, boşuna yorulmak, terlemek değildir. Zamanın gereklerine göre bilim ve teknik ve her türlü medeni buluşlardan azami derecede yararlanmak zorunluluğudur.”

Tagler

KENDİN YAP MÜHENDİSLİK PROJELERİ PROJE PAYLAŞIN ELEKTRİK ELEKTRONİK MÜHENDİS EVDE YAP PROJE YAP ARDUİNO YAZILIM PCB HAZIRLAMA NE YAPTIK DIY DIY YAPIMI NASIL YAPILIR DEKORASYON DIY FİKİRLERİ

Sosyal Medya

Facebook Instagram