МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: 3-х фазный генератор

3-х фазный генератор 7 года 3 мес. назад #482

marsohod.org/forum?option=com_kunena&vie...unc=listcat&Itemid=3

В проекте с шаговым двигателем есть вариант где как раз генерируются 3 сигнала со сдвигом фаз.....
не могли бы вы прокомментировать принцип создание сдвига фаз?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: 3-х фазный генератор 7 года 3 мес. назад #483

В этой статье - marsohod.org/projects/27-motors есть диаграмма состояний(F0,F1,F2) , а в проекте есть фрагмент
схемы, которая ее реализует. Он состоит из трехбитного счетчика по модулю "6", дешифратора, который преобразует бинарный код
в позиционный, и трех логических элементов 3ИЛИ. На клок счетчика , или на разрешение счета нужно подавать частоту, в 6 раз
выше необходимой. Если можно, поконкретнее, что непонятно-то?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: 3-х фазный генератор 7 года 3 мес. назад #485

Не совсем понял алгоритм по которому достигается сдвиг фаз.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: 3-х фазный генератор 7 года 3 мес. назад #486

я честно говоря не понял ваш принцип, сделал по своему как додумался
счетчик считает до определённого числа и разрешает считать другому потом меняет состояние вывода другой досчитывая до такого же числа разрешает следующему считать и так далее хоть до 100500го счётчика.
module Phase_Counter(clock, reset, phase,en_out, en_in);

//********************************
//******** I/O definitions *******
//********************************
input wire 		clock;
input wire 		reset;
input wire 		en_in;
output wire 		phase;
output wire 		en_out;
//********************************

//********************************
//***** Internal definitions *****
//********************************
reg[7:0] counter;
reg  en_flag;
//********************************

initial
begin
en_flag<=0;
end

always @(posedge clock or negedge reset)
begin
			if(!reset)  // Reset counter
			begin
				counter<=8'd0;	
			end
		
			
			else
			begin
				if(en_in)
					begin
						counter<=counter + 1;
						if(counter==45)
							en_flag<=1;
					end
				
			end
	
end
	



assign en_out = 	en_flag;
assign phase  = (counter<=80);

endmodule
				

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от ageofenigma.

Re: 3-х фазный генератор 7 года 3 мес. назад #487

Мне непонятно, что вы хотите, сделать свой генератор , с какими-то другими свойствами, или разобраться в моем.
Если второе, то может так будет понятнее:
module ph_gen(clk,rst,f);
input clk,rst;
output [2:0] f;
reg [2:0]cnt;

always @(posedge clk or negedge rst )
  if(!rst)
    cnt <= 0;
  else
	if(cnt==5)
       cnt <= 0;
    else  
	   cnt<=cnt+1;

assign f[0] = (cnt[0] || cnt[1]) & !cnt[2];
assign f[1] = cnt[1] || (!cnt[0] & cnt[2]);
assign f[2] = cnt[2]|| (cnt[0] & cnt[1]);
endmodule


Вложения:
Спасибо сказали: ageofenigma

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от umarsohod.

Re: 3-х фазный генератор 7 года 3 мес. назад #488

Вообще я на основе вашего хочу сделать свой, главное мне нужно иметь возможность легко менять длительность перекрытий между фазами, но всё равно спасибо за пояснения.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: 3-х фазный генератор 7 года 3 мес. назад #489

Извините, вкралась ошибочка. Сдвиг фазы у меня получился - 60 градусов, а нужно 120, но общий принцип такой-же.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.323 секунд

facebook  GitHub  YouTube  Twitter