Форум программистов, компьютерный форум, киберфорум
Лазеры, свет, LED
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
8 / 5 / 3
Регистрация: 11.04.2015
Сообщений: 413
1

Подключение семисегментного индикатора к arduino uno

29.03.2018, 19:42. Просмотров 4509. Ответов 25
Метки нет (Все метки)

Всем доброго времени суток!
Я новичок в деле программирования микроконтроллеров, поэтому прошу быть снисходительными
Суть вот в чём:
взял я микроконтроллер arduino uno r3 и имеющийся дома семисегментный индикатор с общим анодом; долго мучился с методом его подключения и управления, но, всё же, смоглось (подключал перемычками через макетную плату без единого резистора (ибо, объективно, они нафиг не нужны (в электротехнике я немного понимаю)). Но тут я узнал про подводные камни - я смог зажечь лишь точку в правом нижнем углу (и при 3.3В и при 5В питания анода); ни один другой сегмент не загорелся при смене пина выхода в программе. Причина (найдено опытным путём методом подключения "кроны" (и других батареек) к аноду и каждому сегменту) в том, что выходных 5 вольт не хватает для питания основных сегментов (опыт: хватает 7 вольт), а больше выжать из контроллера не выйдет (USB 2, видите ли). Я пробовал воткнуть в цепь простой усилитель в виде батарейки - ставил последовательно для увеличения напряжения и параллельно для увеличения тока (с диодом в цепи, чтобы ток не пошёл на контроллер), но увы - не менялось совершенно ничего (ни яркость точки (опыт был с ёё участием), ни значения напряжения на тестере).
Подскажите, кому не трудно - что я делаю не так?
Большое спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2018, 19:42
Ответы с готовыми решениями:

Подключение семисегментного индикатора к разным портам
Здравствуйте! Подскажите, каким-способом можно организовать вывод данных на семисегментный...

подключение arduino uno
Всем привет! Недавно пришла (а точнее пришли) плата Ардуино Уно. Думал ща врублю ролики на ютубе по...

Подключение камеры ACME CA-03 к Arduino Uno
Здравствуйте. Я еще совсем чайник, поэтому ищу помощи здесь. Интересует подключение камеры ACME...

Подключение к Arduino Uno модуля SP8266 32m flash
Взял к ардуинке wi-fi модуль SP8266 32m flash, но тот оказался достаточно навороченым, гугл не...

25
Модератор
8199 / 6070 / 810
Регистрация: 14.02.2011
Сообщений: 21,057
29.03.2018, 19:49 2
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
ибо, объективно, они нафиг не нужны (в электротехнике я немного понимаю))
чейто не похоже
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
(опыт: хватает 7 вольт)
сжег ты их уже
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
Подскажите, кому не трудно - что я делаю не так?
изучить что такое светодиод
0
8 / 5 / 3
Регистрация: 11.04.2015
Сообщений: 413
29.03.2018, 19:59  [ТС] 3
ValeryS, Вы меня, конечно, извините (за сарказмы и др.), но:
1. светодиод и источник тока имеют внутренние сопротивления, что позволяет, зная, что ток в цепи не превысит максимально возможного значения, подключать светодиоды БЕЗ резисторов (моя самодельная гирлянда питается от 36В без единого резистора лет 5 уж и ничего не сгорело (удивительно, блин, как же это возможно-то)(если интересно, то амперметр включённый последовательно показывает ток в цепи, равный 0,04А (ух ты, как так-то без резисторов)).
2. что такое светодиод мне известно, вот только знание конструкции и принципов работы никак не помогает, знаете ли.
3. нет, я ничего не сжёг - проверено, перепроверено и перепроверяется после всякого опыта (для справки - в приборе, откуда я их вытащил они питались от 12 вольт (именно поэтому для меня загадка, почему точка светится, начиная с 3 вольт))
0
Модератор
8199 / 6070 / 810
Регистрация: 14.02.2011
Сообщений: 21,057
29.03.2018, 20:43 4
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
светодиод и источник тока имеют внутренние сопротивления,
какое сопротивление у PN перехода?
какое сопротивление у современной "кроны"?
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
что такое светодиод мне известно,
И ВАХ светодиода можете отобразить?
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
(ух ты, как так-то без резисторов)).
загадка
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
они питались от 12 вольт
прям так напрямую?
0
288 / 234 / 131
Регистрация: 08.04.2013
Сообщений: 1,025
29.03.2018, 21:02 5
имеющийся дома семисегментный индикатор имеет же какие то характеристики, хотим посмотреть тоже на чудо, работающее от 7-9 в. Можно и картинку. Вроде бы многие индикаторы работают от 2,7-3,3 v
0
8 / 5 / 3
Регистрация: 11.04.2015
Сообщений: 413
29.03.2018, 22:07  [ТС] 6
Цитата Сообщение от ValeryS Посмотреть сообщение
какое сопротивление у PN перехода?
какое сопротивление у современной "кроны"?
небольшое, но имеющееся и небольшое, но имеющееся;
Цитата Сообщение от ValeryS Посмотреть сообщение
И ВАХ светодиода можете отобразить?
Полагаю, ВАХ светодиода мало чем (если не ни чем) отличается от ВАХа стабилитрона, который я могу отобразить.
Цитата Сообщение от ValeryS Посмотреть сообщение
они питались от 12 вольт
Разумеется, нет - через микроконтроллер (неизвестный мне, к сожалению), с выходов которого снималось 12 вольт при поступающих от выпрямителя 15-и.

Добавлено через 3 минуты
Цитата Сообщение от marat_miaki Посмотреть сообщение
хотим посмотреть тоже на чудо, работающее от 7-9 в.
Извольте - KINGBRIGHT SA23-11SRWA - на сайте магазина "чип и дип" есть пдф-файл с распиновкой, которым я и руководствовался. (там написано: "напряжение питания - 5В" - БРЕД СОБАЧИЙ - от 5 вольт загорается лишь DP!)
Кстати говоря, я мог и неверно подключить - схем подключения 7-сегм. индикаторов с общим катодом - завались, а для общего анода всё объяснение заканчивается тем, что "там всё наоборот". Что наоборот-то??
Если не трудно, подскажите, пожалуйста.
0
8 / 5 / 3
Регистрация: 11.04.2015
Сообщений: 413
29.03.2018, 22:53  [ТС] 7
Вот так я подключил семисегментный светодиодный индикатор с ОБЩИМ АНОДОМ (резисторы я, всё же (фиг знает зачем, ведь с пинов UNO выходит 40-50 mA), включил в цепь - по 500 Ом в каждой линии).
Правильно ли это?
0
Миниатюры
Подключение семисегментного индикатора к arduino uno  
8 / 5 / 3
Регистрация: 11.04.2015
Сообщений: 413
29.03.2018, 23:07  [ТС] 8
А код управления такой (загорается, как и должен, DP, но элемент f не хотит, чего-то): (ВСЕ ЭЛЕМЕНТЫ ИНДИКАТОРА ЖИВЫЕ!!! Совершенно точно ни один не сгорел!)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int LED_segment_7 = 7;
int LED_segment_8 = 8;
int Wait_time = 1000;
void setup ()
{
pinMode (LED_segment_7, OUTPUT);  
pinMode (LED_segment_8, OUTPUT);
}
void loop ()
{
digitalWrite (LED_segment_7, LOW);
digitalWrite (LED_segment_8, LOW);
//delay (Wait_time);
//digitalWrite (LED_segment_7, HIGH);
//delay (Wait_time);
}
0
3 / 3 / 5
Регистрация: 09.08.2012
Сообщений: 223
30.03.2018, 02:24 9
Можете ещё поковырять мой код когда-то делал для 4-разрядного сегментного индикатора, только если будите делать часы обязательно лучше использовать микросхему DS1302 для точности хода.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//
// 4-разрядный 7-сегментный индикатор
//
 
long timer = 0;
long timerPrev = 0;
 
byte secondsOnes = 0;
byte secondsTens = 0;
byte minutesOnes = 0;
byte minutesTens = 0;
byte hoursOnes = 0;
byte hoursTens = 0;
 
// список выводов Arduino для подключения к разрядам a-g семисегментного индикатора
int segmentPins[8] = {9, 13, 4, 6, 7, 10, 3, 5};
 
// значения для вывода цифр 0-9
int numberSegments[10][8] = { 
  {0, 0, 0, 0, 0, 0, 1, 1}, //Цифра 0
  {1, 0, 0, 1, 1, 1, 1, 1}, //Цифра 1
  {0, 0, 1, 0, 0, 1, 0, 1}, //Цифра 2
  {0, 0, 0, 0, 1, 1, 0, 1}, //Цифра 3 
  {1, 0, 0, 1, 1, 0, 0, 1}, //Цифра 4 
  {0, 1, 0, 0, 1, 0, 0, 1}, //Цифра 5 
  {0, 1, 0, 0, 0, 0, 0, 1}, //Цифра 6 
  {0, 0, 0, 1, 1, 1, 1, 1}, //Цифра 7
  {0, 0, 0, 0, 0, 0, 0, 1}, //Цифра 8 
  {0, 0, 0, 0, 1, 0, 0, 1}  //Цифра 9 
};
 
// Пины разрядов цифер
int catodPins[4] = {2, 8, 11, 12};
 
 
void setup() 
{
  // Сконфигурировать контакты как выходы
  for(int i=0; i<8; i++) {
    pinMode(segmentPins[i],OUTPUT);
  }
  for(int i=0 ;i<4; i++) {
    pinMode(catodPins[i],OUTPUT);
    digitalWrite(catodPins[i],HIGH);
  }
}
 
void loop()
{
  clockTimer();
  showNumber(0, minutesTens);
  showNumber(1, minutesOnes);
  showNumber(2, secondsTens);
  showNumber(3, secondsOnes);
}
 
void clockTimer() 
{
  timer = millis();
  
  if(timer - timerPrev >= 1000) 
  {
    secondsOnes+=1;
 
    //Секунды
    if(secondsOnes==10){  // 10 сек.
      secondsOnes=0;
      secondsTens+=1;
    }
    if(secondsTens==6){  // 60 сек.
      secondsTens=0;
      minutesOnes+=1;
    }
 
    //минуты
    if(minutesOnes==10){  // 10 мин.
      minutesOnes=0;
      minutesTens+=1;
    }
    if(minutesTens==6){  // 60 мин.
      minutesTens=0;
      hoursOnes+=1;
    }
    
    //часы
    if(hoursOnes==10){  // 10 час.
      hoursOnes=0;
      hoursTens+=1;
    }
    if(hoursTens==2){  // 20 час.
      if(hoursOnes==4){ // 24 час.
        hoursTens=0;
        hoursOnes=0;
        // + 1 day
      }   
    }
    timerPrev=timer;
  }
}
 
void showNumber(int numNumber, int Number) 
{
 for(int i=0; i<4; i++) 
  {
    for(int k=0; k<8; k++)
    {
      digitalWrite(segmentPins[k], ((numberSegments[Number][k]) ? LOW : HIGH)); 
    }
    
    if(!digitalRead(catodPins[numNumber]) == HIGH) 
    {
      digitalWrite(catodPins[numNumber], HIGH);  
    }
    else {
      digitalWrite(catodPins[numNumber], LOW);
    }
  }
}
0
Модератор
8199 / 6070 / 810
Регистрация: 14.02.2011
Сообщений: 21,057
30.03.2018, 06:31 10
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
небольшое, но имеющееся
поконкретней, пожалуйста
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
ВАХ светодиода мало чем (если не ни чем) отличается от ВАХа стабилитрона,
О как
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
напряжение питания - 5В" - БРЕД СОБАЧИЙ
аргументировано

Добавлено через 8 минут
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
"напряжение питания - 5В" - БРЕД СОБАЧИЙ - от 5 вольт загорается лишь DP!)
нет там такого
есть
Максимальное прямое напряжение,В 2.5
Максимальное обратное напряжение,В 5
где про питание?
https://www.chipdip.ru/product/sa23-11srwa
повторюсь
Цитата Сообщение от ValeryS Посмотреть сообщение
изучить что такое светодиод
0
288 / 234 / 131
Регистрация: 08.04.2013
Сообщений: 1,025
30.03.2018, 07:51 11
3 и 8 на массу или +, а у тебя там что ?

Добавлено через 6 минут
3 и 8 ножки индикатора на массу или + в зависимости Анодный или Катодный
0
Модератор
8199 / 6070 / 810
Регистрация: 14.02.2011
Сообщений: 21,057
30.03.2018, 08:05 12
Цитата Сообщение от marat_miaki Посмотреть сообщение
3 и 8 на массу или +
это для SA23-12 а у него SA23-11
там 1,5
https://static.chipdip.ru/lib/007/DOC003007387.pdf
первая страница
0
288 / 234 / 131
Регистрация: 08.04.2013
Сообщений: 1,025
30.03.2018, 08:42 13
Ошибочка, смотрел на схему индикатора с картинки 7 поста, а там то SA23-12 изображен
0
8 / 5 / 3
Регистрация: 11.04.2015
Сообщений: 413
30.03.2018, 15:48  [ТС] 14
Цитата Сообщение от ValeryS Посмотреть сообщение
поконкретней, пожалуйста
в зависимости от типа светодиода, где-то, 5-10 мОм (при сопротивлении кроны, запитывающей схему гирлянды, в, примерно, 40 Ом, 9/(40+n*0.01) ампера не будет являться убийственным током (особенно, если крона будет немного разряжена))
Цитата Сообщение от ValeryS Посмотреть сообщение
О как
я не понял что вы хотел сказать этим смайлом, но (мало ли вы не знаете, всякое бывает) стабилитрон - это такой диод, ВАХ которого, как я уже говорил, по виду ни чем не отличается от ВАХа светодиода (разве что, значениями тока насыщения).

УВАЖАЕМЫЙ модератор сего форума, убедительно прошу прекратить придираться к моим словам - под "напряжением питания" я понимаю такое значение напряжения и направление тока, при котором эффективная РАБОТА светодиода (подача обратного напряжения не даст света и, вероятно, пробьёт его - неэффективная работа; подача слишком низкого напряжения не даст света - неэффективная работа (даже не работа, а, по сути, простая растрата энергии) и так далее). Также прошу не спорить по поводу тех вещей, КОТОРЫЕ Я ДЕЛАЛ СВОИМИ РУЧКАМИ, получая тот или иной результат -
Цитата Сообщение от ValeryS Посмотреть сообщение
аргументировано
Понимаете ли, схема просто не работает и всё - либо не хватает напряжения (что показывают опыты), либо я неверно подключил выводы индикатора к пинам микроконтроллера (не могу проверить). Я прошу вас помочь выявить проблему, а не издеваться и придираться к словам. Если можете помочь - помогите, пожалуйста; не можете - настоятельно попросил бы перестать писать сообщения, содержащие насмешки. Спасибо.

Добавлено через 7 минут
marat_miaki, так правильно собрано или нет? Если да, то просто ничего не работает (кроме точки) и всё тут. Что можете посоветовать по этому поводу?
0
Модератор
8199 / 6070 / 810
Регистрация: 14.02.2011
Сообщений: 21,057
30.03.2018, 16:50 15
Лучший ответ Сообщение было отмечено Ромуальд_7 как решение

Решение

Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
где-то, 5-10 мОм
А поконкретней?
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
стабилитрон - это такой диод, ВАХ которого, как я уже говорил, по виду ни чем не отличается от ВАХа светодиода
ну и где там сопротивление? можно показать?
ладно насчет знаний все понятно
теперь по теме

Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
Я прошу вас помочь выявить проблему
проблема в том что не читали даташит
в каждом сегменте 4 светодиода включенные последовательно, не считая пресловутой точки там два
на каждом диоде ,согласно опять же даташиту, падает 2.5 вольта итого на сегмент нужно напряжение более 8 вольт на точку более 4
значит к ардуине просто так не подключишь, нужен транзисторный ключ
например вот так
Подключение семисегментного индикатора к arduino uno


резистор R2 для сегмента (12-8)/0.02=200 Ом
для точки (12-4)/0.02=400 Ом
1
288 / 234 / 131
Регистрация: 08.04.2013
Сообщений: 1,025
30.03.2018, 17:19 16
проверить можно, есть выход 3,3 v у ардуино, подключить к usb, и проверять меняя фазировку + и - не зная какой Анодный или Катодный индикатор, 1 ножка на минус, 2-ую ножку 3,3 в, загорелся - хорошо нет меняем фазировку, проверяем

Добавлено через 6 минут
главное не замкнуть 1 и 5

Добавлено через 13 минут
резистор 200 ом наверное все таки стоит использовать

Добавлено через 6 минут
обязательно 200 ом использовать!!!
1
8 / 5 / 3
Регистрация: 11.04.2015
Сообщений: 413
30.03.2018, 17:33  [ТС] 17
Цитата Сообщение от ValeryS Посмотреть сообщение
А поконкретней?
Зависит от конкретного светодиода; точнее не знаю.
Цитата Сообщение от ValeryS Посмотреть сообщение
ну и где там сопротивление? можно показать?
ладно насчет знаний все понятно
Сопротивление считается как предел частного от деления приращения напряжения и приращения ток в окрестности значений "рабочей точки" на ВАХе при d(Iрт) ->0 (Если брать геометрию графика ВАХа). А вот уже более подробно я не в курсе.
Что касается электроники (не путать с электротехникой), то тут я профан пока ещё.
Не затруднит ли вас рассказать, что такое "даташит"?
И правильно ли я понимаю, что на рисунке слева изображён микроконтроллер, открывающий путь току питания отдельно взятого сегмента индикатора сторонним источником? Если да, то, вероятно, неразумно снабжать каждый вывод таким ключом (Это ж 8 транзисторов ж). И, собственно, какой транзистор порекомендуете? или как его рассчитать?
И кстати, Если сегменты питаются напругой от 8 вольт, то какого ж ..... в описании индикатора написано 2,5В? умножали бы на 4 светодиода сами, да писали: "рекомендуемое прямое напряжение сегмента - 10В"; для чего такие сложности.

Добавлено через 3 минуты
Цитата Сообщение от marat_miaki Посмотреть сообщение
обязательно 200 ом использовать!!!
Я уже использую на 510 Ом (по факту, 490..500 они), но, учитывая, что с выхода 3.3 выходит не более 40 мА, я по-прежнему не вижу смысла в резисторах.
0
Модератор
8199 / 6070 / 810
Регистрация: 14.02.2011
Сообщений: 21,057
30.03.2018, 17:57 18
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
что с выхода 3.3 выходит не более 40 мА,
выход может выдержать ток не более 40 мА, а не выдает
ужель закоротить вывод на землю, он просто сгорит и никаких там 40 мА не будет
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
что на рисунке слева изображён микроконтроллер, открывающий путь току питания отдельно взятого сегмента индикатора сторонним источником?
микроконтроллер управляет транзисторным ключом который и включает сегмент
если бы выходы атмеги могли бы работать в режиме ОК(Открытый Коллектор) то можно было бы обойтись без ключа а так 8 транзисторов или брать не такой огромный индикатор
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
Сопротивление считается как предел частного от деления приращения напряжения и приращения ток в окрестности значений "рабочей точки"
так вот в идеальном диоде он равен 0 в реальном ненамного больше
Цитата Сообщение от Ромуальд_7 Посмотреть сообщение
Не затруднит ли вас рассказать, что такое "даташит"?
описание детали от производителя
вот конкретно для индикатора
https://static.chipdip.ru/lib/007/DOC003007387.pdf
1
8 / 5 / 3
Регистрация: 11.04.2015
Сообщений: 413
30.03.2018, 18:30  [ТС] 19
ValeryS, Спасибо за ответы!
А если я на макетной плате просто поставлю диод после входа с 3.3В (чтобы не питать сам процессор) и поставлю последовательно с ним батарейку (на 4,5В, допустим), то, выходит, что сегмент не будет гореть, пока плата не выдаст на него свои добавочные 3.3В?
0
Миниатюры
Подключение семисегментного индикатора к arduino uno  
288 / 234 / 131
Регистрация: 08.04.2013
Сообщений: 1,025
30.03.2018, 19:27 20
http://wiki.amperka.ru/%D0%BA%... 0%BE%D0%B4
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2018, 19:27

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

Декодеры для семисегментного индикатора
подключил семисегментный индикатор к микроконтроллеру (8051) через декодер 4511, но опущены...

Преобразовать две тетрады в коды семисегментного индикатора
помогите пожалуйста?? Преобразовать две тетрады каждого элемента массива Х, длиной М,...

Нарисовать схему, которая формирует для семисегментного индикатора сигнал управления сегментом
С элементов монобазиса И-НЕ нарисовать схему, которая формирует для семисегментного индикатора...

Подключение к Arduino UNO 4-х вентиляторов + датчик воды + датчик грунта
Добрый день. Прошу помочь. Требуется подключить к Arduino UNO 4 вентилятора (куллер комп....


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

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

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