• Most regisztráltál, de nem tudsz privát üzenetet küldeni?

    Kérjük olvasd el milyen korlátozások vonatkoznak rád, miután regisztrációd jóvá lett hagyva.
    Regisztrációs korlátozások

Építsünk akváriumvezérlőt Arduino-ból

mbence

Főkertész
Lassan elkészül az új lámpám ami valamivel több mint 10A fog felvenni. Mik a tapasztalatok a FET panelekkel? 1csatornán gondolom eléggé melegedne. Ha 4 fele osztom az elég lehet vagy igy is érdemes lehet valami kis bordát rárakni?
Az enyém, ha jól emlékszem valami 40A-t tudna, és a 6A-es lámpát vezérelve egyáltalán nem melegszik. Szerintem próbáld ki, az is lehet, hogy egy is elviszi.
 

Imi93

Kertész tanonc
Az enyém, ha jól emlékszem valami 40A-t tudna, és a 6A-es lámpát vezérelve egyáltalán nem melegszik. Szerintem próbáld ki, az is lehet, hogy egy is elviszi.
Akkor bepróbálkozom, hátha elbírja legfeljebb kap egy bordát. Csak a lámpa készülne el. Még led szalagra várok.
 

Attachments

Y-not!?

Kertész szaki
Sziasztok!
Végre megérkezett a távolkeleti hullámról 5-ből 3dolog (n)
Szerencsére legalább az egyik egy arduino uno, de már az ismerkedésünk legelején megakadtam, és hiába olvastam a topicot végig másodszor is, nem találkoztam ilyennel.
A programot letöltöttem az arduino honlapjaról, a panelt csatalakoztattam a géppel, ami pittyeg is, de csak az eszközkezelőben látom mint: USB2.0-Serial. A panelen egy piros és egy zöld LED világít.
A neten találtak alapján, az eszközkezelőn keresztül rátaláltam az arduino programban lévő FRDI USB Drivers mappára, amiből elvileg telepíteni tudom az illesztő progit, de ekkor a windows azt írja ki: - A windows nem tudja telepíteni a következőt: USB2.0 Serial
Sajnos itt megakadtam. Ha valakinek van tippe mivel próbálkozhatnék, kérem segítsen. A gépen windows 7-es van, az uno- klón. Köszönöm :)
 

Sa_nyi

Nézelődő
Sziasztok!
Végre megérkezett a távolkeleti hullámról 5-ből 3dolog (n)
Szerencsére legalább az egyik egy arduino uno, de már az ismerkedésünk legelején megakadtam, és hiába olvastam a topicot végig másodszor is, nem találkoztam ilyennel.
A programot letöltöttem az arduino honlapjaról, a panelt csatalakoztattam a géppel, ami pittyeg is, de csak az eszközkezelőben látom mint: USB2.0-Serial. A panelen egy piros és egy zöld LED világít.
A neten találtak alapján, az eszközkezelőn keresztül rátaláltam az arduino programban lévő FRDI USB Drivers mappára, amiből elvileg telepíteni tudom az illesztő progit, de ekkor a windows azt írja ki: - A windows nem tudja telepíteni a következőt: USB2.0 Serial
Sajnos itt megakadtam. Ha valakinek van tippe mivel próbálkozhatnék, kérem segítsen. A gépen windows 7-es van, az uno- klón. Köszönöm :)
Üdv!
Vagy itt a lap tetején sárga alapon a bekeretezett rész: nekem ez jött be.
https://www.hobbielektronika.hu/forum/arduino
 

Imi93

Kertész tanonc
Végre elkészült a lámpám, viszont eléggé zúg a tápegység ha elkezdi a pwm szabályozást. Azzal lehet valamit kezdeni vagy ilyen és kész? Még a programot kell átírnom, hogy ne másodperc alapon változzon a fény hanem perc alapon, mert így kicsit olyan vibrálós.
 

mbence

Főkertész
Végre elkészült a lámpám, viszont eléggé zúg a tápegység ha elkezdi a pwm szabályozást. Azzal lehet valamit kezdeni vagy ilyen és kész? Még a programot kell átírnom, hogy ne másodperc alapon változzon a fény hanem perc alapon, mert így kicsit olyan vibrálós.
Bocsánat, nem vagyok már képben, de ha Arduino a vezérlőd, akkor lehet, hogy tudsz rajta javítani. Valószínűleg azért zúg a táp, mert az alacsonyabb frekvenciájú pinekre sikerült építened a Led kimenetét. Az arduinonál a PWM alapesetben két frekvencián működik:
Pins 5 and 6: 1kHz
Pins 9, 10, 11, and 3: 500Hz
Ha a lassabb (500Hz-es) pinek valamelyikén vagy, akkor esetleg meg lehet próbálni átépíteni az 5-ös vagy 6-os kimenetre, ami alapból dupla akkora frekvenciával kapcsolgat. Ez persze nem garantálja azt, hogy úgy nem fog zúgni, gondolom a tápegységtől is függ valamennyire, ki kell próbálni. Nálam a 6-oson van és nem zúg a táp.

Ha ez valamiért nem leheséges, vagy nem segít, még meg lehet próbálni programból átállítani magát a PWM frekvenciát is, de ezzel nincs tapasztalatom. Elvileg akár 65kHz-ig is fel lehet húzni, de azt is írják, hogy ez megkavarhatja a millis() és a delay() függvények működését.
Az alábbi cikkeket javaslom hozzá:
https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM
https://arduino-info.wikispaces.com/Arduino-PWM-Frequency
https://playground.arduino.cc/Code/PwmFrequency
 

Imi93

Kertész tanonc
Bocsánat, nem vagyok már képben, de ha Arduino a vezérlőd, akkor lehet, hogy tudsz rajta javítani. Valószínűleg azért zúg a táp, mert az alacsonyabb frekvenciájú pinekre sikerült építened a Led kimenetét. Az arduinonál a PWM alapesetben két frekvencián működik:
Pins 5 and 6: 1kHz
Pins 9, 10, 11, and 3: 500Hz
Ha a lassabb (500Hz-es) pinek valamelyikén vagy, akkor esetleg meg lehet próbálni átépíteni az 5-ös vagy 6-os kimenetre, ami alapból dupla akkora frekvenciával kapcsolgat. Ez persze nem garantálja azt, hogy úgy nem fog zúgni, gondolom a tápegységtől is függ valamennyire, ki kell próbálni. Nálam a 6-oson van és nem zúg a táp.

Ha ez valamiért nem leheséges, vagy nem segít, még meg lehet próbálni programból átállítani magát a PWM frekvenciát is, de ezzel nincs tapasztalatom. Elvileg akár 65kHz-ig is fel lehet húzni, de azt is írják, hogy ez megkavarhatja a millis() és a delay() függvények működését.
Az alábbi cikkeket javaslom hozzá:
https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM
https://arduino-info.wikispaces.com/Arduino-PWM-Frequency
https://playground.arduino.cc/Code/PwmFrequency
Az a baj 4 csatornán van a lámpám, de megpróbálom csak az 5 és 6 Pin-re kötni, hogy úgy mennyire változik. Köszönöm!
 

Imi93

Kertész tanonc
Így is zúg a tápegységem azt hiszem elengedem ezt a PWM-es szabályzást, pedig jó lett volna. 2 tápegységgel is próbáltam, viszont érdekes hogy Tc420-al is zúg, de sokkal kisebb mértékben.
 

mbence

Főkertész
Ha már ennyit küzdöttél vele, szerintem próbáld meg magasabb frekvenciára állítani, ez a kód elvileg egyszerűen megoldja: https://playground.arduino.cc/Code/PwmFrequency
Az emberi fül 20KHz-ig hall, ha fel tudod emelni ilyen, vagy magasabb tartományba, akkor valószínűleg nem lesz már hallható a zúgása.

A lényeg, hogy az arduino a Timer 0-t használja a belső órájához (millis és delay), ami az 5 és 6 pineket szolgálja ki. Szóval ha nem ezt a timert állítod, hanem a Timer 1-et, ami a 9 és 10-es pin, akkor elvileg nem zavarja meg az időzítős dolgokat, csak a servot, de ha jól értem azt nem használod.

Gondolom kísérletezni kell vele, hogy mit szól hozzá a led, meg a mc, de a fenti függvénnyel így be tudod állítani pl a 9-es pint 31KHz-re:
setPwmFrequency(9, 1);

Hajrá, ne add fel! :)
 

Imi93

Kertész tanonc
Sajnos nem csak a zúgás a gond. Maradnák a Tc 420-nál de azzal is zúg a táp, és rengeteg a veszteség rajta ugyanúgy mint a mosfet panelen. ~14A vesz fel a lámpám, 7m 8520-as szalag + egy kis piros, már a vezetékezéssel is voltak gondok, most 4db 2*0,75-ös vezetéken kapja az áramot, így már alig esik feszültség és fogyasztásmérő szerint 180W környékén van a kezdeti 60-70W helyett. Most ha bekötöm a tc 420-at vagy a mosfet panel előjön ugyan ez a gond.
 

mbence

Főkertész
Ilyen nagy teljesítményű lámpákkal nincs sajnos tapasztalatom. Még egy tippem van, léteznek olyan led tápegységek, aminek van saját PWM bemenete. Így magát a tápegységet kapcsolgathatod, vagyis talán kisebb lesz a veszteség. "dimming led driver" a kulcsszó.
Arra kell figyelni, hogy általában 10V-os bemenetűek, ami az Arduino 5V-jával nem lesz jó. Gondolom egyszerűbb 5-6V-osat keresni, mint még egy tranzisztort/mosfetet beépíteni...
És persze így kelleni fog egy külön (folyamatos) táp az arduinonak.
 

Y-not!?

Kertész szaki
Sziasztok! Már majdem összeállt a program, már csak egy részprogram nem akar összeállni. Igazából ez az egyetlen rész amit saját kútfőből próbáltam összerakni, de nem úgy akar működni ahogyan én akarom :happy:. Egy LED-et kapcsolna ez a programrész, amit egy nyomógombbal kell élesíteni és akkor világít, ha a program valamiért leállt és újraindult.
Ha valaki tudna segítei hol siklottam el, mit javítsak, megköszönném.
Boldog Húsvéti sonkába fulladást mindenkinek :D
Kód beillesztése:
//Failure LED illuminates, to show you if program has restarted.
// You have to launch it, with one push of the pushbutton.
// The LED disapearing with one push and will be blind till the program starts again.

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 3;     // the number of the pushbutton pin
const int ledPin =  4;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status
int LedState = 0 ; //variable for reading led status
int lastButtonState = 0; //previous state of the button
int lastLedState = 0; // previous Led state

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  // read the LED's status
  LedState = digitalRead (ledPin);
  // check if the pushbutton is pressed and the LED is lighting. If the buttonState is HIGH or the LED isn't lighting, turn the LED off.
  if ((buttonState != lastButtonState) || (LedState == LOW)) {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  } else {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  }
 delay(200);
 // save the current button state as the last button state, for next time through the loop
lastButtonState = buttonState;
// save the current LED state as the last LED state, for next time through the loop
lastLedState = LedState;
}
 

nagyharcos

Kertész tanonc
Sziasztok! Már majdem összeállt a program, már csak egy részprogram nem akar összeállni. Igazából ez az egyetlen rész amit saját kútfőből próbáltam összerakni, de nem úgy akar működni ahogyan én akarom :happy:. Egy LED-et kapcsolna ez a programrész, amit egy nyomógombbal kell élesíteni és akkor világít, ha a program valamiért leállt és újraindult.
Ha valaki tudna segítei hol siklottam el, mit javítsak, megköszönném.
Boldog Húsvéti sonkába fulladást mindenkinek :D
Kód beillesztése:
//Failure LED illuminates, to show you if program has restarted.
// You have to launch it, with one push of the pushbutton.
// The LED disapearing with one push and will be blind till the program starts again.

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 3;     // the number of the pushbutton pin
const int ledPin =  4;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status
int LedState = 0 ; //variable for reading led status
int lastButtonState = 0; //previous state of the button
int lastLedState = 0; // previous Led state

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  // read the LED's status
  LedState = digitalRead (ledPin);
  // check if the pushbutton is pressed and the LED is lighting. If the buttonState is HIGH or the LED isn't lighting, turn the LED off.
  if ((buttonState != lastButtonState) || (LedState == LOW)) {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  } else {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  }
 delay(200);
 // save the current button state as the last button state, for next time through the loop
lastButtonState = buttonState;
// save the current LED state as the last LED state, for next time through the loop
lastLedState = LedState;
}


if ((buttonState != lastButtonState) & (LedState == HIGH)) { // ha megnyomták és világít a LED
digitalWrite(ledPin, LOW); // akkor LED ki
} // különben meg nem változik semmi... (nem kell else ág)

Nem próbáltam, de talán jó lesz. Esetleg a nyomógombot sem ártana pergésmentesíteni valamilyen módszerrel...
 

Y-not!?

Kertész szaki
if ((buttonState != lastButtonState) & (LedState == HIGH)) { // ha megnyomták és világít a LED
digitalWrite(ledPin, LOW); // akkor LED ki
} // különben meg nem változik semmi... (nem kell else ág)

Nem próbáltam, de talán jó lesz. Esetleg a nyomógombot sem ártana pergésmentesíteni valamilyen módszerrel...
Köszi, kipróbálom! A delay-t a végén a pergésmentesítés végett raktam be :)
 

Y-not!?

Kertész szaki
@nagyharcos! Kipróbáltam de sajna nem működött így sem, szerintem az alapokban szúrtam el valahol. Azért köszi a segítséget (y) Hála egy barátomnak viszont összeállt a működő kód, ami már-már pofátlanul egyszerű:
Kód beillesztése:
const int buttonPin = 3;
const int ledPin = 4;

int buttonState = 0;

void setup() {
 // put your setup code here, to run once:
pinMode (buttonPin, INPUT);
pinMode (ledPin, OUTPUT);

digitalWrite(ledPin, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
  buttonState = digitalRead(buttonPin);
  // check if the pushbutton status. If the buttonState is HIGH turn the LED off.
  if (buttonState == HIGH){
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
 delay(50);
}
Megint túlbonyolítottam... :D
 

Csory

Nézelődő
Sziasztok!

Barkácsoltam egy akvárium vezérlőt ami funkcionalitásában jól lefedi a "hasfájásaimat", azaz tudja dimmelni a LED-eket (elvileg 400W-ig két csatornán plusz 50W éjszakai, de most csak 250W körül használom ki), ki-bekapcsolni a levegőpumpát és a keringetőt, méri a vízhőmérsékletet, mindezt persze programozhatóan (valósidejű órával). Az agya egy 328P, vagyis ugyanaz mint ami egy Arduino Uno-ban van, de én közvetlenül programoztam (és építettem be) egy osztott panelba (teljesítmény/nagyfesz és kijelző/vezérlő/kisfesz). Szívesen közzéteszem ha valakit érdekelnek a részletek (kapcsrajz/panelrajz/fényképek/szoftver), de nem tudom hogy itt lenne-e a helye vagy külön topikban?
 

Dervis

Főkertész
Sziasztok!

Barkácsoltam egy akvárium vezérlőt ami funkcionalitásában jól lefedi a "hasfájásaimat", azaz tudja dimmelni a LED-eket (elvileg 400W-ig két csatornán plusz 50W éjszakai, de most csak 250W körül használom ki), ki-bekapcsolni a levegőpumpát és a keringetőt, méri a vízhőmérsékletet, mindezt persze programozhatóan (valósidejű órával). Az agya egy 328P, vagyis ugyanaz mint ami egy Arduino Uno-ban van, de én közvetlenül programoztam (és építettem be) egy osztott panelba (teljesítmény/nagyfesz és kijelző/vezérlő/kisfesz). Szívesen közzéteszem ha valakit érdekelnek a részletek (kapcsrajz/panelrajz/fényképek/szoftver), de nem tudom hogy itt lenne-e a helye vagy külön topikban?
Jöhet a teljes dokumentáció. ;)
 
Oldal tetejére