Рисунок 1 - Схема преобразователя
Первичная обмотка w1 содержит около 21 витков алюминиевым проводом, вторичная w2 около 400 витков тонким медным проводом, сердечник использован от трансформатора строчной развёртки ТВС-110П3.
Напряжение на первичной обмотке составляло примерно 1.5 В.
Из за повышенной частоты видно что светодиоды светятся непрерывно, в принципе в этих светодиодах нет необходимости.
Напряжение на вторичной обмотке около 31В.
Действующее напряжение трансформатор повышает примерно в 20 раз.
Программа для управления электродвигателем микроконтроллером дополнена кодом для преобразователя напряжения. При нажатии на кнопку SB1 подключенную к четвёртому биту порта C срабатывает старый код который можно убрать. В коде для работы преобразователя напряжения, в отличии от кода для управления двигателем, используется функция _delay_us для создания задержки в микросекундах.
Ниже приведен исходный код программы на языке C++ для микроконтроллера:
#include <avr/io.h>
#include <avr/delay.h>
#define F_CPU 8000000UL // 8 MHz
int main(void) // начало основой программы
{
DDRD = 0xff; /* все выводы порта D сконфигурировать как выходы */
DDRC = 0x00; //выводы порта С сконфигурировать как входы
PORTC = 0xff; // установить "1" на всех выводах порта C,
//включаем подтягивающие резисторы
while (1) // Бесконечный цикл
{
if (!(PINC & (1<<PINC4)))
{
DDRD |= 1<<1;
DDRD |= 1<<2;
_delay_ms(250); // Ждем 250*8 мсек.
DDRD &= ~(1<<1);
DDRD &= ~(1<<2);
_delay_ms(250); // Ждем 250*8 мсек.
DDRD |= 1<<0;
DDRD |= 1<<3;
_delay_ms(250); // Ждем 250*8 мсек.
DDRD &= ~(1<<0);
DDRD &= ~(1<<3);
_delay_ms(500); // Ждем 500*8 мсек.
}
else
{
DDRD &= ~(1<<0);
DDRD &= ~(1<<3);
DDRD |= 1<<1;
DDRD |= 1<<2;
_delay_us(5); // Ждем 5*8 мксек.
DDRD &= ~(1<<1);
DDRD &= ~(1<<2);
DDRD |= 1<<0;
DDRD |= 1<<3;
_delay_us(5); // Ждем 5*8 мксек.
}
}
} // закрывающая скобка основной программы
Исходный код компилировался в среде WinAVR, hex файл прошивался в микроконтроллер с помощью программы ponyprog2000.
Такие вещи на delay реализовывать как минимум нелогично. Есть таймеры для этого и аппаратный ШИМ. Чтобы получать асинхронных ШИМ, есть специальные регистры режимов работы.
ОтветитьУдалитьСогласен! Но делал я это давно и мало тогда знал о микроконтроллерах и лень было копаться в документациях на непонятном, по большей части, мне языке. С delay всё получилось быстро и просто. К тому же аппаратные таймеры и ШИМы есть не во всех микроконтроллерах а delay можно сделать на любом.
Удалить