Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
ilya38
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 5
1

Делаю реле времени для пускового конденсатора на тини13 не получается

30.03.2016, 08:08. Просмотров 836. Ответов 8
Метки нет (Все метки)

Добрый день все участникам...
В общем делаю реле времени для отключения пускового конденсатора через определённое время, схема в протеусе в месте где стоит D2 планирую поставить нормально замкнутое реле вольтметр на ноге PB4 для отладки параллельно светодиод который не горит....., кнопки SW1..3 для установки время до разрыва цепи конденсатора

В общем Алгоритм работы следующий:

кнопками 1-3 устанавливаю время, если не одна из кнопок не зафиксирована то задержка 1с (в любом случае)
1. Появляется питание на МК. (реле не зависимо замкнуто)
2. Далее по циклу смотрю если прижата 1ая жду 2 с., далее 2ая жду ещё 3 с., 3я жду 5 с. тем самым могу получить разные интервалы: 6, 8, 9, 3 и тд.... в конце (меня это устраивает)
3. В конце задержка 1 сек.
4. Подаю высокий уровень на ногу PB3 врубаю реле тем самым отключая пусковой конденсатор
5. Ухожу в бесконечный цикл до обесточивания схемы...

Смутило следующее... С Протеусом можно сказать вообще не знаком, так понахватал с разных мест (в инст. давно был мультисим поэтому решил перед тем как паять смоделировать). Для отладки в каждое условие добавил несколько строчек чтоб моргал диод при выполнении условия. Так вот получается какая то билеберда( в протеусе при Воспроизведении медленно очень работает, в коде в delay убрал везде по нолику одна сек. длилась 7 сек, три не 21 а 86):

1. на выводах мк при входе в условия на вольтметре который на ноге PB4 1.5в, а не 5 при этом на другом который на управляющем выводе где будет реле меняется в минус на -3.45.
2. в самом конце когда программа уже в бесконечном цикле должно гореть два светодиода в итоге напряжение становится 0,76

Подскажите что не так.... файлы проектов в AVR Studio 4, Proteus 7.10 прикрепил

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
//?? ATtiny13
#define F_CPU 9600000L
 
#include <avr/io.h>
#include <util/delay.h> 
                  
int main(void)               
{  
  PORTB = 0b00000000;  // íèçêîå íàïðÿæåíèå íà âñåõ ïîðòàõ
  DDRB  = 0b00011000;  // pb0..pb2 âõîä, pb3, pb4 âûõîä
    if (PINB & (1 << PB0))
    {
        PORTB |= (1 << PB4);
        _delay_ms(200);
        PORTB &= ~(1 << PB4);
        _delay_ms(100);
    }
    if (PINB & (1 << PB1))
    {
        PORTB |= (1 << PB4);
        _delay_ms(300);
        PORTB &= ~(1 << PB4);
        _delay_ms(100);
    }
    if (PINB & (1 << PB2))
    {
        PORTB |= (1 << PB4);
        _delay_ms(500);
        PORTB &= ~(1 << PB4);
        _delay_ms(100);
    }
    _delay_ms(100);
    PORTB |= (1 << PB4);
    _delay_ms(100);
    PORTB |= (1 << PB3);
    while(1){}
}
0
Миниатюры
Делаю реле времени для пускового конденсатора на тини13 не получается  
Вложения
Тип файла: zip 123.zip (33.0 Кб, 1 просмотров)
Тип файла: zip timerelay.zip (11.9 Кб, 1 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2016, 08:08
Ответы с готовыми решениями:

Холодильник Daewoo FR291, Номинал пускового конденсатора
Сгорел пусковой конденсатор на компрессоре холодильника Daewoo FR291. На компрессоре нет бумажки с...

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

Реле времени
Помогите спроектировать простое цифровое устройство &quot;Реле времени от 0 до 9 секунд с дискретностью...

Реле времени
Нужна помощь в создании реле времени. Использую микроконтроллер ESP 12F (NodeMCU). Нужно что бы...

Attiny2313. Реле времени
Здравствуйте. Подскажите как реализовать выключение после нажатия кнопки TIMER, мк должен отсчитать...

8
Витальич
1276 / 1183 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
30.03.2016, 10:42 2
У вас код выполнится один раз и далее МК уйдет в пустой цикл.
Вот лучше:
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
while(1){
 if (PINB & (1 << PB0))
    {
        PORTB |= (1 << PB4);
        _delay_ms(200);
        PORTB &= ~(1 << PB4);
        _delay_ms(100);
    }
    if (PINB & (1 << PB1))
    {
        PORTB |= (1 << PB4);
        _delay_ms(300);
        PORTB &= ~(1 << PB4);
        _delay_ms(100);
    }
    if (PINB & (1 << PB2))
    {
        PORTB |= (1 << PB4);
        _delay_ms(500);
        PORTB &= ~(1 << PB4);
        _delay_ms(100);
    }
    _delay_ms(100);
    PORTB |= (1 << PB4);
    _delay_ms(100);
    PORTB |= (1 << PB3);
    }
0
ValeryS
Модератор
7908 / 5884 / 774
Регистрация: 14.02.2011
Сообщений: 20,238
Завершенные тесты: 1
30.03.2016, 11:02 3
Цитата Сообщение от ilya38 Посмотреть сообщение
на выводах мк при входе в условия на вольтметре который на ноге PB4 1.5в, а не 5
это потому что нет гасящего резистора, падение напряжения на диоде
в реальности без резистора что то сгорит, или светодиод или вывод МК

Добавлено через 1 минуту
Цитата Сообщение от Витальич Посмотреть сообщение
У вас код выполнится один раз и далее МК уйдет в пустой цикл.
так это и требуется
иначе релюха будет щелкать
0
ilya38
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 5
30.03.2016, 11:03  [ТС] 4
Не пойму почему он лучше программа должна отработать в интервале от 1 до Максимального выставленного времени (11с), затем врубить реле и уйти в нирвану не реагируя ни на что... до следующего момента включения МК. Подскажите лучше по Протеусу, нормально ли такое поведение на выводах????
0
30.03.2016, 11:03
ValeryS
Модератор
7908 / 5884 / 774
Регистрация: 14.02.2011
Сообщений: 20,238
Завершенные тесты: 1
30.03.2016, 11:07 5
Цитата Сообщение от ilya38 Посмотреть сообщение
Далее по циклу смотрю если прижата 1ая жду 2 с., далее 2ая жду ещё 3 с., 3я жду 5 с. тем самым могу получить разные интервалы: 6, 8, 9, 3 и тд.... в конце (меня это устраивает)
сложно чем простой двоичный код не устраивает?
C
1
2
3
4
unsigned char tm=PINB&0x07;
tm*=100;
tm+=100;
_delay_ms(tm);
в реальности нужно вместо кнопок свитчера поставить, иначе просто не успеешь нажать
0
ilya38
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 5
30.03.2016, 11:11  [ТС] 6
2. в самом конце когда программа уже в бесконечном цикле должно гореть два светодиода в итоге напряжение становится 0,76
Ну не может же быть 0.76 в я и резистр ставил в итоге убрал потом светодиод не горит хоть тресни, если у кого есть возможность глянуть симуляцию буду признателен...

Добавлено через 3 минуты
Я и хочу джамперы поставить написано так как пока могу, delay_ms не работает с переменной у меня, поэтому так, успевать нажимать не надо они для подстройки под время раскрутки двигателя (при низкой напруге будут требоваться редко)
0
ValeryS
Модератор
7908 / 5884 / 774
Регистрация: 14.02.2011
Сообщений: 20,238
Завершенные тесты: 1
30.03.2016, 11:12 7
Цитата Сообщение от ilya38 Посмотреть сообщение
если у кого есть возможность глянуть симуляцию буду признателен...
вечерком взгляну, ежли раньше никто не отпишется
0
ilya38
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 5
30.03.2016, 11:14  [ТС] 8
Спасибо буду ждать!
0
ilya38
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 5
01.04.2016, 05:27  [ТС] 9
Ребята гляньте прошу кто нибудь, впереди выходные к следующей неделе надо сделать.... Развейте сомнения(
0
01.04.2016, 05:27
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2016, 05:27

Задача на реле времени
Работаю в ОВиК, поступила задча собрать из имеющегося, помогите, как можно решить задачу эту? ...

Не работает реле времени NM4021
Купил набор от МастерКит: NM4021 - Таймер 1...99 минут на микроконтроллере. Все собрал , ничего не...

Как обойти реле времени?
Ситуация: старый немецкий станок. На нем 4 привода. Кнопкой пуск включаются все 4 , но из них 1...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.