Arduino Pro Mini перегружается при подаче питания на ключ IRF520

Фанис
Offline
Зарегистрирован: 13.03.2016

Приветствую всех уважаемые!

Имеется 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();
}
mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Возможно помехи от двигателя. Попытайтесь вместо него включить лампочку. Если ничего не изменится - надо чесать репу, а если заработает - развязывать управление через оптопару.

Фанис
Offline
Зарегистрирован: 13.03.2016

Проблему решил! Использовал подтягивающий на землю резистор 10ком на ножке управления ключом. Оказалось у Ардуино нет управляемых встроенных подтягивающих резисторов на землю. Получалось что ножка 10 (в моем случае) просто висела в воздухе и при включении питания ключа - ключ открывался.