Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:motor:stepper [2014/10/13 14:11] raivo.sellet:examples:motor:stepper [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~+<pagebreak>
 ====== Samm-mootor ====== ====== Samm-mootor ======
  
-//Vajalikud teadmised: [HW] [[et:hardware:homelab:combo]], [AVR] [[et:avr:io]], [LIB] [[et:software:homelab:library:module:motor]], [LIB] [[et:software:homelab:library:delay]]//+//Vajalikud teadmised:  
 +[HW] [[et:hardware:homelab:combo]],  
 +[AVR] [[et:avr:io]],  
 +[LIB] [[et:software:homelab:library:module:motor]], \\ 
 +[LIB] [[et:software:homelab:library:delay]]//
  
 ===== Teooria ===== ===== Teooria =====
Line 13: Line 17:
   * püsimagnetiga (madal täpsus, kõrge pöördemoment, madal hind)   * püsimagnetiga (madal täpsus, kõrge pöördemoment, madal hind)
   * hübriidne (suur täpsus, kõrge pöördemoment, kõrge hind)   * hübriidne (suur täpsus, kõrge pöördemoment, kõrge hind)
- 
-[{{  :examples:motor:stepper:motor_stepper_unipolar.png?250|Unipolaarse samm-mootori mähised}}] 
-[{{  :examples:motor:stepper:motor_stepper_bipolar.png?250|Bipolaarse samm-mootori mähised}}] 
  
 Muutuva magnetilise takistusega samm-mootorites on hambulised mähised ja hambuline rauast rootor. Suurim tõmbejõud tekib mõlema poole hammaste kattumisel. Püsimagnetiga samm-mootorites on, nagu nimigi ütleb, püsimagnet, mis orienteerub vastavalt mähise polaarsusele. Hübriidides on kasutusel mõlemad tehnoloogiad. Muutuva magnetilise takistusega samm-mootorites on hambulised mähised ja hambuline rauast rootor. Suurim tõmbejõud tekib mõlema poole hammaste kattumisel. Püsimagnetiga samm-mootorites on, nagu nimigi ütleb, püsimagnet, mis orienteerub vastavalt mähise polaarsusele. Hübriidides on kasutusel mõlemad tehnoloogiad.
Line 29: Line 30:
 Bipolaarne samm-mootor erineb unipolaarsest samm-mootorist selle poolest, et mähiste polaarsust muudetakse kommutatsiooni ajal. Korraga aktiveeritakse pooled mähised, mis tagab võrreldes unipolaarse samm-mootoritega suurema efektiivsuse. Bipolaarsetel samm-mootoritel on neli juhet, mis ühendatakse kõik eraldi poolsillaga. Kommuteerimisel rakendavad poolsillad mähiste otstele kas positiivset või negatiivset pinget. Unipolaarseid samm-mootoreid saab käivitada ka bipolaarse ajuri abil: selleks tuleb ühendada vaid mähiste liinid 1a, 1b, 2a ja 2b (//Vcc// jääb ühendamata). Bipolaarne samm-mootor erineb unipolaarsest samm-mootorist selle poolest, et mähiste polaarsust muudetakse kommutatsiooni ajal. Korraga aktiveeritakse pooled mähised, mis tagab võrreldes unipolaarse samm-mootoritega suurema efektiivsuse. Bipolaarsetel samm-mootoritel on neli juhet, mis ühendatakse kõik eraldi poolsillaga. Kommuteerimisel rakendavad poolsillad mähiste otstele kas positiivset või negatiivset pinget. Unipolaarseid samm-mootoreid saab käivitada ka bipolaarse ajuri abil: selleks tuleb ühendada vaid mähiste liinid 1a, 1b, 2a ja 2b (//Vcc// jääb ühendamata).
  
 +[{{  :examples:motor:stepper:motor_stepper_unipolar.png?250|Unipolaarse samm-mootori mähised}}]
 +[{{  :examples:motor:stepper:motor_stepper_bipolar.png?250|Bipolaarse samm-mootori mähised}}]
 Mõlemat liiki mähisega samm-mootori juhtimiseks vajalikku kommutatsiooni täissammu ja poolsammu režiimis kujutab järgnev tabel. Kuna unipolaarsete samm-mootorite ajurite puhul toimub vaid transistoride avamine, siis nende samme on kujutatud loogiliste arvudega 0 ja 1. Bipolaarse samm-mootori juhtimine võib vajada rohkem signaale, ja selle samme on kujutatud ajuri väljundite polaarsusega. Mõlemat liiki mähisega samm-mootori juhtimiseks vajalikku kommutatsiooni täissammu ja poolsammu režiimis kujutab järgnev tabel. Kuna unipolaarsete samm-mootorite ajurite puhul toimub vaid transistoride avamine, siis nende samme on kujutatud loogiliste arvudega 0 ja 1. Bipolaarse samm-mootori juhtimine võib vajada rohkem signaale, ja selle samme on kujutatud ajuri väljundite polaarsusega.
  
Line 48: Line 51:
 | 8 ^ 1 | 0 | 0 ^ 1 ^ + | - | - ^ + | | 8 ^ 1 | 0 | 0 ^ 1 ^ + | - | - ^ + |
  
 +~~CL~~
 ===== Praktika ===== ===== Praktika =====
  
Line 94: Line 98:
 </code> </code>
  
-Sarnased funktsioonid unipolaarse samm-mootori juhtimise realiseerimiseks Kodulabor III (ATxmega) teegis. +Funktsioonide kasutamist demonstreerib näiteprogramm, mis pöörab mootorit vaheldumisi ühele ja teisele poole 200 poolsammu. Mootori pöörlemise kiiruse määrab sammude vahel tehtava pausi pikkus. Kui paus liiga väikeseks seada, ei jõua mootor rootori inertsi tõttu pööret teostada ja võll ei liigu.
-<code c> +
-// Viikude seadistamine väljundiks +
-void unipolar_init(uint8_t index) +
-+
- PORTJ.DIRSET = 0x0F; +
-+
- +
-// Unipolaarse samm-mootori liigutamine poolsammudega +
-void unipolar_halfstep(unsigned char index, signed char direction, unsigned short num_steps, unsigned char speed) +
-+
- uint8_t state1 = 0, state2 = 1; +
- uint8_t pattern; +
- uint8_t timeout; +
- +
- // Ensure +-1 +
- direction = ((direction < 0) ? -1 : +1); +
- +
- // Ensure speed <= 100 +
- speed = (speed > 100 ? 100 : speed); +
- +
- // Complete steps +
- for (uint16_t i = 0; i < num_steps; i++) +
-+
- state1 += direction; +
- state2 += direction; +
- +
- // Make pattern +
- pattern = +
-     (1 << ((state1 % 8) >> 1)) | +
-     (1 << ((state2 % 8) >> 1)); +
- +
- // Set output +
- PORTJ.OUT = (PORTJ.OUT & 0xF0) | (pattern & 0x0F); +
- +
- // Wait for the motor to complete the step +
- timeout = speed; +
- +
- while (timeout-- > 0) +
-+
- _delay_ms(1); +
-+
-+
- +
- // Turn off motor +
- PORTJ.OUTCLR = 0x0F; +
-+
-</code> +
- +
-Funktsioonide kasutamist demonstreerib näiteprogramm, mis pöörab mootorit vaheldumisi ühele ja teisele poole 200 poolsammu. Mootori pöörlemise kiiruse määrab sammude vahel tehtava pausi pikkus. Kui paus liiga väikeseks seada, ei jõua mootor rootori intertsi tõttu pööret teostada ja võll ei liigu.+
  
 <code c> <code c>
Line 156: Line 111:
   
  // Lõputu tsükkel  // Lõputu tsükkel
- while (true)+ while (1)
  {  {
  // Pööramine ühele poole 2000 poolsammu kiirusega 30 ms/samm  // Pööramine ühele poole 2000 poolsammu kiirusega 30 ms/samm
et/examples/motor/stepper.1413209487.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0