Список разделов Flyback.org.ru » Двухтактные транзисторные преобразователи » Push-pull - Arduino
Тему сейчас просматривают - зарегистрированных: 0, скрытых: 0 и гостей: 0
Зарегестрированные - Нет
тема: Push-pull - Arduino
Ответить с цитатой

реношник
 


Сильно не пинайте, я только учусь.... не знаю



к этому подключил "ардуинку" с таким скетчем

Код:
void setup()   {               
DDRD = B11111110;
PORTD = B00000000; 
}
 
void loop()   {
  PORTD = B00010000;
  delayMicroseconds(25);  // 19.31 кГц
  PORTD = B00100000;
  delayMicroseconds(25); 
}


получил это



извините за качество, снимал на телефон ... извиняюсь


Добавлено: Sat Jun 29, 2013 3:54 pm
Ответить с цитатой

реношник
 


изменил немного код

Код:
void setup() {               
DDRD = B11111110;
PORTD = B00000000; 
}
 
void loop(){
int i = 80; // 13,68 кГц
for (int k=0;k<i;k++) PORTD = B00010000;
for (int k=0;k<i;k++) PORTD = B00100000;
}


теперь частоту можно менять с шагом 100 Гц.
для меня это много, копаю в направлении уменьшения шага.


Добавлено: Sat Jun 29, 2013 8:50 pm
Ответить с цитатой

Eklipsio
 


Это забивание гвоздей микроскопом, причем не подставкой а линзами. Тогда уж прикручивать индикацию частоты и всех параметров на дисплей, задание частоты и других параметров с различным шагом и т.д. Но сначала нужно хоть как-то обеспечить нормальное управление транзисторами - на выходы мк поставить драйверы полевиков и уменьшить затворные резисторы до единиц-десяток ом.

Offtopic:
а по поводу ардуино в целом
https://www.youtube.com/watch?v=O5Guo8RGXpY


Добавлено: Sat Jun 29, 2013 10:35 pm
Ответить с цитатой

SilverRay
 


Offtopic:
Eklipsio писал(а):
а по поводу ардуино в целом
https://www.youtube.com/watch?v=O5Guo8RGXpY

Какая прелесть... пацтулом пацтулом пацтулом


Добавлено: Sat Jun 29, 2013 10:55 pm
Ответить с цитатой

реношник
 


тут и выход на индикатор и регулировка (тестовый вариант)

Код:
#include <LineDriver>
#include <LiquidCrystalExt>
#include <LiquidCrystalRus>
LiquidCrystalRus lcd(8,9,10,11,12,13);

int analogPin = 3;              
int val = 0;           
int val_fr = 100;      // 10,96 кГц

void setup() {               
DDRD = B11111000;
PORTD = B00000100; 
lcd.begin(16, 2);
}
 
void loop(){
for (int k=0; k<val_fr; k++) PORTD = B00010100;
for (int k=0; k<val_fr; k++) PORTD = B00100100;
if (PIND == B00100010) l_c_d();
}

void l_c_d() {
val = analogRead(analogPin);     
val_fr = map(val, 0, 1023, 1, 200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("знач. 1 ");            
lcd.setCursor(8, 0);
lcd.print(val);
lcd.setCursor(0, 1);
lcd.print("знач. 2 ");   
lcd.setCursor(8, 1);
lcd.print(val_fr);
delay(500);
}


на счёт драйверов согласен, а резисторы убрал сразу.
на счёт микроскопа, это кому как... мне проще запустить контроллер чем аналоговую схему.

вообще навязываться не буду, просто показал как вариант.
мне понравилось как держит частоту завтра попробую запустить свой "ланжевен"...


Добавлено: Sun Jun 30, 2013 12:38 am
Ответить с цитатой

юрик Воронеж
 


Ардуинке поплохеть может. Но уж спаять пушпулл на мосфете всяко проще, чем код писать.

Добавлено: Sun Jun 30, 2013 9:18 am
Ответить с цитатой

реношник
 


попробывал прицепить такой драйвер, был уже готовый только вытянул ТЛку.



с ардуинки подавал сигнал на ключи. греются ЖуууууТКО (именно ключи)

Просто на феты как в первом посту, ничего не греется, ланжевен рвёт фольгу.... частоту держит отлично !!!

Добавлено: Sun Jun 30, 2013 2:31 pm
Ответить с цитатой

реношник
 


вот....



Добавлено: Sun Jun 30, 2013 3:36 pm
Ответить с цитатой

юрик Воронеж
 


Вот потому и жутко греюца, что переключаются как попало. Вот схема Автогенераторный пушпулл на мосфет, это тема, там переключение МЯГКОЕ, в нуле тока и напруги схема там, из десятка деталей, делать нечего вообще.

Добавлено: Sun Jun 30, 2013 4:50 pm
Ответить с цитатой

реношник
 


есть у меня и автоген...



но смысл не в самом наличии устройства, смысл в создании чего-то нового...

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

Добавлено: Sun Jun 30, 2013 7:09 pm
Ответить с цитатой

Valkyr2003
Copyrighter


Ламерский вопрос: а почему с таким богатым контроллером - и пуш-пул? Полумост не лучше ли будет?

Добавлено: Sun Jun 30, 2013 8:54 pm
Ответить с цитатой

реношник
 


Можно и полумост... но я их ещё ниразу не собирал... не знаю

И по поводу сложности схемы.. если делать генератор, что на видео то всё можно уместить даже на микросхеме...



сюда прицепить просто ПРОВОДАМИ два "фета" и "переменник" вот и генератор готов, для удобства индикатор ещё цепляется...

Добавлено: Sun Jun 30, 2013 9:15 pm
Ответить с цитатой

GRoza
Кандидат Технических Наук


Контроллеры это круто, за старания зачет отлично

Добавлено: Sun Jun 30, 2013 10:38 pm
Ответить с цитатой

юрик Воронеж
 


еще чтоб и выводился на экранчик ток/напряга питания, вообще было бы пупер.
драйвер, по вкусу. можно уцц, можно на транзистор из ртфм, или вообще иксусы...

а вообще, если запилишь прошивку для бак конвертера для QCW
, так вообще будет трушно

Добавлено: Sun Jun 30, 2013 11:33 pm
Ответить с цитатой

КТ827
 


юрик Воронеж писал(а):
бак конвертера для QCW
Будешь собирать? Smile

Добавлено: Sun Jun 30, 2013 11:35 pm
Ответить с цитатой

юрик Воронеж
 


отож.

Добавлено: Mon Jul 01, 2013 9:25 am
Ответить с цитатой

VasilijHCN
 


Насчет push-pull нашел материалл ниже там все разжевано.
http://softsolder.com/2009/05/21/arduino-push-pull-pwm/

Добавлено: Tue Jul 02, 2013 11:59 am
Ответить с цитатой

реношник
 


1VasilijHCN писал(а):
Насчет push-pull нашел материалл ниже там все разжевано.
http://softsolder.com/2009/05/21/arduino-push-pull-pwm/


видел я и эту ссылку. только там нужно сразу избавиться от analogWrite

Добавлено: Tue Jul 02, 2013 2:04 pm
Ответить с цитатой

VasilijHCN
 


реношник писал(а):
видел я и эту ссылку. только там нужно сразу избавиться от analogWrite

Поясните как ? Каким образом код поменять ?
Код что выше отлично работает, меняю потенциометром (через аналог. вход) частоту от 25 до 70 кГц, на осцилле оба канала отлично выглядят. Остолось *отдрайверить*.

Добавлено: Tue Jul 02, 2013 2:47 pm
document.pdf (227.4 Кб)
osc
Ответить с цитатой

реношник
 


VasilijHCN писал(а):
Код что выше отлично работает, меняю потенциометром (через аналог. вход) частоту от 25 до 70 кГц, на осцилле оба канала отлично выглядят. Остолось *отдрайверить*.

Скинте мне полностью скетч (сюда или в личку) я отвечу более конкретно...


Кстати попробуй этот скетч

Код:

 int val = 0;           
 int val_fr = 100;      // 10,96 кГц
 void setup() {               
 DDRD = B11111000;
 PORTD = B00000100; 
 }
 void loop(){
 for (int k=0; k<val_fr; k++) PORTD = B00010100;
 for (int k=0; k<val_fr; k++) PORTD = B00100100;
 if (PIND == B00100010) l_c_d();
 }
 void l_c_d() {
 val = analogRead(A3);     
 val_fr = map(val, 0, 1023, 1, 500);
}

/*
выход сигнала - пины 4 и 5 (цифровые)

[b]регулировка частоты при замыкании на "массу" 2 пина (цифрового), [/b]

регулируем переменником на 3 пине (аналоговом)
*/


у меня просто нет осцилографа не могу посмотреть сигнал...


Сейчас делаю новую прогу, хочу регулировать скважность, если интересно могу выложить если всё пройдёт удачно....


Добавлено: Tue Jul 02, 2013 3:48 pm
Ответить с цитатой

VasilijHCN
 


реношник писал(а):
Сейчас делаю новую прогу, хочу регулировать скважность, если интересно могу выложить если всё пройдёт удачно...
Да, конечно выкладывай.
Код отправил в личку.

реношник писал(а):
Кстати попробуй этот скетч
Попробовал (убрал проверку замыкания цифр. пина на землю), работает, частота у меня изменялась сама от мин до макс выставленного в скетче.
Тот скетч что в личке быстрее отзывается на потенциометр.

Добавлено: Tue Jul 02, 2013 5:53 pm
Ответить с цитатой

реношник
 


посмотрел твой скетч, но он что-то не компилируется .... там много чего не объявлено и что-то со скобками и кавычками...

теперь по поводу
analogWrite(PIN_PRI_A,128);
analogWrite(PIN_PRI_B,128);
кстати в твоём скетче они тоже не объявлены, если у тебя так же как в оригинале
#define PIN_PRI_A   9    
#define PIN_PRI_B   10   
тогда может для ускорения работы попробывать так:
PORTB = B000010;
PORTB = B000100;


А кнопку я сделал специально, чтобы во время основной работы генератора не тратилось время на опрос порта. Кнопка опрашивается по прерыванию это экономит время.

Добавлено: Tue Jul 02, 2013 6:46 pm
Ответить с цитатой

VasilijHCN
 


Подсуажи пожалуйста вместо чего PORTB = B000010; PORTB = B000100; поставить.

Ниже скетч компилится в ард. иде 1,0 [NewPing libary req.]

Код:
// ---------------------------------------------------------------------------
// Замер тока датчиком холла, измерение дисанции до цели, пуш-пулл.
// ---------------------------------------------------------------------------

#include <NewPing>
int dist; //расстояние
int curr;
float current;
float realc; // реальный ток
int y;
int Count = 200; //Количество значений для усреднения
//float realci;
int ledState = HIGH;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated
float differ;
// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 3000;

#define TRIGGER_PIN  6  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     5  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 450 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  pinMode(13, OUTPUT);
 
 
  differ = ((4.980 / 1024.000) * analogRead(A0)); //find the zero current value
  for (y = 0; y <100> runs at half the usual rate
//int period = 5;
int val = analogRead(1); //read potentiometer on A1
  val = map(val, 0, 1023, 10, 41); //25-100 kHz
#define PERIOD_US  val //set period according to val mapped data
#define PERIOD_TICKS (microsecondsToClockCycles(PERIOD_US / 2) / TIMER1_PRESCALE)
 
     
     

//The phase of the PWM outputs comes from the Compare Output Mode register settings. Normally the output pin goes high when the PWM count resets to zero and goes low when it passes the duty cycle setting, but you can flip that around. The key bits are COM1A and COM1B in TCCR1A, as documented on page 131.

//As always, it’s easiest to let the Arduino firmware do its usual setup, then mercilessly bash the timer configuration registers…

// Configure Timer 1 for Freq-Phase Correct PWM
//   Timer 1 + output on OC1A, chip pin 15, Arduino PWM9
//   Timer 1 - output on OC1B, chip pin 16, Arduino PWM10

 analogWrite(PIN_PRI_A,128);    // let Arduino setup do its thing
 analogWrite(PIN_PRI_B,128);


//PORTB = B000010;
//PORTB = B000100;

 TCCR1B = 0x00;                 // stop Timer1 clock for register updates

// Clear OC1A on match, P-F Corr PWM Mode: lower WGM1x = 00
 TCCR1A = 0x80 | 0x00;

// If push-pull drive, set OC1B on match
#if PUSH_PULL
 TCCR1A |= 0x30;
#endif

 ICR1 = PERIOD_TICKS;           // PWM period
 OCR1A = PERIOD_TICKS / 2;      // ON duration = drive pulse width = 50% duty cycle
 OCR1B = PERIOD_TICKS / 2;      //  ditto - use separate load due to temp buffer reg
 TCNT1 = OCR1A - 1;             // force immediate OCR1x compare on next tick

// upper WGM1x = 10, Clock Sel = prescaler, start Timer 1 running
 TCCR1B = 0x10 | TCCR1B_CS20;
 }
 
 
}


Скетч частично мой, просьба не пинать за кривокод.[/code]


Добавлено: Tue Jul 02, 2013 9:20 pm
PushPull OSC.pdf (1.01 Мб)
OSC 25-100kHz
Ответить с цитатой

Николашка
 


а в случае повисания контроллера что будет? Правильно, въеб. А в случае неповисания: кривое управление и полный хардсвитч. Эффективнее делать звс, а если серьезно- резонансный мост со своим драйвером и управлением на мк. Но не это в любом случае.

Добавлено: Tue Jul 02, 2013 9:35 pm
Ответить с цитатой

VasilijHCN
 


ZVS-ов наделано куча вещь дельная, но не везде её применишь.

Добавлено: Tue Jul 02, 2013 9:42 pm
Список разделов Flyback.org.ru » Двухтактные транзисторные преобразователи » Push-pull - Arduino
На страницу 1, 2  След.     Просмотр темы целиком



Лицензионное соглашение

(c)Flyback.org.ru
Российское общество любителей высоких напряжений.
Использование материалов с данного сайта и форума возможно только с разрешения администрации.