Ynt: dc motor kontrolü hk

Başlatan gkn666, 27 Mart 2015, 20:52:19

gkn666

Merhaba arkadaşlar

Foruma yeni üye oldum ve bu ilk yazım olacak.Umarım diğer forumlardaki gibi cevapsız kalmam  :(

Bir konuda yardıma ihtiyacım var

şimdi benim bir inkjet yazıcım var.kağıdı hareket ettiren dc motora sahip
motordan bir adet belt mile takılı kasnağa gidiyor

kasnakla birlikte bir adet encoder diski var sensör arasından geçiyor

bu encoder sayesinde makina kağıdın nerde olduğunu anlayıp ileri geri hareket ederek yazdırma işlemini gerçekleştiriyor

ben bu motoru iptal edip daha güçlü bir motor takmak istiyorum

yazıcıdaki motorda her dc motor gibi + ve -  girişler var yani ileri geri hareket için akım yönü değiştiriyor
bunu bir sinyal olarak kullanabilirmiyim

sonuçta encoder yerinde duracak.durması gerektiği zaman akım kesilecek okadar yada geri gelmesi gerektiği zaman akım yönü değişecek


yazıcıdaki motorun özellikleri aşağıdaki gibi

Type DC motor with brushes
Drive voltage +42V ± 5% (voltage applied to driver)
Armature resistance 21.2Ω ± 10%
Inductance 17.2mH (1kHz)
Rotor Inertia 18.8gcm2
Drive method PWM
Drive IC A6628

nasıl yaparım hangi yoldan gitmem gerek

yardımlarınızı rica ediyorum





mesaj birleştirme:: 27 Mart 2015, 21:39:28

sanki burda birşeyler var gibi ama hiçbişey anlamadım desem yeridir  ???


http://www.elektrikport.com/teknik-kutuphane/pwm-%28sinyal-genislik-modulasyonu%29-teknigi-nedir/11717#ad-image-0

Kabil ATICI

Teorik olarak evet. Pratikte yazıcı motoru yarine göre pwm ile sürüyor ve aşırı akım koruması olması lazım.

Eğer bu motor bacaklarından gerekli sinyalleri deşifre edebilirseniz, olur.  Yazıcıda bu işi H köprü ile hallediyor. Ama çip içinde gömülü olarak. Tabi motoru sürmek için gereken korumalarla birlikte. Yazıcı motor olmadan çalışmayacak bir yapıda olabilir.

Yazıcı çalışmasında kağıt alma mekanizmasında sensör tarafından kağıt algılanmazsa, yazıcı arızaya geçer. Bu tür çalışması ile ilgili konulara da ciddi olarak eğilmen gerekir.
ambar7

gkn666

#2

sensor pozisyonları hazır.yazıcılarla aram iyidir ama bu motor kontrol işi beni aşıyor  ;)







bu videodan anladığım kadarıyla motor olması şart

ama kontrol etmekte mümkün

dediğim gibi mekanikten anlarım ama iş motor kontrolüne gelince yardım gerekiyor

please HELP :-[



http://www.youtube.com/watch?v=QVGsqURrffo#ws

mesaj birleştirme:: 28 Mart 2015, 12:21:33

bir örnek daha,

burdan yola çıkarak bana yardım edecek olan yokmu emeğinin karşılığını vereceğim



http://www.youtube.com/watch?v=zvDLuKG90eM#

mesaj birleştirme:: 28 Mart 2015, 12:46:13

ve bir video daha Arduino controller kullanarak yapmak mümkün sanırım encoderdan A ve B çıkışı alınabiliyormuş  :D


bu forumdada cevapsız kalıp kendi işimi kendim halledicem gibi görünüyor  ::)


https://www.youtube.com/watch?v=z1r_yYtolNg

Kabil ATICI

Step motor sürmek sorun değil. Buradaki sıkıntı yazıcının yaptığı hareketi algılamak.

http://elektronikvelemciler.blogspot.com.tr/2011/08/atmega8-ile-tek-kutuplu-adm-motorlarn.html

Gerçi en alttaki videoda sanırım hareketi encoder tekerleğinden okumuş.

O encoder algılayıcıları biraz farklı.  Birkaç denememde elimde kaldılar.

ambar7

gkn666

encoder yedekleriyle birlikte elimde mevcut çok pahalı bir parçada değil anakarttan ayrı

eğer encoderdan A ve B sinyallerini alabiliyorsak yapabilirmiyiz hocam

ne yapma gerek arduino alayımmı bir tane başka ne lazım

Kabil ATICI

işlemci burada önemli değil. İstediğin işlemci ile gidebilirsin. Kodu ile uğraşmak konusunda hangisini güveniyorsan. İlk olarak encoder ile okuyup dönüş yönün algılayabilecek (görebilecek) misin?
Bunu iki LED ile görebilirsin. Arduino elektronik ile uğraşmak istemeyenler veya az bilenler için kolaydır.

Burada motor özelliklerini vermişsin, bu adımlı (step) motor ise, sürücü oluşturmak gerekir. Bu motora göre değişir.
2 tip bağlantı var. Bipolar (4 telli bağlantı) ve unipolar (5 veya 6 telli bağlantı).   Arduino üzerinden gideceksen hazır motor sürücüsü ve motor sürme örnekleri de bolca internette var.

Sensör okuma,
motor sürme
ve son olarak yazıcının baskı esnasında sürme mekanizması kaç tık ilerliyor, ona göre motoru hareket ettirme.

motor sürücü arduino ürünleri olarak (örnek)
http://www.direnc.net/Arduino-Motor-Shield,PR-13984.html


https://www.sparkfun.com/tutorials/400

http://jdreyer.com/projects/Arduino/StepperMotor.php

http://wiki.makeblock.cc/index.php/Me_2H_Microstep_Driver

http://content.solarbotics.com/products/documentation/use-1-2.html

adım motor konusunda buna benzer birçok uygulama bulabilirsin.
ambar7

gkn666

hocam son mesajlarımı işyerinde olduğum için aceleyle yazdım kusura bakmayın

öncelikle ilgilendiğiniz için size teşekkür ederim.

Arduino benim için uygun gibi görünüyor.nette diğer kullanıcılarda aynı işlemciyi kullanmış.daha sorunsuz olacağını düşünüyorum

sorularınıza gelince

ileri geri dönüş yönü algılayabiliyoruz orda sorun yok

yazıcının motoru step motor değil bildiğimiz dc motor resimleride birazdan ekliyorum

elimde bol miktarda step motor var 4 giriş 6 giriş 8 giriş hepsinden bol bol var ihtiyacınız olursa sizede gönderebilirim :)

sürme mekanızmasına gelince

encoder içinden geçen tako disk (biz böyle diyoruz) üzerinde sayamayacağım kadar küçük çizgi var tahminimce 600-700 kadar bununda resimini paylaşacağım

tako disk 8mm bir şafta bağlı.aynı şaft kağıdı hareket ettiriyor

yani bir turda 25,12 mm hareket ediyor

ben başta orjinal motoru kullanmayı düşünüyordum.bunun içinde t5 zamanlama kayışı  - t5 10 diş kasnak - t5 40 diş kasnak ve t5 20 diş kasnak kullanarak bir turda 25.00 mm hareket alacaktım

bir turda 0,12 mm az hereket oluyor

baskı alanı 48 cm uzunluğunda olduğundan    480/25,12 = 19,2 * 0,12 = 2,3 mm kısa baskı yapmış oluyorum

diğer örneklerde baskıda sorun olmamış

step motorun hareketide, yazıcının encoderi tam bir tur attığında, step motor  tablayı 25,12 mm hareket edecek şekilde optimize edilmesi gerekiyor

umarım açıklayabilmişimdir

buraya kadar beni dinleyip yardımcı olduğunuz için çoook teşekkür ederim

kameram çok kötü kusura bakmayın  ::)

iyi akşamlar
















superconductor

Yazıcı üzerindeki dc motoru hiç sökme mekanizma olduğu gibi kalsın, çünkü bildiğim kadarıyla çoğu yazıcıda kartuş nozüllerini temizleyen sisteme hareket veren yine bu motor.
Encoderi sökmeden A ve B uçlarından paralel uç çıkar kendi devrende kullanmak üzere. Geriye Quadrature encoder okuma ve step motor sürme işi kaldı. Encoder sinyallerini çözdüğünde elinde adım ve yön bilgisi olucak bunu doğrudan step motoru sürmek için kullanabilirsin.

http://playground.arduino.cc/Main/RotaryEncoders

 

gkn666

#8
hocam yabancı bir forumda arduino  kodlarını buldum  buldum

devre şemasıda var  ;)

bu makina ;

https://www.youtube.com/watch?v=ZS3XSh34q3c




#define encoder_a 2 //keep this on and interrupt pin
#define encoder_b 3 //keep this on and interrupt pin
#define motor_step 4 //can be any pin
#define motor_direction 5 //can be any pin

#include <delay.h>
volatile long motor_position, encoder;

void setup () {
  //set up the various outputs
  pinMode(motor_step, OUTPUT);
  pinMode(motor_direction, OUTPUT);
 
  // then the encoder inputs
  pinMode(encoder_a, INPUT);
  pinMode(encoder_b, INPUT);
  // enable pullup as we are using an open collector encoder
  digitalWrite(encoder_a, HIGH);
  digitalWrite(encoder_b, HIGH);
 
  // encoder pin on interrupt 0 (pin 2)
  attachInterrupt(0, encoderPinChangeA, CHANGE);
  // encoder pin on interrupt 1 (pin 3)
  attachInterrupt(1, encoderPinChangeB, CHANGE);
  encoder = 0; //reseet the encoder position to 0
}

void loop() {
  //do stuff dependent on encoder position here
  //such as move a stepper motor to match encoder position
  //if you want to make it 1:1 ensure the encoder res matches the motor res by dividing/multiplying
  if (encoder > 0) {
    digitalWrite(motor_direction, HIGH);// move stepper in reverse
    digitalWrite(motor_step, HIGH);
    digitalWrite(motor_step, LOW);
    delayMicroseconds(10); //_delay_us(200); //modify to alter speed
    motor_position++;
    encoder = 0; //encoder--;
  }
  else if (encoder < 0) {
    digitalWrite (motor_direction, LOW); //move stepper forward
    digitalWrite (motor_step, HIGH);
    digitalWrite (motor_step, LOW);
    delayMicroseconds(10); //_delay_us(200); //modify to alter speed
    motor_position--;
    encoder = 0; //encoder++;
  }
}

void encoderPinChangeA() {
  if (digitalRead(encoder_a)==digitalRead(encoder_b)) {
    encoder--;
  }
  else{
      encoder++;
  }
}

void encoderPinChangeB() {
  if (digitalRead(encoder_a) != digitalRead(encoder_b)) {
    encoder--;
  }
  else {
    encoder++;
  }
}


gkn666

#9
bu arada encoder'a bağlı feed roll sadece kağıt besleme için kullanılıyor
nozzle temizlemek için ayrı bir modül var


bir diğer konuda  videodaki gibi vidalı mil kullanmayı istemiyor olmam

onun yerine triger tahrikli linner modül kullanmak istiyorum

biraz pahalı ama hem sessiz hemde göze hitab ediyor

bu durumda kodlar aynı kalacak ama değerler değişebilir çünkü vidalı milin bir adımda aldığı yolla linkte paylaştığım parçanın bir adımda aldığı yol çok çok farklı

vidalı milin hatvesi en fazla 1cm ama diğer sistem bir turda 200mm yol alıyor

http://www.doguskalip.com.tr/tr-TR/45x45-triger-makarali-modul/624/1278/Product.aspx

gkn666

bugün biraz daha araştırma fırsatım oldu

ayrıca adruino nedir nasıl çalışır onada baktım.

yazıcının encoderı 360 kademeli.benim elimde bulunan tüm motorlar 200 kademeli yani 1.8 derece bana 1 derece motor lazım

burada biraz sıkıntı yaşarım gibi geliyor.

araştırmalarım sonucu başka sorunlarında varolduğunu anladım

hızlı yazdırma işlemi gerçekleştirildiği sırada adruino yavaş kalabiliyormuş.ama bu daha çok yazılan  code ile alakalıymış.
çünkü adruino gereken hızda çalışıyor

ayrıca adım mesafeleri içinde uygun kasnak ve belt kullanmam lazım

daha önceki mesajımda kullanacağım malzemeleri yazmıştım fakat encoder bir tur attığında benim motor 1.8 tur atacak
yani bu malzemeleride değiştirmem gerekiyor


acaba bu kodu yazabilmem için yardım edermisiniz  ::)






z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

gkn666

piyasayı pek bilmiyorum o yüzden bişey diyemicem kusura bakmayın

normalde ne kadardır bu işin bedeli bilmiyorum hocam siz soyleyin fiyatı ona göre konuşalım isterseniz

teşekkürler

z

#13
Paranı almaya çalışmıyorum ama elbet en azından masraflarımın ve zamanımın parasal karşılığının karşılanması gerekir.

Öncelikle sorunu tam anladımmı emin değilim.

Yazıcının kafayı hareket ettiren motoru yeni yaptığın mekaniği taşıyamıyor ve daha güçlü bir motor kullanarak mekaniğini hareketlendirmek istiyorsun.

Doğru anladıysam;

Bu durumda orjinal printer A4 genişliğinde baskı alabiliyorsa yeni mekaniğin de A4 boyutlarında baskı alacak demektir. Daha açık ifade ile daha büyük kağıda baskı alamazsın.

Eğer tüm sorun bu ise istediğin yapılabilir.

Eğer uzaktan soracağım sorulara cevap veremezsen yaptığın mekaniği bana getirmen ve sistemi geliştirinceye kadar bende kalması gerekecek.

1. soru: Kafa en başta iken en sona doğru hareketi boyunca encoderın 1 kanalı kaç pals üretiyor?

Pardon kafayı değil de kağıt ilerletme mekanizmasını değiştirecekmişsin. İş biraz daha kolay.

Yazılanları okumaya üşendim.

Orjinal mekanizmada motorun 1 turu kağıtta ne kadarlık ilerlemeye neden oluyor.

Senin yaptığım mekanizmada aynı ilerlemeyi kaç turda yapabiliyorsun? Eşit yapmak adına çalışma yaptın mı?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

gkn666

#14
hocam tabiki emeğin karşılığı olacak orda sıkıntı yok.

sorulara gelince,

encoder üzerinde 360 pals var . makina A3+ boyutunda yani 329 x 483 mm

encoder bir tur attığında yani 360 puls geçtiğinde  kağıt 25,12 mm yol alıyor

makinanın çözünürlüğü yüksek :)


normal şartlarda eşit ilerleme almak için tablayı orninal şaft üzerine koymak yeterli oluyor.
genelde herkez bu yöntemi kullanıyor

fakat iş siyah üzerine baskıya gelince sorun başlıyor.DTG makinalar siyah üzerine baskı yapmak için önce resmin alt zeminini basıyor(beyaz)

daha sonra tablayı geri çekip üzerine cmy renkleri atıyor

geri çekme sırasında 1 mm lik bir kayma olursa baskı gölgeli olabiliyor.yani basılan iş çöpe

aynı şey eğer tabla sağlam oturmamışsa normal baskıdada olabilir

bunun için timing belt kullanmayı düşünüyorum

bana lazım olan encoder tam bir tur döndüğünde 25.12 mm ilerleyen bir mekanik

1 derecelik step motor bulamadım bendekiler 1.8 derece yani 200 adım

buda ayrı bir karmaşa  :)

tabi birde feed rollün makina açılışında uzun süre ileri dönmesi var

makina her açıldığında bunu yapıyor raylarında bir uzama sınırı olduğu için bunu yazılımla aşmak zor
ben bunu mekanik olarak çözdüm

oda benim meslek sırrım diyelim  :)