Fórum témák

» Több friss téma
Fórum » Lemenő/felmenő Napfény imitálása digitálisan
Lapozás: OK   1 / 1
(#) mugencivic typeR hozzászólása Feb 2, 2010 /
 
Sziasztok,szeretnék egy olyan áramkört létrehozni ami a felmenő ill, a lemenő napfényt imitálja akváriumi környezetben.
Tehát egy időzítővel kellene napfelkeltekor növelni a a fény erejét majd este ugyanez ellenkezőleg csökkenteni a fényerőt ezzel imitálva a természetes fényviszonyokat.
Aki tud segíteni ebben a dologban azt megköszönném.
(#) gydanee válasza mugencivic typeR hozzászólására (») Feb 2, 2010 /
 
PIC-el el lehetne intézni mindent. Az időzítést, és pwm-el fényerőt szabályozni. Már csak az a kérdés ki írja meg rá a programot.
(#) varttina válasza mugencivic typeR hozzászólására (») Feb 2, 2010 /
 
Szia! Szerintem a legegyszerűbb, ha kiraksz egy fényérzékelőt a szabadtérbe, esetleg az ablakba, és azzal vezérled az akváriumi lámpát.
(#) mugencivic typeR válasza gydanee hozzászólására (») Feb 2, 2010 /
 
Igen tudom, picel lehet, lehet ott atmellel is. Egyenlőre most a séma érdekelne, hogy lehetne összekapcsolni a vezérlést a teljesítmény elektronikai részével, szóval valami elvi kapcsolási rajz kellene
(#) mugencivic typeR válasza varttina hozzászólására (») Feb 2, 2010 /
 
Ez szerintem ezért nem lenne jó, mert az akvárium trópusi, a trópusokon meg nem délután 4-ig van világos
(#) boczhunor hozzászólása Feb 2, 2010 / 4
 
Helló!!
Hát igen.Elég érdekes téma.A megoldás nm olyan nehéz csak programozói tudás kell hozzá.Írsz vagy keresel egy kész óra programot, persze mikrokontrollerest. Feltételt és/vagy ciklust használva megvizsgálod,hogy ha ... óra van, akkor a pin kimenetén lévő fénytest erősebben vagy gyengébben világít. Ezt nem digital hanem analog módonkell vezérelni.Olyan lesz mint egy digitális potencióméter.Én Arduino-ban programozok, adok egy példát:
/*
An open-source clock for Arduino. This project will be enhanced on a regular basis
(cc) by Rob Faludi

http://www.faludi.com

http://creativecommons.org/license/cc-gpl

  1. */
  2. #define vers = "1.01"
  3.  
  4. #define ledPin 13
  5. #define secondPin 4
  6. #define minutePin 5
  7. #define hourPin 6
  8. #define weekdayPin 7
  9.  
  10. int second=0, minute=0, hour=0, weekday=1; // declare time variables
  11. // these time variables are declared globally so they can be used ANYWHERE in your program
  12.  
  13.  
  14. void setup() {
  15.  
  16. blinkLED(ledPin, 4, 100); // blink an LED at the start of the program, to show the code is running
  17. Serial.begin(9600); // start up serial communications
  18. pinMode(secondPin, INPUT); //pins for normally closed switches to set the time
  19. pinMode(minutePin, INPUT);
  20. pinMode(hourPin, INPUT);
  21. pinMode(weekdayPin, INPUT);
  22. digitalWrite(secondPin, HIGH); // writing an input high turns on pull-up resistors
  23. digitalWrite(minutePin, HIGH);
  24. digitalWrite(hourPin, HIGH);
  25. digitalWrite(weekdayPin, HIGH);
  26. }
  27.  
  28. void loop() {
  29.  
  30. static unsigned long lastTick = 0; // set up a local variable to hold the last time we moved forward one second
  31. // (static variables are initialized once and keep their values between function calls)
  32.  
  33. // move forward one second every 1000 milliseconds
  34. if (millis() - lastTick >= 1000) {
  35. lastTick = millis();
  36. serialOutput();
  37. second++;
  38. }
  39.  
  40. // move forward one minute every 60 seconds
  41. if (second > 59) {
  42. minute++;
  43. second = 0; // reset seconds to zero
  44. }
  45.  
  46. // move forward one hour every 60 minutes
  47. if (minute > 59) {
  48. hour++;
  49. minute = 0; // reset minutes to zero
  50. }
  51.  
  52. // move forward one weekday every 24 hours
  53. if (hour > 23) {
  54. weekday++;
  55. hour = 0; // reset hours to zero
  56. }
  57.  
  58. // reset weekdays on Saturday
  59. if (weekday > 7) {
  60. weekday = 1;
  61. }
  62.  
  63. checkButtons(); // runs a function that checks the setting buttons
  64. }
  65.  
  66. void checkButtons() {
  67. static boolean secPressed=false, minPressed=false, hourPressed=false, wkdayPressed=false; //track button state
  68.  
  69. if (digitalRead (secondPin)==LOW && secPressed == false) { // if a normally closed switch is pressed
  70. second++; // advance by one second
  71. secPressed = true; // note the pressed state
  72. }
  73. if (digitalRead (secondPin)==HIGH) secPressed = false; // reset the state when the button is released
  74.  
  75. if (digitalRead (minutePin)==LOW && minPressed == false) {
  76. minute++;
  77. minPressed = true;
  78. }
  79. if (digitalRead (minutePin)==HIGH) minPressed = false;
  80.  
  81. if (digitalRead (hourPin)==LOW && hourPressed == false) {
  82. hour++;
  83. hourPressed = true;
  84. }
  85. if (digitalRead (hourPin)==HIGH) hourPressed = false;
  86.  
  87. if (digitalRead (weekdayPin)==LOW && wkdayPressed == false) {
  88. weekday++;
  89. secPressed = true;
  90. if (digitalRead (weekdayPin)==HIGH) wkdayPressed = false;
  91. }
  92. }
  93.  
  94. void printWeekday (int dayNum) {
  95. // print a weekday, based on the day number
  96. switch (dayNum) {
  97. case 1:
  98. Serial.print ("Sunday");
  99. break;
  100. case 2:
  101. Serial.print ("Monday");
  102. break;
  103. case 3:
  104. Serial.print ("Tuesday");
  105. break;
  106. case 4:
  107. Serial.print ("Wednesday");
  108. break;
  109. case 5:
  110. Serial.print ("Thursday");
  111. break;
  112. case 6:
  113. Serial.print ("Friday");
  114. break;
  115. case 7:
  116. Serial.print ("Saturday");
  117. break;
  118. }
  119. }
  120.  
  121. void serialOutput() {
  122. // this function creates a clock you can read through the serial port
  123. // your clock project will have a MUCH more interesting way of displaying the time
  124. // get creative!
  125. printWeekday(weekday); // picks the right word to print for the weekday
  126. Serial.print(", "); // a comma after the weekday
  127. Serial.print(hour, DEC); // the hour, sent to the screen in decimal format
  128. Serial.print(":"); // a colon between the hour and the minute
  129. Serial.print(minute, DEC); // the minute, sent to the screen in decimal format
  130. Serial.print(":"); // a colon between the minute and the second
  131. Serial.println(second, DEC); // the second, sent to the screen in decimal format
  132. }
  133.  
  134. // this utility function blinks the an LED light as many times as requested
  135. void blinkLED(byte targetPin, int numBlinks, int blinkRate) {
  136. for (int i=0; i<numBlinks; i++) {
  137. digitalWrite(targetPin, HIGH); // sets the LED on
  138. delay(blinkRate); // waits for a blinkRate milliseconds
  139. digitalWrite(targetPin, LOW); // sets the LED off
  140. delay(blinkRate);
  141. }
  142. }
  143.  
  144.  
  145. Na és beteszed ezt a progiba:
  146. ...
  147. void setup(){
  148. ...
  149. int digitalpotiPin; //létrehoztuk a PIN működéséért  és létrejöveteléért szolgáló változót
  150. pinMode(digitalpotiPin, OUTPUT); //deklaráljuk,hogy a pin egy kimenet
  151. ...
  152. }
  153. ...
  154. void loop(){
  155. ...
  156. if(hour<=12 && hour>=7){  //ha 7 és 12 óra között van a köv parancs megy végbe:
  157. analogWrite(digitalpotiPin,75); // a fénytest gyengén villog (hisz reggel van)
  158. };
  159. ...
  160. }


Tehát nem olyan bonyolult, csak kell legyn egy kész Arduino panel bootloaderestől beégetve és kell ismerned a nyelvet. Persze én most nem eröltetek senkit,hogy tanulja meg. Csak próbáltam segíteni. De szinte biztos vagyok,hogy erről a nyelvről még nem is hallottál.
Van más megoldás is.
Mittudom én PWM, vagy egyszerű analóg kapcsolási rajz,fotoellenállással,vagy fototranzisztorral.

De hátha akad valaki aki megírja neked ezt a progit pl. MPLAB-ba és/vagy olyan nyelvre, amelyre neked van pl. égető,vagy ismered vagy...
Sok sikert!!
A hozzászólás módosítva: Feb 15, 2014
(#) varttina válasza mugencivic typeR hozzászólására (») Feb 2, 2010 /
 
Szerintem a legmegfelelőbb csatoló eszköz az optotriak, esetleg az optocsatoló.
(#) El_Pinyo válasza mugencivic typeR hozzászólására (») Feb 2, 2010 /
 
Szia!
Tekintettel arra, hogy akváriumi környezetben szeretnéd használni, fontosnak tartom, hogy ne hálózati feszültségről üzemeljen, hanem törpefeszültségről, az élet- és balesetvédelem érdekében. Ekkor a legegyszerűbb vezérlés a PWM. Az egyenirányított, szűrt tápfeszültséget valamilyen tranzisztorral meg kell szaggatni, ezzel az eljárással a táp effektív értékét változtatva lehet a fényerőt szabályozni. PWM vezérlésre van néhány téma a fórumon, ez ügyben nézz szét a keresővel.
(#) mugencivic typeR válasza boczhunor hozzászólására (») Feb 2, 2010 /
 
Nem ezt a nyelvet nem ismerem, kicsit olyan C és java keveréke, nem a programozás zavar engem, azt én is meg tudom írni (azt hiszem ) égetőm is van, Egy kacsolás kellene hogy mi mivel van összekötve és hogy lehet a legegyszerűbben kivitelezni.
(#) varttina válasza mugencivic typeR hozzászólására (») Feb 5, 2010 /
 
Ez attól függ, hogy milyen fényforrásokat használsz. Más vezérlést igényel egy 12V-os halogén, mint egy 230V-os kompakt fénycső.
(#) varttina válasza varttina hozzászólására (») Feb 5, 2010 /
 
Íme 1-1 kapcsolás.
230V-os fényforrásra: Bővebben: Link
Törpefeszültségű fényforrásra: Bővebben: Link (A szolenoid helyére képzeld az izzó(ka)t.)
(#) mugencivic typeR válasza varttina hozzászólására (») Feb 10, 2010 /
 
Power ledeket akarok vele meghajtani, sokat törtem a fejemet és szerintem egy sima pic12-vel meg lehet oldani, használnám a PWM modulátorát majd még kapna egy meghajtó fokozatot a power led miatt.
Van egy másik verzió is digitális potit vezérelni egy pic-el meg plusz egy praktikeres időzítőt rakni hozzá, hogy be lehessen állítani az imitáció kezdetét és végét


rise.JPG
    
(#) bgsf válasza El_Pinyo hozzászólására (») Feb 10, 2010 /
 
Szia!
A gyári akváriumlámpák mind ivétel nélkül sima hálózati fesszel működnek! Nem nagyobb a baleset veszély, mint egy konyhai mosogató feletti lámpának. Érintésvédelemmmel el vannak látva, tehát ha nem bontják meg akkor semmi gond velük.
A PWM azért nem jó mert bonyolult, és például fénycsőre nem jó, annak nehéz szabályozni a fényerejét. A legtöbb gyári akváriumvilágítótest pedig fénycsöves... Vagy hagyományos, vagy kompakt.
Ezért nem jó a PWM vezérlés.
(#) bgsf válasza mugencivic typeR hozzászólására (») Feb 10, 2010 /
 
Szia!
Ne küzdjél PIC-el, meg ilyenekkel...
Valahol megvan a Hobbi Elektronika újságban egy akvárium fényszimulátor. Nagyon egyszerű áramkör. A szimulátor először bekapcsol egy sima izzólámpát aminek szép lassan 0-100%-ig növekszik a fényereje. Mikor elérte a 100%-ot akkor átkapcsol a fénycsőre és a lámpa kikapcsol. Az időzítést simán megoldhatod egy boltban kapható 2500Ft-os digitális időzítővel.
Ha lesz időm akkor megkeresem a délután.
(#) mugencivic typeR válasza bgsf hozzászólására (») Feb 12, 2010 /
 
Igen, tudom, hogy a fénycsöveket nehéz dimmelni, nekem viszont power ledes (Cree) fényforrásom lesz, ezt viszont PWM-el jó szabályozni, de én minden alternatívára vevő vagyok , ha megkeresnéd azt a cikket megköszönném.
(#) marki5 hozzászólása Feb 14, 2014 /
 
Sziasztok. Egy kis segítséget szeretnék kérni. Holdfény lámpát szeretnék össze rakni, készíteni. Olyat ami úgy viselkedik mint a hold amikor előbújik a felhő mögül.(egyre erősödik) a fénye. És ezt hordozhatóvá szeretném csinálni távirányítós kapcsolással. Lehetséges???
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem