Jump to content

a_sergeevich

Members
  • Posts

    328
  • Joined

  • Last visited

Posts posted by a_sergeevich

  1. Уважаемый, Starichok подскажите если не трудно, я тут остановился на схеме Анатолия Патрина ( в прикреплённом файле ), так вот, могли бы вы посмотреть и дать свою оценку ( собирать или не стоит тратить время ) данному девайсу, а также ответить на вопрос: если я соберу два такиких БП и соединю их последовательно ну т.е для получения двухполярного напряжения, будет ли работать защита по току как в одноканальном варианте ? Просто я иногда собираю разные УМЗЧ и раньше для проверки применял авто преобразователь, который питал от компового БП, сам ПН без защит, а вот комповский БП не раз спасал от дыма транзисторов, в нём защита чётко работает. Поэтому и возник вопрос, который выше. Или подскажите, что надо будет переделать или доделать, чтобы защита работала.

    Заранее благодарю.

    Вот сама схема БП и индикатора тока и напряжения + их печатки в формате lay + прошивка для МК индикатора.

    LBP.rar

    П.С. Индикатор я собирать не буду.

  2. Уважаемые, спецы по блокам питания, проконсультируйте пожалуйста. После долгого и мучительного выбора схемы БП я остановился на схеме Анатолия Патрина ( в прикреплённом файле ), так вот, могли бы вы посмотреть и дать свою оценку ( собирать или не стоит тратить время ) данному девайсу, а также ответить на вопрос: если я соберу два такиких БП и соединю их последовательно ну т.е для получения двухполярного напряжения, будет ли работать защита по току как в одноканальном варианте ? Просто я иногда собираю разные УМЗЧ и раньше для проверки применял авто преобразователь, который питал от компового БП, сам ПН без защит, а вот комповский БП не раз спасал от дыма транзисторов, в нём защита чётко работает. Поэтому и возник вопрос, который выше. Или подскажите, что надо будет переделать или доделать, чтобы защита работала.

    Заранее благодарю.

    Вот сама схема БП и индикатора тока и напряжения + их печатки в формате lay + прошивка для МК индикатора.

    http://zalil.ru/30372364

    П.С. К сообщению прикрепить не смог, все время ошибку выдаёт, поэтому выложил на обменник.

    Индикатор я кстати, делать не буду, только БП.

  3. Я тут выкладывал, готовые функции на Си от самого производителя этих датчиков, там есть всё и чтение и запись, зачем изобретать велосипед заново если его уже изобрели до вас ?

    Даже вот тебе ссылка: http://forum.cxem.net/index.php?app=core&module=attach&section=attach&attach_id=56666

  4. Прокомментируй код, где, что ты делаешь.

    Ну а на вскидку первая ошибка тут

    if (Button(&PORTA, 1, 10, 1)) oldstate = 1;

    if (oldstate && Button(&PORTB, 1, 10, 0))

    видишь, ты кнопку пасёшь на PORTA, а во втором условии пишешь PORTB.

    И ещё дам один хороший совет по отладке программ.

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

    Ну, а пока от комментируй код :) и делай так всегда, когда хочешь получить помощь.

    Удачи.

  5. думаю пока собрать все на макетке, и посмотреть как в железках работает.

    Это самый лучший вариант, т.к бывает такое, что в шпроте не пашет, а в железе аж бегом :)

  6. Я бы пример привел если бы ТС делал устройство своё на ПИКе и не просто пример, а готовый код ему выложил.

    А так для того чтобы мне ему приводить примеры мне надо как минимум разобраться с CVAVR в которой он работает и покурить даташит на МК, который он применяет. А с морганием по прерыванию ничего сложного нету, к тому же он собрался внедрить в устройство ЖК индикатор, вольтметр, поэтому все эти задержки в основном теле программы ни к чему. А чтобы изучить все эти аспекты, я могу ему посоветовать книгу "CVAVR для начинающих", там полно примеров. Пока из моего совета его заинтересовала лишь замена микросхемы на два транзистора.

  7. Ты уже не первый кто спрашивает у меня ссылку на эту книгу. К сожалению у меня ссылки такой нет т.к книга у меня в бумажном виде и сколько я ни пытался найти её в электронном виде, не нашёл. Кстати такую книгу лучше иметь именно в бумажном виде, да и стоит она не так уж дорого, в интернет магазинах от 200 до 250 рублей.

    Ну как у тебя дела с твоей программой, получается что нибудь ?

    Да, вот ссылка http://zalil.ru/29894591 тоже отличная книга по языку Си, учись на здоровье :)

  8. Под мануалом я имел ввиду не русский хелп для микроСи, а книгу по языку, которая у меня всегда под рукой. Называется "Программирование на языке Си" автор Стефан Кочан, очень рекомендую.

    Извиняюсь если ввёл в заблуждение :)

  9. Ошибка твоя вот в чём.

    Ты не правильно применяешь оператор switch case. Ты пишешь case PORTA.F0 == 0.... , а в мануале по Си указан следующий синтаксис case value1: операторы. Значение value1 должно быть простой константой либо константным выражением. Твоё условие PORTA.F0 == 0 не отвечает ни первому ни второму.

    Поэтому просто замени switch case на обычные условия if...else.

    Примерно так:

    char oldstate;
    
    void signalon () {
    if (PORTB.F6 == 1) {
    PORTB.F3 = 1; }
    
    if( PORTA.F0 == 0 ) {PORTB.F0 = 1;
    Delay_ms (200);
    PORTB.F0 = 0; }
    if(PORTA.F0 == 0) PORTB.F1 = 1;
    
    else
       PORTB.F3 = 1;
    }
    
    
    void signoff () {
    if (PORTB.F6 == 0)
    PORTB.F4 = 1;
    }
    main () {
    STATUS = 0B00100000;
    OPTION_REG = 0b10000111;
    TRISA = 0b00011111;
    TRISB = 0;
    PORTB = 0;
    STATUS = 0;
    while (1) {
    if (Button(&PORTA, 0, 1, 1)) oldstate = 1;
    if (oldstate && Button(&PORTB, 0, 1, 0)) {
    PORTB.F6 = ~PORTB.F6;
    oldstate = 0;
    }
    signalon ();
    signoff ();
    }
    }
    

    И ещё функции delay_ms в микроСи нету есть Delay_ms, регистр имеет значение.

  10. Зачем, датчик наружу ? У тебя тосол гонится по всей системе в том числе и через радиатор печки, ну и прицепи его прям к нему. Схема то насколько упростится, а также повысится надёжность и мешать ничему не будешь, развязка не нужна. Транзисторы можно поставить, например, bc847, только не забудь параллельно катушке реле поставить диод, катодом к плюсу. В базу транзистора включи резистор где-то на 10К, а так же резистор на 10К между базой и эмитером. Катушку реле включаешь один конец на +12, второй на коллектор, эмитер на минус.Диод можно поставить 1n4148.

  11. Я с вас туею, вернее с вашей схемы. Да выкиньте вы этот опер и весь огород к нему, поставьте датчик тем-ры DS18b20. Зачем для двух реле использовать целую микросхему ? Два транзистора за глаза. И разводить плату проще будет. Организуй мигание светика по прерыванию от таймера, зачем в коде ставить доп.задержки ?

    П.С В CVAVR есть готовые функции для работы с датчиками DS18b20. Стремись к лучшему.

  12. По опыту эксплуатации могу посоветовать датчики уровня СУР производства ЗАО "Альбатрос", надёжные, легко настраиваются, у вторичника есть выход типа сухой контакт, индикация состояния.

    Вот можно посмотреть как выглядит http://www.oil-gas.ru/catalog/group/product/?1669

  13. К сожалению в электронке у меня её нету, но советую лучше купить бумажный вариант, у меня она всегда на столе лежит как справочник, потому что нет, нет да и забуду, что-нибудь, стоит в инете 250 рублей: http://www.home-relax.ru/good_book_1070766_3036814.html

    Лучше с Асма, логика работы его программы более приближена к логике кристалла. Начинать точно лучше с него, тогда Си покажется безобидным и не страшным :-) Правда где найти книжку по началам асма - не знаю.

    Кому как, мне так асм ни разу не понадобился всё время как-то Си хватало да я и не разрабатываю промышленные устройства. А когда говорят, что надо учить асм, чтобы понять устройство мк, то я могу то же сказать и про Си, устройство мк знать просто необходимо в любом случае. К тому же бытует мнение, что авр затачивались прямо таки под Си, не утверждаю т.к самому мне по душе ближе как-то PIC-и :rolleyes:, но в инете часто видел такие мнения.

  14. По Си рекомендую книгу "Программирование на языке Си" автор Стефан Кочан, третье издание, отличная книга, всё разжёвано до предела, читается очень легко все примеры разобраны прям по строчно, где, что и как.

  15. Можно стек представить так: допустим глубина стека равна 3

    тело программы

    |

    вызов подпрограммы_0 -> запись адреса следующей команды в стек_0

    |{

    вызов подпрограммы_1 -> запись адреса следующей команды(в подпрограмме_0) в стек_1

    |

    вызов подпрограммы_2 -> запись адреса следующей команды(в подпрограмме_1) в стек_2

    |}

    след.команда

    |

    тело программы

    Возврат после выполнения подпрограммы_2 будет 2 -> 1 -> 0 -> следующая команда после команды вызова подпрограммы_0 -> продолжение выполнения тела программы.

    Тут я попытался нарисовать вложенные вызовы подпрограмм, которых при глубине стека =3 должно быть не более 3-х,

    если добавить 4-е то это тогда затрётся самый нижний адрес, что вызовет крах программы т.к потеряется точка возврата.

    Надеюсь теперь более ясно представишь себе работу стека.

  16. <stdio.h> это стандартная Си библиотека ввода вывода.

    Объяви переменную char: char ukaz;

    Вставь после else PORTD.1=0;

    if ( i == 0 ) ukaz = 'U'; - улица

    if ( i == 1 ) ukaz = 'D'; - дом

    if ( i == 2 ) ukaz = 'S'; - температура внутри системника компа или что надо.

    Строку sprintf(lcd_buffer,"TEMP=%i.%u\xdfC",temp,temp%1); надо изменить на

    sprintf(lcd_buffer,"%c TEMP=%i.%u\xdfC",ukaz,temp,temp%1);

    Если хочешь можешь оформить эти условия в функцию, также вместо if можно использовать switch case, короче вот так.

  17. Goodefine

    ИМХО, зачем такие сложности разводить?..

    Где Вы там сложности увидели? Нарочно оставил часть кода для примера... Это часть, вписывающаяся по логике и стилю в основную программу. Обычные автоматы состояний, примененные к к линии. В объемной программе, со сложной логикой работы, куда удобнее пользоваться именно таким подходом. И не только в отношении кнопок. Автоматы, при правильном использовании, могут здорово упростить и ускорить программирование. Но к этому надо придти самому...

    По своему вы конечно правы, а под сложностью я имел ввиду кол-во кода, просто для начинающего в нём немного сложновато разобраться, конечно можно тупо скопировать и пользоваться не вникая в подробности, я то разобрался, а вот человек пишет, что не силён в Си ему как раз то сложно будет понять, что к чему и перевести это на асм.

    Это всё ИМХО.

    Пример не очевиден, потому что становится понятным только после долгого разбора его работы

    Вот тут не соглашусь, во первых всё откомментировано, каждая строчка. И что долгого разбираться в двух условиях ? Хотя в принципе каждому своё. :)

    Лучше пусть человеку подскажет кто-нибудь кто в асме разбирается, потомучто тут я пасс :).

    Придёт my504 и всё объяснит я думаю.

  18. Там какой-то странный пример... не очень очевидный. Вобщем, что надо?

    1) записать текущее состояние порта в 0-й бит переменной.

    2) сделать переменной AND 0x03

    3) Проверить, если переменная = 0 - отпущена(постоянно), 1 - нажатие(момент), 2 - отпускание(момент), 3 - нажата(постоянно). Выполнить необходимое действие.

    4) Cдвинуть переменную влево(в сторону старшего бита).

    И чем он, пример не очевиден, тем, что для 12-го пика приведён или что там не надо делать кучу телодвижений которые вы описали,просто интересно ?

    Да кстати там не один пример.

    Goodefine

    ИМХО, зачем такие сложности разводить ?

    Антидребезг можно обычным циклом сделать.

    //блок инициализации переменных
    char flag = 0;
    int i;
    char tmp = GPIO2;
    //основной цикл программы
    if (GPIO2 != tmp ) {for (i=0; i <= 16; i++ );} //антидребезг
    if (GPIO2 != tmp ) { flag++; tmp = GPIO2; } //обработка нажатия отжатия.
    if (flag >= 2 ) {  flag = 0; funcia ();}
    

  19. В принципе, подойдёт, но он работает в АВ классе, т.е греется всегда и при работе и при простое, поэтому для саба я бы посоветовал схему усилка Ускова, он специально для сабов делался. Ну и у этого усилка плохая термокоррекция, т.е на радиаторы желательно ставить обдув, чтобы ток покоя не уплыл. Я собирал этот усилитель два канала, на трёх парах на 4 ома при питании +- 38 сотку он у меня выдавал чистого звука без заметных искажений, сейчас валяется в корпусе без дела :). А для чистого звука я бы посоветовал усилитель А.Лайкова из темы "есть усилитель собственной разработки"

  20. Нету в 84-м пике и компаратора, они есть в 628-ом, поэтому часто рекомендуют покупать для начинания 16ф628, а не 16ф84, к тому же 84-й дорогой по сравнению с 628-м.

    П.С Я лично на 84-м ни одного вольтметра не видел.

×
×
  • Create New...