Релейный модуль ГрандМагистр РМ-4 распиновка

Нет ответов
sorry_one
Offline
Зарегистрирован: 11.02.2012

Выкладываю, может кому-то пригодится )

Микросхемы на плате - 74HC595 и ULN2003.

Стоимость такого блока в районе 400р.

Сам собираюсь светом управлять через него, минусом является необходимость  2х напряжений, хотя это решается при помощи LM7805.

Продублирую текстом, на случай пропадания картинки:

Если смотреть на модуль со стороны контактной группы, положив релюхами вверх, слева направо сверху:

Питание реле +12в, питание микросхем +5в, SH_CP (CLK), снизу: GND (земля), ST_CP(latch), DS (data).

// Скетч Arduino для проверки работы релейного модуля ГрандМагистр РМ-4
// Команды 1,2,3,4 - включают соответствующие реле, а q,w,e,r - отключают.
// Достаточно подключиться через любой терминал к ком порту, к которому подключен Ваш контроллер.

int latchPin = 8;              //Pin подключенный к ST_CP микросхемы 74HC595
int clockPin = 12;             //Pin подключенный к SH_CP микросхемы 74HC595
int dataPin = 11;              //Pin подключенный к DS микросхемы 74HC595
byte state = B00000000;  // Байт для хранения состояния всех реле, используются нижние 4 бита

void setup()
{
  Serial.begin(9600);           // Устанавливаем соединение через сериальный (COM) порт:
 
  pinMode(latchPin, OUTPUT);    // Настраиваем пины как выходные:
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);

  digitalWrite(latchPin, LOW);   // на время записи "выключаем задвижку"
  shiftOut(dataPin, clockPin, MSBFIRST, state );   // устанавливаем первоначальное состояние реле  путем побитовой отправки нашего байта
  digitalWrite(latchPin, HIGH);
}

void loop() {
  char Ch;
   
  // Проверяем, есть ли данные от компьютера:
  if (Serial.available()) {
    // читаем байт из буфера (значение будет в промежутке от 0 до 255):
    Ch = Serial.read();
   
    switch (Ch) {      // Включаем или выключаем соответствующие биты логическими командами
    case  '1':
      state = state | B00000001;     // предыдущее состояние "or" новое значение
      break;
    case  '2':
      state = state | B00000010;
      break;
      case '3':
      state = state | B00000100;
      break; 
      case '4':
      state = state | B00001000;
      break;
      case 'q':
      state = state & B11111110;  // предыдущее состояние "and" новое значение 
      break;
      case 'w':
      state = state & B11111101;
      break;
      case 'e':
      state = state & B11111011;
      break;
      case 'r':
      state = state & B11110111;
      break;
     }
    digitalWrite(latchPin, LOW);                          
    shiftOut(dataPin, clockPin, MSBFIRST, state);  // вывод текущего состояния всех реле
    digitalWrite(latchPin, HIGH);
  }
}

 

Всем удачи! )