Вход

Регистрация
Главная
 

 

Пиротехнические пульты, пиротехническое оборудование
и пиротехника
Pyro Alex RF 48
Open Pyro SFX 8 D
Open Pyro SFX 10/120
Pyro Man 200 M
Spets 150
Приём заказов на изготовление пиротехнических пультов
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Пиропульты - Электроника Форум » Электроника » Микроконтроллеры и ПЛИС » Аналоговый multiplexer/demultiplexer CD4051 и ARDUINO (ARDUINO)
Аналоговый multiplexer/demultiplexer CD4051 и ARDUINO
alexval2007Дата: Понедельник, 22.11.2010, 23:36 | Сообщение # 1
Электро воспламенитель
Группа: Администраторы
Сообщений: 662
Награды: 7
Репутация: 7
Статус: Offline
Аналоговый multiplexer/demultiplexer CD4051

Мультиплексор или демультиплексор позволит вам расширить количество входов и выходов на вашем Arduino.
Микросхема 4051 является 8-канальным аналоговым мультиплексор / демультиплексором, таким образом:
* Если вы используете 4051 как мультиплексор: Вы можете выбрать любой из 8 различных входов и прочитать его состояние в контролер.
* Если вы используете 4051 как демультиплексор вы можете выбрать любой из 8 различных выходов и записать туда нужное вам значение.

Кроме того, 4051 может работать с аналоговыми значения, в вашем Arduino, вы можете использовать аналоговые сигналы с напряжением 0-5В и подключить микросхему к аналоговым входам на Arduino.

Чтобы выбрать нужный вход микросхемы а также режимы работы чтение или запись, мы должны использовать три управляющих сигнала (S0, S1 и S2). Каждый из этих контактов должен быть подключён к одному из цифровых выходов Arduino. Каждый выход имеет номер (S0 = 1; S1 = 2; S2 = 4) и, если установить на одном из этих выходов высокий логический уровень то, число контактных представляет будет передано 4051.

Например:
* Если на входах микросхемы S0 и S1 установить лог"1" а на S2 лог"0" то выбран вход y3 микросхемы, это выглядит так(1 +2 +0 = 3).
* Если на входах микросхемы S0 и S2 установить лог"1" а на S1 лог"0" то выбран вход y5 микросхемы, это выглядит так(1 +0 +4 = 5).

Не возможно читать или записывать состояние больше, чем в одного вывода 4051 одновременно. Но вы можете читать и записывать состояние выводом микросхемы достаточно быстро. Не существует необходимости в задержке между выбором, чтением или записью состояния выводов 4051.

* Z ----- общий сигнал ввода или вывода (соединенный с входом/выходом Arduino)
* E ----- вход разрешения (активный лог "0") (подключен к земле (GND))
* Vee --- отрицательное напряжение питания (подключен к земле (GND))
* GND --- общий минус (0 V)
* S0-S2 - выбор входов (подключены к трем цифровым выводам Arduino)
* y0-Y7 - независимые входы/выходы
* Vcc --- положительное напряжение питания (5 В)


Левое изображение выше, например, как использовать 9 мультиплексор читать 64 аналоговых входов только с одним аналоговым входом Arduino.
Правое изображение выше пример того, как использовать два 4051 (один настроенный как демультиплексор и одного в качестве мультиплексора) в матрице 8x8 для проверки 64 кнопок или других цифровых входов только с одного цифрового входа на Arduino (со второй установки вы может просто две кнопки в то же время, в противном случае вы должны использовать первый (слева) установки).

Пример кода:

Code
        
// Пример для использования 4051 аналоговый мультиплексор / демультиплексор
// by david c.

int led = 13 ; // Настраиваем на 13 ноге светодиод
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.
           void setup ( ){ // ИНИЦИАЛИЗАЦИЯ
           pinMode ( 2 , OUTPUT ) ; // s0  выход
           pinMode ( 3 , OUTPUT ) ; // s1  выход
           pinMode ( 4 , OUTPUT ) ; // s2  выход
           digitalWrite ( led , HIGH ) ; //зажечь светодиод
           beginSerial ( 9600 ) ; // скорость обмена по UART
           }      

void loop ( ) {      
        for ( count = 0 ; count <= 7 ; count ++ ){ // цикл перебора элементов массива с 1 по 8
           row = bin [ count ] ;      
           r0 = row & 0x01 ;      
           r1 = ( row >> 1 ) & 0x01 ; //
           r2 = ( row >> 2 ) & 0x01 ; //
           digitalWrite ( 2 , r0 ) ;      
           digitalWrite ( 3 , r1 ) ;      
           digitalWrite ( 4 , r2 ) ;      
           Serial.println(bin[count]);      
             delay ( 1000 ) ;      
         }      
}
 
Пиропульты - Электроника Форум » Электроника » Микроконтроллеры и ПЛИС » Аналоговый multiplexer/demultiplexer CD4051 и ARDUINO (ARDUINO)
Страница 1 из 11
Поиск:


Rambler's Top100 Пиротехника, салюты, фейерверки. Яндекс цитирования
www.alexval2007.ucoz.ru © 2008