Михаил N

Трехфазный блок питания на АВР

2 posts in this topic

Задался целью собрать преобразователь трехфазного напряжения из однофазного. Делать решил на контроллере АтМега88 (я его слепила из того что было). Знаю что готовых решений в сети много, многие из них с различными регулировками и примочками в виде дисплеев, датчиков и т.п. Моей целью было по большей части разобраться с принципом работы самого контроллера и хотя бы немного научится программированию. Генератор реализован на таймерах, задействованы сразу три таймера и все их выхода (OC0A,OC0B, OC1A,OC1B,OC2A,OC2B). Частота и скважность не регулируется но при желании запилить можно. Вот сама работа:

#ifndef MAIN_H_
#define MAIN_H_
#define F_CPU 20000000
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#endif

void timer_ini(void)
 {
     TCNT0=0;
     TCNT1=85;
     TCNT2=170;
     ASSR |=0x00;
     TIMSK0, TIMSK1,TIMSK2 |=0x00;
     
     TCCR0A =0b11100001;
     TCCR0B =0b00000100; \\ последними тремя цифрами можно настроить нужную частоту
     OCR0A |=(1<<COM0A1),(1<<COM0A1);
     OCR0B |=(1<<COM0B1);
     OCR0B=OCR0A;
     
     TCCR2A =0b11100001;
     TCCR2B =0b00000110 ; \\ последними тремя цифрами можно настроить нужную частоту
     OCR2A |= (1<<COM2A1);
     OCR2B |= (1<<COM2B1),(1<<COM2B0);
     OCR2B=OCR2A;
      
     TCCR1A =0b11100001;
     TCCR1B =0b00000100; \\ последними тремя цифрами можно настроить нужную частоту
     OCR1A |= (1<<COM1A1);
     OCR1B |= (1<<COM1B1),(1<<COM1B0);
     OCR1B=OCR1A;
     
    GTCCR &=~(1<<TSM);
    GTCCR |= (1<<PSRASY);    
 }

void port_ini(void) 
{
       DDRD = 0b01101000;
      PORTD = 0b00000000;
      DDRB = 0b00001110;
      PORTB = 0b00000000;                
}

int main(void)
{
port_ini();
timer_ini();
      
    while(1)
    {
    }
}

Делал в Атмел студио 6.1. Для многих занимающихся этим профессионально может покажется смешным сие творение, но для человека который занимается этим всего неделю думаю весьма не плохо. По факту тут всего лишь настройка таймеров и их сдвиг относительно друг друга. При моделировании в протеусе показала 3 меадра. Рассчитано под схему трехфазного транзисторного моста, с управление последними через драйвера типа IR2110 - 13. Критика приветствуется, помощь в прикручивании сюда регулировки частоты тоже.

Новый рисунок.bmp

Схемы мостов и включения контроллера не привожу, в сети таких схем полно любая схема полумоста собранная 3 раза думаю будет неплохо работать, DIED TIME нет к сожалению, но насколько мне известно у драйверов есть время задержки включения и отключения транзисторов думаю его должно хватить. для совсем привередливых достаточно будет после каждого таймера  добавить строчку:

OСRnA=125; OCRnB=~125; где n - это номер таймера. Может это и не правильно но ступенька появляется и её должно хватить для избежания сквозных токов.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Сообщения

    • @Михаил Вишневский , вы в видоискатель работающей камеры хоть раз заглядывали?, Чего вы там рассматривать собрались, на экранчике в полдюйма, какие видео и фото? 
    • @Alex10 , даже если считать, что в ИБП трансформатор работает кратковременно, и поэтому используется с перегрузкой по мощности, то если в ИБП на 500 Вт реальная мощность трансформатора (допустим чудовищное) вдвое меньше, то получается, что не менее 250 Вт есть. Вам же нужно 6,3 В * 4 А = 25,2 Вт. Как минимум десятикратный запас есть. Считать надо по мощности, потому что если вы подключите накалы ламп последовательно, то суммарная потребляемая мощность останется, а ток уменьшится.
    • Да и вообще, конденсаторы надо проверять прибором перед заменой. Очень часто неопытные любители за "потёкшие" конденсаторы принимают остатки клея, которым конденсаторы фиксируют на плате. Нету в конденсаторах столько электролита, чтобы из них прямо "текло", максимум - высол на раздувшемся донышке или вокруг выводов. Тогда как реально неисправный может выглядеть вполне нормально.  
    • Это ВСЕГО четыре слова. Чтобы они суммировались, нужна вложенность функций.  И таки да, если ОЗУ крошечное, то оно может быстро закончиться. И произойдет это совсем не из-за стека.  ОЗУ нужно выбирать под задачу и используемый язык написания кода. Ну и учитывать уровень оптимизации, канешна.   
    • Конденсаторы ни при чем. У вас проблемы с лампами подсветки. Выходят из строя вот и моргают. Требуют замены.
    • void u32_color(uint32_t h){
          R_color=*(h+0);
          G_color=*(h+1);
          B_color=*(h+2);
      }   считай при выполнение каждой такой функции минимум 6 байт в озу,ну а если много таких функций будет? стек может залезть на переменные... в attiny13 такое запросто провернуть, там всего 64 байта.
    • при помощи амулетов и шаманского бубна? . R5 это токозадающий шунт падение напряжения на котором равно входному  напряжению ОУ , те максимум 5в ! . для получения тока 200мА его сопротивление должно быть равно 25ом!!!. о каком подстроичнике на 5кОм речь? далее на нагрузке требуется напряжение 20в , плюс падение на шунте 5в, плюс падение на переходе б=э транзистора 0,8в(на мосфете падение 3-5В) , плюс падение на переходах выходного каскада ОУ 2-3в , итого минимум 27.8в , для обеспечения надежной работы питание ОУ и транзистора по плюсовой шине должно быть >29в . для обеспечения устойчивой работы вблизи ноля , питание по минусовой шине ОУ должно быть минимум ниже потенциала земли на 3-4в.  те <-4в. итого полное напряжения питания ОУ 35в(+30/-5В ) , открываем ДШ на 324 и читаем максимальное напряжения питания 32в! 324 в мусорку. и получили вы товарисч в своей схеме не 200мА , а самовозбуд по причине как минимум на порядок завышенных номиналов R1...R4  , их сопротивление должно быть не более 5-10кОм. далее через резистор R2 протекает ток вносящий ошибку к коэфф.преобразования напряжение-ток , для устранения этого дополнительно вводится повторитель  на ОУ. который в свою очередь вносит ошибку смещения, поэтому в качестве повторителей используются  прецизионные ОУ с низким напряжением смещения.