Arduino Polska Forum

Pełna wersja: Sterowanie przekaźnikiem z opóźnieniem
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witajcie towarzysze,
mam problem otóż mam ładowarkę na 230v która non stop się wyłącza. Zrobiłem małego boxa w nim układ z watomierzem , a Arduino ma tym sterować. Jeżeli bierze prąd (więcej niż 1000W) ma się nic nie zmieniać, na A0 jak nie ma poboru jest 5V jak się pojawia to spada. Problem w tym że czujnik musi się odświeżać co 1 sekundę a reszta nawet 15 sekund i totalnie nie wiem jak to zrobić, nie jestem programistą więc może wy Mirki mi pomożecie Smile

Kod:
#include <TimerOne.h>
int sensorValue = analogRead(A0);
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Timer1.initialize(1000000);          // 1 second
  Timer1.attachInterrupt(callback);    // Set callback
}

//kiedy ładowarka jest wyłączona jest 5v
//żeby
int callback(){
  delay(10000);
  analogWrite(3, 255);
  if (sensorValue< 500) {
      Serial.println("Off");
      analogWrite(3, 0);
  }
  else analogWrite(3, 255);
  Serial.println(sensorValue);
}
void loop() {

}
Może ładowarkę naprawić, wymienić. Bo to co chcesz zrobić to podpieranie walącej się stodoły.
Niestety jest to nietypowa 2000w ładowarka kosztująca nawet 3000zł, ogólnie to możliwe że to nawet nie jej wina tylko informacja z bms. Ogólnie o problemie długo by mówić, wróćmy do tematu Arduino i kodu Smile
Co to znaczy czujnik musi się odświeżać co sekundę a reszta co 15s.
Może prosty if wystarczy, ale opisz co ma robić program bo z tego co piszesz nie mogę wydedukować.
Chodzi o to żeby w zależności od poboru prądu Arduino sterowało przekaźnikiem (pin D3), watomierz robi resztę podaje napięcie (5V) wtedy gry nie ma obciążenia. Ładowarka bierze prąd dopiero po chwili takie 5-8 sekund jak wykryje napięcie. Opóźnienie 1 sekunda powoduje że ładowarka nie nadarza zatrybić a więcej niż 8 sekund powoduje że dostaje stary odczyt z watomierza co nie uruchamia zmiennej.
Czyli jak watomierz podaje 5V to przekaźnik na pinie D3 musi odłączyć i załączyć napięcie????
odłączyć na 3 sekundy i załączyć
Takie coś w wersji demo (z delay) można zrobić na jednym if.
void setup ()
{
pinMode(D3, OUTPUT);
}
void loop ()
{
if (analogRead(A0 > 500)
{
digitalWrite ( D3, LOW ); // jak wyłączasz przekaźnik stanem niskim
delay 3000;
digitalWrite ( D3, HIGH ); // jak załączasz przekaźnik stanem wysokim
delay 10000;
}
}

Mogą być jakieś literówki ale to powinno działać