Napęd do lasera

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

Napęd do lasera

Post autor: Jacek » 16 maja 2023, 9:53

Witam robię projekt napędu lasera w projekcie wykorzystałem joystick analogowy do poruszania laserem https://www.youtube.com/watch?v=IHwZHu3woGs przy pomocy komendy Select Case zrobiłem przesuwanie i obracanie laserem

  1.  
  2. '****************************************************************
  3.    If Flaga10ms = 1 Then
  4. '****************************************************************
  5.       Select Case PWM_rot
  6.          Case 0 To 120 : Call Rotate_left
  7.          Case 121 To 129 : Call Rotate_stop
  8.          Case 130 To 255 : Call Rotate_right
  9.       End Select
  10. '****************************************************************
  11.       Select Case PWM_trav
  12.          Case 0 To 120 : Call Travel_left
  13.          Case 121 To 129 : Call Travel_stop
  14.          Case 130 To 255 : Call Travel_right
  15.       End Select
  16. '****************************************************************
  17.       Flaga10ms = 0
  18.    End If
  19.  '***************************************************************
  20.  

przydało by się sterowanie PWM dla obu silników za pomocą tego joystck'a ale nie wiem jak to zrobić czy mogę liczyć na pomoc.
pozdrawiam Jacek.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Napęd do lasera

Post autor: Jacek » 17 maja 2023, 16:15

Witam nie ma nikt koncepcji jak się do tego zabrać.
pozdrawiam Jacek.
Awatar użytkownika
tomaszdko
Posty: 78
Rejestracja: 06 gru 2018, 19:58

Re: Napęd do lasera

Post autor: tomaszdko » 17 maja 2023, 22:05

Konkretnie to chodzi Ci o sterowanie 2 x silnik dc , lewo prawo w tym samym czasie ? Sterowanie przez joya.
Jaki procek ? mega , tiny czy xmega ?
Awatar użytkownika
tomaszdko
Posty: 78
Rejestracja: 06 gru 2018, 19:58

Re: Napęd do lasera

Post autor: tomaszdko » 18 maja 2023, 3:27

Miałem trochę czasu to skleciłem taki prosty na Atmega . Jest to tylko sterowanie 2 x silnik więc nie będzie to wyrafinowany program heheh.
Używa Timer0 i Timer2 . Dwa pwm kanały z Timer0 na jeden silnik i Timer2 też dwa kanały na drugi silnik przez mostek-H (ja dałem smd L298.
Dostosuj PRESCALE w konfigu dla PWM na inny jak tam będzie ci pasować pod twoje silniki . Gap dla pozycji joy jest od 100 do 150 (to też możesz zmienić ale od razu zmień wartości w dalszej części programu gdzie wylicza pwm).

Przy odczycie ADC jest pętla by wyliczyć średnią bo za bardzo skacze kiedy dostaje surowy odczyt z ADC . Można dać filtr dolnoprzepustowy ale myślę że to by był przerost formy .
Zamiast joy-a dałęm 2 potencjometry i to chyba nieliniowe , z joy-m będzie lepiej chodzić .

https://www.youtube.com/watch?v=7WvQKYqCJh8
  1. $REGFILE = "M328PDEF.DAT"
  2. $CRYSTAL = 20000000
  3. $BAUD = 115200
  4. $HWSTACK = 100
  5. $SWSTACK = 100
  6. $FRAMESIZE = 100
  7. ENABLE INTERRUPTS
  8. '*********************************************************************************************************************************
  9. '*** ADC *************************************************************************************************************************
  10. '*********************************************************************************************************************************
  11. '
  12. CONFIG Adc = SINGLE , PRESCALER = AUTO , REFERENCE = AVCC
  13. START Adc
  14. '
  15. '*********************************************************************************************************************************
  16. '*** TIMER0 / TIMER2 *************************************************************************************************************
  17. '*********************************************************************************************************************************
  18. '
  19. CONFIG TIMER0 = PWM, PRESCALE = 8, COMPARE A PWM = CLEAR UP, COMPARE B PWM = CLEAR UP
  20. CONFIG TIMER2 = PWM, PRESCALE = 8, COMPARE A PWM = CLEAR UP, COMPARE B PWM = CLEAR UP
  21. '
  22. '*********************************************************************************************************************************
  23. '*** ZMIENNE *********************************************************************************************************************
  24. '*********************************************************************************************************************************
  25. '
  26. DIM XADC AS WORD , PWM_1_L AS BYTE , PWM_1_P AS BYTE
  27. DIM XX AS WORD,X AS BYTE
  28.  
  29. DIM YADC AS WORD , PWM_2_L AS BYTE , PWM_2_P AS BYTE
  30. DIM YY AS WORD , Y AS BYTE
  31.  
  32. DO
  33.  
  34. FOR X=1 TO 10                       '1 potencjometr
  35. XADC=GETADC(0)
  36. XX=XX+XADC
  37. NEXT
  38. XX=XX/10
  39. XADC=XX
  40. XX=0
  41. XADC=XADC/4
  42.  
  43. FOR Y=1 TO 10                        '2 potencjometr
  44. YADC=GETADC(1)
  45. YY=YY+YADC
  46. NEXT
  47. YY=YY/10
  48. YADC=YY
  49. YY=0
  50. YADC=YADC/4
  51. '----------------------------------------
  52. '----------------------------------------
  53. '----------------------------------------
  54. IF XADC>100 AND XADC<150 THEN       '1 silnik
  55. COMPARE0a=0
  56. COMPARE0b=0
  57. END IF
  58.  
  59. IF XADC<=99 THEN
  60. COMPARE0b=0
  61. PWM_1_P=99-XADC
  62. PWM_1_P=PWM_1_P*2
  63. COMPARE0A=PWM_1_P
  64. END IF
  65.  
  66. IF XADC>=151 THEN
  67. COMPARE0a=0
  68. PWM_1_L=XADC-151
  69. PWM_1_L=PWM_1_L*2
  70. COMPARE0b=PWM_1_L
  71. END IF
  72.  
  73. '----------------------------------------
  74.                                      '2 silnik
  75. IF YADC>100 AND YADC<150 THEN
  76. COMPARE2a=0
  77. COMPARE2b=0
  78. END IF
  79.  
  80. IF YADC<=99 THEN
  81. COMPARE2b=0
  82. PWM_2_P=99-YADC
  83. PWM_2_P=PWM_2_P*2
  84. COMPARE2A=PWM_2_P
  85. END IF
  86.  
  87. IF YADC>=151 THEN
  88. COMPARE2a=0
  89. PWM_2_L=YADC-151
  90. PWM_2_L=PWM_2_L*2
  91. COMPARE2b=PWM_2_L
  92. END IF
  93.  
  94. LOOP
  95. END
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Napęd do lasera

Post autor: Jacek » 18 maja 2023, 8:57

Witam, wczoraj wieczorem rozebrałem napęd bo muszę dospawać pewne elementy do kątownika nośnego jak tylko się uporam przetestuję program.
dzięki za odzew, pozdrawiam Jacek.
Oldman1
Posty: 3
Rejestracja: 18 maja 2023, 11:28

Re: Napęd do lasera

Post autor: Oldman1 » 18 maja 2023, 20:59

Dla XADC=100 oraz YADC=100 nie spełnia się żaden warunek. To tak specjalnie czy niedopatrzenie?
Awatar użytkownika
tomaszdko
Posty: 78
Rejestracja: 06 gru 2018, 19:58

Re: Napęd do lasera

Post autor: tomaszdko » 19 maja 2023, 8:18

Chodzi o linie :

54. IF XADC>100 AND XADC<150 THEN '1 silnik
i
75. IF YADC>100 AND YADC<150 THEN

Można zmienić dodając znak " = " by włączyć pełny zakres dla położenia neutralnego joy-a . Ogólnie to nie przeszkadza bo i tak joy-em wybierze się większe wartości PWM (po przez ustawienie drążka) .
Ale dla ścisłości .
54. IF XADC>=100 AND XADC=<150 THEN '1 silnik
i
75. IF YADC>=100 AND YADC=<150 THEN
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Napęd do lasera

Post autor: Jacek » 21 maja 2023, 11:12

Witam a na jakim driver'rze silników sterujesz ja mam L298 nie chcę go usmażyć, bo przed chwila :oops: usmażyłem port w atmedze.
pozdrawiam Jacek.
Awatar użytkownika
tomaszdko
Posty: 78
Rejestracja: 06 gru 2018, 19:58

Re: Napęd do lasera

Post autor: tomaszdko » 21 maja 2023, 12:56

Usmażyć piny procka to trzeba się postarać . Kilka razy podłączyłem zasilanie znacznie wyższe , procek był gorący ale żył :) .
Co do mastka H to tak jak pisałem . Podłączyłem mały mostek L298N wersja smd .

To było tylko do testów na małych silnikach precyzyjnych - Faulhaber 1224 A 006 ST K380
Jeśli szukasz dobrego mostka do mocnych silników to kup sobie ten na HIP4081A
Obrazek

Ja kupiłem na ebay ale tu masz na allegro , znajdziesz właściwie wszędzie i pewnie taniej .
https://allegro.pl/oferta/modul-sterown ... 9587057952

Testowałem na silniku od skutera (spory) i przy pełnym rozpędzeniu hamowanie gwałtowne zadziałało 100% ok .
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: Napęd do lasera

Post autor: Jacek » 21 maja 2023, 16:02

Witam no tak ja mam taki https://botland.com.pl/arduino-shield-k ... 43827.html i wylutowałem 74HC00 i przylutowałem bezpośrednio do nóg L298 piny do podłączenia do atmegi i jeden się urwał od strony L298 i nie widziałem kiedy musiał dotknąć może zasilania 12V którym zasilam silniki i dlatego port padł, sprawdzałem pisząc Toggle PORTD.7 port nie zmienia stanu podpoiłem diodę led dla sprawdzenia.
Mam taką konfigurację portów

  1.  
  2.  '****************************************************************
  3.         'KONFIGURACJA PORTOW
  4. Config Portc.4 = Output : Portc.4 = 1                                           'IN1 rotation Motor
  5. 'Config Portd.7 = Output : portd.7 = 1                                           'IN1 rotation Motor umarty prawdopodobnie
  6. Config Portd.5 = Output : portd.5 = 1                                           'IN2 rotation Motor
  7. 'Config portd.6 = Output : portd.6 = 1                                           'SPEED rotation Motor
  8. '****************************************************************
  9. Config Portb.1 = Output : portb.1 = 1                                           'IN3 travel Motor
  10. Config portb.2 = Output : portb.2 = 1                                           'IN4 travel Motor
  11. 'Config PortB.3 = Output : portB.3 = 1                                           'SPEED travel Motor
  12. '****************************************************************
  13. Config Portb.5 = Output : Portb.5 = 0                                           'LED_LIVE
  14. Config Portd.2 = Input : Pind.2 = 1                                             'limit left travel
  15. Config Portd.4 = Input : Pind.4 = 1                                             'limit right travel
  16. '****************************************************************
  17.  
  18.  

możesz napisać jak masz u siebie podłączone atmegę z L298N bo może ja mam źle podłaczone :(
pozdrawiam Jacek.
ODPOWIEDZ