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 (http://www.elektrikport.com/teknik-kutuphane/pwm-%28sinyal-genislik-modulasyonu%29-teknigi-nedir/11717#ad-image-0)
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.
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 (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# (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 (https://www.youtube.com/watch?v=z1r_yYtolNg)
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 (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.
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
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 (http://www.direnc.net/Arduino-Motor-Shield,PR-13984.html)
https://www.sparkfun.com/tutorials/400 (https://www.sparkfun.com/tutorials/400)
http://jdreyer.com/projects/Arduino/StepperMotor.php (http://jdreyer.com/projects/Arduino/StepperMotor.php)
http://wiki.makeblock.cc/index.php/Me_2H_Microstep_Driver (http://wiki.makeblock.cc/index.php/Me_2H_Microstep_Driver)
http://content.solarbotics.com/products/documentation/use-1-2.html (http://content.solarbotics.com/products/documentation/use-1-2.html)
adım motor konusunda buna benzer birçok uygulama bulabilirsin.
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
(http://i.hizliresim.com/rgoq9P.jpg) (http://hizliresim.com/rgoq9P)
(http://i.hizliresim.com/P5ZRM8.jpg) (http://hizliresim.com/P5ZRM8)
(http://i.hizliresim.com/q4ZgEq.jpg) (http://hizliresim.com/q4ZgEq)
(http://i.hizliresim.com/QRokQg.jpg) (http://hizliresim.com/QRokQg)
(http://i.hizliresim.com/bldOyj.jpg) (http://hizliresim.com/bldOyj)
(http://i.hizliresim.com/AAdo3q.jpg) (http://hizliresim.com/AAdo3q)
(http://i.hizliresim.com/07oPyL.jpg) (http://hizliresim.com/07oPyL)
(http://i.hizliresim.com/1Yl9GY.jpg) (http://hizliresim.com/1Yl9GY)
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 (http://playground.arduino.cc/Main/RotaryEncoders)
hocam yabancı bir forumda arduino kodlarını buldum buldum
devre şemasıda var ;)
bu makina ;
https://www.youtube.com/watch?v=ZS3XSh34q3c (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++;
}
}
(http://i.hizliresim.com/gk1zrN.jpg) (http://hizliresim.com/gk1zrN)
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 (http://www.doguskalip.com.tr/tr-TR/45x45-triger-makarali-modul/624/1278/Product.aspx)
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 ::)
Ne kadar paran var?
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
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ı?
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 :)
Yeni bir konu açmamak için buradan sorumu sormak istiyorum.
16f84a ile dc motor kontrolü yapmaya çalışıyorum.kurmuş olduğum transistörlü H köprüsü ile sürüyorum.
yazılım olarak ccs c kullanıyorum
b0 ve b3 portuna bağlı 2 adet sınır anahtarı var.
b1 ve b2 ye bağlı 2 adet buton. ileri geri yön kontrolü için.
motor ileri giderken sınır anahtarları çalışıyor ve durduruyorum.
ancak geri gelirken durdurmayı yapamıyorum.
simülasyonda düzgün çalışıyor.
sizce neden bu sorunu yaşıyorum. teşekkürler.
Alıntı yapılan: arius - 26 Aralık 2016, 12:45:39
Yeni bir konu açmamak için buradan sorumu sormak istiyorum.
16f84a ile dc motor kontrolü yapmaya çalışıyorum.kurmuş olduğum transistörlü H köprüsü ile sürüyorum.
yazılım olarak ccs c kullanıyorum
b0 ve b3 portuna bağlı 2 adet sınır anahtarı var.
b1 ve b2 ye bağlı 2 adet buton. ileri geri yön kontrolü için.
motor ileri giderken sınır anahtarları çalışıyor ve durduruyorum.
ancak geri gelirken durdurmayı yapamıyorum.
simülasyonda düzgün çalışıyor.
sizce neden bu sorunu yaşıyorum. teşekkürler.
Şema ve kod paylaşırsanız daha hızlı cevap alırsınız, naçizane tavsiyem..
Kod Aşağıdaki gibi.delay komutu olmadan yaptığımda da değişen bir şey olmadı.
void main()
{
while(true)
{
if(input(pin_b1)== 0)
{
delay_us(10);
output_high(pin_a0);
output_low(pin_a1);
}
if(input(pin_b0)== 0)
{
delay_us(10);
output_low(pin_a0);
output_low(pin_a1);
}
if(input(pin_b2)== 0)
{
delay_us(10);
output_low(pin_a0);
output_high(pin_a1);
}
if(input(pin_b3)== 0)
{
delay_us(10);
output_low(pin_a0);
output_low(pin_a1);
}
}
}
(http://i.resimyukle.xyz/OQSy.png)
devre de yukardaki gibi ama ledler yerine H köprüsünü sürüyorum.
bazen ileri giderken bazen geri giderken sorun çıkarıyor.
Buton okurken ark sorununu minimize edebilmen için elbetteki gecikme koymalısın, fakat buton bırakılana kadar ibaresini herbir buton okumana eklersen ark olayını da halletmiş olursun. Gecikmeleri 10-20ms yapsanız yeterlidir. Gerçek devreniz nasıl bilmiyorum ama eğer board üstünde deniyorsanız bile ledlerin önüne akım sınırlandırma dirençlerini koymayı ihmal etmeyiniz.
while(input(!buton1));