Ažuriranje (18.): Imamo dosta zaliha svih naših proizvoda, pronađite nas i ovdje i    Kupi

Spojite različite motore na svoj SBC

U ovom vodiču ćemo vidjeti kako spojiti najčešće tipove motora na SBC. Također ćemo vam pokazati kako s njima postupati uz nekoliko primjera. Najčešći tipovi motora su:

  • DC motori su jeftini i lako ih je kontrolirati, potreban je samo jedan izlaz snage koji se može aktivirati PWM signalom.

  • Servo motori slični su istosmjernim motorima, ali uključuju malu elektroniku i unutarnji potenciometar za formiranje zatvorene kontrolne petlje, što omogućuje kontrolu kuta rotacije. Upravljanje je također putem PWM-a, ali u ovom slučaju upravljački signal je male snage, a stupanj snage je integriran u sam servomotor.

  • Koračni motori imaju nekoliko namota i zahtijevaju slijed kojim se upravlja, ali zauzvrat pružaju veliku preciznost jer napreduju korak po korak svaki put kada se polaritet njihovih namota obrne.

1. DC motori

Za upravljanje istosmjernim motorom, spojit ćemo ga na SBC kao što je prikazano na sljedećem dijagramu:

Morat ćemo znati neke parametre našeg motora, posebno odnos između primijenjenih voltaža i brzine motora ili Kv.

Klasa Dc_Motor predstavlja istosmjerni motor kojim upravlja PWM na 50Hz. Kao što se može vidjeti, moraju se osigurati neki parametri, kao što su napon napajanja i Kv konstanta, kao i pin koji će se koristiti. Zauzvrat dobivamo dvije funkcije: set_voltage i set_speed.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
razred Istosmjerni_motor: FREQ_Hz = 50
    def __init__( samouprave, pin, vm, kv ):
        samouprave.vm = vm
        samouprave.kv = kv
        samouprave.bor = bor
        samouprave.dout = sbc.Dout()
        samouprave.dout.set_pwm( samouprave.igla, samouprave.FREQ_Hz, 0 )
        samouprave.set_voltage( 0 )
    
    def postavljen_napon( samouprave, v): postotak_uključenja_pulsa = 100 *v/samouprave.vm
        samouprave.dout.set_pwm( samouprave.igla, samouprave.FREQ_Hz, 100-postotak_pulsa_uključeno )
    
    def postavljena_brzina( samouprave, o/min):
        samouprave.postavljen_napon (rpm/samouprave.kv )

Primjer upotrebe bio bi sljedeći:

>>> vrijeme uvoza
>>> import sbc_mtr
>>> motor = sbc_mtr.Dc_Motor( "DOUT3", vm=12, kv=0.5 )
>>> print( "Kontrola napona")
Regulacija napona
>>> motor.set_voltage( 6 )
>>> time.sleep( 1 )
>>> motor.set_voltage( 0 )
>>> print( "Kontrola brzine")
Kontrola brzine
>>> motor.set_speed( 100 )
>>> time.sleep( 1 )
>>> motor.set_speed( 0 )

2. Servo motori

Servo motor koristi jednu kontrolnu iglu za kontrolu kuta rotacije motora.

 Kod klase Servo_Motor:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14
razred Servomotor: FREQ_Hz = 50
    DUTY_MIN_ms = 0.5
    DUTY_MAX_ms = 2.5
    
    def __init__( samouprave, pribadača ):
        samouprave.bor = bor
        samouprave.dout = sbc.Dout()
        samouprave.dout.set_pwm( samouprave.igla, samouprave.FREQ_Hz, 0 )
        
    def set_kut( samouprave, angle_deg ): duty_ms = samouprave.DUTY_MIN_ms + (samouprave.DUTY_MAX_ms-samouprave.DUTY_MIN_ms)*kut_stupnjeva/ 180
        postotak_pulsa_uključeno = samouprave.FREQ_Hz*duty_ms/ 10
        samouprave.dout.set_pwm( samouprave.igla, samouprave.FREQ_Hz, 100-postotak_pulsa_uključeno )

I jedan primjer korištenja:

>>> vrijeme uvoza
>>> import sbc_mtr
>>> motor = sbc_mtr.Servo_Motor( "DOUT3" )
>>> print( "Postavi kut na 90 stupnjeva" )
Postavite kut na 90 stupnjeva
>>> motor.set_angle( 90 )
>>> time.sleep( 1 )
>>> print( "Postavi kut na 0 stupnjeva" )
Postavite kut na 0 stupnjeva
>>> motor.set_angle( 0 )

3. Koračni motori

Za spajanje koračnog motora slijedit ćemo shemu sličnu ovoj na slici:

Kod klase Stepper_Motor u osnovi je stroj stanja koji implementira gornju tablicu.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
razred Koračni_motor:
   
    def __init__( samouprave, pribadače ):
        samouprave.igle = igle
        samouprave.dout = sbc.Dout()
        samouprave.su = 0
        samouprave.koraci = 0
        samouprave.vi = 1
        samouprave.vremena = uređaj.Odbrojavanje ( -1 )
    
    def korak( samouprave, smjer ):
        if( samouprave.su == 0 ):
            samouprave.dout.pisati( samouprave.igle[0], 1 )
            samouprave.dout.pisati( samouprave.igle[1], 1 )
            samouprave.dout.pisati( samouprave.igle[2], 0 )
            samouprave.dout.pisati( samouprave.igle[3], 0 )
        Elif( samouprave.su == 1 ):
            samouprave.dout.pisati( samouprave.igle[0], 0 )
            samouprave.dout.pisati( samouprave.igle[1], 1 )
            samouprave.dout.pisati( samouprave.igle[2], 1 )
            samouprave.dout.pisati( samouprave.igle[3], 0 )
        Elif( samouprave.su == 2 ):
            samouprave.dout.pisati( samouprave.igle[0], 0 )
            samouprave.dout.pisati( samouprave.igle[1], 0 )
            samouprave.dout.pisati( samouprave.igle[2], 1 )
            samouprave.dout.pisati( samouprave.igle[3], 1 )
        Elif( samouprave.su == 3 ):
            samouprave.dout.pisati( samouprave.igle[0], 1 )
            samouprave.dout.pisati( samouprave.igle[1], 0 )
            samouprave.dout.pisati( samouprave.igle[2], 0 )
            samouprave.dout.pisati( samouprave.igle[3], 1 )
        samouprave.koraci += smjer
        samouprave.su = (samouprave.su + smjer) & 0x03
    
    def postavljena_brzina( samouprave, koraci_s, smjer ):
        if( koraci_s i smjer):
            samouprave.vremena.init(točka=int(1000 /koraci_s), način=uređaj.Odbrojavanje.PERIODIČNI, povratni poziv=À tmr: samouprave.korak (smjer) )
        drugo:
            samouprave.vremena.deinit()

Na kraju, primjer korištenja:

>>> vrijeme uvoza
>>> import sbc_mtr
>>> motor = sbc_mtr.Stepper_Motor( ["DOUT1", "DOUT2", "DOUT3", "DOUT4"] )
>>> print( "Korak po korak")
Korak po korak
>>> za i u rasponu (100):
... motor.step( 1 )
... time.sleep_ms( 10 )
>>> print( "Continuous")
Stalan
>>> motor.set_speed( 100, -1 )
>>> time.sleep( 1 )
>>> motor.set_speed( 0, 0 )

Ako vam se svidio ovaj sadržaj, možete nas pratiti na X / Twitter, YouTube, Facebook or LinkedIn da biste bili u tijeku s ovakvim sadržajem.

Imate pitanja ili zahtjeva?
Kontaktirajte nas! Odgovaramo <24 sata!

Ikona
Kontakt ArduSimple
Blizu

Želite saznati više o GPS/RTK?

1. Naš inženjerski tim će vas kontaktirati kako bismo riješili sva pitanja
2. Obavještavat ćemo vas o promocijama i novim izdanjima proizvoda
3. Javit ćemo vam se samo kada budemo imali važne vijesti, nećemo spamati vašu e-poštu