Wiertarka do pcb z posuwem

Prezentacje projektów
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Wiertarka do pcb z posuwem

Post autor: Jacek » 27 lis 2022, 18:23

Witam taki projekcik wiertarki do pcb
20221127_180442.jpg
20221121_201046.jpg

teraz drukuje się jeszcze dysza do odsysania urobku ;) no i trzeba będzie napisać program na A328p,
chciałbym wykorzystać wyświetlacz widoczny na zdjęciach ale nie mogę go ogarnąć.
Demo pobrane z elektrody działa ale w moim programie nie chce.
pozdrawiam Jacek.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Wiertarka do pcb z posuwem

Post autor: niveasoft » 27 lis 2022, 18:36

W czym tam problem?
Mam ten LCD podłaczony do Mega2560.
Jedyna rzecz na która trzeba zwrocić uwagę to to, że w driwerze jest napisane "Config base = 0"
Normalnie to w niczym nie przeszkadza bo tablice się zaczynają od zera, ale trzeba pamiętać, że jak zadeklarujesz Tablica(10) As Byte to ostatni element tablicy to Tablica(9). Chcesz mieć dziesiątą to zadeklaruj Tablica(11) As Byte :D
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wiertarka do pcb z posuwem

Post autor: Jacek » 27 lis 2022, 18:39

Ok Pan Bartek to może ja wstawię w tamtym temacie co napisałem i może pomożesz.
pozdrawiam Jacek.
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Wiertarka do pcb z posuwem

Post autor: niveasoft » 27 lis 2022, 18:40

No wstaw to się porówna. Może ja mam juz inny kod ;)
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wiertarka do pcb z posuwem

Post autor: Jacek » 28 lis 2022, 16:49

Witam mały update dysza wydrukowana czekam na łożyska jutro będą.
20221128_164533.jpg

pozdrawiam Jacek.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wiertarka do pcb z posuwem

Post autor: Jacek » 29 lis 2022, 16:22

Bartek miałeś może czas zobaczyć co "nasmarowałem" :oops: w Bascom w tym temacie viewtopic.php?f=11&t=467
pozdrawiam Jacek.
Press
Posty: 65
Rejestracja: 21 sty 2018, 23:08

Re: Wiertarka do pcb z posuwem

Post autor: Press » 30 lis 2022, 0:32

jakie tu zastosowałeś wrzeciono i jak się sprawdza?
Ja zamówiłem w Chinach coś takiego: https://pl.aliexpress.com/item/32839128 ... pt=glo2pol
Bicie ma dramatyczne i wymagałoby ciężkiej i stabilnej konstrukcji.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wiertarka do pcb z posuwem

Post autor: Jacek » 30 lis 2022, 11:13

Witam to zwykły silnik szczotkowy kupiony na u chińczyków ( teraz nie mogę otworzyć strony Banggood) przy zasilaniu 24V ma niby 30000rpm ale tego nie sprawdzałem ośka ma średnicę 1/8 cala, wiertła których używam mają również trzonek 1/8 cala wytoczyłem wałek o średnicy 12mm wywierciłem najpierw otwór fi 2,7mm potem poprawiłem wiertłem 3,15mm :oops: podczas poprawiania otwory złamałem Koledze to wiertło węglikowe ( :D ale odkupiłem) i potem dopracowałem pilniczkiem z posypką diamentową tak żeby trzonek ciasno wchodził wywierciłem i nagwintowałem M3 2 otwory po przeciwnych stronach tego wałeczka i wkręciłem 2 krótkie "robaczki" M3 takiej długości żeby nie wystawały poza średnicę wałeczka przy 20V wiertło 0.8mm wchodzi w laminat jak w masło tylko że robiłem próbę z ręki no i :oops: złamałem :o dla tego ta wiertarka z posuwem.

20221130_110533.jpg

20221130_110538.jpg

20221130_110548.jpg

niestety moja chińska tokarka ma ograniczenia dokładności i przy obrotach silnika wrzeciona przy zasilaniu 24V jest już wyczuwalne bicie wiertła
ale gdyby dać zrobić taką tulejkę na precyzyjnej maszynie to żaden uchwyt się nie umyje, uchwyty a zwłaszcza chińskie zawsze będą miały bicie.
pozdrawiam Jacek.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wiertarka do pcb z posuwem

Post autor: Jacek » 30 lis 2022, 22:00

Witam pisze program testowy do wiertarki zatrzymałem się na rampie nie wiem jak ją zrobić został mi Timer0 czy ktoś pomoże bo nie mam pomysłu
program na tą chwilę wygląda tak
  1. '****************************************************************
  2. $regfile = "m328pdef.dat"
  3. $crystal = 16000000
  4. $hwstack = 64
  5. $swstack = 64
  6. $framesize = 128
  7. $baud = 115200
  8. $eepleave
  9. Config Submode = New
  10. '****************************************************************
  11. 'KONFIGURACJA PORTU COM
  12. Config Com1 = 115200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
  13. Config Serialin = Buffered , Size = 128
  14. Config Serialout = Buffered , Size = 128
  15. Enable Serial
  16. '****************************************************************
  17.  'Debug Off
  18. Debug On
  19. '****************************************************************
  20. $include "Subs\Blink_.inc"
  21. $include "Subs\Display_.inc"
  22. $include "Subs\Hold_stepper.inc"
  23. $include "Subs\Left_stepper.inc"
  24. $include "Subs\Right_stepper.inc"
  25. '$include "Subs\LCD_ST7920_seriell_declare.inc"
  26. '$include "Subs\LCD_ST7920_seriell_sub.inc"
  27. '****************************************************************
  28.     'KONFIGURACJA TIMER'ÓW
  29. Config Timer0 = Timer , Prescale = 8
  30. Config Timer1 = Timer , Prescale = 8
  31. On Timer1 Przertimer1
  32. Enable Timer1
  33. Config Timer2 = Timer , Prescale = 8
  34. On Timer2 Step_
  35. Enable Timer2
  36.     'Config Timer1 = Pwm , Pwm = 8 , Compare_a_pwm = Clear_up , Compare_b_pwm = Clear_down , Prescale = 1
  37. 'Config Timer2 = Pwm , Compare_a_pwm = Clear_up , Compare_b_pwm = Clear_up , Prescale = 1024
  38. 'Enable Timer2
  39. '****************************************************************
  40. Enable Interrupts
  41. '****************************************************************
  42.  '   *** PINY  ****
  43.  '   LCD ST9720      ATMEGA        LCD 12864ZW-10 ESD4K
  44.  '   RS  (4)   -      PORTD.7                 SPI ---> SS
  45.  '   R/W (5)   -      PORTB.0               SPI --->  MOSI
  46.  '   EN  (6)   -      PORTB.1                SPI ---> SCK
  47.  '   PBS (15) -GROUND                          GND
  48.  '   RST (17)  -    reset processor           RESET
  49. '****************************************************************
  50.     'KONFIGURACJA PORTÓW
  51. Config portb.0 = Output : portb.0 = 1                                           'Laser ON/OFF
  52. Config Portb.1 = output : portb.1 = 1                                           'Light ON/OFF                           '
  53. Config portb.2 = Output : portb.2 = 1                                           'PWM Spindle Motor
  54. Config Portb.3 = Output : portb.3 = 1                                           'Dir Spindle Motor
  55. Config Portb.4 = Input : pinb.4 = 1                                             'Encoder  Sw
  56. Config Portb.5 = Output : Portb.5 = 0                                           'LED_LIVE
  57. Config portd.2 = Output : portd.2 = 1                                           'Dir Stepper Motor
  58. Config portd.3 = Output : portd.3 = 1                                           'Step Stepper Motor
  59. Config portd.4 = Output : portd.4 = 1                                           'Enable Spindle Motor
  60. Config portd.5 = Output : portd.5 = 1                                           'Enable Stepper Motor
  61. Config portd.6 = Input : pind.6 = 1                                             'Sw start
  62. Config Portc.0 = Input : pinc.0 = 1                                             'Sw up
  63. Config portc.1 = Input : pinc.1 = 1                                             'Sw down
  64. Config portc.2 = Input : pinc.2 = 1                                             'Encoder A
  65. Config portc.3 = Input : pinc.3 = 1                                             'Encoder B
  66.  
  67.  
  68.  
  69. '****************************************************************
  70.     'ALIASY PORTÓW
  71. PWM_spindle Alias Portb.2                                                       'PWM Spindle Motor
  72. Dir_spindle Alias portb.3                                                       'Dir Spindle Motor
  73. Sw_enc Alias pinb.4                                                             'Encoder  Sw
  74. Led_live Alias Portb.5                                                          'LED shows that the microcontroller did not hang
  75. Dir_stepper Alias portd.2                                                       'Dir Stepper Motor
  76. Step_stepper Alias portd.3                                                      'PWM Stepper Motor
  77. Ena_spindle Alias portd.4                                                       'Enable Spindle Motor
  78. Ena_stepper Alias portd.5                                                       'EnableStepper Motor
  79. Sw_start Alias pind.6                                                           'cycle start button
  80. Sw_up Alias pinc.0                                                              'upper limit switch
  81. Sw_down Alias pinc.1                                                            'lower limit switch
  82. A_enc Alias pinc.2                                                              'channel A encoder
  83. B_enc alias pinc.3                                                              'channel B encoder
  84. Laser Alias Portc.4                                                             'Laser ON/OFF
  85. Light Alias Portc.5                                                             'Light ON/OFF
  86. '****************************************************************
  87.     'ZMIENNE   CZASU
  88. Dim Timer_tikx10 As Byte                                                        'variable counting timer overflow
  89. Dim Timertikx100 As Byte
  90. Dim Timertikx200 As Byte
  91. Dim Timer_tik_flag As Byte
  92. Flaga10ms Alias Timer_tik_flag.0
  93. Flaga100ms Alias Timer_tik_flag.1
  94. Flaga500ms Alias Timer_tik_flag.2
  95. Flaga1s Alias Timer_tik_flag.3
  96. Flaga2s Alias Timer_tik_flag.4
  97. Flaga2_5s Alias Timer_tik_flag.5
  98.     'zostaly jeszce trzy wolne flagi
  99.     ' a uzylem tylko jednego bajtu
  100.     ' Paweł - pikczu
  101. '****************************************************************
  102. 'ZMIENNE
  103. Dim Enc_help As Byte
  104. Dim Sw_enc_help As Byte
  105. Dim Stepper_speed As Word
  106. Dim Spindle_speed As Byte
  107.  
  108. '****************************************************************
  109. Waitms 500
  110. '****************************************************************
  111. 'USTAWIENIA POCZATKOWE
  112. Stepper_speed = 0
  113. '****************************************************************
  114.     'PĘTLA GŁÓWNA
  115. '****************************************************************
  116. Do
  117. '****************************************************************
  118.    If Timer_tikx10 >= 10 Then                                                   'jesli uplynelo 100ms to
  119.       Flaga100ms = 1                                                            'ustaw flage uplynelo 100ms
  120.       Incr Timertikx100
  121.       Timer_tikx10 = 0                                                          ''zeruj liczenie
  122.    End If
  123.    If Timertikx100 >= 10 Then                                                   'jesli uplynela sekunda
  124.       Flaga1s = 1                                                               'ustaw flage sekundy
  125.       Incr Timertikx200
  126.       Timertikx100 = 0                                                          'zeruj liczenie
  127.    End If
  128.    If Timertikx200 >= 2 Then
  129.       Flaga2s = 1
  130.       Timertikx200 = 0
  131.    End If
  132.    If Flaga10ms = 1 Then
  133.       Flaga10ms = 0
  134.    End If
  135.    If Flaga100ms = 1 Then                                                       'co 100ms
  136.       If Sw_enc = 0 Then
  137.          Toggle Dir_stepper
  138.       End If
  139.       Flaga100ms = 0                                                            'wyzeruj Flaga100ms
  140.    End If
  141.    If Flaga1s = 1 Then                                                          'co 1 sekundę
  142.       Call Blink_
  143.       Print "DIR STEPPER " ; Dir_stepper
  144.       Print "ENABLE STEPPER " ; Ena_stepper
  145.       Print "STEP STEPPER " ; Timer2
  146.       If Sw_up = 0 Then
  147.          Print "WRZECIONO U GORY"
  148.       End If
  149.       If Sw_down = 0 Then
  150.          Print "WRZECIONO NA DOLE"
  151.       End If
  152.       If Sw_start = 0 Then
  153.          Print "START CYKLU"
  154.       End If
  155.  
  156.       'Call Display_
  157.       Flaga1s = 0
  158.    End If
  159.    If Flaga2s = 1 Then                                                          'co2s
  160.       Flaga2s = 0
  161.    End If
  162. '****************************************************************
  163.    If Sw_up = 0 Then
  164.       Call Hold_stepper
  165.    End If
  166.    If Sw_start = 0 Then
  167.       Call Left_stepper
  168.    End If
  169.    If Sw_down = 0 Then
  170.       Call Right_stepper
  171.    End If
  172. '****************************************************************
  173. Loop
  174. '****************************************************************
  175. End
  176. '****************************************************************
  177.     'PODPROGRAM PRZERWAŃ TIMER1
  178. Przertimer1:
  179.    Timer1 = 45536                                                               'wstawienie do Timer1 wartości 45536
  180.    Incr Timer_tikx10
  181.    If Timer_tikx10 = 1 Then
  182.       Set Flaga10ms
  183.    End If
  184. Return
  185. '****************************************************************
  186. Step_:
  187.    Timer2 = Stepper_speed
  188.    Toggle Step_stepper
  189. Return
  190. '****************************************************************


suby wyglądają tak
  1.     'brake stepper
  2. $nocompile
  3. Sub Hold_stepper
  4. Stop Timer2                                                                     'Disable Timer2
  5.    Ena_stepper = 1
  6. End Sub
  1.     'stepper left
  2. $nocompile
  3. Sub Left_stepper
  4.    Start Timer2                                                                 'Enable Timer2
  5.    'Step_stepper = Timer0                                                         'obniżenie mocy
  6.    Ena_stepper = 0
  7.    Dir_stepper = 1
  8. End Sub
  1.     'stepper right
  2. $nocompile
  3. Sub Right_stepper
  4. Start Timer2                                                                    'Enable Timer2
  5.    'Step_stepper = Timer0                                                        'obniżenie mocy
  6.    Ena_stepper = 0
  7.    Dir_stepper = 0
  8. End Sub

proszę o pomoc pozdrawiam Jacek.
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Wiertarka do pcb z posuwem

Post autor: niveasoft » 06 gru 2022, 9:39

Najprościej chyba nawet bez Timer0 jesli masz przerwanie od Timer2.

Piszesz cos na ten wzór:
  1. Const Speed_max = 250
  2. Const Speed_min = 10
  3. Const Rozpedzanie = 1
  4. Const Zwalnianie = 2
  5. Dim Czynnosc As Byte
Teraz w tym przerwaniu od Timer2:
  1. Step_:
  2.  Select Case Czynnosc
  3.   Case Rozpedzanie
  4.      If Stepper_speed < Speed_max Then Incr Stepper_speed
  5.   Case Zwalnianie
  6.      If Stepper_speed > Speed_min Then Decr Stepper_speed
  7.  End Select
  8.    Timer2 = Stepper_speed
  9.    Toggle Step_stepper
  10. Return
No i tam gdzie startujesz w lewo lub prawo wpisujesz
  1. Czynnosc = Rozpedzanie
  2. Timer2 = Min_speed
  3. Start Timer2  
Możesz pokombinować z tymi stałymi Min i Max oraz preskalerem Timera.
W zależności też jaka jest potrzebna dynamika to zamiast Incr Stepper_speed można "Stepper_speed = Stepper_speed + 2"
ODPOWIEDZ