PWM trifase

Sezione dedicata al linguaggio di descrizione hardware per logiche programmabili

PWM trifase

Postby cavetto » 04 Apr 2012, 14:23

Salve a tutti,
sono un appassionato di elettronica e nel tempo libero cerco di mettermi al passo con l'elettronica, è il primo post che lascio su questo forum.
Sono nuovo di VHDL, per fare esperienza mi era venuto in mente un progettino per pilotare un motore trifase per mezzo di una cpld/fpga.

Volevo sapere se c'èra qualcuno che mi poteva dare una mano per scrivere un codice VHDL:
dovrei generare 3 segnali PWM 20KHz sfasati di 120° tra loro con una modulazione sinusoidale con risoluzione di almeno 8 bit.
Tutto questo per pilotare un ponte trifase realizzato con mosfet o igbt.

E' una cosa semplice ? So a priori di no
Potete segnalarmi qualche sito dove trovare qualche documentazione?

Ciao
Cavetto
cavetto
 
Posts: 10
Joined: 28 Mar 2012, 17:44

Re: PWM trifase

Postby flz47655 » 04 Apr 2012, 14:55

Ciao,
Io non sono molto esperto ma da quello che ho letto per generare una sinusoide si costruisce una tabella dei valori in memoria (eeprom, flash, etc..) o hardcoded (tramite flip-flop su fpga) che si legge per poi passare al DAC, la tecnica si chiama DDS.

Prova a vedere http://www.fpga4fun.com/DDS1.html

Per il resto non ti so aiutare molto.. sono agli inizi
Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: PWM trifase

Postby deluca » 05 Apr 2012, 08:48

Caro Cavetto,
a quanto pare, secondo il mio parere, dovresti realizzare un inverter trifase ? ;)
Guarda che non è una impresa semplice.... ma fattibile.

In genere questa tipologia di apparecchiature vengono realizzate con dei microcontrollori o dsp dedicati
aventi già al proprio interno una serie di generatori PWM,
ma se vuoi iniziare uno studio utilizzando una fpga non è male.

Intanto :
quale è la frequenza di clock principale, che fpga/cpld vorresti usare?
hai detto che la frequenza di pwm deve essere 20KHz ......

uhm...
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: PWM trifase

Postby flz47655 » 05 Apr 2012, 09:35

Evidentemente non avevo capito bene cosa volevi fare, per generare il PWM io tempo fa avevo incontrato http://www.fpga4fun.com/RCServos.html il codice è in verilog ma non dovrebbe essere difficile riscriverlo in VHDL, sono poche righe

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: PWM trifase

Postby cavetto » 05 Apr 2012, 18:54

Io sto sviluppando su Cyclone 1C20, (una schedina che mi hanno regalato) il quarzo è da 50MHz, e voglio ottenere una frequenza di pwm di 20Khz quindi con qualche piccolo calcolo sono arrivato a creare un divisore di frequenza di questo tipo:

Code: Select all
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
-----------------------------------------------------------------------------------
entity clk_div is
    Port ( clk  :  in  STD_LOGIC;
           clk_out : out  STD_LOGIC);           
end clk_div;
------------------------------------------------------------------------------------
architecture bhv of clk_div is
     
     signal clks  :std_logic;
     signal counter:std_logic_vector(15 downto 0);
     
begin
------------------------------------------------------------------------------------
process (clk)
begin
if (CLK = '1' and CLK'event)  then    -- il clock è 50Mhz
         counter <= counter +'1';
         if (counter = X"04E2") then -- vogliamo 20Khz quindi dobbiamo dividere per 1250 ($04E2)
            clks <= not clks;    -- perchè il clock qui viene togglato
            counter <= X"0000";   
        end if;   
   end if;
end process;

   clk_out <= clks;

end bhv;


Pensate sia possibile ottimizzarlo ? il codice funziona perfettamente ma qualsiasi consiglio è ben accetto.
Last edited by cavetto on 10 Apr 2012, 18:40, edited 1 time in total.
cavetto
 
Posts: 10
Joined: 28 Mar 2012, 17:44

Re: PWM trifase

Postby flz47655 » 10 Apr 2012, 15:49

Puoi controllare la rete RTL generata e il relativo post-mapping, se la tua FPGA dispone di PLL credo che potresti usarli

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: PWM trifase

Postby cavetto » 10 Apr 2012, 18:44

Hai ragione il 10000 non centrava nulla.

Comunque io ho fatto così:

50.000.000 / 1250 = 40.000 (conteggi)

ogni 40.000 conteggi (solo sul fronte positivo del clock) cambio di stato il clks con il not .... quindi ottengo una frequenza di 20KHz

L'ho testato con l'oscilloscopio ... e sembra funzionare.
cavetto
 
Posts: 10
Joined: 28 Mar 2012, 17:44

Re: PWM trifase

Postby flz47655 » 10 Apr 2012, 19:03

Si scusami, mi era sfuggito
Sembra funzionare bene, ho provato la simulazione con ModelSim e confermo quanto hai trovato con l'oscilloscopio
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: PWM trifase

Postby cavetto » 10 Apr 2012, 19:43

A proposito di Modelsim.....
sto iniziando adesso a simulare qualcosa.

Sareste così gentili da spiegarmi con semplici passaggi come usare Modelsim con il progetto in questione ?
Ho trovato un pò di tutorial in inglese, ma cercherei qualcosa in italiano.
Vi sarei enormemente grato se mi spiegaste, in modo semplice ma dettagliato, come arrivare alla simulazione partendo da un file vhdl di quartus.
Io sto installando Modelsim 6.4a perchè sto usando la versione 9 di quartus II.

Nel mentre continuo ad usare l'oscilloscopio :)
Ciao
cavetto
 
Posts: 10
Joined: 28 Mar 2012, 17:44

Re: PWM trifase

Postby flz47655 » 10 Apr 2012, 20:58

Ciao,
Utilizzo Quartus II 11.1 SP2 (Web Edition) con ModelSim Starter 10.0c e qualche menù potrà differire ma non dovrebbe essere un problema insormontabile.

Come piccola introduzione diciamo che ModelSim permette di fare tante cose, io sono un principiante ed ho iniziato da poche settimane ma seguendo molti tutorial in rete (purtroppo tutti in inglese) sono riuscito a capire ed utilizzare perlomeno le funzioni basilari del programma.

In breve ci sono alcuni tipi di simulazioni:
-RTL simulation
-Gate level simulation

La prima detta anche simulazione funzionale permette di capire a livello logico se il nostro hardware funziona come desiderato, la seconda permette inoltre di simulare le tempistiche e i ritardi reali delle celle sulla FPGA.

Per farti un esempio una semplice porta XOR con la simulazione RTL funziona correttamente anche a 100 GHz mentre con la simulazione a livello di porta (Gate level) si trova che funziona correttamente solamente fino a 120 Mhz e rappresenta meglio la realtà.

Qui trovi una mia discussione precedente che mostra la simulazione di un semplice half-adder
http://www.delucagiovanni.com/public/phpbb3/viewtopic.php?f=10&t=227

Se hai pazienza ti sto preparando un tutorial in italiano introduttivo a ModelSim, spero di finirlo in serata
Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: PWM trifase

Postby flz47655 » 11 Apr 2012, 00:22

flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16


Return to VHDL x FPGA

Who is online

Users browsing this forum: No registered users and 2 guests

cron