Skocz do zawartości

Regulacja fazowa wentylatora 230


Rikardo

Pomocna odpowiedź

(edytowany)

Ogólnie program, na którym się opieracie, ma zasadniczą wadą. Wykonuje w przerwaniu zdecydowanie za dużo operacji, i to takich które absolutnie tam nie powinny się znaleźć. 1mS, to dla procesora wieczność. Pomijam już fakt że taka procedura obsługi przerwania w skrajnym przypadku je zblokuje.

Jak już to powinno to wyglądać mniej więcej tak:

PS. Od dawna już nie programuję w C więc mogłem, popełnić jakieś blędy skladniowe.

//https://www.youtube.com/watch?v=oPiG3Qj_wWo
//http://www.bristolwatch.com/arduino/arduino1.htm

#define triacPulse 5      //triak
#define SW 4              //wylacznik
#define aconLed 12        //dioda led

int val;
bool zero;

void setup()  {
  Serial.begin (9600);
  pinMode(2, INPUT);
  digitalWrite(2, HIGH); // pull up
  pinMode(triacPulse, OUTPUT);
  pinMode(SW, INPUT);
  digitalWrite(SW, HIGH);
  pinMode(aconLed, OUTPUT);
  digitalWrite(aconLed, LOW);
}

void loop() {
  // check for SW closed
  if (!digitalRead(SW))   {
    // enable power
    attachInterrupt(0, acon, FALLING); 
    // HV indicator on
    digitalWrite(aconLed, HIGH);
  }  // end if
  else if (digitalRead(SW)) { 
    detachInterrupt(0); // disable power
    // HV indicator off
    digitalWrite(aconLed, LOW);
  }  // else
  if (zero = high) { // jezli wykryto przejście przez zero
      delayMicroseconds((analogRead(0) * 6) + 1000); // read AD1 
      digitalWrite(triacPulse, HIGH);
     //  Serial.println(" wlaczone     ");     // tylko dla sprawdzenia czy transoptor coś                                               //   widzi
      delayMicroseconds(200);  
     // delay 200 uSec on output pulse to turn on triac
     digitalWrite(triacPulse, LOW);
     zero = low; //wyzeruj znacznik przejścia przez zero
     //   Serial.println("         wylaczone");
   }    
} // end loop



// begin AC interrupt routine
// delay() will not work!
void acon()  
{ 
  zero = high; //ustaw znacznik przejścia przez zero
} 

 

Edytowano przez BlackJack
Link do komentarza
Share on other sites

10 minut temu, BlackJack napisał:

Wykonuje w przerwaniu zdecydowanie za dużo operacji

Przecież ja to od dłuższego czasu próbuję wytłumaczyć tylko wszyscy się uparli na delayMicroseconds(10000) w przerwaniu wywoływanym sto razy na sekundę...

  • Lubię! 2
Link do komentarza
Share on other sites

7 minut temu, ethanak napisał:

Przecież ja to od dłuższego czasu próbuję wytłumaczyć tylko wszyscy się uparli na delayMicroseconds(10000) w przerwaniu wywoływanym sto razy na sekundę...

Szczerze to nie przyglądałem się, od razu całemu kodowi, bo założyłem że autor sam go pisze wedle wskazówek. Dopiero dziś miałem czas na to zerknąć tak bardziej na spokojnie o od razu 🙀, opad szczeny. Choć przyznaję że nawet moja propozycja, nie jest do końca doskonała, da się to pewnie zrobić jeszcze bardziej elegancko.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dodam, że miałem to skopiowane z Google, na początek program miał uruchomić dmuchawę bez reszty programu dla testu jak i czy działa, a później miał zostać zmodyfikowany na przerwaniach wewnętrznych ( których na dzień dzisiejszy w ogóle nie rozumiem, PORTB  itp.). Nigdy się tego nie uczyłem programować więc dla mnie 3/4 to chińszczyzna, ale pomalutku i do czegoś może dojdę. Dzięki za szkic jutro potestuję.

Link do komentarza
Share on other sites

16 minut temu, BlackJack napisał:

da się to pewnie zrobić jeszcze bardziej elegancko

Też pisałem, nawet odnośne posty wraz z kodami znalazłem na forum arduino.cc...

Ja widzę jeszcze jeden problem. Regulacja regulacją, a Arduino ma jeszcze odczytywać dane z jakichś tajemniczych czujników (gdzie czas jest liczony w sekundach). Jeśli owe tajemnicze funkcje odczytu będą sobie radośnie blokować przerwania to wszelkie dotychczasowe rozwiązania można OKDR, a z całego programu wraz z elektroniką wyjdzie co najwyżej wielce śliczny ściemniacz do żarówki. I w takiej sytuacji trzeba by to rozwiązać zupełnie inaczej... nie wiem jak nie znając reszty ustrojstwa.

Link do komentarza
Share on other sites

Rychu, opisz cały projekt, jakie czujniki, jak sterowane menu, wrzuć jaki filmik na YouTube i daj tu linka do niego. Bo jak znam życie to ethanak ma rację. Z nim tak to już jest i tego faktu nie przeskoczysz;). 

Link do komentarza
Share on other sites

Przesyłam link z moim sterownikiem https://www.youtube.com/watch?v=IV0Gn3vp848&t=71s

SOYER dzięki za pomoc i mobilizacje

czujniki NTC 2,2kΩ  i biblioteka #include "thermistor.h",  a wszystkie czasy, przerwy na #include <Timers.h>

Na filmiku widać, że podczas wyświetlania temperatur czas się nieco wydłuża, pewnie odczyt da się zrobić co kilka sekund i znalazło by się jeszcze kilka poprawek ale jaki jest sens dalej kombinować jak najważniejsza rzecz czyli sterowanie dmuchawą do niczego

Link do komentarza
Share on other sites

27 minut temu, Rikardo napisał:

jaki jest sens dalej kombinować jak najważniejsza rzecz czyli sterowanie dmuchawą do niczego

Pewnie że do niczego. I pewnie rzucisz ten projekt do kąta... a szkoda, bo jakbyś zamiast leźć jak krowa w ślepy zaułek tylko posłuchał co się do Ciebie mówi mogłoby z tego wyjść coś fajnego...

Ale to Twoja krowa (znaczy się... małpa) i Twoje klocki, szkoda tylko naszego czasu.

 

Link do komentarza
Share on other sites

Anonim

Rikardo! W pierwszym moim poście do Ciebie zaproponowałem moduł przekaźnika SSR.Nadal uważam,że jest to optymalne rozwiązanie.Moduły SSR  opracowano by sterowanie było pod pełną kontrolą.Gdyby sterowanie zespołem optotiak-triak było tak proste to nikt by sobie nie zawracał  głowy opracowywaniem specjalizowanych sterowników.Wiele firm opracowało odpowiedni układ scalony do sterowania triakiem.Nie otwieraj otwartych drzwi.Skorzystaj z tego co jest na rynku. 24 zł z dostawą to nie majątek a w projekt,zapewne, już włożyłeś  ładnych kilka zł i ogromną pracę.Sposoby sterowania znajdziesz w pdf poniżej.Natomiast co do bazy tranzystora podłączysz,jak sprzęgniesz  z arduino uno to inna sprawa.Jedyne co mi  w tej chwili przychodzi do głowy to sterowanie przez PWM.Przekaźniki SSR steruje się prądem 4-20mA.Stosując to co Ci proponuję uwalniasz się od wszystkich problemów o których napisał kolega ethanak.Tylko się nie obraź.Twój nick kojarzy się jednoznacznie.To ty? A w wolnych chwilach na forbocie.😀

obraz.thumb.png.42c35beda7bd636dcefe843e33a3cc54.pngobraz.thumb.png.ddadb31557d11b1dc21602207e22194d.png

 

SSR40DA.pdf

Link do komentarza
Share on other sites

Rychu, myślę, że to idealne rozwiązanie. 24zeta to nie majątek, a będziesz mógł się skupić na tym co łatwiejsze, rozbudowa menu, dopieszczanie opcji. Oczywiście jak zechcesz, to za jakiś czas wrócisz do tego problemu, ale teraz go omiń i skup się na czym innym.

Albo całkiem olej ten went i na razie zostaw diodę. 

Być może za pół roku to dla Ciebie będzie pestka, jak nabierzesz więcej doświadczenia w programowaniu. 

Na razie może to nie tyle za głęboka woda, co niepotrzebny kamień uwiązany do nóg;). 

Link do komentarza
Share on other sites

Przez te krowy czy małpy chęci mi odeszły, dopiero pierwszy raz w życiu przez dwa miesiące piszę program, dopiero się uczę, nikt geniuszem się nie urodził. Może ten moduł SSR to faktycznie dobry pomysł i pewnie się na tym skończy, ale już dałem sobie chwilę odpoczynku z dmuchawą zajmę się czymś prostszym.

Na razie wszystkim dziękuję za czas i pomysły, odezwę się jak będę miał problem.

Link do komentarza
Share on other sites

21 minut temu, Rikardo napisał:

dopiero pierwszy raz w życiu przez dwa miesiące piszę program, dopiero się uczę, nikt geniuszem się nie urodził.

O, z tym ostatnim to się zgodzę. Też się uczyłem, i nawet słuchałem co się do mnie mówi... A jeśli się uczysz - to naucz się, że jeśli ktoś Ci mówi że zegarka masłem się nie smaruje, to nie szukasz masła z innej mleczarni bo jak wziąłeś z Pieprzdowic to nie chciał działać, więc może z Czwartnicy będzie... szczególnie jeśli dostałeś adres sklepu z olejem do smarowania zegarków.

 

  • Lubię! 1
Link do komentarza
Share on other sites

Anonim
(edytowany)

Rikardo mam dla Ciebie dwie wiadomości jedną dobrą a drugą złą.Wiadomość dobra to ta,że zbudowałem ten układ ze strony  http://www.bristolwatch.com/arduino/arduino1.htm

Zamiast dwóch diod prostowniczych zastosowałem mostek.Zamiast arduino uno arduino nano.Transoptor sfH600 okazał się być mało czuły.Tak mało czuły,ze na oscyloskopie widziałem prawie prostą linię.Poszukałem w swoich zasobach jakiegoś innego i znalazłem LTV817.Do diody led transoptora podłączyłem R=1k .Włączyłem U i uzyskałemtransoptor4.thumb.png.49d915a7bcd05b670249cd44240cbac4.png

Watro przyjrzeć się wartościom.Ściągniesz grafiki i otworzysz oraz powiększysz.Następnie zmieniłem ten rezystor na 340Ω i uzyskałemtransoptor5.thumb.png.f10c4848b907b8391309f6f8854b49bc.png

Następnie do drugiego kanału oscyloskopu podłączyłem napięcie z mostka.Oczywiście nie obyło się bez  dzielnika napięcia.W efekcie zrzut z ekranu wygląda taktransoptor7.thumb.png.0c04b0abdc731640cf72f9d54cf24cb8.png

transoptor6.thumb.png.eadf7d972f59b1e83b7bbab464c0ea41.png

Po podłączeniu do arduino nano i wgraniu programu modyfikując  w linijce  kodu  delayMicroseconds((analogRead(0)*7) + 1000); // read AD1 na

delayMicroseconds((analogRead(0)*7) + 3000); // read AD1 a następnie delayMicroseconds((analogRead(0)*7) + 7000); // read AD1 otrzymałem wyniki następującetransoptor9.thumb.png.dd7cb435fd1500044bfdcbf78e3c4ceb.pngtransoptor10.thumb.png.b87e7aa3d560d932a19916418235d72e.png

Co to oznacza,że program działa bo na wyjściu D5 są impulsy sterujące optotriakiem.To tyle dobrychwiadomości.Zła jest taka,że masz najprawdopodobniej nie najlepszy transoptor.Zmień a wszystko powinno ruszyć.Nie podłączyłem do bloku mocy ale to zostawiam Tobie.Powodzenia.Wnioski pozostawiam Tobie ,dobrze przeczytaj co napisał ethanak bo mogą być problemy po zmerdzowaniu  z innym blokiem programu.Powodzenia.Zresetuj się i do przodu.

 

Edytowano przez szymonw
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.