cd4051(к561кп2) - не получается..
- Войдите на сайт для отправки комментариев
Голову ломаю, монтаж проверяю, видимо не до конца я вьехал как оно работает..
Схема такая: http://img-fotki.yandex.ru/get/4610/26688175.0/0_6c270_d99b2985_orig
только вместо переменных резисторов стоят постоянные 10Ком на GND, и на них я через 100Ком подаю 5В (эти же, которыми питается ардуина и мультиплексоры).
Читаю так:
//читаем расширения аналоговых входов void read_inputs() { //настройка управляющих пинов К561ЛА2 pinMode ( 10 , OUTPUT ) ; // s0 выход pinMode ( 9 , OUTPUT ) ; // s1 выход pinMode ( 8 , OUTPUT ) ; // s2 выход int r0 = 0 ; // значение выбрать вывод на 4051 (S0) int r1 = 0 ; // значение выбрать вывод на 4051 (S1) int r2 = 0 ; // значение выбрать вывод на 4051 (S2) //int row = 0 ; // storeing the bin code int count = 0 ; // щётчик //int bin [ ] = { 000 , 1 , 10 , 11 , 100 , 101 , 110 , 111 } ; // Массив двоичных числ определяющих номер выбранного входа/выхода микросхемы 4051, с 1 по 8. while (digitalRead(KEY_BACK) != LOW) { lcd.clear(); lcd.setCursor(0,0); for ( count = 0 ; count <= 7 ; count ++ ){ // цикл перебора элементов массива с 1 по 8 //row = bin [ count ] ; //r0 = row & 0x01 ; //r1 = ( row >> 1 ) & 0x01 ; // //r2 = ( row >> 2 ) & 0x01 ; // r0 = bitRead(count,0); r1 = bitRead(count,1); r2 = bitRead(count,2); digitalWrite ( 10 , r0 ) ; digitalWrite ( 9 , r1 ) ; digitalWrite ( 8 , r2 ) ; delay(1); lcd.print(analogRead(0)/8); lcd.print("/"); } lcd.setCursor(0,2); for ( count = 0 ; count <= 7 ; count ++ ){ // цикл перебора элементов массива с 1 по 8 r0 = bitRead(count,0); r1 = bitRead(count,1); r2 = bitRead(count,2); digitalWrite ( 10 , r0 ) ; digitalWrite ( 9 , r1 ) ; digitalWrite ( 8 , r2 ) ; delay(1); lcd.print(analogRead(1)/8); lcd.print("/"); } delay(100); } }
Проблема такая.. Даю сигнал на X0 любой микросхемы - сигнал появляется на 0 и 1 "месте", подаю на X1,X2 - появляется и исчезает, когда захочет.. Примерно то же и с остальными - либо "на себя и следующий" отображает значения, либо они прыгают аки сумасшедшие пока держу рукой и пропадают (или нет).
Скажите - программа правильно написана? Чтобы я успокоился с пониманием процесса и пошел копать монтаж. Я так понимаю: пинами s0-s2 мы устанавливам, какую ногу будем читать, после чего она передается на соответствующий аналоговый пин ардуины, который мы и читаем. Так же?
Что-то мне подсказывает, что в вашей схеме нет раздельной адресации микросхем, в результате они "говорят", перебивая друг друга. Сравните эту схему подключения со своей:
Микросхемы здесь, конечно, немного другие, но думаю, что принцип адресации - что у этих, что у ваших - должен быть идентичным. Взято отсюда.
ЗЫ: посмотрел еще раз. A1...3 - это у вас адресные линии для выбора просматриваемого канала? тогда они не подойдут для выбора схемы. Вам, видимо, надо разобраться с заземленными Ex - один из этих выводов скорее всего стробовый (надо полагать Es). Подавая на него сигнал (видимо LOW) вы и будете выбирать, какой из чипов активен.
В схеме что я использую у микросхем один выход. Управляющие (1,2,3) заведены так же но без DD3, а выходы (Y1, Y2, по одном на микросхему) заведены на разные аналоговые порты. Вроде как микросхемы должны одновременно переключаться на одни и те же входы, но "пробрасывать" сигнал на разные аналоговые порты..
ЗЫ: посмотрел еще раз. A1...3 - это у вас адресные линии для выбора просматриваемого канала? тогда они не подойдут для выбора схемы. Вам, видимо, надо разобраться с заземленными Ex - один из этих выводов скорее всего стробовый (надо полагать Es). Подавая на него сигнал (видимо LOW) вы и будете выбирать, какой из чипов активен.
Так выход с чипов идут на разные аналоговые входы, должно же быть без разницы какой чип активен? Вроде микросхема - полный аналог CD4051, а про него пишут так:
Вечером попробую одну микросхему..
Логично.
Кстати, как понимать комментарий:
//настройка управляющих пинов К561ЛА2
Кстати, как понимать комментарий:
пины ардуино (в моем случае MCU-40), которые будут управлять сдвигом и фиксацией (я правильно понимаю?) всех мультиплексоров (одновременно). Кстати, чтобы использовать эту схему как выход (ШИМ), достаточно на аналоговые выходы атмеги подать сигнал нужный или надо еще дополнительно переключать мультиплексоры в другой режим?
Логично
тогда, видимо, проблема в монтаже или еще в каких то мелочах.. Буду смотреть вечерком.
Ларчик просто открывался. У меня ж самодельная ардуина, сразу точно поленился выявить сопоставление пинов. Пробежался через два - три, заполнил непроверенные по линейке.. Несовпаление пинов шло. Выяснилось тольк опри пошаговой отладке со светодиодами, выводом на дисплей шагов и т.д. :)
Спасибо - все работает!