Arduino Pro Mini перегружается при подаче питания на ключ IRF520
- Войдите на сайт для отправки комментариев
Ср, 07/11/2018 - 19:42
Приветствую всех уважаемые!
Имеется Arduino Pro Mini, электродвигатель на 9в, управляемый элетронным ключом на IRF520. Наблюдается странность - когда Ардуанка включена, но ключ обесточен, а подаю питание 9в на ключ - Ардуина перегружаеется, либо ключ отпирается. Короче двигатель начинает работать, хотя не должен. Запуск двигателя происходит при запуске Арудино (в теле блока void setup()). Как такое возможно?
#include <DS3231.h>
#include <avr/sleep.h>
#include <avr/power.h>
#define WakePin 10
DS3231 clock;
RTCDateTime dt;
void rtcUp() { }
void(*resetFunc) (void) = 0;
void setSleepTimer(int mins) {
uint8_t hours = mins / 60;
uint8_t mins_left = mins - hours * 60;
dt = clock.getDateTime();
uint8_t hnow = dt.hour;
uint8_t mnow = dt.minute;
uint8_t sec = dt.second;
mnow += mins_left;
if (mnow >= 60) {
mnow -= 60;
hnow += 1;
}
hnow += hours;
if (hnow > 23) {
hnow -= 24;
}
clock.setAlarm1(0, hnow, mnow, sec, DS3231_MATCH_H_M_S);
}
void sleepNow() {
ADCSRA = 0;
power_all_disable();
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
attachInterrupt(0, rtcUp, LOW);
sleep_enable();
sleep_mode();
sleep_disable();
power_all_enable();
detachInterrupt(0);
}
void setup() {
//pinMode(WakePin, INPUT_PULLUP);
//pinMode(LED_BUILTIN, OUTPUT);
pinMode(WakePin, OUTPUT);
digitalWrite(WakePin, HIGH);
//digitalWrite(LED_BUILTIN, HIGH);
delay(180000); //180 сек работает помпа
digitalWrite(WakePin, LOW);
//digitalWrite(LED_BUILTIN, LOW);
//Serial.begin(9600);
clock.begin();
clock.enableOutput(false);
clock.armAlarm1(false);
clock.armAlarm2(false);
clock.clearAlarm1();
clock.clearAlarm2();
}
void loop() {
dt = clock.getDateTime();
// Serial.println(clock.dateFormat("d-m-Y H:i:s - l", dt));
setSleepTimer(4320); //в минутах (каждые 3 дня = 4320 минут)
// Serial.println("Sleep");
digitalWrite(WakePin, LOW);
sleepNow();
//Serial.println(".");
//Serial.println("Wake UP");
digitalWrite(WakePin, HIGH);
//digitalWrite(LED_BUILTIN, HIGH);
delay(180000); //3 минуты работает помпа
digitalWrite(WakePin, LOW);
// digitalWrite(LED_BUILTIN, LOW);
sleepNow();
//resetFunc();
}
Возможно помехи от двигателя. Попытайтесь вместо него включить лампочку. Если ничего не изменится - надо чесать репу, а если заработает - развязывать управление через оптопару.
Проблему решил! Использовал подтягивающий на землю резистор 10ком на ножке управления ключом. Оказалось у Ардуино нет управляемых встроенных подтягивающих резисторов на землю. Получалось что ножка 10 (в моем случае) просто висела в воздухе и при включении питания ключа - ключ открывался.