16-09-2017, 02:45
Witam,
mam problem ze sterowaniem przekaźnikami. Arduino Uno zlicza implusy w postaci przerwania int0 na pinie 2 i po przekroczeniu progu ma załączyć dwa przekaźniki . Jeden służy do wyłączenia maszyny natomiast drugi zapala lampkę sygnalizującą zatrzymanie. Oba przekażniki sterują napięciem 24V DC . W przerwaniu int1 na pinie 3 resetuję przekażniki aby maszyna ponownie mogła się uruchomić . Problem polega na tym że diody sygnalizujące załączenie przekaźników tylko mrugną w momencie przekroczenia zadanego progu i nie załączają przekaźników. Co dziwne gdy użyję tylko jednego przekaźnika układ działa ok. W czym może być problem? Z góry dziękuję za każde sugestie.
Przekaźniki których użyłem :
https://botland.com.pl/przekazniki/6551-...25vac.html
mam problem ze sterowaniem przekaźnikami. Arduino Uno zlicza implusy w postaci przerwania int0 na pinie 2 i po przekroczeniu progu ma załączyć dwa przekaźniki . Jeden służy do wyłączenia maszyny natomiast drugi zapala lampkę sygnalizującą zatrzymanie. Oba przekażniki sterują napięciem 24V DC . W przerwaniu int1 na pinie 3 resetuję przekażniki aby maszyna ponownie mogła się uruchomić . Problem polega na tym że diody sygnalizujące załączenie przekaźników tylko mrugną w momencie przekroczenia zadanego progu i nie załączają przekaźników. Co dziwne gdy użyję tylko jednego przekaźnika układ działa ok. W czym może być problem? Z góry dziękuję za każde sugestie.
Przekaźniki których użyłem :
https://botland.com.pl/przekazniki/6551-...25vac.html
Kod:
#include <Timers.h>
volatile int licznik =0;
volatile int prog =4;
Timers<1>akcja;
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(3, INPUT_PULLUP);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
pinMode(2, INPUT_PULLUP);
attachInterrupt(0,przycisk,FALLING);
attachInterrupt(1,reset,FALLING);
akcja.attach(0,5000,zapis);
}
void loop() {
akcja.process();
}
void reset()
{
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}
void zapis()
{
Serial.println(licznik);
if(licznik>=prog)
{
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
licznik=0;
}
void przycisk()
{
static unsigned long lastTime;
unsigned long timeNow = millis();
if (timeNow - lastTime < 25)
return;
licznik++;
lastTime = timeNow;
}