diy plotter z ekseni sorunu

Başlatan birkan, 11 Şubat 2015, 17:37:22

birkan

Arkadaşlar internette gördüğüm bir videodan etkilenip çok ince yollara sahip olmayan pcb lerimi bende evde çizdirmek istedim. İki tane printer hurdası aldım. Biri zaten step motorluymuş. Diğerinin motorunu step motorla değiştirdim. Bilgisayarımda paralel port olmadığı için grbl kullandım. Kullanımı bana basit geldiği için de çizimler için aspire kullandım. Z ekseni için 12F675 e dir ve step komutlarından faydalanarak rc servoyu kontrol edip kalemi indirtip kaldırttım. Dir çıkışı polarizasyonuna göre step komutu gelince kalem ya tam kalkıyor, yada tam iniyor. Bu da bir takım problemler getiriyor. İş yaparken sorun yok ama,  kalem iş başlangıcında iniyor. İş bitiminde home a giderken de iniyor. Bunu engellemek için her defasında g kodlarına müdahale etmem gerekiyor.



Bu da pic ile basitçe bir rc servo kullanımı, lazım olan kullansın

#include <12F675.h>
//#device ADC=16

#fuses INTRC,NOWDT,NOPUT,NOPROTECT,NOCPD,NOMCLR 

#use delay(internal=4000000)

#use fast_io(a)

#define DIR    PIN_A1
#define STEP   PIN_A2
#define SERVO   PIN_A4

unsigned int8 i=1;

#INT_EXT
void ext_step()
{
    if(input(DIR)) i=2;
    else i=1;
    
    clear_interrupt(INT_EXT);
}

void indir()
{
   output_high( SERVO ); 
   delay_us( 1200 ); 
   output_low(  SERVO ); 
   delay_ms(18);
   delay_us(800); 
}

void kaldir()
{
   output_high( SERVO ); 
   delay_us(1800); 
   output_low(  SERVO ); 
   delay_ms(18);
   delay_us(200 ); 
}

void main()
{
   setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
   setup_adc(ADC_OFF); // ADC birimi devre dışı
    
   ext_int_edge(L_TO_H);
   enable_interrupts(INT_EXT);
   enable_interrupts(GLOBAL);
    
   set_tris_a(0b00000110);

   while(TRUE)
   {
    if (i==1) indir(); 
    else kaldir();
      
      //TODO: User Code
   }

}


cnc konusunda hiç deneyimim yok. Aspire'i iyice karıştırdım. Spindle enable disable ile bu işi çözerim belki diye. O da olmadı, çünkü iş başladığında spindle enable oluyor ve iş bitene kadar öyle kalıyormuş.
Acaba pic ile bir program yazsam, z eksenini mm olarak display de göstersem. z ekseni değeri istediğim seviyeye gelince elektro mıknatıs (elimde bol miktarda var) ile kalemi indirtsem mi? Yada daha pratik bir çözüm var mı?