Здравствуйте!
Есть работающая ESP с прошивкой, которая управляет состоянием двух GPIO (12,13).
К обоим GPIO по задумке подключаются твердо-тельные реле FOTEK (DD) у которого завяленное напряжение управления 3-32В.
На выходах уровень 3.3В, но их не хватает для переключения — реле срабатывает только с уровня 4.5-5В (может немного меньше), ибо подделка, скорее всего.
Стоит вопрос, как повысить напряжение до уровня переключения?
Отмечу, что GPIO12 выдает логическую единицу — digitalWrite (GPIO12, HIGH);
А вторая GPIO13 по задумке должна выдавать ШИМ — analogWrite (GPIO13, speed);
Т.е. по GPIO12 еще более-менее догадываюсь, что можно использовать какой-то DC-DC преобразователь (какой?), то с GPIO13 сложнее, т.к. нужно переключение с высокой частотой.
Смотрел такую штуку, но как понял, она только для подключения 3.3В устройств к устройствам с 5В выходами.
Сейчас думаю завязать для управления реле Ардуино, но может быть есть более простое и эстетичное решение?
P.S. Еще вопрос, можно ли понизить частоту ШИМ, как это делается для Arduino?
Есть работающая ESP с прошивкой, которая управляет состоянием двух GPIO (12,13).
К обоим GPIO по задумке подключаются твердо-тельные реле FOTEK (DD) у которого завяленное напряжение управления 3-32В.
На выходах уровень 3.3В, но их не хватает для переключения — реле срабатывает только с уровня 4.5-5В (может немного меньше), ибо подделка, скорее всего.
Стоит вопрос, как повысить напряжение до уровня переключения?
Отмечу, что GPIO12 выдает логическую единицу — digitalWrite (GPIO12, HIGH);
А вторая GPIO13 по задумке должна выдавать ШИМ — analogWrite (GPIO13, speed);
Т.е. по GPIO12 еще более-менее догадываюсь, что можно использовать какой-то DC-DC преобразователь (какой?), то с GPIO13 сложнее, т.к. нужно переключение с высокой частотой.
Смотрел такую штуку, но как понял, она только для подключения 3.3В устройств к устройствам с 5В выходами.
Сейчас думаю завязать для управления реле Ардуино, но может быть есть более простое и эстетичное решение?
P.S. Еще вопрос, можно ли понизить частоту ШИМ, как это делается для Arduino?
Код:
void setPwmFrequency(int pin, int divisor) {
byte mode;
if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 64: mode = 0x03; break;
case 256: mode = 0x04; break;
case 1024: mode = 0x05; break;
default: return;
}
if(pin == 5 || pin == 6) {
TCCR0B = TCCR0B & 0b11111000 | mode;
} else {
TCCR1B = TCCR1B & 0b11111000 | mode;
}
} else if(pin == 3 || pin == 11) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 32: mode = 0x03; break;
case 64: mode = 0x04; break;
case 128: mode = 0x05; break;
case 256: mode = 0x06; break;
case 1024: mode = 0x7; break;
default: return;
}
TCCR2B = TCCR2B & 0b11111000 | mode;
}
}