Strona 1 z 2
Napęd do lasera
: 16 maja 2023, 9:53
autor: Jacek
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
'****************************************************************
If Flaga10ms = 1 Then
'****************************************************************
Select Case PWM_rot
Case 0 To 120 : Call Rotate_left
Case 121 To 129 : Call Rotate_stop
Case 130 To 255 : Call Rotate_right
End Select
'****************************************************************
Select Case PWM_trav
Case 0 To 120 : Call Travel_left
Case 121 To 129 : Call Travel_stop
Case 130 To 255 : Call Travel_right
End Select
'****************************************************************
Flaga10ms = 0
End If
'***************************************************************
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.
Re: Napęd do lasera
: 17 maja 2023, 16:15
autor: Jacek
Witam nie ma nikt koncepcji jak się do tego zabrać.
pozdrawiam Jacek.
Re: Napęd do lasera
: 17 maja 2023, 22:05
autor: tomaszdko
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 ?
Re: Napęd do lasera
: 18 maja 2023, 3:27
autor: tomaszdko
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
$REGFILE = "M328PDEF.DAT"
$CRYSTAL = 20000000
$BAUD = 115200
$HWSTACK = 100
$SWSTACK = 100
$FRAMESIZE = 100
ENABLE INTERRUPTS
'*********************************************************************************************************************************
'*** ADC *************************************************************************************************************************
'*********************************************************************************************************************************
'
CONFIG Adc = SINGLE , PRESCALER = AUTO , REFERENCE = AVCC
START Adc
'
'*********************************************************************************************************************************
'*** TIMER0 / TIMER2 *************************************************************************************************************
'*********************************************************************************************************************************
'
CONFIG TIMER0 = PWM, PRESCALE = 8, COMPARE A PWM = CLEAR UP, COMPARE B PWM = CLEAR UP
CONFIG TIMER2 = PWM, PRESCALE = 8, COMPARE A PWM = CLEAR UP, COMPARE B PWM = CLEAR UP
'
'*********************************************************************************************************************************
'*** ZMIENNE *********************************************************************************************************************
'*********************************************************************************************************************************
'
DIM XADC AS WORD , PWM_1_L AS BYTE , PWM_1_P AS BYTE
DIM XX AS WORD,X AS BYTE
DIM YADC AS WORD , PWM_2_L AS BYTE , PWM_2_P AS BYTE
DIM YY AS WORD , Y AS BYTE
DO
FOR X=1 TO 10 '1 potencjometr
XADC=GETADC(0)
XX=XX+XADC
NEXT
XX=XX/10
XADC=XX
XX=0
XADC=XADC/4
FOR Y=1 TO 10 '2 potencjometr
YADC=GETADC(1)
YY=YY+YADC
NEXT
YY=YY/10
YADC=YY
YY=0
YADC=YADC/4
'----------------------------------------
'----------------------------------------
'----------------------------------------
IF XADC>100 AND XADC<150 THEN '1 silnik
COMPARE0a=0
COMPARE0b=0
END IF
IF XADC<=99 THEN
COMPARE0b=0
PWM_1_P=99-XADC
PWM_1_P=PWM_1_P*2
COMPARE0A=PWM_1_P
END IF
IF XADC>=151 THEN
COMPARE0a=0
PWM_1_L=XADC-151
PWM_1_L=PWM_1_L*2
COMPARE0b=PWM_1_L
END IF
'----------------------------------------
'2 silnik
IF YADC>100 AND YADC<150 THEN
COMPARE2a=0
COMPARE2b=0
END IF
IF YADC<=99 THEN
COMPARE2b=0
PWM_2_P=99-YADC
PWM_2_P=PWM_2_P*2
COMPARE2A=PWM_2_P
END IF
IF YADC>=151 THEN
COMPARE2a=0
PWM_2_L=YADC-151
PWM_2_L=PWM_2_L*2
COMPARE2b=PWM_2_L
END IF
LOOP
END
Re: Napęd do lasera
: 18 maja 2023, 8:57
autor: Jacek
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.
Re: Napęd do lasera
: 18 maja 2023, 20:59
autor: Oldman1
Dla XADC=100 oraz YADC=100 nie spełnia się żaden warunek. To tak specjalnie czy niedopatrzenie?
Re: Napęd do lasera
: 19 maja 2023, 8:18
autor: tomaszdko
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
Re: Napęd do lasera
: 21 maja 2023, 11:12
autor: Jacek
Witam a na jakim driver'rze silników sterujesz ja mam L298 nie chcę go usmażyć, bo przed chwila
usmażyłem port w atmedze.
pozdrawiam Jacek.
Re: Napęd do lasera
: 21 maja 2023, 12:56
autor: tomaszdko
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
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 .
Re: Napęd do lasera
: 21 maja 2023, 16:02
autor: Jacek
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
'****************************************************************
'KONFIGURACJA PORTOW
Config Portc.4 = Output : Portc.4 = 1 'IN1 rotation Motor
'Config Portd.7 = Output : portd.7 = 1 'IN1 rotation Motor umarty prawdopodobnie
Config Portd.5 = Output : portd.5 = 1 'IN2 rotation Motor
'Config portd.6 = Output : portd.6 = 1 'SPEED rotation Motor
'****************************************************************
Config Portb.1 = Output : portb.1 = 1 'IN3 travel Motor
Config portb.2 = Output : portb.2 = 1 'IN4 travel Motor
'Config PortB.3 = Output : portB.3 = 1 'SPEED travel Motor
'****************************************************************
Config Portb.5 = Output : Portb.5 = 0 'LED_LIVE
Config Portd.2 = Input : Pind.2 = 1 'limit left travel
Config Portd.4 = Input : Pind.4 = 1 'limit right travel
'****************************************************************
możesz napisać jak masz u siebie podłączone atmegę z L298N bo może ja mam źle podłaczone
pozdrawiam Jacek.