[Programmation] Commander moteur pas à pas 28BYJ-48 - FPGA - VHDL
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Commander moteur pas à pas 28BYJ-48 - FPGA - VHDL



  1. #1
    Nono06640

    Commander moteur pas à pas 28BYJ-48 - FPGA - VHDL


    ------

    Bonjour,
    Je programme sous le logiciel Quartus.
    J'essaye de commander le moteur pas à pas 28BYJ-48 avec la carte FPGA DE10-Lite et la carte ULN2003.

    Voici mon programme :
    Code:
    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.numeric_std.all;
    Use ieee.std_logic_unsigned.all;
    
    entity codeMoteur is 
    
    	port (
    				code : in std_logic_vector (3 downto 0);
    		  	  	  
    				IN1  : out std_logic;
    				IN2  : out std_logic;
    				IN3  : out std_logic;
    				IN4  : out std_logic
    		  );
    			
    end codeMoteur;
    
    architecture DESCRIPTION of codeMoteur is
    
    	SIGNAL Moteur : std_logic_vector (1 to 4);
    			
    	BEGIN		
    		WITH code (3 downto 0) select
    		Moteur <= 
    					"0000" WHEN "0000",
    					"0001" WHEN "0001",
    					"0011" WHEN "0011",
    					"0010" WHEN "0010",
    					"0110" WHEN "0110",
    					"0100" WHEN "0100",
    					"1100" WHEN "1100",
    					"1000" WHEN "1000",
    					"1001" WHEN "1001",
    					"0000" WHEN OTHERS;
    					
    					IN1 <= Moteur(1);
    					IN2 <= Moteur(2);
    					IN3 <= Moteur(3);
    					IN4 <= Moteur(4);
    
    END DESCRIPTION;
    J'arrive à bien commander les LEDs de la carte ULN2003. Mais le moteur ne tourne pas.
    Après de longue recherche je n'arrive pas à trouver ce qu'il me manque.

    Merci d'avance pour votre aide.

    -----

  2. #2
    Gyrocompas

    Re : Commander moteur pas à pas 28BYJ-48 - FPGA - VHDL

    Bonjour,
    Peut être s'inspirer de ce qui a été fait ailleurs : https://ledisrupteurdimensionnel.com...arte-darduino/

  3. #3
    Nono06640

    Re : Commander moteur pas à pas 28BYJ-48 - FPGA - VHDL

    Bonjour,
    Je me suis inspiré de ce que vous m'avez passé.

    Je débute dans le langage VHDL, je n'arrive pas à bien comprendre comment fonctionne la boucle for. Voici ce que j'ai essayé de faire :

    Code:
    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.numeric_std.all;
    Use ieee.std_logic_unsigned.all;
    
    entity codeMoteur is 
    
    	port (		  	  
    				IN1  : out std_logic;
    				IN2  : out std_logic;
    				IN3  : out std_logic;
    				IN4  : out std_logic
    		  );
    			
    end codeMoteur;
    
    architecture DESCRIPTION of codeMoteur is
    BEGIN		
    
    	PROCESS IS
    	BEGIN
    	
    	VARIABLE i : integer := 0;	
    	
    		FOR i in 0 to 512 LOOP
    			REPORT IN1 = '0'; IN2 = '0'; IN3 = '0'; IN4 = '0';
    			WAIT;
    			REPORT IN1 = '1'; IN2 = '0'; IN3 = '0'; IN4 = '0';
    			WAIT;
    			REPORT IN1 = '0'; IN2 = '1'; IN3 = '0'; IN4 = '0';
    			WAIT;
    			REPORT IN1 = '0'; IN2 = '0'; IN3 = '1'; IN4 = '0';
    			WAIT;
    			REPORT IN1 = '0'; IN2 = '0'; IN3 = '0'; IN4 = '1';
    			WAIT;
    			REPORT IN1 = '0'; IN2 = '0'; IN3 = '0'; IN4 = '0';
    			WAIT;
    		END LOOP;
    		WAIT;
    			
    	END PROCESS;
    
    END DESCRIPTION;

  4. #4
    Kissagogo27

    Re : Commander moteur pas à pas 28BYJ-48 - FPGA - VHDL

    Bonjour, de plus , il y a plusieurs moyens de commander le moteur, dans ce dernier programme une seule bobine a la fois, qui procure moins de couple et des pas positionnés différemment.

  5. A voir en vidéo sur Futura
  6. #5
    Nono06640

    Re : Commander moteur pas à pas 28BYJ-48 - FPGA - VHDL

    J'ai essayé encore une autre chose, j'ai oublié de préciser que je voudrais piloter le moteur avec des switchs.

    Le code se compile, j'arrive à bien piloter les LEDs de la carte ULN2003 mais le moteur ne fonctionne toujours pas, rien ne se passe.

    Code:
    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.numeric_std.all;
    Use ieee.std_logic_unsigned.all;
    
    entity codeMoteur is 
    
    	port (
    				code : in std_logic_vector (3 downto 0);
    				
    				INx  : out std_logic_vector (1 to 4)
    		  );
    			
    end codeMoteur;
    
    architecture DESCRIPTION of codeMoteur is
    BEGIN
    
    		PROCESS(code)
    		BEGIN
    		
    			IF code="0000" THEN
    				INx <= "0000";
    			
    			ELSIF code="0001" THEN
    				INx <= "1000";
    			
    			ELSIF code="0010" THEN
    				INx <= "0100";
    			
    			ELSIF code="0100" THEN
    				INx <= "0010";
    			
    			ELSIF code="1000" THEN
    				INx <= "0001";
    			
    			ELSE INx <= "0000";
    			END IF;		
    			
    		END PROCESS;
    		
    END DESCRIPTION;

  7. #6
    Nono06640

    Re : Commander moteur pas à pas 28BYJ-48 - FPGA - VHDL

    Une autre question :
    Je vois sur internet des codes avec "wait for" utilisé dans un process, alors que moi quand je compile on me dit que ce n'est pas possible et que je dois utiliser "wait until".
    Il y a une autre manière pour attendre un laps de temps ?

Discussions similaires

  1. Fpga-vhdl
    Par invite577ad53a dans le forum Électronique
    Réponses: 2
    Dernier message: 06/12/2011, 00h43
  2. Casse Brique - VHDL FPGA
    Par invite46c7786e dans le forum Électronique
    Réponses: 3
    Dernier message: 24/05/2011, 13h26
  3. implémenter sur fpga un circuit écrit en vhdl
    Par invite0374bd4b dans le forum Électronique
    Réponses: 2
    Dernier message: 08/05/2010, 08h55
  4. Vhdl & Fpga
    Par ak47only dans le forum Électronique
    Réponses: 0
    Dernier message: 16/12/2007, 15h43
  5. Commander un disque dur avec un FPGA
    Par katmai dans le forum Électronique
    Réponses: 16
    Dernier message: 12/03/2007, 21h34
Découvrez nos comparatifs produits sur l'informatique et les technologies.