Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/106: Рейтинг темы: голосов - 106, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 28.12.2014
Сообщений: 5

Задающий генератор на Arduino для самодельного преобразователя 12/220В

29.12.2014, 00:08. Показов 19729. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Нуждаюсь в автономном питании на даче. имеется 2 тактный трансформатор от УПСА. Сделал генератор импульсов на ардуине вот код ...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/ *
генератор для преобразователя
* /
int positiv = 6; // одно плечо транзисторов
int negativ = 7; // другое плечо транзисторов
void setup ()
{
pinMode (positiv, OUTPUT);
pinMode (negativ, OUTPUT);
}
void loop ()
{
DigitalWrite (positiv, HIGH);
delay (10); 
digitalWrite (positiv, LOW);
digitalWrite (negativ, HIGH);
delay (10);
digitalWrite (negativ, LOW);
}
Но есть проблемка форма выходного сигнала прямоугольной формы а не чистая синусоида. А для питания компьютера и водяного насоса нужна чистая синусоида. Как заставить Ардуино генерировать импульс чистой синусоиди частотой 50 Гц так штобы положительный полупериод формировался на одном Пине а отрицательный на другом Пине .. так как есть 2 плеча транзисторов для питания первичной обмотки трансформатора ..
вот нарыл скетч в интернете может поможет упростить задачу написания моего скетча. Не могу разобратся осциллограф ресует чистый синус но неразводит полупериода по 2м каналам и частота 1,3 мегагерца.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
 *
 * DDS Sine Generator mit ATMEGS 168
 * Timer2 generates the  31250 KHz Clock Interrupt
 *
 * KHM 2009 /  Martin Nawrath
 * Kunsthochschule fuer Medien Koeln
 * Academy of Media Arts Cologne
 
 */
 
#include "avr/pgmspace.h"
 
// table of 256 sine values / one sine period / stored in flash memory
PROGMEM  prog_uchar sine256[]  = {
  127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231,233,234,236,238,239,240,
  242,243,244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239,238,236,234,233,231,229,227,225,223,
  221,219,217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90,87,84,81,78,
  76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,
  33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,121,124
 
};
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
 
int ledPin = 13;                 // LED pin 7
int testPin = 7;
int t2Pin = 6;
byte bb;
 
double dfreq;
// const double refclk=31372.549;  // =16MHz / 510
const double refclk=31376.6;      // measured
 
// variables used inside interrupt service declared as voilatile
volatile byte icnt;              // var inside interrupt
volatile byte icnt1;             // var inside interrupt
volatile byte c4ms;              // counter incremented all 4ms
volatile unsigned long phaccu;   // pahse accumulator
volatile unsigned long tword_m;  // dds tuning word m
 
void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
  Serial.begin(115200);        // connect to the serial port
  Serial.println("DDS Test");
 
  pinMode(6, OUTPUT);      // sets the digital pin as output
  pinMode(7, OUTPUT);      // sets the digital pin as output
  pinMode(11, OUTPUT);     // pin11= PWM  output / frequency output
 
  Setup_timer2();
 
  // disable interrupts to avoid timing distortion
  cbi (TIMSK0,TOIE0);              // disable Timer0 !!! delay() is now not available
  sbi (TIMSK2,TOIE2);              // enable Timer2 Interrupt
 
  dfreq=1000.0;                    // initial output frequency = 1000.o Hz
  tword_m=pow(2,32)*dfreq/refclk;  // calulate DDS new tuning word 
 
}
void loop()
{
  while(1) {
     if (c4ms > 250) {                 // timer / wait fou a full second
      c4ms=0;
      dfreq=analogRead(0);             // read Poti on analog pin 0 to adjust output frequency from 0..1023 Hz
 
      cbi (TIMSK2,TOIE2);              // disble Timer2 Interrupt
      tword_m=pow(2,32)*dfreq/refclk;  // calulate DDS new tuning word
      sbi (TIMSK2,TOIE2);              // enable Timer2 Interrupt 
 
      Serial.print(dfreq);
      Serial.print("  ");
      Serial.println(tword_m);
    }
 
   sbi(PORTD,6); // Test / set PORTD,7 high to observe timing with a scope
   cbi(PORTD,6); // Test /reset PORTD,7 high to observe timing with a scope
  }
 }
//******************************************************************
// timer2 setup
// set prscaler to 1, PWM mode to phase correct PWM,  16000000/510 = 31372.55 Hz clock
void Setup_timer2() {
 
// Timer2 Clock Prescaler to : 1
  sbi (TCCR2B, CS20);
  cbi (TCCR2B, CS21);
  cbi (TCCR2B, CS22);
 
  // Timer2 PWM Mode set to Phase Correct PWM
  cbi (TCCR2A, COM2A0);  // clear Compare Match
  sbi (TCCR2A, COM2A1);
 
  sbi (TCCR2A, WGM20);  // Mode 1  / Phase Correct PWM
  cbi (TCCR2A, WGM21);
  cbi (TCCR2B, WGM22);
}
 
//******************************************************************
// Timer2 Interrupt Service at 31372,550 KHz = 32uSec
// this is the timebase REFCLOCK for the DDS generator
// FOUT = (M (REFCLK)) / (2 exp 32)
// runtime : 8 microseconds ( inclusive push and pop)
ISR(TIMER2_OVF_vect) {
 
  sbi(PORTD,7);          // Test / set PORTD,7 high to observe timing with a oscope
 
  phaccu=phaccu+tword_m; // soft DDS, phase accu with 32 bits
  icnt=phaccu >> 24;     // use upper 8 bits for phase accu as frequency information
                         // read value fron ROM sine table and send to PWM DAC
  OCR2A=pgm_read_byte_near(sine256 + icnt);    
 
  if(icnt1++ == 125) {  // increment variable c4ms all 4 milliseconds
    c4ms++;
    icnt1=0;
   }   
 
 cbi(PORTD,7);            // reset PORTD,7
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.12.2014, 00:08
Ответы с готовыми решениями:

Задающий генератор на ОУ для Г3-36А
Вариант замены нестабильно работающего задающего генератора на основе моста Вина в ГЗЧ Г3-36А на схему с ОУ (с позистором и полевым...

Схема импульсного преобразователя 220В -> 5В
Пожалуйста, ткните носом в схему импульсного преобразователя, аля зарядка для смартфона, максимально компактную при реализации. И...

3-х фазный генератор задающий на xMega
Добрый день/вечер/ночь) Хотелось бы спросить у глубоко знающих людей, у тех, кто давно пишет программы и хорошо знает...

11
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
29.12.2014, 07:46
ШИМ + ФНЧ - классика жанра, а DDS тут все равно что микроскопом по гвоздям.
0
0 / 0 / 0
Регистрация: 28.12.2014
Сообщений: 5
29.12.2014, 10:22  [ТС]
ФНЧ ето слишком громоздко и кпд ниже плинтуса. На холостом ходу ФНЧ фильтр подключон к виходу трансформатору будет есть 60ват минимум.
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
29.12.2014, 12:43
...такие бредни даже выслушивать не буду.
0
0 / 0 / 0
Регистрация: 28.12.2014
Сообщений: 5
29.12.2014, 21:42  [ТС]
имелось в виду если ставить фнч после трансформатора на вторичную обмотку 220 вольт... а не перед ключами ... ну всьо же никак нигзя посредцтвом програмних решений ето сделать ??
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
01.01.2015, 00:54
Цитата Сообщение от wpunduk Посмотреть сообщение
А для питания компьютера и водяного насоса нужна чистая синусоида.
Для питания двигателя нужна синусоида, а вот компу все равно.
Цитата Сообщение от raxp Посмотреть сообщение
...такие бредни даже выслушивать не буду.
При всём к тебе уважении
Из практики замечено, что компам до лампочки от чего работать, а вот двигатели(при всей их индуктивности) от ШИМ нестабильно работают.
Но это при использовании компьютерных ИБП. А с вот частотными преобразователями двигатели прекрасно работают.
Видимо разные ШИМ используются.
0
0 / 0 / 0
Регистрация: 28.12.2014
Сообщений: 5
01.01.2015, 13:42  [ТС]
а в частотных преобразователях шим сигнал ?? гмм увидеть би осциллограмму .. может нужно просто уменшить продолжительность включения шим ??. на глаз когда сравнить синус і простой шим, видно что шим реально больше енергии переносить через большую продолжительность подачи напряжения так как оно сразу включаєтса і виключаєтса а в синусоиде всьо происходит мягко.
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
01.01.2015, 14:41
Цитата Сообщение от wpunduk Посмотреть сообщение
а в частотных преобразователях шим сигнал ?? гмм увидеть би осциллограмму ..
осцилограмму не могу снять. могу только статью предложить http://www.110volt.ru/text/invertor
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
01.01.2015, 20:45
Цитата Сообщение от wpunduk Посмотреть сообщение
а в частотных преобразователях шим сигнал ??
он родимый, а в ряде случаев на выходе ШИМА еще и громоздкий синус фильтр.
P.S. Как хотите Вы сделать тоже громоздко получится, тепло от транзисторов замучаетесь отводить.

Добавлено через 6 минут
P.P.S У Вашего метода КПД будет не какой, а у ШИМ(ов) 93 - 95%
0
0 / 0 / 0
Регистрация: 28.12.2014
Сообщений: 5
01.01.2015, 23:17  [ТС]
ну как же тогда буржуи выходят из положения ? Есть готовиє преобразователи 12-220 с чистим синусом і кпд 90%. Кто видел как там сделано? даже если подать чистий синус сигнал на транзистор то он тоже будет гретса через линийний режим работи транзистора в сравнении с шимом. Сегодня включил преобразователь 3 чеса питал компютер от него свет і тв. Заметил одну вещ. Жужат всє потребители, жужит зарядник от телефона, жужат даже розетки когда в розетку мінімальную нагрузку подключить то самоє зарядноє до телефона, даже включатель света жужит .. НУ жужит тай пусть но они при том ищо і греютса. Всьотаки чистую синусоиду нужно както сварганить.
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
02.01.2015, 01:09
Можно увеличить частоту ШИМ. Будет проще отфильтровать сигнал.
Но и потери в ферритах и транзисторах увеличатся(будут сильнее греться).
0
 Аватар для Sinus 50Hz
0 / 0 / 0
Регистрация: 03.01.2019
Сообщений: 1
04.04.2019, 13:52
Статья по организации простой обратной связи по напряжению
в инверторе с чистым синусом на микроконтроллере ...
http://sinus50hz.my1.ru/publ/o... ju/1-1-0-6
На Яндекс Диске есть исходник для PIC16,PIC18 и Arduino NANO.
https://yadi.sk/d/p4WlWWrKSHM4eQ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2019, 13:52
Помогаю со студенческими работами здесь

Повербанк для питания самодельного планшета
Подскажите- подойдёт ли повербанк для питания самодельного планшета из одноплатника? Повербанк 15 ватт на 20 000 миллиампер

Реализовать итератор для самодельного списка
Нужно узнать что из себя представляет итератор. Посмотреть его реализацию. (Желательно попроще, основное) Кто то может объяснить что он...

Настройка самодельного шаблона для wordpress
делаю самостоятельно шаблон для водпресс, написал HTML код, согласно инструкциям поделил на части и применил к сайту, но не могу понять как...

Связанные запросы для самодельного VK API
Доброе время суток, форумчане! Нуждаюсь в вашей помощи! Выручайте! Начал делать VK API. Необходимо реализовать два любых связанных...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru