реклама на сайте
подробности

 
 
> Управление с порта µC.
namelos
сообщение Sep 18 2007, 15:16
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Доброе время суток всем. Глупый вопрос, но не могу найти причину сам. Пытаюсь управлять с ножки контроллера АTmega32 подсветкой LCD с помощью ULN2003, но не получилось. Сообразил, что напряжение насыщения на одном драйвере ULN 1.2V, в итоге получаю 5V-1.2V=3.8 маловато для подсветки (min 4V). Пока искал причину, выявил, что когда задаю выход на ножке и подсоединяю на нее резистор 2.7к, то падает напряжение на ножке с 5V до 0.34V при подключенном резисторе на массу. В чем причина такого падения, ведь согласно даташиту с одной ножки можно брать 20мА. И вообще какие марки транзисторов для управления подсветкой(300mA), реле(100mA) лучше использовать? Заранее спасибо.

Сообщение отредактировал namelos - Sep 18 2007, 15:28
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
defunct
сообщение Sep 18 2007, 15:28
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(namelos @ Sep 18 2007, 18:16) *
Пока искал причину, выявил, что когда задаю выход на ножке и подсоединяю на нее резистор 2.7к, то падает напряжение на ножке с 5V до 0.34V при подключенном резисторе. В чем причина такого падения

Одно из двух либо вы забыли настроить порт на вывод (регистр DDR) либо уже спалили порт.

Цитата
И вообще какие марки транзисторов для управления подсветкой(300mA), реле(100mA) лучше использовать?

ULN2003 - отличный выбор, в пике тянет автомобильную лампочку 12V/5A
Go to the top of the page
 
+Quote Post
namelos
сообщение Sep 18 2007, 15:46
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Цитата(defunct @ Sep 18 2007, 19:28) *
Одно из двух либо вы забыли настроить порт на вывод (регистр DDR) либо уже спалили порт.
ULN2003 - отличный выбор, в пике тянет автомобильную лампочку 12V/5A

С зтого же порта я управляю LCD, a последней выходом решил было управлять подсветкой, да подсоединил поначалу напрямую к ULN. Не сработало.... По даташиту надо было Iin=1mA Uin=3,8V. Вот теперь не знаю, что спалил и как. Странно, но LCD то работает, не мог же я только один выход порта спалить, да и на ULN2003 есть внутренний резистор 2,7к.

Сообщение отредактировал namelos - Sep 18 2007, 15:46
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Sep 18 2007, 15:50
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(namelos @ Sep 18 2007, 19:16) *
И вообще какие марки транзисторов для управления подсветкой(300mA), реле(100mA) лучше использовать? Заранее спасибо.

Посмотрите в сторону MOSFET транзисторов, например IRLL3303. У IR большой выбор подходящих. И ток от вывода не потребляют вообще....
Go to the top of the page
 
+Quote Post
namelos
сообщение Sep 18 2007, 16:14
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Отсоединяю резистор от массы, меряю 5V. Подсоединяю к массе, напряжение падает до 0.3 и это уже 2 контроллер. Эхе-хе...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 18 2007, 16:19
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(namelos @ Sep 18 2007, 19:14) *
Отсоединяю резистор от массы, меряю 5V. Подсоединяю к массе, напряжение падает до 0.3 и это уже 2 контроллер. Эхе-хе...

НЕ ВЕРЮ! (с)
Какая ножка, как управляете?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
namelos
сообщение Sep 18 2007, 16:31
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Убрал весь код в main.c, оставил только
Код
#define LCD_PORT             D
    #define LCD_BACKLIGHT       PD7
    #define LCD_RS             PD6
    #define LCD_RW                PD4
    #define LCD_E               PD5
    /* The data bits have to be in ascending order. */
    #define LCD_D4             PD0
    #define LCD_D5             PD1
    #define LCD_D6             PD2
    #define LCD_D7             PD3
    #define LCD_DATABITS \
    (_BV(LCD_D4) | _BV(LCD_D5) | _BV(LCD_D6) | _BV(LCD_D7))
    
    #define LCD_PORTOUT            PORT(LCD_PORT)
    #define LCD_PORTIN             PIN(LCD_PORT)
    #define LCD_DDR                DDR(LCD_PORT)

LCD_DDR = _BV(LCD_RS) | _BV(LCD_RW) | _BV(LCD_E) | LCD_DATABITS | LCD_BACKLIGHT;
LCD_PORTOUT |= _BV(LCD_BACKLIGHT); //switch on backlight


Сообщение отредактировал namelos - Sep 18 2007, 16:41
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 18 2007, 16:51
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(namelos @ Sep 18 2007, 18:46) *
не мог же я только один выход порта спалить, да и на ULN2003 есть внутренний резистор 2,7к.

Попробуйте другие выводы.
И что такое LCD_DDR? LCD может работать на Pull-up'ах портов, а вот ULN полноценно включить Pull-up'ом врятли получится.
Go to the top of the page
 
+Quote Post
namelos
сообщение Sep 18 2007, 17:00
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Цитата
И что такое LCD_DDR?

#define LCD_PORT D
#define LCD_DDR DDR(LCD_PORT) // DDRD

спасибо всем за ответы. Нашел ошибку
было
LCD_DDR = _BV(LCD_RS) | _BV(LCD_RW) | _BV(LCD_E) | LCD_DATABITS | LCD_BACKLIGHT;
стало
LCD_DDR = _BV(LCD_RS) | _BV(LCD_RW) | _BV(LCD_E) | LCD_DATABITS | _BV(LCD_BACKLIGHT);

smile.gif, целый день убил....

Сообщение отредактировал namelos - Sep 18 2007, 17:07
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016