|
Управление с порта µC. |
|
|
|
Sep 18 2007, 15:16
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Sep 18 2007, 15:28
|

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

|
Цитата(namelos @ Sep 18 2007, 18:16)  Пока искал причину, выявил, что когда задаю выход на ножке и подсоединяю на нее резистор 2.7к, то падает напряжение на ножке с 5V до 0.34V при подключенном резисторе. В чем причина такого падения Одно из двух либо вы забыли настроить порт на вывод (регистр DDR) либо уже спалили порт. Цитата И вообще какие марки транзисторов для управления подсветкой(300mA), реле(100mA) лучше использовать? ULN2003 - отличный выбор, в пике тянет автомобильную лампочку 12V/5A
|
|
|
|
|
Sep 18 2007, 15:46
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Sep 18 2007, 15:50
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(namelos @ Sep 18 2007, 19:16)  И вообще какие марки транзисторов для управления подсветкой(300mA), реле(100mA) лучше использовать? Заранее спасибо. Посмотрите в сторону MOSFET транзисторов, например IRLL3303. У IR большой выбор подходящих. И ток от вывода не потребляют вообще....
|
|
|
|
|
Sep 18 2007, 16:31
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Sep 18 2007, 17:00
|
Частый гость
 
Группа: Свой
Сообщений: 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);  , целый день убил....
Сообщение отредактировал namelos - Sep 18 2007, 17:07
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|