Перейти к содержанию

Проект "светофор".


Lihouzov

Рекомендуемые сообщения

Для продолжения работы над проектом "Визуальное программирование" хочу создать практический пример "Светофор".

Отладку проекта буду производить в Proteus, логику работы описывать в Configuratore. Если в ходе проекта не будет хватать каких либо блоков, то я добавлю их по ходу работы.

План работы:

1. Описать логику работы "Светофора".

2. Выбрать микроконтроллер.

3. Создать проект в Proteus.

4. Создать программу в Configurator.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

А со "стандартной" логикой работы дорожных контролёров знакомы? Или очередная "мигалка" в учебных целях? :D

http://go.mail.ru/search?fm=1&q=%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D1%8B%D0%B9+%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%91%D1%80 :P

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А со "стандартной" логикой работы дорожных контролёров знакомы? Или очередная "мигалка" в учебных целях? :D

http://go.mail.ru/se...ожный контролёр :P

Только в учебных целях. Потому как логику светофора понимают примерно все.

Ждем разрешения начать что-ли? Ну так начинайте, разрешаю.

Спасибо за разрешение.

Последовательность переключения светофора: Красный -> Красный,желтый -> Зеленый -> Зеленый мигающий -> Желтый.

Для реализации данной последовательности создал конфигурацию:

%D0%A1%D0%B2%D0%B5%D1%82%D0%BE%D1%84%D0%BE%D1%80.jpeg

Для реализации данной схемы у меня нет блока "Универсальный счетчик".

В скором времени я его добавлю....

Изменено пользователем Lihouzov
Ссылка на комментарий
Поделиться на другие сайты

Если в учебных целях.......то каких?

1. Изучить устр. и работу дорожного контралёра, НО:

А вот логику работы дорожного контролёра Вы сами не точно излагаете.....

2. Научиться работать с МК?

Тогда Sergey-Ufa уже дал Вам совет добро!

А по существу.

Состав:

1.Задающий генератор

2. Счётчик - дешифратор

3. Чуть логики.

Итого 4-5 микросхем по максимуму!

И на кой ляд тут МК?

Ссылка на комментарий
Поделиться на другие сайты

Знаете, Lihouzov, если графическое "программирование" и будет иметь успех, то уж точно не у людей способных составить схему с помощью логических блоков.

Изменено пользователем Microchip

Нет никакой заслуги тому, кто даёт золото, думая, что даёт камень (Будда)

Ссылка на комментарий
Поделиться на другие сайты

Если в учебных целях.......то каких?

Я просто хочу реализовать логику в виде FBD схемы и проверить ее в Proteuse.

Добавил новый блок "Универсальный счетчик".

Описание блока:

http://horizontautomatics.ru/FBD/index.php?help=timer_CTN

Вечером испытаю "Светофор".

Изменено пользователем Lihouzov
Ссылка на комментарий
Поделиться на другие сайты

Разве так не проще?

#include <tiny13.h>
#include <delay.h>
PORTB=0x00; //Порты В 1, 2 и 3 на светодиоды
DDRB=0x07;
void main(void)
   {
   while
    {
    portb.0=1;
    delay_ms(5000);
    portb.0=0;
    delay_ms(5000);
    portb.1=1;
    delay_ms(5000);
    portb.1=0;
    delay_ms(5000);
    portb.2=1;
    delay_ms(5000);
    portb.2=0;
    delay_ms(5000);
    }
   }

Ссылка на комментарий
Поделиться на другие сайты

Тут без мигания и вывода на дисплей. Лучше уж так:

#include <avr/io.h>
#include "lcd.h" //если в оригинале используются внешние библиотеки, то и тут можно

void _delay_s(unsigned int sec){
for(;sec!=0;sec--)_delay_ms(1000);
}
int main(){
DDRB = (1<<0 | 1<<1 | 1<<2);
lcd_init();
while(1){
 PORTB = (1<<0); //красный
 lcd_goto(0); lcd_str("Red");
 _delay_s(40);
 PORTB = (1<<0 | 1<<1); //красный + желтый
 lcd_goto(0); lcd_str("Red + Yellow");
 _delay_s(10);
 PORTB = (1<<2); //зеленый
 lcd_goto(0); lcd_str("Green");
 _delay_s(40);
 lcd_goto(0); lcd_str("Green (blink)");
 for(unsigned char i=0 ; i<5 ; i++){
  PORTB = (1<<2);
  _delay_s(1);
  PORTB = 0;
  _delay_s(1);
 }
 lcd_goto(0); lcd_str("Yellow");
 PORTB = (1<<1);
 _delay_s(10);
}
}

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Всех с новым годом!!!

COKPOWEHEU идея в том, чтобы дать некий наглядный конструктор "lego". Чтобы пользователь без единой строчки кода мог бы собрать какой либо проект, пусть даже простой. Кроме того, возможность добавлять собственные блоки позволяет добавить недостающие кирпичики конструктора. К примеру возможно добавить блок "светофор".

COKPOWEHEU какой размер прошивки у Вас получился?

Можно увидеть FBD приёмника IR-сигнала? Ну, или хотя бы излучателя.

На данный момент у меня нет блоков для работы с интерфейсами.

В перспективе я хочу добавить блоки для работы с протоколом Modbus.

http://horizontautomatics.ru/Runtime/AVR/index.php?id=avr_scada

Ссылка на комментарий
Поделиться на другие сайты

COKPOWEHEU какой размер прошивки у Вас получился?

560 байт. Кстати, там в исходнике небольшая ошибка, надо объявление переменной i перенести в начало main из цикла.

COKPOWEHEU идея в том, чтобы дать некий наглядный конструктор "lego". Чтобы пользователь без единой строчки кода мог бы собрать какой либо проект, пусть даже простой. Кроме того, возможность добавлять собственные блоки позволяет добавить недостающие кирпичики конструктора. К примеру возможно добавить блок "светофор".

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

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

Изменено пользователем COKPOWEHEU

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

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

Хочу упростить программу "светофор":

svetofor11.jpg

Есть идея, добавить новый блок, с целью заменить блоки "генератор" и "универсальный счетчик" единым. Если добавить блок "генератор пилообразного сигнала" то программа будет иметь следующий вид:

svetofor21.jpg

Блок будет работать следующим образом:

timer_gpila_3.png

Вероятно и размер прошивки в этом случае уменьшиться.

Ссылка на комментарий
Поделиться на другие сайты

  • 5 недель спустя...

Добавил новый блок "Вхождение в диапазон", теперь конфигурация несколько упрощается.

avr_svetofor_5.jpg

Проверка работы:

Размер прошивки 1094 байта.

Ссылка на комментарий
Поделиться на другие сайты

По скриншоту непонятно к чему присоединен "счетчик миллисекунд" и где задается диапазон "вхождения в диапазон" (по смыслу его может потребоваться изменить). Ну и, для обозначения этого вхождения наверное лучше использовать математический символ принадлежности. x∈[a..b]

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

По скриншоту непонятно к чему присоединен "счетчик миллисекунд" и где задается диапазон "вхождения в диапазон" (по смыслу его может потребоваться изменить). Ну и, для обозначения этого вхождения наверное лучше использовать математический символ принадлежности. x∈[a..b]

Спасибо за комментарий.

Счетчик миллисекунд ни к чему не присоединен. Данный блок настраивает внутренний таймер счетчик на генерирование прерывания в 1 миллисекунду и по прерыванию производит инкремент 4 байтной переменной. Все блоки которые используют реальное время опираются на данную переменную.

http://horizontautom...тчик милисекунд

У блока "вхождение в диапазон" диапазон задается через свойства блока. Наверное Вы правы понятней выражение "x∈[a..b]".

Ссылка на комментарий
Поделиться на другие сайты

Было бы неплохо сделать возможность последовательного выполнения блоков. В Labview для этого часто используется линия ошибок. Там блок выполняется, только если на него "приходят" сигналы со всех подключенных линий.

Также (возможно это уже реализовано, толком не следил за проектом) можно посмотреть на циклы (for, while), множественный выбор (switch case), условие (if), математическая вставка (чтобы не городить отдельные блоки если нужно посчитать сложную формулу).

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Я про специальную линию ошибок, чтобы задать последовательность выполнения блоков, даже если они не зависят друг от друга.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Cкорее всего, при 31,5 В на выходе драйвер не выдаст 300 мА.  Хотя, раз заявлено входное от 100 В, то при 230 В может что-то и получится. Но это уже за заявленными пределами работы.  Можно подключить проволочный резистор 100 Ом и померить напряжение, но лучше использовать как заявлено: в диапазоне 12-20 В.  
    • @MisterAnderson , напряжение на выходе светодиодного драйвера зависит от нагрузки, и определяется оно напряжением на светодиодах, а не самим драйвером. Светодиоды имеют характеристику близкую к стабилитрону, напряжение на них от тока зависит мало. Белые светодиоды имеют это напряжение примерно 3...3,4 В. Четыре последовательно включённых - примерно 12...14 В. На подключение таких "трёхвольтовых" белых светодиодов и расчитан ваш драйвер. Драйвер напряжением не управляет, есть только ограничение по максимальному, больше которого он выдать не может. Драйвер светодиодов стабилизирует ток. Ваш драйвер стабилизирует его на уровне 0,3 А. И выдать больше 20 В при этом не может. Измеренные вами 31,5 В на холостом ходу - это напряжение его внутреннего питания. Под нагрузкой 0,3 А напряжение на его выходе тут же "просядет", выше 20 В не поднимется. Мощность на одном трёхвольтовом 300-миллиамперном светодиоде будет (примерно, для светодиодов точность никогда особо не обеспечивают) 0,3 А * 3,3 В = 1 Вт. Трёхвольтовый белый светодиод на ток 300 мА - это и есть одноваттный светодиод. На четырёх будет 4 ватта. Следующие по напряжению в линейке белых осветительных светодиодов - шестивольтовые. У них в одном корпусе последовательно соединённые два светодиодных кристалла. Четыре таких светодиода, включённых последовательно, ваш драйвер не потянет, потому что им нужно минимум 6*4=24 В, а ваш драйвер может выдать не больше 20. Впрочем, можно бы было поставить вместо четырёх трёхвольтовых четыре шестивольтовых на 150 мА, две группы параллельно по два последовательно, но вряд ли справитесь с переделкой платы под светодиоды. Поэтому этот вариант вам и не предлагали. Проще, дешевле и с наименьшими затратами собственного времени, без переделки драйвера, платы и т.п., с которой вы точно не справитесь, поставить четыре одноваттных трёхвольтовых, на которые ваш драйвер расчитан. Тем более, что купить их - проблем нет. Именно этот оптимальнейший совет вам и дали. Всё вам правильно уже много людей много раз разными словами рассказали. Что вас ещё смущает?
    • Предусилители-корректоры на полевых транзисторах. Радио №9,   №10/2010.  А.Гурский.
    • Тоже самое в подсветках фирменных телеках даже 10 летней давности. Ток можно уменьшить на треть без потери качества легко. Потребитель должен потреблять и всё тут.
    • Естественно после 7 вольт то. Или аккум сам по себе хлам и садит в себя или ибп. Тут вариантов не много.
    • Попробуйте зарядить, а потом погонять ее  в полный цикл несколько раз. Это если акум нормальный а у ТС 100% давно не нормальный.
×
×
  • Создать...