www.kn34pc.com

Форум на силистренските радиолюбители
Дата и час: 24 Окт 2017, 04:22

Часовете са според зоната UTC + 2 часа




Напиши нова тема Отговори на тема  [ 6 мнения ] 
Автор Съобщение
МнениеПубликувано на: 10 Сеп 2017, 12:06 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 741
Местоположение: Силистра
За управление на обхватни релета към трансивера с Arduino използвам PCF8574 - 8-Bit I/O Expander, който се управлява през I2C.
Активното изходно състояние за релетата (през буферите им) е "1". С наличните библиотеки из интернет управлението е лесно.

Интрегралните схеми са евтини и се намират.

Единствено не ми допада кратко "самопроизволно" (и неуправляемо от мен) състояние на изходите при включване: всички изходи кратко време са в "1" и ... релетата ми прещракват досадно (докато се изпълни boot в Arduino и заредя в setup "всички изходи: в "0").

Няма ли начин да го променя това начално установяване в "1" преди да е сработила програмата?
Не, че състоянието е "вредно" - нищо не се случва. Дори така ще гоня паяците из кутията (от звука) :crazy и ще "премахвам" окисите по контактите на релетата, но ми се ще да имам контрол над това.

При замяна с MCP23XXX такъв момент липсва, но ми се иска да употребя за случая и наличните ИС.
---
P.S.
И при силово изгасяне на цялото управление (Arduino, синтезаторен чип, PCF8574, дисплей ...) релетата се вдигат за кратко време ...
И при цялостно изгасяне на трансивера от мрежата с всичките му захранвания ефектът го има.


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 17 Сеп 2017, 09:19 
Offline

Регистриран на: 07 Апр 2009, 18:08
Мнения: 66
Местоположение: Шумен,Шипка
Ако подадеш захранване на PCF8574 няколко милисекунди по-късно ? Т.е след като тръгне Ардуиното ?


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 17 Сеп 2017, 11:03 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 741
Местоположение: Силистра
ramzes написа:
Ако подадеш захранване на PCF8574 няколко милисекунди по-късно ? Т.е след като тръгне Ардуиното ?

Нищо не се променя - изходите тръгват с "1" за малко време, после се изпълнява зададеното.
При захранен PCF8574 (само чипа, без никакво управление), на изводите има "1" и си стои.
---
Четем из .pdf-а:
Код за потвърждение:
8.4 Power-on reset
When power is applied to VDD, an internal Power-On Reset (POR) holds the PCF8574/74A in a reset condition until VDD has reached VPOR. At that point, the reset condition is released and the PCF8574/74A registers and I2C-bus/SMBus state machine will initialize to their default states of all I/Os to inputs with weak current source to VDD. Thereafter VDD must be lowered below VPOR and back up to the operation voltage for power-on reset cycle.

Ще да е затова през светодиода, свързан на извода без управление (предвиден за изход с товар към +5V), да ми тече нищожния входен ток и диодът леко да свети ...
Като дойде управление (след определено време) като изходи се зануляват и после нормално си се управляват:
Код за потвърждение:
void PortExpander_I2C::init_priv(){
   _portValues = 0x00;
   Wire.begin();
    digitalWriteAll(0x00);
}

---
С тестовото си свързане преди малко на 2 LED за изводите и "рехавото" им светене към GND си спомних как преди повече от година "бях изхвърлил" за приложение въпросната ИС:

- различава се максималния изходен ток за "1" и за "0":
Код за потвърждение:
IOL LOW-level output current: 10-25 mA
IOH HIGH-level output current: 300 uA

---
Няма да изхвърлям ИС :mail . Ще ги използвам в такива места, където ефектът не е определящ (напр. I2C конвертор за LCD 1602).


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 22 Сеп 2017, 10:47 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 741
Местоположение: Силистра
То и библиотеки не му на трябват на PCF8475, управлението е няколко реда:
Код за потвърждение:
#include <Wire.h>
void setup() {
  Wire.begin();
}
void loop() {
  pcf_write(0b00000001);
  delay(250);
  pcf_write(0b00000000);
  delay(250);
}
void pcf_write(uint8_t data) {
  Wire.beginTransmission(0x20);
  Wire.write(data);
  Wire.endTransmission();
}

Извидите са изходи по подразбиране. A0, A1, A2 са "0" -> I2C адресът е 0x20.

Отново го има ефектът на присветването до инициализацията (при LED към земя): напр. при свързване на два светодиода: на OUT 0 (pin 4) и поне още един светодиод напр. на OUT 1 (pin 4). При старт двата светват за кратко, на pin 4 започва да си мига, а на 5 загася.

Отново при свързване на LED (с 1kOm) към + свети нормално, а LED при свързвне (с 1kOm) към GND свети "рехаво"...


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 23 Сеп 2017, 10:47 
Offline

Регистриран на: 07 Апр 2009, 18:08
Мнения: 66
Местоположение: Шумен,Шипка
С едно _парче_ от сорта на 24С02 по средата колкото да диктува в първоначален момент момент няма ли да стане ? :?


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 23 Сеп 2017, 10:54 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 741
Местоположение: Силистра
Не, няма нужда. Ефектът е преди да тръгне Arduino (boot). След установяването му състоянията са напълно предивидими и управляеми.


Върнете се в началото
 Профил  
 
Покажи мненията от миналия:  Сортирай по  
Напиши нова тема Отговори на тема  [ 6 мнения ] 

Часовете са според зоната UTC + 2 часа


Кой е на линия

Потребители, разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Форумът се задвижва от phpBB® Forum Software © phpBB Group
Преведено от yarnaudov.com