Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2014:motor-demo

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2014:motor-demo [2014/12/23 22:16]
Jakub Novotný [Firmware]
2014:motor-demo [2015/01/18 18:46] (aktuální)
Jakub Novotný
Řádek 1: Řádek 1:
-{{:​2014:​motor-demo:​under_construction.jpg|}} 
- 
 ======Demo řízení motorů====== ======Demo řízení motorů======
  
Řádek 27: Řádek 25:
  ​{{:​2014:​motor-demo:​maxon_amax.jpg|}} {{:​2014:​motor-demo:​maxon_amax02.jpg?​500|}}  ​{{:​2014:​motor-demo:​maxon_amax.jpg|}} {{:​2014:​motor-demo:​maxon_amax02.jpg?​500|}}
 ===Univerzální krokový motor=== ===Univerzální krokový motor===
-Byl použit 12V krokový motorek [[http://​www.elektromotory-bor.cz/​cz/​synchronni-motory/​synchronni-elektromotor-reverzacni-smr-300-100.html|SMR 300-100]] od výrobce [[http://​www.elektromotory-bor.cz/​cz/​|REGULACE - AUTOMATIZACE BOR]]. Má 4 cívky a 6 vývodů. Výrobce udává 300 otáček za minutu při buzení kmitočtem 50Hz. Maximální doporučený kmitočet je 60Hz, ale tehdy již nastaly problémy s otáčením,​ pravděpodobně by bylo nutné budit větším proudem. Motorek je provozován v unipolárním režimu, kdy na vývody **1** a **2** je připojen záporný pól zdroje a na vývody **a** a **b** je postupně připojován kladný pól zdroje.\\ ​  +Byl použit 12V krokový motorek [[http://​www.elektromotory-bor.cz/​cz/​synchronni-motory/​synchronni-elektromotor-reverzacni-smr-300-100.html|SMR 300-100]] od výrobce [[http://​www.elektromotory-bor.cz/​cz/​|REGULACE - AUTOMATIZACE BOR]]. Má 4 cívky a 6 vývodů. Výrobce udává 300 otáček za minutu při buzení kmitočtem 50Hz. Maximální doporučený kmitočet je 60Hz, ale tehdy již nastaly problémy s otáčením,​ pravděpodobně by bylo nutné budit větším proudem. Motorek je provozován v unipolárním režimu, kdy na vývody **1** a **2** je připojen záporný pól zdroje a na vývody **a** a **b** je postupně připojován kladný pól zdroje ​tak, že v jednom okamžiku jsou pod proudem dvě vinutí.\\   
-{{:​2014:​motor-demo:​uni_anim.gif|}} [[http://​mechatronics.mech.northwestern.edu/​design_ref/​actuators/​uni_anim.gif|Zdroj]] {{:​2014:​smr300-100.jpg?​200|}} {{:​2014:​motor-demo:​smr300-100aa.jpg?​200|}}+{{:​2014:​motor-demo:​uni_anim.gif|}} [[http://​mechatronics.mech.northwestern.edu/​design_ref/​actuators/​uni_anim.gif|Zdroj]] {{:2014:motor-demo:​smr300-100.jpg?​200|}} {{:​2014:​motor-demo:​smr300-100aa.jpg?​200|}}
   ​   ​
 Vedle toho by mohl být motorek buzen bipolárně pomocí dvou můstků nebo pomocí střídavého napětí 12V 50Hz dle doporučení výrobce. **To v tomto případě ale nebude využito.**\\ Vedle toho by mohl být motorek buzen bipolárně pomocí dvou můstků nebo pomocí střídavého napětí 12V 50Hz dle doporučení výrobce. **To v tomto případě ale nebude využito.**\\
Řádek 34: Řádek 32:
 {{:​2014:​motor-demo:​50hz_step_motor.png?​200|}} {{:​2014:​motor-demo:​50hz_step_motor.png?​200|}}
 ===Osmikanálový budič A2982=== ===Osmikanálový budič A2982===
-[[http://​www.allegromicro.com/​en/​Products/​Motor-Driver-And-Interface-ICs/​High-and-Low-Side-Drivers/​UDx2981-2.aspx|A2982]] je vhodný pro buzení indukčních zátěží, jako jsou motorky, relé nebo elektromagnety. Může spínat až 350mA na kanál při napětí 50V. Maximální ztrátový výkon výrobce neuvádí. Vyrábí ho firma[[http://​www.allegromicro.com|Allegro Micro Systems]] ve dvacetipinovém pouzdru SOIC. +[[http://​www.allegromicro.com/​en/​Products/​Motor-Driver-And-Interface-ICs/​High-and-Low-Side-Drivers/​UDx2981-2.aspx|A2982]] je vhodný pro buzení indukčních zátěží, jako jsou motorky, relé nebo elektromagnety. Může spínat až 350mA na kanál při napětí 50V. Maximální ztrátový výkon výrobce neuvádí. Vyrábí ho firma[[http://​www.allegromicro.com|Allegro Micro Systems]] ve dvacetipinovém pouzdru SOIC. Zde jsou **využity pouze čtyři kanály.**\\ ​
 {{:​2014:​motor-demo:​a2982_ic.png?​350|}} {{:​2014:​motor-demo:​a2982_one_channel2.png?​450|}} ​ {{:​2014:​motor-demo:​a2982_ic.png?​350|}} {{:​2014:​motor-demo:​a2982_one_channel2.png?​450|}} ​
  
 {{:​2014:​motor-demo:​soic.png?​200|}} {{:​2014:​motor-demo:​soic.png?​200|}}
 ===Dvojitý můstkový budič L298N=== ===Dvojitý můstkový budič L298N===
-[[http://​www.st.com/​web/​en/​catalog/​sense_power/​FM142/​CL851/​SC1790/​SS1555/​PF63147|L298N]] je vhodný pro spínání indukčních zátěží, jako jsou bipolární krokové motory se dvěma vinutími, komutátorové motory, ​elektormagnety ​nebo relé. Zde bude použit pouze jeden můstek ze dvou. Umožňuje ovládat směr otáčení motorku i změnu rychlosti pomocí přivedeného signálu s [[http://​cs.wikipedia.org/​wiki/​Pulzn%C4%9B_%C5%A1%C3%AD%C5%99kov%C3%A1_modulace|pulzně šířkovou modulací.]] L298N může spínat proud maximálně 2A při nejvyšším napětí ​46W. Povolený ztrátový výkon je 25W při dostatečném ​chalzení, které zajistí teplotu pouzdra do 75°C. L298N obsahuje ochranu proti přehřátí. Vyrábí ho firma [[http://​www.st.com|STMicroelectronics]] mj. v pouzdru Multiwatt15.\\+[[http://​www.st.com/​web/​en/​catalog/​sense_power/​FM142/​CL851/​SC1790/​SS1555/​PF63147|L298N]] je vhodný pro spínání indukčních zátěží, jako jsou bipolární krokové motory se dvěma vinutími, komutátorové motory, ​elektromagnety ​nebo relé. Zde bude použit pouze jeden můstek ze dvou. Umožňuje ovládat směr otáčení motorku i změnu rychlosti pomocí přivedeného signálu s [[http://​cs.wikipedia.org/​wiki/​Pulzn%C4%9B_%C5%A1%C3%AD%C5%99kov%C3%A1_modulace|pulzně šířkovou modulací.]] L298N může spínat proud maximálně 2A při nejvyšším napětí ​46V. Povolený ztrátový výkon je 25W při dostatečném ​chlazení, které zajistí teplotu pouzdra do 75°C. L298N obsahuje ochranu proti přehřátí. Vyrábí ho firma [[http://​www.st.com|STMicroelectronics]] mj. v pouzdru Multiwatt15.\\
 {{:​2014:​motor-demo:​l298n.png?​500|}} {{:​2014:​motor-demo:​multiwatt15.png?​200|}} {{:​2014:​motor-demo:​l298n.png?​500|}} {{:​2014:​motor-demo:​multiwatt15.png?​200|}}
  
Řádek 54: Řádek 52:
  
 ====Schéma zapojení celého zařízení==== ====Schéma zapojení celého zařízení====
-Některé součástky,​ které nebyly dosud zmíněny, jsou k nalezení ve schématu.+Některé součástky,​ které nebyly dosud zmíněny, jsou k nalezení ve schématu. ​Původním autorem vývojového kitu s motory je [[http://​www.vutbr.cz/​lide/​jan-kovar-47073/​funkce|Ing. Jan Kovář, Ph.D.]] Na kitu je přítomen 3.3V stabilizátor,​ který se nyní nepoužívá. Předtím vyráběl napětí pro předchozí komutátorový motorek. 
 +{{:​2014:​motor-demo:​schema_motor_demo.png?​1000|}} 
 =====Firmware===== =====Firmware=====
  
 ---- ----
-Program byl vytvořen v prostředí [[http://​developer.mbed.org/​|mbed.org]],​ což je online open source platforma pro vývoj embedded systémů založených na mikroprocesorech ARM Cortex®-M. Vývoj probíhá na webové stránce. Není tedy potřeba instalovat žádný další software na uživatelův počítač.\\ +Program byl vytvořen v prostředí [[http://​developer.mbed.org/​|mbed.org]],​ což je online open source platforma pro vývoj embedded systémů založených na mikroprocesorech ARM Cortex®-M. Vývoj probíhá na webové stránce. Není tedy potřeba instalovat žádný další software na uživatelův počítač. Vzhled prostředí je následující:​\\ 
-Vzhled prostředí je následující:​\\ +{{:​2014:​motor-demo:web_mbed01.png?700|}}\\ 
-K dispozici je mnoho užitečných knihoven pro ovládání periferií desky FRDM-KL25Z. Byly využity knihovny [[http://developer.mbed.org/​users/​mbed_official/​code/​mbed/​file/​4fc01daae5a5/​TARGET_KL25Z|mbed.h]] [[http://​developer.mbed.org/​users/​mbed_official/​code/​TSI/​|TSISensor.h]]+Stáhneme zkompilovaný soubor *.bin uložíme ho do připojené vývojové desky FRDM-KL25Z, která se chová jako přenosná USB paměť.
  
 +Na stránce [[http://​developer.mbed.org/​|mbed.org]] jsou k dispozici různé názorné příklady a mnoho užitečných knihoven pro ovládání periferií desky FRDM-KL25Z. Byly využity knihovny [[http://​developer.mbed.org/​users/​mbed_official/​code/​mbed/​file/​4fc01daae5a5/​TARGET_KL25Z|mbed.h]] a [[http://​developer.mbed.org/​users/​mbed_official/​code/​TSI/​|TSISensor.h]].
 +Zdrojový kód je k prohlédnutí níže. Dále je zde ke stažení {{:​2014:​motor-demo:​frdm_motor_project_full.zip|celý projekt}}, {{:​2014:​motor-demo:​frdm_motor_project_kl25z_bin.zip|přeložený kód}} a {{:​2014:​motor-demo:​main_cpp.zip|samotný zdrojový kód v c++.}}
 +
 +<code cpp>
 +#include "​mbed.h"​
 +#include "​TSISensor.h"​
 +
 +    Ticker tick;  //definice prerusovace
 +        ​
 +    DigitalOut m1(PTD0); ​     //definice 4 vystupu pro rizeni krokoveho motorku
 +    DigitalOut m2(PTD5);
 +    DigitalOut m3(PTA13);
 +    DigitalOut m4(PTC12);
 +    DigitalOut right(PTD3); ​  //​definice 2 vystupu pro rizeni smeru otaceni DC motorku
 +    DigitalOut left(PTD2);
 +    int step=0; ​              //​definice globalnich promennych  ​
 +    float wait1=0;
 +    float threshold=0;​
 +        ​
 +void flip() ​                       //obsluha preruseni prepina vinuti krokoveho motorku
 +         {
 +         ​wait1++; ​
 +         if (wait1>​=threshold+1) ​  //​ovladani rychlosti prepinani vinuti podle 
 +         ​{ ​                        //​hodnoty drive vyctene ze slideru
 +          wait1=0; ​     ​
 +         ​step++;​
 +         if (step>3 )
 +         ​step=0;​
 +         
 +         ​if(left==1) ​      //​otaceni vlevo
 +                {
 +         if (step==0) ​     //prvni stav vinuti
 +           {
 +             m1=0;
 +             m2=1;
 +             m3=1;
 +             m4=0;
 +           ​} ​
 +         if (step==1) ​     //druhy stav vinuti
 +           {
 +             m1=0;
 +             m2=0;
 +             m3=1;
 +             m4=1;
 +           ​} ​
 +           
 +         if (step==2) ​     //treti stav vinuti
 +           {
 +             m1=1;
 +             m2=0;
 +             m3=0;
 +             m4=1;
 +           }
 +           
 +           if (step==3) ​   //ctvrty stav vinuti
 +           {
 +             m1=1;
 +             m2=1;
 +             m3=0;
 +             m4=0;
 +           }
 +                }
 +          ​
 +          if(right==1) ​    //​otaceni vpravo ​
 +                {
 +         if (step==3) ​     //ctvrty stav vinuti
 +           {
 +             m1=0;
 +             m2=1;
 +             m3=1;
 +             m4=0;
 +           ​} ​
 +         if (step==2) ​     //treti stav vinuti
 +           {
 +             m1=0;
 +             m2=0;
 +             m3=1;
 +             m4=1;
 +           ​} ​
 +           
 +         if (step==1) ​     //druhy stav vinuti
 +           {
 +             m1=1;
 +             m2=0;
 +             m3=0;
 +             m4=1;
 +           }
 +           
 +           if (step==0) ​   //prvni stav vinuti
 +           {
 +             m1=1;
 +             m2=1;
 +             m3=0;
 +             m4=0;
 +           }
 +                }
 +            }
 +        } 
 + 
 +int main(void) {               //​hlavni funkce
 +    ​
 +    DigitalOut ledr(LED_RED); ​ // definice vystupu pro RGB led
 +    DigitalOut ledb(LED_BLUE);​
 +    DigitalOut ledg(LED_GREEN);​
 +    wait(0.5); ​                // zablikaji vsechny LED pro overeni ​
 +    ledr=1; ​                   // funkcnosti desky FRDM-KL25Z
 +    ledb=1;
 +    ledg=1;
 +    wait(0.1);
 +    ledr=0;
 +    wait(0.1);
 +    ledr=1;
 +    wait(0.1);
 +    ledg=0;
 +    wait(0.1);
 +    ledg=1;
 +    wait(0.1);
 +    ledb=0;
 +    wait(0.1);
 +    ledb=1;
 +    wait(0.1);
 +         
 +    tick.attach(&​flip,​ 0.006); ​  //​obsluha preruseni se spusti kazdych 6ms
 +    PwmOut led_pwm(LED_BLUE); ​   //definice PWM vystupu pro modrou LED
 +    led_pwm.period_ms(5.0f); ​    //​definice periody PWM vystupu pro modrou LED
 +    ​
 +    PwmOut motor_pwm(PTD1); ​     //definice pwm vystupu pro ovladani rychlosti DC motorku
 +    motor_pwm.period_ms(5.0f); ​  //​definice periody PWM vystupu pro ovladani rychlosti DC motorku
 +    TSISensor tsi;               //​definice promenne pro dotykovy senzor (slider)
 +    ​
 +    float x=1;                   //​definice
 +    int timer=0; ​                //​dalsich promennych
 +    right=0; ​                    //​pocatecni nastaveni smeru otaceni
 +    left=1;
 +        ​
 +    while (1) {                         //​nekonecna smycka
 +        x =  1.0-tsi.readPercentage(); ​ //cteni hodnoty z kapacitniho slideru
 +             
 +        if (x<​0.98) ​                    //​pokud se nekdo dotknul slideru, tak
 +        {                               //se aktualizuje hodnota PWM a delka prodlevy  ​
 +        led_pwm =  x;                   //​mezi prepinanim vinuti krokoveho motorku ​
 +        motor_pwm = x;
 +        threshold=50*x-2;​
 +        }
 +        ​
 +        wait(0.1); ​                     //cekani
 +        timer++;
 +             
 +        if (timer>​20) ​                  //​zmena smeru otaceni obou motorku
 +                { 
 +           ​timer=0;​
 +           ​right=!right;​
 +           ​left=!left;​
 +                }
 +              }                ​
 +return 0;
 +}
 +</​code>​
  
 =====Dosažené výsledky===== =====Dosažené výsledky=====
Řádek 67: Řádek 225:
 ---- ----
  
-Byl vyměněn původní komutátorový motorek na vývojové desce a přepojen na provoz na 12V na místo původních 3,3V ze stabilizátoru. Byl vyroben propojovací plochý kabel s konektory a DPS s indikačními LED. Čtyři červené LED ukazují, které vinutí krokového motorku je pod proudem. ​Oranžové LED ukazují směr otáčení komutátorového motorku. Šířka PWM signálu je indikována žlutou LED a také modrou led přímo na FRDM-KL25Z. Zařízení bylo úspěšně vyzkoušeno.\\ ​  ​ +Byl vyměněn původní komutátorový motorek na vývojové desce a přepojen na provoz na 12V na místo původních 3,3V ze stabilizátoru. Byl vyroben propojovací plochý kabel s konektory a DPS s indikačními LED. Čtyři ​hranaté ​červené LED ukazují, které vinutí krokového motorku je pod proudem. ​Hranaté oranžové LED ukazují směr otáčení komutátorového motorku. Šířka PWM signálu je indikována ​kulatou ​žlutou LED a také modrou led přímo na desce FRDM-KL25Z. Zařízení bylo úspěšně vyzkoušeno. Níže je snímek celého zařízení a bližší pohled na LED kontrolky.\\  
-Zatím ​je ke shlédnutí ​současná realizace ​projektu:+{{:​2014:​motor-demo:​zepredu01.jpg?​400|}} {{:​2014:​motor-demo:​zepredu02.jpg?​400|}} 
 +{{:​2014:​motor-demo:​zezadu01.jpg?​400|}} {{:​2014:​motor-demo:​led-kontrolky.jpg?​400|}} 
 + 
 + 
 +Zde je ke shlédnutí ​finální verze projektu. V případě výpadku serveru youtube.com využijte záložní umístění na serveru dailymotion.com nebo na [[http://​uloz.to/​live/​xzCsV9Ub/​step-motor-dc-motor-control-with-frdm-kl25z-indicator-leds-wmv|uloz.to]]. K dispozici je i nahrávka [[https://​www.youtube.com/​watch?​v=wocUC18Q1C8|pracovní verze projektu.]] 
 +{{youtube>​C93qEr_SvQk?​medium}} {{dailymotion>​x2dqhuj?​medium}}
  
-{{youtube>​sALln11ezXA?​medium}} 
 =====Závěr===== =====Závěr=====
  
2014/motor-demo.1419369375.txt.gz · Poslední úprava: 2014/12/23 22:16 autor: Jakub Novotný