Raspberry PI 2 - krokové motory

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

hitule
Stály člen
Stály člen
Príspevky: 410
Dátum registrácie: 03 Okt 2013, 17:42
Bydlisko: Písek

Raspberry PI 2 - krokové motory

Príspevok od používateľa hitule » 26 Nov 2017, 16:26

Ahoj,
stavím Plotter na platformě RPI 2. Použil jsem tyto moduly - https://tutorials-raspberrypi.com/how-t ... -uln2003a/ . Problém je, že nastavené kroky v kódu motor neroztočí. Diody na modulu blikají, ozýva se rachot, ale motor se neotočí.
Bipolar_Stepper_Motor_Class

Kód: Vybrať všetko

import RPi.GPIO as GPIO
import time

#sequence for a1, b2, a2, b1
#phase_seq=[[0,0,1,1],[1,0,0,1],[1,1,0,0],[0,1,1,0]];
phase_seq=[[0,0,0,1],[0,0,1,1],[0,0,1,0],[0,1,1,0],[0,1,0,0],[1,1,0,0],[1,0,0,0],[1,0,0,1]];

#full step sequence. maximum torqu
#phase_seq=[[1,0,1,0],[0,1,0,1],[1,0,1,0],[0,1,0,1]]
#half-step sequence. double resolution. But the torque of the stepper motor is not constant 

num_phase=len(phase_seq);

class Bipolar_Stepper_Motor:
    
    phase=0;
    dir=0;
    position=0;
    
    def __init__(self,a1,a2,b1,b2):
    #initial a Bipolar_Stepper_Moter objects by assigning the pins
    
        GPIO.setmode(GPIO.BOARD);
        
        self.a1=a1;
        self.a2=a2;
        self.b1=b1;
        self.b2=b2;
        
        GPIO.setup(self.a1,GPIO.OUT);
        GPIO.setup(self.a2,GPIO.OUT);
        GPIO.setup(self.b1,GPIO.OUT);
        GPIO.setup(self.b2,GPIO.OUT);
        
        self.phase=0;
        self.dir=0;        
        self.position=0;
        
    def move(self, dir, steps, delay=0.2):
        for _ in range(steps):
            next_phase=(self.phase+dir) % num_phase;
            
            GPIO.output(self.a1,phase_seq[next_phase][0]);
            GPIO.output(self.b2,phase_seq[next_phase][1]);
            GPIO.output(self.a2,phase_seq[next_phase][2]);
            GPIO.output(self.b1,phase_seq[next_phase][3]);
            
            self.phase=next_phase;
            self.dir=dir;
            self.position+=dir;
            
            time.sleep(delay);

    def unhold(self):
        GPIO.output(self.a1,0);
        GPIO.output(self.a2,0);
        GPIO.output(self.b1,0);
        GPIO.output(self.b2,0);
        
Testuji scriptem linear-motion

Kód: Vybrať všetko

################################################################################################
#							  				       #
#     linear motion                                                                #
#       Xiang Zhai,   May 2, 2013                         				       #
#       zxzhaixiang at gmail.com							       #
#  For instruction on how to build the laser engraver and operate the codes, please visit      #
#   funofdiy.blogspot.com                                                                      #
#											       #
################################################################################################

import RPi.GPIO as GPIO
from Bipolar_Stepper_Motor_Class import Bipolar_Stepper_Motor
import time
from numpy import pi, sin, cos, sqrt, arccos, arcsin

GPIO.setmode(GPIO.BOARD)
M=Bipolar_Stepper_Motor(29,31,33,37);       

speed=200;      #step/sec

try:
    for i in range(30):
    	print "Move to %s .." % ((i+1)*1000);
   	M.move(-1,1000,1.0/speed);
       
except KeyboardInterrupt:
    pass

M.unhold();

GPIO.cleanup();
Nejsem autor kódu. Puvodně někdo navrh kód na plotter ze dvou dvd romek, ja udělal svou mechanickou konstrukci. Motory vrčí, ale neotočí se. Jediné mi fungovaly tyto sekvence #phase_seq=[[0,0,1,1],[1,0,0,1],[1,1,0,0],[0,1,1,0]]; Motor se točil,ale hlučně a cukavě.
Mezitím když jsem zkoušel jednoduchý samostatný skript kde jsem použil [1,0,0,0,] [0,1,0,0] [0,0,1,0] [0,0,0,1] Tak se vše točilo. Proc ovšem tyto sekvence nefungují v tomto kódu zaboha nevidím. Neví někdo co je špatně? Díky
0

Používateľov profilový obrázok
juraj77
Ultimate člen
Ultimate člen
Príspevky: 1538
Dátum registrácie: 23 Sep 2012, 22:39
Bydlisko: Nitra
Vek: 44

Re: Raspberry PI 2 - krokové motory

Príspevok od používateľa juraj77 » 26 Nov 2017, 19:07

vyskúšaj znížiť SPEED . Vrčí ,cuká ?
Napájanie motoru máš cez baterky alebo zdroj ?
0
" Bez vody si viem predstaviť život, ale bez internetu a počítača nie.."

bum
Stály člen
Stály člen
Príspevky: 126
Dátum registrácie: 28 Okt 2016, 21:40
Vek: 66
Kontaktovať používateľa:

Re: Raspberry PI 2 - krokové motory

Príspevok od používateľa bum » 26 Nov 2017, 19:39

Co píšeš že se motorek netočí a hučí včetně trhavého pohybuje dáno špatnou sekvencí kterou posíláš z ovládacího IO na vynutí krokového motorku, který IO používáš ? ULN 2003 nebo L293. Jak píšeš že po zasilani sekvence (1000,0100,0010,0001) se ti motorek točil je dle datašetu k tomu krokovému motorku postupné spínání vinuti cívek, skuz si podle toho datašetu upravit sekvenci v programu a ovládat motorek pomocí spínání dvou vinutí současně chod budeš mít plynulý pouze se ti zvedne proudový odběr současně budeš muset upravovat zkušebně také časování přepínání vinutí to je velice důležité. Jinak pro inspiraci spinani cívek krokového motorku a ovládání krokového motorku pomocí ULN2803 mám na webu v článku KROKOVÝ MOTOREK.
0

hitule
Stály člen
Stály člen
Príspevky: 410
Dátum registrácie: 03 Okt 2013, 17:42
Bydlisko: Písek

Re: Raspberry PI 2 - krokové motory

Príspevok od používateľa hitule » 26 Nov 2017, 19:48

juraj77: Jj se speed jsem laboroval. Výsledek pořád stejný vrčení ale hřídelka se ani necukne. Napájení adaptér 12V.
bum: Používám hotový modul s ULN 2003
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok